lishuangjiang@potevio.com 1 éve
szülő
commit
d20510f7bd

+ 22 - 0
sso-module-system/sso-module-system-biz/src/main/java/com/poteviohealth/cgp/sso/module/system/controller/admin/dept/vo/dept/DeptPageReqVO.java

@@ -0,0 +1,22 @@
+package com.poteviohealth.cgp.sso.module.system.controller.admin.dept.vo.dept;
+
+import com.poteviohealth.cgp.sso.framework.common.pojo.PageParam;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Schema(description = "管理后台 - 部门分页 Request VO")
+@Data
+@EqualsAndHashCode(callSuper = true)
+public class DeptPageReqVO extends PageParam {
+
+    @Schema(description = "部门编码,模糊匹配", example = "sso")
+    private String code;
+
+    @Schema(description = "部门名称,模糊匹配", example = "中康科")
+    private String name;
+
+    @Schema(description = "展示状态,参见 CommonStatusEnum 枚举类", example = "1")
+    private Integer status;
+
+}

BIN
sso-ui/sso-ui-admin-vue3/src/assets/imgs/login/logo.png


BIN
sso-ui/sso-ui-admin-vue3/src/assets/imgs/main/bg2.png


BIN
sso-ui/sso-ui-admin-vue3/src/assets/imgs/main/password.png


+ 277 - 0
sso-ui/sso-ui-admin-vue3/src/utils/checkPassword.ts

