From 576fbe7418510c9f442fe93100db93445fcf3964 Mon Sep 17 00:00:00 2001
From: litian <2804272236@qq.com>
Date: 星期六, 11 五月 2024 15:04:01 +0800
Subject: [PATCH] 修改

---
 /dev/null                                  |   15 -
 vite.config.ts                             |    9 
 src/assets/main.css                        |   42 ++
 src/assets/images/operation/xuanzhong1.png |    0 
 src/views/components/dictionary.vue        |   94 +++++++
 electron/config.ts                         |    3 
 src/assets/images/operation/baidu.png      |    0 
 src/assets/js/config.ts                    |    6 
 src/router/index.ts                        |    9 
 src/views/home.vue                         |  377 +++++++++++++++++++++-------
 src/App.vue                                |  175 ++++++------
 src/assets/images/operation/baidu-b.png    |    0 
 12 files changed, 516 insertions(+), 214 deletions(-)

diff --git a/electron/config.ts b/electron/config.ts
index 98572d0..67f84ca 100644
--- a/electron/config.ts
+++ b/electron/config.ts
@@ -1,4 +1,5 @@
 // 娴嬭瘯
-export const ctx = "http://182.92.203.7:3001";
+// export const ctx = "http://182.92.203.7:3001";
+export const ctx = "https://jsek.bnuic.com";
 export const downloaderFileCtx = "http://182.92.203.7:3007/DigitalTextbookReader";
 
diff --git a/src/App.vue b/src/App.vue
index f50ca31..f5bfb0e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -23,94 +23,99 @@
 const downloadTask = useDownloadTask()
 const ExportTask = useExportTask()
 
-window.electronAPI.onLogout((data) => {
-  localStorage.clear()
+if (window.electronAPI) {
+  window.electronAPI.onLogout((data) => {
+    localStorage.clear()
+    router.replace({
+      path: '/login'
+    })
+  })
+
+  window.electronAPI.onOpenUrl((data) => {
+    let taskInfo = null
+    let downloadInfo = decodeURI(data)
+    console.log(downloadInfo, '鎺ュ彈鍒扮殑taskInfo')
+    try {
+      taskInfo = JSON.parse(downloadInfo)
+    } catch (error) {
+      taskInfo = null
+    }
+    if (taskInfo) {
+      router.replace({
+        path: '/transmission'
+      })
+      window.electronAPI.newDownloadTask(taskInfo)
+    }
+  })
+
+  // 缁戝畾娑堟伅鎻愰啋
+  window.electronAPI.onShowMessage((data) => {
+    // 鑾峰彇鍒版秷鎭悗淇敼鍏ㄥ眬鏁版嵁锛岄〉闈㈢洃鍚叏灞�鏁版嵁杩涜鍙樺寲
+    if (data.showType) {
+      switch (data.showType) {
+        case 'DownloadTask':
+          downloadTask.setMsgData(data)
+          break
+        case 'ExportTask':
+          ExportTask.setMsgData(data)
+          break
+      }
+    } else {
+      downloadTask.setMsgData(data)
+    }
+  })
+
+  // 缁戝畾涓嬭浇浠诲姟鍙樺寲鏇存柊
+  window.electronAPI.onDownloadTaskChange((task) => {
+    downloadTask.setUpdateList()
+  })
+
+  // 缁戝畾瀵煎嚭浠诲姟鍙樺寲鏇存柊
+  window.electronAPI.onExportTaskChange((task) => {
+    ExportTask.setUpdateList()
+  })
+
+  const showUpdateInfo = ref(false)
+  const updateDownloadInfo = ref()
+
+  // 鐩戝惉绋嬪簭鏇存柊涓嬭浇
+  window.electronAPI.onUpdateDownloadProgress((data) => {
+    showUpdateInfo.value = true
+    console.log(data, 'updateDownloadInfo')
+    updateDownloadInfo.value = data
+  })
+
+  // 鐩戝惉绋嬪簭鏇存柊涓嬭浇瀹屾垚
+  window.electronAPI.onUpdateDownloadSuccess((data) => {
+    showUpdateInfo.value = false
+    ElMessageBox.confirm('妫�娴嬪埌鏂扮増鏈紝瀹夎鍖呭凡涓嬭浇瀹屾垚锛屾槸鍚︾珛鍗虫洿鏂帮紵', '妫�鏌ユ洿鏂�', {
+      confirmButtonText: '鏇存柊',
+      cancelButtonText: '鍙栨秷',
+      type: 'warning'
+    })
+      .then(() => {
+        window.electronAPI.updateApp()
+      })
+      .catch(() => {})
+  })
+}
+
+const token = localStorage.getItem('token')
+if (token) {
+  router.replace({
+    path: '/home'
+  })
+  // request({
+  //   url: '/identity/User/GetCurrentUser',
+  //   method: 'post'
+  // }).then((res) => {
+  //   // console.log(res)
+  // })
+} else {
   router.replace({
     path: '/login'
   })
-})
-
-window.electronAPI.onOpenUrl((data) => {
-  let taskInfo = null
-  let downloadInfo = decodeURI(data)
-  console.log(downloadInfo, '鎺ュ彈鍒扮殑taskInfo')
-  try {
-    taskInfo = JSON.parse(downloadInfo)
-  } catch (error) {
-    taskInfo = null
-  }
-  if (taskInfo) {
-    router.replace({
-      path: '/transmission'
-    })
-    window.electronAPI.newDownloadTask(taskInfo)
-  }
-})
-
-// 缁戝畾娑堟伅鎻愰啋
-window.electronAPI.onShowMessage((data) => {
-  // 鑾峰彇鍒版秷鎭悗淇敼鍏ㄥ眬鏁版嵁锛岄〉闈㈢洃鍚叏灞�鏁版嵁杩涜鍙樺寲
-  if (data.showType) {
-    switch (data.showType) {
-      case 'DownloadTask':
-        downloadTask.setMsgData(data)
-        break
-      case 'ExportTask':
-        ExportTask.setMsgData(data)
-        break
-    }
-  } else {
-    downloadTask.setMsgData(data)
-  }
-})
-
-// 缁戝畾涓嬭浇浠诲姟鍙樺寲鏇存柊
-window.electronAPI.onDownloadTaskChange((task) => {
-  downloadTask.setUpdateList()
-})
-
-// 缁戝畾瀵煎嚭浠诲姟鍙樺寲鏇存柊
-window.electronAPI.onExportTaskChange((task) => {
-  ExportTask.setUpdateList()
-})
-
-const showUpdateInfo = ref(false)
-const updateDownloadInfo = ref()
-
-// 鐩戝惉绋嬪簭鏇存柊涓嬭浇
-window.electronAPI.onUpdateDownloadProgress((data) => {
-  showUpdateInfo.value = true
-  console.log(data, 'updateDownloadInfo')
-  updateDownloadInfo.value = data
-})
-
-// 鐩戝惉绋嬪簭鏇存柊涓嬭浇瀹屾垚
-window.electronAPI.onUpdateDownloadSuccess((data) => {
-  showUpdateInfo.value = false
-  ElMessageBox.confirm('妫�娴嬪埌鏂扮増鏈紝瀹夎鍖呭凡涓嬭浇瀹屾垚锛屾槸鍚︾珛鍗虫洿鏂帮紵', '妫�鏌ユ洿鏂�', {
-    confirmButtonText: '鏇存柊',
-    cancelButtonText: '鍙栨秷',
-    type: 'warning'
-  })
-    .then(() => {
-      window.electronAPI.updateApp()
-    })
-    .catch(() => {})
-})
-
-const token = localStorage.getItem('token')
-// if (token) {
-//   request({
-//     url: '/identity/User/GetCurrentUser',
-//     method: 'post'
-//   }).then((res) => {
-//     // console.log(res)
-//   })
-// } else {
-//   router.replace({
-//     path: '/login'
-//   })
-// }
+}
 </script>
 
 <style>
