export const projectData = {
  props: {
    // 视图数据源
    tableData: {
      type: Array,
      default: () => {
        return []
      }
    },
    // 分页信息
    queryParams: {
      type: Object,
      default: () => {
        return {
          current: 1,
          size:10
        }
      }
    },
    // 栏位
    column: {
      type: Array,
      default: () => {
        return []
      }
    },
    //专利号
    projectId:{
      default:0
    },
    //选择专利
    refresh:{
      default:false
    },

    patentNoList:{
      type: Array,
      default: () => {
        return []
      }
    }
  },

  data() {
    return {
    }
  },

  mounted() {
    
  },
  methods: {
    // 点击专利号
    handleClick(row, index) {
      var location = (index + 1) + ((this.queryParams.current - 1) * this.queryParams.size)
      this.$emit('clickPatentNo',row,location)
    },
    changeSelect(patent){
      const index1 = this.patentNoList.indexOf(patent.patentNo)
      if (index1 === -1) {
        if(this.projectId){
          this.patentNoList.push(patent.patentNo)
        }else{
          this.patentNoList.push(patent.appNo)
        }
        
      } else {
        this.patentNoList.splice(index1, 1)
      }
      this.$emit('addSelect',patent.patentNo)
    }
  },
}

export const handleData = {
  // mixins: [highlight],
  props: {
  },
  data() {
    return {
    }
  },
  mounted() {
    
  },
  methods: {
    getView(row,key,type,prop,data) {
      var obj = {
        type: type?type:'String',
        value: key
      }
        const change = row.change
        const change2 = row.change2
        switch (key) {
          case "title":
            // prop = !change ? "content" : "contentOut"
            // obj.type = 'Object'
            var arr = row.title
            if(!arr){
              text = ''
              break
            }
            if(!change){
              var obj = arr.find(item=>{
                return item.if_origin
              })
              var text = ''
              if(obj){
                text = obj.text_content
              }
            }else{
              var obj = arr.find(item=>{
                return !item.if_origin && item.language == 'CN'
              })
              var text = ''
              if(obj){
                text = obj.text_content
              }
            }
            break
          case "abstractStr":
            // prop = !change2 ? "content" : "contentOut"
            // obj.type = 'Object'
            var arr = row.abstractStr
            if(!arr){
              text = ''
              break
            }
            if(!change2){
              var obj = arr.find(item=>{
                return item.if_origin
              })
              var text = ''
              if(obj){
                text = obj.text_content
              }
            }else{
              var obj = arr.find(item=>{
                return !item.if_origin && item.language == 'CN'
              })
              var text = ''
              if(obj){
                text = obj.text_content
              }
            }
            break;
          case "mipc":
            let ipcArr=[]
            for (let k in row[key]) {
              ipcArr.push(row[key][k])
            }
            row[`${key}2`] = ipcArr
            obj.value = `${key}2`
            obj.type = 'Array'
            var text = this.$commonJS.getColumnData(row, obj,prop,data)
            break;
          default:
            var text = this.$commonJS.getColumnData(row, obj,prop,data)
            break
        }
      // var text = this.$commonJS.getColumnData(row, obj, prop, data)
      // console.log(text,key);
      return this.getViewDom(text,key)
    },
    getViewDom(text, field,) {
      if(!text){
        return ""
      }
      var obj = null
      switch (field) {
        case '权利要求原文':
          obj = text.find(item => {
            return item.if_origin
          })
          text = obj? obj.text_content : ''
          break;
        case '权利要求译文':
          obj = text.find(item => {
            return item.if_origin == false
          })
          text = obj? obj.text_content : ''
          break;
        case '说明书文本原文':
          obj = text.find(item => {
            return item.if_origin
          })
          var data=obj.text_content.split('\r\n').join('<br/>')
          text = data ? data : ''
          break;
        case '说明书文本译文':
          obj = text.find(item => {
            return item.if_origin == false
          })
          var data=obj.text_content.split('\r\n').join('<br/>')
          text = data ? data : ''
          break;
      
        default:
          break;
      }

      // if (this.contrastList.length > 0) {
      //   for (let i = 0; i < this.contrastList.length; i++) {
      //     if (this.contrastList[i].patentNo == this.patent.patentNo) {
      //       if (this.contrastList[i].scratchField.indexOf(field) != -1) {
      //         var a = {
      //           color: this.contrastList[i].color,
      //           Type: this.contrastList[i].scratchType,
      //           Id: this.contrastList[i].id,
      //           column: this.contrastList[i].scratchField,
      //           index: Number(this.contrastList[i].position),
      //           text: this.contrastList[i].text,
      //           remark: this.contrastList[i].remark,
      //           temNode: text
      //         }
      //         text = this.AddClass1(a);
      //       }
      //     }
      //   }
      // }
      // if (!this.highlight.enable || !text) {
      //   return text
      // }
      // try {

      //   this.highlight.configs.map(item => {
      //     const keywords = item.keywords.split(';')
      //     for (let keyword of keywords) {
      //       if (!keyword) {
      //         continue
      //       }
      //       let sText = text
      //       let num = -1
      //       const rStr = new RegExp(keyword, "g")
      //       const rHtml = new RegExp("\<.*?\>", "ig")
      //       const sKey = `<span style="background: ${item.color};color: #fff">${keyword}</span>`
      //       const aHtml = sText.match(rHtml)
      //       sText = sText.replace(rHtml, '{~}')
      //       sText = sText.replace(rStr, sKey)
      //       sText = sText.replace(/{~}/g, () => {
      //         num++
      //         return aHtml[num]
      //       })
      //       text = sText
      //     }
      //   })

      // } catch (e) {
      // }
      // console.log(text);
      return text
    },
    //切换原文译文 
    handleChange(row, key) {
      switch (key) {
        case "title":
          this.$set(row,'change',!row.change)
          break
        case "abstractStr":
          this.$set(row,'change2',!row.change2)
          // row.change2 = !row.change2
          break
      }
    },

  },
}

