😎1、修复前端密匙可能空问题 2、隐藏代码生成时统计函数 3、应用层默认添加其他命名空间
This commit is contained in:
parent
378a41914c
commit
22359b7b94
@ -4,10 +4,13 @@
|
||||
//
|
||||
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
|
||||
|
||||
global using Admin.NET.Application.Entity;
|
||||
global using Admin.NET.Core;
|
||||
global using Admin.NET.Core.Service;
|
||||
global using Furion;
|
||||
global using Furion.DependencyInjection;
|
||||
global using Furion.DynamicApiController;
|
||||
global using Furion.EventBus;
|
||||
global using Furion.FriendlyException;
|
||||
global using Mapster;
|
||||
global using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
@ -56,7 +56,7 @@
|
||||
<PackageReference Include="SSH.NET" Version="2024.2.0" />
|
||||
<PackageReference Include="System.Linq.Dynamic.Core" Version="1.6.0.2" />
|
||||
<PackageReference Include="System.Net.Http" Version="4.3.4" />
|
||||
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1208" />
|
||||
<PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1209" />
|
||||
<PackageReference Include="UAParser" Version="3.1.47" />
|
||||
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
|
||||
</ItemGroup>
|
||||
|
||||
@ -203,7 +203,7 @@ if (@column.ColumnKey == "True"){
|
||||
}
|
||||
.Select(it => new @(@Model.ClassName)Output
|
||||
{
|
||||
count = SqlFunc.AggregateCount(it.Id),
|
||||
// count = SqlFunc.AggregateCount(it.Id),
|
||||
@foreach (var column in Model.TableField){
|
||||
if (@column.IsGroupBy == "Y"){
|
||||
@: @(@column.PropertyName) = it.@(@column.PropertyName),
|
||||
|
||||
@ -77,7 +77,7 @@
|
||||
"vue-signature-pad": "^3.0.2",
|
||||
"vue3-flag-icons": "^0.0.3",
|
||||
"vue3-tree-org": "^4.2.2",
|
||||
"vxe-pc-ui": "^4.5.2",
|
||||
"vxe-pc-ui": "^4.5.3",
|
||||
"vxe-table": "^4.12.1",
|
||||
"vxe-table-plugin-element": "^4.0.4",
|
||||
"vxe-table-plugin-export-xlsx": "^4.0.7",
|
||||
@ -96,7 +96,7 @@
|
||||
"@vitejs/plugin-vue": "^5.2.3",
|
||||
"@vitejs/plugin-vue-jsx": "^4.1.2",
|
||||
"@vue/compiler-sfc": "^3.5.13",
|
||||
"code-inspector-plugin": "^0.20.6",
|
||||
"code-inspector-plugin": "^0.20.7",
|
||||
"eslint": "^9.23.0",
|
||||
"eslint-plugin-vue": "^10.0.0",
|
||||
"globals": "^16.0.0",
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
<i v-if="leftIcon" class="notice-bar-warp-left-icon" :class="leftIcon"></i>
|
||||
<div class="notice-bar-warp-text-box">
|
||||
<div class="notice-bar-warp-text" ref="noticeBarTextRef">
|
||||
<div v-html="state.noticeTitle" data-slate-editor />
|
||||
<div v-html="props.text" data-slate-editor />
|
||||
</div>
|
||||
</div>
|
||||
<!-- <SvgIcon :name="rightIcon" v-if="rightIcon" class="notice-bar-warp-right-icon" @click="onRightIconClick" /> -->
|
||||
@ -16,9 +16,6 @@
|
||||
import { reactive, ref, onMounted, nextTick } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { SysNoticeApi } from '/@/api-services/api';
|
||||
|
||||
const i18n = useI18n();
|
||||
|
||||
const props = defineProps({
|
||||
@ -34,7 +31,6 @@ const props = defineProps({
|
||||
leftIcon: { type: String, default: 'iconfont icon-tongzhi2' }, // 自定义左侧图标
|
||||
rightIcon: { type: String, default: '' }, // 自定义右侧图标
|
||||
});
|
||||
const displayText = ref(undefined);
|
||||
|
||||
const emit = defineEmits(['close', 'link']);
|
||||
const noticeBarWarpRef = ref<HTMLDivElement | null>(null);
|
||||
@ -44,16 +40,11 @@ const state = reactive({
|
||||
warpOWidth: 0,
|
||||
textOWidth: 0,
|
||||
animationDuration: 0,
|
||||
noticeTitle: '',
|
||||
});
|
||||
|
||||
// 页面初始化
|
||||
onMounted(async () => {
|
||||
if (!props.scrollable) initAnimation();
|
||||
|
||||
// 获取最新的通知公告标题
|
||||
var res = await getAPI(SysNoticeApi).apiSysNoticeNoticeTitleGet();
|
||||
state.noticeTitle = res.data.result?.title ?? ''; // i18n.t(res.data.result?.title ?? '');
|
||||
});
|
||||
|
||||
// 初始化动画
|
||||
|
||||
@ -75,17 +75,18 @@
|
||||
|
||||
<script setup lang="ts" name="layoutLockScreen">
|
||||
import { nextTick, onMounted, reactive, ref, onUnmounted } from 'vue';
|
||||
import { formatDate } from '/@/utils/formatTime';
|
||||
import { Local } from '/@/utils/storage';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { useRoute } from 'vue-router';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { useThemeConfig } from '/@/stores/themeConfig';
|
||||
import { useUserInfo } from '/@/stores/userInfo';
|
||||
import { sm2 } from 'sm-crypto-v2';
|
||||
import { feature, getAPI } from '/@/utils/axios-utils';
|
||||
import { SysAuthApi } from '/@/api-services';
|
||||
import { useRoute } from 'vue-router';
|
||||
import { loadSysInfo } from '/@/utils/sysInfo';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { formatDate } from '/@/utils/formatTime';
|
||||
import { Local } from '/@/utils/storage';
|
||||
|
||||
import { feature, getAPI } from '/@/utils/axios-utils';
|
||||
import { SysAuthApi, SysConfigApi } from '/@/api-services';
|
||||
|
||||
const { t, locale } = useI18n();
|
||||
|
||||
@ -224,7 +225,11 @@ const onLockScreenSubmit = async () => {
|
||||
return;
|
||||
}
|
||||
// SM2加密密码
|
||||
const publicKey = window.__env__.VITE_SM_PUBLIC_KEY;
|
||||
var publicKey = window.__env__.VITE_SM_PUBLIC_KEY;
|
||||
if (publicKey == '') {
|
||||
var res1 = await getAPI(SysConfigApi).apiSysConfigSmPublicKeyGet();
|
||||
publicKey = window.__env__.VITE_SM_PUBLIC_KEY = res1.data.result ?? '';
|
||||
}
|
||||
const password = sm2.doEncrypt(state.lockScreenPassword, publicKey, 1);
|
||||
const [err, res] = await feature(getAPI(SysAuthApi).apiSysAuthUnLockScreenPost(password));
|
||||
if (err) {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div style="height: 100vh; overflow: hidden">
|
||||
<div class="noticebar" style="display: flex">
|
||||
<NoticeBar />
|
||||
<NoticeBar :text="noticeTitle" />
|
||||
<div class="editlayout">
|
||||
<el-tooltip content="编辑/保存布局" placement="bottom">
|
||||
<el-button v-if="customizing" type="warning" icon="ele-Check" circle plain @click="save"></el-button>
|
||||
@ -140,10 +140,14 @@
|
||||
import { ref, computed, onMounted, nextTick } from 'vue';
|
||||
import { VueDraggable } from 'vue-draggable-plus';
|
||||
import { clone } from '/@/utils/arrayOperation';
|
||||
import allComps from './components/index';
|
||||
import { Local } from '/@/utils/storage';
|
||||
|
||||
import allComps from './components/index';
|
||||
import NoticeBar from '/@/components/noticeBar/index.vue';
|
||||
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
import { SysNoticeApi } from '/@/api-services';
|
||||
|
||||
interface Grid {
|
||||
layout: number[];
|
||||
copmsList: string[][];
|
||||
@ -161,12 +165,17 @@ const customizing = ref<boolean>(false);
|
||||
const allCompsList = ref(allComps);
|
||||
const widgetsRef = ref<HTMLElement | null>(null);
|
||||
const grid = ref<Grid>(clone(defaultGrid));
|
||||
const noticeTitle = ref<string>('');
|
||||
|
||||
onMounted(() => {
|
||||
onMounted(async () => {
|
||||
const savedGrid = Local.get('grid');
|
||||
if (savedGrid) {
|
||||
grid.value = savedGrid;
|
||||
}
|
||||
|
||||
// 获取最新的通知公告标题
|
||||
var res = await getAPI(SysNoticeApi).apiSysNoticeNoticeTitleGet();
|
||||
noticeTitle.value = res.data.result?.title ?? ''; // i18n.t(res.data.result?.title ?? '');
|
||||
});
|
||||
|
||||
const availableCompsList = computed(() => {
|
||||
|
||||
3
Web/src/views/system/cache/index.vue
vendored
3
Web/src/views/system/cache/index.vue
vendored
@ -55,12 +55,13 @@
|
||||
<script lang="ts" setup name="sysCache">
|
||||
import { defineAsyncComponent, onMounted, reactive, ref } from 'vue';
|
||||
import { ElMessageBox, ElMessage, ElTree } from 'element-plus';
|
||||
import NoticeBar from '/@/components/noticeBar/index.vue';
|
||||
import VueJsonPretty from 'vue-json-pretty';
|
||||
import 'vue-json-pretty/lib/styles.css';
|
||||
import { Splitpanes, Pane } from 'splitpanes';
|
||||
import 'splitpanes/dist/splitpanes.css';
|
||||
|
||||
import NoticeBar from '/@/components/noticeBar/index.vue';
|
||||
|
||||
const scEcharts = defineAsyncComponent(() => import('/@/components/scEcharts/index.vue'));
|
||||
|
||||
import { getAPI } from '/@/utils/axios-utils';
|
||||
|
||||
@ -113,7 +113,7 @@
|
||||
<el-tag size="large" round style="border: 1 solid var(--el-border-color)">
|
||||
<div style="display: inline-flex">
|
||||
<div>{{ d.name }}</div>
|
||||
<div style="color: red; font-size: 9px; margin-left: 3px">v{{ d.version }}</div>
|
||||
<div style="color: red; font-size: 10px; margin-left: 3px">v{{ d.version }}</div>
|
||||
</div>
|
||||
</el-tag>
|
||||
</div>
|
||||
|
||||
@ -46,7 +46,7 @@ import { ElMessage } from 'element-plus';
|
||||
import { sm2 } from 'sm-crypto-v2';
|
||||
|
||||
import { clearAccessTokens, getAPI } from '/@/utils/axios-utils';
|
||||
import { SysUserApi } from '/@/api-services/api';
|
||||
import { SysConfigApi, SysUserApi } from '/@/api-services/api';
|
||||
import { ChangePwdInput } from '/@/api-services/models';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
@ -76,8 +76,12 @@ const submit = () => {
|
||||
if (!valid) return;
|
||||
|
||||
// SM2加密密码
|
||||
const cpwd: ChangePwdInput = { passwordOld: '', passwordNew: '' };
|
||||
const publicKey = window.__env__.VITE_SM_PUBLIC_KEY;
|
||||
var cpwd: ChangePwdInput = { passwordOld: '', passwordNew: '' };
|
||||
var publicKey = window.__env__.VITE_SM_PUBLIC_KEY;
|
||||
if (publicKey == '') {
|
||||
var res = await getAPI(SysConfigApi).apiSysConfigSmPublicKeyGet();
|
||||
publicKey = window.__env__.VITE_SM_PUBLIC_KEY = res.data.result ?? '';
|
||||
}
|
||||
cpwd.passwordOld = sm2.doEncrypt(state.ruleForm.passwordOld, publicKey, 1);
|
||||
cpwd.passwordNew = sm2.doEncrypt(state.ruleForm.passwordNew, publicKey, 1);
|
||||
await getAPI(SysUserApi).apiSysUserChangePwdPost(cpwd);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user