From 1d5d7f10cd90e7b1212a58234ef271584f0035c9 Mon Sep 17 00:00:00 2001
From: YM <479443481@qq.com>
Date: 星期三, 15 五月 2024 23:35:58 +0800
Subject: [PATCH] Merge branch 'master' of http://182.92.203.7:2001/r/TextbookReader

---
 src/views/home.vue |  249 +++++++++++++++++++++++++++++--------------------
 1 files changed, 148 insertions(+), 101 deletions(-)

diff --git a/src/views/home.vue b/src/views/home.vue
index c4febfb..6ca5fd0 100644
--- a/src/views/home.vue
+++ b/src/views/home.vue
@@ -92,9 +92,14 @@
       <div class="menuContent" v-if="menuState.open">
         <div class="searchBox">
           <div class="inputBox" v-if="activeMenu !== 2">
-            <el-input class="custom-input" placeholder="璇疯緭鍏ュ唴瀹�" v-model="searchText">
+            <el-input
+              class="custom-input"
+              placeholder="璇疯緭鍏ュ唴瀹�"
+              v-model="searchText"
+              @keyup.enter="searchBook"
+            >
               <template #prefix>
-                <el-icon @click="searchBook"><Search /></el-icon>
+                <el-icon><Search /></el-icon>
               </template>
             </el-input>
           </div>
@@ -113,13 +118,22 @@
         <!-- 鐩綍 -->
         <div class="menuList" v-if="activeMenu == 0">
           <el-tree
+            ref="catalogTree"
             style="max-width: 600px"
             default-expand-all="true"
             :data="catalogueData"
             :props="defaultProps"
             v-if="catalogueData.length > 0"
             @node-click="handleNodeClick"
-          />
+            :filter-node-method="filterNode"
+          >
+            <template #default="{ node, data }">
+              <div class="custom-tree-node">
+                <div class="catalogueLabel">{{ node.label }}</div>
+                <span class="pageNum">{{ data.page }}</span>
+              </div>
+            </template>
+          </el-tree>
           <div v-if="catalogueData.length == 0">
             <el-empty :image-size="60" description="鏆傛棤鏁版嵁" />
           </div>
@@ -144,7 +158,7 @@
             </div>
           </div>
           <div class="list-box">
-            <div v-if="scribeData.noteList.length > 0 && !scribeData.loading">
+            <div v-if="scribeData.noteList.length > 0">
               <div v-for="(item, index) in scribeData.noteList" :key="item.key" class="listItem">
                 <div class="textBox">
                   <div class="title">
@@ -153,8 +167,8 @@
                       <span>{{ item.createDate }}</span>
                     </div>
                     <div>
-                      <img :src="bianji" @click="update(item, 'note')" />
-                      <img :src="shanchu" @click="deleteBtn(item, 'note')" />
+                      <img :src="bianji" @click="update(item)" />
+                      <img :src="shanchu" @click="deleteBtn(item)" />
                     </div>
                   </div>
                   <div
@@ -179,11 +193,11 @@
                       {{ item.note }}
                     </div>
                   </div>
-                  <div class="chapter">{{ item.selectText }}</div>
+                  <div class="chapter">{{ item.txt }}</div>
                 </div>
               </div>
             </div>
-            <div v-if="scribeData.noteList.length == 0 && !scribeData.loading">
+            <div v-if="scribeData.noteList.length == 0">
               <el-empty :image-size="60" description="鏆傛棤鏁版嵁" />
             </div>
           </div>
@@ -708,7 +722,7 @@
     v-show="lineDelete.showLineDelete"
     :style="{ top: `${lineDelete.top}px`, left: `${lineDelete.left}px` }"
   >
-    <el-button @click="lineDeleteBtn">鍒犻櫎</el-button>
+    <el-button @click="delUserKey">鍒犻櫎</el-button>
   </div>
 
   <el-dialog title="璧勬簮" align-center v-model="resourVisble" width="845" class="resourDialog">
@@ -779,13 +793,15 @@
     <template #footer>
       <span class="dialog-footer">
         <el-button @click="screenshotClose">鍙� 娑�</el-button>
-        <el-button type="primary" @click="addScreenshot" :loading="screenshotLoading">纭� 瀹�</el-button>
+        <el-button type="primary" @click="addScreenshot" :loading="screenshotLoading"
+          >纭� 瀹�</el-button
+        >
       </span>
     </template>
   </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/' + dialogToolData.txt" frameborder="0"></iframe>
     </div>
   </el-dialog>
   <el-dialog title="AI鏅鸿兘闂瓟" align-center v-model="wendaVisible" width="26%" class="myDialogs">
@@ -796,7 +812,7 @@
   <el-dialog title="璇嶅吀" align-center v-model="cidianVisible" width="60%" class="myDialogs">
     <div class="wendabox">
       <!-- <iframe src="https://www.vocabulary.com/" frameborder="0"></iframe> -->