diff --git a/src/assets/images/operation/baidu-b.png b/src/assets/images/operation/baidu-b.png
new file mode 100644
index 0000000..048040d
--- /dev/null
+++ b/src/assets/images/operation/baidu-b.png
Binary files differ
diff --git a/src/assets/images/operation/baidu.png b/src/assets/images/operation/baidu.png
new file mode 100644
index 0000000..6f1b406
--- /dev/null
+++ b/src/assets/images/operation/baidu.png
Binary files differ
diff --git a/src/assets/images/operation/xuanzhong1.png b/src/assets/images/operation/xuanzhong1.png
new file mode 100644
index 0000000..d2e9c3d
--- /dev/null
+++ b/src/assets/images/operation/xuanzhong1.png
Binary files differ
diff --git a/src/assets/js/config.ts b/src/assets/js/config.ts
new file mode 100644
index 0000000..3373752
--- /dev/null
+++ b/src/assets/js/config.ts
@@ -0,0 +1,6 @@
+// 娴嬭瘯
+export const ctx = "http://182.92.203.7:3001";
+export const downloaderFileCtx = "http://182.92.203.7:3007/DigitalTextbookReader";
+export const ctxUrl = "http://182.92.203.7:3007"; //鏈嶅姟鍣ㄥ湴鍧�
+export const requestCtx = "https://jsek.bnuic.com"; //jsek
+
diff --git a/src/assets/main.css b/src/assets/main.css
index bd81458..8f4b952 100644
--- a/src/assets/main.css
+++ b/src/assets/main.css
@@ -37,6 +37,36 @@
   cursor: pointer;
 }
 
