index.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <template>
  2. <a-modal
  3. v-model:visible="modeVisible"
  4. class="custom-class"
  5. :title="title || '标题'"
  6. placement="right"
  7. :width="wdith || '1200px'"
  8. :closable="false"
  9. @close="closeFun"
  10. @ok="submit">
  11. <normalTable v-bind="$attrs" ref="list" size="small" @listData="listData">
  12. <template #tb_cell="{data}">
  13. <div v-if="custom">
  14. <slot name="custom" :data="data"></slot>
  15. </div>
  16. <div v-else>
  17. <template v-if="data.column.dataIndex === 'operation'">
  18. <slot name="handleBtn"></slot>
  19. </template>
  20. <template v-else>
  21. {{ data.record[data.column.dataIndex] }}
  22. </template>
  23. </div>
  24. </template>
  25. </normalTable>
  26. </a-modal>
  27. <slot name="slot1"></slot>
  28. </template>
  29. <script setup>
  30. import normalTable from '@/template/normalTable/index.vue'
  31. import {ref, defineProps, defineEmits,watch} from 'vue'
  32. import Api from '@/api/api'
  33. import utils from '@/utils/utils'
  34. import {message} from 'ant-design-vue'
  35. let emit = defineEmits(['selectRowData','close'])
  36. let props = defineProps({
  37. title:String,
  38. wdith:String,
  39. custom: {
  40. type:Boolean,
  41. default:() => false
  42. },
  43. })
  44. let list = ref()
  45. let modeVisible = ref(false)
  46. let submit = () => {
  47. if (!list.value.tableRecord.length) return message.warning('请选择数据')
  48. modeVisible.value = false
  49. emit('selectRowData',list.value.tableRecord)
  50. }
  51. watch(() => modeVisible.value,(val,preval) => {
  52. if (!val) list.value.reloadSelect()
  53. })
  54. let closeFun = () => {
  55. emit('close')
  56. }
  57. let refreshTable = () => {
  58. list.value.listData()
  59. }
  60. defineExpose({
  61. modeVisible,
  62. refreshTable,
  63. list
  64. })
  65. </script>
  66. <style scoped>
  67. </style>