projectItem.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <template>
  2. <div>
  3. <!-- 选择项目 -->
  4. <el-dialog
  5. title="选择项目"
  6. :visible.sync="showProjectItem"
  7. width="800px"
  8. append-to-body
  9. >
  10. <el-table
  11. @row-click="clickRow"
  12. ref="multipleTable"
  13. :data="poolList"
  14. @selection-change="handleSelectionChange"
  15. >
  16. <el-table-column type="selection" width="55" align="center" />
  17. <!-- <el-table-column label="主键id" align="center" prop="id" /> -->
  18. <el-table-column label="项目名称" align="center" prop="projectName" />
  19. <el-table-column
  20. label="渠道"
  21. align="center"
  22. prop="tProjectChannel.channelName"
  23. />
  24. <el-table-column
  25. label="所属组别"
  26. align="center"
  27. prop="tProjectChannel.channelGroup"
  28. >
  29. <template slot-scope="scope">
  30. <dict-tag
  31. :options="dict.type.project_group"
  32. :value="scope.row.tProjectChannel.channelGroup"
  33. />
  34. </template>
  35. </el-table-column>
  36. <!-- <el-table-column label="项目编号" align="center" prop="projectCode" /> -->
  37. <el-table-column label="投资负责人" align="center" prop="investHead" />
  38. <el-table-column label="项目阶段" align="center" prop="projectStage">
  39. <template slot-scope="scope">
  40. <dict-tag
  41. :options="dict.type.project_stage"
  42. :value="scope.row.projectStage"
  43. />
  44. </template>
  45. </el-table-column>
  46. <el-table-column label="项目状态" align="center" prop="projectState">
  47. <template slot-scope="scope">
  48. <dict-tag
  49. :options="dict.type.project_state"
  50. :value="scope.row.projectState"
  51. />
  52. </template>
  53. </el-table-column>
  54. </el-table>
  55. <pagination
  56. v-show="projectItemTotal > 0"
  57. :total="projectItemTotal"
  58. :page.sync="projectQueryParams.pageNum"
  59. :limit.sync="projectQueryParams.pageSize"
  60. @pagination="getList"
  61. />
  62. <div slot="footer" class="dialog-footer">
  63. <el-button type="primary" @click="submit" v-preventReClick>确 定</el-button>
  64. <el-button @click="cancel">取 消</el-button>
  65. </div>
  66. </el-dialog>
  67. </div>
  68. </template>
  69. <script>
  70. import { listPool } from "@/api/invest/pool";
  71. export default {
  72. props: {
  73. // showProjectItem: {
  74. // type: Boolean,
  75. // default: false,
  76. // },
  77. },
  78. dicts: ["project_group", "project_stage", "project_state"],
  79. data() {
  80. return {
  81. showProjectItem: false,
  82. // 总条数
  83. projectItemTotal: 0,
  84. poolList: [],
  85. projectQueryParams: {
  86. pageNum: 1,
  87. pageSize: 10,
  88. orderByColumn: "createTime",
  89. isAsc: "desc",
  90. },
  91. // 选中数组
  92. ids: [],
  93. idsName: [],
  94. // 非单个禁用
  95. single: true,
  96. // 非多个禁用
  97. multiple: true,
  98. };
  99. },
  100. mounted() {
  101. this.getList();
  102. },
  103. methods: {
  104. clickRow(row) {
  105. this.$refs.multipleTable.toggleRowSelection(row);
  106. },
  107. // 多选框选中数据
  108. handleSelectionChange(selection) {
  109. if (selection.length > 1) {
  110. this.$modal.msg("只能选择一个项目");
  111. this.$refs.multipleTable.clearSelection();
  112. return;
  113. }
  114. if (this.ids.length == 0) {
  115. this.ids = selection;
  116. } else {
  117. this.$modal.msg("只能选择一个项目");
  118. this.ids = [];
  119. // multipleTable与table的ref绑定的一样
  120. this.$refs.multipleTable.clearSelection();
  121. }
  122. },
  123. /** 查询项目池列表 */
  124. getList() {
  125. listPool(this.projectQueryParams).then((response) => {
  126. this.poolList = response.rows;
  127. this.projectItemTotal = response.total;
  128. });
  129. },
  130. submit() {
  131. // console.log("确定", this.ids);
  132. this.$emit("getProjectInfo", this.ids);
  133. this.showProjectItem = false;
  134. },
  135. cancel() {
  136. this.showProjectItem = false;
  137. },
  138. },
  139. };
  140. </script>