This commit is contained in:
njdaoyehu 2024-11-14 17:11:43 +08:00
parent c592bacd23
commit cc8aa7afed
79 changed files with 594 additions and 605 deletions

View File

@ -54,11 +54,13 @@ public class ApiService
_webApp.UseCors("AllowAll"); _webApp.UseCors("AllowAll");
// api // api
_ = new DetectTaskApi(_webApp);
_ = new DeviceApi(_webApp);
_ = new LogApi(_webApp);
_ = new UserApi(_webApp); _ = new UserApi(_webApp);
_ = new AuthorityApi(_webApp); _ = new AuthorityApi(_webApp);
_ = new DetectTaskApi(_webApp);
_ = new DetectTaskLogApi(_webApp);
_ = new DetectTaskProgressApi(_webApp);
_ = new DeviceApi(_webApp);
_ = new LogApi(_webApp);
Task.Run(() => { _webApp.RunAsync(AppSettingsManager.Manager().GetString("ApiUrl")); }); Task.Run(() => { _webApp.RunAsync(AppSettingsManager.Manager().GetString("ApiUrl")); });
Log.Information("Web Application is started!"); Log.Information("Web Application is started!");

View File

@ -1,13 +0,0 @@
using System.Collections.Generic;
using detect.gui.Models;
using detect.gui.Models.Entities;
namespace detect.gui.Api.Helpers;
public class DeviceHelper
{
public static ApiResponse<List<DeviceEntity>>? GetList()
{
return ApiHelper.Get<List<DeviceEntity>>("/v1/system/device/all", "");
}
}

View File

@ -11,27 +11,27 @@ public class DetectTaskApi
{ {
public DetectTaskApi(IEndpointRouteBuilder? webApp) public DetectTaskApi(IEndpointRouteBuilder? webApp)
{ {
// // all // all
// webApp?.MapGet("/v1/system/device/all", () => Locator.Current.GetService<VapDeviceService>()!.ListAll()); webApp?.MapGet("/v1/system/task/all", () => Locator.Current.GetService<DetectTaskService>()!.ListAll());
//
// // search // search
// webApp?.MapGet("/v1/system/device/search", ([FromQuery] int? regionId, [FromQuery] string? name, [FromQuery] string? ip, [FromQuery]int pageNum = 1, [FromQuery]int pageSize = 10) => webApp?.MapGet("/v1/system/task/search", ([FromQuery] string? name, [FromQuery]int pageNum = 1, [FromQuery]int pageSize = 10) =>
// Locator.Current.GetService<VapDeviceService>()!.Search(regionId, name, ip, pageNum, pageSize)); Locator.Current.GetService<DetectTaskService>()!.Search(name, pageNum, pageSize));
//
// // id // id
// webApp?.MapGet("/v1/system/device/{id:long}", ([FromRoute] long id) => webApp?.MapGet("/v1/system/task/{id:long}", ([FromRoute] long id) =>
// Locator.Current.GetService<VapDeviceService>()!.ListById(id)); Locator.Current.GetService<DetectTaskService>()!.ListById(id));
//
// // add // add
// webApp?.MapPost("/v1/system/device/", ([FromBody] DeviceEntity entity) => webApp?.MapPost("/v1/system/task/", ([FromBody] DetectTaskEntity entity) =>
// Locator.Current.GetService<VapDeviceService>()!.AddData(entity)); Locator.Current.GetService<DetectTaskService>()!.AddData(entity));
//
// // update // update
// webApp?.MapPut("/v1/system/device/", ([FromBody] DeviceEntity entity) => webApp?.MapPut("/v1/system/task/", ([FromBody] DetectTaskEntity entity) =>
// Locator.Current.GetService<VapDeviceService>()!.UpdateData(entity)); Locator.Current.GetService<DetectTaskService>()!.UpdateData(entity));
//
// // delete // delete
// webApp?.MapDelete("/v1/system/device/{id:long}", ([FromRoute] long id) => webApp?.MapDelete("/v1/system/task/{id:long}", ([FromRoute] long id) =>
// Locator.Current.GetService<VapDeviceService>()!.DeleteById(id)); Locator.Current.GetService<DetectTaskService>()!.DeleteById(id));
} }
} }

View File

@ -0,0 +1,37 @@
using detect.gui.Models.Entities;
using detect.gui.Services.Detect;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Routing;
using Splat;
namespace detect.gui.Api.System;
public class DetectTaskLogApi
{
public DetectTaskLogApi(IEndpointRouteBuilder? webApp)
{
// all
webApp?.MapGet("/v1/system/task-log/all", () => Locator.Current.GetService<DetectTaskLogService>()!.ListAll());
// search
webApp?.MapGet("/v1/system/task-log/search", ([FromQuery] long? taskId, [FromQuery]int pageNum = 1, [FromQuery]int pageSize = 10) =>
Locator.Current.GetService<DetectTaskLogService>()!.Search(taskId, pageNum, pageSize));
// id
webApp?.MapGet("/v1/system/task-log/{id:long}", ([FromRoute] long id) =>
Locator.Current.GetService<DetectTaskLogService>()!.ListById(id));
// add
webApp?.MapPost("/v1/system/task-log/", ([FromBody] DetectTaskLogEntity entity) =>
Locator.Current.GetService<DetectTaskLogService>()!.AddData(entity));
// update
webApp?.MapPut("/v1/system/task-log/", ([FromBody] DetectTaskLogEntity entity) =>
Locator.Current.GetService<DetectTaskLogService>()!.UpdateData(entity));
// delete
webApp?.MapDelete("/v1/system/task-log/{id:long}", ([FromRoute] long id) =>
Locator.Current.GetService<DetectTaskLogService>()!.DeleteById(id));
}
}

View File

@ -0,0 +1,37 @@
using detect.gui.Models.Entities;
using detect.gui.Services.Detect;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Routing;
using Splat;
namespace detect.gui.Api.System;
public class DetectTaskProgressApi
{
public DetectTaskProgressApi(IEndpointRouteBuilder? webApp)
{
// all
webApp?.MapGet("/v1/system/task-progress/all", () => Locator.Current.GetService<DetectTaskProgressService>()!.ListAll());
// search
webApp?.MapGet("/v1/system/task-progress/search", ([FromQuery] long? taskId, [FromQuery]int pageNum = 1, [FromQuery]int pageSize = 10) =>
Locator.Current.GetService<DetectTaskProgressService>()!.Search(taskId, pageNum, pageSize));
// id
webApp?.MapGet("/v1/system/task-progress/{id:long}", ([FromRoute] long id) =>
Locator.Current.GetService<DetectTaskProgressService>()!.ListById(id));
// add
webApp?.MapPost("/v1/system/task-progress/", ([FromBody] DetectTaskProgressEntity entity) =>
Locator.Current.GetService<DetectTaskProgressService>()!.AddData(entity));
// update
webApp?.MapPut("/v1/system/task-progress/", ([FromBody] DetectTaskProgressEntity entity) =>
Locator.Current.GetService<DetectTaskProgressService>()!.UpdateData(entity));
// delete
webApp?.MapDelete("/v1/system/task-progress/{id:long}", ([FromRoute] long id) =>
Locator.Current.GetService<DetectTaskProgressService>()!.DeleteById(id));
}
}

View File