-      <dictionary :searchCon="selectText" />
+      <dictionary :searchCon="dialogToolData.txt" />
     </div>
   </el-dialog>
   <el-dialog
@@ -983,7 +999,12 @@
     windowSelection: (data) => {
       // 缁戝畾瀛愬簲鐢ㄩ�夋嫨鐩戝惉浜嬩欢
       console.log(data, '瀛愬簲鐢ㄩ�夋嫨')
-      getSelection(data)
+      if (data.txt) {
+        getSelection(data)
+      } else {
+        showToolBox.value = false
+        toolActive = ''
+      }
     },
     catalogChange: (data) => {
       activeCatalog.value = data.showCatalogList
@@ -1000,7 +1021,6 @@
       console.log(data, '椤甸潰鍒囨崲锛氱洰鍓嶆樉绀洪〉闈㈠拰瀵瑰簲鐨勭珷鑺備俊鎭�')
     }
   })
-
   // 璋冪敤瀛愬眰鏂规硶
   // if (window.qiankunState && window.qiankunState.aa) window.qiankunState.aa(1)
 })
@@ -1021,18 +1041,19 @@
     // getNotesList() // 鑾峰彇绗旇
     // getlineHeightList() //鑾峰彇楂樹寒
     // getScribeList() //鑾峰彇鍒掔嚎
-    // getScreenshotList() //鎴浘
+    getScreenshotList() //鎴浘
   }
 )
 //鑾峰彇鐩綍
 const catalogueData = ref([])
 const getCatalogueData = () => {
   axios
-    .get(ctxUrl + '/catalog.json')
+    .get(resourceUrl + '/1/information.json?t=123')
     .then(function (response) {
+      console.log(response.data)
       var json = response.data
       // 澶勭悊鑾峰彇鍒扮殑json鏁版嵁
-      catalogueData.value = json
+      catalogueData.value = json.data
     })
     .catch(function (error) {
       console.log(error)
@@ -1040,10 +1061,18 @@
 }
 const defaultProps = {
   children: 'children',
-  label: 'label'
+  label: 'label',
+  page: 'page',
 }
+const filterNode = (value, data) => {
+  if (!value) return true
+  return data.label.indexOf(value) !== -1
+}
+
 const handleNodeClick = (data) => {
-  document.getElementById(data.id).scrollIntoView()
+  console.log(data)
+  if (window.qiankunState && window.qiankunState.gotoPage)
+    window.qiankunState.gotoPage(data.chapter, data.start)
 }
 
 //鑾峰彇璧勬簮
@@ -1084,7 +1113,7 @@
 const testWord = ref('') //word閾炬帴
 const getResourceData = () => {
   axios
-    .get(ctxUrl + '/resource.json')
+    .get(resourceUrl + '/1/resource.json')
     .then(function (response) {
       var json = response.data
       // 澶勭悊鑾峰彇鍒扮殑json鏁版嵁
@@ -1188,7 +1217,7 @@
     case '0':
       break
     case '1':
-      getNotesList()
+      // getSignData()
       break
     case '2':
       break
@@ -1278,11 +1307,16 @@
   } else {
     menuState.notesColor = 'all'
   }
-  getNotesList()
+  // getNotesList()
 }
+const catalogTree = ref()
 const searchBook = async () => {
+  if (activeMenu.value == 0) {
+    if (catalogTree) catalogTree.value.filter(searchText.value)
+  }
   if (activeMenu.value == 1) {
-    getNotesList()
+    // getNotesList()
+    getSignData()
   }
   if (activeMenu.value == 2) {
     let dataList = JSON.parse(JSON.stringify(resourceDataList.value))
@@ -1591,10 +1625,7 @@
 const labelShow = (str) => {}
 
 //鏍囩
-const reMark =() => {
-
-  
-}
+const reMark = () => {}
 //鎴浘
 //鎴浘浜嬩欢
 function jitT() {
@@ -1636,16 +1667,18 @@
           }
         ]
       }
-    }).then((res) => {
-      screenshotLoading.value = false
-      getScreenshotList()
-      nameData.value = ''
-      urlData.value = ''
-      floatingToolData.activeToolData = ''
-      screenshotVisble.value = false
-    }).catch(function (error) {
-      screenshotLoading.value = false
     })
+      .then((res) => {
+        screenshotLoading.value = false
+        getScreenshotList()
+        nameData.value = ''
+        urlData.value = ''
+        floatingToolData.activeToolData = ''
+        screenshotVisble.value = false
+      })
+      .catch(function (error) {
+        screenshotLoading.value = false
+      })
   } else {
     ElMessage.error('鎴浘鍚嶇О涓嶈兘涓虹┖!')
   }
