messageList.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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. autoSubmitOnEnter:true,
  65. schemas: [
  66. {
  67. field: 'time',
  68. label: '提交时间',
  69. component: 'RangePicker',
  70. componentProps: {
  71. maxLength: 100,
  72. format: 'YYYY-MM-DD',
  73. valueFormat:'YYYY-MM-DD',
  74. showTime: true,
  75. },
  76. colProps: {
  77. xl: 11,
  78. xxl: 11,
  79. },
  80. },
  81. {
  82. field: 'content',
  83. label: '留言内容',
  84. component: 'Input',
  85. colProps: {
  86. xl: 6,
  87. xxl: 6,
  88. },
  89. },
  90. ],
  91. };
  92. const [registerTimeTable,{reload}] = useTable({
  93. api: intercomMessageList,
  94. title: '留言列表',
  95. rowKey: 'id',
  96. fetchSetting: {
  97. pageField: 'pageNum',
  98. sizeField: 'pageSize',
  99. listField: 'list',
  100. totalField: 'total',
  101. },
  102. searchInfo: { state },
  103. columns: refundTimeTableSchema,
  104. formConfig: searchForm,
  105. dataSource: refundTimeTableData,
  106. showTableSetting: true,
  107. useSearchForm: true,
  108. showIndexColumn: false,
  109. canResize:true,
  110. beforeFetch:(T)=>{
  111. if(T.time){
  112. T.startTime = T.time[0]
  113. T.endTime = T.time[1]
  114. }
  115. return T
  116. },
  117. actionColumn: {
  118. width: 100,
  119. title: '操作',
  120. ifShow:state.value == 1,
  121. dataIndex: 'action',
  122. slots: { customRender: 'action' },
  123. },
  124. });
  125. function changeTable(val: string) {
  126. state.value = val;
  127. reload();
  128. }
  129. async function handleWithdraw(record: Recordable) {
  130. openModal(true,record)
  131. }
  132. return {
  133. registerTimeTable,
  134. handleWithdraw,
  135. changeTable,
  136. state,
  137. reload,
  138. register,
  139. openModal,
  140. getCheckPerm,
  141. };
  142. },
  143. });
  144. </script>