😎1、同步升级 2、调整颜色json位置

This commit is contained in:
zuohuaijun 2024-06-21 00:50:46 +08:00
parent 613e50bd4c
commit 480c7b40f1
15 changed files with 164 additions and 20 deletions

View File

@ -17,7 +17,7 @@
<PackageReference Include="AngleSharp" Version="1.1.2" />
<PackageReference Include="AspectCore.Extensions.Reflection" Version="2.4.0" />
<PackageReference Include="AspNetCoreRateLimit" Version="5.0.0" />
<PackageReference Include="Elastic.Clients.Elasticsearch" Version="8.14.2" />
<PackageReference Include="Elastic.Clients.Elasticsearch" Version="8.14.3" />
<PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.4.1" />
<PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.4.1" />
<PackageReference Include="Furion.Pure" Version="4.9.4.1" />
@ -37,7 +37,7 @@
<PackageReference Include="SqlSugarCore" Version="5.1.4.158" />
<PackageReference Include="SSH.NET" Version="2024.0.0" />
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.4.0" />
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1029" />
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1030" />
<PackageReference Include="UAParser" Version="3.1.47" />
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
</ItemGroup>

View File

@ -168,7 +168,7 @@ public class SysWechatService : IDynamicApiController, ITransient
Url = input.Url,
MiniProgram = new CgibinMessageTemplateSendRequest.Types.MiniProgram
{
AppId = _wechatApiClientFactory._wechatOptions.WechatAppId,
AppId = _wechatApiClientFactory._wechatOptions.WxOpenAppId,
PagePath = input.MiniProgramPagePath,
},
Data = messageData

View File

@ -135,7 +135,7 @@
@:<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
@:<el-form-item label="@column.ColumnComment" prop="@(@column.LowerPropertyName)">
@:<el-select clearable v-model="ruleForm.@(@column.LowerPropertyName)" placeholder="请选择@(@column.ColumnComment)">
@:<el-option v-for="(item,index) in dl('@(@column.PropertyName)Enum')" :key="index" :value="@(@column.NetType == "string?" ? "item.value" : "Number(item.value)")" :label="`${item.name} (${item.code}) [${item.value}]`"></el-option>
@:<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="@(@column.NetType == "string?" ? "item.value" : "Number(item.value)")" :label="`${item.name} (${item.code}) [${item.value}]`"></el-option>
@:
</el-select>
@:
@ -167,13 +167,12 @@
</style>
<script lang="ts" setup>
import { ref,onMounted } from "vue";
import { getDictDataItem as di, getDictDataList as dl } from '/@@/utils/dict-utils';
import { ElMessage } from "element-plus";
import type { FormRules } from "element-plus";
@if(@Model.TableField.Any(x=>x.EffectType == "ConstSelector")){
@:import { getConstType } from "/@@/utils/constHelper";
}
@if(@Model.TableField.Any(x=>x.EffectType == "Select")){
}
@if(@Model.TableField.Any(x=>x.EffectType == "Select") || @Model.TableField.Any(x=>x.EffectType == "EnumSelector")){
@:import { getDictDataItem as di, getDictDataList as dl } from '/@@/utils/dict-utils';
}
@if(@Model.TableField.Any(x=>x.EffectType == "EnumSelector")){

View File

@ -63,7 +63,7 @@
}else if(@column.EffectType == "EnumSelector"){
@:<el-form-item label="@column.ColumnComment">
@:<el-select clearable="" v-model="queryParams.@(@column.LowerPropertyName)" placeholder="请选择@(@column.ColumnComment)">
@:<el-option v-for="(item,index) in dl('@(@column.PropertyName)Enum')" :key="index" :value="item.value" :label="`${item.name} (${item.code}) [${item.value}] `" />
@:<el-option v-for="(item,index) in dl('@(@column.DictTypeCode)')" :key="index" :value="item.value" :label="`${item.name} (${item.code}) [${item.value}] `" />
@:
</el-select>
@:
@ -165,7 +165,7 @@
else if(@column.EffectType == "EnumSelector"){
@:<el-table-column prop="@column.LowerPropertyName" label="@column.ColumnComment" @(column.WhetherSortable == "Y" ? "sortable='custom'" : "") show-overflow-tooltip="" >
@:<template #default="scope">
@:<el-tag :type="dv('@(@column.PropertyName)Enum', scope.row.@(@column.LowerPropertyName))?.tagType"> {{dv('@(@column.PropertyName)Enum', scope.row.@column.LowerPropertyName)?.name}}</el-tag>
@:<el-tag :type="dv('@(@column.DictTypeCode)', scope.row.@(@column.LowerPropertyName))?.tagType"> {{dv('@(@column.DictTypeCode)', scope.row.@column.LowerPropertyName)?.name}}</el-tag>
@:</template>
@:</el-table-column>
}

View File

@ -1,4 +1,4 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
@ -23,4 +23,10 @@ public class GoViewProData : EntityTenant
/// </summary>
[SugarColumn(ColumnDescription = "预览图片", ColumnDataType = StaticConfig.CodeFirst_BigString)]
public string? IndexImageData { get; set; }
/// <summary>
/// 背景图片
/// </summary>
[SugarColumn(ColumnDescription = "背景图片", ColumnDataType = StaticConfig.CodeFirst_BigString)]
public string? BackGroundImageData { get; set; }
}

