SelectProjectModal.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <template>
  2. <a-modal
  3. title="选择项目(select project)"
  4. width="95%"
  5. :visible="visible"
  6. :maskClosable="false"
  7. switchFullscreen
  8. @ok = "handleOk"
  9. @cancel="handleCancel">
  10. <div>
  11. <!--引用表格-->
  12. <BasicTable @register="registerTable" :rowSelection="rowSelection">
  13. <template #tableTitle>
  14. <a-button type="primary" v-auth="'saleCode:sale_inquiry_form:add'" @click="handleAdd" preIcon="ant-design:plus-outlined"> 新增(add)</a-button>
  15. </template>
  16. </BasicTable>
  17. <AddProjectModal ref="addProjectModalRef" @success="reload"></AddProjectModal>
  18. </div>
  19. </a-modal>
  20. </template>
  21. <script lang="ts" name="baseCode-baseShipArchive" setup>
  22. import {ref, reactive } from 'vue';
  23. import {BasicTable} from '/@/components/Table';
  24. import { useListPage } from '/@/hooks/system/useListPage'
  25. import {columns, searchFormSchema} from './BaseProjectArchive.data';
  26. import AddProjectModal from './AddProjectModal.vue';
  27. import {list} from './BaseProjectArchive.api';
  28. import { message } from 'ant-design-vue';
  29. const queryParam = reactive<any>({});
  30. var visible = ref(false);
  31. const emit = defineEmits([ 'selectProject']); //定义emit
  32. var addProjectModalRef = ref();
  33. //注册table数据
  34. const { tableContext} = useListPage({
  35. tableProps:{
  36. api:list,
  37. columns,
  38. canResize:false,
  39. formConfig: {
  40. schemas: searchFormSchema,
  41. autoSubmitOnEnter:true,
  42. showAdvancedButton:true,
  43. fieldMapToNumber: [
  44. ],
  45. fieldMapToTime: [
  46. ['shipDate', ['shipDate_begin', 'shipDate_end'], 'YYYY-MM-DD HH:mm:ss'],
  47. ],
  48. },
  49. showTableSetting:false,
  50. showActionColumn:false,
  51. actionColumn: {
  52. width: 200,
  53. fixed:'right'
  54. },
  55. beforeFetch: (params) => {
  56. return Object.assign(params, queryParam);
  57. },
  58. }
  59. })
  60. const [registerTable, {reload},{ rowSelection, selectedRowKeys }] = tableContext
  61. function handleCancel() {
  62. visible.value = false;
  63. selectedRowKeys.value = []
  64. }
  65. function handleOk() {
  66. if(selectedRowKeys.value.length!==1){
  67. message.warning('请选择一条数据数据')
  68. }else{
  69. emit('selectProject',rowSelection.selectedRows)
  70. handleCancel()
  71. }
  72. }
  73. function getTable(){
  74. visible.value = true
  75. }
  76. function handleAdd(){
  77. addProjectModalRef.value.getTable()
  78. }
  79. defineExpose({
  80. getTable
  81. });
  82. </script>
  83. <style lang="less" scoped>
  84. :deep(.ant-picker),:deep(.ant-input-number){
  85. width: 100%;
  86. }
  87. </style>