refactor: 微信小程序改造

This commit is contained in:
AfyerCu 2025-11-12 21:28:53 +08:00
parent c5d956d3a8
commit 8b1bc80d4b
3 changed files with 4 additions and 179 deletions

View File

@ -123,6 +123,7 @@ export default defineManifestConfig({
// 是否启用 ES6 转 ES5
es6: true,
minified: true,
swc: true,
},
optimization: {
subPackages: true,

View File

@ -247,113 +247,6 @@ function toggleSpecialMark(type: 'excellent' | 'typical' | 'problem') {
emit('toggle-special-mark', type)
}
/**
* 更新画笔颜色
*/
function updatePenColor(color: string | null) {
settings.value.penColor = color || '#ff0000'
}
/**
* 更新画笔粗细
*/
function updatePenWidth(width: number | number[]) {
settings.value.penWidth = Array.isArray(width) ? width[0] : width
}
/**
* 更新文字大小
*/
function updateTextSize(size: number | undefined) {
if (size !== undefined) {
settings.value.textSize = size
}
}
/**
* 更新文字颜色
*/
function updateTextColor(color: string | null) {
settings.value.textColor = color || '#000000'
}
/**
* 处理鼠标按下开始拖动
*/
function handleMouseDown(event: MouseEvent) {
//
if (isCollapsed.value) {
return
}
//
const target = event.target as HTMLElement
if (
target.tagName === 'BUTTON'
|| target.closest('button')
|| target.tagName === 'INPUT'
|| target.closest('input')
) {
return
}
isDragging.value = true
dragState.value = {
startX: event.clientX,
startY: event.clientY,
startPositionX: position.value.x,
startPositionY: position.value.y,
}
//
document.addEventListener('mousemove', handleMouseMove)
document.addEventListener('mouseup', handleMouseUp)
//
event.preventDefault()
}
/**
* 处理鼠标移动进行拖动
*/
function handleMouseMove(event: MouseEvent) {
if (!isDragging.value)
return
const deltaX = event.clientX - dragState.value.startX
const deltaY = event.clientY - dragState.value.startY
//
let newX = dragState.value.startPositionX + deltaX
let newY = dragState.value.startPositionY - deltaY // bottom
//
if (toolbarRef.value) {
const rect = toolbarRef.value.getBoundingClientRect()
const windowWidth = window.innerWidth
const windowHeight = window.innerHeight
//
newX = Math.max(0, Math.min(newX, windowWidth - rect.width))
// ( bottom )
newY = Math.max(0, Math.min(newY, windowHeight - rect.height))
}
//
position.value = { x: newX, y: newY }
}
/**
* 处理鼠标松开结束拖动
*/
function handleMouseUp() {
isDragging.value = false
//
document.removeEventListener('mousemove', handleMouseMove)
document.removeEventListener('mouseup', handleMouseUp)
}
/**
* 切换收起/展开状态
*/
@ -361,74 +254,6 @@ function toggleCollapse() {
isCollapsed.value = !isCollapsed.value
}
/**
* 键盘快捷键处理
*/
function handleKeydown(event: KeyboardEvent) {
//
const target = event.target as HTMLElement
if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA') {
return
}
switch (event.code) {
case 'KeyV':
event.preventDefault()
switchTool(MarkingTool.SELECT)
break
case 'KeyT':
event.preventDefault()
switchTool(MarkingTool.TEXT)
break
case 'KeyP':
event.preventDefault()
switchTool(MarkingTool.PEN)
break
case 'KeyR':
event.preventDefault()
switchTool(MarkingTool.RECT)
break
case 'KeyE':
event.preventDefault()
switchTool(MarkingTool.ERASER)
break
case 'KeyZ':
if (event.ctrlKey || event.metaKey) {
event.preventDefault()
if (event.shiftKey) {
handleRedo()
}
else {
handleUndo()
}
}
break
case 'Delete':
case 'Backspace':
event.preventDefault()
handleClearAll()
break
}
}
//
onMounted(() => {
document.addEventListener('keydown', handleKeydown)
})
//
onUnmounted(() => {
document.removeEventListener('keydown', handleKeydown)
document.removeEventListener('mousemove', handleMouseMove)
document.removeEventListener('mouseup', handleMouseUp)
})
//
defineExpose({
handleImageClick,
@ -447,7 +272,6 @@ defineExpose({
'backdrop-saturate-150': !isCollapsed,
},
]"
@mousedown="handleMouseDown"
>
<!-- 收起按钮 -->
<div

View File

@ -130,9 +130,9 @@ export function getEnvBaseUrl() {
let baseUrl = import.meta.env.VITE_SERVER_BASEURL
// # 有些同学可能需要在微信小程序里面根据 develop、trial、release 分别设置上传地址,参考代码如下。
const VITE_SERVER_BASEURL__WEIXIN_DEVELOP = 'https://ukw0y1.laf.run'
const VITE_SERVER_BASEURL__WEIXIN_TRIAL = 'https://ukw0y1.laf.run'
const VITE_SERVER_BASEURL__WEIXIN_RELEASE = 'https://ukw0y1.laf.run'
const VITE_SERVER_BASEURL__WEIXIN_DEVELOP = 'http://mapi.xianglexue.com/api/v1'
const VITE_SERVER_BASEURL__WEIXIN_TRIAL = 'http://mapi.xianglexue.com/api/v1'
const VITE_SERVER_BASEURL__WEIXIN_RELEASE = 'http://mapi.xianglexue.com/api/v1'
// 微信小程序端环境区分
if (isMpWeixin) {