Compare commits

..

6 Commits

Author SHA1 Message Date
e8a683455b refactor(upload): 重构上传组件,优化代码结构和功能实现
重构上传组件,引入新的依赖和工具函数,优化文件上传、图片压缩和裁剪功能。调整组件结构,提升代码可读性和可维护性。
2025-04-15 10:35:31 +08:00
8fd2f9da68 refactor(upload): 优化图片查看组件的渲染逻辑
将 `onWheel` 事件处理移到父元素,简化 `img` 元素的属性定义,提升代码可读性和维护性
2025-04-15 10:29:43 +08:00
5e00eccb29 build: 将@layui/layer-vue依赖从workspace改为git仓库
将@layui/layer-vue的依赖源从本地workspace更改为git仓库,以便更好地管理和更新依赖。
2025-04-15 10:24:56 +08:00
09c7268229 chore: 更新@layui/layer-vue依赖为workspace版本
将@layui/layer-vue依赖从本地文件路径更新为workspace版本,以便更好地管理项目依赖
2025-04-15 10:20:51 +08:00
d5576061e3 feat(上传): 添加图片缩放功能
为上传组件中的图片添加了缩放功能,用户可以通过鼠标滚轮调整图片的缩放比例,缩放范围限制在0.5到3倍之间。此功能提升了用户体验,方便用户查看图片细节。
2025-04-15 10:09:16 +08:00
596ab0f0d4 2 2024-12-10 14:45:55 +08:00
9 changed files with 203 additions and 179 deletions

View File

