zhitong.yu
8 天以前 378d781e6f35f89652aa36e079a8b7fc44cea77e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<template>
  <div class="table-box">
    <!-- 根据布局模式渲染不同的组件 -->
 
    <ProTable ref="proTable" :columns="columns" :request-api="getTableList" :init-param="initParam">
      <!-- Expand -->
      <template #expand="scope">
        {{ scope.row }}
      </template>
      <template #Sign="scope">
        <span style="margin-left: 10px">
          <b>{{ t("heart.radarId") }} </b>
          <el-divider direction="vertical" border-style="dashed" />{{ scope.row.achorid }}
        </span>
      </template>
      <template #Context="scope">
        <el-tabs>
          <el-tab-pane :label="t('heart.radarInfo')">
            <p>{{ t("heart.boundDevice") }}:{{ scope.row.name }}</p>
            <p>{{ t("heart.distance") }}:{{ scope.row.fzdis }}</p>
            <p>{{ t("heart.cardNumber") }}:{{ scope.row.ccid }}</p>
            <!-- 基本信息字段 -->
          </el-tab-pane>
        </el-tabs>
      </template>
      <template #Footer="scope">
        <span>
          <b>{{ t("Config.time") }}:</b>{{ scope.row.addtime }}
        </span>
      </template>
      <!-- 表格操作 -->
    </ProTable>
 
    <UserDrawer ref="drawerRef" />
    <ImportExcel ref="dialogRef" />
  </div>
</template>
 
<script setup lang="tsx" name="useProTable">
import { ref, reactive } from "vue";
import { User } from "@/api/interface";
import {} from "@/hooks/useHandleData";
// import { ElMessage } from "element-plus";
import ProTable from "@/components/ProTable/card.vue";
import ImportExcel from "@/components/ImportExcel/index.vue";
import UserDrawer from "@/views/proTable/components/UserDrawer.vue";
import { ProTableInstance, ColumnProps } from "@/components/ProTable/interface";
import {} from "@element-plus/icons-vue";
import { getHeartList } from "@/api/modules/hxzk/statistics/heart";
import { useI18n } from "vue-i18n";
 
// 使用 useI18n 获取 i18n 实例
const { t } = useI18n({
  useScope: "global"
});
 
// ProTable 实例
const proTable = ref<ProTableInstance>();
 
// 如果表格需要初始化请求参数,直接定义传给 ProTable (之后每次请求都会自动带上该参数,此参数更改之后也会一直带上,改变此参数会自动刷新表格数据)
const initParam = reactive({ type: 1 });
const getTableList = (params: any) => {
  let newParams = JSON.parse(JSON.stringify(params));
 
  // 提取 tableList 对象
  const { pageSize, pageNum, name, tagid, ...restParams } = newParams;
  const tableList = { pageSize, pageNum };
 
  // 提取 person 对象
  const { ...restParams2 } = restParams;
  const heartRecord = { name, tagid };
 
  // 处理 createTime 字段
  if (restParams2.createTime) {
    restParams2.startTime = restParams2.createTime[0];
    restParams2.endTime = restParams2.createTime[1];
    delete restParams2.createTime;
  }
 
  // 合并所有参数
  const finalParams = {
    ...restParams2,
    tableList,
    heartRecord
  };
 
  return getHeartList(finalParams);
};
 
// 表格配置项
const columns = reactive<ColumnProps<User.ResUserList>[]>([
  { type: "index", fixed: "left", width: 70 },
  {
    prop: "tagid",
    label: t("Tag.tagId"),
    search: { el: "input", span: 3 }
  },
  {
    prop: "name",
    label: t("Person.name"),
    search: { el: "input", span: 3 }
  },
  {
    prop: "heart",
    label: t("heart.heartRate")
  },
  {
    prop: "okheart",
    label: t("heart.normalHeartRate")
  },
  {
    prop: "state",
    label: t("heart.heartRateStatus")
  },
  {
    prop: "time",
    label: t("Config.time")
  }
]);
 
// 打开 drawer(新增、查看、编辑)
const drawerRef = ref<InstanceType<typeof UserDrawer> | null>(null);
</script>