@ -15,8 +15,8 @@ public class DeviceApi
webApp?.MapGet("/v1/system/device/all", () => Locator.Current.GetService<DetectDeviceService>()!.ListAll()); webApp?.MapGet("/v1/system/device/all", () => Locator.Current.GetService<DetectDeviceService>()!.ListAll());
// search // search
webApp?.MapGet("/v1/system/device/search", ([FromQuery] int? regionId, [FromQuery] string? name, [FromQuery] string? ip, [FromQuery]int pageNum = 1, [FromQuery]int pageSize = 10) => webApp?.MapGet("/v1/system/device/search", ([FromQuery] string? name, [FromQuery] string? ip, [FromQuery]int pageNum = 1, [FromQuery]int pageSize = 10) =>
Locator.Current.GetService<DetectDeviceService>()!.Search(regionId, name, ip, pageNum, pageSize)); Locator.Current.GetService<DetectDeviceService>()!.Search(name, ip, pageNum, pageSize));
// id // id
webApp?.MapGet("/v1/system/device/{id:long}", ([FromRoute] long id) => webApp?.MapGet("/v1/system/device/{id:long}", ([FromRoute] long id) =>

View File

@ -1,5 +1,3 @@
using System;
using System.Text;
using Avalonia; using Avalonia;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI; using Avalonia.ReactiveUI;
@ -33,10 +31,12 @@ public class App : Application
Locator.CurrentMutable.Register(() => new UserView(), typeof(IViewFor<UserViewModel>)); Locator.CurrentMutable.Register(() => new UserView(), typeof(IViewFor<UserViewModel>));
Locator.CurrentMutable.Register(() => new DetectUserService(), typeof(DetectUserService)); Locator.CurrentMutable.Register(() => new DetectUserService(), typeof(DetectUserService));
Locator.CurrentMutable.Register(() => new DetectAuthorityService(), typeof(DetectAuthorityService));
Locator.CurrentMutable.Register(() => new DetectDeviceService(), typeof(DetectDeviceService)); Locator.CurrentMutable.Register(() => new DetectDeviceService(), typeof(DetectDeviceService));
Locator.CurrentMutable.Register(() => new DetectTaskService(), typeof(DetectTaskService)); Locator.CurrentMutable.Register(() => new DetectTaskService(), typeof(DetectTaskService));
Locator.CurrentMutable.Register(() => new DetectTaskLogService(), typeof(DetectTaskLogService));
Locator.CurrentMutable.Register(() => new DetectTaskProgressService(), typeof(DetectTaskProgressService));
Locator.CurrentMutable.Register(() => new DetectLogService(), typeof(DetectLogService)); Locator.CurrentMutable.Register(() => new DetectLogService(), typeof(DetectLogService));
Locator.CurrentMutable.Register(() => new DetectAuthorityService(), typeof(DetectAuthorityService));
Locator.CurrentMutable.Register(() => new DeviceClientService(), typeof(DeviceClientService)); Locator.CurrentMutable.Register(() => new DeviceClientService(), typeof(DeviceClientService));
Locator.Current.GetService<DeviceClientService>(); Locator.Current.GetService<DeviceClientService>();

View File

@ -1,5 +1,4 @@
using System.IO; using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using detect.gui.Models.Entities; using detect.gui.Models.Entities;
using xwd.utils; using xwd.utils;
@ -34,9 +33,9 @@ public class DetectContext : DbContext
Set<UserAuthorityEntity>().Add(new UserAuthorityEntity { Id = 3, UserId = 1, AuthorityId = 3 }); Set<UserAuthorityEntity>().Add(new UserAuthorityEntity { Id = 3, UserId = 1, AuthorityId = 3 });
Set<UserAuthorityEntity>().Add(new UserAuthorityEntity { Id = 4, UserId = 1, AuthorityId = 4 }); Set<UserAuthorityEntity>().Add(new UserAuthorityEntity { Id = 4, UserId = 1, AuthorityId = 4 });
Set<DeviceEntity>().Add(new DeviceEntity { Id = 1, Name = "设备11", DeviceIp = "192.168.101.253", DevicePort = "13000", CameraRtsp = "https://stream7.iqilu.com/10339/article/202002/17/4417a27b1a656f4779eaa005ecd1a1a0.mp4"}); Set<DeviceEntity>().Add(new DeviceEntity { Id = 1, Name = "设备11", DeviceIp = "192.168.101.253" });
Set<DeviceEntity>().Add(new DeviceEntity { Id = 2, Name = "设备12", CameraRtsp = "https://stream7.iqilu.com/10339/article/202002/17/4417a27b1a656f4779eaa005ecd1a1a0.mp4"}); Set<DeviceEntity>().Add(new DeviceEntity { Id = 2, Name = "设备12" });
Set<DeviceEntity>().Add(new DeviceEntity { Id = 3, Name = "设备13", CameraRtsp = "https://stream7.iqilu.com/10339/article/202002/17/4417a27b1a656f4779eaa005ecd1a1a0.mp4"}); Set<DeviceEntity>().Add(new DeviceEntity { Id = 3, Name = "设备13" });
SaveChanges(); SaveChanges();
} }
@ -49,12 +48,14 @@ public class DetectContext : DbContext
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {
modelBuilder.Entity<UserEntity>().ToTable("User"); modelBuilder.Entity<UserEntity>().ToTable("dat_user");
modelBuilder.Entity<AuthorityEntity>().ToTable("Authority"); modelBuilder.Entity<AuthorityEntity>().ToTable("dat_authority");
modelBuilder.Entity<UserAuthorityEntity>().ToTable("UserAuthority"); modelBuilder.Entity<UserAuthorityEntity>().ToTable("dat_user_authority");
modelBuilder.Entity<DetectTaskEntity>().ToTable("DetectTask"); modelBuilder.Entity<DetectTaskEntity>().ToTable("dat_detect_task");
modelBuilder.Entity<DeviceEntity>().ToTable("Device"); modelBuilder.Entity<DetectTaskLogEntity>().ToTable("dat_detect_task_log");
modelBuilder.Entity<LogEntity>().ToTable("Log"); modelBuilder.Entity<DetectTaskProgressEntity>().ToTable("dat_detect_task_progress");
modelBuilder.Entity<DeviceEntity>().ToTable("dat_device");
modelBuilder.Entity<LogEntity>().ToTable("dat_log");
modelBuilder.Entity<UserEntity>().Property(p => p.CreateTime).HasDefaultValueSql("datetime('now')"); modelBuilder.Entity<UserEntity>().Property(p => p.CreateTime).HasDefaultValueSql("datetime('now')");
modelBuilder.Entity<UserEntity>().Property(p => p.UpdateTime).HasDefaultValueSql("datetime('now')"); modelBuilder.Entity<UserEntity>().Property(p => p.UpdateTime).HasDefaultValueSql("datetime('now')");
@ -63,6 +64,8 @@ public class DetectContext : DbContext
modelBuilder.Entity<AuthorityEntity>().Property(p => p.ParentId).HasDefaultValueSql("0"); modelBuilder.Entity<AuthorityEntity>().Property(p => p.ParentId).HasDefaultValueSql("0");
modelBuilder.Entity<DetectTaskEntity>().Property(p => p.CreateTime).HasDefaultValueSql("datetime('now')"); modelBuilder.Entity<DetectTaskEntity>().Property(p => p.CreateTime).HasDefaultValueSql("datetime('now')");
modelBuilder.Entity<DetectTaskEntity>().Property(p => p.UpdateTime).HasDefaultValueSql("datetime('now')"); modelBuilder.Entity<DetectTaskEntity>().Property(p => p.UpdateTime).HasDefaultValueSql("datetime('now')");
modelBuilder.Entity<DetectTaskLogEntity>().Property(p => p.CreateTime).HasDefaultValueSql("datetime('now')");
modelBuilder.Entity<DetectTaskProgressEntity>().Property(p => p.CreateTime).HasDefaultValueSql("datetime('now')");
modelBuilder.Entity<DeviceEntity>().Property(p => p.CreateTime).HasDefaultValueSql("datetime('now')"); modelBuilder.Entity<DeviceEntity>().Property(p => p.CreateTime).HasDefaultValueSql("datetime('now')");
modelBuilder.Entity<DeviceEntity>().Property(p => p.UpdateTime).HasDefaultValueSql("datetime('now')"); modelBuilder.Entity<DeviceEntity>().Property(p => p.UpdateTime).HasDefaultValueSql("datetime('now')");
modelBuilder.Entity<LogEntity>().Property(p => p.CreateTime).HasDefaultValueSql("datetime('now')"); modelBuilder.Entity<LogEntity>().Property(p => p.CreateTime).HasDefaultValueSql("datetime('now')");

View File

@ -1 +1 @@
window.__PRODUCTION__667A80FD89C6989176D163A75E7353F0__CONF__={"VITE_GLOB_API_URL":"http://localhost:3910","VITE_GLOB_UPLOAD_URL":"http://localhost:3910/v1/system/upload","VITE_GLOB_API_URL_PREFIX":"","VITE_GLOB_APP_TITLE":"智能视频监控平台"};Object.freeze(window.__PRODUCTION__667A80FD89C6989176D163A75E7353F0__CONF__);Object.defineProperty(window, "__PRODUCTION__667A80FD89C6989176D163A75E7353F0__CONF__", {configurable: false,writable: false,}); window.__PRODUCTION__4E2D683896C656E2988457CB4EF668C06D4B7CFB7EDF__CONF__={"VITE_GLOB_API_URL":"http://localhost:3920","VITE_GLOB_UPLOAD_URL":"http://localhost:3910/v1/system/upload","VITE_GLOB_API_URL_PREFIX":"","VITE_GLOB_APP_TITLE":"中核集团预埋件检测系统"};Object.freeze(window.__PRODUCTION__4E2D683896C656E2988457CB4EF668C06D4B7CFB7EDF__CONF__);Object.defineProperty(window, "__PRODUCTION__4E2D683896C656E2988457CB4EF668C06D4B7CFB7EDF__CONF__", {configurable: false,writable: false,});

View File

@ -1 +0,0 @@
import{am as a}from"./index.js";const s="/v1/system/authority",r=t=>a.post({url:`${s}/`,data:t}),l=(t,e=!1)=>a.put({url:`${s}/`,data:t,params:{updateAllFields:e}}),c=t=>a.delete({url:`${s}/${t}`}),u=t=>a.get({url:`${s}/search`,params:t}),d=t=>a.get({url:`${s}/all`,params:t}),p=t=>a.get({url:`${s}/${t}`}),$=t=>a.post({url:`${s}/batch-delete`,data:t});export{d as a,r as b,$ as c,p as g,c as r,u as s,l as u};

View File

@ -1 +0,0 @@
[data-v-9ebe5099] .ant-card-body{padding-top:0}

View File

@ -1 +0,0 @@
import{d as D,aj as I,f as $,o as w,c as F,a6 as _,Z as r,a4 as c,a5 as l,k as i,u as a,G as y,_ as u,F as f,a7 as G,a0 as H}from"./vue-08ef39cb.js";import{al as L,_ as N}from"./index.js";import{d as P}from"./schema-3cd89a70.js";import{g as R}from"./authorityApi-15a5fdf7.js";import{G as S,H as v,a4 as V}from"./antd-fb8ca017.js";const j={key:0},A=D({__name:"detail",setup(E){var p;const m=I(),g=$((p=m.params)==null?void 0:p.id),k=m.meta.title,{state:d,isReady:b,isLoading:x,execute:C}=L(R(g.value).then(s=>s),null,{immediate:!1});w(()=>{C()});const B=F(()=>b.value?P.map(({title:e,dataIndex:o="",customRender:n})=>({key:o,title:e,value:n?n({text:d.value[o],record:d.value}):d.value[o]})):{});return(s,e)=>{const o=_("a-button"),n=_("Image");return r(),c(a(V),{bordered:!1,loading:a(x)},{default:l(()=>[i(a(S),{title:a(k),onBack:e[1]||(e[1]=()=>s.$router.go(-1))},{extra:l(()=>[i(o,{type:"primary",onClick:e[0]||(e[0]=t=>s.$router.go(-1))},{default:l(()=>e[2]||(e[2]=[y("返回上一页面")])),_:1})]),_:1},8,["title"]),i(a(v),{bordered:"",column:3},{default:l(()=>[(r(!0),u(f,null,G(B.value,t=>(r(),c(a(v).Item,{key:t.key,label:t.title,span:["avatar"].includes(t.key)?3:1},{default:l(()=>[t.key==="avatar"?(r(),u("span",j,[i(n,{style:{width:"100px"},src:t.value},null,8,["src"])])):(r(),u(f,{key:1},[y(H(t.value),1)],64))]),_:2},1032,["label","span"]))),128))]),_:1})]),_:1},8,["loading"])}}});const J=N(A,[["__scopeId","data-v-d041459a"]]);export{J as default};

View File

@ -1 +0,0 @@
[data-v-799749cb] .ant-card-body{padding-top:0}

View File

@ -1 +0,0 @@
import{d as D,aj as I,f as $,o as w,c as F,a6 as _,Z as r,a4 as c,a5 as l,k as i,u as a,G as y,_ as d,F as f,a7 as G,a0 as H}from"./vue-08ef39cb.js";import{al as L,_ as N}from"./index.js";import{d as P}from"./schema-86a5e5c4.js";import{g as R}from"./regionApi-ad45a6bd.js";import{G as S,H as v,a4 as V}from"./antd-fb8ca017.js";const j={key:0},A=D({__name:"detail",setup(E){var p;const m=I(),g=$((p=m.params)==null?void 0:p.id),k=m.meta.title,{state:u,isReady:b,isLoading:x,execute:C}=L(R(g.value).then(s=>s),null,{immediate:!1});w(()=>{C()});const B=F(()=>b.value?P.map(({title:e,dataIndex:o="",customRender:n})=>({key:o,title:e,value:n?n({text:u.value[o],record:u.value}):u.value[o]})):{});return(s,e)=>{const o=_("a-button"),n=_("Image");return r(),c(a(V),{bordered:!1,loading:a(x)},{default:l(()=>[i(a(S),{title:a(k),onBack:e[1]||(e[1]=()=>s.$router.go(-1))},{extra:l(()=>[i(o,{type:"primary",onClick:e[0]||(e[0]=t=>s.$router.go(-1))},{default:l(()=>e[2]||(e[2]=[y("返回上一页面")])),_:1})]),_:1},8,["title"]),i(a(v),{bordered:"",column:3},{default:l(()=>[(r(!0),d(f,null,G(B.value,t=>(r(),c(a(v).Item,{key:t.key,label:t.title,span:["avatar"].includes(t.key)?3:1},{default:l(()=>[t.key==="avatar"?(r(),d("span",j,[i(n,{style:{width:"100px"},src:t.value},null,8,["src"])])):(r(),d(f,{key:1},[y(H(t.value),1)],64))]),_:2},1032,["label","span"]))),128))]),_:1})]),_:1},8,["loading"])}}});const J=N(A,[["__scopeId","data-v-9ebe5099"]]);export{J as default};

View File

@ -1 +0,0 @@
[data-v-c831da6d] .ant-card-body{padding-top:0}

View File

@ -1 +0,0 @@
[data-v-d6db8810] .ant-card-body{padding-top:0}

View File

@ -1 +0,0 @@
import{d as D,aj as I,f as $,o as w,c as F,a6 as m,Z as l,a4 as _,a5 as n,k as i,u as a,G as y,_ as d,F as f,a7 as G,a0 as H}from"./vue-08ef39cb.js";import{al as L,_ as N}from"./index.js";import{g as P,d as R}from"./schema-a437f68d.js";import{G as S,H as v,a4 as V}from"./antd-fb8ca017.js";const j={key:0},A=D({__name:"detail",setup(E){var p;const c=I(),g=$((p=c.params)==null?void 0:p.id),k=c.meta.title,{state:u,isReady:b,isLoading:x,execute:C}=L(P(g.value).then(s=>s),null,{immediate:!1});w(()=>{C()});const B=F(()=>b.value?R.map(({title:e,dataIndex:o="",customRender:r})=>({key:o,title:e,value:r?r({text:u.value[o],record:u.value}):u.value[o]})):{});return(s,e)=>{const o=m("a-button"),r=m("Image");return l(),_(a(V),{bordered:!1,loading:a(x)},{default:n(()=>[i(a(S),{title:a(k),onBack:e[1]||(e[1]=()=>s.$router.go(-1))},{extra:n(()=>[i(o,{type:"primary",onClick:e[0]||(e[0]=t=>s.$router.go(-1))},{default:n(()=>e[2]||(e[2]=[y("返回上一页面")])),_:1})]),_:1},8,["title"]),i(a(v),{bordered:"",column:3},{default:n(()=>[(l(!0),d(f,null,G(B.value,t=>(l(),_(a(v).Item,{key:t.key,label:t.title,span:["avatar"].includes(t.key)?3:1},{default:n(()=>[t.key==="avatar"?(l(),d("span",j,[i(r,{style:{width:"100px"},src:t.value},null,8,["src"])])):(l(),d(f,{key:1},[y(H(t.value),1)],64))]),_:2},1032,["label","span"]))),128))]),_:1})]),_:1},8,["loading"])}}});const z=N(A,[["__scopeId","data-v-799749cb"]]);export{z as default};

View File

@ -1 +0,0 @@
import{d as D,aj as I,f as $,o as w,c as F,a6 as _,Z as l,a4 as c,a5 as n,k as i,u as a,G as y,_ as u,F as f,a7 as G,a0 as H}from"./vue-08ef39cb.js";import{al as L,_ as N}from"./index.js";import{g as P,d as R}from"./schema-fc621ae3.js";import{G as S,H as v,a4 as V}from"./antd-fb8ca017.js";const j={key:0},A=D({__name:"detail",setup(E){var m;const p=I(),g=$((m=p.params)==null?void 0:m.id),k=p.meta.title,{state:d,isReady:b,isLoading:x,execute:C}=L(P(g.value).then(s=>s),null,{immediate:!1});w(()=>{C()});const B=F(()=>b.value?R.map(({title:e,dataIndex:o="",customRender:r})=>({key:o,title:e,value:r?r({text:d.value[o],record:d.value}):d.value[o]})):{});return(s,e)=>{const o=_("a-button"),r=_("Image");return l(),c(a(V),{bordered:!1,loading:a(x)},{default:n(()=>[i(a(S),{title:a(k),onBack:e[1]||(e[1]=()=>s.$router.go(-1))},{extra:n(()=>[i(o,{type:"primary",onClick:e[0]||(e[0]=t=>s.$router.go(-1))},{default:n(()=>e[2]||(e[2]=[y("返回上一页面")])),_:1})]),_:1},8,["title"]),i(a(v),{bordered:"",column:3},{default:n(()=>[(l(!0),u(f,null,G(B.value,t=>(l(),c(a(v).Item,{key:t.key,label:t.title,span:["avatar"].includes(t.key)?3:1},{default:n(()=>[t.key==="avatar"?(l(),u("span",j,[i(r,{style:{width:"100px"},src:t.value},null,8,["src"])])):(l(),u(f,{key:1},[y(H(t.value),1)],64))]),_:2},1032,["label","span"]))),128))]),_:1})]),_:1},8,["loading"])}}});const z=N(A,[["__scopeId","data-v-d6db8810"]]);export{z as default};

View File

@ -1 +0,0 @@
import{d as D,aj as I,f as $,o as w,c as F,a6 as m,Z as l,a4 as _,a5 as n,k as i,u as a,G as y,_ as u,F as f,a7 as G,a0 as H}from"./vue-08ef39cb.js";import{al as L,_ as N}from"./index.js";import{g as P,d as R}from"./schema-a80423cd.js";import{G as S,H as v,a4 as V}from"./antd-fb8ca017.js";const j={key:0},A=D({__name:"detail",setup(E){var p;const c=I(),g=$((p=c.params)==null?void 0:p.id),k=c.meta.title,{state:d,isReady:b,isLoading:x,execute:C}=L(P(g.value).then(s=>s),null,{immediate:!1});w(()=>{C()});const B=F(()=>b.value?R.map(({title:e,dataIndex:o="",customRender:r})=>({key:o,title:e,value:r?r({text:d.value[o],record:d.value}):d.value[o]})):{});return(s,e)=>{const o=m("a-button"),r=m("Image");return l(),_(a(V),{bordered:!1,loading:a(x)},{default:n(()=>[i(a(S),{title:a(k),onBack:e[1]||(e[1]=()=>s.$router.go(-1))},{extra:n(()=>[i(o,{type:"primary",onClick:e[0]||(e[0]=t=>s.$router.go(-1))},{default:n(()=>e[2]||(e[2]=[y("返回上一页面")])),_:1})]),_:1},8,["title"]),i(a(v),{bordered:"",column:3},{default:n(()=>[(l(!0),u(f,null,G(B.value,t=>(l(),_(a(v).Item,{key:t.key,label:t.title,span:["avatar"].includes(t.key)?3:1},{default:n(()=>[t.key==="avatar"?(l(),u("span",j,[i(r,{style:{width:"100px"},src:t.value},null,8,["src"])])):(l(),u(f,{key:1},[y(H(t.value),1)],64))]),_:2},1032,["label","span"]))),128))]),_:1})]),_:1},8,["loading"])}}});const z=N(A,[["__scopeId","data-v-c831da6d"]]);export{z as default};

View File

@ -1 +0,0 @@
var b=Object.defineProperty,j=Object.defineProperties;var L=Object.getOwnPropertyDescriptors;var u=Object.getOwnPropertySymbols;var h=Object.prototype.hasOwnProperty,y=Object.prototype.propertyIsEnumerable;var w=(s,t,e)=>t in s?b(s,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[t]=e,f=(s,t)=>{for(var e in t||(t={}))h.call(t,e)&&w(s,e,t[e]);if(u)for(var e of u(t))y.call(t,e)&&w(s,e,t[e]);return s},D=(s,t)=>j(s,L(t));var v=(s,t)=>{var e={};for(var r in s)h.call(s,r)&&t.indexOf(r)<0&&(e[r]=s[r]);if(s!=null&&u)for(var r of u(s))t.indexOf(r)<0&&y.call(s,r)&&(e[r]=s[r]);return e};var g=(s,t,e)=>new Promise((r,n)=>{var p=a=>{try{c(e.next(a))}catch(m){n(m)}},l=a=>{try{c(e.throw(a))}catch(m){n(m)}},c=a=>a.done?r(a.value):Promise.resolve(a.value).then(p,l);c((e=e.apply(s,t)).next())});import{u as C,B as H}from"./useForm-322569b9.js";import{f as I}from"./schema-86a5e5c4.js";import{a as M,B as O}from"./index-922f0b14.js";import{a as P,u as S}from"./regionApi-ad45a6bd.js";import{j as T}from"./antd-fb8ca017.js";import{d as U,f as B,c as V,u as i,Z as A,a4 as E,a5 as G,k as N,a9 as W}from"./vue-08ef39cb.js";import{_ as Z}from"./index.js";import"./index-9a268806.js";import"./useWindowSizeFn-40274562.js";import"./copyTextToClipboard-bf4926ca.js";const $=U({__name:"drawer",emits:["success","register"],setup(s,{emit:t}){const e=t,r=B(!0),n=B(),[p,{resetFields:l,setFieldsValue:c,validate:a}]=C({labelWidth:60,schemas:I,showActionButtonGroup:!1}),[m,{setDrawerProps:_,closeDrawer:F}]=M(o=>g(this,null,function*(){yield l(),_({confirmLoading:!1}),r.value=!!(o!=null&&o.isUpdate),n.value=o==null?void 0:o.record,i(r)&&(yield c(f({},o.record)))})),x=V(()=>i(r)?"编辑":"新增");function R(){return g(this,null,function*(){try{const o=yield a();_({confirmLoading:!0});const d=v(o,[]),k=i(r)?S:P,Y=i(r)?Object.assign({},D(f(f({},i(n)),d),{updateTime:T().format("YYYY-MM-DD HH:mm:ss")})):f({},d);yield k(Y),F(),e("success")}finally{_({confirmLoading:!1})}})}return(o,d)=>(A(),E(i(O),W(o.$attrs,{onRegister:i(m),showFooter:"",title:x.value,width:"600px",onOk:R}),{default:G(()=>[N(i(H),{onRegister:i(p),name:"EditForm"},null,8,["onRegister"])]),_:1},16,["onRegister","title"]))}});const ae=Z($,[["__scopeId","data-v-876102f7"]]);export{ae as default};

View File

@ -1 +0,0 @@
import{_ as o}from"./drawer.vue_vue_type_script_setup_true_lang-6fccf3c1.js";import"./useForm-322569b9.js";import"./vue-08ef39cb.js";import"./index.js";import"./antd-fb8ca017.js";import"./index-9a268806.js";import"./useWindowSizeFn-40274562.js";import"./copyTextToClipboard-bf4926ca.js";import"./schema-fc621ae3.js";import"./index-922f0b14.js";export{o as default};

View File

@ -1 +0,0 @@
import{_ as o}from"./drawer.vue_vue_type_script_setup_true_lang-b93f1b6b.js";import"./useForm-322569b9.js";import"./vue-08ef39cb.js";import"./index.js";import"./antd-fb8ca017.js";import"./index-9a268806.js";import"./useWindowSizeFn-40274562.js";import"./copyTextToClipboard-bf4926ca.js";import"./schema-3cd89a70.js";import"./index-922f0b14.js";import"./authorityApi-15a5fdf7.js";export{o as default};

View File

@ -1 +0,0 @@
import{_ as o}from"./drawer.vue_vue_type_script_setup_true_lang-d2f36041.js";import"./useForm-322569b9.js";import"./vue-08ef39cb.js";import"./index.js";import"./antd-fb8ca017.js";import"./index-9a268806.js";import"./useWindowSizeFn-40274562.js";import"./copyTextToClipboard-bf4926ca.js";import"./schema-a437f68d.js";import"./index-922f0b14.js";export{o as default};

View File

@ -1 +0,0 @@
import{_ as o}from"./drawer.vue_vue_type_script_setup_true_lang-eec91392.js";import"./useForm-322569b9.js";import"./vue-08ef39cb.js";import"./index.js";import"./antd-fb8ca017.js";import"./index-9a268806.js";import"./useWindowSizeFn-40274562.js";import"./copyTextToClipboard-bf4926ca.js";import"./schema-a80423cd.js";import"./index-922f0b14.js";export{o as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
var j=Object.defineProperty,x=Object.defineProperties;var L=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var _=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable;var h=(s,r,e)=>r in s?j(s,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[r]=e,u=(s,r)=>{for(var e in r||(r={}))_.call(r,e)&&h(s,e,r[e]);if(l)for(var e of l(r))B.call(r,e)&&h(s,e,r[e]);return s},D=(s,r)=>x(s,L(r));var y=(s,r)=>{var e={};for(var t in s)_.call(s,t)&&r.indexOf(t)<0&&(e[t]=s[t]);if(s!=null&&l)for(var t of l(s))r.indexOf(t)<0&&B.call(s,t)&&(e[t]=s[t]);return e};var g=(s,r,e)=>new Promise((t,n)=>{var f=a=>{try{c(e.next(a))}catch(m){n(m)}},p=a=>{try{c(e.throw(a))}catch(m){n(m)}},c=a=>a.done?t(a.value):Promise.resolve(a.value).then(f,p);c((e=e.apply(s,r)).next())});import{u as C,B as H}from"./useForm-322569b9.js";import{f as M,b as O,u as P}from"./schema-fc621ae3.js";import{a as S,B as T}from"./index-922f0b14.js";import{j as U}from"./antd-fb8ca017.js";import{d as V,f as F,c as A,u as i,Z as G,a4 as I,a5 as N,k as W,a9 as Z}from"./vue-08ef39cb.js";const Q=V({__name:"drawer",emits:["success","register"],setup(s,{emit:r}){const e=r,t=F(!0),n=F(),[f,{resetFields:p,setFieldsValue:c,validate:a}]=C({labelWidth:120,schemas:M,showActionButtonGroup:!1}),[m,{setDrawerProps:d,closeDrawer:v}]=S(o=>g(this,null,function*(){yield p(),d({confirmLoading:!1}),t.value=!!(o!=null&&o.isUpdate),n.value=o==null?void 0:o.record,i(t)&&(yield c(u({},o.record)))})),b=A(()=>i(t)?"编辑":"新增");function k(){return g(this,null,function*(){try{const o=yield a();d({confirmLoading:!0});const w=y(o,[]),R=i(t)?P:O,Y=i(t)?Object.assign({},D(u(u({},i(n)),w),{updateTime:U().format("YYYY-MM-DD HH:mm:ss")})):u({},w);yield R(Y),v(),e("success")}finally{d({confirmLoading:!1})}})}return(o,w)=>(G(),I(i(T),Z(o.$attrs,{onRegister:i(m),showFooter:"",title:b.value,width:"600px",onOk:k}),{default:N(()=>[W(i(H),{onRegister:i(f)},null,8,["onRegister"])]),_:1},16,["onRegister","title"]))}});export{Q as _};

View File

@ -1 +0,0 @@
var j=Object.defineProperty,x=Object.defineProperties;var L=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var _=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable;var h=(s,r,e)=>r in s?j(s,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[r]=e,u=(s,r)=>{for(var e in r||(r={}))_.call(r,e)&&h(s,e,r[e]);if(l)for(var e of l(r))B.call(r,e)&&h(s,e,r[e]);return s},D=(s,r)=>x(s,L(r));var y=(s,r)=>{var e={};for(var t in s)_.call(s,t)&&r.indexOf(t)<0&&(e[t]=s[t]);if(s!=null&&l)for(var t of l(s))r.indexOf(t)<0&&B.call(s,t)&&(e[t]=s[t]);return e};var g=(s,r,e)=>new Promise((t,n)=>{var f=a=>{try{c(e.next(a))}catch(m){n(m)}},p=a=>{try{c(e.throw(a))}catch(m){n(m)}},c=a=>a.done?t(a.value):Promise.resolve(a.value).then(f,p);c((e=e.apply(s,r)).next())});import{u as C,B as H}from"./useForm-322569b9.js";import{f as M}from"./schema-3cd89a70.js";import{a as O,B as P}from"./index-922f0b14.js";import{b as S,u as T}from"./authorityApi-15a5fdf7.js";import{j as U}from"./antd-fb8ca017.js";import{d as V,f as F,u as i,c as A,Z as G,a4 as I,a5 as N,k as W,a9 as Z}from"./vue-08ef39cb.js";const X=V({__name:"drawer",emits:["success","register"],setup(s,{emit:r}){const e=r,t=F(!0),n=F(),[f,{resetFields:p,setFieldsValue:c,validate:a}]=C({labelWidth:120,schemas:M,showActionButtonGroup:!1}),[m,{setDrawerProps:d,closeDrawer:v}]=O(o=>g(this,null,function*(){yield p(),d({confirmLoading:!1}),t.value=!!(o!=null&&o.isUpdate),n.value=o==null?void 0:o.record,i(t)&&(yield c(u({},o.record)))})),b=A(()=>i(t)?"编辑":"新增");function k(){return g(this,null,function*(){try{const o=yield a();d({confirmLoading:!0});const w=y(o,[]),R=i(t)?T:S,Y=i(t)?Object.assign({},D(u(u({},i(n)),w),{updateTime:U().format("YYYY-MM-DD HH:mm:ss")})):u({},w);yield R(Y),v(),e("success")}finally{d({confirmLoading:!1})}})}return(o,w)=>(G(),I(i(P),Z(o.$attrs,{onRegister:i(m),showFooter:"",title:b.value,width:"600px",onOk:k}),{default:N(()=>[W(i(H),{onRegister:i(f)},null,8,["onRegister"])]),_:1},16,["onRegister","title"]))}});export{X as _};

View File

@ -1 +0,0 @@
var j=Object.defineProperty,x=Object.defineProperties;var L=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var _=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable;var h=(s,r,e)=>r in s?j(s,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[r]=e,u=(s,r)=>{for(var e in r||(r={}))_.call(r,e)&&h(s,e,r[e]);if(l)for(var e of l(r))B.call(r,e)&&h(s,e,r[e]);return s},D=(s,r)=>x(s,L(r));var y=(s,r)=>{var e={};for(var t in s)_.call(s,t)&&r.indexOf(t)<0&&(e[t]=s[t]);if(s!=null&&l)for(var t of l(s))r.indexOf(t)<0&&B.call(s,t)&&(e[t]=s[t]);return e};var g=(s,r,e)=>new Promise((t,n)=>{var f=a=>{try{c(e.next(a))}catch(m){n(m)}},p=a=>{try{c(e.throw(a))}catch(m){n(m)}},c=a=>a.done?t(a.value):Promise.resolve(a.value).then(f,p);c((e=e.apply(s,r)).next())});import{u as C,B as H}from"./useForm-322569b9.js";import{f as M,b as O,u as P}from"./schema-a437f68d.js";import{a as S,B as T}from"./index-922f0b14.js";import{j as U}from"./antd-fb8ca017.js";import{d as V,f as F,c as A,u as i,Z as G,a4 as I,a5 as N,k as W,a9 as Z}from"./vue-08ef39cb.js";const Q=V({__name:"drawer",emits:["success","register"],setup(s,{emit:r}){const e=r,t=F(!0),n=F(),[f,{resetFields:p,setFieldsValue:c,validate:a}]=C({labelWidth:120,schemas:M,showActionButtonGroup:!1}),[m,{setDrawerProps:d,closeDrawer:v}]=S(o=>g(this,null,function*(){yield p(),d({confirmLoading:!1}),t.value=!!(o!=null&&o.isUpdate),n.value=o==null?void 0:o.record,i(t)&&(yield c(u({},o.record)))})),b=A(()=>i(t)?"编辑":"新增");function k(){return g(this,null,function*(){try{const o=yield a();d({confirmLoading:!0});const w=y(o,[]),R=i(t)?P:O,Y=i(t)?Object.assign({},D(u(u({},i(n)),w),{updateTime:U().format("YYYY-MM-DD HH:mm:ss")})):u({},w);yield R(Y),v(),e("success")}finally{d({confirmLoading:!1})}})}return(o,w)=>(G(),I(i(T),Z(o.$attrs,{onRegister:i(m),showFooter:"",title:b.value,width:"600px",onOk:k}),{default:N(()=>[W(i(H),{onRegister:i(f)},null,8,["onRegister"])]),_:1},16,["onRegister","title"]))}});export{Q as _};

View File

@ -1 +0,0 @@
var j=Object.defineProperty,x=Object.defineProperties;var L=Object.getOwnPropertyDescriptors;var l=Object.getOwnPropertySymbols;var _=Object.prototype.hasOwnProperty,B=Object.prototype.propertyIsEnumerable;var h=(s,r,e)=>r in s?j(s,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[r]=e,u=(s,r)=>{for(var e in r||(r={}))_.call(r,e)&&h(s,e,r[e]);if(l)for(var e of l(r))B.call(r,e)&&h(s,e,r[e]);return s},D=(s,r)=>x(s,L(r));var y=(s,r)=>{var e={};for(var t in s)_.call(s,t)&&r.indexOf(t)<0&&(e[t]=s[t]);if(s!=null&&l)for(var t of l(s))r.indexOf(t)<0&&B.call(s,t)&&(e[t]=s[t]);return e};var g=(s,r,e)=>new Promise((t,n)=>{var f=a=>{try{c(e.next(a))}catch(m){n(m)}},p=a=>{try{c(e.throw(a))}catch(m){n(m)}},c=a=>a.done?t(a.value):Promise.resolve(a.value).then(f,p);c((e=e.apply(s,r)).next())});import{u as C,B as H}from"./useForm-322569b9.js";import{f as M,b as O,u as P}from"./schema-a80423cd.js";import{a as S,B as T}from"./index-922f0b14.js";import{j as U}from"./antd-fb8ca017.js";import{d as V,f as F,c as A,u as i,Z as G,a4 as I,a5 as N,k as W,a9 as Z}from"./vue-08ef39cb.js";const Q=V({__name:"drawer",emits:["success","register"],setup(s,{emit:r}){const e=r,t=F(!0),n=F(),[f,{resetFields:p,setFieldsValue:c,validate:a}]=C({labelWidth:120,schemas:M,showActionButtonGroup:!1}),[m,{setDrawerProps:d,closeDrawer:v}]=S(o=>g(this,null,function*(){yield p(),d({confirmLoading:!1}),t.value=!!(o!=null&&o.isUpdate),n.value=o==null?void 0:o.record,i(t)&&(yield c(u({},o.record)))})),b=A(()=>i(t)?"编辑":"新增");function k(){return g(this,null,function*(){try{const o=yield a();d({confirmLoading:!0});const w=y(o,[]),R=i(t)?P:O,Y=i(t)?Object.assign({},D(u(u({},i(n)),w),{updateTime:U().format("YYYY-MM-DD HH:mm:ss")})):u({},w);yield R(Y),v(),e("success")}finally{d({confirmLoading:!1})}})}return(o,w)=>(G(),I(i(T),Z(o.$attrs,{onRegister:i(m),showFooter:"",title:b.value,width:"600px",onOk:k}),{default:N(()=>[W(i(H),{onRegister:i(f)},null,8,["onRegister"])]),_:1},16,["onRegister","title"]))}});export{Q as _};

View File

@ -1 +0,0 @@
var D=Object.getOwnPropertySymbols;var j=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable;var S=(a,d)=>{var i={};for(var t in a)j.call(a,t)&&d.indexOf(t)<0&&(i[t]=a[t]);if(a!=null&&D)for(var t of D(a))d.indexOf(t)<0&&H.call(a,t)&&(i[t]=a[t]);return i};import{j as I,k as N,m as O}from"./index.js";import{u as V,B as E}from"./useTable-f8594a7b.js";import{T as F}from"./useForm-322569b9.js";import{j as b}from"./antd-fb8ca017.js";import{r as K,s as z,c as G,a as Y}from"./schema-a437f68d.js";import{u as U}from"./index-922f0b14.js";import{_ as W}from"./drawer.vue_vue_type_script_setup_true_lang-d2f36041.js";import{d as Z,a6 as q,Z as y,_ as J,k as g,a5 as _,G as L,a4 as Q,u,a8 as X}from"./vue-08ef39cb.js";import"./index-9a268806.js";import"./useWindowSizeFn-40274562.js";import"./onMountedOrActivated-4630d53b.js";import"./sortable.esm-15c0a34e.js";import"./copyTextToClipboard-bf4926ca.js";const fe=Z({name:"StoragePlanPage",__name:"index",setup(a){I();const d=N(),[i,{openDrawer:t}]=U(),[k,{reload:w,setSelectedRowKeys:v}]=V({api:e=>z(x(e)),columns:G,formConfig:{labelWidth:120,schemas:Y,showAdvancedButton:!1},useSearchForm:!0,showTableSetting:!1,bordered:!0,showIndexColumn:!1,canResize:!1,rowKey:e=>e.id,actionColumn:{width:170,title:"操作",dataIndex:"action",fixed:"right"}}),x=(e,l=!0)=>{const C=e,{pageNum:p,pageSize:f,field:c="id",order:A="descend"}=C,M=S(C,["pageNum","pageSize","field","order"]),n={pageNum:p,pageSize:f,orderByClause:`${c} ${A==="descend"?"desc":"asc"}`};return Object.keys(M).forEach(h=>{const r=Y.find(m=>m.field===h),o=e[h],s=h;if(r){if(o!==void 0&&o!=="")if(r.component==="Input"){const m=l?"":"%";n[s]=`${m}${o.trim()}${m}`}else["Select","ApiSelect","ApiTreeSelect"].includes(r.component)?n[s]=O(o)?o.value:o:r.component==="RangePicker"?(n[`${s}From`]=b(o[0]).startOf("d").format("YYYY-MM-DD HH:mm:ss"),n[`${s}To`]=b(o[1]).endOf("d").format("YYYY-MM-DD HH:mm:ss")):r.component==="DatePicker"?n[s]=b(o).format(r.componentProps.format||"YYYY-MM-DD"):n[s]=o}else n[s]=o}),n},T=()=>{t(!0,{isUpdate:!1})},P=e=>{t(!0,{record:e,isUpdate:!0})},R=e=>{K(e.id).then(l=>{w(),v([])})},$=()=>{w()},B=e=>{d("/system/storage-plan/detail/"+e.id)};return(e,l)=>{const p=q("a-button");return y(),J("div",null,[g(u(E),{onRegister:u(k)},{toolbar:_(()=>[g(p,{type:"primary",onClick:T},{default:_(()=>l[0]||(l[0]=[L(" 新增")])),_:1})]),bodyCell:_(({column:f,record:c})=>[f.dataIndex==="action"?(y(),Q(u(F),{key:0,actions:[{label:"编辑",icon:"clarity:note-edit-line",onClick:P.bind(null,c),divider:!0},{label:"详情",icon:"ant-design:eye-outlined",onClick:B.bind(null,c),divider:!0}],dropDownActions:[{label:"删除",icon:"ant-design:delete-outlined",color:"error",popConfirm:{title:"是否确认删除",confirm:R.bind(null,c),placement:"topRight"}}]},null,8,["actions","dropDownActions"])):X("",!0)]),_:1},8,["onRegister"]),g(W,{onRegister:u(i),onSuccess:$},null,8,["onRegister"])])}}});export{fe as default};

View File

@ -1 +0,0 @@
var D=Object.getOwnPropertySymbols;var j=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable;var Y=(n,d)=>{var i={};for(var t in n)j.call(n,t)&&d.indexOf(t)<0&&(i[t]=n[t]);if(n!=null&&D)for(var t of D(n))d.indexOf(t)<0&&H.call(n,t)&&(i[t]=n[t]);return i};import{j as I,k as N,m as O}from"./index.js";import{u as V,B as E}from"./useTable-f8594a7b.js";import{T as F}from"./useForm-322569b9.js";import{j as b}from"./antd-fb8ca017.js";import{r as K,s as z,c as G,a as y}from"./schema-fc621ae3.js";import{u as U}from"./index-922f0b14.js";import{_ as W}from"./drawer.vue_vue_type_script_setup_true_lang-6fccf3c1.js";import{d as Z,a6 as q,Z as S,_ as J,k as g,a5 as _,G as L,a4 as Q,u,a8 as X}from"./vue-08ef39cb.js";import"./index-9a268806.js";import"./useWindowSizeFn-40274562.js";import"./onMountedOrActivated-4630d53b.js";import"./sortable.esm-15c0a34e.js";import"./copyTextToClipboard-bf4926ca.js";const fe=Z({name:"ConstantPage",__name:"index",setup(n){I();const d=N(),[i,{openDrawer:t}]=U(),[k,{reload:C,setSelectedRowKeys:v}]=V({api:e=>z(x(e)),columns:G,formConfig:{labelWidth:120,schemas:y,showAdvancedButton:!1},useSearchForm:!0,showTableSetting:!1,bordered:!0,showIndexColumn:!1,canResize:!1,rowKey:e=>e.id,actionColumn:{width:170,title:"操作",dataIndex:"action",fixed:"right"}}),x=(e,l=!0)=>{const w=e,{pageNum:p,pageSize:f,field:c="id",order:A="descend"}=w,M=Y(w,["pageNum","pageSize","field","order"]),a={pageNum:p,pageSize:f,orderByClause:`${c} ${A==="descend"?"desc":"asc"}`};return Object.keys(M).forEach(h=>{const r=y.find(m=>m.field===h),o=e[h],s=h;if(r){if(o!==void 0&&o!=="")if(r.component==="Input"){const m=l?"":"%";a[s]=`${m}${o.trim()}${m}`}else["Select","ApiSelect","ApiTreeSelect"].includes(r.component)?a[s]=O(o)?o.value:o:r.component==="RangePicker"?(a[`${s}From`]=b(o[0]).startOf("d").format("YYYY-MM-DD HH:mm:ss"),a[`${s}To`]=b(o[1]).endOf("d").format("YYYY-MM-DD HH:mm:ss")):r.component==="DatePicker"?a[s]=b(o).format(r.componentProps.format||"YYYY-MM-DD"):a[s]=o}else a[s]=o}),a},T=()=>{t(!0,{isUpdate:!1})},R=e=>{t(!0,{record:e,isUpdate:!0})},$=e=>{K(e.id).then(l=>{C(),v([])})},B=()=>{C()},P=e=>{d("/system/constant/detail/"+e.id)};return(e,l)=>{const p=q("a-button");return S(),J("div",null,[g(u(E),{onRegister:u(k)},{toolbar:_(()=>[g(p,{type:"primary",onClick:T},{default:_(()=>l[0]||(l[0]=[L(" 新增")])),_:1})]),bodyCell:_(({column:f,record:c})=>[f.dataIndex==="action"?(S(),Q(u(F),{key:0,actions:[{label:"编辑",icon:"clarity:note-edit-line",onClick:R.bind(null,c),divider:!0},{label:"详情",icon:"ant-design:eye-outlined",onClick:P.bind(null,c),divider:!0}],dropDownActions:[{label:"删除",icon:"ant-design:delete-outlined",color:"error",popConfirm:{title:"是否确认删除",confirm:$.bind(null,c),placement:"topRight"}}]},null,8,["actions","dropDownActions"])):X("",!0)]),_:1},8,["onRegister"]),g(W,{onRegister:u(i),onSuccess:B},null,8,["onRegister"])])}}});export{fe as default};

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
var A=Object.getOwnPropertySymbols;var K=Object.prototype.hasOwnProperty,z=Object.prototype.propertyIsEnumerable;var C=(a,p)=>{var i={};for(var o in a)K.call(a,o)&&p.indexOf(o)<0&&(i[o]=a[o]);if(a!=null&&A)for(var o of A(a))p.indexOf(o)<0&&z.call(a,o)&&(i[o]=a[o]);return i};import{j as G,k as L,m as W,l as Z}from"./index.js";import{u as q,B as J}from"./useTable-f8594a7b.js";import{T as Q}from"./useForm-322569b9.js";import{j as b,N as X,P as ee}from"./antd-fb8ca017.js";import{s as te,r as oe,c as se}from"./authorityApi-15a5fdf7.js";import{u as ne}from"./index-922f0b14.js";import{_ as ae}from"./drawer.vue_vue_type_script_setup_true_lang-b93f1b6b.js";import{c as re,s as E}from"./schema-3cd89a70.js";import{d as ie,f as le,a6 as ce,n as de,Z as m,_ as y,k as _,a5 as c,u as n,F as me,$ as H,a0 as ue,G as R,a4 as v,a8 as x,m as fe}from"./vue-08ef39cb.js";import"./index-9a268806.js";import"./useWindowSizeFn-40274562.js";import"./onMountedOrActivated-4630d53b.js";import"./sortable.esm-15c0a34e.js";import"./copyTextToClipboard-bf4926ca.js";const pe={key:1},He=ie({name:"AUTH_SYSTEM_AUTHORITY",__name:"index",setup(a){const{createMessage:p}=Z(),{hasPermission:i}=G(),o=L(),u=le([]),M=e=>{u.value=e.filter(t=>typeof t!="undefined")},[U,{openDrawer:k}]=ne(),[I,{reload:g,setSelectedRowKeys:S}]=q({title:"权限表",api:e=>te(B(e)),columns:re,formConfig:{labelWidth:120,schemas:E,showAdvancedButton:!1},rowSelection:{type:"checkbox",onChange:M},useSearchForm:!0,showTableSetting:!1,bordered:!0,showIndexColumn:!1,canResize:!1,rowKey:e=>e.id,actionColumn:{width:170,title:"操作",dataIndex:"action",fixed:"right"}}),B=e=>{const w=e,{pageNum:t,pageSize:h,field:D="id",order:T="descend"}=w,f=C(w,["pageNum","pageSize","field","order"]),r={pageNum:t,pageSize:h,orderByClause:`${D} ${T==="descend"?"desc":"asc"}`};return Object.keys(f).forEach(Y=>{const d=E.find(V=>V.field===Y),s=e[Y],l=Y;d?s!==void 0&&s!==""&&(d.component==="Input"?r[l]=`%${s.trim()}%`:["Select","ApiSelect","ApiTreeSelect"].includes(d.component)?r[l]=W(s)?s.value:s:d.component==="RangePicker"?(r[`${l}From`]=b(s[0]).startOf("d").format("YYYY-MM-DD HH:mm:ss"),r[`${l}To`]=b(s[1]).endOf("d").format("YYYY-MM-DD HH:mm:ss")):d.component==="DatePicker"?r[l]=b(s).format(d.componentProps.format||"YYYY-MM-DD"):r[l]=s):r[l]=s}),r},O=()=>{k(!0,{isUpdate:!1})},P=e=>{k(!0,{record:e,isUpdate:!0})},$=e=>{oe(e.id).then(t=>{g(),S([])})},N=()=>{if(u.value.length===0){p.error("当前未选中任何项目!");return}se(u.value).then(e=>{g(),S([])})},j=()=>{g()},F=e=>{o("/system/authority/detail/"+e.id)};return(e,t)=>{const h=ce("a-button"),D=de("auth");return m(),y("div",null,[_(n(J),{onRegister:n(I)},{headerTop:c(()=>[_(n(X),{type:"info","show-icon":""},{message:c(()=>[u.value.length>0?(m(),y(me,{key:0},[H("span",null,"已选中"+ue(u.value.length)+"条记录",1),_(h,{type:"link",onClick:t[0]||(t[0]=T=>n(S)([])),size:"small"},{default:c(()=>t[1]||(t[1]=[R("清空")])),_:1}),n(i)("AUTH_SYSTEM_AUTHORITY:DELETE")?(m(),v(n(ee),{key:0,class:"ml-4",title:"确定要全部删除吗?","ok-text":"是","cancel-text":"否",onConfirm:N},{default:c(()=>t[2]||(t[2]=[H("a",{href:"#",class:"text-red-500"},"删除",-1)])),_:1})):x("",!0)],64)):(m(),y("span",pe,"未选中任何项目"))]),_:1})]),toolbar:c(()=>[fe((m(),v(h,{type:"primary",onClick:O},{default:c(()=>t[3]||(t[3]=[R(" 新增")])),_:1})),[[D,"AUTH_SYSTEM_AUTHORITY:ADD"]])]),bodyCell:c(({column:T,record:f})=>[T.dataIndex==="action"?(m(),v(n(Q),{key:0,actions:[{label:"编辑",icon:"clarity:note-edit-line",onClick:P.bind(null,f),ifShow:n(i)("AUTH_SYSTEM_AUTHORITY:EDIT"),divider:!0},{label:"详情",icon:"ant-design:eye-outlined",onClick:F.bind(null,f),divider:!0}],dropDownActions:[{label:"删除",icon:"ant-design:delete-outlined",color:"error",popConfirm:{title:"是否确认删除",confirm:$.bind(null,f),placement:"topRight"},ifShow:n(i)("AUTH_SYSTEM_AUTHORITY:DELETE")}]},null,8,["actions","dropDownActions"])):x("",!0)]),_:1},8,["onRegister"]),_(ae,{onRegister:n(U),onSuccess:j},null,8,["onRegister"])])}}});export{He as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
import{N as _,y as B,a_ as T,u as y,a5 as l,_ as D}from"./index.js";import{c as d,u as L}from"./index-094bd341.js";import{aS as P}from"./antd-fb8ca017.js";import{d as w,c as f,u as t,Z as s,_ as C,k as E,a4 as S,a8 as k,a1 as F,F as v,a6 as a}from"./vue-08ef39cb.js";import"./index-5222460c.js";import"./index-be3bd629.js";import"./useContentViewHeight-3410df66.js";import"./useWindowSizeFn-40274562.js";import"./lock-4bf6aa77.js";const x=w({name:"LayoutFeatures",components:{BackTop:P,LayoutLockPage:d(()=>_(()=>import("./index-7bc3df1d.js"),["./index-7bc3df1d.js","./vue-08ef39cb.js","./LockPage-5a118990.js","./index.js","./antd-fb8ca017.js","./index-b5b5c2ac.css","./lock-4bf6aa77.js","./header-b90f4bbc.js","./LockPage-b0b08e00.css"],import.meta.url)),SettingDrawer:d(()=>_(()=>import("./index-1adf9d7f.js").then(e=>e.i),["./index-1adf9d7f.js","./index-922f0b14.js","./index.js","./vue-08ef39cb.js","./antd-fb8ca017.js","./index-b5b5c2ac.css","./index-ac2d527c.css","./index-094bd341.js","./index-5222460c.js","./index-be3bd629.js","./useContentViewHeight-3410df66.js","./useWindowSizeFn-40274562.js","./index-054645fa.css","./lock-4bf6aa77.js","./index-fffcad33.css"],import.meta.url))},setup(){const{getUseOpenBackTop:e,getShowSettingButton:i,getSettingButtonPosition:u,getFullContent:c}=B(),p=T(),{prefixCls:m}=y("setting-drawer-feature"),{getShowHeader:o}=L(),n=f(()=>p.getSessionTimeout),r=f(()=>{if(!t(i))return!1;const g=t(u);return g===l.AUTO?!t(o)||t(c):g===l.FIXED});return{getTarget:()=>document.body,getUseOpenBackTop:e,getIsFixedSettingDrawer:r,prefixCls:m,getIsSessionTimeout:n}}});function I(e,i,u,c,p,m){const o=a("LayoutLockPage"),n=a("BackTop"),r=a("SettingDrawer");return s(),C(v,null,[E(o),e.getUseOpenBackTop?(s(),S(n,{key:0,target:e.getTarget},null,8,["target"])):k("",!0),e.getIsFixedSettingDrawer?(s(),S(r,{key:1,class:F(e.prefixCls)},null,8,["class"])):k("",!0)],64)}const b=D(x,[["render",I]]);export{b as default}; import{N as _,y as B,a_ as T,u as y,a5 as l,_ as D}from"./index.js";import{c as d,u as L}from"./index-094bd341.js";import{aS as P}from"./antd-fb8ca017.js";import{d as w,c as f,u as t,Z as s,_ as C,k as E,a4 as S,a8 as k,a1 as F,F as v,a6 as a}from"./vue-08ef39cb.js";import"./index-5222460c.js";import"./index-be3bd629.js";import"./useContentViewHeight-3410df66.js";import"./useWindowSizeFn-40274562.js";import"./lock-4bf6aa77.js";const x=w({name:"LayoutFeatures",components:{BackTop:P,LayoutLockPage:d(()=>_(()=>import("./index-7bc3df1d.js"),["./index-7bc3df1d.js","./vue-08ef39cb.js","./LockPage-5a118990.js","./index.js","./antd-fb8ca017.js","./index-50de0f48.css","./lock-4bf6aa77.js","./header-b90f4bbc.js","./LockPage-b0b08e00.css"],import.meta.url)),SettingDrawer:d(()=>_(()=>import("./index-1adf9d7f.js").then(e=>e.i),["./index-1adf9d7f.js","./index-922f0b14.js","./index.js","./vue-08ef39cb.js","./antd-fb8ca017.js","./index-50de0f48.css","./index-ac2d527c.css","./index-094bd341.js","./index-5222460c.js","./index-be3bd629.js","./useContentViewHeight-3410df66.js","./useWindowSizeFn-40274562.js","./index-054645fa.css","./lock-4bf6aa77.js","./index-fffcad33.css"],import.meta.url))},setup(){const{getUseOpenBackTop:e,getShowSettingButton:i,getSettingButtonPosition:u,getFullContent:c}=B(),p=T(),{prefixCls:m}=y("setting-drawer-feature"),{getShowHeader:o}=L(),n=f(()=>p.getSessionTimeout),r=f(()=>{if(!t(i))return!1;const g=t(u);return g===l.AUTO?!t(o)||t(c):g===l.FIXED});return{getTarget:()=>document.body,getUseOpenBackTop:e,getIsFixedSettingDrawer:r,prefixCls:m,getIsSessionTimeout:n}}});function I(e,i,u,c,p,m){const o=a("LayoutLockPage"),n=a("BackTop"),r=a("SettingDrawer");return s(),C(v,null,[E(o),e.getUseOpenBackTop?(s(),S(n,{key:0,target:e.getTarget},null,8,["target"])):k("",!0),e.getIsFixedSettingDrawer?(s(),S(r,{key:1,class:F(e.prefixCls)},null,8,["class"])):k("",!0)],64)}const b=D(x,[["render",I]]);export{b as default};

View File

@ -1 +1 @@
import{N as D,p as U,u as b,ak as N,o as O,U as P,b9 as S,_ as x}from"./index.js";import{D as A}from"./siteSetting-efd6ab5b.js";import{c as v,u as E}from"./index-094bd341.js";import{b as R}from"./index-9a268806.js";import{h as V}from"./header-b90f4bbc.js";import{D as B,q as L}from"./antd-fb8ca017.js";import{d as T,c as F,Z as l,_ as q,k as t,a5 as g,F as z,a6 as n,a4 as k,a8 as _,$ as a,a1 as s,a0 as I}from"./vue-08ef39cb.js";import"./index-5222460c.js";import"./index-be3bd629.js";import"./useContentViewHeight-3410df66.js";import"./useWindowSizeFn-40274562.js";import"./lock-4bf6aa77.js";const H=T({name:"UserDropdown",components:{Dropdown:B,Menu:L,MenuItem:v(()=>D(()=>import("./DropMenuItem-fd789d02.js"),["./DropMenuItem-fd789d02.js","./index.js","./vue-08ef39cb.js","./antd-fb8ca017.js","./index-b5b5c2ac.css"],import.meta.url)),MenuDivider:L.Divider,LockAction:v(()=>D(()=>import("./LockModal-d04426a6.js"),["./LockModal-d04426a6.js","./index.js","./vue-08ef39cb.js","./antd-fb8ca017.js","./index-b5b5c2ac.css","./index-9a268806.js","./useWindowSizeFn-40274562.js","./index-7064e331.css","./useForm-322569b9.js","./copyTextToClipboard-bf4926ca.js","./useForm-01d9c31d.css","./lock-4bf6aa77.js","./header-b90f4bbc.js","./LockModal-ca58db68.css"],import.meta.url))},props:{theme:U.oneOf(["dark","light"])},setup(){const{prefixCls:e}=b("header-user-dropdown"),{t:h}=O(),{getShowDoc:C,getUseLockPage:w}=E(),c=N(),y=F(()=>{const{realName:f="",avatar:M,tenant:$}=c.getUserInfo||{};return{realName:f,avatar:M||V,desc:"",tenant:$}}),[o,{openModal:p}]=R();function u(){p(!0)}function d(){c.confirmLoginOut()}function m(){P(A)}function r(){S.push("/change-password")}function i(f){switch(f.key){case"password":r();break;case"logout":d();break;case"doc":m();break;case"lock":u();break}}return{prefixCls:e,t:h,getUserInfo:y,handleMenuClick:i,getShowDoc:C,register:o,getUseLockPage:w}}});const W=["src"];function Z(e,h,C,w,c,y){const o=n("MenuItem"),p=n("MenuDivider"),u=n("Menu"),d=n("Dropdown"),m=n("LockAction");return l(),q(z,null,[t(d,{placement:"bottomLeft",overlayClassName:`${e.prefixCls}-dropdown-overlay`},{overlay:g(()=>[t(u,{onClick:e.handleMenuClick},{default:g(()=>[e.getShowDoc?(l(),k(o,{key:"doc",text:e.t("layout.header.dropdownItemDoc"),icon:"ion:document-text-outline"},null,8,["text"])):_("",!0),e.getShowDoc?(l(),k(p,{key:1})):_("",!0),e.getUseLockPage?(l(),k(o,{key:"lock",text:e.t("layout.header.tooltipLock"),icon:"ion:lock-closed-outline"},null,8,["text"])):_("",!0),t(o,{key:"password",text:e.t("layout.header.tooltipChangePassword"),icon:"ion:document-lock-outline"},null,8,["text"]),t(o,{key:"logout",text:e.t("layout.header.dropdownItemLoginOut"),icon:"ion:power-outline"},null,8,["text"])]),_:1},8,["onClick"])]),default:g(()=>{var r,i;return[a("span",{class:s([[e.prefixCls,`${e.prefixCls}--${e.theme}`],"flex"])},[a("span",{style:{"margin-right":"10px"},class:s(`${e.prefixCls}__name`)},I((i=(r=e.getUserInfo.tenant)==null?void 0:r.productList)==null?void 0:i[0].name),3),a("img",{class:s(`${e.prefixCls}__header`),src:e.getUserInfo.avatar},null,10,W),a("span",{class:s(`${e.prefixCls}__info hidden md:block`)},[a("span",{class:s([`${e.prefixCls}__name`,"truncate"])},I(e.getUserInfo.realName),3)],2)],2)]}),_:1},8,["overlayClassName"]),t(m,{onRegister:e.register},null,8,["onRegister"])],64)}const se=x(H,[["render",Z]]);export{se as default}; import{N as D,p as U,u as b,ak as N,o as O,U as P,b9 as S,_ as x}from"./index.js";import{D as A}from"./siteSetting-efd6ab5b.js";import{c as v,u as E}from"./index-094bd341.js";import{b as R}from"./index-9a268806.js";import{h as V}from"./header-b90f4bbc.js";import{D as B,q as L}from"./antd-fb8ca017.js";import{d as T,c as F,Z as l,_ as q,k as t,a5 as g,F as z,a6 as n,a4 as k,a8 as _,$ as a,a1 as s,a0 as I}from"./vue-08ef39cb.js";import"./index-5222460c.js";import"./index-be3bd629.js";import"./useContentViewHeight-3410df66.js";import"./useWindowSizeFn-40274562.js";import"./lock-4bf6aa77.js";const H=T({name:"UserDropdown",components:{Dropdown:B,Menu:L,MenuItem:v(()=>D(()=>import("./DropMenuItem-fd789d02.js"),["./DropMenuItem-fd789d02.js","./index.js","./vue-08ef39cb.js","./antd-fb8ca017.js","./index-50de0f48.css"],import.meta.url)),MenuDivider:L.Divider,LockAction:v(()=>D(()=>import("./LockModal-d04426a6.js"),["./LockModal-d04426a6.js","./index.js","./vue-08ef39cb.js","./antd-fb8ca017.js","./index-50de0f48.css","./index-9a268806.js","./useWindowSizeFn-40274562.js","./index-7064e331.css","./useForm-322569b9.js","./copyTextToClipboard-bf4926ca.js","./useForm-01d9c31d.css","./lock-4bf6aa77.js","./header-b90f4bbc.js","./LockModal-ca58db68.css"],import.meta.url))},props:{theme:U.oneOf(["dark","light"])},setup(){const{prefixCls:e}=b("header-user-dropdown"),{t:h}=O(),{getShowDoc:C,getUseLockPage:w}=E(),c=N(),y=F(()=>{const{realName:f="",avatar:M,tenant:$}=c.getUserInfo||{};return{realName:f,avatar:M||V,desc:"",tenant:$}}),[o,{openModal:p}]=R();function u(){p(!0)}function d(){c.confirmLoginOut()}function m(){P(A)}function r(){S.push("/change-password")}function i(f){switch(f.key){case"password":r();break;case"logout":d();break;case"doc":m();break;case"lock":u();break}}return{prefixCls:e,t:h,getUserInfo:y,handleMenuClick:i,getShowDoc:C,register:o,getUseLockPage:w}}});const W=["src"];function Z(e,h,C,w,c,y){const o=n("MenuItem"),p=n("MenuDivider"),u=n("Menu"),d=n("Dropdown"),m=n("LockAction");return l(),q(z,null,[t(d,{placement:"bottomLeft",overlayClassName:`${e.prefixCls}-dropdown-overlay`},{overlay:g(()=>[t(u,{onClick:e.handleMenuClick},{default:g(()=>[e.getShowDoc?(l(),k(o,{key:"doc",text:e.t("layout.header.dropdownItemDoc"),icon:"ion:document-text-outline"},null,8,["text"])):_("",!0),e.getShowDoc?(l(),k(p,{key:1})):_("",!0),e.getUseLockPage?(l(),k(o,{key:"lock",text:e.t("layout.header.tooltipLock"),icon:"ion:lock-closed-outline"},null,8,["text"])):_("",!0),t(o,{key:"password",text:e.t("layout.header.tooltipChangePassword"),icon:"ion:document-lock-outline"},null,8,["text"]),t(o,{key:"logout",text:e.t("layout.header.dropdownItemLoginOut"),icon:"ion:power-outline"},null,8,["text"])]),_:1},8,["onClick"])]),default:g(()=>{var r,i;return[a("span",{class:s([[e.prefixCls,`${e.prefixCls}--${e.theme}`],"flex"])},[a("span",{style:{"margin-right":"10px"},class:s(`${e.prefixCls}__name`)},I((i=(r=e.getUserInfo.tenant)==null?void 0:r.productList)==null?void 0:i[0].name),3),a("img",{class:s(`${e.prefixCls}__header`),src:e.getUserInfo.avatar},null,10,W),a("span",{class:s(`${e.prefixCls}__info hidden md:block`)},[a("span",{class:s([`${e.prefixCls}__name`,"truncate"])},I(e.getUserInfo.realName),3)],2)],2)]}),_:1},8,["overlayClassName"]),t(m,{onRegister:e.register},null,8,["onRegister"])],64)}const se=x(H,[["render",Z]]);export{se as default};

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
var D=Object.getOwnPropertySymbols;var j=Object.prototype.hasOwnProperty,H=Object.prototype.propertyIsEnumerable;var Y=(n,d)=>{var i={};for(var t in n)j.call(n,t)&&d.indexOf(t)<0&&(i[t]=n[t]);if(n!=null&&D)for(var t of D(n))d.indexOf(t)<0&&H.call(n,t)&&(i[t]=n[t]);return i};import{j as I,k as N,m as O}from"./index.js";import{u as V,B as E}from"./useTable-f8594a7b.js";import{T as F}from"./useForm-322569b9.js";import{j as b}from"./antd-fb8ca017.js";import{r as K,s as z,c as G,a as y}from"./schema-a80423cd.js";import{u as U}from"./index-922f0b14.js";import{_ as W}from"./drawer.vue_vue_type_script_setup_true_lang-eec91392.js";import{d as Z,a6 as q,Z as S,_ as J,k as g,a5 as _,G as L,a4 as Q,u,a8 as X}from"./vue-08ef39cb.js";import"./index-9a268806.js";import"./useWindowSizeFn-40274562.js";import"./onMountedOrActivated-4630d53b.js";import"./sortable.esm-15c0a34e.js";import"./copyTextToClipboard-bf4926ca.js";const fe=Z({name:"AlgoPage",__name:"index",setup(n){I();const d=N(),[i,{openDrawer:t}]=U(),[k,{reload:w,setSelectedRowKeys:v}]=V({api:e=>z(x(e)),columns:G,formConfig:{labelWidth:120,schemas:y,showAdvancedButton:!1},useSearchForm:!0,showTableSetting:!1,bordered:!0,showIndexColumn:!1,canResize:!1,rowKey:e=>e.id,actionColumn:{width:170,title:"操作",dataIndex:"action",fixed:"right"}}),x=(e,l=!0)=>{const C=e,{pageNum:p,pageSize:f,field:c="id",order:P="descend"}=C,M=Y(C,["pageNum","pageSize","field","order"]),a={pageNum:p,pageSize:f,orderByClause:`${c} ${P==="descend"?"desc":"asc"}`};return Object.keys(M).forEach(h=>{const r=y.find(m=>m.field===h),o=e[h],s=h;if(r){if(o!==void 0&&o!=="")if(r.component==="Input"){const m=l?"":"%";a[s]=`${m}${o.trim()}${m}`}else["Select","ApiSelect","ApiTreeSelect"].includes(r.component)?a[s]=O(o)?o.value:o:r.component==="RangePicker"?(a[`${s}From`]=b(o[0]).startOf("d").format("YYYY-MM-DD HH:mm:ss"),a[`${s}To`]=b(o[1]).endOf("d").format("YYYY-MM-DD HH:mm:ss")):r.component==="DatePicker"?a[s]=b(o).format(r.componentProps.format||"YYYY-MM-DD"):a[s]=o}else a[s]=o}),a},T=()=>{t(!0,{isUpdate:!1})},R=e=>{t(!0,{record:e,isUpdate:!0})},$=e=>{K(e.id).then(l=>{w(),v([])})},A=()=>{w()},B=e=>{d("/system/algo/detail/"+e.id)};return(e,l)=>{const p=q("a-button");return S(),J("div",null,[g(u(E),{onRegister:u(k)},{toolbar:_(()=>[g(p,{type:"primary",onClick:T},{default:_(()=>l[0]||(l[0]=[L(" 新增")])),_:1})]),bodyCell:_(({column:f,record:c})=>[f.dataIndex==="action"?(S(),Q(u(F),{key:0,actions:[{label:"编辑",icon:"clarity:note-edit-line",onClick:R.bind(null,c),divider:!0},{label:"详情",icon:"ant-design:eye-outlined",onClick:B.bind(null,c),divider:!0}],dropDownActions:[{label:"删除",icon:"ant-design:delete-outlined",color:"error",popConfirm:{title:"是否确认删除",confirm:$.bind(null,c),placement:"topRight"}}]},null,8,["actions","dropDownActions"])):X("",!0)]),_:1},8,["onRegister"]),g(W,{onRegister:u(i),onSuccess:A},null,8,["onRegister"])])}}});export{fe as default};

View File

@ -1 +0,0 @@
var S=Object.getOwnPropertySymbols;var M=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable;var w=(s,d)=>{var i={};for(var e in s)M.call(s,e)&&d.indexOf(e)<0&&(i[e]=s[e]);if(s!=null&&S)for(var e of S(s))d.indexOf(e)<0&&O.call(s,e)&&(i[e]=s[e]);return i};import{j,k as N,S as A,m as H,_ as V}from"./index.js";import{u as z,B as E}from"./useTable-f8594a7b.js";import{T as F}from"./useForm-322569b9.js";import{O as K,j as g}from"./antd-fb8ca017.js";import{r as G,s as U}from"./regionApi-ad45a6bd.js";import{u as W}from"./index-922f0b14.js";import Z from"./drawer-14fca2a9.js";import{c as q,s as x}from"./schema-86a5e5c4.js";import{d as J,a6 as L,Z as D,_ as Q,$ as Y,k as u,u as l,a5 as b,l as X,G as ee,a4 as te,a8 as oe}from"./vue-08ef39cb.js";import"./index-9a268806.js";import"./useWindowSizeFn-40274562.js";import"./onMountedOrActivated-4630d53b.js";import"./sortable.esm-15c0a34e.js";import"./copyTextToClipboard-bf4926ca.js";const se={class:"header"},ae=J({name:"RegionPage",__name:"index",setup(s){j(),N();const[d,{openDrawer:i}]=W(),[e,{reload:v,setSelectedRowKeys:y}]=z({api:t=>U(R(t)),columns:q,formConfig:{labelWidth:0,schemas:x,showAdvancedButton:!1},useSearchForm:!0,showTableSetting:!1,bordered:!0,showIndexColumn:!1,canResize:!1,rowKey:t=>t.id,actionColumn:{width:170,title:"操作",dataIndex:"action",fixed:"right"}}),R=(t,n=!0)=>{const C=t,{pageNum:f,pageSize:_,field:m="id",order:$="descend"}=C,I=w(C,["pageNum","pageSize","field","order"]),a={pageNum:f,pageSize:_,orderByClause:`${m} ${$==="descend"?"desc":"asc"}`};return Object.keys(I).forEach(h=>{const c=x.find(p=>p.field===h),o=t[h],r=h;if(c){if(o!==void 0&&o!=="")if(c.component==="Input"){const p=n?"":"%";a[r]=`${p}${o.trim()}${p}`}else["Select","ApiSelect","ApiTreeSelect"].includes(c.component)?a[r]=H(o)?o.value:o:c.component==="RangePicker"?(a[`${r}From`]=g(o[0]).startOf("d").format("YYYY-MM-DD HH:mm:ss"),a[`${r}To`]=g(o[1]).endOf("d").format("YYYY-MM-DD HH:mm:ss")):c.component==="DatePicker"?a[r]=g(o).format(c.componentProps.format||"YYYY-MM-DD"):a[r]=o}else a[r]=o}),a},k=()=>{i(!0,{isUpdate:!1})},T=t=>{i(!0,{record:t,isUpdate:!0})},B=t=>{G(t.id).then(n=>{v(),y([])})},P=()=>{v()};return(t,n)=>{const f=L("a-button");return D(),Q("div",null,[Y("div",se,[u(l(A),{size:"19",name:"list"}),n[0]||(n[0]=Y("div",{class:"title"},"区域列表",-1))]),u(l(E),{onRegister:l(e)},{toolbar:b(()=>[u(f,{type:"primary",onClick:k,icon:X(l(K))},{default:b(()=>n[1]||(n[1]=[ee("新增")])),_:1},8,["icon"])]),bodyCell:b(({column:_,record:m})=>[_.dataIndex==="action"?(D(),te(l(F),{key:0,actions:[{label:"编辑",icon:"clarity:note-edit-line",onClick:T.bind(null,m),divider:!0},{label:"删除",icon:"ant-design:delete-outlined",color:"error",popConfirm:{title:"是否确认删除",confirm:B.bind(null,m),placement:"topRight"}}]},null,8,["actions"])):oe("",!0)]),_:1},8,["onRegister"]),u(Z,{onRegister:l(d),onSuccess:P},null,8,["onRegister"])])}}});const Ce=V(ae,[["__scopeId","data-v-874a504f"]]);export{Ce as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
import{B as g,u as C}from"./useTable-f8594a7b.js";import{T as v}from"./useForm-322569b9.js";import{S as w,r as T,l as B,s as S,_ as R}from"./index.js";import{u as k}from"./index-922f0b14.js";import{R as D,c as y,s as I}from"./drawer-e97b5bda.js";import{O as $}from"./antd-fb8ca017.js";import{d as A,l as E,a6 as a,Z as _,_ as F,$ as h,k as r,a5 as m,G as N,a4 as V,a8 as O}from"./vue-08ef39cb.js";import"./index-9a268806.js";import"./useWindowSizeFn-40274562.js";import"./onMountedOrActivated-4630d53b.js";import"./sortable.esm-15c0a34e.js";import"./copyTextToClipboard-bf4926ca.js";import"./authorityApi-15a5fdf7.js";const P=A({name:"UserPage",methods:{PlusOutlined:$,h:E},components:{SvgIcon:w,BasicTable:g,RoleDrawer:D,TableAction:v},setup(){const{createMessage:e}=B(),[o,{openDrawer:i}]=k(),[p,{reload:l}]=C({api:S,columns:y,formConfig:{labelWidth:0,schemas:I,showAdvancedButton:!1},useSearchForm:!0,showTableSetting:!1,bordered:!0,showIndexColumn:!1,canResize:!1,pagination:!1,actionColumn:{width:80,title:"操作",dataIndex:"action",fixed:void 0}});function f(){i(!0,{isUpdate:!1})}function c(t){i(!0,{record:t,isUpdate:!0})}function u(t){T(t.id).then(n=>{e.success("删除用户成功!"),l()},n=>{e.error(`删除用户失败:${n}`)})}function d(){l()}return{registerTable:p,registerDrawer:o,handleCreate:f,handleEdit:c,handleDelete:u,handleSuccess:d}}});const U={class:"header"};function x(e,o,i,p,l,f){const c=a("SvgIcon"),u=a("a-button"),d=a("TableAction"),t=a("BasicTable"),n=a("RoleDrawer");return _(),F("div",null,[h("div",U,[r(c,{size:"19",name:"list"}),o[0]||(o[0]=h("div",{class:"title"},"用户列表",-1))]),r(t,{onRegister:e.registerTable},{toolbar:m(()=>[r(u,{type:"primary",onClick:e.handleCreate,icon:e.h(e.PlusOutlined)},{default:m(()=>o[1]||(o[1]=[N("新增用户 ")])),_:1},8,["onClick","icon"])]),bodyCell:m(({column:b,record:s})=>[b.key==="action"?(_(),V(d,{key:0,actions:[{label:"编辑",icon:"clarity:note-edit-line",onClick:e.handleEdit.bind(null,s),divider:!0,disabled:s.username==="admin"},{label:"删除",icon:"ant-design:delete-outlined",color:"error",popConfirm:{title:"是否确认删除",confirm:e.handleDelete.bind(null,s),placement:"topRight"},disabled:s.username==="admin"}]},null,8,["actions"])):O("",!0)]),_:1},8,["onRegister"]),r(n,{onRegister:e.registerDrawer,onSuccess:e.handleSuccess},null,8,["onRegister","onSuccess"])])}const Y=R(P,[["render",x],["__scopeId","data-v-f25e0200"]]);export{Y as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
var P=Object.defineProperty,T=Object.defineProperties;var D=Object.getOwnPropertyDescriptors;var d=Object.getOwnPropertySymbols;var m=Object.prototype.hasOwnProperty,u=Object.prototype.propertyIsEnumerable;var c=(e,a,t)=>a in e?P(e,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[a]=t,o=(e,a)=>{for(var t in a||(a={}))m.call(a,t)&&c(e,t,a[t]);if(d)for(var t of d(a))u.call(a,t)&&c(e,t,a[t]);return e},p=(e,a)=>T(e,D(a));var f=(e,a)=>{var t={};for(var l in e)m.call(e,l)&&a.indexOf(l)<0&&(t[l]=e[l]);if(e!=null&&d)for(var l of d(e))a.indexOf(l)<0&&u.call(e,l)&&(t[l]=e[l]);return t};import{am as r}from"./index.js";const n="/v1/system/constant",V=e=>r.post({url:`${n}/`,data:e}),$=(e,a=!1)=>r.put({url:`${n}/`,data:e,params:{updateAllFields:a}}),A=e=>r.delete({url:`${n}/${e}`}),B=e=>r.get({url:`${n}/search`,params:e}),y=e=>r.get({url:`${n}/${e}`}),s={xs:{span:24},sm:{span:24},lg:{span:8}},F={span:24},i={model:"Constant",viewInPage:!1,properties:[{field:"id",label:"ID系统自动生成",defaultValue:void 0,form:{componentProps:{allowClear:!1,placeholder:"ID系统自动生成"},colProps:s,component:"InputNumber",rules:[{required:!0,message:"请输入ID系统自动生成"}]},table:{}},{field:"code",label:"编码",defaultValue:void 0,form:{componentProps:{allowClear:!1,placeholder:"编码"},colProps:s,component:"Input",rules:[{required:!0,message:"请输入编码!"}]},table:{}},{field:"name",label:"名称",defaultValue:void 0,form:{componentProps:{allowClear:!1,placeholder:"名称"},colProps:s,component:"Input",rules:[{required:!0,message:"请输入名称!"}]},table:{}},{field:"description",label:"描述",defaultValue:void 0,form:{componentProps:{allowClear:!1,placeholder:"描述"},component:"InputTextArea",colProps:{span:24},rules:[{required:!0,message:"请输入描述!"}]},table:{}},{field:"createTime",label:"CreateTime",defaultValue:void 0,form:{colProps:s,componentProps:{allowClear:!1,placeholder:["开始时间","结束时间"],format:"YYYY-MM-DD",valueFormat:"YYYY-MM-DD",showTime:!1},component:"RangePicker",rules:[{required:!0,message:"请输入CreateTime"}]},table:{}},{field:"updateTime",label:"UpdateTime",defaultValue:void 0,form:{colProps:s,componentProps:{allowClear:!1,placeholder:["开始时间","结束时间"],format:"YYYY-MM-DD",valueFormat:"YYYY-MM-DD",showTime:!1},component:"RangePicker",rules:[{required:!0,message:"请输入UpdateTime"}]},table:{}}]},M=["name"],Y=["code","name","value","description"],v=["code","name","value","description","createTime","updateTime"],h=["code","name","value","description","createTime","updateTime"],g=new Map(M.map((e,a)=>[e,a])),k=i.properties.filter(e=>M.includes(e.field)).map(l=>{var{field:e,label:a,form:w}=l,t=f(w,[]);return p(o({field:e,label:a,defaultValue:void 0},t),{required:!1,rules:[{required:!1}]})}).sort((e,a)=>{const t=g.get(e.field),l=g.get(a.field);return t-l}),x=new Map(Y.map((e,a)=>[e,a])),R=i.properties.filter(e=>Y.includes(e.field)).map(({field:e,label:a,defaultValue:t,form:l})=>p(o({field:e,label:a,defaultValue:t},l),{colProps:F})).sort((e,a)=>{const t=x.get(e.field),l=x.get(a.field);return t-l}),I=new Map(v.map((e,a)=>[e,a])),S=i.properties.filter(e=>v.includes(e.field)).map(({field:e,label:a,table:t})=>o({dataIndex:e,title:a},t)).sort((e,a)=>{const t=I.get(e.dataIndex),l=I.get(a.dataIndex);return t-l}),b=new Map(h.map((e,a)=>[e,a])),U=i.properties.filter(e=>h.includes(e.field)).map(({field:e,label:a,table:t})=>o({dataIndex:e,title:a},t)).sort((e,a)=>{const t=b.get(e.dataIndex),l=b.get(a.dataIndex);return t-l});export{k as a,V as b,S as c,U as d,R as f,y as g,A as r,B as s,$ as u};

View File

@ -1 +1 @@
<!doctype html><html lang="en" id="htmlRoot"><head><script crossorigin src="./_app.config.js"></script><meta charset="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/><meta name="renderer" content="webkit"/><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=0"/><title>智能视频监控平台</title><link rel="icon" href="./favicon.ico"/><style></style><script type="module" crossorigin src="./assets/index.js"></script><link rel="modulepreload" crossorigin href="./assets/vue-08ef39cb.js"><link rel="modulepreload" crossorigin href="./assets/antd-fb8ca017.js"><link rel="stylesheet" href="./assets/index-b5b5c2ac.css"></head><body><div id="app"><style>html[data-theme=dark] .app-loading{background-color:transparent}html[data-theme=dark] .app-loading .app-loading-title{color:transparent}.app-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;background-color:transparent}.app-loading .app-loading-wrap{display:flex;position:absolute;top:50%;left:50%;flex-direction:column;align-items:center;justify-content:center;transform:translate3d(-50%,-50%,0)}.app-loading .dots{display:flex;align-items:center;justify-content:center;padding:98px}.app-loading .app-loading-title{display:flex;align-items:center;justify-content:center;margin-top:30px;color:rgb(0 0 0 / 85%);font-size:30px}.app-loading .app-loading-logo{display:block;width:90px;margin:0 auto;margin-bottom:20px}.dot{display:inline-block;position:relative;box-sizing:border-box;width:48px;height:48px;margin-top:30px;transform:rotate(45deg);animation:ant-rotate 1.2s infinite linear;font-size:32px}.dot i{display:block;position:absolute;width:20px;height:20px;transform:scale(.75);transform-origin:50% 50%;animation:ant-spin-move 1s infinite linear alternate;border-radius:100%;opacity:.3;background-color:#0065cc}.dot i:first-child{top:0;left:0}.dot i:nth-child(2){top:0;right:0;animation-delay:.4s}.dot i:nth-child(3){right:0;bottom:0;animation-delay:.8s}.dot i:nth-child(4){bottom:0;left:0;animation-delay:1.2s}@keyframes ant-rotate{to{transform:rotate(405deg)}}@keyframes ant-rotate{to{transform:rotate(405deg)}}@keyframes ant-spin-move{to{opacity:1}}@keyframes ant-spin-move{to{opacity:1}}</style><div class="app-loading"><div class="app-loading-wrap"><img src="./logo.png" class="app-loading-logo" alt="Logo"/></div></div></div></body></html> <!doctype html><html lang="en" id="htmlRoot"><head><script crossorigin src="./_app.config.js"></script><meta charset="UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/><meta name="renderer" content="webkit"/><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=0"/><title>中核集团预埋件检测系统</title><link rel="icon" href="./favicon.ico"/><style>#app{background-color:#0d1540}</style><script type="module" crossorigin src="./assets/index.js"></script><link rel="modulepreload" crossorigin href="./assets/vue-08ef39cb.js"><link rel="modulepreload" crossorigin href="./assets/antd-fb8ca017.js"><link rel="stylesheet" href="./assets/index-50de0f48.css"></head><body><div id="app"><style>html[data-theme=dark] .app-loading{background-color:transparent}html[data-theme=dark] .app-loading .app-loading-title{color:transparent}.app-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;background-color:transparent}.app-loading .app-loading-wrap{display:flex;position:absolute;top:50%;left:50%;flex-direction:column;align-items:center;justify-content:center;transform:translate3d(-50%,-50%,0)}.app-loading .dots{display:flex;align-items:center;justify-content:center;padding:98px}.app-loading .app-loading-title{display:flex;align-items:center;justify-content:center;margin-top:30px;color:rgb(0 0 0 / 85%);font-size:30px}.app-loading .app-loading-logo{display:block;width:90px;margin:0 auto;margin-bottom:20px}.dot{display:inline-block;position:relative;box-sizing:border-box;width:48px;height:48px;margin-top:30px;transform:rotate(45deg);animation:ant-rotate 1.2s infinite linear;font-size:32px}.dot i{display:block;position:absolute;width:20px;height:20px;transform:scale(.75);transform-origin:50% 50%;animation:ant-spin-move 1s infinite linear alternate;border-radius:100%;opacity:.3;background-color:#0065cc}.dot i:first-child{top:0;left:0}.dot i:nth-child(2){top:0;right:0;animation-delay:.4s}.dot i:nth-child(3){right:0;bottom:0;animation-delay:.8s}.dot i:nth-child(4){bottom:0;left:0;animation-delay:1.2s}@keyframes ant-rotate{to{transform:rotate(405deg)}}@keyframes ant-rotate{to{transform:rotate(405deg)}}@keyframes ant-spin-move{to{opacity:1}}@keyframes ant-spin-move{to{opacity:1}}</style><div class="app-loading"><div class="app-loading-wrap"><img src="./logo.png" class="app-loading-logo" alt="Logo"/></div></div></div></body></html>

View File

@ -1,159 +1,8 @@
using System; using ReactiveUI;
using ReactiveUI;
namespace detect.gui.Models; namespace detect.gui.Models;
public class DeviceModel : ReactiveObject public class DeviceModel : ReactiveObject
{ {
private long? _id;
public long? Id
{
get => _id;
set => this.RaiseAndSetIfChanged(ref _id, value);
}
private string? _name;
public string? Name
{
get => _name;
set => this.RaiseAndSetIfChanged(ref _name, value);
}
private string? _deviceIp;
public string? DeviceIp
{
get => _deviceIp;
set => this.RaiseAndSetIfChanged(ref _deviceIp, value);
}
private string? _devicePort;
public string? DevicePort
{
get => _devicePort;
set => this.RaiseAndSetIfChanged(ref _devicePort, value);
}
private string? _deviceUsername;
public string? DeviceUsername
{
get => _deviceUsername;
set => this.RaiseAndSetIfChanged(ref _deviceUsername, value);
}
private string? _devicePassword;
public string? DevicePassword
{
get => _devicePassword;
set => this.RaiseAndSetIfChanged(ref _devicePassword, value);
}
private string? _deviceType;
public string? DeviceType
{
get => _deviceType;
set => this.RaiseAndSetIfChanged(ref _deviceType, value);
}
private string? _softwareVersion;
public string? SoftwareVersion
{
get => _softwareVersion;
set => this.RaiseAndSetIfChanged(ref _softwareVersion, value);
}
private string? _firmwareVersion;
public string? FirmwareVersion
{
get => _firmwareVersion;
set => this.RaiseAndSetIfChanged(ref _firmwareVersion, value);
}
private string? _algorithmVersion;
public string? AlgorithmVersion
{
get => _algorithmVersion;
set => this.RaiseAndSetIfChanged(ref _algorithmVersion, value);
}
private string? _modelVersion;
public string? ModelVersion
{
get => _modelVersion;
set => this.RaiseAndSetIfChanged(ref _modelVersion, value);
}
private string? _cameraIp;
public string? CameraIp
{
get => _cameraIp;
set => this.RaiseAndSetIfChanged(ref _cameraIp, value);
}
private string? _cameraUsername;
public string? CameraUsername
{
get => _cameraUsername;
set => this.RaiseAndSetIfChanged(ref _cameraUsername, value);
}
private string? _cameraPassword;
public string? CameraPassword
{
get => _cameraPassword;
set => this.RaiseAndSetIfChanged(ref _cameraPassword, value);
}
private string? _cameraRtsp;
public string? CameraRtsp
{
get => _cameraRtsp;
set => this.RaiseAndSetIfChanged(ref _cameraRtsp, value);
}
private string? _assayType;
public string? AssayType
{
get => _assayType;
set => this.RaiseAndSetIfChanged(ref _assayType, value);
}
private DateTime? _createTime;
public DateTime? CreateTime
{
get => _createTime;
set => this.RaiseAndSetIfChanged(ref _createTime, value);
}
private DateTime? _updateTime;
public DateTime? UpdateTime
{
get => _updateTime;
set => this.RaiseAndSetIfChanged(ref _updateTime, value);
}
private bool _isSelected;
public bool IsSelected
{
get => _isSelected;
set => this.RaiseAndSetIfChanged(ref _isSelected, value);
}
} }

View File

@ -8,20 +8,35 @@ using Newtonsoft.Json;
namespace detect.gui.Models.Entities; namespace detect.gui.Models.Entities;
[Table("Authority")] [Table("dat_authority")]
[Index(nameof(Name), IsUnique = true)] [Index(nameof(Name), IsUnique = true)]
[Index(nameof(ParentId), IsUnique = false)] [Index(nameof(ParentId), IsUnique = false)]
public class AuthorityEntity public class AuthorityEntity
{ {
[Key] public long? Id { get; set; } [Key]
[JsonProperty(PropertyName = "id")]
[Column("id")]
public long? Id { get; set; }
[StringLength(255), Comment("名称")] public string? Name { get; set; } [StringLength(255), Comment("名称")]
[JsonProperty(PropertyName = "name")]
[Column("name")]
public string? Name { get; set; }
[DefaultValue(0)] public long? ParentId { get; set; } [DefaultValue(0)]
[JsonProperty(PropertyName = "parentId")]
[Column("parent_id")]
public long? ParentId { get; set; }
[Comment("创建时间")] public DateTime? CreateTime { get; set; } [Comment("创建时间")]
[JsonProperty(PropertyName = "createTime")]
[Column("create_time")]
public DateTime? CreateTime { get; set; }
[Comment("更新时间")] public DateTime? UpdateTime { get; set; } [Comment("更新时间")]
[JsonProperty(PropertyName = "updateTime")]
[Column("update_time")]
public DateTime? UpdateTime { get; set; }
[NotMapped] [NotMapped]
[JsonIgnore] [JsonIgnore]

View File

@ -3,30 +3,62 @@ using System.ComponentModel;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
namespace detect.gui.Models.Entities; namespace detect.gui.Models.Entities;
[Table("DetectTask")] [Table("dat_task")]
[Index(nameof(StartTime), IsUnique = false)] [Index(nameof(DeviceSn), IsUnique = false)]
public class DetectTaskEntity public class DetectTaskEntity
{ {
[Key] public long? Id { get; set; } [Key]
[JsonProperty(PropertyName = "id")]
[Column("id")]
public long? Id { get; set; }
[StringLength(255), Comment("名称")] public string? Name { get; set; } [StringLength(255), Comment("设备序列号")]
[JsonProperty(PropertyName = "deviceSn")]
[Column("device_sn")]
public string? DeviceSn { get; set; }
[Comment("开始时间")] public DateTime? StartTime { get; set; } [StringLength(255), Comment("名称")]
[JsonProperty(PropertyName = "name")]
[Column("name")]
public string? Name { get; set; }
[Comment("结束时间")] public DateTime? EndTime { get; set; } [Comment("开始时间")]
[JsonProperty(PropertyName = "startTime")]
[Column("start_time")]
public DateTime? StartTime { get; set; }
[StringLength(2000), Comment("参数")] public string? ParamJson { get; set; } [Comment("结束时间")]
[JsonProperty(PropertyName = "endTime")]
[Column("end_time")]
public DateTime? EndTime { get; set; }
[StringLength(2000), Comment("结果")] public string? ResultJson { get; set; } [StringLength(2000), Comment("参数")]
[JsonProperty(PropertyName = "paramJson")]
[Column("param_json")]
public string? ParamJson { get; set; }
[StringLength(2000), Comment("结果")]
[JsonProperty(PropertyName = "resultJson")]
[Column("result_json")]
public string? ResultJson { get; set; }
[Comment("状态(0.未开始 1.进行中 2.已结束 3.暂停)")] [Comment("状态(0.未开始 1.进行中 2.已结束 3.暂停)")]
[DefaultValue(0)] [DefaultValue(0)]
[JsonProperty(PropertyName = "state")]
[Column("state")]
public int State { get; set; } public int State { get; set; }
[Comment("创建时间")] public DateTime? CreateTime { get; set; } [Comment("创建时间")]
[JsonProperty(PropertyName = "createTime")]
[Column("create_time")]
public DateTime? CreateTime { get; set; }
[Comment("更新时间")] public DateTime? UpdateTime { get; set; } [Comment("更新时间")]
[JsonProperty(PropertyName = "updateTime")]
[Column("update_time")]
public DateTime? UpdateTime { get; set; }
} }

View File

@ -0,0 +1,37 @@
using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
namespace detect.gui.Models.Entities;
[Table("dat_task_log")]
[Index(nameof(TaskId), IsUnique = false)]
public class DetectTaskLogEntity
{
[Key]
[JsonProperty(PropertyName = "id")]
[Column("id")]
public long? Id { get; set; }
[StringLength(255), Comment("设备序列号")]
[JsonProperty(PropertyName = "deviceSn")]
[Column("device_sn")]
public string? DeviceSn { get; set; }
[JsonProperty(PropertyName = "taskId")]
[Column("task_id")]
public long? TaskId { get; set; }
[StringLength(255), Comment("内容")]
[JsonProperty(PropertyName = "content")]
[Column("content")]
public string? Content { get; set; }
[Comment("创建时间")]
[JsonProperty(PropertyName = "createTime")]
[Column("create_time")]
public DateTime? CreateTime { get; set; }
}

View File

@ -0,0 +1,36 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
namespace detect.gui.Models.Entities;
[Table("dat_task_progress")]
[Index(nameof(TaskId), IsUnique = false)]
public class DetectTaskProgressEntity
{
[Key]
[JsonProperty(PropertyName = "id")]
[Column("id")]
public long? Id { get; set; }
[StringLength(255), Comment("设备序列号")]
[JsonProperty(PropertyName = "deviceSn")]
[Column("device_sn")]
public string? DeviceSn { get; set; }
[JsonProperty(PropertyName = "taskId")]
[Column("task_id")]
public long? TaskId { get; set; }
[StringLength(255), Comment("过程数据")]
[JsonProperty(PropertyName = "taskDataJson")]
[Column("task_data_json")]
public string? TaskDataJson { get; set; }
[Comment("创建时间")]
[JsonProperty(PropertyName = "createTime")]
[Column("create_time")]
public DateTime? CreateTime { get; set; }
}

View File

@ -3,52 +3,42 @@ using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using detect.gui.Commons; using detect.gui.Commons;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
namespace detect.gui.Models.Entities; namespace detect.gui.Models.Entities;
[Table("Device")] [Table("dat_device")]
[Index(nameof(Name), IsUnique = true)] [Index(nameof(Name), IsUnique = true)]
public class DeviceEntity public class DeviceEntity
{ {
[Key] public long? Id { get; set; } [Key]
[JsonProperty(PropertyName = "id")]
[Column("id")]
public long? Id { get; set; }
[StringLength(255), Comment("设备名称")] public string? Name { get; set; } [StringLength(255), Comment("设备名称")]
[JsonProperty(PropertyName = "name")]
[Column("name")]
public string? Name { get; set; }
[StringLength(255), Comment("设备序列号")]
[JsonProperty(PropertyName = "deviceSn")]
[Column("device_sn")]
public string? DeviceSn { get; set; }
[StringLength(20), Comment("设备IP地址")] [StringLength(20), Comment("设备IP地址")]
[RegularExpression(RegexHelper.IpV4, ErrorMessage = "IpV4: {0}格式非法")] [RegularExpression(RegexHelper.IpV4, ErrorMessage = "IpV4: {0}格式非法")]
[JsonProperty(PropertyName = "deviceIp")]
[Column("device_ip")]
public string? DeviceIp { get; set; } public string? DeviceIp { get; set; }
[StringLength(6), Comment("设备端口")] public string? DevicePort { get; set; } [Comment("创建时间")]
[JsonProperty(PropertyName = "createTime")]
[Column("create_time")]
public DateTime? CreateTime { get; set; }
[StringLength(255), Comment("用户名")] public string? DeviceUsername { get; set; } [Comment("更新时间")]
[JsonProperty(PropertyName = "updateTime")]
[StringLength(255), Comment("密码")] public string? DevicePassword { get; set; } [Column("update_time")]
public DateTime? UpdateTime { get; set; }
[StringLength(255), Comment("设备类型")] public string? DeviceType { get; set; }
[StringLength(50), Comment("软件版本")] public string? SoftwareVersion { get; set; }
[StringLength(50), Comment("固件版本")] public string? FirmwareVersion { get; set; }
[StringLength(50), Comment("算法版本")] public string? AlgorithmVersion { get; set; }
[StringLength(50), Comment("模型版本")] public string? ModelVersion { get; set; }
[StringLength(20), Comment("相机IP地址")]
[RegularExpression(RegexHelper.IpV4, ErrorMessage = "IpV4: {0}格式非法")]
public string? CameraIp { get; set; }
[StringLength(255), Comment("相机用户名")] public string? CameraUsername { get; set; }
[StringLength(255), Comment("相机密码")] public string? CameraPassword { get; set; }
[StringLength(255), Comment("相机rtsp完整地址")]
[RegularExpression(RegexHelper.Url, ErrorMessage = "Rtsp: {0}格式非法")]
public string? CameraRtsp { get; set; }
[StringLength(255), Comment("检测类型")] public string? AssayType { get; set; }
[Comment("创建时间")] public DateTime? CreateTime { get; set; }
[Comment("更新时间")] public DateTime? UpdateTime { get; set; }
} }

View File

@ -2,23 +2,43 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Newtonsoft.Json;
namespace detect.gui.Models.Entities; namespace detect.gui.Models.Entities;
[Table("Log")] [Table("dat_log")]
[Index(nameof(UserId), IsUnique = false)] [Index(nameof(UserId), IsUnique = false)]
[Index(nameof(CreateTime), IsUnique = false)] [Index(nameof(CreateTime), IsUnique = false)]
public class LogEntity public class LogEntity
{ {
[Key] public long? Id { get; set; } [JsonProperty(PropertyName = "id")]
[Column("id")]
[Key]
public long? Id { get; set; }
[StringLength(255), Comment("描述")] public string? Description { get; set; } [JsonProperty(PropertyName = "description")]
[Column("description")]
[StringLength(255), Comment("描述")]
public string? Description { get; set; }
[Comment("操作人ID")] public long? UserId { get; set; } [JsonProperty(PropertyName = "userId")]
[Column("user_id")]
[Comment("操作人ID")]
public long? UserId { get; set; }
[StringLength(255), Comment("操作人")] public string? Username { get; set; } [StringLength(20), Comment("操作人")]
[JsonProperty(PropertyName = "username")]
[Column("username")]
public string? Username { get; set; }
[StringLength(255), Comment("说明")] public string? Remark { get; set; } [StringLength(255), Comment("说明")]
[JsonProperty(PropertyName = "remark")]
[Column("remark")]
public string? Remark { get; set; }
[Comment("创建时间")] public DateTime? CreateTime { get; set; } [Comment("创建时间")]
[JsonProperty(PropertyName = "createTime")]
[Column("create_time")]
public DateTime? CreateTime { get; set; }
} }

View File

@ -1,17 +1,26 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
namespace detect.gui.Models.Entities; namespace detect.gui.Models.Entities;
[Table("UserAuthority")] [Table("dat_user_authority")]
[Index(nameof(UserId), IsUnique = false)] [Index(nameof(UserId), IsUnique = false)]
[Index(nameof(AuthorityId), IsUnique = false)] [Index(nameof(AuthorityId), IsUnique = false)]
public class UserAuthorityEntity public class UserAuthorityEntity
{ {
[Key] public long? Id { get; set; } [Key]
[JsonProperty(PropertyName = "id")]
[Column("id")]
public long? Id { get; set; }
[JsonProperty(PropertyName = "userId")]
[Column("user_id")]
public long? UserId { get; set; } public long? UserId { get; set; }
[JsonProperty(PropertyName = "authorityId")]
[Column("authority_id")]
public long? AuthorityId { get; set; } public long? AuthorityId { get; set; }
} }

View File

@ -3,24 +3,43 @@ using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
namespace detect.gui.Models.Entities; namespace detect.gui.Models.Entities;
[Table("User")] [Table("dat_user")]
[Index(nameof(Username), IsUnique = true)] [Index(nameof(Username), IsUnique = true)]
public class UserEntity public class UserEntity
{ {
[Key] public long? Id { get; set; } [Key]
[JsonProperty(PropertyName = "id")]
[Column("id")]
public long? Id { get; set; }
[NotMapped] public List<AuthorityEntity>? AuthorityList { get; set; } [NotMapped] public List<AuthorityEntity>? AuthorityList { get; set; }
[StringLength(255), Comment("姓名")] public string? RealName { get; set; } [StringLength(255), Comment("姓名")]
[JsonProperty(PropertyName = "realName")]
[Column("real_name")]
public string? RealName { get; set; }
[StringLength(255), Comment("用户名")] public string? Username { get; set; } [StringLength(255), Comment("用户名")]
[JsonProperty(PropertyName = "username")]
[Column("username")]
public string? Username { get; set; }
[StringLength(255), Comment("密码")] public string? Password { get; set; } [StringLength(255), Comment("密码")]
[JsonProperty(PropertyName = "password")]
[Column("password")]
public string? Password { get; set; }
[Comment("创建时间")] public DateTime? CreateTime { get; set; } [Comment("创建时间")]
[JsonProperty(PropertyName = "createTime")]
[Column("create_time")]
public DateTime? CreateTime { get; set; }
[Comment("更新时间")] public DateTime? UpdateTime { get; set; } [Comment("更新时间")]
[JsonProperty(PropertyName = "updateTime")]
[Column("update_time")]
public DateTime? UpdateTime { get; set; }
} }

View File

@ -1,70 +0,0 @@
using System;
using System.Reactive;
using Avalonia.Collections;
using ReactiveUI;
namespace detect.gui.Models;
public class RegionModel : ReactiveObject
{
private long? _id;
public long? Id
{
get => _id;
set => this.RaiseAndSetIfChanged(ref _id, value);
}
private string? _name;
public string? Name
{
get => _name;
set => this.RaiseAndSetIfChanged(ref _name, value);
}
private string? _code;
public string? Code
{
get => _code;
set => this.RaiseAndSetIfChanged(ref _code, value);
}
private DateTime? _createTime;
public DateTime? CreateTime
{
get => _createTime;
set => this.RaiseAndSetIfChanged(ref _createTime, value);
}
private DateTime? _updateTime;
public DateTime? UpdateTime
{
get => _updateTime;
set => this.RaiseAndSetIfChanged(ref _updateTime, value);
}
private AvaloniaList<DeviceModel> _deviceList = [];
public AvaloniaList<DeviceModel> DeviceList
{
get => _deviceList;
set => this.RaiseAndSetIfChanged(ref _deviceList, value);
}
private bool _isExpand;
public bool IsExpand
{
get => _isExpand;
set => this.RaiseAndSetIfChanged(ref _isExpand, value);
}
public ReactiveCommand<Unit, bool> ExpandCommand { get; }
public RegionModel()
{
ExpandCommand = ReactiveCommand.Create(() => IsExpand = !IsExpand);
}
}

View File

@ -28,7 +28,7 @@ public class DetectDeviceService : ServiceBase<DeviceEntity>
return new ApiResponse<List<DeviceEntity>?>(0, "success", items); return new ApiResponse<List<DeviceEntity>?>(0, "success", items);
} }
public ApiResponse<PagedResult<DeviceEntity>> Search(int? regionId, string? name = "", string? ip = "", int pageNum = 1, int pageSize = 10) public ApiResponse<PagedResult<DeviceEntity>> Search(string? name = "", string? ip = "", int pageNum = 1, int pageSize = 10)
{ {
Expression<Func<DeviceEntity,bool>> filter = x => (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(x.Name) || x.Name.Contains(name)) Expression<Func<DeviceEntity,bool>> filter = x => (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(x.Name) || x.Name.Contains(name))
&& (string.IsNullOrEmpty(ip) || string.IsNullOrEmpty(x.DeviceIp) || x.DeviceIp.Contains(ip)); && (string.IsNullOrEmpty(ip) || string.IsNullOrEmpty(x.DeviceIp) || x.DeviceIp.Contains(ip));

View File

@ -11,7 +11,6 @@ public class DetectLogService : ServiceBase<LogEntity>
{ {
public ApiResponse<PagedResult<LogEntity>> Search(int? userId, string? description = "", int pageNum = 1, int pageSize = 10) public ApiResponse<PagedResult<LogEntity>> Search(int? userId, string? description = "", int pageNum = 1, int pageSize = 10)
{ {
// var items = FindList(BuildSearchPredicate(name, code), "CreateTime", false)
Expression<Func<LogEntity,bool>> filter = x => Expression<Func<LogEntity,bool>> filter = x =>
(userId == null || x.UserId == null || x.UserId == userId && (userId == null || x.UserId == null || x.UserId == userId &&
(string.IsNullOrEmpty(description) || string.IsNullOrEmpty(x.Description) || x.Description.Contains(description))); (string.IsNullOrEmpty(description) || string.IsNullOrEmpty(x.Description) || x.Description.Contains(description)));

View File

@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using detect.gui.Models;
using detect.gui.Models.Entities;
namespace detect.gui.Services.Detect;
public class DetectTaskLogService : ServiceBase<DetectTaskLogEntity>
{
public ApiResponse<DetectTaskLogEntity?> ListById(long id)
{
var item = Find(x => x.Id == id);
return new ApiResponse<DetectTaskLogEntity?>(0, "success", item);
}
public ApiResponse<List<DetectTaskLogEntity>?> ListAll()
{
var items = FindList(x => true, "Id", true)
.ToList();
return new ApiResponse<List<DetectTaskLogEntity>?>(0, "success", items);
}
public ApiResponse<PagedResult<DetectTaskLogEntity>> Search(long? taskId = -1, int pageNum = 1, int pageSize = 10)
{
Expression<Func<DetectTaskLogEntity,bool>> filter = x => taskId == -1 || x.TaskId == taskId;
var total = Count(filter);
var items = FindList(filter, "CreateTime", false)
.Skip((pageNum - 1) * pageSize).Take(pageSize).ToList();
var pagedResult = new PagedResult<DetectTaskLogEntity>(pageNum, pageSize, total, items);
return new ApiResponse<PagedResult<DetectTaskLogEntity>>(0, "success", pagedResult);
}
public ApiResponse<DetectTaskLogEntity?> AddData(DetectTaskLogEntity entity)
{
var data = Add(entity);
return new ApiResponse<DetectTaskLogEntity?>(0, "success", data);
}
public ApiResponse<DetectTaskLogEntity?> UpdateData(DetectTaskLogEntity entity)
{
return new ApiResponse<DetectTaskLogEntity?>(Update(entity) ? 0 : -1, "success", null);
}
public ApiResponse<DetectTaskLogEntity?> DeleteById(long id)
{
Delete(x => x.Id == id);
return new ApiResponse<DetectTaskLogEntity?>(0, "success", null);
}
public ApiResponse<DetectTaskLogEntity?> DeleteData(DetectTaskLogEntity entity)
{
Delete(entity);
return new ApiResponse<DetectTaskLogEntity?>(0, "success", null);
}
}

View File

@ -0,0 +1,57 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using detect.gui.Models;
using detect.gui.Models.Entities;
namespace detect.gui.Services.Detect;
public class DetectTaskProgressService : ServiceBase<DetectTaskProgressEntity>
{
public ApiResponse<DetectTaskProgressEntity?> ListById(long id)
{
var item = Find(x => x.Id == id);
return new ApiResponse<DetectTaskProgressEntity?>(0, "success", item);
}
public ApiResponse<List<DetectTaskProgressEntity>?> ListAll()
{
var items = FindList(x => true, "Id", true)
.ToList();
return new ApiResponse<List<DetectTaskProgressEntity>?>(0, "success", items);
}
public ApiResponse<PagedResult<DetectTaskProgressEntity>> Search(long? taskId = -1, int pageNum = 1, int pageSize = 10)
{
Expression<Func<DetectTaskProgressEntity,bool>> filter = x => taskId == -1 || x.TaskId == taskId;
var total = Count(filter);
var items = FindList(filter, "CreateTime", false)
.Skip((pageNum - 1) * pageSize).Take(pageSize).ToList();
var pagedResult = new PagedResult<DetectTaskProgressEntity>(pageNum, pageSize, total, items);
return new ApiResponse<PagedResult<DetectTaskProgressEntity>>(0, "success", pagedResult);
}
public ApiResponse<DetectTaskProgressEntity?> AddData(DetectTaskProgressEntity entity)
{
var data = Add(entity);
return new ApiResponse<DetectTaskProgressEntity?>(0, "success", data);
}
public ApiResponse<DetectTaskProgressEntity?> UpdateData(DetectTaskProgressEntity entity)
{
return new ApiResponse<DetectTaskProgressEntity?>(Update(entity) ? 0 : -1, "success", null);
}
public ApiResponse<DetectTaskProgressEntity?> DeleteById(long id)
{
Delete(x => x.Id == id);
return new ApiResponse<DetectTaskProgressEntity?>(0, "success", null);
}
public ApiResponse<DetectTaskProgressEntity?> DeleteData(DetectTaskProgressEntity entity)
{
Delete(entity);
return new ApiResponse<DetectTaskProgressEntity?>(0, "success", null);
}
}

View File

@ -55,28 +55,28 @@ public class DeviceClientService
/// <returns></returns> /// <returns></returns>
public IDeviceClient? ConnectDevice(DeviceEntity device) public IDeviceClient? ConnectDevice(DeviceEntity device)
{ {
if (string.IsNullOrEmpty(device.DeviceIp) || string.IsNullOrEmpty(device.DevicePort)) // if (string.IsNullOrEmpty(device.DeviceIp) || string.IsNullOrEmpty(device.DevicePort))
{ // {
Log.Warning("设备【{Name}】没有配置ip和端口不连接", device.Name); // Log.Warning("设备【{Name}】没有配置ip和端口不连接", device.Name);
return null; // return null;
} // }
_deviceClients.TryGetValue(device.Id!.Value, out var deviceClient); _deviceClients.TryGetValue(device.Id!.Value, out var deviceClient);
if (deviceClient == null) // if (deviceClient == null)
{ // {
deviceClient = new DeviceClientSocket(device.DeviceIp!, Convert.ToInt32(device.DevicePort)); // deviceClient = new DeviceClientSocket(device.DeviceIp!, Convert.ToInt32(device.DevicePort));
deviceClient.ConnectAsync(); // deviceClient.ConnectAsync();
_deviceClients.Add(device.Id!.Value, deviceClient); // _deviceClients.Add(device.Id!.Value, deviceClient);
} // }
else // else
{ // {
if (!deviceClient.Connected()) // if (!deviceClient.Connected())
{ // {
deviceClient.ConnectAsync(); // deviceClient.ConnectAsync();
} // }
} // }
//
deviceClient.DeviceEvent += DeviceClientOnDeviceEvent; // deviceClient.DeviceEvent += DeviceClientOnDeviceEvent;
//
return deviceClient; return deviceClient;
} }

View File

@ -3,10 +3,4 @@
namespace detect.gui.ViewModels; namespace detect.gui.ViewModels;
public class DetectTaskViewModel : RoutableViewModelBase<DetectTaskModel> public class DetectTaskViewModel : RoutableViewModelBase<DetectTaskModel>
{ { }
public DetectTaskViewModel()
{
}
}

View File

@ -7,10 +7,4 @@ using ReactiveUI;
namespace detect.gui.ViewModels; namespace detect.gui.ViewModels;
public class DeviceViewModel : RoutableViewModelBase<DeviceModel> public class DeviceViewModel : RoutableViewModelBase<DeviceModel>
{ { }
public DeviceViewModel()
{
}
}

View File

@ -8,53 +8,4 @@ namespace detect.gui.ViewModels;
public class HomeViewModel : RoutableViewModelBase<HomeModel> public class HomeViewModel : RoutableViewModelBase<HomeModel>
{ {
// private Home.TaskViewModel _homeTask;
//
// public Home.TaskViewModel HomeTask
// {
// get => _homeTask;
// set => this.RaiseAndSetIfChanged(ref _homeTask, value);
// }
//
// private Home.AppTypeViewModel _homeAppType;
//
// public Home.AppTypeViewModel HomeAppType
// {
// get => _homeAppType;
// set => this.RaiseAndSetIfChanged(ref _homeAppType, value);
// }
//
// /// <summary>
// /// 任务对象
// /// </summary>
// private TaskModel? _taskItem;
// public TaskModel? TaskItem
// {
// get => _taskItem;
// protected set => this.RaiseAndSetIfChanged(ref _taskItem, value);
// }
public HomeViewModel()
{
// _homeTask = new Home.TaskViewModel();
// _homeAppType = new Home.AppTypeViewModel();
//
// this.WhenAnyValue(x => x.RootViewModel!.Router.CurrentViewModel)
// .Subscribe(v =>
// {
// HomeTask.CanRun = v is not IObservable<HomeViewModel>;
// HomeAppType.CanRun = v is not IObservable<HomeViewModel>;
// });
}
// public void CreateTaskItem(AppTemplateModel? template)
// {
// TaskItem = new TaskModel
// {
// AppTemplate = template,
// AppTemplateId = template?.Id,
// Name = "新的任务-"+DateTime.Now.ToString("yyyyMMddHHmmss"),
// State = 0,
// };
// }
} }

View File

@ -4,9 +4,4 @@ namespace detect.gui.ViewModels;
public class LogViewModel : RoutableViewModelBase<LogModel> public class LogViewModel : RoutableViewModelBase<LogModel>
{ {
public LogViewModel()
{
}
} }

View File

@ -1,5 +1,4 @@
using System; using System;
using System.Reactive;
using ReactiveUI; using ReactiveUI;
using Serilog; using Serilog;
using xwd.utils; using xwd.utils;

View File

@ -3,11 +3,8 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModels="clr-namespace:detect.gui.ViewModels" xmlns:viewModels="clr-namespace:detect.gui.ViewModels"
xmlns:wv="clr-namespace:WebViewControl;assembly=WebViewControl.Avalonia"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="detect.gui.Views.DeviceView" x:Class="detect.gui.Views.DeviceView"
x:DataType="viewModels:DeviceViewModel"> x:DataType="viewModels:DeviceViewModel">
<Grid> <Border x:Name="WebView" Loaded="OnLoaded" />
<TextBlock Text="Device View"></TextBlock>
</Grid>
</UserControl> </UserControl>

View File

@ -1,5 +1,8 @@
using Avalonia.Markup.Xaml; using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI; using Avalonia.ReactiveUI;
using detect.gui.Commons;
using detect.gui.ViewModels; using detect.gui.ViewModels;
using ReactiveUI; using ReactiveUI;
@ -17,4 +20,21 @@ public partial class DeviceView : ReactiveUserControl<DeviceViewModel>
{ {
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
} }
private void OnLoaded(object? sender, RoutedEventArgs e)
{
// this.GetParent<MainView>()!.WebWindow.ParentContent = this;
this.GetParent<MainView>()!.WebWindow.SetAddress(1);
}
//
// private void OnUnloaded(object? sender, RoutedEventArgs e)
// {
// this.GetParent<MainView>()!.WebWindow.Hide();
// }
//
// private void OnSizeChanged(object? sender, SizeChangedEventArgs e)
// {
// if (!this.GetParent<MainView>()!.WebWindow.IsVisible) return;
// this.GetParent<MainView>()!.WebWindow.InitUI();
// }
} }

View File

@ -85,7 +85,7 @@
<Binding Path="#Sidebar.Bounds.Height" /> <Binding Path="#Sidebar.Bounds.Height" />
</MultiBinding> </MultiBinding>
</Border.Margin> </Border.Margin>
<reactiveUi:RoutedViewHost Router="{Binding Router}"> <reactiveUi:RoutedViewHost Router="{Binding Router}" Name="RoutedViewHost">
<reactiveUi:RoutedViewHost.DefaultContent /> <reactiveUi:RoutedViewHost.DefaultContent />
</reactiveUi:RoutedViewHost> </reactiveUi:RoutedViewHost>
</Border> </Border>

View File

@ -2,12 +2,12 @@ using System;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using detect.gui.Classes; using detect.gui.Classes;
using detect.gui.ViewModels; using detect.gui.ViewModels;
using detect.gui.Views;
using Avalonia; using Avalonia;
using ReactiveUI; using ReactiveUI;
using Avalonia.Controls.Primitives; using Avalonia.Controls.Primitives;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI;
using Avalonia.Threading; using Avalonia.Threading;
namespace detect.gui.Views; namespace detect.gui.Views;
@ -22,9 +22,22 @@ public partial class MainView : WindowBase<MainViewModel>
WebWindow = new WebBrowserWindow(); WebWindow = new WebBrowserWindow();
var container = this.Get<RoutedViewHost>("RoutedViewHost");
this.WhenAnyValue(x => x.ViewModel).Subscribe(v => this.WhenAnyValue(x => x.ViewModel).Subscribe(v =>
{ {
if (v == null) return; if (v == null) return;
v.WhenAnyValue(vd => vd.CurrentUser).Subscribe(u =>
{
if (u == null) return;
Dispatcher.UIThread.InvokeAsync(() =>
{
WebWindow.Width = container.Bounds.Width;
WebWindow.Height = container.Bounds.Height;
WebWindow.Position = container.PointToScreen(new Point(0, 0));
WebWindow.Show();
});
});
v.Router.Navigate.Execute(new LoginViewModel()); v.Router.Navigate.Execute(new LoginViewModel());
}); });
@ -32,10 +45,10 @@ public partial class MainView : WindowBase<MainViewModel>
{ {
Dispatcher.UIThread.InvokeAsync(() => Dispatcher.UIThread.InvokeAsync(() =>
{ {
// if (s == WindowState.Minimized || !(DataContext as MainViewModel)!.IsHomeView) if (s == WindowState.Minimized)
// WebWindow.Hide(); WebWindow.Hide();
// if (s != WindowState.Minimized && (DataContext as MainViewModel)!.IsSettingsView && !WebWindow.IsVisible) if (s != WindowState.Minimized && (DataContext as MainViewModel)!.CurrentUser != null && !WebWindow.IsVisible)
// WebWindow.Show(); WebWindow.Show();
}); });
}); });
} }

View File

@ -3,65 +3,8 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModels="clr-namespace:detect.gui.ViewModels" xmlns:viewModels="clr-namespace:detect.gui.ViewModels"
xmlns:cvt="clr-namespace:detect.gui.Converters"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="detect.gui.Views.UserView" x:Class="detect.gui.Views.UserView"
x:DataType="viewModels:UserViewModel"> x:DataType="viewModels:UserViewModel">
<UserControl.Resources> <Border x:Name="WebView" Loaded="OnLoaded" />
<cvt:IndexToBoolConverter x:Key="IndexToBoolConverter"/>
</UserControl.Resources>
<Border x:Name="WebView" Loaded="OnLoaded" Unloaded="OnUnloaded" SizeChanged="OnSizeChanged" />
<!-- <Grid ColumnDefinitions="Auto, 0, *"> -->
<!-- <Border Grid.Column="0"> -->
<!-- <Border.Background> -->
<!-- <SolidColorBrush Color="#2D77F3" Opacity="0.4"></SolidColorBrush> -->
<!-- </Border.Background> -->
<!-- <Grid Margin="10,20, 10, 0"> -->
<!-- <StackPanel Orientation="Vertical" VerticalAlignment="Top"> -->
<!-- <RadioButton GroupName="LeftSideBar" Classes="tab-left settings-region" Content="区域管理" -->
<!-- Name="RegionButton" -->
<!-- IsChecked="{Binding CurrentModule, Converter={StaticResource IndexToBoolConverter}, ConverterParameter=0}" -->
<!-- Command="{Binding ModuleClickCommand}" -->
<!-- CommandParameter="0" /> -->
<!-- <Border Height="10" /> -->
<!-- <RadioButton GroupName="LeftSideBar" Classes="tab-left settings-device" Content="设备管理" -->
<!-- x:Name="DeviceButton" -->
<!-- IsChecked="{Binding CurrentModule, Converter={StaticResource IndexToBoolConverter}, ConverterParameter=1}" -->
<!-- Command="{Binding ModuleClickCommand}" -->
<!-- CommandParameter="1" /> -->
<!-- <Border Height="10" /> -->
<!-- <RadioButton GroupName="LeftSideBar" Classes="tab-left settings-storage" Content="存储计划" -->
<!-- x:Name="StorageButton" -->
<!-- IsChecked="{Binding CurrentModule, Converter={StaticResource IndexToBoolConverter}, ConverterParameter=2}" -->
<!-- Command="{Binding ModuleClickCommand}" -->
<!-- CommandParameter="2" /> -->
<!-- <Border Height="10" /> -->
<!-- <RadioButton GroupName="LeftSideBar" Classes="tab-left settings-algo" Content="算法设置" -->
<!-- x:Name="AlgoButton" -->
<!-- IsChecked="{Binding CurrentModule, Converter={StaticResource IndexToBoolConverter}, ConverterParameter=3}" -->
<!-- Command="{Binding ModuleClickCommand}" -->
<!-- CommandParameter="3" /> -->
<!-- <Border Height="10" /> -->
<!-- <RadioButton GroupName="LeftSideBar" Classes="tab-left settings-config" Content="系统设置" -->
<!-- x:Name="SettingButton" -->
<!-- IsChecked="{Binding CurrentModule, Converter={StaticResource IndexToBoolConverter}, ConverterParameter=4}" -->
<!-- Command="{Binding ModuleClickCommand}" -->
<!-- CommandParameter="4" /> -->
<!-- <Border Height="10" /> -->
<!-- <RadioButton GroupName="LeftSideBar" Classes="tab-left settings-user" Content="用户管理" -->
<!-- x:Name="UserButton" -->
<!-- IsChecked="{Binding CurrentModule, Converter={StaticResource IndexToBoolConverter}, ConverterParameter=5}" -->
<!-- Command="{Binding ModuleClickCommand}" -->
<!-- CommandParameter="5" /> -->
<!-- <Border Height="10" /> -->
<!-- <RadioButton GroupName="LeftSideBar" Classes="tab-left settings-log" Content="系统日志" -->
<!-- x:Name="LogButton" -->
<!-- IsChecked="{Binding CurrentModule, Converter={StaticResource IndexToBoolConverter}, ConverterParameter=6}" -->
<!-- Command="{Binding ModuleClickCommand}" -->
<!-- CommandParameter="6" /> -->
<!-- </StackPanel> -->
<!-- </Grid> -->
<!-- </Border> -->
<!-- <Border Grid.Column="2" x:Name="WebView" Loaded="OnLoaded" Unloaded="OnUnloaded" SizeChanged="OnSizeChanged" /> -->
<!-- </Grid> -->
</UserControl> </UserControl>

View File

@ -20,21 +20,21 @@ public partial class UserView : ReactiveUserControl<UserViewModel>
{ {
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
} }
//
private void OnLoaded(object? sender, RoutedEventArgs e) private void OnLoaded(object? sender, RoutedEventArgs e)
{ {
this.GetParent<MainView>()!.WebWindow.ParentContent = this; // this.GetParent<MainView>()!.WebWindow.ParentContent = this;
this.GetParent<MainView>()!.WebWindow.InitUI(3); this.GetParent<MainView>()!.WebWindow.SetAddress(3);
}
private void OnUnloaded(object? sender, RoutedEventArgs e)
{
this.GetParent<MainView>()!.WebWindow.Hide();
}
private void OnSizeChanged(object? sender, SizeChangedEventArgs e)
{
if (!this.GetParent<MainView>()!.WebWindow.IsVisible) return;
this.GetParent<MainView>()!.WebWindow.InitUI();
} }
//
// private void OnUnloaded(object? sender, RoutedEventArgs e)
// {
// this.GetParent<MainView>()!.WebWindow.Hide();
// }
//
// private void OnSizeChanged(object? sender, SizeChangedEventArgs e)
// {
// if (!this.GetParent<MainView>()!.WebWindow.IsVisible) return;
// this.GetParent<MainView>()!.WebWindow.InitUI();
// }
} }

View File

@ -3,6 +3,7 @@ using Avalonia;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
using Avalonia.Platform; using Avalonia.Platform;
using Avalonia.ReactiveUI;
using Avalonia.Threading; using Avalonia.Threading;
using Avalonia.VisualTree; using Avalonia.VisualTree;
using detect.gui.ViewModels; using detect.gui.ViewModels;
@ -12,7 +13,8 @@ namespace detect.gui.Views;
public partial class WebBrowserWindow : Window public partial class WebBrowserWindow : Window
{ {
public UserView? ParentContent { get; set; } public UserControl? ParentContent { get; set; }
public WebBrowserWindow() public WebBrowserWindow()
{ {
InitializeComponent(); InitializeComponent();
@ -33,27 +35,25 @@ public partial class WebBrowserWindow : Window
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
} }
public void InitUI(int? index = null) // public void InitUI(int? index = null)
{ // {
if (ParentContent == null) return; // if (ParentContent == null) return;
var timer = new Timer(_ => // var timer = new Timer(_ =>
{ // {
Dispatcher.UIThread.InvokeAsync(() => // Dispatcher.UIThread.InvokeAsync(() =>
{ // {
if (!ParentContent.IsAttachedToVisualTree()) return; // if (!ParentContent.IsAttachedToVisualTree()) return;
Width = ParentContent.Get<Border>("WebView").Bounds.Width; // Width = ParentContent.Get<Border>("WebView").Bounds.Width;
Height = ParentContent.Get<Border>("WebView").Bounds.Height; // Height = ParentContent.Get<Border>("WebView").Bounds.Height;
Position = ParentContent.Get<Border>("WebView").PointToScreen(new Point(0, 0)); // Position = ParentContent.Get<Border>("WebView").PointToScreen(new Point(0, 0));
if (index != null) // if (index != null)
SetAddress(index.Value); // SetAddress(index.Value);
if (!IsVisible) // if (!IsVisible)
Show(); // Show();
// });
// DataContext = ParentContent.DataContext; // });
}); // timer.Change(100, 0);
}); // }
timer.Change(100, 0);
}
public void SetAddress(int index) public void SetAddress(int index)
{ {

View File

@ -4,7 +4,7 @@
"Backup" : true, "Backup" : true,
"Delete" : false "Delete" : false
}, },
"ApiUrl": "http://localhost:3910", "ApiUrl": "http://localhost:3920",
"Embedded": { "Embedded": {
"IsOnline": false, "IsOnline": false,
"Path": "./dist/index.html" "Path": "./dist/index.html"

View File

@ -1,4 +1,6 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005Cxwd_005Ccnnc_005Cdetect_005Cdetect_002Egui_005CLibs_005Cxwd_002Eutils_002Edll/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/AddReferences/RecentPaths/=D_003A_005Cxwd_005Ccnnc_005Cdetect_005Cdetect_002Egui_005CLibs_005Cxwd_002Eutils_002Edll/@EntryIndexedValue">True</s:Boolean>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADependencyResolverMixins_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fca0d4592dc494bbaa872fd9db942335922638_003Ff9_003Fb0105fc3_003FDependencyResolverMixins_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AReactiveUserControl_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F4d7c93652a64ddcaeff466d4c6bae2d847fe753565401deac6d1e5995386b1_003FReactiveUserControl_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARxApp_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F4c75a39152c6ea672be27a386dbf424c0f2d222d51114dffb436ecd6b570ce_003FRxApp_002Ecs/@EntryIndexedValue">ForceIncluded</s:String> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARxApp_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F4c75a39152c6ea672be27a386dbf424c0f2d222d51114dffb436ecd6b570ce_003FRxApp_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATaskAwaiter_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F74e4c72cd3922ed61496931f33baf4a9b5950edddb6b78bc296241285f25c3_003FTaskAwaiter_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary> <s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ATaskAwaiter_002Ecs_002Fl_003AC_0021_003FUsers_003FNick_0020Wang_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FSourcesCache_003F74e4c72cd3922ed61496931f33baf4a9b5950edddb6b78bc296241285f25c3_003FTaskAwaiter_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>