123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <script setup lang="ts">
- import {ElTable} from "element-plus";
- import {useCompRef} from "@/utils/useCompRef";
- import XEUtils from "xe-utils";
- import {Measurement} from "@/api/jian-yan-jie-kou/jian-yan-jie-kou";
- import {ref} from "vue";
- const props = defineProps<{
- height: number,
- name: string
- }>()
- const mainTableRef = useCompRef(ElTable)
- const data = ref([])
- const rowClassName = ({row}) => {
- if (row.critical_exec_flag === 1) {
- return 'critical_value'
- }
- return ''
- }
- const testRowClick = (row) => {
- let temp = mainTableRef.value.getSelectionRows()
- mainTableRef.value.toggleRowSelection(row, !temp.includes(row))
- }
- const result = (row) => {
- return `${row.itm_value}${row.itm_str_value}`
- }
- function getItemAlert(val, strValue, value) {
- if (strValue !== '' || value === '') return ''
- switch (val) {
- case 'L':
- return '<span style="color:#F56C6C;font-weight:bold">↓</span>'
- case 'H':
- return '<span style="color:#F56C6C;font-weight:bold">↑</span>'
- }
- return ''
- }
- function getItemStr(val, strValue, value) {
- if (strValue !== '' || value === '') return ''
- switch (val) {
- case 'L':
- return '↓'
- case 'H':
- return '↑'
- }
- return ''
- }
- function danger(item: Measurement): string {
- if (item.critical_exec_flag === 1) {
- return '危'
- }
- return ''
- }
- const selectedData = () => {
- const temp = mainTableRef.value.getSelectionRows() as Measurement[];
- let data = ''
- if (temp) {
- XEUtils.arrayEach(temp, (item: Measurement) => {
- data += `${item.itm_name}${danger(item)}:${result(item)} ${item.itm_unit} ${getItemStr(item.itm_alert, item.itm_str_value, item.itm_value)},`
- })
- }
- return {
- type: 'text',
- data: props.name + ":" + data
- }
- }
- const getSelectedStr = () => {
- const temp = mainTableRef.value.getSelectionRows() as Measurement[];
- let data = ''
- if (temp) {
- XEUtils.arrayEach(temp, (item: Measurement) => {
- data += `${item.itm_name}${danger(item)}:${result(item)} ${item.itm_unit} ${getItemStr(item.itm_alert, item.itm_str_value, item.itm_value)},`
- })
- }
- return data
- }
- const setData = (value) => {
- data.value = value.items
- }
- defineExpose({
- selectedData,
- setData,
- getSelectedStr
- })
- </script>
- <template>
- <el-table :data="data"
- :height="height"
- ref="mainTableRef"
- class="test_table"
- row-key="itm_id"
- :row-class-name="rowClassName"
- @row-click="testRowClick">
- <el-table-column type="selection" width="35"/>
- <el-table-column label="检验项目" prop="itm_name" width="450">
- <template #default="{row}">
- {{ row.itm_name }}
- <span v-if="row.critical_exec_flag === 1"
- style="color: red">危</span>
- </template>
- </el-table-column>
- <el-table-column label="结果">
- <template #default="{row}">
- {{ result(row) }}
- <div style="color: red">
- {{ row.critical_exec_info }}
- </div>
- </template>
- </el-table-column>
- <el-table-column label="单位" prop="itm_unit"/>
- <el-table-column label="说明" prop="itm_alert">
- <template #default="{row}">
- <span v-html="getItemAlert(row.itm_alert, row.itm_str_value, row.itm_value)"></span>
- </template>
- </el-table-column>
- <el-table-column label="参考值" prop="range"/>
- </el-table>
- </template>
- <style scoped lang="scss">
- </style>
|