From 8b5da442f7aafa05ab214bf639a850c46557a2bb Mon Sep 17 00:00:00 2001
From: litian <2804272236@qq.com>
Date: 星期二, 14 五月 2024 16:38:40 +0800
Subject: [PATCH] huax

---
 src/views/home.vue |  558 +++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 397 insertions(+), 161 deletions(-)

diff --git a/src/views/home.vue b/src/views/home.vue
index 61293b0..8bc92f8 100644
--- a/src/views/home.vue
+++ b/src/views/home.vue
@@ -139,7 +139,7 @@
               ></div>
             </div>
           </div>
-          <div class="list-box" v-loading="scribeData.loading">
+          <div class="list-box">
             <div v-if="scribeData.noteList.length > 0 && !scribeData.loading">
               <div v-for="(item, index) in scribeData.noteList" :key="item.key" class="listItem">
                 <div class="textBox">
@@ -223,7 +223,7 @@
                     <div class="resourceImg">
                       <img :src="video" mode="" />
                     </div>
-                    <div class="rName" v-if="searchText !=''" v-html="item.name"></div>
+                    <div class="rName" v-if="searchText != ''" v-html="item.name"></div>
                     <div class="rName" v-else>{{ item.name }}</div>
                   </div>
                 </el-col>
@@ -285,7 +285,7 @@
             <div class="">宸蹭笂璇撅細{{ headerData.classTime }}</div>
           </div>
           <div class="progress">
-            <div class="bookName">瀛﹀墠鍎跨鍗敓涓庝繚鍋ワ紙绗笁鐗堬級</div>
+            <div class="bookName">{{bookName}}</div>
             <div>{{ headerData.process }}%</div>
           </div>
           <div class="rightBox">
@@ -302,12 +302,7 @@
         <!-- 寰簲鐢ㄧ洅瀛� -->
         <div class="pageBox-content" @scroll="pageScroll">
           <div class="content-box">
-            <div
-              id="container"
-              @mousedown="handleMouseDown"
-              @mousemove="handleMousemove"
-              @mouseup="handleMouseUp"
-            ></div>
+            <div id="container" @mousedown="handleMouseDown" @mousemove="handleMousemove" ></div>
             <!-- 鐢荤瑪鐢诲竷 -->
             <div class="canvas-box" v-show="canvasShow">
               <canvas id="canvasRef" :width="canvasWith" :height="canvasheight"></canvas>
@@ -390,34 +385,71 @@
         >
           <el-popover
             placement="right"
-            :width="
-              floatingToolData.activeToolData == '鏍囨敞'
-                ? 120
-                : floatingToolData.activeToolData == '娓呴櫎'
-                  ? 200
-                  : 250
-            "
+            width="120"
             trigger="click"
-            v-if="
-              floatingToolData.activeToolData == '鐢荤瑪' ||
-              floatingToolData.activeToolData == '娓呴櫎' ||
-              floatingToolData.activeToolData == '鏂囧瓧' ||
-              floatingToolData.activeToolData == '鏍囨敞'
-            "
+            v-if="floatingToolData.activeToolData == '鏍囨敞'"
           >
             <div class="popinnerBox">
-              <div class="brush" v-if="floatingToolData.activeToolData == '鐢荤瑪'">
+              <div class="label" v-if="floatingToolData.activeToolData == '鏍囨敞'">
+                <div class="labelItem hover" @click="labelShow('hide')">
+                  <img :src="hide" />
+                  <div>闅愯棌</div>
+                </div>
+                <div class="labelItem hover" @click="labelShow('show')">
+                  <img :src="show" />
+                  <div>鏄剧ず</div>
+                </div>
+              </div>
+            </div>
+            <template #reference>
+              <div
+                :class="
+                  floatingToolData.activeToolData == item.name
+                    ? 'floatToolActive floatToolItem'
+                    : 'floatToolItem'
+                "
+              >
+                <img
+                  :src="floatingToolData.activeToolData == item.name ? item.activeIcon : item.icon"
+                  alt=""
+                />
+                <div class="text">{{ item.name }}</div>
+              </div>
+            </template>
+          </el-popover>
+          <div
+            :class="
+              floatingToolData.activeToolData == item.name
+                ? 'floatToolActive floatToolItem'
+                : 'floatToolItem'
+            "
+            v-else
+            @click="floatItemHandle(item)"
+          >
+            <img
+              :src="floatingToolData.activeToolData == item.name ? item.activeIcon : item.icon"
+              alt=""
+            />
+            <div class="text">{{ item.name }}</div>
+          </div>
+        </div>
+      </div>
+      <div class="brushBox" v-if="floatingToolData.activeToolData == '鐢荤瑪'">
+        <div class="toolList">
+          <el-popover placement="top" width="250" trigger="click">
+            <div class="popinnerBox">
+              <div class="brush">
                 <div class="thickness">
                   <div
