feat:请求方法全部换成新的request类,并且引入useEcharts hook
This commit is contained in:
@@ -222,7 +222,7 @@ namespace Yi.Framework.SqlSugarCore
|
||||
{
|
||||
if (Options.EnabledSqlLog)
|
||||
{
|
||||
Logger.CreateLogger<SqlSugarDbContext>().LogDebug(UtilMethods.GetSqlString(DbType.SqlServer, sql, pars));
|
||||
Logger.CreateLogger<SqlSugarDbContext>().LogDebug("Yi-SQL执行:"+UtilMethods.GetSqlString(DbType.SqlServer, sql, pars));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,16 +3,24 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Volo.Abp.Auditing;
|
||||
using Volo.Abp.DependencyInjection;
|
||||
using Yi.Framework.Core.Helper;
|
||||
using Yi.Framework.SqlSugarCore.Abstractions;
|
||||
|
||||
namespace Yi.Framework.SqlSugarCore
|
||||
{
|
||||
public class SqlSugarLogAuditingStore : IAuditingStore, ISingletonDependency
|
||||
{
|
||||
private readonly ILogger<SqlSugarLogAuditingStore> _logger;
|
||||
public SqlSugarLogAuditingStore(ILogger<SqlSugarLogAuditingStore> logger, ISqlSugarDbContext sqlSugarDbContext)
|
||||
{
|
||||
_logger= logger;
|
||||
}
|
||||
public Task SaveAsync(AuditLogInfo auditInfo)
|
||||
{
|
||||
//Console.WriteLine(auditInfo.ExecutionTime);
|
||||
_logger.LogDebug("Yi-请求追踪:"+JsonHelper.ObjToStr(auditInfo, "yyyy-MM-dd HH:mm:ss"));
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,11 +15,6 @@ namespace Yi.Framework.SqlSugarCore.Uow
|
||||
|
||||
public async Task CommitAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
|
||||
|
||||
await Console.Out.WriteLineAsync("事务提交");
|
||||
|
||||
Console.WriteLine(_sqlsugarDbContext.SqlSugarClient.ContextID + "---------------");
|
||||
await _sqlsugarDbContext.SqlSugarClient.Ado.CommitTranAsync();
|
||||
}
|
||||
|
||||
@@ -30,8 +25,6 @@ namespace Yi.Framework.SqlSugarCore.Uow
|
||||
|
||||
public async Task RollbackAsync(CancellationToken cancellationToken = default)
|
||||
{
|
||||
await Console.Out.WriteLineAsync("事务回滚");
|
||||
Console.WriteLine(_sqlsugarDbContext.SqlSugarClient.ContextID);
|
||||
await _sqlsugarDbContext.SqlSugarClient.Ado.RollbackTranAsync();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
{
|
||||
public class AccessLogDto
|
||||
{
|
||||
public Guid Id { get; set; }
|
||||
public long Number { get; set; }
|
||||
public DateTime? LastModificationTime { get; set; }
|
||||
public DateTime CreationTime { get; set; }
|
||||
|
||||
@@ -5,7 +5,7 @@ namespace Yi.Framework.Bbs.Application.Contracts.Dtos.Discuss
|
||||
{
|
||||
public class DiscussGetListInputVo : PagedAndSortedResultRequestDto
|
||||
{
|
||||
public string Title { get; set; }
|
||||
public string? Title { get; set; }
|
||||
|
||||
public Guid? PlateId { get; set; }
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace Yi.Framework.Bbs.Application.Services
|
||||
/// 触发
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost("")]
|
||||
[HttpPost("access-log")]
|
||||
public async Task AccessAsync()
|
||||
{
|
||||
//可判断http重复,防止同一ip多次访问
|
||||
|
||||
@@ -3,17 +3,17 @@ using Volo.Abp.BackgroundWorkers.Quartz;
|
||||
|
||||
namespace Yi.Framework.Rbac.Application.Jobs
|
||||
{
|
||||
public class TestJob : QuartzBackgroundWorkerBase
|
||||
{
|
||||
public TestJob()
|
||||
{
|
||||
JobDetail = JobBuilder.Create<TestJob>().WithIdentity(nameof(TestJob)).Build();
|
||||
Trigger = TriggerBuilder.Create().WithIdentity(nameof(TestJob)).WithCronSchedule("* * * * * ? *").Build();
|
||||
}
|
||||
public override Task Execute(IJobExecutionContext context)
|
||||
{
|
||||
Console.WriteLine("你好,世界");
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
//public class TestJob : QuartzBackgroundWorkerBase
|
||||
//{
|
||||
// public TestJob()
|
||||
// {
|
||||
// JobDetail = JobBuilder.Create<TestJob>().WithIdentity(nameof(TestJob)).Build();
|
||||
// Trigger = TriggerBuilder.Create().WithIdentity(nameof(TestJob)).WithCronSchedule("* * * * * ? *").Build();
|
||||
// }
|
||||
// public override Task Execute(IJobExecutionContext context)
|
||||
// {
|
||||
// Console.WriteLine("你好,世界");
|
||||
// return Task.CompletedTask;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ namespace Yi.Framework.Rbac.Application
|
||||
|
||||
public async override Task OnApplicationInitializationAsync(ApplicationInitializationContext context)
|
||||
{
|
||||
//await context.AddBackgroundWorkerAsync<TestJob>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,11 +28,7 @@ namespace Yi.Abp.SqlSugarCore
|
||||
|
||||
protected override void OnLogExecuting(string sql, SugarParameter[] pars)
|
||||
{
|
||||
//获取原生SQL推荐 5.1.4.63 性能OK
|
||||
//UtilMethods.GetNativeSql(sql,pars)
|
||||
|
||||
//获取无参数化SQL 影响性能只适合调试
|
||||
this.Logger.CreateLogger<YiDbContext>().LogInformation(UtilMethods.GetSqlString(DbType.SqlServer, sql, pars));
|
||||
base.OnLogExecuting(sql, pars);
|
||||
}
|
||||
|
||||
protected override void OnLogExecuted(string sql, SugarParameter[] pars)
|
||||
|
||||
1274
Yi.Abp.Net8/src/Yi.Abp.Web/Logs/log-20231212.txt
Normal file
1274
Yi.Abp.Net8/src/Yi.Abp.Web/Logs/log-20231212.txt
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,9 +1,36 @@
|
||||
using Serilog;
|
||||
using Serilog.Events;
|
||||
using Yi.Abp.Web;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
builder.WebHost.UseUrls(builder.Configuration["App:SelfUrl"]);
|
||||
builder.Host.UseAutofac();
|
||||
await builder.Services.AddApplicationAsync<YiAbpWebModule>();
|
||||
var app = builder.Build();
|
||||
await app.InitializeApplicationAsync();
|
||||
await app.RunAsync();
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־,<2C><>ʹ<EFBFBD><CAB9>{SourceContext}<7D><>¼
|
||||
Log.Logger = new LoggerConfiguration()
|
||||
.MinimumLevel.Debug()
|
||||
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
|
||||
.MinimumLevel.Override("Microsoft.AspNetCore.Hosting.Diagnostics",LogEventLevel.Error)
|
||||
.MinimumLevel.Override("Quartz", LogEventLevel.Warning)
|
||||
.Enrich.FromLogContext()
|
||||
.WriteTo.Async(c => c.File("Logs/log-.txt", rollingInterval: RollingInterval.Day))
|
||||
.WriteTo.Async(c => c.Console())
|
||||
.CreateLogger();
|
||||
|
||||
try
|
||||
{
|
||||
Log.Information("Yi<59><69><EFBFBD><EFBFBD>-Abp.vNext<78><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
builder.WebHost.UseUrls(builder.Configuration["App:SelfUrl"]);
|
||||
builder.Host.UseAutofac();
|
||||
builder.Host.UseSerilog();
|
||||
await builder.Services.AddApplicationAsync<YiAbpWebModule>();
|
||||
var app = builder.Build();
|
||||
await app.InitializeApplicationAsync();
|
||||
await app.RunAsync();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Fatal(ex, "Yi<59><69><EFBFBD><EFBFBD>-Abp.vNext<78><74><EFBFBD><EFBFBD>ը<EFBFBD><D5A8>");
|
||||
}
|
||||
finally
|
||||
{
|
||||
Log.CloseAndFlush();
|
||||
}
|
||||
@@ -10,6 +10,8 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.14" />
|
||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="7.0.12" />
|
||||
<PackageReference Include="Serilog.AspNetCore" Version="7.0.0" />
|
||||
<PackageReference Include="Serilog.Sinks.Async" Version="1.5.0" />
|
||||
<PackageReference Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" Version="7.4.2" />
|
||||
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" Version="7.4.1" />
|
||||
<PackageReference Include="Volo.Abp.AspNetCore.Serilog" Version="7.4.1" />
|
||||
|
||||
@@ -10,7 +10,6 @@ using Volo.Abp.AspNetCore.Mvc.AntiForgery;
|
||||
using Volo.Abp.AspNetCore.Serilog;
|
||||
using Volo.Abp.Auditing;
|
||||
using Volo.Abp.Autofac;
|
||||
using Volo.Abp.Json;
|
||||
using Volo.Abp.Modularity;
|
||||
using Volo.Abp.Swashbuckle;
|
||||
using Yi.Abp.Application;
|
||||
@@ -25,7 +24,7 @@ using Yi.Framework.Rbac.Domain.Shared.Options;
|
||||
namespace Yi.Abp.Web
|
||||
{
|
||||
[DependsOn(
|
||||
typeof(YiAbpSqlSugarCoreModule),
|
||||
typeof(YiAbpSqlSugarCoreModule),
|
||||
typeof(YiAbpApplicationModule),
|
||||
|
||||
typeof(AbpAspNetCoreMvcModule),
|
||||
@@ -43,6 +42,7 @@ namespace Yi.Abp.Web
|
||||
public override Task ConfigureServicesAsync(ServiceConfigurationContext context)
|
||||
{
|
||||
var configuration = context.Services.GetConfiguration();
|
||||
var host = context.Services.GetHostingEnvironment();
|
||||
var service = context.Services;
|
||||
|
||||
//请求日志
|
||||
@@ -65,10 +65,7 @@ namespace Yi.Abp.Web
|
||||
{
|
||||
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
|
||||
});
|
||||
Configure<AbpJsonOptions>(options =>
|
||||
{
|
||||
options.OutputDateTimeFormat = "yyyy-MM-dd HH:mm:ss";
|
||||
});
|
||||
|
||||
Configure<AbpAntiForgeryOptions>(options =>
|
||||
{
|
||||
options.AutoValidate = false;
|
||||
@@ -77,7 +74,7 @@ namespace Yi.Abp.Web
|
||||
//Swagger
|
||||
context.Services.AddYiSwaggerGen<YiAbpWebModule>(options =>
|
||||
{
|
||||
options.SwaggerDoc("default", new OpenApiInfo { Title = "Yi.Framework.Abp", Version = "v1",Description="集大成者" });
|
||||
options.SwaggerDoc("default", new OpenApiInfo { Title = "Yi.Framework.Abp", Version = "v1", Description = "集大成者" });
|
||||
});
|
||||
|
||||
//跨域
|
||||
@@ -145,7 +142,6 @@ namespace Yi.Abp.Web
|
||||
var env = context.GetEnvironment();
|
||||
var app = context.GetApplicationBuilder();
|
||||
|
||||
|
||||
app.UseRouting();
|
||||
|
||||
//跨域
|
||||
|
||||
Binary file not shown.
8
Yi.BBS.Vue3/package-lock.json
generated
8
Yi.BBS.Vue3/package-lock.json
generated
@@ -14,6 +14,7 @@
|
||||
"element-plus": "^2.2.32",
|
||||
"highlight": "^0.2.4",
|
||||
"i": "^0.3.7",
|
||||
"lodash": "^4.17.21",
|
||||
"marked": "^4.2.12",
|
||||
"mavon-editor": "^3.0.0",
|
||||
"nprogress": "^0.2.0",
|
||||
@@ -2555,8 +2556,9 @@
|
||||
},
|
||||
"node_modules/lodash": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
"resolved": "http://10.10.78.31:8081/repository/hmx-public/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/lodash-es": {
|
||||
"version": "4.17.21",
|
||||
@@ -5813,7 +5815,7 @@
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
|
||||
"resolved": "http://10.10.78.31:8081/repository/hmx-public/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
},
|
||||
"lodash-es": {
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"element-plus": "^2.2.32",
|
||||
"highlight": "^0.2.4",
|
||||
"i": "^0.3.7",
|
||||
"lodash": "^4.17.21",
|
||||
"marked": "^4.2.12",
|
||||
"mavon-editor": "^3.0.0",
|
||||
"nprogress": "^0.2.0",
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
import request from '@/utils/request'
|
||||
import request from "@/config/axios/service";
|
||||
|
||||
// 触发访问
|
||||
export function access() {
|
||||
return request({
|
||||
url: '/access-log',
|
||||
method: 'post'
|
||||
})
|
||||
url: "/access-log",
|
||||
method: "post",
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// 获取本周数据
|
||||
export function getWeek() {
|
||||
return request({
|
||||
url: '/access-log/week',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
url: "/access-log/week",
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,79 +1,78 @@
|
||||
import request from '@/utils/request'
|
||||
import request from "@/config/axios/service";
|
||||
|
||||
// 登录方法
|
||||
export function login(username, password, code, uuid) {
|
||||
const data = {
|
||||
username,
|
||||
password,
|
||||
code,
|
||||
uuid
|
||||
}
|
||||
return request({
|
||||
url: '/account/login',
|
||||
headers: {
|
||||
isToken: false
|
||||
},
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 注册方法
|
||||
export function register(userName,password,phone,code,uuid) {
|
||||
const data = {
|
||||
userName,
|
||||
password,
|
||||
phone,
|
||||
code,
|
||||
uuid
|
||||
}
|
||||
return request({
|
||||
url: '/account/register',
|
||||
headers: {
|
||||
isToken: false
|
||||
},
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
// 获取用户详细信息
|
||||
export function getInfo() {
|
||||
return request({
|
||||
url: '/account',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
const data = {
|
||||
username,
|
||||
password,
|
||||
code,
|
||||
uuid,
|
||||
};
|
||||
return request({
|
||||
url: "/account/login",
|
||||
headers: {
|
||||
isToken: false,
|
||||
},
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// 注册方法
|
||||
export function register(userName, password, phone, code, uuid) {
|
||||
const data = {
|
||||
userName,
|
||||
password,
|
||||
phone,
|
||||
code,
|
||||
uuid,
|
||||
};
|
||||
return request({
|
||||
url: "/account/register",
|
||||
headers: {
|
||||
isToken: false,
|
||||
},
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// 获取用户详细信息
|
||||
export function getInfo() {
|
||||
return request({
|
||||
url: "/account",
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// 退出方法
|
||||
export function logout() {
|
||||
return request({
|
||||
url: '/account/logout',
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
// 获取验证码
|
||||
export function getCodeImg() {
|
||||
return request({
|
||||
url: '/account/captcha-image',
|
||||
headers: {
|
||||
isToken: false
|
||||
},
|
||||
method: 'get',
|
||||
timeout: 20000
|
||||
})
|
||||
}
|
||||
// 获取短信验证码
|
||||
export function getCodePhone(phone) {
|
||||
return request({
|
||||
url: '/account/captcha-phone',
|
||||
headers: {
|
||||
isToken: false
|
||||
},
|
||||
method: 'post',
|
||||
timeout: 20000,
|
||||
data:{phone}
|
||||
})
|
||||
}
|
||||
return request({
|
||||
url: "/account/logout",
|
||||
method: "post",
|
||||
});
|
||||
}
|
||||
|
||||
// 获取验证码
|
||||
export function getCodeImg() {
|
||||
return request({
|
||||
url: "/account/captcha-image",
|
||||
headers: {
|
||||
isToken: false,
|
||||
},
|
||||
method: "get",
|
||||
timeout: 20000,
|
||||
});
|
||||
}
|
||||
// 获取短信验证码
|
||||
export function getCodePhone(phone) {
|
||||
return request({
|
||||
url: "/account/captcha-phone",
|
||||
headers: {
|
||||
isToken: false,
|
||||
},
|
||||
method: "post",
|
||||
timeout: 20000,
|
||||
data: { phone },
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
import myaxios from '@/utils/request'
|
||||
export function operate(discussId){
|
||||
if(discussId==undefined)
|
||||
{
|
||||
return;
|
||||
}
|
||||
return myaxios({
|
||||
url: `/agree/operate/${discussId}`,
|
||||
method: 'post'
|
||||
})
|
||||
};
|
||||
import request from "@/config/axios/service";
|
||||
export function operate(discussId) {
|
||||
if (discussId == undefined) {
|
||||
return;
|
||||
}
|
||||
return request({
|
||||
url: `/agree/operate/${discussId}`,
|
||||
method: "post",
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,41 +1,40 @@
|
||||
import myaxios from '@/utils/request'
|
||||
export function getList(data){
|
||||
return myaxios({
|
||||
url: '/article',
|
||||
method: 'get',
|
||||
params:data
|
||||
})
|
||||
};
|
||||
export function get(id){
|
||||
return myaxios({
|
||||
url: `/article/${id}`,
|
||||
method: 'get'
|
||||
})
|
||||
};
|
||||
export function add(data){
|
||||
return myaxios({
|
||||
url: `/article`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
};
|
||||
export function update(id,data){
|
||||
return myaxios({
|
||||
url: `/article/${id}`,
|
||||
method: 'put',
|
||||
data:data
|
||||
})
|
||||
};
|
||||
export function del(ids){
|
||||
return myaxios({
|
||||
url: `/article/${ids}`,
|
||||
method: 'delete'
|
||||
})
|
||||
};
|
||||
export function all(discussId)
|
||||
{
|
||||
return myaxios({
|
||||
url: `/article/all/discuss-id/${discussId}`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
import request from "@/config/axios/service";
|
||||
export function getList(data) {
|
||||
return request({
|
||||
url: "/article",
|
||||
method: "get",
|
||||
params: data,
|
||||
});
|
||||
}
|
||||
export function get(id) {
|
||||
return request({
|
||||
url: `/article/${id}`,
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: `/article`,
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
export function update(id, data) {
|
||||
return request({
|
||||
url: `/article/${id}`,
|
||||
method: "put",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: `/article/${ids}`,
|
||||
method: "delete",
|
||||
});
|
||||
}
|
||||
export function all(discussId) {
|
||||
return request({
|
||||
url: `/article/all/discuss-id/${discussId}`,
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import myaxios from '@/utils/request'
|
||||
export function getList(data){
|
||||
return myaxios({
|
||||
url: '/banner',
|
||||
method: 'get',
|
||||
params:data
|
||||
})
|
||||
};
|
||||
import request from "@/config/axios/service";
|
||||
|
||||
export function getList(data) {
|
||||
return request({
|
||||
url: "/banner",
|
||||
method: "get",
|
||||
params: data,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,22 +1,23 @@
|
||||
import myaxios from '@/utils/request'
|
||||
export function getListByDiscussId(discussId,data){
|
||||
return myaxios({
|
||||
url: `/comment/discuss-id/${discussId}`,
|
||||
method: 'get',
|
||||
params:data
|
||||
})
|
||||
};
|
||||
export function add(data){
|
||||
return myaxios({
|
||||
url: `/comment`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
};
|
||||
import request from "@/config/axios/service";
|
||||
|
||||
export function del(ids){
|
||||
return myaxios({
|
||||
url: `/comment/${ids}`,
|
||||
method: 'delete'
|
||||
})
|
||||
};
|
||||
export function getListByDiscussId(discussId, data) {
|
||||
return request({
|
||||
url: `/comment/discuss-id/${discussId}`,
|
||||
method: "get",
|
||||
params: data,
|
||||
});
|
||||
}
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: `/comment`,
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: `/comment/${ids}`,
|
||||
method: "delete",
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,51 +1,48 @@
|
||||
import myaxios from '@/utils/request'
|
||||
export function getList(data){
|
||||
return myaxios({
|
||||
url: '/discuss',
|
||||
method: 'get',
|
||||
params:data
|
||||
})
|
||||
};
|
||||
export function getTopList(data){
|
||||
import request from "@/config/axios/service";
|
||||
|
||||
if(data==undefined)
|
||||
{
|
||||
data={isTop:true}
|
||||
}
|
||||
else
|
||||
{
|
||||
data["isTop"]=true;
|
||||
}
|
||||
export function getList(data) {
|
||||
return request({
|
||||
url: "/discuss",
|
||||
method: "get",
|
||||
params: data,
|
||||
});
|
||||
}
|
||||
export function getTopList(data) {
|
||||
if (data == undefined) {
|
||||
data = { isTop: true };
|
||||
} else {
|
||||
data["isTop"] = true;
|
||||
}
|
||||
|
||||
return myaxios({
|
||||
url: '/discuss',
|
||||
method: 'get',
|
||||
params:data
|
||||
})
|
||||
};
|
||||
export function get(id){
|
||||
return myaxios({
|
||||
url: `/discuss/${id}`,
|
||||
method: 'get'
|
||||
})
|
||||
};
|
||||
export function add(data){
|
||||
return myaxios({
|
||||
url: `/discuss`,
|
||||
method: 'post',
|
||||
data:data
|
||||
})
|
||||
};
|
||||
export function update(id,data){
|
||||
return myaxios({
|
||||
url: `/discuss/${id}`,
|
||||
method: 'put',
|
||||
data:data
|
||||
})
|
||||
};
|
||||
export function del(ids){
|
||||
return myaxios({
|
||||
url: `/discuss/${ids}`,
|
||||
method: 'delete'
|
||||
})
|
||||
};
|
||||
return request({
|
||||
url: "/discuss",
|
||||
method: "get",
|
||||
params: data,
|
||||
});
|
||||
}
|
||||
export function get(id) {
|
||||
return request({
|
||||
url: `/discuss/${id}`,
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
export function add(data) {
|
||||
return request({
|
||||
url: `/discuss`,
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
export function update(id, data) {
|
||||
return request({
|
||||
url: `/discuss/${id}`,
|
||||
method: "put",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
export function del(ids) {
|
||||
return request({
|
||||
url: `/discuss/${ids}`,
|
||||
method: "delete",
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
import myaxios from '@/utils/request'
|
||||
export function upload(data){
|
||||
return myaxios({
|
||||
url: '/file',
|
||||
method: 'post',
|
||||
data:data,
|
||||
headers: { 'Content-Type': 'multipart/form-data' }
|
||||
})
|
||||
};
|
||||
import request from "@/config/axios/service";
|
||||
|
||||
export function upload(data) {
|
||||
return request({
|
||||
url: "/file",
|
||||
method: "post",
|
||||
data: data,
|
||||
headers: { "Content-Type": "multipart/form-data" },
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import myaxios from '@/utils/request'
|
||||
export function getList(data){
|
||||
return myaxios({
|
||||
url: '/plate',
|
||||
method: 'get',
|
||||
params:data
|
||||
})
|
||||
};
|
||||
import request from "@/config/axios/service";
|
||||
|
||||
export function getList(data) {
|
||||
return request({
|
||||
url: "/plate",
|
||||
method: "get",
|
||||
params: data,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,133 +1,131 @@
|
||||
import myaxios from '@/utils/request'
|
||||
import request from "@/config/axios/service";
|
||||
|
||||
// 查询用户列表
|
||||
export function listUser(query) {
|
||||
return myaxios({
|
||||
url: '/user',
|
||||
method: 'get',
|
||||
params: query
|
||||
})
|
||||
return request({
|
||||
url: "/user",
|
||||
method: "get",
|
||||
params: query,
|
||||
});
|
||||
}
|
||||
|
||||
// 查询用户详细
|
||||
export function getUser(userId) {
|
||||
return myaxios({
|
||||
url: '/user/' + parseStrEmpty(userId),
|
||||
method: 'get'
|
||||
})
|
||||
return request({
|
||||
url: "/user/" + parseStrEmpty(userId),
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
// 新增用户
|
||||
export function addUser(data) {
|
||||
return myaxios({
|
||||
url: '/user',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
return request({
|
||||
url: "/user",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// 修改用户
|
||||
export function updateUser(id, data) {
|
||||
return myaxios({
|
||||
return request({
|
||||
url: `/user/${id}`,
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
method: "put",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// 删除用户
|
||||
export function delUser(userId) {
|
||||
return myaxios({
|
||||
return request({
|
||||
url: `/user/${userId}`,
|
||||
method: 'delete',
|
||||
})
|
||||
method: "delete",
|
||||
});
|
||||
}
|
||||
|
||||
// 用户密码重置
|
||||
export function resetUserPwd(id, password) {
|
||||
const data = {
|
||||
password
|
||||
}
|
||||
password,
|
||||
};
|
||||
|
||||
|
||||
return myaxios({
|
||||
return request({
|
||||
url: `/account/rest-password/${id}`,
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
method: "put",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// 用户状态修改
|
||||
export function changeUserStatus(userId, isDel) {
|
||||
return myaxios({
|
||||
return request({
|
||||
url: `/user/${userId}/${isDel}`,
|
||||
method: 'put'
|
||||
})
|
||||
method: "put",
|
||||
});
|
||||
}
|
||||
|
||||
// 查询用户个人信息
|
||||
export function getUserProfile() {
|
||||
return myaxios({
|
||||
url: '/account',
|
||||
method: 'get'
|
||||
})
|
||||
return request({
|
||||
url: "/account",
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
// 修改用户个人信息
|
||||
export function updateUserProfile(data) {
|
||||
return myaxios({
|
||||
return request({
|
||||
url: `/user/profile`,
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
method: "put",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
// 只修改用户头像
|
||||
export function updateUserIcon(data) {
|
||||
return myaxios({
|
||||
return request({
|
||||
url: `/account/icon`,
|
||||
method: 'put',
|
||||
data:{icon:data}
|
||||
})
|
||||
method: "put",
|
||||
data: { icon: data },
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// 用户密码重置
|
||||
export function updateUserPwd(oldPassword, newPassword) {
|
||||
const data = {
|
||||
oldPassword,
|
||||
newPassword
|
||||
}
|
||||
return myaxios({
|
||||
url: '/account/password',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
newPassword,
|
||||
};
|
||||
return request({
|
||||
url: "/account/password",
|
||||
method: "put",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// 用户头像上传
|
||||
export function uploadAvatar(data) {
|
||||
return request({
|
||||
url: '/system/user/profile/avatar',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
url: "/system/user/profile/avatar",
|
||||
method: "post",
|
||||
data: data,
|
||||
});
|
||||
}
|
||||
|
||||
// 查询授权角色
|
||||
export function getAuthRole(userId) {
|
||||
return request({
|
||||
url: '/system/user/authRole/' + userId,
|
||||
method: 'get'
|
||||
})
|
||||
url: "/system/user/authRole/" + userId,
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
// 保存授权角色
|
||||
export function updateAuthRole(data) {
|
||||
return request({
|
||||
url: '/system/user/authRole',
|
||||
method: 'put',
|
||||
params: data
|
||||
})
|
||||
url: "/system/user/authRole",
|
||||
method: "put",
|
||||
params: data,
|
||||
});
|
||||
}
|
||||
|
||||
// // 查询部门下拉树结构
|
||||
|
||||
@@ -1,55 +1,51 @@
|
||||
<template>
|
||||
<div ref="VisitsLineChart"></div>
|
||||
<div ref="VisitsLineChart"></div>
|
||||
</template>
|
||||
<script setup>
|
||||
import * as echarts from 'echarts/core';
|
||||
import { GridComponent } from 'echarts/components';
|
||||
import { LineChart } from 'echarts/charts';
|
||||
import { UniversalTransition } from 'echarts/features';
|
||||
import { CanvasRenderer } from 'echarts/renderers';
|
||||
import { ref ,onMounted} from 'vue';
|
||||
import { getWeek } from '@/apis/accessApi.js'
|
||||
import * as echarts from "echarts/core";
|
||||
import { GridComponent } from "echarts/components";
|
||||
import { LineChart } from "echarts/charts";
|
||||
import { UniversalTransition } from "echarts/features";
|
||||
import { CanvasRenderer } from "echarts/renderers";
|
||||
import { ref, onMounted } from "vue";
|
||||
import { getWeek } from "@/apis/accessApi.js";
|
||||
echarts.use([GridComponent, LineChart, CanvasRenderer, UniversalTransition]);
|
||||
|
||||
const VisitsLineChart=ref(null);
|
||||
const VisitsLineChart = ref(null);
|
||||
|
||||
onMounted(async()=>{
|
||||
onMounted(async () => {
|
||||
var myChart = echarts.init(VisitsLineChart.value, null, {
|
||||
width: 320,
|
||||
height: 230
|
||||
height: 230,
|
||||
});
|
||||
var option;
|
||||
var option;
|
||||
|
||||
const response=await getWeek();
|
||||
const response = await getWeek();
|
||||
|
||||
var numberData=response.data.map(x=>x.number);
|
||||
var numberData = response.data.map((x) => x.number);
|
||||
|
||||
option = {
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
boundaryGap: false,
|
||||
data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: numberData,
|
||||
type: 'line',
|
||||
areaStyle: {}
|
||||
}
|
||||
]
|
||||
};
|
||||
option = {
|
||||
xAxis: {
|
||||
type: "category",
|
||||
boundaryGap: false,
|
||||
data: ["周一", "周二", "周三", "周四", "周五", "周六", "周日"],
|
||||
},
|
||||
yAxis: {
|
||||
type: "value",
|
||||
},
|
||||
series: [
|
||||
{
|
||||
data: numberData,
|
||||
type: "line",
|
||||
areaStyle: {},
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
option && myChart.setOption(option);
|
||||
option && myChart.setOption(option);
|
||||
|
||||
window.addEventListener('resize', function() {
|
||||
window.addEventListener("resize", function () {
|
||||
myChart.resize();
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
});
|
||||
</script>
|
||||
|
||||
50
Yi.BBS.Vue3/src/hooks/useEcharts.js
Normal file
50
Yi.BBS.Vue3/src/hooks/useEcharts.js
Normal file
@@ -0,0 +1,50 @@
|
||||
import * as echarts from "echarts";
|
||||
import { onMounted, onUnmounted, watch } from "vue";
|
||||
import { debounce } from "@/utils/index";
|
||||
import _ from "lodash";
|
||||
|
||||
// containerRef echarts实例 props 传入的值 baseOptions 图表初始化渲染
|
||||
export default function useEcharts(containerRef, emits, props, baseOptions) {
|
||||
let chart = null;
|
||||
|
||||
onMounted(() => {
|
||||
chart = echarts.init(containerRef.value);
|
||||
init();
|
||||
chart.on("click", function (param) {
|
||||
emits("chart-click", param);
|
||||
});
|
||||
//自适应不同屏幕时改变图表尺寸
|
||||
window.addEventListener("resize", cancalDebounce);
|
||||
});
|
||||
// 用于将echarts实例暴露出去使用
|
||||
const getChart = () => chart;
|
||||
onUnmounted(() => {
|
||||
chart && chart.dispose();
|
||||
window.removeEventListener("resize", cancalDebounce);
|
||||
});
|
||||
|
||||
function init() {
|
||||
let option = _.cloneDeep(baseOptions);
|
||||
chart.setOption(option);
|
||||
chart.setOption(props.option);
|
||||
}
|
||||
|
||||
function resize() {
|
||||
chart && chart.resize();
|
||||
}
|
||||
|
||||
watch(
|
||||
() => props.option,
|
||||
(val) => {
|
||||
chart && chart.setOption(val);
|
||||
},
|
||||
{ deep: true }
|
||||
);
|
||||
|
||||
const cancalDebounce = debounce(resize, 500);
|
||||
|
||||
return {
|
||||
getChart,
|
||||
resize,
|
||||
};
|
||||
}
|
||||
12
Yi.BBS.Vue3/src/utils/index.js
Normal file
12
Yi.BBS.Vue3/src/utils/index.js
Normal file
@@ -0,0 +1,12 @@
|
||||
//设置防抖,保证无论拖动窗口大小,只执行一次获取浏览器宽高的方法
|
||||
export const debounce = (fun, delay) => {
|
||||
let timer;
|
||||
return function () {
|
||||
if (timer) {
|
||||
clearTimeout(timer);
|
||||
}
|
||||
timer = setTimeout(() => {
|
||||
fun();
|
||||
}, delay);
|
||||
};
|
||||
};
|
||||
@@ -131,8 +131,8 @@ onMounted(async () => {
|
||||
plateList.value = plateData.items;
|
||||
const { data: discussData } = await discussGetList(query);
|
||||
discussList.value = discussData.items;
|
||||
const { data: bannerData } = await bannerGetList();
|
||||
bannerList.value = bannerData.items;
|
||||
// const { data: bannerData } = await bannerGetList();
|
||||
// bannerList.value = bannerData.items;
|
||||
});
|
||||
</script>
|
||||
<style scoped>
|
||||
|
||||
1160
Yi.Bbs.Vue3/yarn.lock
Normal file
1160
Yi.Bbs.Vue3/yarn.lock
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user