messageList.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <template>
  2. <PageWrapper contentBackground>
  3. <template #footer>
  4. <a-tabs v-model:activeKey="state" @change="changeTable">
  5. <a-tab-pane :key="1" tab="待处理" />
  6. <a-tab-pane :key="0" tab="已处理" />
  7. </a-tabs>
  8. </template>
  9. <div class="desc-wrap-BasicTable">
  10. <BasicTable @register="registerTimeTable" >
  11. <template #action="{ record }">
  12. <TableAction
  13. stopButtonPropagation
  14. :actions="[
  15. {
  16. label: '处理',
  17. icon: 'icon-park-outline:door-handle',
  18. ifShow: getCheckPerm('message-deal') && record.state == 1,
  19. onClick: handleWithdraw.bind(null, record),
  20. },
  21. ]"
  22. />
  23. </template>
  24. </BasicTable>
  25. </div>
  26. <addMessgeModal @register="register" @update="reload" />
  27. </PageWrapper>
  28. </template>
  29. <script lang="ts">
  30. import { defineComponent, ref } from 'vue';
  31. import { BasicTable, useTable, TableAction, FormProps } from '/@/components/Table';
  32. import { PageWrapper } from '/@/components/Page';
  33. import { Divider, Card, Empty, Descriptions, Steps, Tabs } from 'ant-design-vue';
  34. import { intercomMessageList, intercomMessageHandle } from '/@/api/operate'
  35. import { useI18n } from '/@/hooks/web/useI18n';
  36. import addMessgeModal from './components/message/addModal.vue'
  37. import { useModal } from '/@/components/Modal';
  38. import { refundTimeTableSchema, refundTimeTableData } from './data';
  39. import { usePermissionStore } from '/@/store/modules/permission';
  40. export default defineComponent({
  41. components: {
  42. BasicTable,
  43. PageWrapper,
  44. TableAction,
  45. addMessgeModal,
  46. [Divider.name]: Divider,
  47. [Card.name]: Card,
  48. Empty,
  49. [Descriptions.name]: Descriptions,
  50. [Descriptions.Item.name]: Descriptions.Item,
  51. [Steps.name]: Steps,
  52. [Steps.Step.name]: Steps.Step,
  53. [Tabs.name]: Tabs,
  54. [Tabs.TabPane.name]: Tabs.TabPane,
  55. },
  56. setup() {
  57. const { t } = useI18n();
  58. const [register, { openModal }] = useModal();
  59. const state = ref<number>(1); //未处理,0已处理(默认1)
  60. const permissionStore = usePermissionStore();
  61. const { getCheckPerm } = permissionStore;
  62. const searchForm: Partial<FormProps> = {
  63. labelWidth: 100,
  64. schemas: [
  65. {
  66. field: 'sceneName',
  67. label: '提交时间',
  68. component: 'RangePicker',
  69. componentProps: {
  70. maxLength: 100,
  71. format: 'YYYY-MM-DD',
  72. valueFormat:'YYYY-MM-DD',
  73. showTime: true,
  74. },
  75. colProps: {
  76. xl: 11,
  77. xxl: 11,
  78. },
  79. },
  80. {
  81. field: 'type',
  82. label: t('routes.operate.newsTitle'),
  83. component: 'Input',
  84. colProps: {
  85. xl: 6,
  86. xxl: 6,
  87. },
  88. },
  89. ],
  90. };
  91. const [registerTimeTable,{reload}] = useTable({
  92. api: intercomMessageList,
  93. title: '留言列表',
  94. rowKey: 'id',
  95. fetchSetting: {
  96. pageField: 'pageNum',
  97. sizeField: 'pageSize',
  98. listField: 'list',
  99. totalField: 'total',
  100. },
  101. searchInfo: { state },
  102. columns: refundTimeTableSchema,
  103. formConfig: searchForm,
  104. dataSource: refundTimeTableData,
  105. showTableSetting: true,
  106. showIndexColumn: false,
  107. // pagination: { pageSize: 20 },
  108. scroll: { y: 300 },
  109. actionColumn: {
  110. width: 100,
  111. title: '操作',
  112. ifShow:state.value == 1,
  113. dataIndex: 'action',
  114. slots: { customRender: 'action' },
  115. },
  116. });
  117. function changeTable(val: string) {
  118. state.value = val;
  119. reload();
  120. }
  121. async function handleWithdraw(record: Recordable) {
  122. openModal(true,record)
  123. }
  124. return {
  125. registerTimeTable,
  126. handleWithdraw,
  127. changeTable,
  128. state,
  129. reload,
  130. register,
  131. openModal,
  132. getCheckPerm,
  133. };
  134. },
  135. });
  136. </script>