index.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <template>
  2. <div class="table-box">
  3. <div class="card table-search">
  4. <el-form :model="formInline" label-width="120">
  5. <el-row :gutter="10">
  6. <el-col :span="10">
  7. <el-form-item label="用例名称">
  8. <el-input v-model="formInline.user" placeholder="请输入用例名称" clearable />
  9. </el-form-item>
  10. </el-col>
  11. <el-col :span="10">
  12. <el-form-item label="用例类型">
  13. <el-select v-model="formInline.region" placeholder="请选择类型" clearable>
  14. <el-option label="故障注入" value="1" />
  15. <el-option label="普通测试" value="2" />
  16. </el-select>
  17. </el-form-item>
  18. </el-col>
  19. <el-col :span="4">
  20. <el-form-item>
  21. <el-button type="primary" @click="onSubmit">查询</el-button>
  22. </el-form-item>
  23. </el-col>
  24. </el-row>
  25. </el-form>
  26. </div>
  27. <div class="table-card table-main">
  28. <div class="table-header">
  29. <div class="header-button-lf">
  30. <el-button type="primary" icon="CirclePlus" @click="openDialog('新增')"> 新增 </el-button>
  31. <el-button type="danger" icon="Delete" plain> 删除 </el-button>
  32. </div>
  33. </div>
  34. <el-table :data="tableData" border ref="tableRef" show-overflow-tooltip>
  35. <el-table-column type="index" label="序号" width="60" />
  36. <el-table-column prop="id" label="用例编号" width="300" />
  37. <el-table-column prop="name" label="用例名称" width="180" />
  38. <el-table-column prop="type" label="用例类型" width="180" />
  39. <el-table-column fixed="right" label="操作" min-width="120">
  40. <template #default="{ row }">
  41. <el-button link type="primary" size="small" @click="openDialog('编辑', row)"
  42. >详情
  43. </el-button>
  44. <el-button link type="primary" size="small" @click="detail(row)">流程查看</el-button>
  45. <el-button link type="primary" size="small" @click="designFlow(row)">
  46. 流程设计
  47. </el-button>
  48. <el-button link type="primary" size="small" @click="openDialog('编辑', row)"
  49. >编辑</el-button
  50. >
  51. </template>
  52. </el-table-column>
  53. </el-table>
  54. <!-- <div> -->
  55. <!-- 分页组件 -->
  56. <el-pagination
  57. :background="true"
  58. :current-page="pageable.pageNum"
  59. :page-size="pageable.pageSize"
  60. :page-sizes="[10, 25, 50, 100]"
  61. :total="pageable.total"
  62. layout="total, sizes, prev, pager, next, jumper"
  63. @size-change="handleSizeChange"
  64. @current-change="handleCurrentChange" />
  65. </div>
  66. <!-- </div> -->
  67. <AddDialog ref="dialogRef" />
  68. </div>
  69. </template>
  70. <script setup lang="ts">
  71. import { CaseVO } from '@/api/interface/case'
  72. import AddDialog from './components/index.vue'
  73. import data from '../data'
  74. const router = useRouter()
  75. const tableRef = ref()
  76. const pageable = {
  77. // 当前页数
  78. pageNum: 1,
  79. // 每页显示条数
  80. pageSize: 10,
  81. // 总条数
  82. total: 0
  83. }
  84. const formInline = reactive({
  85. user: '',
  86. region: '',
  87. date: ''
  88. })
  89. /**
  90. * @description 每页条数改变
  91. * @param {Number} val 当前条数
  92. * @return void
  93. * */
  94. const handleSizeChange = (_val: number) => {}
  95. /**
  96. * @description 当前页改变
  97. * @param {Number} val 当前页
  98. * @return void
  99. * */
  100. const handleCurrentChange = (_val: number) => {}
  101. const onSubmit = () => {
  102. console.log('submit!')
  103. }
  104. const tableData: CaseVO[] = data.list
  105. // 打开 dialog(新增、查看、编辑)
  106. const dialogRef = ref<InstanceType<typeof AddDialog> | null>(null)
  107. const openDialog = (title: string, row: Partial<CaseVO> = {}) => {
  108. const params = {
  109. title,
  110. row: { ...row },
  111. isView: title === '查看'
  112. }
  113. dialogRef.value?.acceptParams(params)
  114. }
  115. const designFlow = (row: Partial<CaseVO> = {}) => {
  116. router.push(`/flow/${row.id}`)
  117. }
  118. const detail = (row: Partial<CaseVO> = {}) => {
  119. router.push(`/detail/${row.id}`)
  120. }
  121. </script>
  122. <style lang="scss" scoped></style>