index.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <template>
  2. <v-card class="pa-5 card-box">
  3. <div class="text-end">
  4. <v-btn prepend-icon="mdi-plus" color="primary" @click="handleAdd">{{ $t('common.add') }}</v-btn>
  5. </div>
  6. <v-data-table
  7. :headers="headers"
  8. :items="items"
  9. hide-default-header
  10. height="70vh"
  11. item-value="id"
  12. >
  13. <template #bottom></template>
  14. <template v-slot:item.actions="{ item }">
  15. <v-btn color="primary" variant="text" @click="handleEdit(item)">{{ $t('common.edit') }}</v-btn>
  16. <v-btn color="primary" variant="text" @click="handleDelete(item)">{{ $t('common.delete') }}</v-btn>
  17. </template>
  18. </v-data-table>
  19. <CtPagination
  20. :total="total"
  21. :page="query.pageNo"
  22. :limit="query.pageSize"
  23. @handleChange="handleChangePage"
  24. ></CtPagination>
  25. </v-card>
  26. </template>
  27. <script setup>
  28. defineOptions({ name: 'system-post-index'})
  29. import { ref } from 'vue'
  30. import { useRouter } from 'vue-router'
  31. import { timesTampChange } from '@/utils/date'
  32. import { useI18n } from '@/hooks/web/useI18n'
  33. import { getEnterprisePostPage, deleteEnterprisePost } from '@/api/recruit/enterprise/system/post'
  34. import Confirm from '@/plugins/confirm'
  35. import Snackbar from '@/plugins/snackbar'
  36. const { t } = useI18n()
  37. const router = useRouter()
  38. const total = ref(10)
  39. const items = ref([])
  40. const query = ref({
  41. pageNo: 1,
  42. pageSize: 10
  43. })
  44. const headers = [
  45. { title: '岗位名称', key: 'nameCn' },
  46. { title: '英文名称', key: 'nameEn' },
  47. { title: '岗位缩写', key: 'code' },
  48. { title: '显示顺序', key: 'sort' },
  49. { title: '状态', key: 'status', value: item => item.status === '1' ? '停用' : '正常'},
  50. { title: '备注', key: 'remark' },
  51. { title: '更新时间', key: 'updateTime', value: item => timesTampChange(item.updateTime)},
  52. { title: t('common.actions'), key: 'actions' }
  53. ]
  54. const getList = async () => {
  55. const res = await getEnterprisePostPage(query.value)
  56. items.value = res.list
  57. total.value = res.total
  58. }
  59. getList()
  60. const handleChangePage = (e) => {
  61. query.value.pageNo = e
  62. getList()
  63. }
  64. const handleAdd = () => {
  65. router.push('/recruit/enterprise/systemManagement/postManagement/add')
  66. }
  67. const handleEdit = (item) => {
  68. if (!item.id) return
  69. router.push(`/recruit/enterprise/systemManagement/postManagement/edit?id=${item.id}`)
  70. }
  71. const handleDelete = ({ id }) => {
  72. Confirm(t('common.confirmTitle'), '是否确认删除此项内容?').then(async () => {
  73. await deleteEnterprisePost(id)
  74. Snackbar.success(t('common.delMsg'))
  75. getList()
  76. })
  77. }
  78. </script>
  79. <style scoped lang="scss">
  80. </style>