|
|
@@ -1,6 +1,9 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
透前准备
|
|
|
+ <a-button type="primary" @click="plusFn">
|
|
|
+ {{ countRef }}
|
|
|
+ </a-button>
|
|
|
<XTTab
|
|
|
type="illness"
|
|
|
:width="120"
|
|
|
@@ -11,12 +14,64 @@
|
|
|
<div class="mt-6" />
|
|
|
<XTTab type="illness11" :selected="tabSelected" :data="tabData1" @item-click="callTab" />
|
|
|
<div class="mt-6" />
|
|
|
+ <div class="mt-6" />
|
|
|
+ <XTTab type="illness11" :selected="tabSelected" :data="tabData2" @item-click="callTab" />
|
|
|
+ <div class="mt-6" />
|
|
|
<div class="m-6">
|
|
|
<BasicForm @register="registerForm" @field-value-change="filedChange" />
|
|
|
</div>
|
|
|
+ <div>
|
|
|
+ <BasicTable @register="registerTable">
|
|
|
+ <template #headerTop>
|
|
|
+ <span>headerTop</span>
|
|
|
+ </template>
|
|
|
+ <template #toolbar>
|
|
|
+ <span>toolbar</span>
|
|
|
+ </template>
|
|
|
+ </BasicTable>
|
|
|
+ </div>
|
|
|
<div>
|
|
|
<XTForm :form-data="formData" />
|
|
|
</div>
|
|
|
+ <div class="mx-6 my-2">
|
|
|
+ <ChartsCard
|
|
|
+ title="透前血压趋势"
|
|
|
+ :has-safe="true"
|
|
|
+ :colors="chartData.colors"
|
|
|
+ :safe-range="chartData.safeRange"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="mx-6 my-2">
|
|
|
+ <DescCard
|
|
|
+ id="1"
|
|
|
+ icon="icon-xt-add_default"
|
|
|
+ title="透析测量"
|
|
|
+ type="touxi"
|
|
|
+ :data="descData"
|
|
|
+ :right="descRight"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div class="mx-6 my-2">
|
|
|
+ <TimeLine :data="timeLineData" @hover="callHover">
|
|
|
+ <template #head>
|
|
|
+ <div class="timeline-outer" v-if="timeOuter">
|
|
|
+ <div
|
|
|
+ class="timeline-outer_item animate__animated animate__slideInLeft"
|
|
|
+ @click="handleAdd"
|
|
|
+ >AVF</div
|
|
|
+ >
|
|
|
+ <div class="timeline-outer_item animate__animated animate__slideInLeft">AVH</div>
|
|
|
+ <div class="timeline-outer_item animate__animated animate__slideInLeft">TCG</div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </TimeLine>
|
|
|
+ </div>
|
|
|
+ <div class="mx-6 my-2">
|
|
|
+ <List type="default" :data="listData" selected="0" />
|
|
|
+ </div>
|
|
|
+ <div class="mx-6 my-2">
|
|
|
+ <List type="attachment" :data="listData1" selected="0" :width="320" />
|
|
|
+ </div>
|
|
|
<div class="flex justify-between">
|
|
|
<XTCard class="m-2" :data="cardData1" @item-click="cellCard" />
|
|
|
</div>
|
|
|
@@ -33,9 +88,171 @@
|
|
|
import { XTForm } from '/@/components/XTForm/index';
|
|
|
import { ColorEnum } from '/@/enums/colorEnum';
|
|
|
import { BasicForm, useForm } from '/@/components/Form';
|
|
|
- import { dataFormSchema } from './data';
|
|
|
+ import { dataFormSchema, columns } from './data';
|
|
|
+ import { BasicTable, useTable } from '/@/components/Table';
|
|
|
+ import { onMounted } from 'vue';
|
|
|
+ import ChartsCard from '/@/components/XTCard/src/ChartsCard.vue';
|
|
|
+ import DescCard from '/@/components/XTCard/src/DescCard.vue';
|
|
|
+ import TimeLine from '/@/components/XTTimeLine/src/TimeLine.vue';
|
|
|
+ import List from '/@/components/XTList/src/List.vue';
|
|
|
+ import { TransitionPresets, useTransition } from '@vueuse/core';
|
|
|
|
|
|
const tabSelected = ref('0');
|
|
|
+ const dataSource = ref([]);
|
|
|
+ const chartData = {
|
|
|
+ colors: [
|
|
|
+ {
|
|
|
+ color: 'rgba(0, 117, 255, 1)',
|
|
|
+ label: '化验值',
|
|
|
+ dot: 'rgba(0, 117, 255, 1)',
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ safeRange: [
|
|
|
+ {
|
|
|
+ // name: '60分到80分',
|
|
|
+ yAxis: 0,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ yAxis: 20,
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ };
|
|
|
+ const listData = [
|
|
|
+ {
|
|
|
+ id: '0',
|
|
|
+ title: '红细胞笔迹测定',
|
|
|
+ startTime: '2023-11-11 12:00',
|
|
|
+ endTime: '2023-12-11 12:00',
|
|
|
+ status: 'default',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: '2',
|
|
|
+ title: '红细胞笔迹测定2',
|
|
|
+ startTime: '2023-11-11 12:00',
|
|
|
+ endTime: '2023-12-11 12:00',
|
|
|
+ status: 'default',
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ const listData1 = [
|
|
|
+ {
|
|
|
+ id: '0',
|
|
|
+ title: '红细胞笔迹测定',
|
|
|
+ startTime: '2023-11-11 12:00',
|
|
|
+ endTime: '2023-12-11 12:00',
|
|
|
+ status: 'default',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: '2',
|
|
|
+ title: '红细胞笔迹测定2',
|
|
|
+ startTime: '2023-11-11 12:00',
|
|
|
+ endTime: '2023-12-11 12:00',
|
|
|
+ status: 'default',
|
|
|
+ },
|
|
|
+ ];
|
|
|
+
|
|
|
+ const descData = [
|
|
|
+ {
|
|
|
+ label: '诊断名称/病史/状态',
|
|
|
+ value: '乙肝 / 2022-01-19 ~',
|
|
|
+ tags: [{ id: '12', label: '活动中', type: 'error' }],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '备注',
|
|
|
+ value: '药物治疗或其他治疗',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '测试',
|
|
|
+ value: '药物治疗或其他治疗',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '诊断名称/病史/状态备份',
|
|
|
+ value: '结核 / 2022-02-10 ~ 20',
|
|
|
+ tags: [
|
|
|
+ { id: '1', label: '未活动', type: 'muted' },
|
|
|
+ { id: '2', label: '未活动1', type: 'primary' },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ const descRight = {
|
|
|
+ show: true,
|
|
|
+ date: '2023-04-23',
|
|
|
+ doctor: '张医生',
|
|
|
+ edit: true,
|
|
|
+ delete: true,
|
|
|
+ };
|
|
|
+
|
|
|
+ const timeLineData = [
|
|
|
+ {
|
|
|
+ id: '1',
|
|
|
+ dot: '王医生',
|
|
|
+ date: '2023-05-20',
|
|
|
+ cnt: {
|
|
|
+ title: '测试' + Math.round(Math.random() * 1000),
|
|
|
+ id: '123',
|
|
|
+ type: '123',
|
|
|
+ data: descData,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: '12',
|
|
|
+ dot: '范医生',
|
|
|
+ date: '2023-03-20',
|
|
|
+ cnt: {
|
|
|
+ title: '测试' + Math.round(Math.random() * 1000),
|
|
|
+ id: '123',
|
|
|
+ type: '123',
|
|
|
+ data: descData,
|
|
|
+ },
|
|
|
+ },
|
|
|
+ ];
|
|
|
+ const timeOuter = ref(false);
|
|
|
+ onMounted(() => {
|
|
|
+ for (let i = 0; i < 10; i++) {
|
|
|
+ const obj = {
|
|
|
+ createTime: '2023-05-23 10:09:48',
|
|
|
+ updateTime: '2023-05-23 19:00:32',
|
|
|
+ id: '1660830352886149125' + Math.round(Math.random() * 10000),
|
|
|
+ name: '驼人',
|
|
|
+ packageId: '1655202440997244930',
|
|
|
+ packageName: '测试套餐',
|
|
|
+ username: 'tuoren',
|
|
|
+ type: 'custom',
|
|
|
+ contractUser: 'Lf',
|
|
|
+ contactMobile: '18339543638',
|
|
|
+ remark: null,
|
|
|
+ disable: 0,
|
|
|
+ };
|
|
|
+ dataSource.value.push(obj);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ const count = ref(0);
|
|
|
+ const countRef = useTransition(count, {
|
|
|
+ duration: 1000,
|
|
|
+ transition: TransitionPresets.easeInCirc,
|
|
|
+ });
|
|
|
+ function plusFn() {
|
|
|
+ count.value = Math.round(Math.random() * 100);
|
|
|
+ }
|
|
|
+ // const [registerTable, { reload, getCacheColumns, setColumns }] = useTable({
|
|
|
+ const [registerTable] = useTable({
|
|
|
+ id: 'sys_config',
|
|
|
+ title: '参数列表2121',
|
|
|
+ columns,
|
|
|
+ dataSource: dataSource,
|
|
|
+ useSearchForm: false,
|
|
|
+ titleStyle: {
|
|
|
+ fontSize: '14px',
|
|
|
+ color: '#000a18',
|
|
|
+ cursor: 'default',
|
|
|
+ },
|
|
|
+ titleLined: true,
|
|
|
+ bordered: false,
|
|
|
+ showIndexColumn: false,
|
|
|
+ pagination: false,
|
|
|
+ // maxHeight: 350,
|
|
|
+ canResize: true,
|
|
|
+ });
|
|
|
+
|
|
|
const [registerForm] = useForm({
|
|
|
layout: 'vertical',
|
|
|
labelWidth: '100%',
|
|
|
@@ -84,6 +301,21 @@
|
|
|
hasBracket: true,
|
|
|
},
|
|
|
];
|
|
|
+ const tabData2 = [
|
|
|
+ {
|
|
|
+ key: '0',
|
|
|
+ label: 'A1',
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: '1',
|
|
|
+ label: 'A2',
|
|
|
+ disabled: true,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ key: '2',
|
|
|
+ label: 'B3',
|
|
|
+ },
|
|
|
+ ];
|
|
|
const tabData1 = [
|
|
|
{
|
|
|
key: '0',
|
|
|
@@ -102,6 +334,7 @@
|
|
|
const formData = [
|
|
|
{
|
|
|
name: 'text',
|
|
|
+ label: '全部',
|
|
|
componentType: 'Select',
|
|
|
placeholder: '请选择',
|
|
|
width: 80,
|
|
|
@@ -120,6 +353,7 @@
|
|
|
placeholder: '请选择',
|
|
|
width: 120,
|
|
|
defaultValue: '1',
|
|
|
+ label: '班次',
|
|
|
dicts: [
|
|
|
{ label: '第一班', value: '1' },
|
|
|
{ label: '第二班', value: '2' },
|
|
|
@@ -139,6 +373,10 @@
|
|
|
format: 'YYYY-MM-DD',
|
|
|
valueFormat: 'YYYY-MM-DD',
|
|
|
},
|
|
|
+ {
|
|
|
+ name: 'filter',
|
|
|
+ componentType: 'IconBtn',
|
|
|
+ },
|
|
|
];
|
|
|
// card 标签组
|
|
|
const cardData = [
|
|
|
@@ -261,6 +499,10 @@
|
|
|
],
|
|
|
},
|
|
|
];
|
|
|
+
|
|
|
+ function handleAdd() {
|
|
|
+ timeOuter.value = false;
|
|
|
+ }
|
|
|
// 回调
|
|
|
function callTab(data) {
|
|
|
console.log('🚀 ~ file: index.vue:41 ~ callTab ~ data:', data);
|
|
|
@@ -270,10 +512,31 @@
|
|
|
function cellCard(data) {
|
|
|
console.log('🚀 ~ file: index.vue:106 ~ cellCard ~ data:', data);
|
|
|
}
|
|
|
+
|
|
|
+ function callHover() {
|
|
|
+ timeOuter.value = true;
|
|
|
+ }
|
|
|
</script>
|
|
|
|
|
|
<style lang="less" scoped>
|
|
|
::v-deep(.ant-form-item-label > label) {
|
|
|
width: 100% !important;
|
|
|
}
|
|
|
+
|
|
|
+ .timeline-outer {
|
|
|
+ display: flex;
|
|
|
+ margin-left: 20px;
|
|
|
+ transition: all 0.3s ease-in-out;
|
|
|
+
|
|
|
+ &_item {
|
|
|
+ padding: 0 30px;
|
|
|
+ height: 40px;
|
|
|
+ line-height: 40px;
|
|
|
+ border-radius: 30px;
|
|
|
+ color: #fff;
|
|
|
+ background: #0075ff;
|
|
|
+ margin-right: 20px;
|
|
|
+ cursor: pointer;
|
|
|
+ }
|
|
|
+ }
|
|
|
</style>
|