detail.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. <template>
  2. <div class="system-edit-dic-container">
  3. <el-dialog title="数据记录" v-model="isShowDialog" width="75%">
  4. <el-table :data="tableData.data" style="width: 100%" @selection-change="handleSelectionChange">
  5. <el-table-column v-for="(item, index) in jData" :key="item" :label="item" :prop="item" show-overflow-tooltip align="center">
  6. </el-table-column>
  7. </el-table>
  8. <pagination
  9. v-show="tableData.total > 0"
  10. :total="tableData.total"
  11. v-model:page="tableData.param.pageNum"
  12. v-model:limit="tableData.param.pageSize"
  13. @pagination="typeList"
  14. />
  15. </el-dialog>
  16. </div>
  17. </template>
  18. <script lang="ts">
  19. import { reactive, toRefs, defineComponent, ref, unref } from 'vue';
  20. import api from '/@/api/datahub';
  21. import { ElMessage } from 'element-plus';
  22. interface DicState {
  23. isShowDialog: boolean;
  24. }
  25. // 定义接口来定义对象的类型
  26. interface TableDataRow {
  27. id: number;
  28. name: string;
  29. key: string;
  30. createBy: string;
  31. }
  32. interface TableDataState {
  33. ids: number[];
  34. tableData: {
  35. data: Array<TableDataRow>;
  36. total: number;
  37. loading: boolean;
  38. param: {
  39. pageNum: number;
  40. pageSize: number;
  41. id: number;
  42. };
  43. };
  44. }
  45. export default defineComponent({
  46. name: 'deviceEditPro',
  47. setup(prop, { emit }) {
  48. const formRef = ref<HTMLElement | null>(null);
  49. const state = reactive<DicState>({
  50. isShowDialog: false,
  51. jsonsData: [],
  52. jData: [],
  53. tableData: {
  54. data: [],
  55. total: 0,
  56. loading: false,
  57. param: {
  58. pageNum: 1,
  59. pageSize: 10,
  60. id: 0,
  61. },
  62. },
  63. });
  64. // 打开弹窗
  65. const openDialog = (row: RuleFormState | null) => {
  66. resetForm();
  67. if (row) {
  68. state.tableData.param.id = row.id;
  69. typeList();
  70. }
  71. state.isShowDialog = true;
  72. };
  73. const typeList = () => {
  74. console.log(state.tableData.param);
  75. api.template.getdata(state.tableData.param).then((res: any) => {
  76. const jsonData = JSON.parse(res.data);
  77. state.tableData.data = jsonData;
  78. state.jData = Object.keys(jsonData[0]);
  79. console.log(jsonData);
  80. state.jData.forEach((item, index) => {
  81. state.jsonsData[index] = jsonData[item];
  82. });
  83. state.tableData.total = res.Total;
  84. //state.ruleForm = res.data.dictType
  85. });
  86. };
  87. const resetForm = () => {
  88. state.jsonsData = [];
  89. state.jData = [];
  90. state.tableData= {
  91. data: [],
  92. total: 0,
  93. loading: false,
  94. param: {
  95. pageNum: 1,
  96. pageSize: 10,
  97. },
  98. }
  99. };
  100. // 关闭弹窗
  101. const closeDialog = () => {
  102. state.isShowDialog = false;
  103. };
  104. // 取消
  105. const onCancel = () => {
  106. closeDialog();
  107. };
  108. return {
  109. typeList,
  110. openDialog,
  111. closeDialog,
  112. onCancel,
  113. formRef,
  114. ...toRefs(state),
  115. };
  116. },
  117. });
  118. </script>