From 7b8f96254b90c8d9cb01092e8d6ab7263972fee1 Mon Sep 17 00:00:00 2001
From: litian <2804272236@qq.com>
Date: 星期三, 15 五月 2024 17:19:24 +0800
Subject: [PATCH] hebing

---
 src/qiankunState/state.ts  |    3 
 src/child.ts               |    4 
 src/views/home.vue         |  217 +++++++++++++++++++++++++++++--------------
 src/assets/js/toolClass.ts |   33 ++++++
 4 files changed, 181 insertions(+), 76 deletions(-)

diff --git a/src/assets/js/toolClass.ts b/src/assets/js/toolClass.ts
index 7ffae70..ab8fc24 100644
--- a/src/assets/js/toolClass.ts
+++ b/src/assets/js/toolClass.ts
@@ -12,6 +12,37 @@
   return fileSizeMsg
 }
 
+export function uuid(len = 32, radix = 16) {
+  const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
+  let uuid = [],
+    i;
+  radix = radix || chars.length;
+
+  if (len) {
+    // Compact form
+    for (i = 0; i < len; i++) uuid[i] = chars[0 | (Math.random() * radix)];
+  } else {
+    // rfc4122, version 4 form
+    let r;
+
+    // rfc4122 requires these characters
+    uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
+    uuid[14] = '4';
+
+    // Fill in random data.  At i==19 set the high bits of clock sequence as
+    // per rfc4122, sec. 4.1.5
+    for (i = 0; i < 36; i++) {
+      if (!uuid[i]) {
+        r = 0 | (Math.random() * 16);
+        uuid[i] = chars[i === 19 ? (r & 0x3) | 0x8 : r];
+      }
+    }
+  }
+
+  return uuid.join('');
+}
+
 export default {
-  getFileSize
+  getFileSize,
+  uuid
 }
diff --git a/src/child.ts b/src/child.ts
index 38b4ec5..6badc7f 100644
--- a/src/child.ts
+++ b/src/child.ts
@@ -14,14 +14,14 @@
     // - 蹇呴�夛紝寰簲鐢ㄧ殑鍚嶇О锛屽井搴旂敤涔嬮棿蹇呴』纭繚鍞竴
     name: 'app-content',
     // - 蹇呴�夛紝寰簲鐢ㄧ殑鍏ュ彛
-    entry: '//182.92.203.7:3007/books/book/1/?t=14',
+    entry: '//182.92.203.7:3007/books/book/1/',
     // entry: '//192.168.3.203:8080',
     // - 蹇呴�夛紝寰簲鐢ㄧ殑瀹瑰櫒鑺傜偣鐨勯�夋嫨鍣ㄦ垨鑰� Element 瀹炰緥
     container: '#container',
     // - 蹇呴�夛紝寰簲鐢ㄧ殑婵�娲昏鍒�
     //鏀寔鐩存帴閰嶇疆瀛楃涓叉垨瀛楃涓叉暟缁勶紝濡� activeRule: '/app1' 鎴� activeRule: ['/app1', '/app2']锛屽綋閰嶇疆涓哄瓧绗︿覆鏃朵細鐩存帴璺� url 涓殑璺緞閮ㄥ垎鍋氬墠缂�鍖归厤锛屽尮閰嶆垚鍔熻〃鏄庡綋鍓嶅簲鐢ㄤ細琚縺娲汇��
     //鏀寔閰嶇疆涓�涓� active function 鍑芥暟鎴栦竴缁� active function銆傚嚱鏁颁細浼犲叆褰撳墠 location 浣滀负鍙傛暟锛屽嚱鏁拌繑鍥� true 鏃惰〃鏄庡綋鍓嶅井搴旂敤浼氳婵�娲汇�傚 location => location.pathname.startsWith('/app1')銆�
-    activeRule: '/home', //鍖归厤鎵�鏈変互/subPath寮�澶寸殑涓哄瓙搴旂敤
+    activeRule: '/home' //鍖归厤鎵�鏈変互/subPath寮�澶寸殑涓哄瓙搴旂敤
     //loader - (loading: boolean) => void - 鍙�夛紝loading 鐘舵�佸彂鐢熷彉鍖栨椂浼氳皟鐢ㄧ殑鏂规硶銆�
   }
 }