View File

@ -1,4 +1,4 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
@ -36,6 +36,11 @@ public class GoViewProItemOutput
/// </summary>
public string IndexImage { get; set; }
/// <summary>
/// 背景图片url
/// </summary>
public string BackGroundImage { get; set; }
/// <summary>
/// 创建者Id
/// </summary>

View File

@ -1,4 +1,4 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
@ -249,4 +249,75 @@ public class GoViewProService : IDynamicApiController
var bytes = Convert.FromBase64String(projectData.IndexImageData);
return new FileStreamResult(new MemoryStream(bytes), "image/png");
}
/// <summary>
/// 上传背景图
/// </summary>
[DisplayName("上传背景图")]
public async Task<GoViewProUploadOutput> UploadBackGround(IFormFile @object)
{
// 文件名格式示例 13414795568325_index_preview.png
var fileNameSplit = @object.FileName.Split('_');
var idStr = fileNameSplit[0];
if (!long.TryParse(idStr, out var id)) return new GoViewProUploadOutput();
// 将预览图转换成 Base64
var ms = new MemoryStream();
await @object.CopyToAsync(ms);
var base64Image = Convert.ToBase64String(ms.ToArray());
// 保存
if (await _goViewProDataRep.IsAnyAsync(u => u.Id == id))
{
await _goViewProDataRep.AsUpdateable()
.SetColumns(u => new GoViewProData
{
BackGroundImageData = base64Image
})
.Where(u => u.Id == id)
.ExecuteCommandAsync();
}
else
{
await _goViewProDataRep.InsertAsync(new GoViewProData
{
Id = id,
BackGroundImageData = base64Image,
});
}
var output = new GoViewProUploadOutput
{
Id = id,
BucketName = null,
CreateTime = null,
CreateUserId = null,
FileName = null,
FileSize = 0,
FileSuffix = "png",
FileUrl = $"api/goview/project/getBackGroundImage/{id}",
UpdateTime = null,
UpdateUserId = null
};
return output;
}
/// <summary>
/// 获取背景图
/// </summary>
/// <returns></returns>
[AllowAnonymous]
[NonUnify]
[ApiDescriptionSettings(Name = "GetBackGroundImage")]
[DisplayName("获取背景图")]
public async Task<IActionResult> GetBackGroundImage(long id)
{
var projectData = await _goViewProDataRep.AsQueryable().IgnoreColumns(u => u.Content).FirstAsync(u => u.Id == id);
if (projectData?.BackGroundImageData == null)
return new NoContentResult();
var bytes = Convert.FromBase64String(projectData.BackGroundImageData);
return new FileStreamResult(new MemoryStream(bytes), "image/png");
}
}

View File

@ -1,4 +1,4 @@
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//

View File