-                    :class="floatingToolData.thicknessActive == '1' ? 'small active' : 'small'"
+                    :class="toolSelectData.thicknessActive == '1' ? 'small active' : 'small'"
                     @click="selectThickness('1')"
                   ></div>
                   <div
-                    :class="floatingToolData.thicknessActive == '3' ? 'middle active' : 'middle'"
+                    :class="toolSelectData.thicknessActive == '3' ? 'middle active' : 'middle'"
                     @click="selectThickness('3')"
                   ></div>
                   <div
-                    :class="floatingToolData.thicknessActive == '5' ? 'large active' : 'large'"
+                    :class="toolSelectData.thicknessActive == '5' ? 'large active' : 'large'"
                     @click="selectThickness('5')"
                   ></div>
                 </div>
@@ -425,27 +457,27 @@
                   <div class="lineTypeBox">
                     <div
                       :class="
-                        floatingToolData.lineTypeActive == 'solid'
+                        toolSelectData.lineTypeActive == 'solid'
                           ? 'typeItem lineTypeActive'
                           : 'typeItem'
                       "
                       @click="selectLineType('solid')"
                     >
                       <div class="solid"></div>
-                      <div class="activeIcon" v-if="floatingToolData.lineTypeActive == 'solid'">
+                      <div class="activeIcon" v-if="toolSelectData.lineTypeActive == 'solid'">
                         <img :src="xuanzhong" />
                       </div>
                     </div>
                     <div
                       :class="
-                        floatingToolData.lineTypeActive == 'dashed'
+                        toolSelectData.lineTypeActive == 'dashed'
                           ? 'typeItem lineTypeActive'
                           : 'typeItem'
                       "
                       @click="selectLineType('dashed')"
                     >
                       <div class="dashed"></div>
-                      <div class="activeIcon" v-if="floatingToolData.lineTypeActive == 'dashed'">
+                      <div class="activeIcon" v-if="toolSelectData.lineTypeActive == 'dashed'">
                         <img :src="xuanzhong" />
                       </div>
                     </div>
@@ -458,38 +490,40 @@
                       @click="lineColorSelect(item)"
                     >
                       <div :style="{ background: item.key }" class="scribeItem">
-                        <img :src="xuanzhong" v-if="item.key == floatingToolData.lineColorActive" />
+                        <img :src="xuanzhong" v-if="item.key == toolSelectData.lineColorActive" />
                       </div>
                     </div>
                   </div>
                 </div>
               </div>
-              <div class="cleanup" v-if="floatingToolData.activeToolData == '娓呴櫎'">
-                <div class="cleanupItem hover" @click="cleanUpSelect('prev')">
-                  <img :src="clearPrevious" />
-                  <div>娓呴櫎涓婁竴姝�</div>
+            </div>
+            <template #reference>
+              <div class="floatToolItem" @click="toolSelectHandle('huabi')">
+                <div class="imgBox">
+                  <img :src="hide" alt="" />
                 </div>
-                <div class="cleanupItem hover" @click="cleanUpSelect('all')">
-                  <img :src="clear" />
-                  <div>娓呴櫎鍏ㄩ儴</div>
-                </div>
+                <div class="text">鐢荤瑪</div>
               </div>
-              <div class="write" v-if="floatingToolData.activeToolData == '鏂囧瓧'">
+            </template>
+          </el-popover>
+          <el-popover placement="top" width="250" trigger="click">
+            <div class="popinnerBox">
+              <div class="write">
                 <div class="characters">
                   <div
-                    :class="floatingToolData.fontSizeActive == '14' ? 'small active' : 'small'"
+                    :class="toolSelectData.fontSizeActive == '14' ? 'small active' : 'small'"
                     @click="selectfontSize('14')"
                   >
                     灏�
                   </div>
                   <div
-                    :class="floatingToolData.fontSizeActive == '16' ? 'middle active' : 'middle'"
+                    :class="toolSelectData.fontSizeActive == '16' ? 'middle active' : 'middle'"
                     @click="selectfontSize('16')"
                   >
                     涓�
                   </div>
                   <div
-                    :class="floatingToolData.fontSizeActive == '18' ? 'large active' : 'large'"
+                    :class="toolSelectData.fontSizeActive == '18' ? 'large active' : 'large'"
                     @click="selectfontSize('18')"
                   >
                     澶�
@@ -504,33 +538,99 @@
                       @click="lineColorSelect(item)"
                     >
                       <div :style="{ background: item.key }" class="scribeItem">
-                        <img :src="xuanzhong" v-if="item.key == floatingToolData.lineColorActive" />
+                        <img :src="xuanzhong" v-if="item.key == toolSelectData.lineColorActive" />
                       </div>
                     </div>
                   </div>
                 </div>
               </div>
