@wocwin/t-ui-plus
Version:
Page level components developed based on Element Plus.
62 lines (57 loc) • 1.62 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
const _hoisted_1 = { class: "t-timer-btn" };
const _hoisted_2 = ["disabled"];
var _sfc_main = /* @__PURE__ */ vue.defineComponent({
...{
name: "TTimerBtn"
},
__name: "index",
props: {
second: { default: 60 },
className: { default: "" }
},
emits: ["click"],
setup(__props, { expose: __expose, emit: __emit }) {
const props = __props;
const time = vue.ref(0);
const disabled = vue.ref(false);
const text = vue.computed(() => {
return time.value > 0 ? `${time.value}s \u540E\u91CD\u83B7\u53D6` : "\u83B7\u53D6\u9A8C\u8BC1\u7801";
});
const emits = __emit;
const run = () => {
emits("click");
start();
};
const reset = () => {
time.value = 0;
};
const start = () => {
time.value = props.second;
disabled.value = true;
timer();
};
const timer = () => {
if (time.value > 0) {
time.value--;
setTimeout(timer, 1e3);
} else {
disabled.value = false;
}
};
__expose({ reset });
return (_ctx, _cache) => {
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
vue.createElementVNode("button", {
class: vue.normalizeClass(["sendSmsBtn", { dissendSmsBtn: disabled.value, className: _ctx.className }]),
type: "button",
onClick: run,
disabled: disabled.value || time.value > 0
}, vue.toDisplayString(text.value), 11, _hoisted_2)
]);
};
}
});
exports.default = _sfc_main;