UserUseYnModal.vue 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <template>
  2. <BasicModal @register="registerModal" :canFullscreen="false" :closable="false" @ok="handleOk">
  3. <SmartTable @register="registerTable" />
  4. </BasicModal>
  5. </template>
  6. <script setup lang="ts">
  7. import { BasicModal, useModalInner } from '@/components/Modal';
  8. import { SmartTable, useSmartTable } from '@/components/SmartTable';
  9. import { listTenantApi, setUseYnApi } from '../UserListView.api';
  10. import { successMessage, warnMessage } from '@/utils/message/SystemNotice';
  11. import { useI18n } from '@/hooks/web/useI18n';
  12. const { t } = useI18n();
  13. let selectRows: Recordable[] = [];
  14. let useYnValue = null;
  15. const [registerModal, { changeOkLoading, closeModal }] = useModalInner(({ rows, useYn }) => {
  16. selectRows = rows || [];
  17. useYnValue = useYn;
  18. query();
  19. });
  20. const handleOk = async () => {
  21. const selectTenants = getCheckboxRecords();
  22. if (selectTenants.length === 0) {
  23. warnMessage(t('common.notice.select'));
  24. return false;
  25. }
  26. try {
  27. changeOkLoading(true);
  28. await setUseYnApi(selectRows, useYnValue!, {
  29. tenantIdList: selectTenants.map((item) => item.id),
  30. });
  31. successMessage(t('common.message.OperationSucceeded'));
  32. closeModal();
  33. } finally {
  34. changeOkLoading(false);
  35. }
  36. };
  37. const [registerTable, { query, getCheckboxRecords }] = useSmartTable({
  38. border: true,
  39. stripe: true,
  40. rowConfig: {
  41. isHover: true,
  42. },
  43. columnConfig: {
  44. resizable: true,
  45. },
  46. proxyConfig: {
  47. autoLoad: false,
  48. ajax: {
  49. query() {
  50. return listTenantApi({});
  51. },
  52. },
  53. },
  54. showOverflow: 'tooltip',
  55. columns: [
  56. {
  57. type: 'checkbox',
  58. width: 60,
  59. align: 'center',
  60. fixed: 'left',
  61. field: 'checkbox',
  62. },
  63. {
  64. field: 'tenantCode',
  65. title: '{system.views.tenant.manager.title.tenantCode}',
  66. minWidth: 120,
  67. },
  68. {
  69. field: 'tenantShortName',
  70. title: '{system.views.tenant.manager.title.tenantShortName}',
  71. minWidth: 120,
  72. },
  73. {
  74. field: 'tenantName',
  75. title: '{system.views.tenant.manager.title.tenantName}',
  76. minWidth: 120,
  77. },
  78. ],
  79. });
  80. </script>
  81. <style scoped lang="less"></style>