- Vue 3 + TypeScript + Element Plus 前端界面 - Pinia 状态管理 - Vue Router 4 路由管理 - Axios HTTP 客户端 - MSW (Mock Service Worker) 开发环境模拟 - 账户管理界面 (列表、详情、三科目余额展示) - 交易管理界面 (列表、详情) - 对账管理界面 (三账校验) - 完善的 API 客户端封装 - Docker 容器化配置 - Nginx 配置用于生产环境
63 lines
1.5 KiB
JavaScript
63 lines
1.5 KiB
JavaScript
'use strict';
|
|
|
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
|
var shared = require('@vue/shared');
|
|
|
|
const REPEAT_INTERVAL = 100;
|
|
const REPEAT_DELAY = 600;
|
|
const SCOPE = "_RepeatClick";
|
|
const vRepeatClick = {
|
|
beforeMount(el, binding) {
|
|
const value = binding.value;
|
|
const { interval = REPEAT_INTERVAL, delay = REPEAT_DELAY } = shared.isFunction(
|
|
value
|
|
) ? {} : value;
|
|
let intervalId;
|
|
let delayId;
|
|
const handler = () => shared.isFunction(value) ? value() : value.handler();
|
|
const clear = () => {
|
|
if (delayId) {
|
|
clearTimeout(delayId);
|
|
delayId = void 0;
|
|
}
|
|
if (intervalId) {
|
|
clearInterval(intervalId);
|
|
intervalId = void 0;
|
|
}
|
|
};
|
|
const start = (evt) => {
|
|
if (evt.button !== 0)
|
|
return;
|
|
clear();
|
|
handler();
|
|
document.addEventListener("mouseup", clear, { once: true });
|
|
delayId = setTimeout(() => {
|
|
intervalId = setInterval(() => {
|
|
handler();
|
|
}, interval);
|
|
}, delay);
|
|
};
|
|
el[SCOPE] = { start, clear };
|
|
el.addEventListener("mousedown", start);
|
|
},
|
|
unmounted(el) {
|
|
if (!el[SCOPE])
|
|
return;
|
|
const { start, clear } = el[SCOPE];
|
|
if (start) {
|
|
el.removeEventListener("mousedown", start);
|
|
}
|
|
if (clear) {
|
|
clear();
|
|
document.removeEventListener("mouseup", clear);
|
|
}
|
|
el[SCOPE] = null;
|
|
}
|
|
};
|
|
|
|
exports.REPEAT_DELAY = REPEAT_DELAY;
|
|
exports.REPEAT_INTERVAL = REPEAT_INTERVAL;
|
|
exports.vRepeatClick = vRepeatClick;
|
|
//# sourceMappingURL=index.js.map
|