link.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <template>
  2. <el-dialog v-model="state.showDialog" destroy-on-close :title="title" draggable :close-on-click-modal="false"
  3. :close-on-press-escape="false" width="769px">
  4. <div class="my-layout">
  5. <el-card class="mt8" shadow="never" :body-style="{ paddingBottom: '0' }">
  6. <el-form :inline="true" @submit.stop.prevent>
  7. <el-form-item>
  8. <!-- <el-select lable="选择项目" v-model="state.filter.projectId" value-key="id" clearable >
  9. <el-option v-for="item in state.uploadProjectList" :key="item.id" :label="item.name" :value="item.id" ></el-option>
  10. </el-select> -->
  11. </el-form-item>
  12. <el-form-item label="推广码来源">
  13. <el-input v-model="state.filter.keywords" placeholder="请输入推广码来源" />
  14. </el-form-item>
  15. <el-form-item>
  16. <el-button type="primary" icon="ele-Search" @click="onQuery"> 查询 </el-button>
  17. </el-form-item>
  18. </el-form>
  19. </el-card>
  20. <el-card class="my-fill mt8" shadow="never">
  21. <el-table v-loading="state.loading" :data="state.projectLinkListData" row-key="id" height="'100%'" style="width: 100%; height: 100%">
  22. <el-table-column label="项目名称" prop="projectName" min-width="120" show-overflow-tooltip/>
  23. <el-table-column label="推广码来源" prop="company" min-width="120" show-overflow-tooltip/>
  24. <el-table-column label="推广码数量(已使用/总数" prop="projectName" min-width="120" show-overflow-tooltip>
  25. <template #default="{ row }">
  26. {{ row.useCount }}/{{ row.count }}
  27. </template>
  28. </el-table-column>
  29. <el-table-column label="操作" width="180" header-align="center" align="center" fixed="right">
  30. <!-- <template #default="{ row }">
  31. <el-button size="small" text type="primary" @click="onEdit(row)">查看明细</el-button>
  32. <el-button size="small" text type="primary" @click="onEdit(row)">补充推广码</el-button>
  33. </template> -->
  34. </el-table-column>
  35. </el-table>
  36. </el-card>
  37. </div>
  38. <template #footer>
  39. <span class="dialog-footer">
  40. <el-button @click="onCancel" size="default">关 闭</el-button>
  41. </span>
  42. </template>
  43. </el-dialog>
  44. </template>
  45. <script lang="ts" setup name="admin/projectlink/link">
  46. import { reactive } from 'vue'
  47. import { PageInputProjectLinkGetPageDto, ProjectLinkListOutput } from '/@/api/admin/data-contracts'
  48. import { ProjectLinkApi } from '/@/api/admin/ProjectLink'
  49. // import eventBus from '/@/utils/mitt'
  50. defineProps({
  51. title: {
  52. type: String,
  53. default: '',
  54. },
  55. })
  56. const state = reactive({
  57. showDialog: false,
  58. loading:false,
  59. projectName:"",
  60. filter: {
  61. projectId: 0,
  62. isUse: 0,
  63. tenantId: 0,
  64. keywords: ''
  65. }, pageInput: {
  66. currentPage: 1,
  67. pageSize: 20,
  68. } as PageInputProjectLinkGetPageDto,
  69. total: 0,
  70. projectLinkListData: [] as Array<ProjectLinkListOutput>,
  71. })
  72. // const { from } = toRefs(state)
  73. // 打开对话框
  74. const open = async (row: any = {}) => {
  75. state.showDialog = true;
  76. // console.log("aaaaa");
  77. state.filter.projectId = row.id;
  78. state.projectName = row.projectName;
  79. onQuery();
  80. }
  81. //查询
  82. const onQuery = async () => {
  83. state.loading = true
  84. state.pageInput.filter = state.filter
  85. const res = await new ProjectLinkApi().getPage(state.pageInput).catch(() => {
  86. state.loading = false
  87. })
  88. state.projectLinkListData = res?.data?.list ?? []
  89. state.total = res?.data?.total ?? 0
  90. state.loading = false
  91. }
  92. // 取消
  93. const onCancel = () => {
  94. state.showDialog = false
  95. }
  96. defineExpose({
  97. open,
  98. })
  99. </script>