diff --git a/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj b/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj index 0781edd6..5bc72562 100644 --- a/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj +++ b/Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj @@ -26,13 +26,13 @@ - + - + diff --git a/Admin.NET/Admin.NET.Core/Entity/SysSchedule.cs b/Admin.NET/Admin.NET.Core/Entity/SysSchedule.cs new file mode 100644 index 00000000..5a036250 --- /dev/null +++ b/Admin.NET/Admin.NET.Core/Entity/SysSchedule.cs @@ -0,0 +1,34 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +namespace Admin.NET.Core; + +/// +/// 系统日程表 +/// +[SugarTable(null, "系统日程表")] +[SysTable] +public class SysSchedule : EntityTenant +{ + /// + /// 用户Id + /// + [SugarColumn(ColumnDescription = "用户Id")] + public long UserId { get; set; } + + /// + /// 日程时间 + /// + [SugarColumn(ColumnDescription = "日程时间")] + public DateTime? ScheduleTime { get; set; } + + /// + /// 日程内容 + /// + [SugarColumn(ColumnDescription = "日程内容", Length = 256)] + [Required, MaxLength(256)] + public virtual string Content { get; set; } +} \ No newline at end of file diff --git a/Admin.NET/Admin.NET.Core/Extension/SqlSugarFilterExtension.cs b/Admin.NET/Admin.NET.Core/Extension/SqlSugarFilterExtension.cs index 4018db49..00947f3a 100644 --- a/Admin.NET/Admin.NET.Core/Extension/SqlSugarFilterExtension.cs +++ b/Admin.NET/Admin.NET.Core/Extension/SqlSugarFilterExtension.cs @@ -31,21 +31,27 @@ public static class SqlSugarFilterExtension /// /// /// - public static LambdaExpression GetConditionExpression(this Type type, List owners) - where T : Attribute + public static LambdaExpression GetConditionExpression(this Type type, List owners) where T : Attribute { var fieldNames = type.GetPropertyNames(); ParameterExpression parameter = Expression.Parameter(type, "c"); Expression right = Expression.Constant(false); - fieldNames.ForEach(filedName => + fieldNames.ForEach(fieldName => { owners.ForEach(owner => { - Expression left = Expression.Equal( - Expression.Property(parameter, type.GetProperty(filedName)), - Expression.Constant(owner) - ); + var property = type.GetProperty(fieldName); + Expression temp = Expression.Property(parameter, property); + + // 如果属性是可为空的类型,则转换为其基础类型 + var propertyType = property.PropertyType; + if (Nullable.GetUnderlyingType(propertyType) != null) + { + temp = Expression.Convert(temp, Nullable.GetUnderlyingType(propertyType)); + } + + Expression left = Expression.Equal(temp, Expression.Constant(owner)); right = Expression.Or(left, right); }); }); diff --git a/Admin.NET/Admin.NET.Core/Service/Schedule/Dto/ScheduleInput.cs b/Admin.NET/Admin.NET.Core/Service/Schedule/Dto/ScheduleInput.cs new file mode 100644 index 00000000..eb2bfee0 --- /dev/null +++ b/Admin.NET/Admin.NET.Core/Service/Schedule/Dto/ScheduleInput.cs @@ -0,0 +1,31 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +namespace Admin.NET.Core.Service; + +public class ScheduleInput +{ + public DateTime? StartTime { get; set; } + + public DateTime? EndTime { get; set; } +} + +public class AddScheduleInput : SysSchedule +{ + /// + /// 日程内容 + /// + [Required(ErrorMessage = "日程内容不能为空")] + public override string Content { get; set; } +} + +public class UpdateScheduleInput : AddScheduleInput +{ +} + +public class DeleteScheduleInput : BaseIdInput +{ +} \ No newline at end of file diff --git a/Admin.NET/Admin.NET.Core/Service/Schedule/SysScheduleService.cs b/Admin.NET/Admin.NET.Core/Service/Schedule/SysScheduleService.cs new file mode 100644 index 00000000..3c3e20af --- /dev/null +++ b/Admin.NET/Admin.NET.Core/Service/Schedule/SysScheduleService.cs @@ -0,0 +1,87 @@ +// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。 +// +// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。 +// +// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + +namespace Admin.NET.Core.Service; + +/// +/// 系统日程服务 +/// +[ApiDescriptionSettings(Order = 295)] +public class SysScheduleService : IDynamicApiController, ITransient +{ + private readonly UserManager _userManager; + private readonly SqlSugarRepository _sysSchedule; + + public SysScheduleService(UserManager userManager, + SqlSugarRepository sysSchedle) + { + _userManager = userManager; + _sysSchedule = sysSchedle; + } + + /// + /// 获取日程列表 + /// + /// + [DisplayName("获取日程列表")] + public async Task> Page(ScheduleInput input) + { + return await _sysSchedule.AsQueryable() + .Where(u => u.UserId == _userManager.UserId) + .WhereIF(!string.IsNullOrWhiteSpace(input.StartTime.ToString()), u => u.ScheduleTime >= input.StartTime) + .WhereIF(!string.IsNullOrWhiteSpace(input.EndTime.ToString()), u => u.ScheduleTime <= input.EndTime) + .OrderBy(u => u.CreateTime, OrderByType.Asc) + .ToListAsync(); + } + + /// + /// 获取日程详情 + /// + /// + /// + [DisplayName("获取日程详情")] + public async Task GetDetail(long id) + { + return await _sysSchedule.GetFirstAsync(u => u.Id == id); + } + + /// + /// 增加日程 + /// + /// + /// + [ApiDescriptionSettings(Name = "Add"), HttpPost] + [DisplayName("增加日程")] + public async Task AddUserSchedule(AddScheduleInput input) + { + input.UserId = _userManager.UserId; + await _sysSchedule.InsertAsync(input.Adapt()); + } + + /// + /// 更新日程 + /// + /// + /// + [ApiDescriptionSettings(Name = "Update"), HttpPost] + [DisplayName("更新日程")] + public async Task UpdateUserSchedule(UpdateScheduleInput input) + { + await _sysSchedule.AsUpdateable(input.Adapt()).IgnoreColumns(true).ExecuteCommandAsync(); + } + + /// + /// 删除日程 + /// + /// + /// + [ApiDescriptionSettings(Name = "Delete"), HttpPost] + [DisplayName("删除日程")] + public async Task DeleteUserSchedule(DeleteScheduleInput input) + { + await _sysSchedule.DeleteAsync(u => u.Id == input.Id); + } +} \ No newline at end of file diff --git a/Admin.NET/Admin.NET.Web.Entry/wwwroot/Template/index.vue.vm b/Admin.NET/Admin.NET.Web.Entry/wwwroot/Template/index.vue.vm index 50484b16..c4c797e8 100644 --- a/Admin.NET/Admin.NET.Web.Entry/wwwroot/Template/index.vue.vm +++ b/Admin.NET/Admin.NET.Web.Entry/wwwroot/Template/index.vue.vm @@ -23,26 +23,26 @@ @if(Model.QueryWhetherList.Count > 0){ - + foreach (var column in Model.QueryWhetherList) { if(@column.EffectType == "Input" || @column.EffectType == "InputTextArea") { - + } else if(@column.EffectType == "InputNumber") { - + } else if(@column.EffectType == "fk") { - + @@ -50,7 +50,7 @@ } else if(@column.EffectType == "Select") { - + @@ -58,7 +58,7 @@ } else if(@column.EffectType == "EnumSelector") { - + @@ -66,7 +66,7 @@ } else if(@column.EffectType == "DatePicker") { - + @if(@column.QueryType == "~"){ @: @@ -163,14 +163,14 @@ @if(@Model.PrintType == "custom") { - + } - + - + diff --git a/Web/package.json b/Web/package.json index 467a1bfa..60dfc628 100644 --- a/Web/package.json +++ b/Web/package.json @@ -68,8 +68,8 @@ "vue-signature-pad": "^3.0.2", "vue3-tree-org": "^4.2.2", "vuedraggable": "4.0.3", - "vxe-pc-ui": "^4.0.67", - "vxe-table": "^4.7.50", + "vxe-pc-ui": "^4.0.68", + "vxe-table": "^4.7.51", "vxe-table-plugin-element": "^4.0.4", "vxe-table-plugin-export-xlsx": "^4.0.5", "xe-utils": "^3.5.28", diff --git a/Web/src/api-services/api.ts b/Web/src/api-services/api.ts index 9c81c697..351a4b3e 100644 --- a/Web/src/api-services/api.ts +++ b/Web/src/api-services/api.ts @@ -45,6 +45,7 @@ export * from './apis/sys-print-api'; export * from './apis/sys-proc-api'; export * from './apis/sys-region-api'; export * from './apis/sys-role-api'; +export * from './apis/sys-schedule-api'; export * from './apis/sys-server-api'; export * from './apis/sys-sms-api'; export * from './apis/sys-tenant-api'; diff --git a/Web/src/api-services/apis/sys-schedule-api.ts b/Web/src/api-services/apis/sys-schedule-api.ts new file mode 100644 index 00000000..a6e6e433 --- /dev/null +++ b/Web/src/api-services/apis/sys-schedule-api.ts @@ -0,0 +1,476 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Admin.NET 通用权限开发平台 + * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + +import globalAxios, { AxiosResponse, AxiosInstance, AxiosRequestConfig } from 'axios'; +import { Configuration } from '../configuration'; +// Some imports not used depending on template conditions +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS, RequestArgs, BaseAPI, RequiredError } from '../base'; +import { AddScheduleInput } from '../models'; +import { AdminResultListSysSchedule } from '../models'; +import { AdminResultSysSchedule } from '../models'; +import { DeleteScheduleInput } from '../models'; +import { ScheduleInput } from '../models'; +import { UpdateScheduleInput } from '../models'; +/** + * SysScheduleApi - axios parameter creator + * @export + */ +export const SysScheduleApiAxiosParamCreator = function (configuration?: Configuration) { + return { + /** + * + * @summary 增加日程 + * @param {AddScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + apiSysScheduleAddPost: async (body?: AddScheduleInput, options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/api/sysSchedule/add`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, 'https://example.com'); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication Bearer required + // http bearer authentication required + if (configuration && configuration.accessToken) { + const accessToken = typeof configuration.accessToken === 'function' + ? await configuration.accessToken() + : await configuration.accessToken; + localVarHeaderParameter["Authorization"] = "Bearer " + accessToken; + } + + localVarHeaderParameter['Content-Type'] = 'application/json-patch+json'; + + const query = new URLSearchParams(localVarUrlObj.search); + for (const key in localVarQueryParameter) { + query.set(key, localVarQueryParameter[key]); + } + for (const key in options.params) { + query.set(key, options.params[key]); + } + localVarUrlObj.search = (new URLSearchParams(query)).toString(); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json'; + localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || ""); + + return { + url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash, + options: localVarRequestOptions, + }; + }, + /** + * + * @summary 删除日程 + * @param {DeleteScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + apiSysScheduleDeletePost: async (body?: DeleteScheduleInput, options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/api/sysSchedule/delete`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, 'https://example.com'); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication Bearer required + // http bearer authentication required + if (configuration && configuration.accessToken) { + const accessToken = typeof configuration.accessToken === 'function' + ? await configuration.accessToken() + : await configuration.accessToken; + localVarHeaderParameter["Authorization"] = "Bearer " + accessToken; + } + + localVarHeaderParameter['Content-Type'] = 'application/json-patch+json'; + + const query = new URLSearchParams(localVarUrlObj.search); + for (const key in localVarQueryParameter) { + query.set(key, localVarQueryParameter[key]); + } + for (const key in options.params) { + query.set(key, options.params[key]); + } + localVarUrlObj.search = (new URLSearchParams(query)).toString(); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json'; + localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || ""); + + return { + url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash, + options: localVarRequestOptions, + }; + }, + /** + * + * @summary 获取日程详情 + * @param {number} id + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + apiSysScheduleDetailIdGet: async (id: number, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'id' is not null or undefined + if (id === null || id === undefined) { + throw new RequiredError('id','Required parameter id was null or undefined when calling apiSysScheduleDetailIdGet.'); + } + const localVarPath = `/api/sysSchedule/detail/{id}` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, 'https://example.com'); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions :AxiosRequestConfig = { method: 'GET', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication Bearer required + // http bearer authentication required + if (configuration && configuration.accessToken) { + const accessToken = typeof configuration.accessToken === 'function' + ? await configuration.accessToken() + : await configuration.accessToken; + localVarHeaderParameter["Authorization"] = "Bearer " + accessToken; + } + + const query = new URLSearchParams(localVarUrlObj.search); + for (const key in localVarQueryParameter) { + query.set(key, localVarQueryParameter[key]); + } + for (const key in options.params) { + query.set(key, options.params[key]); + } + localVarUrlObj.search = (new URLSearchParams(query)).toString(); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + + return { + url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash, + options: localVarRequestOptions, + }; + }, + /** + * + * @summary 获取日程列表 + * @param {ScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + apiSysSchedulePagePost: async (body?: ScheduleInput, options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/api/sysSchedule/page`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, 'https://example.com'); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication Bearer required + // http bearer authentication required + if (configuration && configuration.accessToken) { + const accessToken = typeof configuration.accessToken === 'function' + ? await configuration.accessToken() + : await configuration.accessToken; + localVarHeaderParameter["Authorization"] = "Bearer " + accessToken; + } + + localVarHeaderParameter['Content-Type'] = 'application/json-patch+json'; + + const query = new URLSearchParams(localVarUrlObj.search); + for (const key in localVarQueryParameter) { + query.set(key, localVarQueryParameter[key]); + } + for (const key in options.params) { + query.set(key, options.params[key]); + } + localVarUrlObj.search = (new URLSearchParams(query)).toString(); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json'; + localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || ""); + + return { + url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash, + options: localVarRequestOptions, + }; + }, + /** + * + * @summary 更新日程 + * @param {UpdateScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + apiSysScheduleUpdatePost: async (body?: UpdateScheduleInput, options: AxiosRequestConfig = {}): Promise => { + const localVarPath = `/api/sysSchedule/update`; + // use dummy base URL string because the URL constructor only accepts absolute URLs. + const localVarUrlObj = new URL(localVarPath, 'https://example.com'); + let baseOptions; + if (configuration) { + baseOptions = configuration.baseOptions; + } + const localVarRequestOptions :AxiosRequestConfig = { method: 'POST', ...baseOptions, ...options}; + const localVarHeaderParameter = {} as any; + const localVarQueryParameter = {} as any; + + // authentication Bearer required + // http bearer authentication required + if (configuration && configuration.accessToken) { + const accessToken = typeof configuration.accessToken === 'function' + ? await configuration.accessToken() + : await configuration.accessToken; + localVarHeaderParameter["Authorization"] = "Bearer " + accessToken; + } + + localVarHeaderParameter['Content-Type'] = 'application/json-patch+json'; + + const query = new URLSearchParams(localVarUrlObj.search); + for (const key in localVarQueryParameter) { + query.set(key, localVarQueryParameter[key]); + } + for (const key in options.params) { + query.set(key, options.params[key]); + } + localVarUrlObj.search = (new URLSearchParams(query)).toString(); + let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {}; + localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers}; + const needsSerialization = (typeof body !== "string") || localVarRequestOptions.headers['Content-Type'] === 'application/json'; + localVarRequestOptions.data = needsSerialization ? JSON.stringify(body !== undefined ? body : {}) : (body || ""); + + return { + url: localVarUrlObj.pathname + localVarUrlObj.search + localVarUrlObj.hash, + options: localVarRequestOptions, + }; + }, + } +}; + +/** + * SysScheduleApi - functional programming interface + * @export + */ +export const SysScheduleApiFp = function(configuration?: Configuration) { + return { + /** + * + * @summary 增加日程 + * @param {AddScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysScheduleAddPost(body?: AddScheduleInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { + const localVarAxiosArgs = await SysScheduleApiAxiosParamCreator(configuration).apiSysScheduleAddPost(body, options); + return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { + const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; + return axios.request(axiosRequestArgs); + }; + }, + /** + * + * @summary 删除日程 + * @param {DeleteScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysScheduleDeletePost(body?: DeleteScheduleInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { + const localVarAxiosArgs = await SysScheduleApiAxiosParamCreator(configuration).apiSysScheduleDeletePost(body, options); + return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { + const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; + return axios.request(axiosRequestArgs); + }; + }, + /** + * + * @summary 获取日程详情 + * @param {number} id + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysScheduleDetailIdGet(id: number, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { + const localVarAxiosArgs = await SysScheduleApiAxiosParamCreator(configuration).apiSysScheduleDetailIdGet(id, options); + return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { + const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; + return axios.request(axiosRequestArgs); + }; + }, + /** + * + * @summary 获取日程列表 + * @param {ScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysSchedulePagePost(body?: ScheduleInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { + const localVarAxiosArgs = await SysScheduleApiAxiosParamCreator(configuration).apiSysSchedulePagePost(body, options); + return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { + const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; + return axios.request(axiosRequestArgs); + }; + }, + /** + * + * @summary 更新日程 + * @param {UpdateScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysScheduleUpdatePost(body?: UpdateScheduleInput, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => Promise>> { + const localVarAxiosArgs = await SysScheduleApiAxiosParamCreator(configuration).apiSysScheduleUpdatePost(body, options); + return (axios: AxiosInstance = globalAxios, basePath: string = BASE_PATH) => { + const axiosRequestArgs :AxiosRequestConfig = {...localVarAxiosArgs.options, url: basePath + localVarAxiosArgs.url}; + return axios.request(axiosRequestArgs); + }; + }, + } +}; + +/** + * SysScheduleApi - factory interface + * @export + */ +export const SysScheduleApiFactory = function (configuration?: Configuration, basePath?: string, axios?: AxiosInstance) { + return { + /** + * + * @summary 增加日程 + * @param {AddScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysScheduleAddPost(body?: AddScheduleInput, options?: AxiosRequestConfig): Promise> { + return SysScheduleApiFp(configuration).apiSysScheduleAddPost(body, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary 删除日程 + * @param {DeleteScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysScheduleDeletePost(body?: DeleteScheduleInput, options?: AxiosRequestConfig): Promise> { + return SysScheduleApiFp(configuration).apiSysScheduleDeletePost(body, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary 获取日程详情 + * @param {number} id + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysScheduleDetailIdGet(id: number, options?: AxiosRequestConfig): Promise> { + return SysScheduleApiFp(configuration).apiSysScheduleDetailIdGet(id, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary 获取日程列表 + * @param {ScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysSchedulePagePost(body?: ScheduleInput, options?: AxiosRequestConfig): Promise> { + return SysScheduleApiFp(configuration).apiSysSchedulePagePost(body, options).then((request) => request(axios, basePath)); + }, + /** + * + * @summary 更新日程 + * @param {UpdateScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + */ + async apiSysScheduleUpdatePost(body?: UpdateScheduleInput, options?: AxiosRequestConfig): Promise> { + return SysScheduleApiFp(configuration).apiSysScheduleUpdatePost(body, options).then((request) => request(axios, basePath)); + }, + }; +}; + +/** + * SysScheduleApi - object-oriented interface + * @export + * @class SysScheduleApi + * @extends {BaseAPI} + */ +export class SysScheduleApi extends BaseAPI { + /** + * + * @summary 增加日程 + * @param {AddScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof SysScheduleApi + */ + public async apiSysScheduleAddPost(body?: AddScheduleInput, options?: AxiosRequestConfig) : Promise> { + return SysScheduleApiFp(this.configuration).apiSysScheduleAddPost(body, options).then((request) => request(this.axios, this.basePath)); + } + /** + * + * @summary 删除日程 + * @param {DeleteScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof SysScheduleApi + */ + public async apiSysScheduleDeletePost(body?: DeleteScheduleInput, options?: AxiosRequestConfig) : Promise> { + return SysScheduleApiFp(this.configuration).apiSysScheduleDeletePost(body, options).then((request) => request(this.axios, this.basePath)); + } + /** + * + * @summary 获取日程详情 + * @param {number} id + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof SysScheduleApi + */ + public async apiSysScheduleDetailIdGet(id: number, options?: AxiosRequestConfig) : Promise> { + return SysScheduleApiFp(this.configuration).apiSysScheduleDetailIdGet(id, options).then((request) => request(this.axios, this.basePath)); + } + /** + * + * @summary 获取日程列表 + * @param {ScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof SysScheduleApi + */ + public async apiSysSchedulePagePost(body?: ScheduleInput, options?: AxiosRequestConfig) : Promise> { + return SysScheduleApiFp(this.configuration).apiSysSchedulePagePost(body, options).then((request) => request(this.axios, this.basePath)); + } + /** + * + * @summary 更新日程 + * @param {UpdateScheduleInput} [body] + * @param {*} [options] Override http request option. + * @throws {RequiredError} + * @memberof SysScheduleApi + */ + public async apiSysScheduleUpdatePost(body?: UpdateScheduleInput, options?: AxiosRequestConfig) : Promise> { + return SysScheduleApiFp(this.configuration).apiSysScheduleUpdatePost(body, options).then((request) => request(this.axios, this.basePath)); + } +} diff --git a/Web/src/api-services/models/add-schedule-input.ts b/Web/src/api-services/models/add-schedule-input.ts new file mode 100644 index 00000000..65934470 --- /dev/null +++ b/Web/src/api-services/models/add-schedule-input.ts @@ -0,0 +1,118 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Admin.NET 通用权限开发平台 + * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + /** + * + * + * @export + * @interface AddScheduleInput + */ +export interface AddScheduleInput { + + /** + * 雪花Id + * + * @type {number} + * @memberof AddScheduleInput + */ + id?: number; + + /** + * 创建时间 + * + * @type {Date} + * @memberof AddScheduleInput + */ + createTime?: Date; + + /** + * 更新时间 + * + * @type {Date} + * @memberof AddScheduleInput + */ + updateTime?: Date | null; + + /** + * 创建者Id + * + * @type {number} + * @memberof AddScheduleInput + */ + createUserId?: number | null; + + /** + * 创建者姓名 + * + * @type {string} + * @memberof AddScheduleInput + */ + createUserName?: string | null; + + /** + * 修改者Id + * + * @type {number} + * @memberof AddScheduleInput + */ + updateUserId?: number | null; + + /** + * 修改者姓名 + * + * @type {string} + * @memberof AddScheduleInput + */ + updateUserName?: string | null; + + /** + * 软删除 + * + * @type {boolean} + * @memberof AddScheduleInput + */ + isDelete?: boolean; + + /** + * 租户Id + * + * @type {number} + * @memberof AddScheduleInput + */ + tenantId?: number | null; + + /** + * 用户Id + * + * @type {number} + * @memberof AddScheduleInput + */ + userId?: number; + + /** + * 日程时间 + * + * @type {Date} + * @memberof AddScheduleInput + */ + scheduleTime?: Date | null; + + /** + * 日程内容 + * + * @type {string} + * @memberof AddScheduleInput + */ + content: string; +} diff --git a/Web/src/api-services/models/admin-result-list-sys-schedule.ts b/Web/src/api-services/models/admin-result-list-sys-schedule.ts new file mode 100644 index 00000000..4c184e8a --- /dev/null +++ b/Web/src/api-services/models/admin-result-list-sys-schedule.ts @@ -0,0 +1,71 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Admin.NET 通用权限开发平台 + * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + +import { SysSchedule } from './sys-schedule'; + /** + * 全局返回结果 + * + * @export + * @interface AdminResultListSysSchedule + */ +export interface AdminResultListSysSchedule { + + /** + * 状态码 + * + * @type {number} + * @memberof AdminResultListSysSchedule + */ + code?: number; + + /** + * 类型success、warning、error + * + * @type {string} + * @memberof AdminResultListSysSchedule + */ + type?: string | null; + + /** + * 错误信息 + * + * @type {string} + * @memberof AdminResultListSysSchedule + */ + message?: string | null; + + /** + * 数据 + * + * @type {Array} + * @memberof AdminResultListSysSchedule + */ + result?: Array | null; + + /** + * 附加数据 + * + * @type {any} + * @memberof AdminResultListSysSchedule + */ + extras?: any | null; + + /** + * 时间 + * + * @type {Date} + * @memberof AdminResultListSysSchedule + */ + time?: Date; +} diff --git a/Web/src/api-services/models/admin-result-sys-schedule.ts b/Web/src/api-services/models/admin-result-sys-schedule.ts new file mode 100644 index 00000000..eadafe89 --- /dev/null +++ b/Web/src/api-services/models/admin-result-sys-schedule.ts @@ -0,0 +1,69 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Admin.NET 通用权限开发平台 + * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + +import { SysSchedule } from './sys-schedule'; + /** + * 全局返回结果 + * + * @export + * @interface AdminResultSysSchedule + */ +export interface AdminResultSysSchedule { + + /** + * 状态码 + * + * @type {number} + * @memberof AdminResultSysSchedule + */ + code?: number; + + /** + * 类型success、warning、error + * + * @type {string} + * @memberof AdminResultSysSchedule + */ + type?: string | null; + + /** + * 错误信息 + * + * @type {string} + * @memberof AdminResultSysSchedule + */ + message?: string | null; + + /** + * @type {SysSchedule} + * @memberof AdminResultSysSchedule + */ + result?: SysSchedule; + + /** + * 附加数据 + * + * @type {any} + * @memberof AdminResultSysSchedule + */ + extras?: any | null; + + /** + * 时间 + * + * @type {Date} + * @memberof AdminResultSysSchedule + */ + time?: Date; +} diff --git a/Web/src/api-services/models/delete-schedule-input.ts b/Web/src/api-services/models/delete-schedule-input.ts new file mode 100644 index 00000000..d3d99241 --- /dev/null +++ b/Web/src/api-services/models/delete-schedule-input.ts @@ -0,0 +1,30 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Admin.NET 通用权限开发平台 + * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + /** + * + * + * @export + * @interface DeleteScheduleInput + */ +export interface DeleteScheduleInput { + + /** + * 主键Id + * + * @type {number} + * @memberof DeleteScheduleInput + */ + id: number; +} diff --git a/Web/src/api-services/models/index.ts b/Web/src/api-services/models/index.ts index d1f06166..7cfa56e3 100644 --- a/Web/src/api-services/models/index.ts +++ b/Web/src/api-services/models/index.ts @@ -14,6 +14,7 @@ export * from './add-pos-input'; export * from './add-print-input'; export * from './add-region-input'; export * from './add-role-input'; +export * from './add-schedule-input'; export * from './add-subscribe-message-template-input'; export * from './add-sys-ldap-input'; export * from './add-tenant-input'; @@ -55,6 +56,7 @@ export * from './admin-result-list-sys-menu'; export * from './admin-result-list-sys-notice'; export * from './admin-result-list-sys-org'; export * from './admin-result-list-sys-region'; +export * from './admin-result-list-sys-schedule'; export * from './admin-result-list-sys-user'; export * from './admin-result-list-sys-user-ext-org'; export * from './admin-result-list-table-output'; @@ -98,6 +100,7 @@ export * from './admin-result-sys-ldap'; export * from './admin-result-sys-log-ex'; export * from './admin-result-sys-log-op'; export * from './admin-result-sys-print'; +export * from './admin-result-sys-schedule'; export * from './admin-result-sys-user'; export * from './admin-result-sys-wechat-pay'; export * from './admin-result-visual-db-table'; @@ -167,6 +170,7 @@ export * from './delete-pos-input'; export * from './delete-print-input'; export * from './delete-region-input'; export * from './delete-role-input'; +export * from './delete-schedule-input'; export * from './delete-sys-ldap-input'; export * from './delete-tenant-input'; export * from './delete-user-input'; @@ -276,6 +280,7 @@ export * from './role-output'; export * from './runtime-field-handle'; export * from './runtime-method-handle'; export * from './runtime-type-handle'; +export * from './schedule-input'; export * from './schema-serialization-mode'; export * from './search'; export * from './security-rule-set'; @@ -342,6 +347,7 @@ export * from './sys-org'; export * from './sys-plugin'; export * from './sys-print'; export * from './sys-region'; +export * from './sys-schedule'; export * from './sys-user'; export * from './sys-user-ext-org'; export * from './sys-wechat-pay'; @@ -374,6 +380,7 @@ export * from './update-pos-input'; export * from './update-print-input'; export * from './update-region-input'; export * from './update-role-input'; +export * from './update-schedule-input'; export * from './update-sys-ldap-input'; export * from './update-tenant-input'; export * from './update-user-input'; diff --git a/Web/src/api-services/models/member-info.ts b/Web/src/api-services/models/member-info.ts index 983879e9..b1fbee1e 100644 --- a/Web/src/api-services/models/member-info.ts +++ b/Web/src/api-services/models/member-info.ts @@ -30,12 +30,6 @@ export interface MemberInfo { */ memberType?: MemberTypes; - /** - * @type {string} - * @memberof MemberInfo - */ - name?: string | null; - /** * @type {Type} * @memberof MemberInfo @@ -48,6 +42,12 @@ export interface MemberInfo { */ reflectedType?: Type; + /** + * @type {string} + * @memberof MemberInfo + */ + name?: string | null; + /** * @type {Module} * @memberof MemberInfo diff --git a/Web/src/api-services/models/schedule-input.ts b/Web/src/api-services/models/schedule-input.ts new file mode 100644 index 00000000..56c8cbf6 --- /dev/null +++ b/Web/src/api-services/models/schedule-input.ts @@ -0,0 +1,34 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Admin.NET 通用权限开发平台 + * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + /** + * + * + * @export + * @interface ScheduleInput + */ +export interface ScheduleInput { + + /** + * @type {Date} + * @memberof ScheduleInput + */ + startTime?: Date | null; + + /** + * @type {Date} + * @memberof ScheduleInput + */ + endTime?: Date | null; +} diff --git a/Web/src/api-services/models/sys-schedule.ts b/Web/src/api-services/models/sys-schedule.ts new file mode 100644 index 00000000..2b1ee14b --- /dev/null +++ b/Web/src/api-services/models/sys-schedule.ts @@ -0,0 +1,118 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Admin.NET 通用权限开发平台 + * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + /** + * 系统日程表 + * + * @export + * @interface SysSchedule + */ +export interface SysSchedule { + + /** + * 雪花Id + * + * @type {number} + * @memberof SysSchedule + */ + id?: number; + + /** + * 创建时间 + * + * @type {Date} + * @memberof SysSchedule + */ + createTime?: Date; + + /** + * 更新时间 + * + * @type {Date} + * @memberof SysSchedule + */ + updateTime?: Date | null; + + /** + * 创建者Id + * + * @type {number} + * @memberof SysSchedule + */ + createUserId?: number | null; + + /** + * 创建者姓名 + * + * @type {string} + * @memberof SysSchedule + */ + createUserName?: string | null; + + /** + * 修改者Id + * + * @type {number} + * @memberof SysSchedule + */ + updateUserId?: number | null; + + /** + * 修改者姓名 + * + * @type {string} + * @memberof SysSchedule + */ + updateUserName?: string | null; + + /** + * 软删除 + * + * @type {boolean} + * @memberof SysSchedule + */ + isDelete?: boolean; + + /** + * 租户Id + * + * @type {number} + * @memberof SysSchedule + */ + tenantId?: number | null; + + /** + * 用户Id + * + * @type {number} + * @memberof SysSchedule + */ + userId?: number; + + /** + * 日程时间 + * + * @type {Date} + * @memberof SysSchedule + */ + scheduleTime?: Date | null; + + /** + * 日程内容 + * + * @type {string} + * @memberof SysSchedule + */ + content: string; +} diff --git a/Web/src/api-services/models/update-schedule-input.ts b/Web/src/api-services/models/update-schedule-input.ts new file mode 100644 index 00000000..091f849d --- /dev/null +++ b/Web/src/api-services/models/update-schedule-input.ts @@ -0,0 +1,118 @@ +/* tslint:disable */ +/* eslint-disable */ +/** + * Admin.NET 通用权限开发平台 + * 让 .NET 开发更简单、更通用、更流行。整合最新技术,模块插件式开发,前后端分离,开箱即用。 👮不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任! + * + * OpenAPI spec version: 1.0.0 + * + * + * NOTE: This class is auto generated by the swagger code generator program. + * https://github.com/swagger-api/swagger-codegen.git + * Do not edit the class manually. + */ + + /** + * + * + * @export + * @interface UpdateScheduleInput + */ +export interface UpdateScheduleInput { + + /** + * 雪花Id + * + * @type {number} + * @memberof UpdateScheduleInput + */ + id?: number; + + /** + * 创建时间 + * + * @type {Date} + * @memberof UpdateScheduleInput + */ + createTime?: Date; + + /** + * 更新时间 + * + * @type {Date} + * @memberof UpdateScheduleInput + */ + updateTime?: Date | null; + + /** + * 创建者Id + * + * @type {number} + * @memberof UpdateScheduleInput + */ + createUserId?: number | null; + + /** + * 创建者姓名 + * + * @type {string} + * @memberof UpdateScheduleInput + */ + createUserName?: string | null; + + /** + * 修改者Id + * + * @type {number} + * @memberof UpdateScheduleInput + */ + updateUserId?: number | null; + + /** + * 修改者姓名 + * + * @type {string} + * @memberof UpdateScheduleInput + */ + updateUserName?: string | null; + + /** + * 软删除 + * + * @type {boolean} + * @memberof UpdateScheduleInput + */ + isDelete?: boolean; + + /** + * 租户Id + * + * @type {number} + * @memberof UpdateScheduleInput + */ + tenantId?: number | null; + + /** + * 用户Id + * + * @type {number} + * @memberof UpdateScheduleInput + */ + userId?: number; + + /** + * 日程时间 + * + * @type {Date} + * @memberof UpdateScheduleInput + */ + scheduleTime?: Date | null; + + /** + * 日程内容 + * + * @type {string} + * @memberof UpdateScheduleInput + */ + content: string; +} diff --git a/Web/src/views/home/widgets/components/about.vue b/Web/src/views/home/widgets/components/about.vue index 54582019..3ce1bd81 100644 --- a/Web/src/views/home/widgets/components/about.vue +++ b/Web/src/views/home/widgets/components/about.vue @@ -32,5 +32,6 @@ export default { color: #999; margin-top: 10px; line-height: 1.8; + /* height: 100px; */ } diff --git a/Web/src/views/home/widgets/components/commit.vue b/Web/src/views/home/widgets/components/commit.vue index ad656593..a9e8b9e9 100644 --- a/Web/src/views/home/widgets/components/commit.vue +++ b/Web/src/views/home/widgets/components/commit.vue @@ -1,7 +1,9 @@ - 更新记录 + + 更新记录 + 更新记录 diff --git a/Web/src/views/home/widgets/components/schedule.vue b/Web/src/views/home/widgets/components/schedule.vue new file mode 100644 index 00000000..f5926c9c --- /dev/null +++ b/Web/src/views/home/widgets/components/schedule.vue @@ -0,0 +1,303 @@ + + + + + 我的日程 + 添加日程 + + + + + + + + + {{ data.day.split('-').slice(2).join('-') }} + + + + + + + + + + + + {{ item.content }} + + + + + + + + + + + + + + diff --git a/Web/src/views/home/widgets/components/scheduleEdit.vue b/Web/src/views/home/widgets/components/scheduleEdit.vue new file mode 100644 index 00000000..fd39757f --- /dev/null +++ b/Web/src/views/home/widgets/components/scheduleEdit.vue @@ -0,0 +1,93 @@ + + + + + + + {{ props.title }} + + + + + + + + + + + + + + + + + + + 取 消 + 确 定 + + + + + + + diff --git a/Web/src/views/home/widgets/components/timeing.vue b/Web/src/views/home/widgets/components/timer.vue similarity index 96% rename from Web/src/views/home/widgets/components/timeing.vue rename to Web/src/views/home/widgets/components/timer.vue index 7f8b1127..f6b3ae2d 100644 --- a/Web/src/views/home/widgets/components/timeing.vue +++ b/Web/src/views/home/widgets/components/timer.vue @@ -19,7 +19,7 @@ export default { }; - - diff --git a/Web/src/views/home/widgets/index.vue b/Web/src/views/home/widgets/index.vue index 5ce80685..d242645a 100644 --- a/Web/src/views/home/widgets/index.vue +++ b/Web/src/views/home/widgets/index.vue @@ -13,7 +13,7 @@ - + - + - {{ allComps[element].title }} + {{ allComps[element].title }} @@ -43,6 +43,7 @@ + @@ -111,7 +112,9 @@ - + + + {{ item.title }} @@ -132,7 +135,7 @@