diff --git a/src/qiankunState/state.ts b/src/qiankunState/state.ts
index 0297e0d..9de3155 100644
--- a/src/qiankunState/state.ts
+++ b/src/qiankunState/state.ts
@@ -4,7 +4,8 @@
   bookId:0,
   windowSelection: null,
   showCatalogList:[],
-  gotoPage:null
+  gotoPage:null,
+  renderSign: null
 }
 
 
diff --git a/src/views/home.vue b/src/views/home.vue
index 7cf65a4..6d0bb4a 100644
--- a/src/views/home.vue
+++ b/src/views/home.vue
@@ -321,7 +321,9 @@
               <div><img :src="zoomOut" @click="changePageSize('reduce')" /></div>
             </div>
             <div class="brushImgBox">
-              <div><img :src="huabi2" class="brushImg" />鐢荤瑪</div>
+              <div @click="jumpContent('note' + index)">
+                <img :src="huabi2" class="brushImg" />鐢荤瑪
+              </div>
             </div>
           </div>
         </div>
@@ -827,6 +829,7 @@
 import useClipboard from 'vue-clipboard3'
 const { toClipboard } = useClipboard()
 const request = inject('request')
+const toolClass = inject('toolClass')
 const qiankunActions = inject('qiankunActions')
 //鑾峰彇璺敱鍣�
 let router = useRouter()
@@ -938,6 +941,7 @@
 let microApp = null // 寰簲鐢ㄥ疄渚�
 const bookName = ref('')
 const bookId = ref(1)