@ -2,7 +2,7 @@
"name": "admin.net.pro",
"type": "module",
"version": "2.4.33",
"lastBuildTime": "2024.6.16",
"lastBuildTime": "2024.6.21",
"description": "Admin.NET 站在巨人肩膀上的 .NET 通用权限开发框架",
"author": "zuohuaijun",
"license": "MIT",
@ -38,7 +38,7 @@
"jsplumb": "^2.15.6",
"lodash-es": "^4.17.21",
"mitt": "^3.0.1",
"monaco-editor": "^0.49.0",
"monaco-editor": "^0.50.0",
"nprogress": "^0.2.0",
"ol": "^9.2.4",
"pinia": "^2.1.7",

View File

@ -468,7 +468,7 @@ import Watermark from '/@/utils/watermark';
import commonFunction from '/@/utils/commonFunction';
import other from '/@/utils/other';
import mittBus from '/@/utils/mitt';
import chineseColorArr from '/public/colors';
import chineseColorArr from './colors.json';
//
const { locale } = useI18n();

View File

@ -31,7 +31,7 @@
<el-row :gutter="15" class="home-card-three">
<el-col :xs="24" :sm="10" :md="10" :lg="8" :xl="8">
<div class="home-card-item">
<div class="home-card-item-title">快捷导航工具--</div>
<div class="home-card-item-title">快捷导航工具</div>
<div class="home-monitor">
<div class="flex-warp">
<div class="flex-warp-item" v-for="(v, k) in state.homeThree" :key="k">

View File

@ -0,0 +1,59 @@
<template>
<el-card shadow="hover" header="更新记录">
<template #header>
<el-icon style="display: inline; vertical-align: middle"> <ele-Refresh /> </el-icon>
<span style=""> 更新记录 </span>
</template>
<div class="commit">
<el-timeline style="max-width: 600px" v-if="state.list.length > 0">
<el-timeline-item v-for="(item, index) in state.list" :key="index" :timestamp="item.commit.committer.date">
<el-link :href="item.html_url" target="_blank"> {{ item.commit.message }}</el-link>
</el-timeline-item>
</el-timeline>
<el-empty v-else description="空"></el-empty>
</div>
</el-card>
</template>
<script lang="ts">
export default {
title: '更新记录',
icon: 'ele-Message',
description: '当前项目更新记录',
};
</script>
<script setup lang="ts" name="commit">
// import axios from 'axios';
import { reactive, onMounted } from 'vue';
const state = reactive({
list: [] as any,
});
onMounted(() => {
axios({
method: 'get',
url: 'https://gitee.com/api/v5/repos/zuohuaijun/Admin.NET/commits',
params: {
page: 1,
per_page: 10,
},
}).then((res: any) => {
state.list = res.data;
});
});
</script>
<style scoped>
.progress {
text-align: center;
}
.progress .percentage-value {
font-size: 28px;
}
.progress .percentage-label {
font-size: 12px;
margin-top: 10px;
}
</style>

View File

@ -46,7 +46,7 @@ export default {
<script setup lang="ts" name="welcome">
const godoc = () => {
window.open('https://gitee.com/zuohuaijun/Admin.NET.git');
window.open('http://101.43.53.74:5050/');
};
</script>

View File

@ -144,7 +144,11 @@ interface Grid {
}
const defaultGrid = {
layout: [12, 6, 6],
copmsList: [['welcome'], ['about', 'ver'], ['timeing', 'progressing']],
copmsList: [
['welcome', 'commit'],
['about', 'ver'],
['timeing', 'progressing'],
],
};
const customizing = ref<boolean>(false);
@ -178,7 +182,7 @@ const availableCompsList = computed(() => {
});
const myCompsList = computed(() => {
const myGrid = Local.get('DASHBOARDGRID') || ['welcome', 'myapp', 'ver', 'timeing', 'progressing', 'echarts', 'about'];
const myGrid = Local.get('DASHBOARDGRID') || ['welcome', 'myapp', 'ver', 'timeing', 'progressing', 'echarts', 'about', 'commit'];
return availableCompsList.value.filter((comp) => !comp.disabled && myGrid.includes(comp.key));
});