-              <div class="label" v-if="floatingToolData.activeToolData == '鏍囨敞'">
-                <div class="labelItem hover" @click="labelShow('hide')">
-                  <img :src="hide" />
-                  <div>闅愯棌</div>
+            </div>
+            <template #reference>
+              <div class="floatToolItem" @click="toolSelectHandle('wenzi')">
+                <div class="imgBox">
+                  <img :src="wenzi2" alt="" />
                 </div>
-                <div class="labelItem hover" @click="labelShow('show')">
-                  <img :src="show" />
-                  <div>鏄剧ず</div>
+                <div class="text">鏂囧瓧</div>
+              </div>
+            </template>
+          </el-popover>
+          <el-popover placement="top" width="250" trigger="click">
+            <div class="popinnerBox">
+              <div class="write">
+                <div class="characters">
+                  <div
+                    :class="floatingToolData.fontSizeActive == '14' ? 'small active' : 'small'"
+                    @click="selectfontSize('14')"
+                  >
+                    灏�
+                  </div>
+                  <div
+                    :class="toolSelectData.fontSizeActive == '16' ? 'middle active' : 'middle'"
+                    @click="selectfontSize('16')"
+                  >
+                    涓�
+                  </div>
+                  <div
+                    :class="toolSelectData.fontSizeActive == '18' ? 'large active' : 'large'"
+                    @click="selectfontSize('18')"
+                  >
+                    澶�
+                  </div>
+                </div>
+                <div class="lineStyle">
+                  <div class="colorSelectBox">
+                    <div
+                      v-for="item in colorSelectList"
+                      :key="item.key"
+                      class="flex1 hover"
+                      @click="lineColorSelect(item)"
+                    >
+                      <div :style="{ background: item.key }" class="scribeItem">
+                        <img :src="xuanzhong" v-if="item.key == toolSelectData.lineColorActive" />
+                      </div>
+                    </div>
+                  </div>
                 </div>
               </div>
             </div>
             <template #reference>
-              <div class="floatToolItem">
-                <img :src="item.icon" alt="" />
-                <div class="text">{{ item.name }}</div>
+              <div class="floatToolItem" @click="toolSelectHandle('tuxing')">
+                <div class="imgBox">
+                  <img :src="tuxing" alt="" />
+                </div>
+                <div class="text">鍥惧舰</div>
               </div>
             </template>
           </el-popover>
-          <div class="floatToolItem" v-else @click="floatItemHandle(item)">
-            <img :src="item.icon" alt="" />
-            <div class="text">{{ item.name }}</div>
+          <div class="floatToolItem" @click="toolSelectHandle('xiangpi')">
+            <div class="imgBox">
+              <img :src="clearPrevious" alt="" />
+            </div>
+            <div class="text">姗$毊鎿�</div>
+          </div>
+          <div class="floatToolItem" @click="toolSelectHandle('chexiao')">
+            <div class="imgBox">
+              <img :src="clear" alt="" />
+            </div>
+            <div class="text">鎾ら攢</div>
+          </div>
+          <div class="floatToolItem" @click="toolSelectHandle('chongzuo')">
+            <div class="imgBox">
+              <img :src="hide" alt="" />
+            </div>
+            <div class="text">閲嶅仛</div>
+          </div>
+          <div class="floatToolItem" @click="toolSelectHandle('qingchu')">
+            <div class="imgBox">
+              <img :src="hide" alt="" />
+            </div>
+            <div class="text">娓呴櫎</div>
+          </div>
+          <div class="floatToolItem layOutTool" @click="toolSelectHandle('tuichu')">
+            <div class="imgBox">
+              <img :src="tuichu" alt="" />
+            </div>
+            <div class="text">閫�鍑�</div>
           </div>
         </div>
       </div>
@@ -643,7 +743,7 @@
   </el-dialog>
   <el-dialog title="鐧惧害鐧剧" align-center v-model="baiduVisible" width="60%" class="myDialogs">
     <div class="wendabox">
-      <iframe :src="'https://baike.baidu.com/item/'+ selectText" frameborder="0"></iframe>
+      <iframe :src="'https://baike.baidu.com/item/' + selectText" frameborder="0"></iframe>
     </div>
   </el-dialog>
   <el-dialog title="AI鏅鸿兘闂瓟" align-center v-model="wendaVisible" width="26%" class="myDialogs">
@@ -681,12 +781,13 @@
 </template>
 
 <script setup lang="ts">
-import { ref, reactive, watch, onMounted, inject } from 'vue'
-import { ctxUrl } from '@/assets/js/config'
+import { ref, reactive, watch, onMounted, onBeforeMount,inject } from 'vue'
+import { ctxUrl,resourceUrl } from '@/assets/js/config'
 import { useRouter, useRoute } from 'vue-router'
 import useClipboard from 'vue-clipboard3'
 const { toClipboard } = useClipboard()
 const request = inject('request')
