/**
* @name: 全局插件文件
* @author: lili
* @date: 2022-11-17 16:03
* @description:全局插件文件
* @update: 2022-11-17 16:03
*/
import {App, nextTick} from "vue"
export default (app: App) => {
// 列帮助
app.directive("colhelp", {
mounted(el, binding) {
let parentNode = el.parentNode;
let currentIndex = 0
for(let i = 0; i < parentNode.children.length; i++) {
if(el == parentNode.children[i]) {
currentIndex = i;
break;
}
}
let tableDom = el.parentNode.parentNode;
if(tableDom) {
setTimeout(() => {
nextTick(() => {
let thDom = tableDom.querySelectorAll(`.el-table__header-wrapper table thead tr th`)
let tableBody = thDom[currentIndex].querySelector(".cell");
if(tableBody) {
tableBody.innerHTML = `<div class="el-tooltip__trigger mobai-tooltip${currentIndex + 1}" data-v-bb718cca="">
${tableBody.innerText}
<i style="margin-left: 2px;" class="el-icon" data-v-bb718cca=""><svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" data-v-bb718cca=""><path fill="currentColor" d="M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896zm23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z"></path></svg></i>
</div>`
let tooltip = document.querySelector(`.tooltip${currentIndex + 1}`);
// @ts-ignore
tooltip.onmouseover = () => {
const clientObj = tooltip.getBoundingClientRect();
let popShowDom = document.createElement("div")
popShowDom.className = "popshow";
popShowDom.innerText = binding.value
popShowDom.style.top = clientObj.top + "px";
popShowDom.style.left = (clientObj.left + (clientObj.width / 2)) + "px";
document.body.appendChild(popShowDom);
}
// @ts-ignore
tooltip.onmouseout = () => {
document.querySelector(".popshow").remove();
}
}
})
}, 0)
}
// console.log(tableDom, binding)
},
unmounted(el) {
let popshowDom = document.querySelector(".popshow");
if(popshowDom) {
popshowDom.remove();
}
}
})
}
tooltip {
display: flex;
justify-content: center;
align-items: center;
}