@@ -0,0 +1,277 @@
+/**
+ * 数字
+ */
+const REG_NUMBER:string  = ".*\\d+.*";
+/**
+ * 小写字母
+ */
+const REG_UPPERCASE:string = ".*[A-Z]+.*";
+/**
+ * 大写字母
+ */
+const REG_LOWERCASE:string = ".*[a-z]+.*";
+/**
+ * 特殊符号(~!@#$%^&*()_+|<>,.?/:;'[]{}\)
+ */
+const REG_SYMBOL:string = ".*[~!@#$%^&*()_+|<>,.?/:;'\\[\\]{}\"]+.*";
+/**
+ * 键盘字符表(小写)
+ * 非shift键盘字符表
+ */
+const CHAR_TABLE1:string[][] = [
+  ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '-', '=', '\0'],
+  ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '[', ']', '\\'],
+  ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ';', '\'', '\0', '\0'],
+  ['z', 'x', 'c', 'v', 'b', 'n', 'm', ',', '.', '/', '\0', '\0', '\0']];
+/**
+ * shift键盘的字符表
+ */
+const CHAR_TABLE2:string[][] = [
+  ['!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '\0'],
+  ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', '{', '}', '|'],
+  ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ':', '"', '\0', '\0'],
+  ['z', 'x', 'c', 'v', 'b', 'n', 'm', '<', '>', '?', '\0', '\0', '\0']];
+
+/**
+ * 校验密码是否符合条件
+ * @param password 密码
+ * @param username 用户名
+ */
+export const checkPasswordRule = (password:string,username:string) => {
+  if (password === '' || password.length < 8 || password.length > 16) {
+    // console.log("长度小于8,或大于32");
+    return "密码长度应大于8小于16";
+  } if (password.indexOf(username) !== -1) {
+    return "请勿包含用户名";
+  }
+  // if (isContinuousChar(password)) {
+  //
+  //   return "请勿包含3个及以上相同或连续的字符";
+  // }
+  // if (isKeyBoardContinuousChar(password)) {
+  //   // console.log("包含3个及以上键盘连续字符");
+  //   return "请勿包含3个及以上键盘连续字符";
+  // }
+  let i:number = 0;
+  if (password.match(REG_NUMBER)) i++;
+  if (password.match(REG_LOWERCASE)) i++;
+  if (password.match(REG_UPPERCASE)) i++;
+  if (password.match(REG_SYMBOL)) i++;
+  if (i < 2) {
+
+    return "数字、小写字母、大写字母、特殊字符,至少包含两种";
+  }
+
+  return "校验通过";
+}
+
+/**
+ * 是否包含3个及以上相同或字典连续字符
+ */
+// const isContinuousChar = (password:string) => {
+//   let chars: string[] = password.split('')
+//   let charCode: number[] = [];
+//   for (let i = 0; i < chars.length - 2; i++) {
+//     charCode[i] = chars[i].charCodeAt(0)
+//   }
+//   for (let i = 0; i < charCode.length - 2; i++) {
+//     let n1 = charCode[i];
+//     let n2 = charCode[i + 1];
+//     let n3 = charCode[i + 2];
+//     // 判断重复字符
+//     if (n1 == n2 && n1 == n3) {
+//       return true;
+//     }
+//     // 判断连续字符: 正序 + 倒序
+//     if ((n1 + 1 == n2 && n1 + 2 == n3) || (n1 - 1 == n2 && n1 - 2 == n3)) {
+//       return true;
+//     }
+//   }
+//   return false;
+// }
+/**
+ * 是否包含3个及以上键盘连续字符
+ * @param password 待匹配的字符串
+ */
+// const isKeyBoardContinuousChar = (password:string) => {
+//   if (password === '') {
+//     return false;
+//   }
+//   //考虑大小写,都转换成小写字母
+//   let lpStrChars: string[] = password.toLowerCase().split('')
+//   // 获取字符串长度
+//   let nStrLen: number = lpStrChars.length;
+//   // 定义位置数组:row - 行,col - column 列
+//   const pRowCharPos:number[] = new Array(nStrLen).fill('')
+//   const pColCharPos: number[] = new Array(nStrLen).fill('')
+//   for (let i = 0; i < nStrLen; i++) {
+//     let chLower: string = lpStrChars[i];
+//     pColCharPos[i] = -1;
+//     // 检索在表1中的位置,构建位置数组
+//     for (let nRowTable1Idx = 0; nRowTable1Idx < 4; nRowTable1Idx++) {
+//       for (let nColTable1Idx = 0; nColTable1Idx < 13; nColTable1Idx++) {
+//         if (chLower == CHAR_TABLE1[nRowTable1Idx][nColTable1Idx]) {
+//           pRowCharPos[i] = nRowTable1Idx;
+//           pColCharPos[i] = nColTable1Idx;
+//         }
+//       }
+//     }
+//     // 在表1中没找到,到表二中去找,找到则continue
+//     if (pColCharPos[i] >= 0) {
+//       continue;
+//     }
+//     // 检索在表2中的位置,构建位置数组
+//     for (let nRowTable2Idx = 0; nRowTable2Idx < 4; nRowTable2Idx++) {
+//       for (let nColTable2Idx = 0; nColTable2Idx < 13; nColTable2Idx++) {
+//         if (chLower == CHAR_TABLE2[nRowTable2Idx][nColTable2Idx]) {
+//           pRowCharPos[i] = nRowTable2Idx;
+//           pColCharPos[i] = nColTable2Idx;
+//         }
+//       }
+//     }
+//   }
+//   // 匹配坐标连线
+//   for (let j = 1; j <= nStrLen - 2; j++) {
+//     //同一行
+//     if (pRowCharPos[j - 1] == pRowCharPos[j] && pRowCharPos[j] == pRowCharPos[j + 1]) {
+//       // 键盘行正向连续(asd)或者键盘行反向连续(dsa)
+//       if ((pColCharPos[j - 1] + 1 == pColCharPos[j] && pColCharPos[j] + 1 == pColCharPos[j + 1]) ||
+//         (pColCharPos[j + 1] + 1 == pColCharPos[j] && pColCharPos[j] + 1 == pColCharPos[j - 1])) {
+//         return true;
+//       }
+//     }
+//     //同一列
+//     if (pColCharPos[j - 1] == pColCharPos[j] && pColCharPos[j] == pColCharPos[j + 1]) {
+//       //键盘列连续(qaz)或者键盘列反向连续(zaq)
+//       if ((pRowCharPos[j - 1] + 1 == pRowCharPos[j] && pRowCharPos[j] + 1 == pRowCharPos[j + 1]) ||
+//         (pRowCharPos[j - 1] - 1 == pRowCharPos[j] && pRowCharPos[j] - 1 == pRowCharPos[j + 1])) {
+//         return true;
+//       }
+//     }
+//   }
+//   return false;
+// }
+
+
+/**
+ * 密码强度校验
+ */
+/**
+ * 长度
+ * @param str
+ */
+// const length = (str:string) => {
+//   if(str.length<5){
+//     return 5;
+//   }else if(str.length<8){
+//     return 10;
+//   }else{
+//     return 25;
+//   }
+// }
+/**
+ * 字母
+ * @param str
+ */
+// const letters = (str: string) => {
+//   let count1=0,count2=0;
+//   for(let i=0;i<str.length;i++){
+//     if(str.charAt(i)>='a'&&str.charAt(i)<='z'){
+//       count1++;
+//     }
+//     if(str.charAt(i)>='A'&&str.charAt(i)<='Z'){
+//       count2++;
+//     }
+//   }
+//   if(count1==0 && count2==0){
+//     return 0;
+//   }
+//   if(count1!=0 && count2!=0){
+//     return 20;
+//   }
+//   return 10;
+// }
+
+/**
+ * 数字
+ * @param str
+ */
+// const numbers = (str: string) => {
+//   let count=0;
+//   for(let i=0;i<str.length;i++){
+//     if(str.charAt(i)>='0'&&str.charAt(i)<='9'){
+//       count++;
+//     }
+//   }
+//   if(count==0){
+//     return 0;
+//   }
+//   if(count==1){
+//     return 10;
+//   }
+//   return 20;
+// }
+/**
+ * 符号
+ * @param str
+ */
+// const symbols = (str: string) => {
+//   let count=0;
+//   for(let i=0;i<str.length;i++){
+//     if(str.charCodeAt(i)>=0x21 && str.charCodeAt(i)<=0x2F ||
+//       str.charCodeAt(i)>=0x3A && str.charCodeAt(i)<=0x40 ||
+//       str.charCodeAt(i)>=0x5B && str.charCodeAt(i)<=0x60 ||
+//       str.charCodeAt(i)>=0x7B && str.charCodeAt(i)<=0x7E ){
+//       count++;
+//     }
+//   }
+//   if(count==0){
+//     return 0;
+//   }
+//   if(count==1){
+//     return 10;
+//   }
+//   return 25;
+// }
+/**
+ * 得分机制
+ * @param str
+ */
+// const rewards = (str: string) => {
+//   let letter=letters(str);//字母
+//   let number=numbers(str);//数字
+//   let symbol=symbols(str);//符号
+//   if(letter>0 && number>0 && symbol==0){//字母和数字
+//     return 2;
+//   }
+//   if(letter==10 && number>0 && symbol>0){//字母、数字和符号
+//     return 3;
+//   }
+//   if(letter==20 && number>0 && symbol>0){//大小写字母、数字和符号
+//     return 5;
+//   }
+//   return 0;
+// }
+/**
+ * 最终评分
+ * @param str
+ */
+// export const level = (str: string) => {
+//   let lengths=length(str);//长度
+//   let letter=letters(str);//字母
+//   let number=numbers(str);//数字
+//   let symbol=symbols(str);//符号
+//   let reward=rewards(str);//奖励
+//   let sum=lengths+letter+number+symbol+reward;
+//   if(sum>=80){
+//     return "非常强";//非常安全
+//   }else if(sum>=60){
+//     return "强";//非常强
+//   }else if(sum>=40){
+//     return "一般";//一般
+//   }else if(sum>=25){
+//     return "弱";//弱
+//   }else{
+//     return "非常弱";//非常弱
+//   }
+// }