+const qiankunActions = inject('qiankunActions')
 //鑾峰彇璺敱鍣�
 let router = useRouter()
 //鑾峰彇褰撳墠璺敱鐨勪俊鎭�
@@ -732,6 +833,7 @@
 import qingchu1 from '../assets/images/operation/Clearaway-b.png'
 import wenzi from '../assets/images/operation/wenzi-w.png'
 import wenzi1 from '../assets/images/operation/wenzi-b.png'
+import wenzi2 from '../assets/images/operation/wenzi.png'
 import biaoqianw from '../assets/images/operation/biaoqian-w.png'
 import biaoqian1 from '../assets/images/operation/biaoqian-b.png'
 import baiban from '../assets/images/operation/baiban-w.png'
@@ -744,6 +846,8 @@
 import clearPrevious from '../assets/images/operation/clearPrevious.png'
 import hide from '../assets/images/operation/hide.png'
 import show from '../assets/images/operation/show.png'
+import tuichu from '../assets/images/operation/tuichu.png'
+import tuxing from '../assets/images/operation/tuxing.png'
 
 import gaoliang from '../assets/images/operation/gaoliang.png'
 import gaoliang1 from '../assets/images/operation/gaoliang-b.png'
@@ -782,20 +886,23 @@
 import { start } from 'qiankun'
 import axios from 'axios'
 import { fabric } from 'fabric'
+
+import { loadMicroApp } from 'qiankun'
+import { microApps } from '@/child.ts'
 const canvasWith = ref(1000)
 const canvasheight = ref(3000)
 const screenWidth = ref(
   window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth
 )
+
+let microApp = null // 寰簲鐢ㄥ疄渚�
+const bookName = ref('')
+const bookId = ref(1)
 onMounted(() => {
   // canvasWith.value = window.innerWidth - 540
   // canvasheight.value = window.innerHeight - 110
-  getNotesList() // 鑾峰彇楂樹寒
-  getlineHeightList() //鑾峰彇楂樹寒
-  getScribeList() //鑾峰彇鍒掔嚎
   getCatalogueData()
   getResourceData()
-  getScreenshotList()
   // setTimeout(() => {
   //   canvasWith.value = document.getElementById('container').offsetWidth
   //   canvasheight.value = document.getElementById('container').offsetHeight
@@ -810,6 +917,29 @@
         window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth
     })()
   }
+
+  // 鍔犺浇寰簲鐢�
+  microApp = loadMicroApp(microApps.book1, {
+    sandbox: {
+      // strictStyleIsolation: true,
+      // experimentalStyleIsolation: true
+    }
+  })
+  window.qiankunActions.onGlobalStateChange((state, prev) => {
+    bookName.value = state.bookName
+    bookId.value = state.bookId
+   
+  })
+ 
+  window.qiankunActions.setGlobalState({
+    state: 1, // 鍔犺浇瀛愬簲鐢�
+    windowSelection: (data) => {
+      // 缁戝畾瀛愬簲鐢ㄩ�夋嫨鐩戝惉浜嬩欢
+      console.log(data, '瀛愬簲鐢ㄩ�夋嫨')
+      getSelection(data)
+    }
+  })
+ 
 })
 
 watch(
@@ -822,11 +952,20 @@
     }
   }
 )
