importIndex.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <script setup lang="ts">
  2. import { ref, reactive, computed } from "vue";
  3. import { ElMessageBox, ElMessage, ElTable } from "element-plus";
  4. import { Search } from "@element-plus/icons-vue";
  5. import { textSpanOverlapsWith } from "typescript";
  6. import { getStateData, getStateType } from "@/config/tag";
  7. const dialogVisibleAdd = ref(false);
  8. const handleClose = () => {
  9. ElMessageBox.confirm("确认关闭弹窗吗?")
  10. .then(() => {
  11. dialogVisibleAdd.value = !dialogVisibleAdd.value;
  12. ElMessage({
  13. message: "已关闭"
  14. });
  15. })
  16. .catch(() => {
  17. // catch error
  18. });
  19. };
  20. const tableData = [
  21. {
  22. date: "2016-05-04",
  23. name: "Aleyna Kutzner",
  24. address: "Lohrbergstr",
  25. index: 1
  26. },
  27. {
  28. date: "2016-05-03",
  29. name: "Helen Jacobi",
  30. address: "760 A St",
  31. index: 2
  32. },
  33. {
  34. date: "2016-05-02",
  35. name: "Brandon Deckert",
  36. address: "Arnold-O",
  37. index: 0
  38. },
  39. {
  40. date: "2016-05-01",
  41. name: "Margie Smith",
  42. address: "23618 ",
  43. index: 0
  44. }
  45. ];
  46. // 添加部门保存
  47. const saveDepartment = () => {
  48. ElMessageBox.confirm("不保存,更新的信息将会丢失", "需要保存吗?", {
  49. type: "warning"
  50. })
  51. .then(() => {
  52. dialogVisibleAdd.value = false;
  53. ElMessage({
  54. message: "已保存",
  55. type: "success"
  56. });
  57. })
  58. .catch(() => {
  59. // catch error
  60. });
  61. };
  62. const open = () => {
  63. dialogVisibleAdd.value = true;
  64. };
  65. // 选中
  66. const selectedNums = ref(0);
  67. const handleSelectionChange = selectedRows => {
  68. // this.selectedRows = selectedRows;
  69. selectedNums.value = selectedRows.length;
  70. console.log("选中的行:", selectedRows);
  71. };
  72. defineExpose({
  73. open
  74. });
  75. </script>
  76. <template>
  77. <div>
  78. <el-dialog
  79. v-model="dialogVisibleAdd"
  80. title="添加成员"
  81. width="600"
  82. :before-close="handleClose"
  83. >
  84. <div class="w-full flex justify-between items-center">
  85. <div><el-text>指标分类</el-text></div>
  86. <div><el-input placeholder="请输入" :prefix-icon="Search" /></div>
  87. </div>
  88. <el-table
  89. :data="tableData"
  90. style="width: 100%"
  91. @selection-change="handleSelectionChange"
  92. >
  93. <el-table-column type="selection" width="55" />
  94. <el-table-column label="指标名称">
  95. <template #default="scope">{{ scope.row.date }}</template>
  96. </el-table-column>
  97. <el-table-column property="name" label="指标分类" width="100" />
  98. <el-table-column
  99. property="address"
  100. label="状态"
  101. width="100"
  102. show-overflow-tooltip
  103. >
  104. <template #default="scope">
  105. <el-tag :type="getStateType(scope.row.index)">
  106. {{ getStateData(scope.row.index) }}
  107. </el-tag>
  108. </template>
  109. </el-table-column>
  110. <el-table-column property="address" label="数据来源" width="120" />
  111. </el-table>
  112. <div class="w-full flex justify-evenly items-center">
  113. <div class="mt-5"><el-text>共111项数据</el-text></div>
  114. <div class="ml-10">
  115. <el-pagination
  116. size="small"
  117. background
  118. layout="prev, pager, next"
  119. :total="50"
  120. class="mt-4"
  121. />
  122. </div>
  123. </div>
  124. <template #footer>
  125. <div class="dialog-footer w-full flex justify-between mt-4">
  126. <div>
  127. <el-text>已选择</el-text>
  128. <el-text type="primary">
  129. {{ selectedNums }}
  130. </el-text>
  131. <el-text>项</el-text>
  132. </div>
  133. <div>
  134. <el-button @click="handleClose">取消</el-button>
  135. <el-button type="primary" @click="saveDepartment"> 确认 </el-button>
  136. </div>
  137. </div>
  138. </template>
  139. </el-dialog>
  140. </div>
  141. </template>