<div id="mainTable"></div>
import waterMark from '../../common/js/waterMark.js';
export default {
mixins: [waterMark],
mounted() {
this.canvasWMByWMConfig('PASSENGE_FLOW_EPIDEMIC_EN', this, {
selector: '#mainTable',
});
}
}
import apis from '../../api/board';
const contentMap = {
isAddUserName: 'userName',
isAddShowName: 'showName',
isAddEmployee: 'mobilePhone',
};
export default {
data() {
return {
userInfo: {},
}
},
methods: {
async getMyInfoApi() {
try {
const res = await apis.getMyInfo();
return res;
} catch(e) {
console.log(e);
}
},
async getWatermarkByGroupIdApi(){
let params = {
groupId: this.userInfo.data.groupId || 0
}
try {
const res = await apis.getWatermarkByGroupId(params);
return res;
}catch(e) {
console.log(e);
}
},
async canvasWMByWMConfig(key, vm, opt = {}) {
this.userInfo = await this.getMyInfoApi();
let watermarkConfigList = await this.getWatermarkByGroupIdApi();
setTimeout(() => {
canvasWMByWMConfig(key, vm, opt)
}, 100);
const activeItem = watermarkConfigList.find(item => item.watermarkFieldAliasName === key);
if(!activeItem) {
console.log(`该页面没有配置水印 key=${key}`);
return;
}
const contentOpt = {
isAddUserName: activeItem.isAddUserName,
isAddShowName: activeItem.isAddShowName,
isAddEmployee: activeItem.isAddEmployee,
};
this.canvasWM(contentOpt, vm, opt);
},
canvasWM(params, vm, opt = {}) {
console.log("params, vm, opt = {}",params, vm, opt);
const contentArr = [];
for(let key in params) {
if(params[key]) {
if(key === 'isAddEmployee') {
let mobilePhone = this.userInfo.data[contentMap[key]] || '';
contentArr.push(mobilePhone.slice(-4));
} else {
let str = this.userInfo.data[contentMap[key]] || '';
contentArr.push(str);
}
}
}
opt.content = contentArr.join(' ');
this._canvasWM(opt);
},
_canvasWM({
selector = 'body',
width = '200px',
height = '150px',
textAlign = 'center',
textBaseline = 'middle',
font = '14px Microsoft Yahei',
fillStyle = 'rgba(229, 229, 229, 0.6)',
content = '请勿外传',
rotate = '-10',
zIndex = 1000,
} = {}) {
const container = document.querySelector(selector);
const canvas = document.createElement('canvas');
canvas.setAttribute('width', width);
canvas.setAttribute('height', height);
const ctx = canvas.getContext('2d');
ctx.textAlign = textAlign;
ctx.textBaseline = textBaseline;
ctx.font = font;
ctx.fillStyle = fillStyle;
ctx.rotate((Math.PI / 180) * rotate);
ctx.fillText(content, parseFloat(width) / 2, parseFloat(height) / 2);
const base64Url = canvas.toDataURL();
const __wm = document.querySelector(`${selector} .__wm`);
const watermarkDiv = __wm || document.createElement('div');
const styleStr = `
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
z-index:${zIndex};
pointer-events:none;
background-repeat:repeat;
background-image:url('${base64Url}')`;
watermarkDiv.setAttribute('style', styleStr);
watermarkDiv.classList.add('__wm');
if(!__wm){
container.style.position = 'relative';
container.insertBefore(watermarkDiv, container.firstChild);
}
}
}
}