From a1f8fc2fdf89ab50cd46c5ad96f7fe3dbc333756 Mon Sep 17 00:00:00 2001
From: YM <479443481@qq.com>
Date: 星期一, 13 五月 2024 14:53:23 +0800
Subject: [PATCH] Merge branch 'master' of http://182.92.203.7:2001/r/TextbookReader

---
 src/views/home.vue |  325 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 222 insertions(+), 103 deletions(-)

diff --git a/src/views/home.vue b/src/views/home.vue
index 107f69d..44c6920 100644
--- a/src/views/home.vue
+++ b/src/views/home.vue
@@ -385,34 +385,51 @@
         >
           <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>
@@ -420,27 +437,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>
@@ -453,38 +470,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')"
                   >
                     澶�
@@ -499,33 +518,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>
@@ -728,6 +813,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'
@@ -740,6 +826,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'
@@ -1208,29 +1296,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: '鎴睆'
   }
@@ -1258,22 +1343,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
   }
 }
@@ -1284,22 +1363,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
   }
 }
@@ -1319,7 +1392,6 @@
   switch (item.name) {
     case '鐢荤瑪':
       canvasShow.value = true
-      init()
       break
     case '鎴睆':
       jitT()
@@ -1339,20 +1411,38 @@
   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
+  }
+}
 
 //閫変腑鐢荤瑪绮楃粏
 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()
 }
 //鐢诲竷灞炴��
@@ -1360,24 +1450,17 @@
   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
 }
 
 //鎴浘
@@ -2641,7 +2724,7 @@
       width: 85px;
       background-image: linear-gradient(to bottom, #0093ff, #005dff);
       position: fixed;
-      height: 430px;
+      height: 310px;
       top: 300px;
       left: 450px;
       z-index: 99;
@@ -2662,11 +2745,47 @@
           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