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 | 404 ++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 269 insertions(+), 135 deletions(-) diff --git a/src/views/home.vue b/src/views/home.vue index 402f91a..44c6920 100644 --- a/src/views/home.vue +++ b/src/views/home.vue @@ -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> @@ -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,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> @@ -425,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> @@ -458,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')" > 澶� @@ -504,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> @@ -643,7 +723,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"> @@ -733,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' @@ -745,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' @@ -783,14 +866,17 @@ 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 // 寰簲鐢ㄥ疄渚� onMounted(() => { - console.log(1111); - // canvasWith.value = window.innerWidth - 540 // canvasheight.value = window.innerHeight - 110 getNotesList() // 鑾峰彇楂樹寒 @@ -814,11 +900,18 @@ })() } - console.log(qiankunActions,"qiankunActions"); - - qiankunActions.setGlobalState({ - cc: (data) => { - console.log(data); + // 鍔犺浇寰簲鐢� + microApp = loadMicroApp(microApps.book1, { + sandbox: { + strictStyleIsolation: true, + experimentalStyleIsolation: true + } + }) + + window.qiankunActions.setGlobalState({ + state: 1, // 鍔犺浇瀛愬簲鐢� + windowSelection: (data) => { // 缁戝畾瀛愬簲鐢ㄩ�夋嫨鐩戝惉浜嬩欢 + console.log(data, '瀛愬簲鐢ㄩ�夋嫨') } }) }) @@ -998,7 +1091,17 @@ } //鍒锋柊褰撳墠椤甸潰 const reload = () => { - location.reload() + if (microApp) { + microApp.unmount() // 鍗歌浇寰簲鐢� + microApp = loadMicroApp(microApps.book1, { + sandbox: { + strictStyleIsolation: true, + experimentalStyleIsolation: true + } + }) + } else { + location.reload() + } } const selectResourceType = (type) => { @@ -1193,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: '鎴睆' } @@ -1243,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 } } @@ -1269,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 } } @@ -1304,7 +1392,6 @@ switch (item.name) { case '鐢荤瑪': canvasShow.value = true - init() break case '鎴睆': jitT() @@ -1324,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() } //鐢诲竷灞炴�� @@ -1345,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 } //鎴浘 @@ -1463,22 +1561,22 @@ } } -const handleMouseUp = (e) => { - if (move.value) { - const txt = window.getSelection()?.toString() - selectText.value = txt - const node = window.getSelection() - let html = node.anchorNode.parentNode.parentNode - dialogToolData.chapter = html.firstChild.innerHTML - if (txt) { - showToolBox.value = true - dialogToolData.top = e.y - dialogToolData.left = e.x - } - isMouseDown.value = false - } - move.value = false -} +// const handleMouseUp = (e) => { +// if (move.value) { +// const txt = window.getSelection()?.toString() +// selectText.value = txt +// const node = window.getSelection() +// let html = node.anchorNode.parentNode.parentNode +// dialogToolData.chapter = html.firstChild.innerHTML +// if (txt) { +// showToolBox.value = true +// dialogToolData.top = e.y +// dialogToolData.left = e.x +// } +// isMouseDown.value = false +// } +// move.value = false +// } const pageScroll = (e) => { showToolBox.value = false @@ -2626,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; @@ -2647,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