syncModal.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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>{{ tooltipText }}</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. tooltipText:{
  26. type:String,
  27. default:''
  28. }
  29. })
  30. let Visible = ref(false)
  31. let formState = reactive({
  32. passWord: ''
  33. })
  34. let $emit = defineEmits(['handleOk','handleCancel'])
  35. //确定
  36. function handleOk() {
  37. $emit('handleOk', { pass: formState.passWord, visib: false })
  38. }
  39. //取消
  40. function handleCancel(){
  41. formState.passWord=''
  42. $emit('handleCancel',false)
  43. }
  44. watchEffect(() => {
  45. Visible.value = props.visible
  46. })
  47. </script>
  48. <style lang="less" scoped>
  49. p {
  50. margin: 20px 40px;
  51. }
  52. </style>