+watch(
+  () => bookId.value,
+  (val) => {
+    getNotesList() // 鑾峰彇绗旇
+    getlineHeightList() //鑾峰彇楂樹寒
+    getScribeList() //鑾峰彇鍒掔嚎
+    getScreenshotList() //鎴浘
+  }
+)
 //鑾峰彇鐩綍
 const catalogueData = ref([])
 const getCatalogueData = () => {
   axios
-    .get(ctxUrl + '/books/test/information.json')
+    .get(ctxUrl + '/information.json')
     .then(function (response) {
       var json = response.data
       // 澶勭悊鑾峰彇鍒扮殑json鏁版嵁
@@ -841,7 +980,6 @@
   label: 'label'
 }
 const handleNodeClick = (data) => {
-  console.log(data.id, 12)
   document.getElementById(data.id).scrollIntoView()
 }
 
@@ -879,7 +1017,7 @@
 const testWord = ref('') //word閾炬帴
 const getResourceData = () => {
   axios
-    .get(ctxUrl + '/books/test/resource.json')
+    .get(ctxUrl + '/resource.json')
     .then(function (response) {
       var json = response.data
       // 澶勭悊鑾峰彇鍒扮殑json鏁版嵁
@@ -900,9 +1038,9 @@
   resourVisble.value = true
   resourType.value = data.type
   if (data.type == 'video') {
-    testVideo.value = ctxUrl + '/books/test/resourceData/' + data.name
+    testVideo.value = resourceUrl + '/resourceData/' + data.name
   } else if (data.type == 'word') {
-    testWord.value = ctxUrl + '/books/test/resourceData/' + data.name
+    testWord.value = resourceUrl + '/resourceData/' + data.name
   }
 }
 
@@ -924,7 +1062,6 @@
       resourceDataList.value = resourceData.value.attachmentList
       break
   }
-  console.log(resourceDataList.value)
 }
 const searchBtn = () => {
   if (searchShow.value) {
@@ -963,7 +1100,6 @@
 // 閫変腑鑿滃崟
 const activeMenu = ref(0)
 //璧勬簮绫诲瀷
-
 const resourceType = ref('default')
 // 鑿滃崟鐐瑰嚮
 const menuItemClick = (index) => {
@@ -988,6 +1124,17 @@
 //鍒锋柊褰撳墠椤甸潰
 const reload = () => {
   location.reload()
+  // if (microApp) {
+  //   microApp.unmount() // 鍗歌浇寰簲鐢�
+  //   microApp = loadMicroApp(microApps.book1, {
+  //     sandbox: {
+  //       strictStyleIsolation: true,
+  //       experimentalStyleIsolation: true
+  //     }
+  //   })
+  // } else {
+  //   location.reload()
+  // }
 }
 
 const selectResourceType = (type) => {
@@ -1040,9 +1187,15 @@
 })
 const fontSizeSelect = (item) => {
   settingForm.fontSizeActive = item.key
+  window.qiankunActions.setGlobalState({
+    fontSizeNum: settingForm.fontSizeActive, // 鍔犺浇瀛愬簲鐢�
+  })
 }
 const bgColorSelect = (item) => {
   settingForm.bgColorActive = item.key
+  window.qiankunActions.setGlobalState({
+    bgColor: settingForm.bgColorActive, // 鍔犺浇瀛愬簲鐢�
+  })
 }
 //绗旇棰滆壊绛涢��
 const searchClick = (item) => {
@@ -1182,29 +1335,26 @@
 const floatingToolBox = reactive([
   {
     icon: huabi,
+    activeIcon: huabi1,
     name: '鐢荤瑪'
   },
   {
-    icon: qingchu,
-    name: '娓呴櫎'
-  },
-  {
-    icon: wenzi,
-    name: '鏂囧瓧'
-  },
-  {
-    icon: biaozhu,
-    name: '鏍囨敞'
-  },
-  {
-    icon: biaoqianw,
-    name: '鏍囩'
-  },
-  {
+    activeIcon: baiban1,
     icon: baiban,
     name: '鐧芥澘'
   },
   {
+    activeIcon: biaozhu1,
+    icon: biaozhu,
+    name: '鏍囨敞'
+  },
+  {
+    activeIcon: biaoqian1,
+    icon: biaoqianw,
+    name: '鏍囩'
+  },
+  {
+    activeIcon: jieping1,
     icon: jieping,
     name: '鎴睆'
   }
@@ -1232,22 +1382,16 @@
       floatingToolBox[0].icon = huabi1
       break
     case 1:
-      floatingToolBox[1].icon = qingchu1
+      floatingToolBox[1].icon = baiban1
       break
     case 2:
-      floatingToolBox[2].icon = wenzi1
+      floatingToolBox[2].icon = biaozhu1
       break
     case 3:
-      floatingToolBox[3].icon = biaozhu1
+      floatingToolBox[3].icon = biaoqian1
       break
     case 4:
-      floatingToolBox[4].icon = biaoqian1
-      break
-    case 5:
-      floatingToolBox[5].icon = baiban1
-      break
-    case 6:
-      floatingToolBox[6].icon = jieping1
+      floatingToolBox[4].icon = jieping1
       break
   }
 }
@@ -1258,22 +1402,16 @@
       floatingToolBox[0].icon = huabi
       break
     case 1:
-      floatingToolBox[1].icon = qingchu
+      floatingToolBox[1].icon = baiban
       break
     case 2:
-      floatingToolBox[2].icon = wenzi
+      floatingToolBox[2].icon = biaozhu
       break
     case 3:
-      floatingToolBox[3].icon = biaozhu
+      floatingToolBox[3].icon = biaoqianw
       break
     case 4:
-      floatingToolBox[4].icon = biaoqianw
-      break
-    case 5:
-      floatingToolBox[5].icon = baiban
-      break
-    case 6:
-      floatingToolBox[6].icon = jieping
+      floatingToolBox[4].icon = jieping
       break
   }
 }
@@ -1293,7 +1431,6 @@
   switch (item.name) {
     case '鐢荤瑪':
       canvasShow.value = true
-      init()
       break
     case '鎴睆':
       jitT()
@@ -1309,24 +1446,45 @@
   }
 }
 const dragstart = (e) => {
-  console.log(e)
   floatingToolData.startclientx = e.clientX
   floatingToolData.startclienty = e.clientY
+}
+//鐢荤瑪鎿嶄綔鏍忎簨浠�
+const toolSelectData = reactive({
+  activeTool: '',
+  fontSizeActive: '16',
+  thicknessActive: '3', //鐢荤瑪閫変腑绮楃粏
+  lineTypeActive: 'solid', //鐢荤瑪閫変腑绾跨被鍨�
+  lineColorActive: '#333' //鐢荤瑪閫変腑绾块鑹�
+})
+const toolSelectHandle = (title) => {
+  toolSelectData.activeTool = title
+  switch (title) {
+    case 'huabi':
+      init()
+      break
+    case 'wenzi':
+      break
+    case 'tuichu':
+    canvasShow.value = false
+    floatingToolData.activeToolData = ''
+      break
+  }
 }
 
 //閫変腑鐢荤瑪绮楃粏
 const selectThickness = (str) => {
-  floatingToolData.thicknessActive = str
+  toolSelectData.thicknessActive = str
   init()
 }
 
 const selectLineType = (str) => {
-  floatingToolData.lineTypeActive = str
+  toolSelectData.lineTypeActive = str
   init()
 }
 //鐢荤瑪棰滆壊閫夋嫨
 const lineColorSelect = (item) => {
-  floatingToolData.lineColorActive = item.key
+  toolSelectData.lineColorActive = item.key
   init()
 }
 //鐢诲竷灞炴��
@@ -1334,24 +1492,16 @@
   canvas.value = new fabric.Canvas('canvasRef', {
     isDrawingMode: true // 鍚敤缁樼敾妯″紡
   })
-  canvas.value.freeDrawingBrush.color = floatingToolData.lineColorActive
-  canvas.value.freeDrawingBrush.width = floatingToolData.thicknessActive
+  canvas.value.freeDrawingBrush.color = toolSelectData.lineColorActive
+  canvas.value.freeDrawingBrush.width = toolSelectData.thicknessActive
 }
 
-//娓呴櫎涓婁竴姝�/鍏ㄩ儴
-const cleanUpSelect = (str) => {
-  if (str == 'all') {
-    canvasShow.value = false
-  } else {
-    console.log(history.value)
-  }
-}
 //鏍囩鏄剧ず闅愯棌
 const labelShow = (str) => {}
 
 //鏂囧瓧澶у皬
 const selectfontSize = (str) => {
-  floatingToolData.fontSizeActive = str
+  toolSelectData.fontSizeActive = str
 }
 
 //鎴浘
@@ -1387,7 +1537,7 @@
         setKeyRequests: [
           {
             domain: 'screenshot',
-            key: '2358',
+            key: bookId.value,
             value: JSON.stringify(screenshotList.value)
           }
         ]
@@ -1410,7 +1560,7 @@
     method: 'post',
     data: {
       domain: 'screenshot',
-      keys: ['2358']
+      keys: [bookId.value]
     }
   }).then((res) => {
     if (res && res.length > 0 && res[0].value) {
@@ -1426,6 +1576,7 @@
 //閫変腑鏂囧瓧宸ュ叿鏍�
 const selectText = ref('') //閫変腑鏂囧瓧
 const selectNode = ref(null)
+const selectPage = ref(1)
 const showToolBox = ref(false)
 const dialogToolData = reactive({
   left: 500,
@@ -1467,6 +1618,18 @@
     isMouseDown.value = false
   }
   move.value = false
+}
+
+const getSelection =(data)=>{
+  if (data.txt) {
+    console.log(data.node,"data")
+      showToolBox.value = true
+      selectText.value = data.txt
+      selectNode.value = data.node.innerHTML
+      selectPage.value = data.page
+      dialogToolData.top = data.y
+      dialogToolData.left = data.x
+    }
 }
 
 const pageScroll = (e) => {
@@ -1643,13 +1806,16 @@
 const clickSelect = (item) => {
   colorActive.value = item.key
   if (toolActive.value == '楂樹寒') {
-    dialogToolData.lineHeight.push({
+    let lineHeightData = {
       selectNode: selectNode.value,
       selectText: selectText.value,
+      selectPage: selectPage.value,
       color: colorActive.value,
       chapter: dialogToolData.chapter,
       createDate: new Date()
-    })
+    }
+    dialogToolData.lineHeight.push(lineHeightData)
+    console.log(dialogToolData.lineHeight,"鍓峮ode")
     request({
       url: '/identity/api/ApiAppUserSetKey',
       method: 'post',
@@ -1657,7 +1823,7 @@
         setKeyRequests: [
           {
             domain: 'highLight',
-            key: '2358',
+            key: bookId.value,
             value: JSON.stringify(dialogToolData.lineHeight)
           }
         ]
@@ -1673,6 +1839,7 @@
     dialogToolData.scribeList.push({
       selectNode: selectNode.value,
       selectText: selectText.value,
+      selectPage: selectPage.value,
       color: colorActive.value,
       chapter: dialogToolData.chapter,
       createDate: new Date()
@@ -1684,7 +1851,7 @@
         setKeyRequests: [
           {
             domain: 'underline',
-            key: '2358',
+            key: bookId.value,
             value: JSON.stringify(dialogToolData.scribeList)
           }
         ]
@@ -1703,12 +1870,18 @@
   const obj = {
     desc: formData.desc
   }
+  if(!colorActive.value){
+    ElMessage.error('璇烽�夋嫨绗旇棰滆壊!')
+    return
+  }
   if (!lock.value) {
     lock.value = true
     if (formData.desc.replace(/^\s*|\s*$/g, '')) {
       dialogToolData.notesList.push({
+        selectNode: selectNode.value,
         selectText: selectText.value,
         color: colorActive.value,
+        selectPage: selectPage.value,
         chapter: dialogToolData.chapter,
         createDate: new Date(),
         note: formData.desc.replace(/^\s*|\s*$/g, '')
@@ -1720,7 +1893,7 @@
           setKeyRequests: [
             {
               domain: 'notes',
-              key: '2358',
+              key: bookId.value,
               value: JSON.stringify(dialogToolData.notesList)
             }
           ]
@@ -1750,14 +1923,13 @@
     method: 'post',
     data: {
       domain: 'notes',
-      keys: ['2358']
+      keys: [bookId.value]
     }
   }).then((res) => {
     if (res && res.length > 0 && res[0].value) {
-      scribeData.loading = false
       dialogToolData.notesList = JSON.parse(res[0].value)
       let list = JSON.parse(res[0].value)
-      let textDom1 = document.getElementById('container')
+      let textDom1 = document.querySelector('.temp-book')
       if (list.length > 0) {
         list.forEach((item, index) => {
           item.createDate = moment(item.createDate).format('YYYY-MM-DD')
@@ -1779,21 +1951,25 @@
             }
           }
           //椤甸潰娣诲姞绗旇
-          let containerElement = document.createElement('span')
-          containerElement.style.textDecoration = 'underline'
-          containerElement.innerText = item.selectText
           let rReg1 = new RegExp(`${item.selectText}`, 'ig')
           let text1 = textDom1.innerHTML
-          let rHtml1 = ''
-          rHtml1 = text1.replace(
+          let nHtmlText1 = item.selectNode
+
+          let nHtml1 = ''
+          nHtml1 = nHtmlText1.replace(
             rReg1,
             `<span style="padding-bottom:2px; border-bottom: 2px solid;border-bottom-color:${item.color}" class="underline">${item.selectText}</span><img src="${biji1}" style="cursor: pointer" onclick="notesVisbleShow('${item.selectText}')"/>`
+          )
+          let rHtml1 = ''
+          rHtml1 = text1.replace(
+            nHtmlText1,
+            nHtml1
           )
           textDom1.innerHTML = rHtml1
         })
       }
     }
-    
+    scribeData.loading = false
   })
 }
 //鍒掔嚎
@@ -1804,26 +1980,29 @@
     method: 'post',
     data: {
       domain: 'underline',
-      keys: ['2358']
+      keys: [bookId.value]
     }
   }).then((res) => {
     if (res && res.length > 0 && res[0].value) {
       dialogToolData.scribeList = JSON.parse(res[0].value)
       scribeData.scribeDataList = JSON.parse(res[0].value)
-      let textDom1 = document.getElementById('container')
-      console.log(scribeData.scribeDataList, '鍒掔嚎')
+      let textDom1 = document.querySelector('.temp-book')
       if (scribeData.scribeDataList.length > 0) {
         for (let i = 0; i < scribeData.scribeDataList.length; i++) {
           let item = scribeData.scribeDataList[i]
-          let containerElement = document.createElement('span')
-          containerElement.style.textDecoration = 'underline'
-          containerElement.innerText = item.selectText
           let rReg1 = new RegExp(`${item.selectText}`, 'ig')
           let text1 = textDom1.innerHTML
-          let rHtml1 = ''
-          rHtml1 = text1.replace(
+          let nHtmlText1 = item.selectNode
+          
+          let nHtml1 = ''
+          nHtml1 = nHtmlText1.replace(
             rReg1,
             `<span style="text-decoration:underline;text-decoration-style: wavy;text-underline-thickness:2px;text-decoration-color:${item.color};cursor: pointer">${item.selectText}</span>`
+          )
+          let rHtml1 = ''
+          rHtml1 = text1.replace(
+            nHtmlText1,
+            nHtml1
           )
           textDom1.innerHTML = rHtml1
         }
@@ -1839,26 +2018,31 @@
     method: 'post',
     data: {
       domain: 'highLight',
-      keys: ['2358']
+      keys: [bookId.value]
     }
   }).then((res) => {
     if (res && res.length > 0 && res[0].value) {
       dialogToolData.lineHeight = JSON.parse(res[0].value)
       scribeData.lineHeightList = JSON.parse(res[0].value)
       console.log(scribeData.lineHeightList, '楂樹寒')
-      let textDom = document.getElementById('container')
+      let textDom = document.querySelector('.temp-book')
+      console.log(textDom)
       if (scribeData.lineHeightList.length > 0) {
         for (let i = 0; i < scribeData.lineHeightList.length; i++) {
           let item = scribeData.lineHeightList[i]
-          let heightLightElement = document.createElement('i')
-          heightLightElement.style.backgroundColor = item.color
-          heightLightElement.innerText = item.selectText
           let rReg = new RegExp(`${item.selectText}`, 'ig')
           let text = textDom.innerHTML
-          let rHtml = ''
-          rHtml = text.replace(
+          let nHtmlText = item.selectNode
+          let nHtml = ''
+          nHtml = nHtmlText.replace(
             rReg,
             `<span style="background: ${item.color};padding: 2px;cursor: pointer">${item.selectText}</span>`
+          )
+          // nHtmlText = nHtml
+          let rHtml = ''
+          rHtml = text.replace(
+            nHtmlText,
+            nHtml
           )
           textDom.innerHTML = rHtml
         }
@@ -1872,7 +2056,13 @@
   addNoteVisble.value = true
   let notes = dialogToolData.notesList.find((item) => item.selectText == txt)
   formData.desc = notes.note
+  colorActive.value = notes.color
+  selectNode.value = notes.selectNode
+  selectText.value = notes.selectText
+  selectPage.value = notes.selectPage
+  dialogToolData.chapter = notes.chapter
 }
+
 window.deleteScribeShow = function (txt) {
   console.log(txt, 2)
   let list = scribeData.scribeDataList.filter((item) => item.selectText != txt)
@@ -1883,7 +2073,7 @@
       setKeyRequests: [
         {
           domain: 'underline',
-          key: '2358',
+          key: bookId.value,
           value: JSON.stringify(list)
         }
       ]
@@ -1903,7 +2093,7 @@
       setKeyRequests: [
         {
           domain: 'highLight',
-          key: '2358',
+          key: bookId.value,
           value: JSON.stringify(list)
         }
       ]
@@ -1922,7 +2112,9 @@
     dialogToolData.notesList.findIndex((itemData) => itemData.selectText == item.selectText),
     1
   )
+  selectNode.value = item.selectNode
   selectText.value = item.selectText
+  selectPage.value = item.selectPage
   colorActive.value = item.color
   dialogToolData.chapter = item.chapter
   formData.desc = item.note
@@ -1941,7 +2133,7 @@
         setKeyRequests: [
           {
             domain: 'notes',
-            key: '2358',
+            key: bookId.value,
             value: JSON.stringify(list)
           }
         ]
@@ -1950,6 +2142,15 @@
       ElMessage({
         message: '鍒犻櫎绗旇鎴愬姛!',
         type: 'success'
+      })
+      console.log(document.querySelectorAll('.underline'))
+      let list = document.querySelectorAll('.underline')
+      list.forEach(itemNode =>{
+        console.log(itemNode.nextSibling)
+        if(itemNode.innerText == item.selectText){
+          itemNode.removeAttribute('style');
+          itemNode.nextSibling?.remove()
+        }
       })
       getNotesList()
     })
@@ -2616,7 +2817,7 @@
       width: 85px;
       background-image: linear-gradient(to bottom, #0093ff, #005dff);
       position: fixed;
-      height: 430px;
+      height: 310px;
       top: 300px;
       left: 450px;
       z-index: 99;
@@ -2637,11 +2838,46 @@
           margin-right: 5px;
         }
       }
+      .floatToolItem:hover,
+      .floatToolActive {
+        background-color: #fff;
+        color: #0093ff;
+      }
     }
 
-    .floatToolItem:hover {
-      background-color: #fff;
-      color: #0093ff;
+    .brushBox {
+      position: fixed;
+      left: 500px;
+      bottom: 20px;
+      z-index: 99;
+      border-radius: 5px;
+      background: #fff;
+      // padding: 10px;
+      overflow: hidden;
+      border: 1px solid #0093ff;
+      .toolList {
+        display: flex;
+        justify-content: center;
+        align-items: center;
+        .floatToolItem {
+          margin: 10px;
+          width: 48px;
+          border-radius: 5px;
+          text-align: center;
+          flex: 1;
+          .imgBox {
+            height: 22px;
+            width: 22px;
+            text-align: center;
+            margin: 0 auto;
+            margin-bottom: 5px;
+          }
+        }
+        .layOutTool {
+          padding-left: 15px;
+          border-left: 1px solid #e0e0e0;
+        }
+      }
     }
 
     .dialogToolBox {

--
Gitblit v1.9.1