Przeglądaj źródła

😎1、增加身份证解析 2、升级依赖 3、代码整理

zuohuaijun 1 rok temu
rodzic
commit
89750ff16b

+ 2 - 2
Admin.NET/Admin.NET.Core/Admin.NET.Core.csproj

@@ -32,12 +32,12 @@
     <PackageReference Include="QRCoder" Version="1.5.1" />
     <PackageReference Include="RabbitMQ.Client" Version="6.8.1" />
     <PackageReference Include="SixLabors.ImageSharp.Web" Version="3.1.2" />
-    <PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.2.0" />
+    <PackageReference Include="SKIT.FlurlHttpClient.Wechat.Api" Version="3.3.0" />
     <PackageReference Include="SKIT.FlurlHttpClient.Wechat.TenpayV3" Version="3.4.0" />
     <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.1021" />
+    <PackageReference Include="TencentCloudSDK.Sms" Version="3.0.1022" />
     <PackageReference Include="UAParser" Version="3.1.47" />
     <PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
   </ItemGroup>

+ 5 - 4
Admin.NET/Admin.NET.Core/Service/Org/SysOrgService.cs

@@ -294,7 +294,7 @@ public class SysOrgService : IDynamicApiController, ITransient
     }
 
     /// <summary>
-    /// 获取当前登录用户Id获取机构Id集合
+    /// 获取当前用户机构Id集合
     /// </summary>
     /// <returns></returns>
     [NonAction]
@@ -304,6 +304,7 @@ public class SysOrgService : IDynamicApiController, ITransient
             return new List<long>();
         return await GetUserOrgIdList(_userManager.UserId, _userManager.OrgId);
     }
+
     /// <summary>
     /// 根据指定用户Id获取机构Id集合
     /// </summary>
@@ -334,7 +335,7 @@ public class SysOrgService : IDynamicApiController, ITransient
     /// 获取用户角色机构Id集合
     /// </summary>
     /// <param name="userId"></param>