export const highlight = {
 
  data() {
    return {
      
    }
  },
  methods: {
    AddClass1(selectObject) {
      let el = selectObject.temNode;
      // 将当前页面获取到的字符串进行处理，返回当前页面所有的标签及文本
      var splitStrings = this.SplitHtmlTag1(el);
      let bgColor = selectObject.color;
      // 添加线及高亮
      let startTag = '<span class="' + selectObject.Id + '" id="' + selectObject.Id + '" style="background-color:' + selectObject.color + '">';
      if (selectObject.Type == 0) {
        startTag = '<span class="' + selectObject.Id + '" id="' + selectObject.Id + '" style="border-bottom:2px solid ' + selectObject.color + '">';
      }
      if (selectObject.Type == 2) {
        startTag = '<span class = "' + selectObject.Id + '" id="' + selectObject.Id + '" style = "text-decoration-line: underline;text-decoration-style: wavy ;text-decoration-color: ' + selectObject.color + '">';
      }
      // let imgTag = '<span  class="' + selectObject.Id + '" style="background-color:white !important;"><i class="el-icon-location-outline" style="vertical-align: super;background-color:white !important;" onclick="selectMark(\'' + selectObject.Id + '\')"  onmouseenter="mouseenter1(event,\'' + selectObject.Id + '\')"  onmouseleave="mouseleave1(event,\'' + selectObject.Id + '\')"></i></span>';
      let imgTag = '<span  class="' + selectObject.Id + '" style="background-color:white !important;"><i class="iconfont icon-xinxi3" style="vertical-align: super;background-color:white !important;" onclick="selectMark(\'' + selectObject.Id + '\')"  onmouseenter="mouseenter1(event,\'' + selectObject.Id + '\')"  onmouseleave="mouseleave1(event,\'' + selectObject.Id + '\')"></i></span>';
      let endTag = '</span>';
      let elText = '';

      splitStrings.forEach(function (item) {
        if (item.type == 'text') {
          elText = elText + item.text;
        }
      });
      let Indexs = [];
      let i = 0
      if (selectObject.index < 0) {
        let pattern = new RegExp(selectObject.text.replace(/[\r\n]/g, "").replace(/\ +/g, ""), "g");
        while ((match = pattern.exec(elText)) != null) {
          Indexs[i] = match;
          i++;
        }
      } else {
        Indexs[i] = [selectObject.text];
        Indexs[i].index = selectObject.index;
      }
      Indexs.forEach(function (match) {
        let currentIndex = 0;
        let temSplitStrings = new Array();
        splitStrings.forEach(function (item) {
          if (item.type == 'text') {
            if (item.text) {
              if (match.index >= currentIndex && match.index < (currentIndex + item.text.length)) {
                if (selectObject.column.indexOf('权利要求') != -1) {
                  item.text = item.text.replace(/\r/g, ' ')
                  if (item.text.match(/\r/g)) {
                    match.index -= 1
                  }

                }
                if (selectObject.column.indexOf('说明书') != -1) {
                  item.text = item.text.replace(/\r/g, "")
                }
                
                if ((match.index + match[0].length) <= (currentIndex + item.text.length) && item.text.indexOf(match[0]) != -1) {

                  if (match.index > currentIndex) {
                    temSplitStrings.push({ text: item.text.substring(0, match.index - currentIndex), type: 'text' });
                  }
                  temSplitStrings.push({ text: startTag, type: 'tag' });
                  temSplitStrings.push({ text: match[0], type: 'text' });
                  temSplitStrings.push({ text: imgTag, type: 'tag' });
                  // }
                  temSplitStrings.push({ text: endTag, type: 'tag' });

                  if ((match.index + match[0].length) < (currentIndex + item.text.length)) {
                    temSplitStrings.push({ text: item.text.substring((match.index + match[0].length) - currentIndex), type: 'text' });
                  }
                } else {
                  if (item.text.indexOf(match[0]) != -1) {
                    if (match.index > currentIndex) {
                      temSplitStrings.push({ text: item.text.substring(0, match.index - currentIndex), type: 'text' });
                    }
                    if (temSplitStrings.length > 1) {
                      temSplitStrings.push({ text: startTag, type: 'tag' });
                    } else {
                      temSplitStrings.push({ text: startTag, type: 'tag' });
                    }

                    temSplitStrings.push({ text: item.text.substring(match.index - currentIndex), type: 'text' });
                    temSplitStrings.push({ text: endTag, type: 'tag' });
                  } else {
                    temSplitStrings.push({ text: item.text.substring(0, match.index - currentIndex), type: 'text' });
                    temSplitStrings.push({ text: startTag, type: 'tag' });
                    temSplitStrings.push({ text: item.text.substring( match.index - currentIndex,item.text.length), type: 'text' });
                    temSplitStrings.push({ text: endTag, type: 'tag' });
                  }
                }
              } else {
                if ((match.index + match[0].length) <= (currentIndex + item.text.length) && (match.index + match[0].length) > currentIndex) {

                  temSplitStrings.push({ text: startTag, type: 'tag' });
                  temSplitStrings.push({ text: item.text.substring(0, match.index + match[0].length - currentIndex), type: 'text' });

                  temSplitStrings.push({ text: imgTag, type: 'tag' });

                  temSplitStrings.push({ text: endTag, type: 'tag' });
                  if ((match.index + match[0].length) < (currentIndex + item.text.length)) {
                    temSplitStrings.push({ text: item.text.substring((match.index + match[0].length - currentIndex)), type: 'text' });
                  }
                } else {
                  if (match.index < currentIndex && (match.index + match[0].length) >= (currentIndex + item.text.length)) {

                    temSplitStrings.push({ text: startTag, type: 'tag' });
                    temSplitStrings.push(item);
                    temSplitStrings.push({ text: endTag, type: 'tag' });
                  } else {

                    temSplitStrings.push(item);
                  }
                }
              }

              currentIndex = currentIndex + item.text.length;
            } else {
              temSplitStrings.push(item);
            }
          } else {
            temSplitStrings.push(item);
          }
        });

        splitStrings = temSplitStrings;
      });

      let temInnerHtml = '';
      splitStrings.forEach(function (item) {
        temInnerHtml = temInnerHtml + item.text;
      });
      return temInnerHtml;

    },
  },
}


