index.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <template>
  2. <div class="padding-20">
  3. <div class="search-box">
  4. <el-form ref="form" :inline="true" :model="searchForm" clearable label-width="100px" class="mt-10">
  5. <el-form-item label="创建时间:">
  6. <el-date-picker
  7. :editable="false"
  8. v-model="time"
  9. @change="timearr => {timearr ? (searchForm.start_time = timearr[0] + ' 00:00:00', searchForm.end_time = timearr[1] + ' 23:59:59') : searchForm.start_time = searchForm.end_time = undefined}"
  10. type="daterange"
  11. value-format="yyyy-MM-dd"
  12. start-placeholder="开始时间"
  13. end-placeholder="结束时间"
  14. ></el-date-picker>
  15. </el-form-item>
  16. <el-form-item label="部门名称:">
  17. <el-input v-model="searchForm.department_name" placeholder="请输入部门名称" clearable></el-input>
  18. </el-form-item>
  19. <el-form-item class="ml-10">
  20. <el-button icon="el-icon-search" type="primary" @click="searchSubmit">查询</el-button>
  21. </el-form-item>
  22. <el-form-item class="ml-10">
  23. <el-button icon="el-icon-plus" type="primary" @click="add" v-permission="'department_list_add'">新增</el-button>
  24. </el-form-item>
  25. </el-form>
  26. </div>
  27. <el-table :data="tableData" stripe v-loading="tableLoading" fit class="marginT-10 order-table" border
  28. :max-height="vheight">
  29. <el-table-column label="部门ID" prop="id" width="80"></el-table-column>
  30. <el-table-column label="创建时间" prop="created_at"></el-table-column>
  31. <el-table-column label="部门名称" prop="department_name"></el-table-column>
  32. <el-table-column label="部门介绍" prop="department_desc"></el-table-column>
  33. <el-table-column label="所属项目" prop="department_project_name"></el-table-column>
  34. <el-table-column label="操作">
  35. <template slot-scope="scope">
  36. <el-button type="text" @click="edit(scope.row)" v-permission="'department_list_edit'">编辑</el-button>
  37. <el-button type="text" @click="del(scope.row)" v-permission="'department_list_del'">删除</el-button>
  38. </template>
  39. </el-table-column>
  40. </el-table>
  41. <el-pagination
  42. class="marginT-20"
  43. @size-change="handleSizeChange"
  44. @current-change="handleCurrentChange"
  45. :hide-on-single-page="true"
  46. :current-page="page"
  47. :page-size="page_size"
  48. :page-sizes="[10, 20, 100, 200, 300, 400]"
  49. background
  50. layout="total, sizes, prev, pager, next, jumper"
  51. :total="totalCount"/>
  52. <detail v-if="detailsDialog.show" v-model="detailsDialog.show" :exData="detailsDialog.exData"
  53. @success="init"></detail>
  54. </div>
  55. </template>
  56. <script>
  57. import page from '@/mixin/page'
  58. import detail from './details'
  59. export default {
  60. mixins: [page],
  61. components: {
  62. detail,
  63. },
  64. data () {
  65. return {
  66. detailsDialog: {
  67. show: false,
  68. exData: {}
  69. },
  70. time: [],
  71. searchForm: {},
  72. tableData: [],
  73. tableUrl: '/department/list'
  74. }
  75. },
  76. methods: {
  77. add () {
  78. this.detailsDialog.exData = {}
  79. this.detailsDialog.show = true
  80. },
  81. edit (row) {
  82. this.detailsDialog.exData = row
  83. this.detailsDialog.show = true
  84. },
  85. del (row) {
  86. this.$confirm('确定要删除吗', '确认', {
  87. confirmButtonText: '确定',
  88. cancelButtonText: '取消',
  89. type: 'warning'
  90. }).then(async () => {
  91. const data = await this.$fetch('/api/auth/department/del', { id: row.id })
  92. if (data.code === 200) {
  93. this.$message.success('删除成功')
  94. this.init()
  95. }
  96. }).catch(() => {})
  97. }
  98. },
  99. mounted () {
  100. this.init()
  101. },
  102. }
  103. </script>
  104. <style lang="scss" scoped>
  105. </style>