Authored by 鲁尚清

【无】操作记录功能迁移到master

... ... @@ -8,7 +8,8 @@ layui.define(['element', 'admin'], function (exports) {
data: {
contextmenuTips: null,
contextmenus: [],
classNams: []
classNams: [],
handleLog: [] //lsq 页面点击操作集
},
getCurrentHash: function () {
return window.location.hash;
... ... @@ -16,11 +17,16 @@ layui.define(['element', 'admin'], function (exports) {
init: function () {
var that = this;
that.bindClickEvent();
//lsq给带有title的元素绑定点击事件复制元素内容 2022-09-05
that.copyTitle();
if (that.data.contextmenus.length > 0) {
that.bindContextMenuEvent();
return that.data.contextmenus;
}
if('#/user/login/redirect=%2F' == that.getCurrentHash()){
if ('#/user/login/redirect=%2F' == that.getCurrentHash()) {
return;
}
// 获取配置的信息
... ... @@ -68,16 +74,155 @@ layui.define(['element', 'admin'], function (exports) {
}
})
setTimeout(function (){
setTimeout(function () {
layer.closeAll('tips');
},5000)
}, 5000)
}
})
},
/**
* ajax掉接口之前传参
* @author lsq
* @date 2022-08-18
* */
sendAjaxData(menuPath,elementName){
let name=encodeURIComponent(elementName);
$.ajaxSetup({
headers:{
menuPath:menuPath,
elementName:name
}
});
},
/**
* 鼠标点击事件
*/
bindClickEvent(){
let that=this;
var eventKeys = ['a','button','[data-bizid]','.layui-table-link'];
// 菜单点击
if(!$('#LAY-system-side-menu li a').hasClass("on_fn")){
$('#LAY-system-side-menu li a').unbind('click.handle').on('click.handle',(function (e){
e.preventDefault();
//start lsq 元素鼠标点击事件操作 2022-08-11
//绑定事件时增加一个class防止多次绑定事件
$(this).addClass("on_fn");
// 获取当前点击的菜单 2022-08-11
if($(this).parent('li').length>0){
//如果菜单是第一级,则清空菜单数组,重新插入
that.data.handleLog=[];
}
that.pushArrNoRepeat($(this),1);
}));
}
//lsq 给页面的元素绑定点击事件 2022-08-11
setTimeout(function(){
that.bindElemClickEvent();
},500)
},
/**
* @desc 点击元素插入数组时的处理
* @author lsq
* @date 2022-08-11
* @param thisObj 为点击的元素
* @param flg 1菜单
*/
pushArrNoRepeat (thisObj,flg) {
let that=this;
// 获取当前元素名称正则表达式
var reg = sessionStorage.getItem('regular');
// 获取当前点击的元素的内容
let text=thisObj.text()?thisObj.text().trim().replace(reg, ""):'';
// 获取当前点击的元素的lay-href-type值
let menuType=thisObj.attr('lay-href-type')?thisObj.attr('lay-href-type'):'';
// 获取当前点击的菜单的路由地址
let layHref=thisObj.attr('lay-href')?thisObj.attr('lay-href'):'';
let eleObj={
text:text,
menuType:menuType,
layHref:layHref
}
//数组中无当前点击的元素时再将当前点击元素加入到数组中
let textArr=[];
that.data.handleLog.map(item=>{
textArr.push(item.text)
})
if(textArr.indexOf(text)==-1){
if(flg && !layHref){
// 如果当前点击的菜单元素没有路由地址则删除
that.data.handleLog.splice(1) ;
}
that.data.handleLog.push(eleObj)
}
//菜单点击传入属性lay-href的值,普通元素传入当前页面路由
if(flg){
that.sendAjaxData(layHref,text)
}else{
let locationPath=location.hash;
let pathArr=locationPath.split("#/");
let path='/'
if(pathArr && pathArr.length>1){
path=pathArr[1]
}
that.sendAjaxData(path,text)
}
},
/**
* 页面其他元素绑定事件
* @author lsq
* @date 2022-08-11
*/
clickEventHandle (thisObj) {
let that=this;
//绑定事件时增加一个class防止多次绑定事件
thisObj.addClass("on_fn");
that.pushArrNoRepeat(thisObj);
// 把点击的元素按顺序展示
let handleStr='';
let menuStrArr=[];
let menuStrArrSecond=[];
that.data.handleLog.map(item=>{
if(item.menuType){
menuStrArr.push(item.text)
}else{
menuStrArrSecond.push(item.text)
}
})
if(menuStrArr.length>0){
handleStr=menuStrArr.join('->');
}
if(menuStrArrSecond.length>0){
handleStr+='->'+menuStrArrSecond.join(',');
}
},
/**
* 页面其他元素绑定事件
* @author lsq
* @date 2022-08-11
*/
bindElemClickEvent() {
let that=this;
var eventKeys = ['button','[data-bizid]','.layui-table-link'];
eventKeys.map(item=>{
if(!$(item).hasClass("on_fn")){
$(item).unbind('click.handle').on('click.handle',(function (e){
e.preventDefault();
that.clickEventHandle($(this))
}))
}
})
},
/**
* 绑定鼠标右键事件
*/
bindContextMenuEvent() {
var that = this;
var contextmenus = that.data.contextmenus;
var bindContextEvent = function (selector, index) {
var el = $(selector);
... ... @@ -92,47 +237,84 @@ layui.define(['element', 'admin'], function (exports) {
}, 500)
return;
}
if (el.length > 0) {
$(el).each(function (i, v) {
var elItem = $(v);
elItem.attr('title', '点击鼠标右键查看功能点描述信息')
setTimeout(function () {
elItem.contextmenu(function (e) {
e.preventDefault();
let thatItem = $(this);
// 获取当前元素名称正则表达式
var reg = sessionStorage.getItem('regular');
let elementName = thatItem.text().replace(reg, "");
that.getTipsDetail(elementName, thatItem);
})
}, 1000)
});
return;
}
el.attr('title', '点击鼠标右键查看功能点描述信息')
el.contextmenu(function (e) {
e.preventDefault();
let thatItem = $(this);
// 获取当前元素名称正则表达式
var reg = sessionStorage.getItem('regular');
let elementName = thatItem.text().replace(reg, "");
that.getTipsDetail(elementName, thatItem);
})
setTimeout(function () {
el.contextmenu(function (e) {
e.preventDefault();
let thatItem = $(this);
// 获取当前元素名称正则表达式
var reg = sessionStorage.getItem('regular');
let elementName = thatItem.text().replace(reg, "");
that.getTipsDetail(elementName, thatItem);
})
}, 1000)
}
// 循环绑定事件
var bind = function (){
$(contextmenus).each(function (index) {
let val = contextmenus[index];
if (val.indexOf('el::') != -1) {
let elName = val.replace('el::', '');
bindContextEvent(elName, 0);
}
})
var bind = function () {
//lsq 表格数据中的元素有时绑定不了事件,加延时 2022-08-11
setTimeout(function (){
$(contextmenus).each(function (index) {
let val = contextmenus[index];
if (val.indexOf('el::') != -1) {
let elName = val.replace('el::', '');
bindContextEvent(elName, 0);
}
})
},300)
}
// 获取当前页面,是否在配置中
var page = that.getCurrentHash();
$(contextmenus).each(function (index) {
let val = contextmenus[index];
if (val.indexOf('page::') != -1 ) {
if (val.indexOf('page::') != -1) {
let elName = val.replace('page::', '');
if(elName == page){
if (elName == page) {
bind();
return;
}
}
})
// 点击关闭所有tips
$(document).on('click', function (event) {
layer.closeAll('tips');
})
},
/**
* lsq
* 2022-09-13
* 给带有title的元素绑定点击事件
*/
copyTitle() {
$('[title]').unbind('click.title').on('click.title',(function (e){
e.preventDefault();
let oInput = document.createElement('input');
oInput.value = $(this).attr('title').trim();
document.body.appendChild(oInput);
oInput.select();
document.execCommand("Copy");
oInput.className = 'oInput';
oInput.style.display = 'none';
// layer.msg('内容复制成功', {icon: 1, time: 2000});
}))
}
}
... ...