实现内容区域可输出文本,也能够通过点击按钮增加内容,输出得文本单个删除,增加得内容为一个整体,整体删除,不可反复增加。

难点1:增加得内容整体删除,这时候就得是一个整体,只能增加整个标签,删除得时候能力整体删除。

<div        :style="{borderColor:isLargeNum?'#f54e45':'#c3c7cb'}"        id="container"        v-html="temps"        @input="deleteEvent"        contenteditable="true"   //此属性可使div可输出        ref="custom-text"        class="custom-text"        @paste.prevent="() => {return false}" //禁止输出空格      ></div>
 deleteEvent() {      const that = this;      this.$nextTick(() => {        //先获取以后dom外面所有内容,通过id惟一来匹配是否剔除已选数据        let tes = this.$refs["custom-text"].innerHTML;        this.objectList = JSON.parse(          JSON.stringify(            this.objectList.filter(i => {              return tes.includes(i.obj_id+'-'+i.obj_name);            })          )        );        setTimeout(() => {          that.matter.desc_forepart = that.$refs["custom-text"].innerText;          that.matter.desc_objs = that.objectList;          that.matter.description = that.$refs["custom-text"].innerText;          if (that.matter.desc_forepart.trim().length > 1000) {            this.isLargeNum = true;          } else {            this.isLargeNum = false;          }        });      });    },
 //选择对象后的进行对应数据的保留    handleChangeObj(data) {      const that = this;      let tes = this.$refs["custom-text"].innerHTML;      data.forEach(i => {        if (!this.$refs["custom-text"].innerHTML.includes(i.obj_id+'-'+i.obj_name)) {          const templates = `<span id=${i.obj_id}-${i.obj_name} style='color: rgb(0, 145, 255); font-size: 14px; -webkit-user-modify: read-only;'>@${i.obj_name}</span><i></i>`;          tes += templates;        }      }); //通过增加span属性得id+name来标识唯一性,利于反复增加和删除,      this.temps = tes;      this.isSHowaddObject = false;      this.objectList = data;      setTimeout(() => {        this.matter.desc_forepart = this.$refs["custom-text"].innerText;        this.matter.desc_objs = this.objectList;        this.matter.description = this.$refs["custom-text"].innerText;        if (that.matter.desc_forepart.trim().length > 1000) {          this.isLargeNum = true;        } else {          this.isLargeNum = false;        }      });      // this.$set(this.workOrderQuery[this.findVluaindex], 'value', data)    },