子系统英文简称:SBOFALCON-CORE
子系统英文名:Forward Aggregated Legal Compliance Online
子系统中文名:领航智能全面合规管理平台
合规项目背景:通过对接整合内部业务数据与外部监管数据,构建一站式的全面合规管理平台。该平台将建立整体合规管理视图和合规管理驾驶舱,实时、直观展示公司合规整体状况;建立合规数据集市,将各类合规检查底稿、现场督导、报表、报告线上化撰写,借助大数据、人工智能辅助合规管理,最终实现合规预警及时化、合规评审标准化、合规检查程序化、合规学习全员化,从机制上保证合规经营、诚信展业、专业执业,增强全体员工合规意识,提升公司合规管理水平。
1、通过css设置文字不能被选中
.select{
-webkit-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none;
}
2、window.open() 传参
3、vue.js 键盘enter事件的使用 (2020-07-28)
<input v-on:keyup.13="submit">
<input v-on:keyup.enter="submit">
<!-- 缩写语法 -->
<input @keyup.enter="submit">
若是使用了element-ui,则要加上native限制符,因为element-ui把input进行了封装,原事件就不起作用了
<input @keyup.enter.native="submit">
4、UTC 时间转化为北京时间 (2020-07-28)
2020-06-27T14:20:27.000000Z 时间格式转换成 2020-06-27 14:20:27
function rTime(date) {
var json_date = new Date(date).toJSON();
return new Date(new Date(json_date) + 8 * 3600 * 1000).toISOString().replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '')
}
let date = rTime('2020-06-27T14:20:27.000000Z');
toJSON() 方法可以将 Date 对象转换为字符串,并格式化为 JSON 数据格式
5、js 处理树形结构数据
handleTree(data) {
// 删除 所有 children,以防止多次调用
data.forEach(function(item) {
delete item.children
})
// 将数据存储为 以 id 为 KEY 的 map 索引数据列
var map = {}
data.forEach(function(item) {
map[item.id] = item
})
// console.log(map);
var val = []
data.forEach(function(item) {
// 以当前遍历项,的parent_id,去map对象中找到索引的id
var parent = map[item.parent_id]
// 好绕啊,如果找到索引,那么说明此项不在顶级当中,那么需要把此项添加到,他对应的父级中
if (parent) {
;(parent.children || (parent.children = [])).push(item)
} else {
//如果没有在map中找到对应的索引ID,那么直接把 当前的item添加到 val结果集中,作为顶级
val.push(item)
}
})
return val
}
6、用trim()方法,要先判空
7、用绝对定位要加上具体定位,不加低版本浏览器会有问题
8、input输入框只能输入正整数(同时禁止了以0开始的数字输入)
9、格式化时间
formatDate(value: any) {
let date = new Date(value)
let y = date.getFullYear()
let MM: any = date.getMonth() + 1
MM = MM < 10 ? '0' + MM : MM
let d: any = date.getDate()
d = d < 10 ? '0' + d : d
let h: any = date.getHours()
h = h < 10 ? '0' + h : h
let m: any = date.getMinutes()
m = m < 10 ? '0' + m : m
let s: any = date.getSeconds()
s = s < 10 ? '0' + s : s
return y + '-' + MM + '-' + d
}
listDateFormatter(value: any) {
const time = new Date(Date.parse(value))
let Y = time.getFullYear()
let M = (time.getMonth() + 1 + '').padStart(2, '0')
let D = (time.getDate() + '').padStart(2, '0')
let h = (time.getHours() + '').padStart(2, '0')
let m = (time.getMinutes() + '').padStart(2, '0')
let s = (time.getSeconds() + '').padStart(2, '0')
return `${Y}-${M}-${D} ${h}:${m}:${s}`
}
10、word,excel在线预览:
a、引入第三方插件 pageOffice、liberOffice
b、把word,excel 在服务器转化成 PDF,然后在线预览PDF
11、溢出的文本折叠
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
12、页面媒体查询响应式布局: @media screen and (min-width: 1000px) and (max-width: 1366px) { .doc-catalog-tree-wrap { width: 320px;
.doc-catalog-tree {
width: 320px;
}
} }
13、刷新当前页面 window.location.href=“url”:改变url地址;
window.location.replace(“url”):将地址替换成新url,该方法通过指定URL替换当前缓存在历史里(客户端)的项目, 因此当使用replace方法之后,你不能通过“前进”和“后 退”来访问已经被替换的URL,这个特点对于做一些过渡页面非常有用!
window.location.reload():强制刷新页面,从服务器重新请求!
location.href不重新刷新当前页面: a、使用location.href和location.reload(); window.location.href = url window.location.reload() b、使用form表单提交 var url=data.url document.write("
"); c、时间戳 window.location.href=data.url+"?time="+new Data().getTime();//加一个时间变量,让每次请求的url都不一样window.location.reload()刷新当前页面 window.parent.location.reload()刷新父亲对象(用于框架) opener.location.reload()刷新父窗口对象(用于单开窗口) top.location.reload()刷新最顶端对象(用于多开窗口) window.location.reload()是刷新当前窗口,可传参数true,表示不走缓存,从服务端重新获取数据 使用window.parent.location.reload()相当于按F5页面刷新,整个页面都会刷新 window可以省略
14、ts 如何忽略 node_module 中包的类型错误 ?
15、获取数组差集
getDiffCollection(unionArr, subsetArr): any[] {
let arr = unionArr.filter((x) => subsetArr.every((y) => y.id !== x.id));
return arr;
}
16、获取数组交集
getSameCollection(unionArr, subsetArr, key): any[] {
let arr = unionArr.filter((x) => subsetArr.some((y) => y.id === x[key]));
return arr;
}
17、构造map
dataObj() {
const key = this.props.key;
return this.data.reduce((o, cur) => (o[cur[key]] = cur) && o, {});
},
18、z-index 堆叠上下文,只有在postion:relative/absolute/fixed脱离文档流控制时才生效,static时无效。
- 当父元素和子元素都处于堆叠上下文时,子元素继承父元素的优先级,故父元素大的就大,如果父元素没有处于堆叠上下文时,即z-index:auto;或者position:static;时,子元素不会继承父元素的优先级。
- z-index为0时依然处于堆叠上下文中,比负值高,比正值低。
- z-index为负值时不仅会处于z-index为0和正值元素的后面,还会处于非堆叠元素的后面。
19、z-index在以下情况下会失效
- 父元素position为relative时,子元素的z-index失效。
- 该元素没有设置position属性为非static属性。
- 该标签在设置z-index的同时还设置了float浮动
20、计算精度问题
add(a, b) {
let aNum = Number(a) || 0
let bNum = Number(b) || 0
let aStr = aNum + ''
let aDotPos = aStr.indexOf('.')
let aLen = aStr.substr(aDotPos + 1).length
let aTimes = Math.pow(10, aLen)
let bStr = bNum + ''
let bDotPos = bStr.indexOf('.')
let bLen = bStr.substr(bDotPos + 1).length
let bTimes = Math.pow(10, bLen)
let maxTimes = aTimes > bTimes ? aTimes : bTimes
if (maxTimes <= 0) {
return aNum + bNum
}
let result = aNum * maxTimes + bNum * maxTimes
return result / maxTimes
}