flx:处理脱敏数据
This commit is contained in:
parent
c885c295c1
commit
e9a8ae43eb
@ -1,7 +1,7 @@
|
|||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
//获取前天-2,昨天-1,今天0,明天1等时间 yyyy/MM/dd format,分隔符
|
//获取前天-2,昨天-1,今天0,明天1等时间 yyyy/MM/dd format,分隔符
|
||||||
export function GetDateStr(AddDayCount, format, from) {
|
export function GetDateStr(AddDayCount, format, from) {
|
||||||
var dd = !from ? new Date() : stringToDate(from,format);
|
var dd = !from ? new Date() : stringToDate(from, format);
|
||||||
dd.setDate(dd.getDate() + AddDayCount); //获取AddDayCount天后的日期
|
dd.setDate(dd.getDate() + AddDayCount); //获取AddDayCount天后的日期
|
||||||
var year = dd.getFullYear();
|
var year = dd.getFullYear();
|
||||||
var month = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1;
|
var month = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1;
|
||||||
@ -10,77 +10,81 @@ export function GetDateStr(AddDayCount, format, from) {
|
|||||||
}
|
}
|
||||||
//计算时间间隔
|
//计算时间间隔
|
||||||
export function GetTimeDiff(startTime, endTime) {
|
export function GetTimeDiff(startTime, endTime) {
|
||||||
var startTime = new Date(Date.parse(startTime.replace(/-/g, "-"))).getTime();
|
var startTime = new Date(Date.parse(startTime.replace(/-/g, "-"))).getTime();
|
||||||
var endTime = new Date(Date.parse(endTime.replace(/-/g, "-"))).getTime();
|
var endTime = new Date(Date.parse(endTime.replace(/-/g, "-"))).getTime();
|
||||||
var hours = Math.abs((startTime - endTime)) / (1000 * 60 * 60);
|
var hours = Math.abs((startTime - endTime)) / (1000 * 60 * 60);
|
||||||
return hours;
|
return hours;
|
||||||
}
|
}
|
||||||
export function GetTimeStr(AddDayCount, format, from) {
|
export function GetTimeStr(AddDayCount, format, from) {
|
||||||
var dd = !from ? new Date() : stringToDate(from, format);
|
var dd = !from ? new Date() : stringToDate(from, format);
|
||||||
dd.setDate(dd.getDate() + AddDayCount); //获取AddDayCount天后的日期
|
dd.setDate(dd.getDate() + AddDayCount); //获取AddDayCount天后的日期
|
||||||
var year = dd.getFullYear();
|
var year = dd.getFullYear();
|
||||||
var month = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1;
|
var month = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1;
|
||||||
var date = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
|
var date = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
|
||||||
var hour = dd.getHours() < 10 ? "0" + dd.getHours() : dd.getHours();
|
var hour = dd.getHours() < 10 ? "0" + dd.getHours() : dd.getHours();
|
||||||
var min = dd.getMinutes() < 10 ? "0" + dd.getMinutes() : dd.getMinutes();
|
var min = dd.getMinutes() < 10 ? "0" + dd.getMinutes() : dd.getMinutes();
|
||||||
var second = dd.getSeconds() < 10 ? "0" + dd.getSeconds() : dd.getSeconds();
|
var second = dd.getSeconds() < 10 ? "0" + dd.getSeconds() : dd.getSeconds();
|
||||||
return year + format + month + format + date + " " + hour + ":" + min + ":" + second;
|
return year + format + month + format + date + " " + hour + ":" + min + ":" + second;
|
||||||
}
|
}
|
||||||
//手机号码验证
|
//手机号码验证
|
||||||
export function checkPhone(phone){
|
export function checkPhone(phone) {
|
||||||
if(!(/^1(3|4|5|6|7|8|9)\d{9}$/.test(phone))){
|
if (!(/^1(3|4|5|6|7|8|9)\d{9}$/.test(phone))) {
|
||||||
return false;
|
return false;
|
||||||
}else{
|
} else {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//获取随机颜色
|
//获取随机颜色
|
||||||
export function getRandomColor(){
|
export function getRandomColor() {
|
||||||
var r = Math.floor(Math.random() * 256);
|
var r = Math.floor(Math.random() * 256);
|
||||||
var g = Math.floor(Math.random() * 256);
|
var g = Math.floor(Math.random() * 256);
|
||||||
var b = Math.floor(Math.random() * 256);
|
var b = Math.floor(Math.random() * 256);
|
||||||
return "rgba(" + r + "," + g + "," + b + ",0.6)";
|
return "rgba(" + r + "," + g + "," + b + ",0.6)";
|
||||||
}
|
}
|
||||||
//将时间戳转换成日期格式
|
//将时间戳转换成日期格式
|
||||||
export function timestampToTime(timestamp,type) {
|
export function timestampToTime(timestamp, type) {
|
||||||
if(timestamp.length<13){
|
if (timestamp.length < 13) {
|
||||||
timestamp=timestamp*1000
|
timestamp = timestamp * 1000
|
||||||
}
|
}
|
||||||
var date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
|
var date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
|
||||||
|
|
||||||
let Y = date.getFullYear() + '-';
|
|
||||||
|
let Y = date.getFullYear() + '-';
|
||||||
let M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
|
|
||||||
|
|
||||||
let D = date.getDate()<10?'0'+date.getDate():date.getDate();
|
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
|
||||||
|
|
||||||
let h = ' '+date.getHours() + ':';
|
|
||||||
|
let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
|
||||||
let m = date.getMinutes() + ':';
|
|
||||||
|
|
||||||
let s = date.getSeconds();
|
let h = ' ' + date.getHours() + ':';
|
||||||
if(type=='date'){
|
|
||||||
return Y+M+D;
|
|
||||||
}else if(type=='time'){
|
let m = date.getMinutes() + ':';
|
||||||
return Y+M+D+h+m+s;
|
|
||||||
}
|
|
||||||
|
let s = date.getSeconds();
|
||||||
|
if (type == 'date') {
|
||||||
}
|
return Y + M + D;
|
||||||
|
} else if (type == 'time') {
|
||||||
|
return Y + M + D + h + m + s;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
//身份证号合法性验证
|
//身份证号合法性验证
|
||||||
//支持15位和18位身份证号
|
//支持15位和18位身份证号
|
||||||
//支持地址编码、出生日期、校验位验证
|
//支持地址编码、出生日期、校验位验证
|
||||||
export function IdentityCodeValid(code) {
|
export function IdentityCodeValid(code) {
|
||||||
var city={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外 "};
|
var city = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江 ", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北 ", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏 ", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外 " };
|
||||||
var tip = "";
|
var tip = "";
|
||||||
var pass= true;
|
var pass = true;
|
||||||
|
|
||||||
if(!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)){
|
if (!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)) {
|
||||||
tip = "身份证号格式错误";
|
tip = "身份证号格式错误";
|
||||||
pass = false;
|
pass = false;
|
||||||
}
|
} else if (!city[code.substr(0, 2)]) {
|
||||||
|
|
||||||
else if(!city[code.substr(0,2)]){
|
|
||||||
tip = "地址编码错误";
|
tip = "地址编码错误";
|
||||||
pass = false;
|
pass = false;
|
||||||
}
|
}
|
||||||
@ -111,50 +115,50 @@ export function IdentityCodeValid(code) {
|
|||||||
// }
|
// }
|
||||||
console.log(tip)
|
console.log(tip)
|
||||||
return pass;
|
return pass;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//验证企业 社会统一信用代码
|
//验证企业 社会统一信用代码
|
||||||
export function CheckSocialCreditCode(Code) {
|
export function CheckSocialCreditCode(Code) {
|
||||||
// var Code = el.val()
|
// var Code = el.val()
|
||||||
var patrn = /^[0-9A-Z]+$/;
|
var patrn = /^[0-9A-Z]+$/;
|
||||||
//18位校验及大写校验
|
//18位校验及大写校验
|
||||||
if ((Code.length != 18) || (patrn.test(Code) == false)) {
|
if ((Code.length != 18) || (patrn.test(Code) == false)) {
|
||||||
|
|
||||||
// el.focus()
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
var Ancode;//统一社会信用代码的每一个值
|
|
||||||
var Ancodevalue;//统一社会信用代码每一个值的权重
|
|
||||||
var total = 0;
|
|
||||||
var weightedfactors = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];//加权因子
|
|
||||||
var str = '0123456789ABCDEFGHJKLMNPQRTUWXY';
|
|
||||||
//不用I、O、S、V、Z
|
|
||||||
for (var i = 0; i < Code.length - 1; i++) {
|
|
||||||
Ancode = Code.substring(i, i + 1);
|
|
||||||
Ancodevalue = str.indexOf(Ancode);
|
|
||||||
total = total + Ancodevalue * weightedfactors[i];
|
|
||||||
//权重与加权因子相乘之和
|
|
||||||
}
|
|
||||||
var logiccheckcode = 31 - total % 31;
|
|
||||||
|
|
||||||
if (logiccheckcode == 31) {
|
|
||||||
logiccheckcode = 0;
|
|
||||||
}
|
|
||||||
var Str = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,T,U,W,X,Y";
|
|
||||||
var Array_Str = Str.split(',');
|
|
||||||
logiccheckcode = Array_Str[logiccheckcode];
|
|
||||||
|
|
||||||
var checkcode = Code.substring(17, 18);
|
|
||||||
if (logiccheckcode != checkcode) {
|
|
||||||
// showTipsDialog("不是有效的统一社会信用编码!");
|
|
||||||
// el.focus()
|
// el.focus()
|
||||||
return false;
|
return false;
|
||||||
}
|
} else {
|
||||||
|
var Ancode; //统一社会信用代码的每一个值
|
||||||
|
var Ancodevalue; //统一社会信用代码每一个值的权重
|
||||||
|
var total = 0;
|
||||||
|
var weightedfactors = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28]; //加权因子
|
||||||
|
var str = '0123456789ABCDEFGHJKLMNPQRTUWXY';
|
||||||
|
//不用I、O、S、V、Z
|
||||||
|
for (var i = 0; i < Code.length - 1; i++) {
|
||||||
|
Ancode = Code.substring(i, i + 1);
|
||||||
|
Ancodevalue = str.indexOf(Ancode);
|
||||||
|
total = total + Ancodevalue * weightedfactors[i];
|
||||||
|
//权重与加权因子相乘之和
|
||||||
|
}
|
||||||
|
var logiccheckcode = 31 - total % 31;
|
||||||
|
|
||||||
|
if (logiccheckcode == 31) {
|
||||||
|
logiccheckcode = 0;
|
||||||
|
}
|
||||||
|
var Str = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,T,U,W,X,Y";
|
||||||
|
var Array_Str = Str.split(',');
|
||||||
|
logiccheckcode = Array_Str[logiccheckcode];
|
||||||
|
|
||||||
|
var checkcode = Code.substring(17, 18);
|
||||||
|
if (logiccheckcode != checkcode) {
|
||||||
|
// showTipsDialog("不是有效的统一社会信用编码!");
|
||||||
|
// el.focus()
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
//获取天气
|
//获取天气
|
||||||
// export function loadWeather(type,cityCode,_this){
|
// export function loadWeather(type,cityCode,_this){
|
||||||
// var weatherJson = {
|
// var weatherJson = {
|
||||||
@ -246,32 +250,34 @@ export function CheckSocialCreditCode(Code) {
|
|||||||
// })
|
// })
|
||||||
// }
|
// }
|
||||||
/**
|
/**
|
||||||
* 根据日期字符串获取星期几
|
* 根据日期字符串获取星期几
|
||||||
* @param dateString 日期字符串(如:2020-05-02)
|
* @param dateString 日期字符串(如:2020-05-02)
|
||||||
* @returns {String}
|
* @returns {String}
|
||||||
*/
|
*/
|
||||||
function getWeek(dateString) {
|
function getWeek(dateString) {
|
||||||
var dateArray = dateString.split("-");
|
var dateArray = dateString.split("-");
|
||||||
var date = new Date(dateArray[0], parseInt(dateArray[1] - 1), dateArray[2]);
|
var date = new Date(dateArray[0], parseInt(dateArray[1] - 1), dateArray[2]);
|
||||||
return "周" + "日一二三四五六".charAt(date.getDay());
|
return "周" + "日一二三四五六".charAt(date.getDay());
|
||||||
};
|
};
|
||||||
export function loadWeather(_this){
|
export function loadWeather(_this) {
|
||||||
// ?version=v1&appid=79112751&appsecret=EBqjU987&vue=1
|
// ?version=v1&appid=79112751&appsecret=EBqjU987&vue=1
|
||||||
axios.get('https://tianqiapi.com/api',
|
axios.get('https://tianqiapi.com/api', {
|
||||||
{params:{
|
params: {
|
||||||
version:'v1',
|
version: 'v1',
|
||||||
appid:'79112751',
|
appid: '79112751',
|
||||||
appsecret:'EBqjU987',
|
appsecret: 'EBqjU987',
|
||||||
vue:1
|
vue: 1
|
||||||
},headers: {'Authorization': ''}}).then((res)=>{
|
},
|
||||||
var json = res.data;
|
headers: { 'Authorization': '' }
|
||||||
|
}).then((res) => {
|
||||||
|
var json = res.data;
|
||||||
var list = json.data
|
var list = json.data
|
||||||
list.forEach(element => {
|
list.forEach(element => {
|
||||||
element.week=getWeek(element.date)
|
element.week = getWeek(element.date)
|
||||||
element.date = element.date.substring(5,element.date.length)
|
element.date = element.date.substring(5, element.date.length)
|
||||||
element.url = require('@/assets/images/weather/'+element.wea_img+'.png')
|
element.url = require('@/assets/images/weather/' + element.wea_img + '.png')
|
||||||
});
|
});
|
||||||
json.data = list
|
json.data = list
|
||||||
_this.weatherInfo=json
|
_this.weatherInfo = json
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
116
src/util/util.js
Normal file
116
src/util/util.js
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
/**
|
||||||
|
* 处理后端脱敏数据的方法
|
||||||
|
* 当数据没有被修改时,传递null给后端
|
||||||
|
* @param {Object} formData - 表单数据对象
|
||||||
|
* @param {Object} originalData - 后端返回的原始数据对象
|
||||||
|
* @param {Array} sensitiveFields - 需要检查的敏感字段数组
|
||||||
|
* @returns {Object} 处理后的数据对象
|
||||||
|
*/
|
||||||
|
export function handleMaskedData(formData, originalData, sensitiveFields = []) {
|
||||||
|
const processedData = {...formData };
|
||||||
|
|
||||||
|
// 默认敏感字段
|
||||||
|
const defaultSensitiveFields = [
|
||||||
|
'phone', 'mobile', 'userTel', 'phoneNumber',
|
||||||
|
'idCard', 'idNumber', 'identityCard',
|
||||||
|
'realName', 'userName', 'name',
|
||||||
|
'email', 'personMail', 'emailAddress',
|
||||||
|
'bankCard', 'cardNumber',
|
||||||
|
'address', 'homeAddress'
|
||||||
|
];
|
||||||
|
|
||||||
|
const fieldsToCheck = sensitiveFields.length > 0 ? sensitiveFields : defaultSensitiveFields;
|
||||||
|
|
||||||
|
fieldsToCheck.forEach(field => {
|
||||||
|
if (formData.hasOwnProperty(field) && originalData.hasOwnProperty(field)) {
|
||||||
|
const currentValue = formData[field];
|
||||||
|
const originalValue = originalData[field];
|
||||||
|
|
||||||
|
// 检查是否为脱敏数据(包含*号或长度异常)
|
||||||
|
if (isMaskedData(currentValue) && currentValue === originalValue) {
|
||||||
|
// 如果当前值与原值相同且为脱敏数据,则传递null
|
||||||
|
processedData[field] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return processedData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断数据是否为脱敏数据
|
||||||
|
* @param {String} value - 要检查的值
|
||||||
|
* @returns {Boolean} 是否为脱敏数据
|
||||||
|
*/
|
||||||
|
export function isMaskedData(value) {
|
||||||
|
if (!value || typeof value !== 'string') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查是否包含*号
|
||||||
|
if (value.includes('*')) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查手机号脱敏模式 (如: 138****5678)
|
||||||
|
if (/^1[3-9]\d\*\*\*\*\d{4}$/.test(value)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查身份证脱敏模式 (如: 110101********1234)
|
||||||
|
if (/^\d{6}\*{8,}\d{4}$/.test(value)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查姓名脱敏模式 (如: 张**)
|
||||||
|
if (/^[\u4e00-\u9fa5]\*{2,}$/.test(value)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查邮箱脱敏模式 (如: zh***@example.com)
|
||||||
|
if (/^[a-zA-Z0-9]\*{2,}@/.test(value)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量处理表单中的脱敏数据
|
||||||
|
* @param {Object} formData - 表单数据
|
||||||
|
* @param {Object} originalData - 原始数据
|
||||||
|
* @param {Object} fieldMapping - 字段映射关系 {formField: originalField}
|
||||||
|
* @returns {Object} 处理后的数据
|
||||||
|
*/
|
||||||
|
export function batchHandleMaskedData(formData, originalData, fieldMapping = {}) {
|
||||||
|
const processedData = {...formData };
|
||||||
|
|
||||||
|
Object.keys(fieldMapping).forEach(formField => {
|
||||||
|
const originalField = fieldMapping[formField];
|
||||||
|
|
||||||
|
if (formData.hasOwnProperty(formField) && originalData.hasOwnProperty(originalField)) {
|
||||||
|
const currentValue = formData[formField];
|
||||||
|
const originalValue = originalData[originalField];
|
||||||
|
|
||||||
|
if (isMaskedData(currentValue) && currentValue === originalValue) {
|
||||||
|
processedData[formField] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return processedData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检查并处理单个字段的脱敏数据
|
||||||
|
* @param {String} fieldName - 字段名
|
||||||
|
* @param {String} currentValue - 当前值
|
||||||
|
* @param {String} originalValue - 原始值
|
||||||
|
* @returns {String|null} 处理后的值
|
||||||
|
*/
|
||||||
|
export function handleSingleMaskedField(fieldName, currentValue, originalValue) {
|
||||||
|
if (isMaskedData(currentValue) && currentValue === originalValue) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return currentValue;
|
||||||
|
}
|
||||||
@ -8,7 +8,7 @@
|
|||||||
v-if="
|
v-if="
|
||||||
($store.state.userInfo.addProjectType == 1 &&
|
($store.state.userInfo.addProjectType == 1 &&
|
||||||
$store.state.userInfo.accountType != 7) ||
|
$store.state.userInfo.accountType != 7) ||
|
||||||
$store.state.userInfo.addProjectType == 0
|
$store.state.userInfo.addProjectType == 0
|
||||||
"
|
"
|
||||||
class="plusBtn"
|
class="plusBtn"
|
||||||
@click="
|
@click="
|
||||||
@ -345,7 +345,7 @@
|
|||||||
<div
|
<div
|
||||||
@click="editGroup(scope.row)"
|
@click="editGroup(scope.row)"
|
||||||
class="operationText"
|
class="operationText"
|
||||||
style="margin-right: 10px;"
|
style="margin-right: 10px"
|
||||||
>
|
>
|
||||||
<i class="el-icon-s-operation"></i>
|
<i class="el-icon-s-operation"></i>
|
||||||
<span>调整组织</span>
|
<span>调整组织</span>
|
||||||
@ -353,7 +353,7 @@
|
|||||||
<div
|
<div
|
||||||
@click="deleteAccountFn(scope.row)"
|
@click="deleteAccountFn(scope.row)"
|
||||||
class="operationText"
|
class="operationText"
|
||||||
style="margin-right: 10px;"
|
style="margin-right: 10px"
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
src="@/assets/images/icon-delete.png"
|
src="@/assets/images/icon-delete.png"
|
||||||
@ -1204,11 +1204,11 @@
|
|||||||
>
|
>
|
||||||
<div class="dialog_content">
|
<div class="dialog_content">
|
||||||
<div class="dialog_content-part">
|
<div class="dialog_content-part">
|
||||||
<div class="dialog-search" style="margin-top: 20px;">
|
<div class="dialog-search" style="margin-top: 20px">
|
||||||
<el-input
|
<el-input
|
||||||
placeholder="请输入组织名称搜索"
|
placeholder="请输入组织名称搜索"
|
||||||
suffix-icon="el-icon-search"
|
suffix-icon="el-icon-search"
|
||||||
style="flex: 1;"
|
style="flex: 1"
|
||||||
v-model="filterText"
|
v-model="filterText"
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
@ -1288,7 +1288,7 @@
|
|||||||
<el-input
|
<el-input
|
||||||
placeholder="请输入组织名称搜索"
|
placeholder="请输入组织名称搜索"
|
||||||
suffix-icon="el-icon-search"
|
suffix-icon="el-icon-search"
|
||||||
style="flex: 1;"
|
style="flex: 1"
|
||||||
v-model="filterText"
|
v-model="filterText"
|
||||||
size="small"
|
size="small"
|
||||||
>
|
>
|
||||||
@ -1351,12 +1351,16 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
<largeScreenConfig :uniqueFlag="this.uniqueFlag" :authType="this.authType" v-model="largeVisible" ></largeScreenConfig>
|
<largeScreenConfig
|
||||||
|
:uniqueFlag="this.uniqueFlag"
|
||||||
|
:authType="this.authType"
|
||||||
|
v-model="largeVisible"
|
||||||
|
></largeScreenConfig>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import gdMap from "../../components/map/gd-map";
|
import gdMap from "../../components/map/gd-map";
|
||||||
import largeScreenConfig from '@/views/jxjadmin/largeScreenConfig.vue'
|
import largeScreenConfig from "@/views/jxjadmin/largeScreenConfig.vue";
|
||||||
import {
|
import {
|
||||||
getCompanyProjectListApi,
|
getCompanyProjectListApi,
|
||||||
addCompanyApi,
|
addCompanyApi,
|
||||||
@ -1400,10 +1404,11 @@ import {
|
|||||||
} from "@/assets/js/api/jxjadmin";
|
} from "@/assets/js/api/jxjadmin";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import { checkPhone } from "@/assets/js/util.js";
|
import { checkPhone } from "@/assets/js/util.js";
|
||||||
|
import { handleMaskedData, isMaskedData } from "@/util/util.js";
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
gdMap,
|
gdMap,
|
||||||
largeScreenConfig
|
largeScreenConfig,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
var checkAge = (rule, value, callback) => {
|
var checkAge = (rule, value, callback) => {
|
||||||
@ -1509,6 +1514,7 @@ export default {
|
|||||||
jobId: "",
|
jobId: "",
|
||||||
externalAccount: "",
|
externalAccount: "",
|
||||||
},
|
},
|
||||||
|
oldAddAccountForm: {},
|
||||||
addAccountFormRules: {
|
addAccountFormRules: {
|
||||||
account: [
|
account: [
|
||||||
{
|
{
|
||||||
@ -1528,7 +1534,8 @@ export default {
|
|||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pattern: /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&*()_+~`\-={}[\]:";'<>?,./])[a-zA-Z\d!@#$%^&*()_+~`\-={}[\]:";'<>?,./]{8,}$/,
|
pattern:
|
||||||
|
/^(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&*()_+~`\-={}[\]:";'<>?,./])[a-zA-Z\d!@#$%^&*()_+~`\-={}[\]:";'<>?,./]{8,}$/,
|
||||||
message:
|
message:
|
||||||
"密码必须包含至少一个字母、一个数字、一个特殊字符以及长度至少为8位数",
|
"密码必须包含至少一个字母、一个数字、一个特殊字符以及长度至少为8位数",
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
@ -1541,7 +1548,8 @@ export default {
|
|||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pattern: /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&*()_+~`\-={}[\]:";'<>?,./])[a-zA-Z\d!@#$%^&*()_+~`\-={}[\]:";'<>?,./]{8,}$/,
|
pattern:
|
||||||
|
/^(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&*()_+~`\-={}[\]:";'<>?,./])[a-zA-Z\d!@#$%^&*()_+~`\-={}[\]:";'<>?,./]{8,}$/,
|
||||||
message:
|
message:
|
||||||
"密码必须包含至少一个字母、一个数字、一个特殊字符以及长度至少为8位数",
|
"密码必须包含至少一个字母、一个数字、一个特殊字符以及长度至少为8位数",
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
@ -2200,7 +2208,8 @@ export default {
|
|||||||
// })
|
// })
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.addCompanyForm.headquartersSn = this.$store.state.userInfo.headquartersSn;
|
this.addCompanyForm.headquartersSn =
|
||||||
|
this.$store.state.userInfo.headquartersSn;
|
||||||
this.getModuleList();
|
this.getModuleList();
|
||||||
this.initData();
|
this.initData();
|
||||||
this.loadProvincesCityList();
|
this.loadProvincesCityList();
|
||||||
@ -2209,9 +2218,9 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
handleSettingLarge(authType, uniqueFlag) {
|
handleSettingLarge(authType, uniqueFlag) {
|
||||||
this.authType = authType
|
this.authType = authType;
|
||||||
this.uniqueFlag = uniqueFlag
|
this.uniqueFlag = uniqueFlag;
|
||||||
this.largeVisible = true
|
this.largeVisible = true;
|
||||||
},
|
},
|
||||||
filterNode(value, data) {
|
filterNode(value, data) {
|
||||||
if (!value) return true;
|
if (!value) return true;
|
||||||
@ -3344,8 +3353,10 @@ export default {
|
|||||||
this.editGroupDialog = true;
|
this.editGroupDialog = true;
|
||||||
this.filterText = "";
|
this.filterText = "";
|
||||||
// 打开弹窗时调用上面的接口勾选
|
// 打开弹窗时调用上面的接口勾选
|
||||||
const res = await getSelectedGroupApi({ userId: row.userId,
|
const res = await getSelectedGroupApi({
|
||||||
headquartersSn: this.$store.state.userInfo.headquartersSn, });
|
userId: row.userId,
|
||||||
|
headquartersSn: this.$store.state.userInfo.headquartersSn,
|
||||||
|
});
|
||||||
// 打开弹窗时调用上面的接口勾选
|
// 打开弹窗时调用上面的接口勾选
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs.groupTree.setCheckedKeys(this.getRelativeKeys(res.result));
|
this.$refs.groupTree.setCheckedKeys(this.getRelativeKeys(res.result));
|
||||||
@ -3355,6 +3366,7 @@ export default {
|
|||||||
editAccountFn(item) {
|
editAccountFn(item) {
|
||||||
this.accountDialogTitle = "编辑成员"; //编辑账号
|
this.accountDialogTitle = "编辑成员"; //编辑账号
|
||||||
this.addAccountForm = JSON.parse(JSON.stringify(item));
|
this.addAccountForm = JSON.parse(JSON.stringify(item));
|
||||||
|
this.oldAddAccountForm = JSON.parse(JSON.stringify(item));
|
||||||
this.addAccountDialog = true;
|
this.addAccountDialog = true;
|
||||||
this.isAdd = false;
|
this.isAdd = false;
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
@ -3363,7 +3375,13 @@ export default {
|
|||||||
},
|
},
|
||||||
//新增或编辑账号
|
//新增或编辑账号
|
||||||
saveAccountFn() {
|
saveAccountFn() {
|
||||||
if (this.addAccountForm.userTel) {
|
if (
|
||||||
|
this.addAccountForm.userTel &&
|
||||||
|
!(
|
||||||
|
isMaskedData(this.addAccountForm.userTel) &&
|
||||||
|
this.addAccountForm.userTel === this.oldAddAccountForm.userTel
|
||||||
|
)
|
||||||
|
) {
|
||||||
if (!checkPhone(this.addAccountForm.userTel)) {
|
if (!checkPhone(this.addAccountForm.userTel)) {
|
||||||
this.$message.error("请输入正确的手机号码");
|
this.$message.error("请输入正确的手机号码");
|
||||||
return;
|
return;
|
||||||
@ -3371,7 +3389,16 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.$refs["addAccountForm"].validate((valid) => {
|
this.$refs["addAccountForm"].validate((valid) => {
|
||||||
if (valid) {
|
const showPassword = isMaskedData(this.addAccountForm.showPassword) && this.addAccountForm.showPassword === this.oldAddAccountForm.showPassword
|
||||||
|
if (showPassword || valid) {
|
||||||
|
// 只检查指定的字段
|
||||||
|
const sensitiveFields = ["userTel", "showPassword"];
|
||||||
|
const processedData = handleMaskedData(
|
||||||
|
this.addAccountForm,
|
||||||
|
this.oldAddAccountForm,
|
||||||
|
sensitiveFields
|
||||||
|
);
|
||||||
|
console.log(processedData)
|
||||||
if (this.isAdd) {
|
if (this.isAdd) {
|
||||||
addSystemUserApi(this.addAccountForm).then((res) => {
|
addSystemUserApi(this.addAccountForm).then((res) => {
|
||||||
this.addAccountDialog = false;
|
this.addAccountDialog = false;
|
||||||
@ -3381,7 +3408,7 @@ export default {
|
|||||||
); //添加成功!
|
); //添加成功!
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
editSystemUserApi(this.addAccountForm).then((res) => {
|
editSystemUserApi(processedData).then((res) => {
|
||||||
this.addAccountDialog = false;
|
this.addAccountDialog = false;
|
||||||
this.getAccountList();
|
this.getAccountList();
|
||||||
this.$message.success(
|
this.$message.success(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user