-    /// <param name="userOrgId">用户的机构ID</param>
+    /// <param name="userOrgId">用户的机构Id</param>
     /// <returns></returns>
     private async Task<List<long>> GetUserRoleOrgIdList(long userId, long userOrgId)
     {
@@ -350,7 +351,7 @@ public class SysOrgService : IDynamicApiController, ITransient
     /// </summary>
     /// <param name="roleList"></param>
     /// <param name="userId"></param>
-    /// <param name="userOrgId">用户的机构ID</param>
+    /// <param name="userOrgId">用户的机构Id</param>
     /// <returns></returns>
     private async Task<List<long>> GetUserOrgIdList(List<SysRole> roleList, long userId, long userOrgId)
     {
@@ -395,7 +396,7 @@ public class SysOrgService : IDynamicApiController, ITransient
     /// <summary>
     /// 根据数据范围获取机构Id集合
     /// </summary>
-    /// <param name="userOrgId">用户的机构ID</param>
+    /// <param name="userOrgId">用户的机构Id</param>
     /// <param name="dataScope"></param>
     /// <returns></returns>
     private async Task<List<long>> GetOrgIdListByDataScope(long userOrgId, int dataScope)

+ 1 - 1
Admin.NET/Plugins/Admin.NET.Plugin.ReZero/Admin.NET.Plugin.ReZero.csproj

@@ -24,7 +24,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Rezero.Api" Version="1.5.9" />
+    <PackageReference Include="Rezero.Api" Version="1.5.15" />
   </ItemGroup>  
 
   <ItemGroup>

+ 2 - 2
Web/package.json

@@ -29,7 +29,7 @@
 		"echarts": "^5.5.0",
 		"echarts-gl": "^2.0.9",
 		"echarts-wordcloud": "^2.1.0",
-		"element-plus": "^2.7.4",
+		"element-plus": "^2.7.5",
 		"js-cookie": "^3.0.5",
 		"js-table2excel": "^1.1.2",
 		"jsplumb": "^2.15.6",
@@ -82,7 +82,7 @@
 		"sass": "^1.77.4",
 		"terser": "^5.31.1",
 		"typescript": "^5.4.5",
-		"vite": "^5.2.12",
+		"vite": "^5.2.13",
 		"vite-plugin-cdn-import": "^1.0.1",
 		"vite-plugin-compression2": "^1.1.1",
 		"vite-plugin-vue-setup-extend-plus": "^0.1.0",

+ 28 - 4
Web/src/layout/navBars/topBar/setings.vue

@@ -96,21 +96,45 @@
 				<div class="layout-breadcrumb-seting-bar-flex mt11">
 					<div class="layout-breadcrumb-seting-bar-flex-label">{{ $t('message.layout.twoColumnsLogoHeight') }}</div>
 					<div class="layout-breadcrumb-seting-bar-flex-value">
-						<el-input-number v-model="getThemeConfig.columnsLogoHeight" controls-position="right" :min="1" :max="9999" @change="onColumnsLogoHeightChange" size="small" style="width: 90px; margin-right: 1px">
+						<el-input-number
+							v-model="getThemeConfig.columnsLogoHeight"
+							controls-position="right"
+							:min="1"
+							:max="9999"
+							@change="onColumnsLogoHeightChange"
+							size="small"
+							style="width: 90px; margin-right: 1px"
+						>
 						</el-input-number>
 					</div>
 				</div>
 				<div class="layout-breadcrumb-seting-bar-flex mt11">
 					<div class="layout-breadcrumb-seting-bar-flex-label">{{ $t('message.layout.twoColumnsMenuWidth') }}</div>
 					<div class="layout-breadcrumb-seting-bar-flex-value">
-						<el-input-number v-model="getThemeConfig.columnsMenuWidth" controls-position="right" :min="1" :max="9999" @change="onColumnsMenuWidthChange" size="small" style="width: 90px; margin-right: 1px">
+						<el-input-number
+							v-model="getThemeConfig.columnsMenuWidth"
+							controls-position="right"
+							:min="1"
+							:max="9999"
+							@change="onColumnsMenuWidthChange"
+							size="small"
+							style="width: 90px; margin-right: 1px"
+						>
 						</el-input-number>
 					</div>
 				</div>
 				<div class="layout-breadcrumb-seting-bar-flex mt11">
 					<div class="layout-breadcrumb-seting-bar-flex-label">{{ $t('message.layout.twoColumnsMenuHeight') }}</div>
 					<div class="layout-breadcrumb-seting-bar-flex-value">
-						<el-input-number v-model="getThemeConfig.columnsMenuHeight" controls-position="right" :min="1" :max="9999" @change="onColumnsMenuHeightChange" size="small" style="width: 90px; margin-right: 1px">
+						<el-input-number
+							v-model="getThemeConfig.columnsMenuHeight"
+							controls-position="right"
+							:min="1"
+							:max="9999"
+							@change="onColumnsMenuHeightChange"
+							size="small"
+							style="width: 90px; margin-right: 1px"
+						>
 						</el-input-number>
 					</div>
 				</div>
@@ -637,7 +661,7 @@ const onCopyConfigClick = () => {
 // 一键恢复默认
 const onResetConfigClick = () => {
 	Local.clear();
-    Session.clear();
+	Session.clear();
 	window.location.reload();
 	// @ts-ignore
 	Local.set('version', __NEXT_VERSION__);

+ 3 - 3
Web/src/stores/userInfo.ts

@@ -144,7 +144,7 @@ export const useUserInfo = defineStore('userInfo', {
 					if (element.value == _val) {
 						return element;
 					}
-				}                
+				}
 			}
 			return {};
 		},
@@ -161,12 +161,12 @@ export const useUserInfo = defineStore('userInfo', {
 			}
 		},
 
-		// 根据字典类型字典数据
+		// 根据字典类型获取字典数据
 		getDictDatasByCode(dictTypeCode: string) {
 			return this.dictList[dictTypeCode] || [];
 		},
 
-		// 根据字典类型字典数据,值转为数字类型
+		// 根据字典类型获取字典数据(值转为数字类型)
 		getDictIntDatasByCode(dictTypeCode: string) {
 			var ds = this.dictListInt[dictTypeCode];
 			if (ds) {

+ 20 - 16
Web/src/utils/toolsValidate.ts

@@ -238,8 +238,7 @@ export function verifyPassword(val: string) {
  */
 export function verifyPasswordPowerful(val: string) {
 	// false: 强密码不正确
-	if (!/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val))
-		return false;
+	if (!/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) return false;
 	// true: 强密码正确
 	else return true;
 }
@@ -259,8 +258,7 @@ export function verifyPasswordStrength(val: string) {
 	// 中:字母+数字,字母+特殊字符,数字+特殊字符
 	if (/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) v = '中';
 	// 强:字母+数字+特殊字符
-	if (/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val))
-		v = '强';
+	if (/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) v = '强';
 	// 返回结果
 	return v;
 }
@@ -272,12 +270,7 @@ export function verifyPasswordStrength(val: string) {
  */
 export function verifyIPAddress(val: string) {
 	// false: IP地址不正确
-	if (
-		!/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/.test(
-			val
-		)
-	)
-		return false;
+	if (!/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/.test(val)) return false;
 	// true: IP地址正确
 	else return true;
 }
@@ -289,12 +282,7 @@ export function verifyIPAddress(val: string) {
  */
 export function verifyEmail(val: string) {
 	// false: 邮箱不正确
-	if (
-		!/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
-			val
-		)
-	)
-		return false;
+	if (!/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(val)) return false;
 	// true: 邮箱正确
 	else return true;
 }
@@ -368,3 +356,19 @@ export function verifyCarNum(val: string) {
 	// true:车牌号正确
 	else return true;
 }
+
+/**
+ * 解析身份证
+ */
+export function judgementIdCard(idCard: string) {
+	let entity = {} as any;
+	let currentDate = new Date();
+	let yearNow = currentDate.getFullYear();
+	let birthDateCode = idCard.substring(6, 14);
+	let genderCode = parseInt(idCard.substring(16, 17), 10);
+
+	entity.sex = genderCode % 2 === 0 ? 2 : 1;
+	entity.age = yearNow - parseInt(birthDateCode.substring(0, 4));
+	entity.birthday = `${birthDateCode.substring(0, 4)}-${birthDateCode.substring(4, 6)}-${birthDateCode.substring(6, 8)}`;
+	return entity;
+}