<template> <div class="components-input-demo-presuffix"> <a-input @click="openModal" placeholder="corn表达式" v-model:value="cron" @change="handleOK"> <template #prefix> <a-icon type="schedule" title="corn控件" /> </template> <template #suffix> <a-icon v-if="cron" type="close-circle" @click="handleEmpty" title="清空" /> </template> </a-input> <JCronModal ref="innerVueCron" :data="cron" @ok="handleOK"></JCronModal> </div> </template> <script> import JCronModal from './cron-antd.vue'; export default { name: 'vCron', components: { JCronModal, }, props: { value: { required: false, type: String, default: () => { return '0 * * * * ? *'; }, }, }, data() { return { cron: this.value, }; }, watch: { value(val) { this.cron = val; }, }, methods: { openModal() { this.$refs.innerVueCron.show(); }, handleOK(val) { if(typeof(val) !== 'string') return ; this.cron = val; this.$emit('change', this.cron); //this.$emit("change", Object.assign({}, this.cron)); }, handleEmpty() { this.handleOK(''); }, }, model: { prop: 'value', event: 'change', }, }; </script> <style scoped> .components-input-demo-presuffix .anticon-close-circle { cursor: pointer; color: #ccc; transition: color 0.3s; font-size: 12px; } .components-input-demo-presuffix .anticon-close-circle:hover { color: #f5222d; } .components-input-demo-presuffix .anticon-close-circle:active { color: #666; } </style>