syncModal.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template>
  2. <div class="sync-modal">
  3. <a-modal v-model:visible="Visible" width="450px" :title="Title" centered destroyOnClose @ok="handleOk"
  4. @cancel="handleCancel">
  5. <p>您正在执行 “开启/关闭” 全部风门的操作,请输入密码执行。</p>
  6. <a-form :model="formState" name="basic" :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" autocomplete="off">
  7. <a-form-item label="输入密码" name="passWord" :rules="[{ required: true, message: '请输入密码!' }]">
  8. <a-input-password style="width:220px" v-model:value="formState.passWord" />
  9. </a-form-item>
  10. </a-form>
  11. </a-modal>
  12. </div>
  13. </template>
  14. <script setup lang="ts">
  15. import { ref, reactive, watchEffect } from 'vue'
  16. let props = defineProps({
  17. visible: {
  18. type: Boolean,
  19. default: false
  20. },
  21. Title: {
  22. type: String,
  23. default: '操作确认'
  24. }
  25. })
  26. let Visible = ref(false)
  27. let formState = reactive({
  28. passWord: ''
  29. })
  30. let $emit = defineEmits(['handleOk','handleCancel'])
  31. //确定
  32. function handleOk() {
  33. $emit('handleOk', { pass: formState.passWord, visib: false })
  34. }
  35. //取消
  36. function handleCancel(){
  37. formState.passWord=''
  38. $emit('handleCancel',false)
  39. }
  40. watchEffect(() => {
  41. Visible.value = props.visible
  42. })
  43. </script>
  44. <style lang="less" scoped>
  45. p {
  46. margin: 20px 40px;
  47. }
  48. </style>