+/* 璁剧疆 */
+.settingBox{
+  .inline{
+    display: flex;
+    justify-content: space-between;
+  }
+  .lineTypeBox{
+    width:190px;
+    padding:0 !important;
+    .typeItem{
+      line-height:16px;
+    }
+  }
+  .bgColor{
+    display: flex;
+    width: 190px;
+    .flex1 {
+      flex: 1;
+      .scribeItem {
+        width: 30px;
+        height: 30px;
+        border-radius: 5px;
+        border: 1px solid;
+        display: flex;
+        justify-content: center;
+        align-items: center;
+      }
+    }
+  }
+}
 /* 鐢荤瑪宸ュ叿 */
 .popinnerBox .brush {
   display: flex;
@@ -92,12 +122,12 @@
   text-align: center;
   flex: 1;
 }
-.popinnerBox .lineStyle .lineTypeBox {
+.lineStyle .lineTypeBox {
   display: flex;
   justify-content: space-between;
   padding: 0 10px;
 }
-.popinnerBox .lineStyle .lineTypeBox .typeItem {
+.lineStyle .lineTypeBox .typeItem {
   flex: 1;
   padding: 5px 20px;
   border-radius: 5px;
@@ -105,18 +135,18 @@
   margin: 0 5px;
   position: relative;
 }
-.popinnerBox .lineStyle .lineTypeBox .typeItem .solid {
+.lineStyle .lineTypeBox .typeItem .solid {
   border: 1px solid #707070;
   margin: 7px auto;
 }
-.popinnerBox .lineStyle .lineTypeBox .typeItem .dashed {
+.lineStyle .lineTypeBox .typeItem .dashed {
   border: 1px dashed #707070;
   margin: 7px auto;
 }
-.popinnerBox .lineStyle .lineTypeBox .lineTypeActive {
+.lineStyle .lineTypeBox .lineTypeActive {
   border: 1px solid #0093ff;
 }
-.popinnerBox .lineStyle .lineTypeBox .lineTypeActive .activeIcon {
+.lineStyle .lineTypeBox .lineTypeActive .activeIcon {
   width: 12px;
   height: 11px;
   background: #0093ff;
diff --git a/src/router/index.ts b/src/router/index.ts
index 7088b74..9664723 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -23,11 +23,16 @@
           path: '/home',
           name: 'home',
           meta: { auth: true },
-          component: Home,
+          component: Home
+        },
+        {
+          path: '/dictionary',
+          name: 'dictionary',
+          meta: { auth: true },
+          component: () =>import('@/views/components/dictionary.vue')
         }
       ]
     }
-  
   ]
 })
 
diff --git a/src/views/child.vue b/src/views/child.vue
deleted file mode 100644
index b71c4fb..0000000
--- a/src/views/child.vue
+++ /dev/null
@@ -1,15 +0,0 @@
-
-<template>
-    <div>
-        <div id="child1" class="child1"></div>
-    </div>
-</template>
-<script>
-
-</script>  
-
-<style lang="less" setup lang="ts">
-.child1{
-  width: 100%;
-  height: 500px;
-}
diff --git a/src/views/components/dictionary.vue b/src/views/components/dictionary.vue
new file mode 100644
index 0000000..7531fff
--- /dev/null
+++ b/src/views/components/dictionary.vue
@@ -0,0 +1,94 @@
+<template>
+  <div>
+    <div class="searchBox">
+      <el-input class="custom-input" placeholder="璇疯緭鍏ュ唴瀹�" v-model="searchContent">
+        <template #suffix>
+          <el-icon @click="getSearchResult" class="hover"><Search /></el-icon>
+        </template>
+      </el-input>
+    </div>
+    <div class="resultBox">
+      <div v-for="result in searchResult" :key="result.id">
+        <div class="phone_con">
+        <div class="per-phone">鑻�/<span>{{result.ukPhone}}</span>/</div>
+        <div class="per-phone">缇�/<span>{{result.usPhone}}</span>/</div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+<script setup lang="ts">
+import { ref, reactive, watch, onMounted, inject } from 'vue'
+const request = inject('request')
+const props = defineProps({
+  searchCon: Boolean
+})
+const searchContent = ref('')
+const isFull = ref(false)
+watch(props, (newValue) => {
+  // 缁熺洃鍚琾rops鐨勫�煎彉鍖栵紝鍔ㄦ�佷慨鏀筰sShow鐨勫��
+  searchContent.value = newValue.searchCon
+})
+
+const searchResult = ref([])
+
+const getSearchResult = () => {
+  if (searchContent.value) {
+    request({
+      url: '/edu/api/FindWords',
+      method: 'post',
+      data: {
+        word: searchContent.value,
+        isFull: isFull.value
+      }
+    }).then((res) => {
+      console.log(JSON.parse(res[0].sentence)[0].sCn)
+      // encodeURIComponent(res[0].syno[0].tran)
+      if (res.length > 0) {
+        searchResult.value = res
+      }
+    })
+  }
+}
+</script>
+
+<style lang="less">
+.searchBox {
+  width: 400px;
+  margin: 0 auto;
+  .custom-input {
+    height: 40px;
+
+    .el-input__wrapper {
+      border-radius: 10px;
+      width: 100%;
+    }
+    .multiselect__single {
+      background: none;
+      color: #2a2b2e;
+      font-size: 0.15rem;
+      font-weight: 500;
+      margin-bottom: 8px;
+      padding-left: 5px;
+    }
+  }
+}
+.resultBox{
+  .phone_con{
+    .per-phone{
+      width:150px;
+      align-items: center;
+      background: #f4f5f7;
+      border-radius: 15px;
+      box-sizing: border-box;
+      color: #666;
+      display: flex;
+      font-weight: 500;
+      margin-right: 10px;
+      margin-top: 10px;
+      // max-width: 100%;
+      padding: 8px 10px;
+    }
+  }
+}
+</style>
diff --git a/src/views/home.vue b/src/views/home.vue
index 3a8c0ca..61293b0 100644
--- a/src/views/home.vue
+++ b/src/views/home.vue
@@ -1,6 +1,7 @@
 <template>
   <div class="homeBox">
     <div class="headerBox">
+      <!-- <span class="logoTxt">鍖椾含甯堣寖澶у鍑虹増闆嗗洟</span> -->
       <img :src="logo" />
       <div class="userInfoBox">
         <div></div>
@@ -24,14 +25,58 @@
         </div>
         <div class="reload hover" @click="reload()">鍒锋柊</div>
         <!-- 璁剧疆 -->
-        <el-popover placement="right" :width="200" trigger="click">
+        <el-popover placement="right" :width="300" trigger="click">
           <div class="settingBox">
             <el-form :model="settingForm" label-width="auto" style="max-width: 400px">
-              <el-form-item label="绛旈闊虫晥">
-                <el-switch v-model="settingForm.acoustics" />
+              <el-form-item label="瀛椾綋澶у皬">
+                <div class="lineStyle">
+                  <div class="lineTypeBox">
+                    <div
+                      v-for="item in settingForm.fontSizeList"
+                      :key="item.key"
+                      :class="
+                        settingForm.fontSizeActive == item.key
+                          ? 'typeItem lineTypeActive'
+                          : 'typeItem'
+                      "
+                      @click="fontSizeSelect(item)"
+                    >
+                      {{ item.lable }}
+                      <div class="activeIcon" v-if="settingForm.fontSizeActive == item.key">
+                        <img :src="xuanzhong" />
+                      </div>
+                    </div>
+                  </div>
+                </div>
               </el-form-item>
-              <el-form-item label="绛旈鍔ㄧ敾">
-                <el-switch v-model="settingForm.animation" />
+              <div class="inline">
+                <el-form-item label="绛旈闊虫晥">
+                  <el-switch v-model="settingForm.acoustics" />
+                </el-form-item>
+                <el-form-item label="绛旈鍔ㄧ敾">
+                  <el-switch v-model="settingForm.animation" />
+                </el-form-item>
+              </div>
+              <el-form-item label="搴曡壊">
+                <div class="bgColor">
+                  <div
+                    v-for="item in settingForm.bgColorList"
+                    :key="item.key"
+                    class="flex1 hover"
+                    @click="bgColorSelect(item)"
+                  >
+                    <div
+                      :style="{
+                        background: item.key,
+                        'border-color':
+                          item.key == settingForm.bgColorActive ? '#0093FF' : '#EBEBEB'
+                      }"
+                      class="scribeItem"
+                    >
+                      <img :src="xuanzhong1" v-if="item.key == settingForm.bgColorActive" />
+                    </div>
+                  </div>
+                </div>
               </el-form-item>
             </el-form>
           </div>
