mirror of
https://gitee.com/beijing_hongye_huicheng/lilishop-ui.git
synced 2026-08-06 19:07:25 +08:00
- 在多个组件中添加了新的属性和方法以提升功能性,如在卡片组件中引入 _ActiveTab 属性以管理活动标签。 - 优化了商品详情和商户页面的收藏逻辑,确保在未登录状态下引导用户登录。 - 更新了轮播组件的路由解析逻辑,增强了用户体验。 - 改进了投诉列表和收藏列表的样式,提升了响应式布局和可读性。 - 在全局配置中添加了对开发环境的错误处理,提升了调试体验。
102 lines
2.9 KiB
JavaScript
102 lines
2.9 KiB
JavaScript
import _ from '../utils'
|
|
|
|
export default {
|
|
mounted(el, binding) {
|
|
const handleMouseDown = (e) => {
|
|
const ctx = binding.instance
|
|
if (!ctx) return
|
|
|
|
e && e.preventDefault()
|
|
|
|
let itemInfo = {
|
|
top: _.getDistanceY(e, el),
|
|
left: _.getDistanceX(e, el),
|
|
width: 0,
|
|
height: 0,
|
|
}
|
|
const container = _.getOffset(el)
|
|
|
|
const setting = {
|
|
topPer: _.decimalPoint(itemInfo.top / container.height),
|
|
leftPer: _.decimalPoint(itemInfo.left / container.width),
|
|
widthPer: 0,
|
|
heightPer: 0,
|
|
}
|
|
let preX = _.getPageX(e)
|
|
let preY = _.getPageY(e)
|
|
|
|
ctx.addItem(setting)
|
|
|
|
window.addEventListener('mousemove', handleChange, { passive: false })
|
|
window.addEventListener('mouseup', handleMouseUp, { passive: false })
|
|
|
|
function handleChange(e) {
|
|
e && e.preventDefault()
|
|
|
|
const moveX = _.getPageX(e) - preX
|
|
const moveY = _.getPageY(e) - preY
|
|
preX = _.getPageX(e)
|
|
preY = _.getPageY(e)
|
|
|
|
const minLimit = 0
|
|
const styleInfo = _.dealBR(itemInfo, moveX, moveY, minLimit)
|
|
|
|
itemInfo = _.dealEdgeValue(itemInfo, styleInfo, container, ctx.zones)
|
|
|
|
Object.assign(el.lastElementChild.style, {
|
|
top: `${itemInfo.top}px`,
|
|
left: `${itemInfo.left}px`,
|
|
width: `${itemInfo.width}px`,
|
|
height: `${itemInfo.height}px`,
|
|
})
|
|
}
|
|
|
|
function handleMouseUp() {
|
|
const perInfo = {
|
|
topPer: _.decimalPoint(itemInfo.top / container.height),
|
|
leftPer: _.decimalPoint(itemInfo.left / container.width),
|
|
widthPer: _.decimalPoint(itemInfo.width / container.width),
|
|
heightPer: _.decimalPoint(itemInfo.height / container.height),
|
|
img: '',
|
|
link: '',
|
|
type: '',
|
|
title: '',
|
|
}
|
|
|
|
if (ctx.isOverRange()) {
|
|
ctx.overRange()
|
|
} else if (container.height < _.MIN_LIMIT && itemInfo.width > _.MIN_LIMIT) {
|
|
ctx.changeItem(
|
|
Object.assign(perInfo, {
|
|
topPer: 0,
|
|
heightPer: 1,
|
|
}),
|
|
true
|
|
)
|
|
} else if (container.width < _.MIN_LIMIT && itemInfo.height > _.MIN_LIMIT) {
|
|
ctx.changeItem(
|
|
Object.assign(perInfo, {
|
|
leftper: 0,
|
|
widthPer: 1,
|
|
}),
|
|
true
|
|
)
|
|
} else if (itemInfo.width > _.MIN_LIMIT && itemInfo.height > _.MIN_LIMIT) {
|
|
ctx.changeItem(perInfo, true)
|
|
} else {
|
|
ctx.eraseItem()
|
|
}
|
|
|
|
window.removeEventListener('mousemove', handleChange)
|
|
window.removeEventListener('mouseup', handleMouseUp)
|
|
}
|
|
}
|
|
|
|
el.__hotzoneAddDestroy = () => el.removeEventListener('mousedown', handleMouseDown)
|
|
el.addEventListener('mousedown', handleMouseDown, { passive: false })
|
|
},
|
|
beforeUnmount(el) {
|
|
el.__hotzoneAddDestroy?.()
|
|
},
|
|
}
|