+const activeCatalog = ref()
 onMounted(() => {
   getCatalogueData()
   getResourceData()
@@ -959,9 +963,10 @@
   // 鍔犺浇寰簲鐢�
   microApp = loadMicroApp(microApps.book1, {
     sandbox: {
-      // strictStyleIsolation: true,
+      strictStyleIsolation: true
       // experimentalStyleIsolation: true
-    }
+    },
+    singular: true
   })
 
   window.qiankunActions.onGlobalStateChange((state, prev) => {
@@ -981,6 +986,8 @@
       getSelection(data)
     },
     catalogChange: (data) => {
+      activeCatalog.value = data.showCatalogList
+      getSignData()
       console.log(data, '绔犺妭鍒囨崲锛氱洰鍓嶆樉绀虹殑涓変釜绔犺妭')
     },
     pageChange: (data) => {
@@ -1011,10 +1018,10 @@
 watch(
   () => bookId.value,
   (val) => {
-    getNotesList() // 鑾峰彇绗旇
-    getlineHeightList() //鑾峰彇楂樹寒
-    getScribeList() //鑾峰彇鍒掔嚎
-    getScreenshotList() //鎴浘
+    // getNotesList() // 鑾峰彇绗旇
+    // getlineHeightList() //鑾峰彇楂樹寒
+    // getScribeList() //鑾峰彇鍒掔嚎
+    // getScreenshotList() //鎴浘
   }
 )
 //鑾峰彇鐩綍
@@ -1693,14 +1700,13 @@
 
 //閫変腑鏂囧瓧宸ュ叿鏍�
 const selectText = ref('') //閫変腑鏂囧瓧
-const selectNode = ref(null)
-const selectPage = ref(1)
 const showToolBox = ref(false)
 const dialogToolData = reactive({
   left: 500,
   top: 300,
+  txt: '',
+  page: '',
   chapter: '', //閫変腑鏂囧瓧鎵�鍦ㄧ珷鑺�
-  parentNode: null,
   lineHeight: [], //楂樹寒
   scribeList: [], //鍒掔嚎
   notesList: [] //绗旇
@@ -1709,11 +1715,12 @@
 ///鍐呭閫変腑
 const getSelection = (data) => {
   if (data.txt) {
-    console.log(data.node, 'data')
+    dialogToolData.txt = data.txt
+    dialogToolData.page = data.page
+    dialogToolData.chapter = data.chapterNum
+    dialogToolData.left = data.x
+    dialogToolData.top = data.y
     showToolBox.value = true
-    selectText.value = data.txt
-    selectNode.value = data.node.innerHTML
-    selectPage.value = data.page
   }
 }
 
@@ -1897,67 +1904,133 @@
 
 const clickSelect = (item) => {
   colorActive.value = item.key
-  if (toolActive.value == '楂樹寒') {
-    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',
-      data: {
-        setKeyRequests: [
-          {
-            domain: 'highLight',
-            key: bookId.value,
-            value: JSON.stringify(dialogToolData.lineHeight)
-          }
-        ]
-      }
-    }).then((res) => {
-      showToolBox.value = false
-      colorActive.value = ''
-      toolActive.value = ''
-      getlineHeightList()
-    })
-  }
-  if (toolActive.value == '鍒掔嚎') {
-    dialogToolData.scribeList.push({
-      selectNode: selectNode.value,
-      selectText: selectText.value,
-      selectPage: selectPage.value,
-      color: colorActive.value,
-      chapter: dialogToolData.chapter,
-      createDate: new Date()
-    })
-    request({
-      url: '/identity/api/ApiAppUserSetKey',
-      method: 'post',
-      data: {
-        setKeyRequests: [
-          {
-            domain: 'underline',
-            key: bookId.value,
-            value: JSON.stringify(dialogToolData.scribeList)
-          }
-        ]
-      }
-    }).then((res) => {
-      colorActive.value = ''
-      showToolBox.value = false
-      toolActive.value = ''
-      getScribeList()
-    })
-  }
+  addUserKey()
 }
 
+const addUserKey = () => {
+  let dom = ''
+  let data = null
+  switch (toolActive.value) {
+    case '楂樹寒':
+      dom = 'highLightData-' + bookId.value
+      data = dialogToolData.lineHeight[dialogToolData.chapter]
+      data.push({
+        id: toolClass.uuid(8),
+        txt: dialogToolData.txt,
+        page: dialogToolData.page,
+        type: 'Highlight',
+        color: colorActive.value
+      })
+      break
+    case '鍒掔嚎':
+      dom = 'underline-' + bookId.value
+      data = dialogToolData.scribeList[dialogToolData.chapter]
+      data.push({
+        id: toolClass.uuid(8),
+        txt: dialogToolData.txt,
+        page: dialogToolData.page,
+        type: 'Dashing',
+        color: colorActive.value
+      })
+      break
+  }
+  request({
+    url: '/identity/api/ApiAppUserSetKey',
+    method: 'post',
+    data: {
+      setKeyRequests: [
+        {
+          domain: dom,
+          key: dialogToolData.chapter,
+          value: JSON.stringify(data)
+        }
+      ]
+    }
+  }).then((res) => {
+    showToolBox.value = false
+    colorActive.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 lock = ref(false)
+
+const getSignData = () => {
+  request({
+    url: '/identity/api/ApiGetAppUserKey',
+    method: 'post',
+    data: {
+      domain: 'highLightData-' + bookId.value,
+      keys: activeCatalog.value.map((item) => item + '')
+    }
+  }).then((res) => {
+    if (res && res.length > 0) {
+      for (let i = 0; i < res.length; i++) {
+        const item = res[i]
+        const data = JSON.parse(item.value)
+        // 鍌ㄥ��
+        dialogToolData.lineHeight[item.key] = data
+        // 娓叉煋
+        for (let j = 0; j < data.length; j++) {
+          const citem = data[j]
+          if (window.qiankunState && window.qiankunState.renderSign)
+            window.qiankunState.renderSign(citem.type, citem)
+        }
+      }
+    }
+  })
+  request({
+    url: '/identity/api/ApiGetAppUserKey',
+    method: 'post',
+    data: {
+      domain: 'underline-' + bookId.value,
+      keys: activeCatalog.value.map((item) => item + '')
+    }
+  }).then((res) => {
+    if (res && res.length > 0) {
+      for (let i = 0; i < res.length; i++) {
+        const item = res[i]
+        const data = JSON.parse(item.value)
+        // 鍌ㄥ��
+        dialogToolData.scribeList[item.key] = data
+        // 娓叉煋
+        for (let j = 0; j < data.length; j++) {
+          const citem = data[j]
+          if (window.qiankunState && window.qiankunState.renderSign)
+            window.qiankunState.renderSign(citem.type, citem)
+        }
+      }
+    }
+  })
+}
+
 const addNote = () => {
   const obj = {
     desc: formData.desc

--
Gitblit v1.9.1