@@ -101,7 +146,7 @@
                   <div class="title">
                     <div class="title-con">
                       <div class="border-left" :style="{ 'border-right-color': item.color }"></div>
-                      <span>{{ item.createDate }}{{item.color}}</span>
+                      <span>{{ item.createDate }}</span>
                     </div>
                     <div>
                       <img :src="bianji" @click="update(item, 'note')" />
@@ -112,7 +157,7 @@
                     class="noteText hover"
                     @click="jumpContent('note' + index)"
                     :style="{
-                      'background':
+                      background:
                         item.color == '#F5E12A'
                           ? 'rgba(255,234,41,0.1)'
                           : item.color == '#76F0AE'
@@ -165,7 +210,7 @@
             <div class="inputBox" v-if="!searchShow">
               <el-input class="custom-input" placeholder="璇疯緭鍏ュ唴瀹�" v-model="searchText">
                 <template #prefix>
-                  <el-icon @click="searchBook"><Search /></el-icon>
+                  <el-icon @click="searchBook" class="hover"><Search /></el-icon>
                 </template>
               </el-input>
             </div>
@@ -174,11 +219,12 @@
             <div v-if="resourceDataList.length > 0" class="resourceList">
               <el-row :gutter="20">
                 <el-col :span="12" v-for="(item, index) in resourceDataList" :key="item">
