基本完善前端框架,发现后端bug
This commit is contained in:
@@ -92,5 +92,15 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
|||||||
var menuList= await _userService.GetMenusByUser(_user);
|
var menuList= await _userService.GetMenusByUser(_user);
|
||||||
return Result.Success().SetData(menuList);
|
return Result.Success().SetData(menuList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 给一个菜单添加子节点(注意:添加,不是覆盖)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="childrenDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public async Task<Result> AddChildrenMenu(ChildrenDto<menu> childrenDto)
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,6 +92,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
|||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<Result> SetRoleByUser(IdsListDto<int> idsListDto)
|
public async Task<Result> SetRoleByUser(IdsListDto<int> idsListDto)
|
||||||
{
|
{
|
||||||
|
有bug:无法运行,500报错;
|
||||||
var _user = this.HttpContext.GetCurrentUserInfo();
|
var _user = this.HttpContext.GetCurrentUserInfo();
|
||||||
await _userService.SetRolesByUser(idsListDto.ids2, idsListDto.ids1);
|
await _userService.SetRolesByUser(idsListDto.ids2, idsListDto.ids1);
|
||||||
return Result.Success();
|
return Result.Success();
|
||||||
|
|||||||
@@ -53,6 +53,19 @@
|
|||||||
<param name="_menu"></param>
|
<param name="_menu"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Yi.Framework.ApiMicroservice.Controllers.MenuController.SetMouldByMenu(Yi.Framework.DTOModel.IdDto{System.Int32})">
|
||||||
|
<summary>
|
||||||
|
给一个菜单设置一个接口,Id1为菜单id,Id2为接口id
|
||||||
|
</summary>
|
||||||
|
<param name="idDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:Yi.Framework.ApiMicroservice.Controllers.MenuController.GetMenuByUser">
|
||||||
|
<summary>
|
||||||
|
得到该用户有哪些菜单,关联mould
|
||||||
|
</summary>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:Yi.Framework.ApiMicroservice.Controllers.MouldController.UpdateMould(Yi.Framework.Model.Models.mould)">
|
<member name="M:Yi.Framework.ApiMicroservice.Controllers.MouldController.UpdateMould(Yi.Framework.Model.Models.mould)">
|
||||||
<summary>
|
<summary>
|
||||||
更
|
更
|
||||||
@@ -95,6 +108,13 @@
|
|||||||
<param name="_role"></param>
|
<param name="_role"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Yi.Framework.ApiMicroservice.Controllers.RoleController.SetMenuByRole(Yi.Framework.DTOModel.IdsListDto{System.Int32})">
|
||||||
|
<summary>
|
||||||
|
给角色设置菜单,多个角色与多个菜单,让每一个角色都设置,ids1为角色,ids2为菜单
|
||||||
|
</summary>
|
||||||
|
<param name="idsListDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:Yi.Framework.ApiMicroservice.Controllers.UserController.GetUser">
|
<member name="M:Yi.Framework.ApiMicroservice.Controllers.UserController.GetUser">
|
||||||
<summary>
|
<summary>
|
||||||
查
|
查
|
||||||
@@ -128,6 +148,13 @@
|
|||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:Yi.Framework.ApiMicroservice.Controllers.UserController.SetRoleByUser(Yi.Framework.DTOModel.IdsListDto{System.Int32})">
|
||||||
|
<summary>
|
||||||
|
给多个用户设置多个角色,ids有用户id与 角色列表ids,多对多,ids1用户,ids2为角色
|
||||||
|
</summary>
|
||||||
|
<param name="idsListDto"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="T:Yi.Framework.ApiMicroservice.Utility.CustomHostingStartup">
|
<member name="T:Yi.Framework.ApiMicroservice.Utility.CustomHostingStartup">
|
||||||
<summary>
|
<summary>
|
||||||
必须实现IHostingStartup接口
|
必须实现IHostingStartup接口
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ using Microsoft.AspNetCore.Mvc.Controllers;
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -21,19 +22,19 @@ namespace Yi.Framework.ApiMicroservice.Utility
|
|||||||
{
|
{
|
||||||
protected override void Load(ContainerBuilder containerBuilder)
|
protected override void Load(ContainerBuilder containerBuilder)
|
||||||
{
|
{
|
||||||
//var assembly = this.GetType().GetTypeInfo().Assembly;
|
var basePath = AppContext.BaseDirectory;
|
||||||
//var builder = new ContainerBuilder();
|
var servicesDllFile = Path.Combine(basePath, "Yi.Framework.Service.dll");
|
||||||
//var manager = new ApplicationPartManager();
|
if (!(File.Exists(servicesDllFile)))
|
||||||
//manager.ApplicationParts.Add(new AssemblyPart(assembly));
|
{
|
||||||
//manager.FeatureProviders.Add(new ControllerFeatureProvider());
|
var msg = "service.dll 丢失,请编译后重新生成。";
|
||||||
//var feature = new ControllerFeature();
|
throw new Exception(msg);
|
||||||
//manager.PopulateFeature(feature);
|
}
|
||||||
//builder.RegisterType<ApplicationPartManager>().AsSelf().SingleInstance();
|
var assemblysServices = Assembly.LoadFrom(servicesDllFile);
|
||||||
//builder.RegisterTypes(feature.Controllers.Select(ti => ti.AsType()).ToArray()).PropertiesAutowired();
|
containerBuilder.RegisterAssemblyTypes(assemblysServices)
|
||||||
|
.AsImplementedInterfaces()
|
||||||
|
.InstancePerDependency()
|
||||||
|
.EnableInterfaceInterceptors();
|
||||||
|
|
||||||
//containerBuilder.RegisterType<TestServiceA>().As<ITestServiceA>().InstancePerDependency(); 瞬态
|
|
||||||
//containerBuilder.RegisterType<TestServiceB>().As<ITestServiceB>().SingleInstance(); 单例
|
|
||||||
//containerBuilder.RegisterType<TestServiceC>().As<ITestServiceC>().InstancePerLifetimeScope(); 作用域
|
|
||||||
|
|
||||||
containerBuilder.Register(c => new CustomAutofacAop());//AOP注册
|
containerBuilder.Register(c => new CustomAutofacAop());//AOP注册
|
||||||
//containerBuilder.RegisterType<A>().As<IA>().EnableInterfaceInterceptors();开启Aop
|
//containerBuilder.RegisterType<A>().As<IA>().EnableInterfaceInterceptors();开启Aop
|
||||||
@@ -41,10 +42,9 @@ namespace Yi.Framework.ApiMicroservice.Utility
|
|||||||
//将数据库对象注入
|
//将数据库对象注入
|
||||||
//containerBuilder.RegisterType<DataContext>().As<DbContext>().InstancePerLifetimeScope().EnableInterfaceInterceptors();
|
//containerBuilder.RegisterType<DataContext>().As<DbContext>().InstancePerLifetimeScope().EnableInterfaceInterceptors();
|
||||||
|
|
||||||
containerBuilder.RegisterGeneric(typeof(BaseService<>)).As(typeof(IBaseService<>)).InstancePerLifetimeScope().EnableInterfaceInterceptors();
|
//containerBuilder.RegisterGeneric(typeof(BaseService<>)).As(typeof(IBaseService<>)).InstancePerDependency().EnableInterfaceInterceptors();
|
||||||
|
|
||||||
|
|
||||||
containerBuilder.RegisterType<UserService>().As< IUserService >().InstancePerLifetimeScope().EnableInterfaceInterceptors();
|
|
||||||
containerBuilder.RegisterType<RoleService>().As<IRoleService>().InstancePerLifetimeScope().EnableInterfaceInterceptors();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
14
Yi.Framework/Yi.Framework.DTOModel/ChildrenDto.cs
Normal file
14
Yi.Framework/Yi.Framework.DTOModel/ChildrenDto.cs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Yi.Framework.DTOModel
|
||||||
|
{
|
||||||
|
public class ChildrenDto<T>
|
||||||
|
{
|
||||||
|
public int parentId { get; set; }
|
||||||
|
public T data { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net5.0</TargetFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Remove="T4Service.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Yi.Framework.Model\Yi.Framework.Model.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -12,8 +12,23 @@
|
|||||||
<ProjectReference Include="..\Yi.Framework.Model\Yi.Framework.Model.csproj" />
|
<ProjectReference Include="..\Yi.Framework.Model\Yi.Framework.Model.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="T4IService.tt">
|
||||||
|
<LastGenOutput>T4IService.cs</LastGenOutput>
|
||||||
|
<Generator>TextTemplatingFileGenerator</Generator>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Update="T4IService.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>T4IService.tt</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net5.0</TargetFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Folder Include="Search\" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.10" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Yi.Framework.Common\Yi.Framework.Common.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -16,8 +16,23 @@
|
|||||||
<ProjectReference Include="..\Yi.Framework.Common\Yi.Framework.Common.csproj" />
|
<ProjectReference Include="..\Yi.Framework.Common\Yi.Framework.Common.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="T4DaraContext.tt">
|
||||||
|
<Generator>TextTemplatingFileGenerator</Generator>
|
||||||
|
<LastGenOutput>T4DaraContext.cs</LastGenOutput>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Update="T4DaraContext.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>T4DaraContext.tt</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net5.0</TargetFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Remove="T4DaraContext.cs" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\Yi.Framework.Interface\Yi.Framework.Interface.csproj" />
|
||||||
|
<ProjectReference Include="..\Yi.Framework.Model\Yi.Framework.Model.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -13,8 +13,23 @@
|
|||||||
<ProjectReference Include="..\Yi.Framework.Model\Yi.Framework.Model.csproj" />
|
<ProjectReference Include="..\Yi.Framework.Model\Yi.Framework.Model.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="T4Service.tt">
|
||||||
|
<LastGenOutput>T4Service.cs</LastGenOutput>
|
||||||
|
<Generator>TextTemplatingFileGenerator</Generator>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
<Service Include="{508349b6-6b84-4df5-91f0-309beebad82d}" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Update="T4Service.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>T4Service.tt</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
9
Yi.Vue/src/api/MenuApi.js
Normal file
9
Yi.Vue/src/api/MenuApi.js
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
import myaxios from '@/util/myaxios'
|
||||||
|
export default {
|
||||||
|
getMenu() {
|
||||||
|
return myaxios({
|
||||||
|
url: '/Menu/GetMenu',
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -16,12 +16,6 @@ export default {
|
|||||||
method: 'post',
|
method: 'post',
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
logged() {
|
|
||||||
return myaxios({
|
|
||||||
url: '/Account/logged',
|
|
||||||
method: 'post',
|
|
||||||
})
|
|
||||||
},
|
|
||||||
register(username, password, email, code) {
|
register(username, password, email, code) {
|
||||||
return myaxios({
|
return myaxios({
|
||||||
url: `/Account/register?code=${code}`,
|
url: `/Account/register?code=${code}`,
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
import myaxios from '@/util/myaxios'
|
|
||||||
export default {
|
|
||||||
getActions() {
|
|
||||||
return myaxios({
|
|
||||||
url: '/Action/getActions',
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
},
|
|
||||||
addAction(action) {
|
|
||||||
return myaxios({
|
|
||||||
url: '/action/addAction',
|
|
||||||
method: 'post',
|
|
||||||
data: action
|
|
||||||
})
|
|
||||||
},
|
|
||||||
updateAction(action) {
|
|
||||||
return myaxios({
|
|
||||||
url: '/action/UpdateAction',
|
|
||||||
method: 'post',
|
|
||||||
data: action
|
|
||||||
})
|
|
||||||
},
|
|
||||||
delActionList(Ids) {
|
|
||||||
return myaxios({
|
|
||||||
url: '/action/DelAllAction',
|
|
||||||
method: 'post',
|
|
||||||
data: Ids
|
|
||||||
})
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,50 +1,9 @@
|
|||||||
import myaxios from '@/util/myaxios'
|
import myaxios from '@/util/myaxios'
|
||||||
export default {
|
export default {
|
||||||
getRoles() {
|
getRole() {
|
||||||
return myaxios({
|
return myaxios({
|
||||||
url: '/Role/getRoles',
|
url: '/Role/getRole',
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
},
|
|
||||||
AddRole(role) {
|
|
||||||
return myaxios({
|
|
||||||
url: '/Role/AddRole',
|
|
||||||
method: 'post',
|
|
||||||
data: role
|
|
||||||
})
|
|
||||||
},
|
|
||||||
delRole(roleId) {
|
|
||||||
return myaxios({
|
|
||||||
url: `/Role/DelRole?roleId=${roleId}`,
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
},
|
|
||||||
updateRole(role) {
|
|
||||||
return myaxios({
|
|
||||||
url: '/role/updateRole',
|
|
||||||
method: 'post',
|
|
||||||
data: role
|
|
||||||
})
|
|
||||||
},
|
|
||||||
delRoleList(Ids) {
|
|
||||||
return myaxios({
|
|
||||||
url: '/role/delAllRole',
|
|
||||||
method: 'post',
|
|
||||||
data: Ids
|
|
||||||
})
|
|
||||||
},
|
|
||||||
setAction(Id, Ids) {
|
|
||||||
return myaxios({
|
|
||||||
url: '/role/setAction',
|
|
||||||
method: 'post',
|
|
||||||
data: { "Id": Id, "Ids": Ids }
|
|
||||||
})
|
|
||||||
},
|
|
||||||
GetActionByRoleId(roleId) {
|
|
||||||
return myaxios({
|
|
||||||
url: `/role/GetActionByRoleId?roleId=${roleId}`,
|
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,101 +1,10 @@
|
|||||||
import myaxios from '@/util/myaxios'
|
import myaxios from '@/util/myaxios'
|
||||||
export default {
|
export default {
|
||||||
getAllUser() {
|
SetRoleByUser(userIds, roleIds) {
|
||||||
return myaxios({
|
return myaxios({
|
||||||
url: '/User/getAllUser',
|
url: '/User/SetRoleByUser',
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
},
|
|
||||||
getUserByUserId(userId) {
|
|
||||||
if (userId == undefined) {
|
|
||||||
userId = 0;
|
|
||||||
}
|
|
||||||
return myaxios({
|
|
||||||
url: `/User/getUserByUserId?userId=${userId}`,
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
addUser(user) {
|
|
||||||
return myaxios({
|
|
||||||
url: '/User/addUser',
|
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: user
|
data: { "ids1": userIds, "ids2": roleIds }
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
delUser(userId) {
|
|
||||||
return myaxios({
|
|
||||||
url: `/User/delUser?userId=${userId}`,
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
},
|
|
||||||
updateUser(user) {
|
|
||||||
return myaxios({
|
|
||||||
url: '/User/updateUser',
|
|
||||||
method: 'post',
|
|
||||||
data: user
|
|
||||||
})
|
|
||||||
},
|
|
||||||
tryUpdateUser(form) {
|
|
||||||
return myaxios({
|
|
||||||
url: '/User/tryUpdateUser',
|
|
||||||
method: 'post',
|
|
||||||
data: form
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
delUserList(Ids) {
|
|
||||||
return myaxios({
|
|
||||||
url: '/User/delAllUser',
|
|
||||||
method: 'post',
|
|
||||||
data: Ids
|
|
||||||
})
|
|
||||||
},
|
|
||||||
setRole(Id, Ids) {
|
|
||||||
return myaxios({
|
|
||||||
url: '/User/setRole',
|
|
||||||
method: 'post',
|
|
||||||
data: { "Id": Id, "Ids": Ids }
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
setRoleList(userIds, roleIds) {
|
|
||||||
return myaxios({
|
|
||||||
url: '/User/setRoleList',
|
|
||||||
method: 'post',
|
|
||||||
data: { "userIds": userIds, "roleIds": roleIds }
|
|
||||||
})
|
|
||||||
},
|
|
||||||
getRoleByuserId(userId) {
|
|
||||||
if (userId == undefined) {
|
|
||||||
userId = 0;
|
|
||||||
}
|
|
||||||
return myaxios({
|
|
||||||
url: `/User/getRoleByuserId?userId=${userId}`,
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
},
|
|
||||||
getSpecialAction(userId) {
|
|
||||||
return myaxios({
|
|
||||||
url: `/User/getSpecialAction?userId=${userId}`,
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
},
|
|
||||||
setSpecialAction(Id, Ids) {
|
|
||||||
return myaxios({
|
|
||||||
url: '/User/setSpecialAction',
|
|
||||||
method: 'post',
|
|
||||||
data: { "Id": Id, "Ids": Ids }
|
|
||||||
})
|
|
||||||
},
|
|
||||||
getActionByUserId(userId) {
|
|
||||||
if (userId == undefined) {
|
|
||||||
userId = 0;
|
|
||||||
}
|
|
||||||
return myaxios({
|
|
||||||
url: `/User/getActionByUserId?userId=${userId}`,
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -14,7 +14,6 @@
|
|||||||
<v-row>
|
<v-row>
|
||||||
<v-col cols="12">
|
<v-col cols="12">
|
||||||
<v-combobox
|
<v-combobox
|
||||||
|
|
||||||
v-model="select"
|
v-model="select"
|
||||||
:items="items"
|
:items="items"
|
||||||
label="请点击选择"
|
label="请点击选择"
|
||||||
@@ -30,7 +29,7 @@
|
|||||||
<v-card-actions>
|
<v-card-actions>
|
||||||
<v-spacer></v-spacer>
|
<v-spacer></v-spacer>
|
||||||
<v-btn color="blue darken-1" text @click="dialog = false"> 关闭 </v-btn>
|
<v-btn color="blue darken-1" text @click="dialog = false"> 关闭 </v-btn>
|
||||||
<v-btn color="blue darken-1" text @click="dialog = false"> 保存 </v-btn>
|
<div @click="dialog = false"> <slot name="save" ></slot> </div>
|
||||||
</v-card-actions>
|
</v-card-actions>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-dialog>
|
</v-dialog>
|
||||||
|
|||||||
@@ -86,6 +86,9 @@
|
|||||||
|
|
||||||
<!-- 表格中的删除和修改 -->
|
<!-- 表格中的删除和修改 -->
|
||||||
<template v-slot:item.actions="{ item }">
|
<template v-slot:item.actions="{ item }">
|
||||||
|
|
||||||
|
<slot name="action" :item="item"></slot>
|
||||||
|
|
||||||
<v-icon
|
<v-icon
|
||||||
v-if="axiosUrls.hasOwnProperty('update')"
|
v-if="axiosUrls.hasOwnProperty('update')"
|
||||||
small
|
small
|
||||||
@@ -101,6 +104,8 @@
|
|||||||
>
|
>
|
||||||
mdi-delete
|
mdi-delete
|
||||||
</v-icon>
|
</v-icon>
|
||||||
|
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<!-- 初始化 -->
|
<!-- 初始化 -->
|
||||||
@@ -113,6 +118,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import itemApi from "./TableApi.js";
|
import itemApi from "./TableApi.js";
|
||||||
export default {
|
export default {
|
||||||
|
|
||||||
name: "ccTable",
|
name: "ccTable",
|
||||||
props: {
|
props: {
|
||||||
defaultItem: {
|
defaultItem: {
|
||||||
@@ -125,7 +131,6 @@ export default {
|
|||||||
type: Object,
|
type: Object,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
data: () => ({
|
data: () => ({
|
||||||
page: 1,
|
page: 1,
|
||||||
selected: [],
|
selected: [],
|
||||||
@@ -143,6 +148,12 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
watch: {
|
watch: {
|
||||||
|
selected:{
|
||||||
|
handler(val, oldVal){
|
||||||
|
this.$emit("selected",val);
|
||||||
|
},
|
||||||
|
deep:true
|
||||||
|
},
|
||||||
dialog(val) {
|
dialog(val) {
|
||||||
val || this.close();
|
val || this.close();
|
||||||
}
|
}
|
||||||
@@ -200,7 +211,6 @@ export default {
|
|||||||
itemApi
|
itemApi
|
||||||
.delItemList(this.axiosUrls.del, Ids)
|
.delItemList(this.axiosUrls.del, Ids)
|
||||||
.then(() => this.initialize());
|
.then(() => this.initialize());
|
||||||
this.closeDelete();
|
|
||||||
},
|
},
|
||||||
close() {
|
close() {
|
||||||
this.dialog = false;
|
this.dialog = false;
|
||||||
|
|||||||
@@ -7,13 +7,17 @@
|
|||||||
return-object
|
return-object
|
||||||
open-all
|
open-all
|
||||||
hoverable
|
hoverable
|
||||||
item-text="menu_name"
|
item-text="menu_name"
|
||||||
>
|
>
|
||||||
<template v-slot:append="{ item }">
|
<template v-slot:append="{ item }">
|
||||||
<v-btn>{{ item.id }}</v-btn>
|
<v-btn>编号:{{ item.id }}</v-btn>
|
||||||
<v-btn>设置接口权限</v-btn>
|
<v-btn>图标:{{ item.icon }}</v-btn>
|
||||||
</template>
|
<v-btn>路由:{{ item.router }}</v-btn>
|
||||||
|
<v-btn>设置接口权限</v-btn>
|
||||||
|
<v-btn>编辑</v-btn>
|
||||||
|
<v-btn>删除</v-btn>
|
||||||
|
<v-btn>添加子菜单</v-btn>
|
||||||
|
</template>
|
||||||
</v-treeview>
|
</v-treeview>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
@@ -28,16 +32,15 @@ export default {
|
|||||||
selectionType: "leaf",
|
selectionType: "leaf",
|
||||||
selection: [],
|
selection: [],
|
||||||
}),
|
}),
|
||||||
watch:{
|
watch: {
|
||||||
selection:{//深度监听,可监听到对象、数组的变化
|
selection: {
|
||||||
handler(val, oldVal){
|
//深度监听,可监听到对象、数组的变化
|
||||||
this.$emit("selection",val);
|
handler(val, oldVal) {
|
||||||
},
|
this.$emit("selection", val);
|
||||||
deep:true
|
},
|
||||||
}
|
deep: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods:{
|
methods: {},
|
||||||
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -1,47 +1,29 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-card class="mx-auto" width="100%">
|
<v-card class="mx-auto" width="100%">
|
||||||
|
<v-btn color="primary" dark class="mb-2 mx-2" @click="dialog = true">
|
||||||
|
添加新项
|
||||||
|
</v-btn>
|
||||||
|
<v-btn color="primary" dark class="mb-2 mx-2" @click="dialog = true">
|
||||||
|
删除所选
|
||||||
|
</v-btn>
|
||||||
<ccTreeview :items="Menuitems"></ccTreeview>
|
<ccTreeview :items="Menuitems"></ccTreeview>
|
||||||
</v-card>
|
</v-card>
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
import menuApi from "../api/MenuApi";
|
||||||
export default {
|
export default {
|
||||||
|
created() {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
data: () => ({
|
data: () => ({
|
||||||
Menuitems: [
|
Menuitems: [],
|
||||||
{
|
}),
|
||||||
id: 1,
|
methods: {
|
||||||
menu_name: "用户角色管理",
|
init() {
|
||||||
children: [
|
menuApi.getMenu().then((resp) => {
|
||||||
{
|
this.Menuitems = resp.data;
|
||||||
id: 2,
|
});
|
||||||
menu_name: "用户管理",
|
},
|
||||||
children: [
|
},
|
||||||
{
|
|
||||||
id: 4,
|
|
||||||
menu_name: "添加",
|
|
||||||
children: [],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 5,
|
|
||||||
menu_name: "修改",
|
|
||||||
children: [],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 7,
|
|
||||||
menu_name: "删除",
|
|
||||||
children: [],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 8,
|
|
||||||
menu_name: "查询",
|
|
||||||
children: [],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{ id: 3, menu_name: "角色管理" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
})
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -8,20 +8,20 @@
|
|||||||
export default {
|
export default {
|
||||||
data: () => ({
|
data: () => ({
|
||||||
axiosUrls:{
|
axiosUrls:{
|
||||||
get:"role/getrole",
|
get:"mould/getmould",
|
||||||
update:"role/updaterole",
|
update:"mould/updatemould",
|
||||||
del:"role/delListrole",
|
del:"mould/delListmould",
|
||||||
add:"role/addrole"
|
add:"mould/addmould"
|
||||||
},
|
},
|
||||||
headers: [
|
headers: [
|
||||||
{text: "编号",align: "start",value: "id"},
|
{text: "编号",align: "start",value: "id"},
|
||||||
{ text: "角色名", value: "role_name", sortable: false },
|
{ text: "接口名", value: "mould_name", sortable: false },
|
||||||
{ text: "简介", value: "introduce", sortable: false },
|
{ text: "接口地址", value: "url", sortable: false },
|
||||||
{ text: "操作", value: "actions", sortable: false }
|
{ text: "操作", value: "actions", sortable: false }
|
||||||
],
|
],
|
||||||
defaultItem: {
|
defaultItem: {
|
||||||
role_name: "test",
|
mould_name: "test",
|
||||||
introduce: "用于测试",
|
url: "test/test",
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
<template>
|
<template>
|
||||||
|
<v-row>
|
||||||
|
<v-col cols="12">
|
||||||
|
<v-card class="mx-auto" width="100%"><v-btn color="primary">确定分配</v-btn></v-card>
|
||||||
|
</v-col>
|
||||||
|
<v-col cols="12" md="4" lg="4">
|
||||||
|
<v-card class="mx-auto" width="100%">
|
||||||
|
|
||||||
<v-row>
|
|
||||||
<v-col cols="12" md="4" lg="4">
|
|
||||||
<v-card class="mx-auto" width="100%">
|
|
||||||
<v-treeview
|
<v-treeview
|
||||||
selectable
|
selectable
|
||||||
:items="RoleItems"
|
:items="RoleItems"
|
||||||
@@ -13,11 +16,11 @@
|
|||||||
item-text="role_name"
|
item-text="role_name"
|
||||||
>
|
>
|
||||||
</v-treeview>
|
</v-treeview>
|
||||||
</v-card>
|
</v-card>
|
||||||
</v-col>
|
</v-col>
|
||||||
|
|
||||||
<v-col cols="12" md="8" lg="8">
|
<v-col cols="12" md="8" lg="8">
|
||||||
<v-card class="mx-auto" width="100%">
|
<v-card class="mx-auto" width="100%">
|
||||||
<v-treeview
|
<v-treeview
|
||||||
selectable
|
selectable
|
||||||
:items="Menuitems"
|
:items="Menuitems"
|
||||||
@@ -29,59 +32,36 @@
|
|||||||
item-text="menu_name"
|
item-text="menu_name"
|
||||||
>
|
>
|
||||||
<template v-slot:append="{ item }">
|
<template v-slot:append="{ item }">
|
||||||
<v-btn>{{ item.id }}</v-btn>
|
<v-btn>id:{{ item.id }}</v-btn>
|
||||||
</template>
|
</template>
|
||||||
</v-treeview>
|
</v-treeview>
|
||||||
</v-card></v-col
|
</v-card></v-col
|
||||||
>
|
>
|
||||||
|
</v-row>
|
||||||
</v-row>
|
|
||||||
|
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
import roleApi from "../api/roleApi";
|
||||||
|
import menuApi from "../api/MenuApi";
|
||||||
export default {
|
export default {
|
||||||
|
created() {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init() {
|
||||||
|
roleApi.getRole().then((resp) => {
|
||||||
|
this.RoleItems = resp.data;
|
||||||
|
});
|
||||||
|
|
||||||
|
menuApi.getMenu().then((resp) => {
|
||||||
|
this.Menuitems = resp.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
data: () => ({
|
data: () => ({
|
||||||
selectionMenu: [],
|
selectionMenu: [],
|
||||||
selectionRole: [],
|
selectionRole: [],
|
||||||
RoleItems: [
|
RoleItems: [],
|
||||||
{ id: 1, role_name: "管理员", sex: "测试" },
|
Menuitems: [],
|
||||||
{ id: 2, role_name: "超级管理员", sex: "测试" },
|
|
||||||
],
|
|
||||||
Menuitems: [
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
menu_name: "用户角色管理",
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
menu_name: "用户管理",
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
id: 4,
|
|
||||||
menu_name: "添加",
|
|
||||||
children: [],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 5,
|
|
||||||
menu_name: "修改",
|
|
||||||
children: [],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 7,
|
|
||||||
menu_name: "删除",
|
|
||||||
children: [],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 8,
|
|
||||||
menu_name: "查询",
|
|
||||||
children: [],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{ id: 3, menu_name: "角色管理" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
@@ -1,24 +1,84 @@
|
|||||||
<template>
|
<template>
|
||||||
<v-card class="mx-auto" width="100%">
|
<v-card class="mx-auto" width="100%">
|
||||||
{{select}}
|
{{ select }}
|
||||||
<ccCombobox headers='设置角色' :items="items" @select="getSelect" itemText="role_name"></ccCombobox>
|
{{ TableSelect }}
|
||||||
|
<ccCombobox
|
||||||
|
headers="设置角色"
|
||||||
|
:items="roleItems"
|
||||||
|
@select="getSelect"
|
||||||
|
itemText="role_name"
|
||||||
|
>
|
||||||
|
<template v-slot:save>
|
||||||
|
<v-btn @click="setRole" color="blue darken-1" text> 保存</v-btn>
|
||||||
|
</template>
|
||||||
|
</ccCombobox>
|
||||||
<ccTable
|
<ccTable
|
||||||
:defaultItem="defaultItem"
|
:defaultItem="defaultItem"
|
||||||
:headers="headers"
|
:headers="headers"
|
||||||
:axiosUrls="axiosUrls"
|
:axiosUrls="axiosUrls"
|
||||||
></ccTable>
|
@selected="getTableSelect"
|
||||||
|
>
|
||||||
|
<template v-slot:action="{ item }">
|
||||||
|
<v-icon small class="mr-2" @click="showItem(item)"> mdi-eye </v-icon>
|
||||||
|
</template>
|
||||||
|
</ccTable>
|
||||||
</v-card>
|
</v-card>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
import userApi from "../api/userApi";
|
||||||
|
import roleApi from "../api/roleApi";
|
||||||
export default {
|
export default {
|
||||||
methods:{
|
created() {
|
||||||
getSelect(data){
|
this.init();
|
||||||
this.select=data;
|
},
|
||||||
}
|
|
||||||
|
methods: {
|
||||||
|
async showItem(item) {
|
||||||
|
|
||||||
|
var strInfo="";
|
||||||
|
Object.keys(item).forEach(function(key){
|
||||||
|
|
||||||
|
strInfo+=key+":"+ item[key]+"<br>"
|
||||||
|
|
||||||
|
});
|
||||||
|
await this.$dialog.confirm({
|
||||||
|
text: strInfo,
|
||||||
|
title: "信息详情",
|
||||||
|
actions: {
|
||||||
|
true: "关闭",
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
init() {
|
||||||
|
roleApi.getRole().then((resp) => {
|
||||||
|
this.roleItems = resp.data;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
setRole() {
|
||||||
|
var userIds = [];
|
||||||
|
var roleIds = [];
|
||||||
|
this.TableSelect.forEach((item) => {
|
||||||
|
userIds.push(item.id);
|
||||||
|
});
|
||||||
|
this.select.forEach((item) => {
|
||||||
|
roleIds.push(item.id);
|
||||||
|
});
|
||||||
|
userApi.SetRoleByUser(userIds, roleIds).then((resp) => {
|
||||||
|
alert(resp);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
getTableSelect(data) {
|
||||||
|
this.TableSelect = data;
|
||||||
|
},
|
||||||
|
|
||||||
|
getSelect(data) {
|
||||||
|
this.select = data;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data: () => ({
|
data: () => ({
|
||||||
select:[],
|
TableSelect: [],
|
||||||
items: [{id:1,role_name:"管理员"},{id:1,role_name:"超级管理员"}],
|
select: [],
|
||||||
|
roleItems: [],
|
||||||
axiosUrls: {
|
axiosUrls: {
|
||||||
get: "user/getuser",
|
get: "user/getuser",
|
||||||
update: "user/updateuser",
|
update: "user/updateuser",
|
||||||
|
|||||||
Reference in New Issue
Block a user