/* * Author: 黎永顺 * name: 水印内容设置 * Description: * Date: 2023/6/14 */ import React, { Component } from "react"; import { WeaFormItem, WeaHelpfulTip, WeaInputNumber, WeaInputSearch, WeaLocaleProvider, WeaRichText, WeaSearchGroup, WeaSlideModal, WeaTransfer } from "ecCom"; import { Button, Col, message, Row } from "antd"; import { commonVariables } from "./config"; import "./index.less"; const getLabel = WeaLocaleProvider.getLabel; const WeaTransferList = WeaTransfer.list; class WmContentSetModal extends Component { constructor(props) { super(props); this.state = { wmWidth: 100, wmHeight: 100, wmOriginText: "", searchV: "" }; } componentWillReceiveProps(nextProps, nextContext) { if (nextProps.visible !== this.props.visible) { this.setState({ wmWidth: nextProps.textSet.wmWidth || 100, wmHeight: nextProps.textSet.wmHeight || 100, wmOriginText: nextProps.textSet.wmOriginText || "" }); } else { this.setState({ wmWidth: 100, wmHeight: 100, wmOriginText: "", searchV: "" }); } } handleSaveWMContent = () => { const html = this.refs.TextContentRichText.getData().replace(/\n/ig, ""); if (!html) { message.warning(getLabel(111, "请输入水印内容!")); return; } const { wmWidth, wmHeight } = this.state; this.props.onClose({ wmWidth, wmHeight, wmSelectedFieldIds: this.getHtmlAttrVal(html), pureWmText: this.convertToPlain(html), wmOriginText: html, wmText: this.convertToWMText(html) }); }; convertToWMText = (html) => { _.map(commonVariables, item => { const { id, name } = item; const reg = eval("/" + name + "/g"); html = html.replace(reg, `$${id}`).replace(/ data-id=\"(.*?)\"/g, ""); }); return html.replace(/ contenteditable="false"/g, ""); }; getHtmlAttrVal = (html) => { let attrAndValueArr = html.match(/ data-id=\"(.*?)\"/g); let valueArr = []; // 放所有该属性的值 if (!_.isEmpty(attrAndValueArr)) { for (let i = 0; i < attrAndValueArr.length; i++) { valueArr.push(attrAndValueArr[i].replace(/ data-id=/g, "").replace(/\"/g, "")); } } return valueArr; }; convertToPlain = (html) => { let tempDivElement = document.createElement("div"); tempDivElement.innerHTML = html; return tempDivElement.textContent || tempDivElement.innerText || ""; }; renderItem = (item = {}) => { return {item.name}; }; selectHeader() { return (