-                  <div class="resourceItem hover">
+                  <div class="resourceItem hover" @click="goResourceDetail(item)">
                     <div class="resourceImg">
                       <img :src="video" mode="" />
                     </div>
-                    <div class="rName" @click="goResourceDetail(item)">{{ 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>
               </el-row>
@@ -206,7 +252,10 @@
                 class="captureItem"
                 @click="getCapture(item)"
               >
-                <img :src="item.imgUrl" class="capture" mode="aspectFill" />
+                <div class="imgBox">
+                  <img :src="item.imgUrl" class="capture" mode="aspectFill" />
+                </div>
+                <div class="captureName">{{ item.name }}</div>
               </div>
             </div>
             <div v-else>
@@ -269,7 +318,7 @@
       <!-- 鏁欏缁勪欢 -->
       <div class="toolBox">
         <div class="toolTitle">
-          鏁欏缁勪欢
+          <span>{{ toolState.open ? '鏁欏缁勪欢' : '缁勪欢' }}</span>
           <div class="text"></div>
         </div>
         <div class="menuList">
@@ -348,7 +397,7 @@
                   ? 200
                   : 250
             "
-            trigger="hover"
+            trigger="click"
             v-if="
               floatingToolData.activeToolData == '鐢荤瑪' ||
               floatingToolData.activeToolData == '娓呴櫎' ||
@@ -500,7 +549,7 @@
             @click="clickSelect(item)"
           >
             <div :style="{ background: item.key }" class="scribeItem">
-              <img :src="xuanzhong" v-if="item.key == colorActive" />
+              <img :src="xuanzhong1" v-if="item.key == colorActive" />
             </div>
           </div>
         </div>
@@ -520,7 +569,7 @@
       </div>
     </div>
   </div>
-  <el-dialog title="璧勬簮" align-center v-model="resourVisble" width="840">
+  <el-dialog title="璧勬簮" align-center v-model="resourVisble" width="845" class="resourDialog">
     <div class="videoBox" v-if="resourType == 'video'">
       <video controls object-fit="fill" :src="testVideo"></video>
     </div>
@@ -568,9 +617,33 @@
     width="60%"
     :closeOnClickModal="false"
     title="鍥剧墖"
+    class="resourDialog"
   >
     <div class="imgUrlBox">
       <img :src="imgUrl" mode="aspectFill" />
+    </div>
+  </el-dialog>
+  <el-dialog
+    title="淇濆瓨鎴浘"
+    align-center
+    v-model="screenshotVisble"
+    :before-close="screenshotClose"
+    width="400"
+    class="resourDialog"
+  >
+    <div class="formBox">
+      <el-input v-model="nameData" placeholder="璇疯緭鍏ユ埅鍥惧悕绉�"></el-input>
+    </div>
+    <template #footer>
+      <span class="dialog-footer">
+        <el-button @click="screenshotClose">鍙� 娑�</el-button>
+        <el-button type="primary" @click="addScreenshot">纭� 瀹�</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>
     </div>
   </el-dialog>
   <el-dialog title="AI鏅鸿兘闂瓟" align-center v-model="wendaVisible" width="26%" class="myDialogs">
@@ -580,7 +653,8 @@
   </el-dialog>
   <el-dialog title="璇嶅吀" align-center v-model="cidianVisible" width="60%" class="myDialogs">
     <div class="wendabox">
-      <iframe src="https://www.vocabulary.com/" frameborder="0"></iframe>
+      <!-- <iframe src="https://www.vocabulary.com/" frameborder="0"></iframe> -->
+      <dictionary :searchCon="selectText" />
     </div>
   </el-dialog>
   <el-dialog
@@ -608,6 +682,7 @@
 
 <script setup lang="ts">
 import { ref, reactive, watch, onMounted, inject } from 'vue'
+import { ctxUrl } from '@/assets/js/config'
 import { useRouter, useRoute } from 'vue-router'
 import useClipboard from 'vue-clipboard3'
 const { toClipboard } = useClipboard()
@@ -617,6 +692,7 @@
 //鑾峰彇褰撳墠璺敱鐨勪俊鎭�
 let route = useRoute()
 import moment from 'moment'
+import dictionary from '@/views/components/dictionary.vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import logo from '@/assets/images/header/logo.png'
 import mulu from '@/assets/images/menu/mulu.png'
@@ -683,9 +759,12 @@
 import AIyuedu1 from '../assets/images/operation/AIyuedu-b.png'
 import cidian2 from '../assets/images/operation/cidian.png'
 import cidian1 from '../assets/images/operation/cidian-b.png'
+import baidu from '../assets/images/operation/baidu.png'
+import baidu1 from '../assets/images/operation/baidu-b.png'
 import yuyinyuedu from '../assets/images/operation/yuyinyuedu.png'
 import yuyinyuedu1 from '../assets/images/operation/yuyinyuedu-b.png'
 import xuanzhong from '../assets/images/operation/xuanzhong.png'
+import xuanzhong1 from '../assets/images/operation/xuanzhong1.png'
 
 import zoomIn from '../assets/images/operation/zoomIn.png'
 import zoomOut from '../assets/images/operation/zoomOut.png'
@@ -705,7 +784,9 @@
 import { fabric } from 'fabric'
 const canvasWith = ref(1000)
 const canvasheight = ref(3000)
-
+const screenWidth = ref(
+  window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth
+)
 onMounted(() => {
   // canvasWith.value = window.innerWidth - 540
   // canvasheight.value = window.innerHeight - 110
@@ -719,12 +800,33 @@
   //   canvasWith.value = document.getElementById('container').offsetWidth
   //   canvasheight.value = document.getElementById('container').offsetHeight
   // }, 5000)
+  if (screenWidth.value < 1180) {
+    menuState.open = false
+    toolState.open = false
+  }
+  window.onresize = () => {
+    return (() => {
+      screenWidth.value =
+        window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth
+    })()
+  }
 })
+
+watch(
+  () => screenWidth.value,
+  (val) => {
+    screenWidth.value = val
+    if (screenWidth.value < 1180) {
+      menuState.open = false
+      toolState.open = false
+    }
+  }
+)
 //鑾峰彇鐩綍
 const catalogueData = ref([])
 const getCatalogueData = () => {
   axios
-    .get('http://182.92.203.7:3007/books/test/information.json')
+    .get(ctxUrl + '/books/test/information.json')
     .then(function (response) {
       var json = response.data
       // 澶勭悊鑾峰彇鍒扮殑json鏁版嵁
@@ -777,7 +879,7 @@
 const testWord = ref('') //word閾炬帴
 const getResourceData = () => {
   axios
-    .get('http://182.92.203.7:3007/books/test/resource.json')
+    .get(ctxUrl + '/books/test/resource.json')
     .then(function (response) {
       var json = response.data
       // 澶勭悊鑾峰彇鍒扮殑json鏁版嵁
@@ -795,20 +897,19 @@
 }
 
 const goResourceDetail = (data) => {
-  console.log(data, 23)
   resourVisble.value = true
   resourType.value = data.type
   if (data.type == 'video') {
-    testVideo.value = 'http://182.92.203.7:3007/books/test/resourceData/' + data.name
+    testVideo.value = ctxUrl + '/books/test/resourceData/' + data.name
   } else if (data.type == 'word') {
-    testWord.value = 'http://182.92.203.7:3007/books/test/resourceData/' + data.name
+    testWord.value = ctxUrl + '/books/test/resourceData/' + data.name
   }
 }
 
 const classifyClick = (item) => {
   activeClassify.value = item.key
   resourceDataList.value = []
-
+  searchText.value = ''
   switch (item.key) {
     case 'image':
       resourceDataList.value = resourceData.value.imgList
@@ -899,9 +1000,50 @@
 })
 
 const settingForm = reactive({
+  fontSizeList: [
+    {
+      lable: '灏�',
+      key: '14'
+    },
+    {
+      lable: '涓�',
+      key: '16'
+    },
+
+    {
+      lable: '澶�',
+      key: '20'
+    }
+  ],
+  fontSizeActive: '16',
   acoustics: false,
-  animation: false
+  animation: false,
+  bgColorList: [
+    {
+      lable: '榛�',
+      key: '#FBF9F4'
+    },
+    {
+      lable: '缁�',
+      key: '#F2FFF7'
+    },
+    {
+      lable: '绱�',
+      key: '#F6F4FC'
+    },
+    {
+      lable: '绮�',
+      key: '#FFFAF9'
+    }
+  ],
+  bgColorActive: '#FBF9F4'
 })
+const fontSizeSelect = (item) => {
+  settingForm.fontSizeActive = item.key
+}
+const bgColorSelect = (item) => {
+  settingForm.bgColorActive = item.key
+}
 //绗旇棰滆壊绛涢��
 const searchClick = (item) => {
   if (item != 'all') {
@@ -914,6 +1056,22 @@
 const searchBook = async () => {
   if (activeMenu.value == 1) {
     getNotesList()
+  }
+  if (activeMenu.value == 2) {
+    let dataList = JSON.parse(JSON.stringify(resourceDataList.value))
+    if (searchText.value) {
+      resourceDataList.value = []
+      searchText.value = searchText.value.replace(/^\s*|\s*$/g, '')
+      let text = searchText.value.replace(/^\s*|\s*$/g, '')
+      dataList.forEach((item) => {
+        if (item.name.indexOf(text) > -1) {
+          let replaceStr = "<span style='background:#F5E12A'>" + text + '</span>'
+          let htmlStr = item.name.split(text).join(replaceStr)
+          item.name = '<p>' + htmlStr + '</p>'
+          resourceDataList.value.push(item)
+        }
+      })
+    }
   }
 }
 
@@ -964,6 +1122,7 @@
     icon: moxinggongju
   }
 ])
+const baiduVisible = ref(false)
 const wendaVisible = ref(false)
 const cidianVisible = ref(false)
 const functionVisible = ref(false)
@@ -1123,7 +1282,9 @@
 const nameRef = ref()
 const imgUrl = ref()
 const confirmDialog = ref<Boolean>(false)
-const nameData = ref({ name: '' })
+const screenshotVisble = ref<Boolean>(false)
+const nameData = ref('') //鎴浘鍚嶇О
+const urlData = ref('') //鎴浘base64
 const screenshotList = ref([])
 
 //娴獥宸ュ叿鏍忕偣鍑讳簨浠�
@@ -1205,36 +1366,42 @@
 }
 //纭鍥炶皟
 const callback = (val: any) => {
-  ElMessageBox.confirm('纭瑕佷繚瀛樻埅鍥�?', '鎻愮ず', {
-    confirmButtonText: '纭',
-    cancelButtonText: '鍙栨秷'
-  })
-    .then(() => {
-      screenshotList.value.push({
-        createDate: new Date(),
-        imgUrl: val.base64
-      })
-      request({
-        url: '/identity/api/ApiAppUserSetKey',
-        method: 'post',
-        data: {
-          setKeyRequests: [
-            {
-              domain: 'screenshot',
-              key: '2358',
-              value: JSON.stringify(screenshotList.value)
-            }
-          ]
-        }
-      }).then((res) => {
-        getScreenshotList()
-      })
-    })
-    .catch(() => {})
+  screenshotVisble.value = true
+  urlData.value = val.base64
 }
 //鍙栨秷鍥炶皟
 const closeFn = (base64: any) => {
   console.log(base64)
+}
+const addScreenshot = () => {
+  if (nameData.value) {
+    screenshotList.value.push({
+      createDate: new Date(),
+      imgUrl: urlData.value,
+      name: nameData.value
+    })
+    request({
+      url: '/identity/api/ApiAppUserSetKey',
+      method: 'post',
+      data: {
+        setKeyRequests: [
+          {
+            domain: 'screenshot',
+            key: '2358',
+            value: JSON.stringify(screenshotList.value)
+          }
+        ]
+      }
+    }).then((res) => {
+      getScreenshotList()
+      screenshotVisble.value = false
+    })
+  } else {
+    ElMessage.error('鎴浘鍚嶇О涓嶈兘涓虹┖!')
+  }
+}
+const screenshotClose = () => {
+  screenshotVisble.value = false
 }
 
 const getScreenshotList = () => {
@@ -1292,7 +1459,6 @@
     const node = window.getSelection()
     let html = node.anchorNode.parentNode.parentNode
     dialogToolData.chapter = html.firstChild.innerHTML
-    console.log(dialogToolData.chapter)
     if (txt) {
       showToolBox.value = true
       dialogToolData.top = e.y
@@ -1318,8 +1484,9 @@
   { icon: biji2, activeIcon: biji1, name: '绗旇' },
   { icon: biaozhu2, activeIcon: biaozhu3, name: '鏍囨敞' },
   { icon: fuzhi, activeIcon: fuzhi1, name: '澶嶅埗' },
-  { icon: AIyuedu, activeIcon: AIyuedu1, name: 'AI闃呰' }
-  // { icon: cidian2, activeIcon: cidian1, name: '璇嶅吀' },
+  { icon: AIyuedu, activeIcon: AIyuedu1, name: 'AI闃呰' },
+  { icon: cidian2, activeIcon: cidian1, name: '璇嶅吀' },
+  { icon: baidu, activeIcon: cidian1, name: '鐧剧' }
   // { icon: yuyinyuedu, activeIcon: yuyinyuedu1, name: '璇煶闃呰' }
   // { icon: cidian2, activeIcon: cidian1, name: '缈昏瘧' }
 ])
@@ -1395,7 +1562,7 @@
       dialogToolList[6].icon = cidian1
       break
     case 7:
-      dialogToolList[7].icon = yuyinyuedu1
+      dialogToolList[7].icon = baidu1
       break
   }
 }
@@ -1425,7 +1592,7 @@
       dialogToolList[6].icon = cidian2
       break
     case 7:
-      dialogToolList[7].icon = yuyinyuedu
+      dialogToolList[7].icon = baidu
       break
   }
 }
@@ -1467,6 +1634,9 @@
     case '璇嶅吀':
       cidianVisible.value = true
       break
+    case '鐧剧':
+      baiduVisible.value = true
+      break
   }
 }
 