@@ -1,4 +1,4 @@
import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, normalizeStyle, unref, createBlock, createCommentVNode, toDisplayString, ref, watch, onMounted, nextTick, createElementVNode, Fragment, renderList, shallowRef, createTextVNode, createVNode, useSlots, inject, Transition, withCtx, renderSlot, h, render, isVNode } from "vue";
import { defineComponent, computed, openBlock, createElementBlock, normalizeClass, normalizeStyle, unref, createBlock, createCommentVNode, toDisplayString, ref, watch, onMounted, nextTick, withModifiers, createElementVNode, Fragment, renderList, shallowRef, createTextVNode, createVNode, useSlots, inject, Transition, withCtx, renderSlot, h, render, isVNode } from "vue";
var iconfont = [{
name: "\u5B9E\u5FC3",
class: "layui-icon-heart-fill"
@@ -4786,9 +4786,7 @@ function _objectSpread$3(e) {
}
return e;
}
var _hoisted_1$2 = {
class: "layui-layer-phimg"
};
var _hoisted_1$2 = ["onWheel"];
var _hoisted_2$2 = ["src"];
var _hoisted_3$2 = {
key: 0,
@@ -4858,8 +4856,20 @@ var _sfc_main$2 = defineComponent(_objectSpread$3(_objectSpread$3({}, __default_
});
return res;
});
var scale = ref(1);
var handleWheel = function handleWheel2(event) {
var delta = event.deltaY > 0 ? -0.1 : 0.1;
var newScale = scale.value + delta;
scale.value = Math.min(Math.max(newScale, 0.5), 3);
};
return function(_ctx, _cache) {
return openBlock(), createElementBlock("div", _hoisted_1$2, [createElementVNode("img", {
return openBlock(), createElementBlock("div", {
class: "layui-layer-phimg",
onWheel: withModifiers(handleWheel, ["prevent"]),
style: normalizeStyle({
transform: "scale(".concat(scale.value, ")")
})
}, [createElementVNode("img", {
src: __props.imgList[index2.value].src
}, null, 8, _hoisted_2$2), __props.imgList.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_3$2, [__props.imgList.length > 1 ? (openBlock(), createElementBlock("span", _hoisted_4$1, [createElementVNode("a", {
href: "javascript:;",
@@ -4894,7 +4904,7 @@ var _sfc_main$2 = defineComponent(_objectSpread$3(_objectSpread$3({}, __default_
style: normalizeStyle({
left: "calc(calc( calc(100% - ".concat(100 * __props.imgList.length, "px) / 2) + ").concat(index2.value * 100, "px)")
})
}, null, 4)])) : (openBlock(), createElementBlock("span", _hoisted_8$1, [__props.imgList[index2.value].alt ? (openBlock(), createElementBlock("span", _hoisted_9, toDisplayString(__props.imgList[index2.value].alt), 1)) : createCommentVNode("", true), __props.imgList.length > 1 ? (openBlock(), createElementBlock("em", _hoisted_10, toDisplayString(index2.value + 1) + " / " + toDisplayString(__props.imgList.length), 1)) : createCommentVNode("", true)]))], 4)) : createCommentVNode("", true)])) : createCommentVNode("", true)]);
}, null, 4)])) : (openBlock(), createElementBlock("span", _hoisted_8$1, [__props.imgList[index2.value].alt ? (openBlock(), createElementBlock("span", _hoisted_9, toDisplayString(__props.imgList[index2.value].alt), 1)) : createCommentVNode("", true), __props.imgList.length > 1 ? (openBlock(), createElementBlock("em", _hoisted_10, toDisplayString(index2.value + 1) + " / " + toDisplayString(__props.imgList.length), 1)) : createCommentVNode("", true)]))], 4)) : createCommentVNode("", true)])) : createCommentVNode("", true)], 44, _hoisted_1$2);
};
}
}));
@@ -5111,7 +5121,7 @@ function calculateContent(title2, height, btn, type, isMessage) {
if (btn && btn.length > 0) {
if (type == 0) {
if (title2) {
return "calc(" + height + " - 137px)";
return "calc(" + height + " - 90px)";
} else {
return "calc(" + height + " - 86px)";
}

View File

@@ -172,13 +172,11 @@ function triggerRefValue(ref, newVal) {
}
}
}
var _a;
class ComputedRefImpl {
constructor(getter, _setter, isReadonly, isSSR) {
this._setter = _setter;
this.dep = void 0;
this.__v_isRef = true;
this[_a] = false;
this._dirty = true;
this.effect = new ReactiveEffect(getter, () => {
if (!this._dirty) {
@@ -203,7 +201,6 @@ class ComputedRefImpl {
this._setter(newValue);
}
}
_a = "__v_isReadonly";
function computed(getterOrOptions, debugOptions, isSSR = false) {
let getter;
let setter;

View File

@@ -1,15 +1,15 @@
import { getCurrentScope, onScopeDispose, computed, toRefs, getCurrentInstance, onMounted, nextTick, ref, unref, isRef, reactive, watch, customRef, onUpdated } from "vue";
var _a;
const isClient = typeof window !== "undefined";
const toString = Object.prototype.toString;
var _a$1;
const isClient$1 = typeof window !== "undefined";
const toString$1 = Object.prototype.toString;
const isFunction = (val) => typeof val === "function";
const isNumber = (val) => typeof val === "number";
const isString = (val) => typeof val === "string";
const isObject = (val) => toString.call(val) === "[object Object]";
const isObject$1 = (val) => toString$1.call(val) === "[object Object]";
const clamp = (n, min, max) => Math.min(max, Math.max(min, n));
const noop = () => {
};
isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);
isClient$1 && ((_a$1 = window == null ? void 0 : window.navigator) == null ? void 0 : _a$1.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);
function resolveUnref(r) {
return typeof r === "function" ? r() : unref(r);
}
@@ -141,7 +141,7 @@ function useTimeoutFn(cb, interval, options = {}) {
}
if (immediate) {
isPending.value = true;
if (isClient)
if (isClient$1)
start();
}
tryOnScopeDispose(stop);
@@ -156,7 +156,7 @@ function unrefElement(elRef) {
const plain = resolveUnref(elRef);
return (_a2 = plain == null ? void 0 : plain.$el) != null ? _a2 : plain;
}
const defaultWindow = isClient ? window : void 0;
const defaultWindow = isClient$1 ? window : void 0;
function useEventListener(...args) {
let target;
let event;
@@ -561,4 +561,9 @@ function useWindowSize(options = {}) {
useEventListener("orientationchange", update, { passive: true });
return { width, height };
}
export { TransitionPresets as T, useResizeObserver as a, useThrottleFn as b, useEventListener as c, useEyeDropper as d, useTransition as e, useMousePressed as f, isObject as i, onClickOutside as o, reactiveOmit as r, templateRef as t, useWindowSize as u };
var _a;
const isClient = typeof window !== "undefined";
const toString = Object.prototype.toString;
const isObject = (val) => toString.call(val) === "[object Object]";
isClient && ((_a = window == null ? void 0 : window.navigator) == null ? void 0 : _a.userAgent) && /iP(ad|hone|od)/.test(window.navigator.userAgent);
export { TransitionPresets as T, useResizeObserver as a, useThrottleFn as b, useEventListener as c, useEyeDropper as d, useTransition as e, useMousePressed as f, isObject as g, isObject$1 as i, onClickOutside as o, reactiveOmit as r, templateRef as t, useWindowSize as u };

View File

@@ -1510,7 +1510,7 @@ const _sfc_main = defineComponent({
const soultop = ref(0);
const soulleft = ref(0);
const selcolumn = ref({});
const soulkey = ref("");
const soulkey = ref();
const sxlist = ref({});
function showsoul(event, column, key) {
console.log(event);

View File

@@ -1,7 +1,7 @@
import { w as withInstall } from "../badge/index2.js";
import { defineComponent, ref, computed, watch, openBlock, createElementBlock, createElementVNode, normalizeClass, unref, createVNode, createCommentVNode, toDisplayString } from "vue";
import { _ as _sfc_main$2W } from "../_chunks/@layui/index.js";
import { i as isObject } from "../_chunks/@vueuse/index.js";
import { g as isObject } from "../_chunks/@vueuse/index.js";
var index = /* @__PURE__ */ (() => ":root{--textarea-border-radius: var(--global-border-radius);--textarea-border-color: var(--global-neutral-color-3)}.layui-textarea{border-width:1px;border-style:solid;background-color:#fff;color:#000000d9;border-radius:var(--textarea-border-radius);border-color:var(--textarea-border-color);display:block;width:100%;height:auto;line-height:20px;min-height:100px;padding:6px 10px;resize:vertical;position:relative;transition:none;-webkit-transition:none}.layui-textarea-wrapper{position:relative}.layui-textarea:hover,.layui-textarea:focus{border-color:#d2d2d2!important}.layui-textarea-clear{position:absolute;color:#00000073;right:10px;top:10px}.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-texterea-count{color:inherit;white-space:nowrap;pointer-events:none;text-align:right;margin-top:4px}.layui-textarea-disabled{cursor:not-allowed!important;opacity:.6}\n")();
const _hoisted_1 = { class: "layui-textarea-wrapper" };
const _hoisted_2 = ["value", "placeholder", "name", "disabled", "maxlength"];

File diff suppressed because one or more lines are too long

View File

@@ -36,7 +36,7 @@
"dependencies": {
"@ctrl/tinycolor": "^3.4.1",
"@layui/icons-vue": "^1.0.9",
"@layui/layer-vue": "git+https://git.theluyuan.com/luyuan/layui-layer.git",
"@layui/layer-vue": "git+https://git.theluyuan.com/theluyuan/layui-layer.git",
"@layui/layui-vue": "file:",
"@umijs/ssr-darkreader": "^4.9.45",
"@vueuse/core": "^9.2.0",

View File

@@ -826,7 +826,7 @@ const soulstatus = ref(false);
const soultop = ref(0);
const soulleft = ref(0);
const selcolumn = ref<any>({});
const soulkey = ref("");
const soulkey = ref<string>();
const sxlist: any = ref({});
function showsoul(event: MouseEvent, column: any, key: string) {
console.log(event);

File diff suppressed because one or more lines are too long