@@ -1735,7 +1768,7 @@
   { icon: fuzhi, activeIcon: fuzhi1, name: '澶嶅埗' },
   { icon: AIyuedu, activeIcon: AIyuedu1, name: 'AI闃呰' },
   { icon: cidian2, activeIcon: cidian1, name: '璇嶅吀' },
-  { icon: baidu, activeIcon: cidian1, name: '鐧剧' }
+  { icon: baidu, activeIcon: baidu, name: '鐧剧' }
   // { icon: yuyinyuedu, activeIcon: yuyinyuedu1, name: '璇煶闃呰' }
   // { icon: cidian2, activeIcon: cidian1, name: '缈昏瘧' }
 ])
@@ -1884,6 +1917,7 @@
       cidianVisible.value = true
       break
     case '鐧剧':
+      console.log('https://baike.baidu.com/item/' + dialogToolData.txt)
       baiduVisible.value = true
       break
   }
@@ -1905,6 +1939,7 @@
     case '楂樹寒':
       dom = 'highLightData-' + bookId.value
       data = dialogToolData.lineHeight[dialogToolData.chapter]
+      if (!data) data = []
       data.push({
         id: toolClass.uuid(8),
         txt: dialogToolData.txt,
@@ -1916,6 +1951,7 @@
     case '鍒掔嚎':
       dom = 'underline-' + bookId.value
       data = dialogToolData.scribeList[dialogToolData.chapter]
+      if (!data) data = []
       data.push({
         id: toolClass.uuid(8),
         txt: dialogToolData.txt,
@@ -1927,14 +1963,16 @@
     case '绗旇':
       if (!formData.desc.replace(/^\s*|\s*$/g, '')) {
         ElMessage.error('绗旇鍐呭涓嶈兘涓虹┖!')
-        return 
+        return
       }
       if (!noteColorActive.value) {
         ElMessage.error('璇烽�夋嫨绗旇棰滆壊!')
         return
       }
       dom = 'notes-' + bookId.value
-      data = dialogToolData.notesList.length != 0 ? dialogToolData.notesList[dialogToolData.chapter] : []
+      data =
+        dialogToolData.notesList.length != 0 ? dialogToolData.notesList[dialogToolData.chapter] : []
+      if (!data) data = []
       data.push({
         id: toolClass.uuid(8),
         txt: dialogToolData.txt,
@@ -1944,7 +1982,7 @@
         createDate: new Date(),
         note: formData.desc.replace(/^\s*|\s*$/g, '')
       })
-      
+
       break
   }
   request({
@@ -1961,38 +1999,12 @@
     }
   }).then((res) => {
     showToolBox.value = false
+    addNoteVisble.value = false
     colorActive.value = ''
     noteColorActive.value = ''
     toolActive.value = ''
     getSignData()
   })
-}
-
-const delUserKey = (type, ids) => {
-  switch (type) {
-    case 'Highlight':
-      dom = 'highLightData-' + bookId.value
-      data = dialogToolData.lineHeight
-      break
-    case 'Dashing':
-      dom = 'underline-' + bookId.value
-      data = dialogToolData.scribeList
-      break
-  }
-  data = data.filter((item) => ids.indexOf(item.id) == -1)
-  request({
-    url: '/identity/api/ApiAppUserSetKey',
-    method: 'post',
-    data: {
-      setKeyRequests: [
-        {
-          domain: dom,
-          key: '',
-          value: JSON.stringify(data)
-        }
-      ]
-    }
-  }).then((res) => {})
 }
 
 const getSignData = () => {
@@ -2046,7 +2058,7 @@
     url: '/identity/api/ApiGetAppUserKey',
     method: 'post',
     data: {
-      domain: 'note-' + bookId.value,
+      domain: 'notes-' + bookId.value,
       keys: activeCatalog.value.map((item) => item + '')
     }
   }).then((res) => {
@@ -2055,7 +2067,9 @@
         const item = res[i]
         const data = JSON.parse(item.value)
         // 鍌ㄥ��
+        scribeData.noteList = data
         dialogToolData.notesList[item.key] = data
+        console.log(dialogToolData.notesList, 'notesList')
         // 娓叉煋
         for (let j = 0; j < data.length; j++) {
           const citem = data[j]
@@ -2073,12 +2087,31 @@
   top: 0,
   left: 0,
   deleteType: '',
-  deleteTxt: ''
+  id: ''
 })
+
+// 鍒掔嚎銆佺瑪璁般�侀珮浜偣鍑诲洖璋�
+window.signClick = (type, id) => {
+  console.log('signClick鐐瑰嚮浜嬩欢鍥炶皟鐨勫疄渚�', type, id)
+  // if (window.qiankunState && window.qiankunState.delSign) window.qiankunState.delSign({ids:[id]})
+  if (type == 'Note') {
+    let data = dialogToolData.notesList.filter((item) => id.indexOf(item.id) == -1)
+    console.log(data)
+    formData.desc = notes.note
+    noteColorActive.value = notes.color
+    addNoteVisble.value = true
+  } else {
+    lineDelete.showLineDelete = true
+    lineDelete.deleteType = type
+    lineDelete.id = id
+    lineDelete.top = 500
+    lineDelete.left = 500
+  }
+}
 
 window.notesVisbleShow = function (txt) {
   addNoteVisble.value = true
-  let notes = dialogToolData.notesList.find((item) => item.selectText == txt)
+  let notes = dialogToolData.notesList.find((item) => item.id == id)
   formData.desc = notes.note
   colorActive.value = notes.color
   selectNode.value = notes.selectNode
@@ -2086,23 +2119,42 @@
   selectPage.value = notes.selectPage
   dialogToolData.chapter = notes.chapter
 }
-
-window.deleteScribeShow = function (txt) {
-  let lines = scribeData.scribeDataList.find((item) => item.selectText == txt)
-  lineDelete.deleteType = 'underline'
-  lineDelete.deleteTxt = txt
-  lineDelete.top = event.screenY
-  lineDelete.left = event.screenX
-  lineDelete.showLineDelete = true
-}
-
-window.deletelineHeightShow = function (txt) {
-  let lines = scribeData.lineHeightList.find((item) => item.selectText == txt)
-  lineDelete.deleteType = 'highLight'
-  lineDelete.deleteTxt = txt
-  lineDelete.top = event.screenY
-  lineDelete.left = event.screenX
-  lineDelete.showLineDelete = true
+const delUserKey = () => {
+  let type = lineDelete.deleteType
+  let ids = lineDelete.id
+  let dom = ''
+  let data = null
+  switch (type) {
+    case 'Highlight':
+      dom = 'highLightData-' + bookId.value
+      data = dialogToolData.lineHeight
+      break
+    case 'Dashing':
+      dom = 'underline-' + bookId.value
+      data = dialogToolData.scribeList
+      break
+  }
+  data = data.filter((item) => ids.indexOf(item.id) == -1)
+  console.log(data[0])
+  let list = data[0].filter((item) => item.id != ids)
+  console.log(list)
+  request({
+    url: '/identity/api/ApiAppUserSetKey',
+    method: 'post',
+    data: {
+      setKeyRequests: [
+        {
+          domain: dom,
+          key: dialogToolData.chapter,
+          value: JSON.stringify(list)
+        }
+      ]
+    }
+  }).then((res) => {
+    if (window.qiankunState && window.qiankunState.delSign)
+      window.qiankunState.delSign({ ids: [ids] })
+    getSignData()
+  })
 }
 
 const lineDeleteBtn = () => {
@@ -2183,10 +2235,10 @@
 }
 
 //鍒犻櫎
-const deleteBtn = (item, type) => {
+const deleteBtn = (item) => {
   if (type == 'note') {
     // 绉婚櫎
-    let list = scribeData.noteList.filter((itemData) => itemData.selectText !== item.selectText)
+    let list = dialogToolData.noteList.filter((itemData) => itemData.id !== item.id)
     request({
       url: '/identity/api/ApiAppUserSetKey',
       method: 'post',
@@ -2204,20 +2256,12 @@
         message: '鍒犻櫎绗旇鎴愬姛!',
         type: 'success'
       })
-      console.log(document.querySelectorAll('.notesline'))
-      let list = document.querySelectorAll('.notesline')
-      list.forEach((itemNode) => {
-        if (itemNode.innerText == item.selectText) {
-          console.log(itemNode.nextSibling)
-          itemNode.removeAttribute('style')
-          itemNode.nextSibling?.remove()
-        }
-      })
+      if (window.qiankunState && window.qiankunState.delSign)
+        window.qiankunState.delSign({ ids: [id] })
       getNotesList()
     })
   }
 }
-
 
 //鍐呭鍖哄煙椤堕儴鏄剧ず
 
@@ -2377,7 +2421,7 @@
         align-items: center;
       }
       .resourceBox {
-        padding: 15px 0;
+        padding: 10px 0;
         margin: 0 20px;
         border-bottom: 1px solid rgba(204, 204, 204, 0.32);
         .classification {
@@ -2394,7 +2438,8 @@
           }
           .count {
             width: 35px;
-            margin: 5px auto;
+            margin: 0 auto;
+            margin-top:5px;
             border-radius: 10px;
             background: #fff;
             color: #c8c8c8;
@@ -2424,6 +2469,7 @@
         }
         .inputBox {
           margin-top: 10px;
+          width:100% !important;
         }
       }
       .resourceTab {
@@ -2457,6 +2503,7 @@
         }
       }
       .inputBox {
+        width:85%;
         .custom-input {
           border: 1px solid #0093ff !important;
           border-radius: 50px;

--
Gitblit v1.9.1