@@ -1478,7 +1648,6 @@
       selectText: selectText.value,
       color: colorActive.value,
       chapter: dialogToolData.chapter,
-      color: item.key,
       createDate: new Date()
     })
     request({
@@ -1506,7 +1675,6 @@
       selectText: selectText.value,
       color: colorActive.value,
       chapter: dialogToolData.chapter,
-      color: item.key,
       createDate: new Date()
     })
     request({
@@ -1586,6 +1754,7 @@
     }
   }).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')
@@ -1623,8 +1792,8 @@
           textDom1.innerHTML = rHtml1
         })
       }
-      scribeData.loading = false
     }
+    
   })
 }
 //鍒掔嚎
@@ -1833,9 +2002,10 @@
   }
 }
 
-const layoutBtn =() =>{
+const layoutBtn = () => {
   localStorage.clear()
-  router.push('/')
+  console.log(888)
+  router.push('/login')
 }
 </script>
 
@@ -1843,7 +2013,7 @@
 .homeBox {
   width: 100%;
   height: 100%;
-  background: #8cabeb;
+  background: #87ccff;
   border-radius: 10px;
   display: flex;
   flex-direction: column;
@@ -1857,9 +2027,9 @@
     display: flex;
     justify-content: space-between;
     align-items: center;
-    p {
+    .logoTxt {
       font-size: 24px;
-      color: #ffffff;
+      color: #333;
       letter-spacing: 2px;
       font-weight: bold;
     }
@@ -2135,12 +2305,26 @@
           flex-wrap: wrap;
           justify-content: space-between;
           .captureItem {
-            border: 1px solid #d8d8d8;
             margin-bottom: 10px;
             width: 46%;
-            .capture {
+            .imgBox {
+              border: 1px solid #d8d8d8;
               width: 100%;
               height: 80px;
+              margin-bottom: 5px;
+            }
+            // .capture {
+            //   width: 100%;
+            // }
+            .captureName {
+              height: 20px;
+              line-height: 20px;
+              display: -webkit-box;
+              -webkit-box-orient: vertical;
+              -webkit-line-clamp: 1;
+              overflow: hidden;
+              text-overflow: ellipsis;
+              color: #000;
             }
           }
         }
@@ -2356,7 +2540,7 @@
         position: absolute;
         line-height: 22px;
         top: 50%;
-        right: 65px;
+        right: 50px;
         text-align: center;
         box-shadow: 0px 0px 6px 1px rgba(0, 0, 0, 0.16);
         img {
@@ -2365,7 +2549,7 @@
         }
       }
       .right {
-        right: 174px !important;
+        right: 184px !important;
         border-radius: 0px 3px 3px 0px !important;
       }
       .classRoomBox {
@@ -2532,16 +2716,18 @@
     height: 100%;
   }
 }
-.myNoteDialogs {
-  width: 400px !important;
-}
-.myDialogs {
-  width: 628px;
+
+.myDialogs,
+.myNoteDialogs,
+.resourDialog {
+  padding: 0 !important;
+  border-radius: 10px !important;
+  overflow: hidden;
 
   .el-dialog__header {
-    padding: 15px;
-    margin-right: 0;
-    border-bottom: 1px solid #f4f4f4;
+    padding: 10px;
+    text-align: center;
+    background: #f4f5f9;
   }
 
   .el-dialog__title {
@@ -2550,37 +2736,23 @@
   }
 
   .el-dialog__headerbtn {
-    top: 6px;
-    right: 6px;
-  }
-
-  .el-dialog__footer {
-    padding: 15px;
-    border-top: 1px solid #f4f4f4;
-  }
-
-  .myDialogs-footer {
-    .el-button {
-      padding: 0 20px;
-    }
-  }
-}
-.myNoteDialogs {
-  padding: 0 !important;
-  border-radius: 10px !important;
-  overflow: hidden;
-  .el-dialog__header {
-    padding: 10px;
-    text-align: center;
-    background: #f4f5f9;
-  }
-  .el-dialog__headerbtn {
     top: 0px !important;
     right: 0px !important;
   }
   .el-dialog__body {
     padding: 20px !important;
   }
+  .el-dialog__footer {
+    padding: 10px 20px 20px !important;
+    text-align: right;
+    box-sizing: border-box;
+  }
+}
+.myDialogs {
+  width: 628px;
+}
+.myNoteDialogs {
+  width: 500px !important;
 }
 .noteColorSelectBox {
   margin-top: 10px;
@@ -2609,5 +2781,8 @@
 .imgUrlBox {
   width: 100%;
   text-align: center;
+  img {
+    width: 100%;
+  }
 }
 </style>
diff --git a/vite.config.ts b/vite.config.ts
index e61f9fc..ed7aa8f 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -6,12 +6,13 @@
 
 // https://vitejs.dev/config/
 export default defineConfig({
+  base:"./",
   plugins: [
     vue(),
-    electron({
-      // 閰嶇疆 Electron 鍏ュ彛鏂囦欢
-      entry: 'electron-commonJS/main.js'
-    }),
+    // electron({
+    //   // 閰嶇疆 Electron 鍏ュ彛鏂囦欢
+    //   entry: 'electron-commonJS/main.js'
+    // }),
   ],
   resolve: {
     alias: {

--
Gitblit v1.9.1