瀏覽代碼

fix: 更新组件

fan 2 年之前
父節點
當前提交
3ebb77896a

+ 19 - 3
src/components/Drawer/src/BasicDrawer.vue

@@ -1,7 +1,12 @@
 <template>
   <Drawer :class="prefixCls" @close="onClose" v-bind="getBindValues">
     <template #title v-if="!$slots.title">
-      <DrawerHeader :title="getMergeProps.title" :isDetail="isDetail" :showDetailBack="showDetailBack" @close="onClose">
+      <DrawerHeader
+        :title="getMergeProps.title"
+        :isDetail="isDetail"
+        :showDetailBack="showDetailBack"
+        @close="onClose"
+      >
         <template #titleToolbar>
           <slot name="titleToolbar" />
         </template>
@@ -28,7 +33,16 @@
 <script lang="ts">
   import type { DrawerInstance, DrawerProps } from './typing';
   import type { CSSProperties } from 'vue';
-  import { defineComponent, ref, computed, watch, unref, nextTick, toRaw, getCurrentInstance } from 'vue';
+  import {
+    defineComponent,
+    ref,
+    computed,
+    watch,
+    unref,
+    nextTick,
+    toRaw,
+    getCurrentInstance,
+  } from 'vue';
   import { Drawer } from 'ant-design-vue';
   import { isFunction, isNumber } from '/@/utils/is';
   import { deepMerge } from '/@/utils';
@@ -100,7 +114,9 @@
       const getFooterHeight = computed(() => {
         const { footerHeight, showFooter } = unref(getProps);
         if (showFooter && footerHeight) {
-          return isNumber(footerHeight) ? `${footerHeight}px` : `${footerHeight.replace('px', '')}px`;
+          return isNumber(footerHeight)
+            ? `${footerHeight}px`
+            : `${footerHeight.replace('px', '')}px`;
         }
         return `0px`;
       });

+ 10 - 1
src/components/Drawer/src/useDrawer.ts

@@ -5,7 +5,16 @@ import type {
   DrawerProps,
   UseDrawerInnerReturnType,
 } from './typing';
-import { ref, getCurrentInstance, unref, reactive, watchEffect, nextTick, toRaw, computed } from 'vue';
+import {
+  ref,
+  getCurrentInstance,
+  unref,
+  reactive,
+  watchEffect,
+  nextTick,
+  toRaw,
+  computed,
+} from 'vue';
 import { isProdMode } from '/@/utils/env';
 import { isFunction } from '/@/utils/is';
 import { tryOnUnmounted } from '@vueuse/core';

+ 4 - 12
src/components/Form/src/components/ApiInputDict.vue

@@ -2,7 +2,7 @@
   <div class="flex items-center">
     <a-input-group compact>
       <template v-if="props.params?.dictSort">
-        <a-form-item class="select">
+        <a-form-item class="select" :style="{ width: '24%' }">
           <a-select
             v-model:value="dictValue"
             :options="dictData"
@@ -10,15 +10,15 @@
             style="width: 100%"
           />
         </a-form-item>
-        <a-form-item class="input">
+        <a-form-item class="input" :style="{ width: '76%' }">
           <a-input v-model:value="inputValue" @change="handleInputChange" style="width: 100%" />
         </a-form-item>
       </template>
       <template v-else>
-        <a-form-item class="input">
+        <a-form-item class="input" :style="{ width: '76%' }">
           <a-input v-model:value="inputValue" @change="handleInputChange" style="width: 100%" />
         </a-form-item>
-        <a-form-item class="select">
+        <a-form-item class="select" :style="{ width: '24%' }">
           <a-select
             v-model:value="dictValue"
             :options="dictData"
@@ -163,12 +163,4 @@
   .fan-basic-form .ant-form-item {
     border: 0;
   }
-
-  .select {
-    width: 20%;
-  }
-
-  .input {
-    width: 80%;
-  }
 </style>

+ 16 - 2
src/components/Modal/src/BasicModal.vue

@@ -10,7 +10,11 @@
     </template>
 
     <template #title v-if="!$slots.title">
-      <ModalHeader :helpMessage="getProps.helpMessage" :title="getMergeProps.title" @dblclick="handleTitleDbClick" />
+      <ModalHeader
+        :helpMessage="getProps.helpMessage"
+        :title="getMergeProps.title"
+        @dblclick="handleTitleDbClick"
+      />
     </template>
 
     <template #footer v-if="!$slots.footer">
@@ -47,7 +51,17 @@
 <script lang="ts">
   import type { ModalProps, ModalMethods } from './typing';
 
-  import { defineComponent, computed, ref, watch, unref, watchEffect, toRef, getCurrentInstance, nextTick } from 'vue';
+  import {
+    defineComponent,
+    computed,
+    ref,
+    watch,
+    unref,
+    watchEffect,
+    toRef,
+    getCurrentInstance,
+    nextTick,
+  } from 'vue';
   import Modal from './components/Modal';
   import ModalWrapper from './components/ModalWrapper.vue';
   import ModalClose from './components/ModalClose.vue';

+ 1 - 1
src/components/Modal/src/components/ModalHeader.vue

@@ -1,5 +1,5 @@
 <template>
-  <BasicTitle :helpMessage="helpMessage">
+  <BasicTitle :helpMessage="helpMessage" class="!font-semibold">
     {{ title }}
   </BasicTitle>
 </template>

+ 18 - 3
src/components/Modal/src/components/ModalWrapper.vue

@@ -7,7 +7,17 @@
 </template>
 <script lang="ts">
   import type { CSSProperties } from 'vue';
-  import { defineComponent, computed, ref, watchEffect, unref, watch, onMounted, nextTick, onUnmounted } from 'vue';
+  import {
+    defineComponent,
+    computed,
+    ref,
+    watchEffect,
+    unref,
+    watch,
+    onMounted,
+    nextTick,
+    onUnmounted,
+  } from 'vue';
   import { useWindowSizeFn } from '/@/hooks/event/useWindowSizeFn';
   import { ScrollContainer } from '/@/components/Container';
   import { createModalContext } from '../hooks/useModalContext';
@@ -138,9 +148,14 @@
           // }
 
           if (props.fullScreen) {
-            realHeightRef.value = window.innerHeight - props.modalFooterHeight - props.modalHeaderHeight - 28;
+            realHeightRef.value =
+              window.innerHeight - props.modalFooterHeight - props.modalHeaderHeight - 28;
           } else {
-            realHeightRef.value = props.height ? props.height : realHeight > maxHeight ? maxHeight : realHeight;
+            realHeightRef.value = props.height
+              ? props.height
+              : realHeight > maxHeight
+              ? maxHeight
+              : realHeight;
           }
           emit('height-change', unref(realHeightRef));
         } catch (error) {

+ 2 - 0
src/components/Modal/src/index.less

@@ -51,10 +51,12 @@
 
   &-header {
     padding: 16px;
+    border-radius: 4px 4px 0 0;
   }
 
   &-content {
     box-shadow: 0 4px 8px 0 rgb(0 0 0 / 20%), 0 6px 20px 0 rgb(0 0 0 / 19%);
+    border-radius: 4px;
   }
 
   &-footer {

+ 7 - 0
src/components/Table/src/components/editable/EditableCell.vue

@@ -530,5 +530,12 @@
         display: inline-block;
       }
     }
+
+    .ant-select:not(.ant-select-customize-input) .ant-select-selector,
+    .ant-input,
+    .ant-picker {
+      border: 0;
+      border-bottom: 1px solid #d9d9d9;
+    }
   }
 </style>

+ 2 - 0
src/components/XTCard/index.ts

@@ -1 +1,3 @@
 export { default as XTCard } from './src/XTCard.vue';
+export { default as DescCard } from './src/DescCard.vue';
+export { default as DescMultiCard } from './src/DescMultiCard.vue';

+ 36 - 18
src/components/XTCard/src/DescCard.vue

@@ -2,28 +2,34 @@
   <div class="card">
     <div class="card-head">
       <div class="card-head_label"> {{ title }}</div>
-      <div class="card-head_value">
-        <i :class="['iconfont', icon]" v-if="icon" @click="handleIcon" />
+      <div class="flex card-head_value">
         <slot name="headRight" />
+        <i :class="['iconfont', icon]" v-if="icon" @click="handleIcon" />
       </div>
     </div>
     <Row class="card-body" v-if="data.length">
       <Col class="card-body_left" :span="right.show ? 20 : 24">
         <Row>
           <Col
-            :span="item.span || wrapSpan"
+            :span="item?.span || wrapSpan"
             class="card-body-item"
             v-for="item in data"
             :key="item.label"
+            :style="{ display: item.hidden ? 'none' : 'block' }"
           >
             <div class="card-body-item_label" v-if="item.label">{{ item.label }}</div>
-            <div class="card-body-item_value" v-if="item.value">
-              <div>{{ item.value }}</div>
-              <div v-if="item.tags" class="flex">
+            <div class="card-body-item_value">
+              <div v-if="item.value">{{ item.value }}</div>
+              <div v-if="item.tags" class="flex ml-3">
                 <div
                   v-for="t in item.tags"
                   :key="t.id"
-                  :class="['card-body-item_tag', 'card-body-item_tag--' + t.type]"
+                  :class="['card-body-item_tag', t.type ? 'card-body-item_tag--' + t.type : '']"
+                  :style="{
+                    color: t.fontColor,
+                    backgroundColor: t.bgColor,
+                  }"
+                  :title="t.label"
                 >
                   {{ t.label }}
                 </div>
@@ -58,7 +64,7 @@
     // 标题
     title: string;
     // icon
-    icon?: string;
+    icon?: string | unknown;
     iconType?: string;
     // 每行宽度
     wrapSpan?: number;
@@ -73,17 +79,23 @@
     };
     // 数据集
     data: Array<{
-      label?: string;
+      filed?: string;
+      label: string;
       value?: string;
-      span?: number;
+      span?: number | unknown;
+      dict?: boolean | unknown;
+      dictName?: string | unknown;
+      dictField?: string | unknown;
+      hidden?: boolean | unknown;
       tags?:
         | Array<{
             id: string;
             label: string;
             type: string | 'warning' | 'error' | 'success' | 'primary' | 'muted';
+            fontColor: string;
+            bgColor: string;
           }>
-        | undefined
-        | null;
+        | unknown;
     }>;
   }
   const props = withDefaults(defineProps<Props>(), {
@@ -104,19 +116,16 @@
 
   function handleEdit() {
     const info = { id: props.id, type: props.type, action: 'edit' };
-    console.log('🚀 ~ file: DescCard.vue:100 ~ handleEdit ~ info:', info);
     emit('edit', info);
   }
   function handleDel() {
     const info = { id: props.id, type: props.type, action: 'delete' };
     emit('delete', info);
-    console.log('🚀 ~ file: DescCard.vue:105 ~ handleDel ~ info:', info);
   }
 
   function handleIcon() {
     const info = { id: props.id, type: props.type, action: props.iconType || 'icon' };
     emit('icon', info);
-    console.log('🚀 ~ file: DescCard.vue:113 ~ handleIcon ~ info:', info);
   }
 </script>
 
@@ -168,7 +177,7 @@
     &-body {
       display: flex;
       align-items: center;
-      padding: 20px;
+      padding: 20px 20px 0;
 
       &_right {
         display: flex;
@@ -178,7 +187,7 @@
         color: #818694;
 
         &-btn {
-          margin-right: 16px;
+          // margin-right: 16px;
           color: #3d4155;
           background: #f4f6f9;
           border-radius: 50%;
@@ -191,6 +200,7 @@
 
           &:last-child {
             margin: 0;
+            margin-left: 16px;
           }
 
           &:hover {
@@ -202,6 +212,7 @@
       &-item {
         display: flex;
         flex-direction: column;
+        margin-bottom: 30px;
 
         &_label {
           font-size: 12px;
@@ -221,8 +232,15 @@
           height: 20px;
           border-radius: 12px;
           padding: 1px 10px;
-          margin: 0 8px;
+          margin: 0 4px;
           white-space: nowrap;
+          max-width: 200px;
+          overflow: hidden;
+          text-overflow: ellipsis;
+
+          &:first-child {
+            margin-left: 0;
+          }
 
           &:last-child {
             margin-right: 0;

+ 289 - 0
src/components/XTCard/src/DescMultiCard.vue

@@ -0,0 +1,289 @@
+<template>
+  <div class="card">
+    <div class="card-head">
+      <div class="card-head_label"> {{ title }}</div>
+      <div class="flex card-head_value">
+        <slot name="headRight" />
+        <i :class="['iconfont', icon]" v-if="icon" @click="handleIcon" />
+      </div>
+    </div>
+    <Row class="card-body" v-if="data.length">
+      <Row
+        v-for="item in data"
+        :key="item.id"
+        :class="['w-full', data.length > 1 ? 'card-body-list' : '']"
+      >
+        <Col class="card-body_left" :span="item.right.show ? 20 : 24">
+          <Row class="w-full">
+            <Col
+              :span="cItem?.span || wrapSpan"
+              class="card-body-item"
+              v-for="cItem in item.data"
+              :key="cItem.label"
+              :style="{ display: cItem.hidden ? 'none' : 'block' }"
+            >
+              <div class="card-body-item_label" v-if="cItem.label">{{ cItem.label }}</div>
+              <div class="card-body-item_value">
+                <div v-if="cItem.value">{{ cItem.value }}</div>
+                <div v-if="cItem.tags" class="flex ml-3">
+                  <div
+                    v-for="t in cItem.tags"
+                    :key="t.id"
+                    :class="['card-body-item_tag', t.type ? 'card-body-item_tag--' + t.type : '']"
+                    :style="{
+                      color: t.fontColor,
+                      backgroundColor: t.bgColor,
+                    }"
+                    :title="t.label"
+                  >
+                    {{ t.label }}
+                  </div>
+                </div>
+                <div>
+                  <slot name="tags" />
+                </div>
+              </div>
+            </Col>
+          </Row>
+        </Col>
+        <Col class="card-body_right" v-if="item.right.show" span="4">
+          <div>{{ item.right.date ? item.right.date + '/' : '' }} {{ item.right.doctor }}</div>
+          <div class="flex">
+            <div v-if="item.right.edit" class="card-body_right-btn" @click="handleEdit(item)">
+              <i class="iconfont icon-xt-details_edit_default" />
+            </div>
+            <div v-if="item.right.delete" class="card-body_right-btn" @click="handleDel(item)">
+              <!-- 删除 -->
+              <i class="iconfont icon-xt-details_delete_default" />
+            </div>
+          </div>
+        </Col>
+      </Row>
+    </Row>
+  </div>
+</template>
+
+<script setup lang="ts">
+  import { Row, Col } from 'ant-design-vue';
+  interface Props {
+    id?: string;
+    // 标题
+    title: string;
+    // icon
+    icon?: string | unknown;
+    iconType?: string;
+    // 每行宽度
+    wrapSpan?: number;
+    type?: string;
+    // 数据集
+    data: Array<{
+      id?: string;
+      right?: {
+        show: boolean;
+        date?: string;
+        doctor?: string;
+        edit?: boolean;
+        delete?: boolean;
+        span?: number;
+      };
+      data: Array<{
+        filed?: string;
+        label: string;
+        value?: string;
+        span?: number | unknown;
+        dict?: boolean | unknown;
+        dictName?: string | unknown;
+        dictField?: string | unknown;
+        hidden?: boolean | unknown;
+        tags?:
+          | Array<{
+              id: string;
+              label: string;
+              type: string | 'warning' | 'error' | 'success' | 'primary' | 'muted';
+              fontColor: string;
+              bgColor: string;
+            }>
+          | unknown;
+      }>;
+    }>;
+  }
+  const props = withDefaults(defineProps<Props>(), {
+    title: '标题',
+    wrapSpan: 6,
+    type: '',
+    data: () => [],
+  });
+  const emit = defineEmits(['edit', 'delete', 'icon']);
+
+  function handleEdit(item) {
+    const info = { id: props.id, type: props.type, action: 'edit', data: item };
+    emit('edit', info);
+  }
+  function handleDel(item) {
+    const info = { id: props.id, type: props.type, action: 'delete', data: item };
+    emit('delete', info);
+  }
+
+  function handleIcon() {
+    const info = { id: props.id, type: props.type, action: props.iconType || 'icon' };
+    emit('icon', info);
+  }
+</script>
+
+<style lang="less" scoped>
+  .card {
+    border-radius: 4px;
+    border: 1px solid #efefef;
+    background-color: #fff;
+
+    &-head {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      height: 56px;
+      background: #f6f8fa;
+      box-shadow: 0 1px 0 0 #efefef;
+      border-radius: 3px 3px 0 0;
+      padding: 0 20px;
+
+      &_label {
+        font-size: 18px;
+        font-weight: 600;
+        color: #000a18;
+      }
+
+      &_value {
+        & .iconfont {
+          display: block;
+          margin-right: 16px;
+          background: #fff;
+          border-radius: 50%;
+          width: 32px;
+          height: 32px;
+          text-align: center;
+          line-height: 32px;
+          cursor: pointer;
+
+          &:last-child {
+            margin-right: 0;
+          }
+
+          &:hover {
+            color: #0075ff;
+          }
+        }
+      }
+    }
+
+    &-body {
+      display: flex;
+      align-items: center;
+      padding: 20px 20px 0;
+
+      &_right {
+        display: flex;
+        align-items: center;
+        justify-content: flex-end;
+        font-size: 12px;
+        color: #818694;
+
+        &-btn {
+          // margin-right: 16px;
+          color: #3d4155;
+          background: #f4f6f9;
+          border-radius: 50%;
+          width: 32px;
+          height: 32px;
+          text-align: center;
+          line-height: 32px;
+          cursor: pointer;
+          margin-left: 10px;
+
+          &:last-child {
+            margin: 0;
+            margin-left: 16px;
+          }
+
+          &:hover {
+            color: #0075ff;
+          }
+        }
+      }
+
+      &-list {
+        border-bottom: 1px solid rgb(238 240 241 / 100%);
+        width: 100%;
+        margin-bottom: 20px;
+
+        &:last-child {
+          border-bottom: 0;
+          margin-bottom: 0;
+        }
+      }
+
+      &-item {
+        display: flex;
+        flex-direction: column;
+        margin-bottom: 30px;
+
+        &_label {
+          font-size: 12px;
+          font-weight: 400;
+          color: #818694;
+        }
+
+        &_value {
+          display: flex;
+          font-size: 14px;
+          font-weight: 500;
+          color: #000a18;
+        }
+
+        &_tag {
+          font-size: 12px;
+          height: 20px;
+          border-radius: 12px;
+          padding: 1px 10px;
+          margin: 0 4px;
+          white-space: nowrap;
+          max-width: 200px;
+          overflow: hidden;
+          text-overflow: ellipsis;
+
+          &:first-child {
+            margin-left: 0;
+          }
+
+          &:last-child {
+            margin-right: 0;
+          }
+
+          &--warning {
+            background: #fff6e7;
+            color: #f90;
+          }
+
+          &--error {
+            background: #ffeee3;
+            color: #ff5d39;
+          }
+
+          &--success {
+            color: #19be6b;
+            background: #ecf8f2;
+          }
+
+          &--primary {
+            color: #0075ff;
+            background: #e5f1ff;
+          }
+
+          &--muted {
+            color: #828890;
+            background: #e1e3e7;
+          }
+        }
+      }
+    }
+  }
+</style>

+ 29 - 2
src/components/XTForm/src/XTForm.vue

@@ -72,12 +72,13 @@
               :disabled="item.disabled ? true : false"
               :style="{ width: item.width + 'px' }"
               @change="handleChange"
+              :defaultValue="item.defaultValue"
               :size="item.size || 'large'"
               :ranges="ranges"
             />
           </div>
           <div v-if="item.componentType == ComponentEnum.IconBtn">
-            <div :class="['icon-btn', item.selected ? 'icon-btn--selected' : '']">
+            <div :class="['icon-btn', item.selected || item.count ? 'icon-btn--selected' : '']">
               <div class="icon-btn_count" v-if="item.count">{{ item.count }}</div>
               <i class="iconfont icon-xt-screen_default" @click="handleClick(item)" />
             </div>
@@ -209,8 +210,9 @@
     }
 
     & .iconfont {
-      font-size: 24px;
+      font-size: 20px;
       margin-right: 0;
+      line-height: 40px;
     }
   }
 
@@ -223,6 +225,31 @@
     margin-right: 0;
   }
 
+  ::v-deep(.ant-input) {
+    border-color: #fff;
+    border-radius: 4px;
+  }
+
+  ::v-deep(.ant-input-affix-wrapper) {
+    border-color: #fff;
+    border-radius: 4px;
+  }
+
+  ::v-deep(.ant-picker) {
+    border-color: #fff;
+    border-radius: 4px;
+  }
+
+  ::v-deep(.ant-select-selector) {
+    border-color: #fff;
+    border-radius: 4px;
+  }
+
+  ::v-deep(.ant-select:not(.ant-select-customize-input) .ant-select-selector) {
+    border-color: #fff;
+    border-radius: 4px;
+  }
+
   .xt-from_label {
     margin-right: 10px;
   }

+ 5 - 3
src/components/XTList/src/Sift.vue

@@ -19,6 +19,8 @@
       field: string;
       label: string;
       value: string;
+      isDict?: boolean;
+      dict?: string;
     }>;
   }
 
@@ -26,14 +28,14 @@
     tit: '筛选条件',
     data: () => [],
   });
-  const emit = defineEmits(['close', 'clear']);
+  const emit = defineEmits(['close']);
   function handleClose(item) {
     console.log('🚀 ~ file: Sift.vue:28 ~ handleClose ~ item:', item);
-    emit('close', item);
+    emit('close', { type: 'close', item });
   }
 
   function handleClear() {
-    emit('clear');
+    emit('close', { type: 'clear' });
   }
 </script>
 

+ 4 - 4
src/components/XTTab/src/XTTab.vue

@@ -42,7 +42,7 @@
     // 数据
     data: Array<{
       // 唯一值
-      key: string;
+      key: string | number;
       // 是否disabled
       disabled?: boolean;
       // 名称
@@ -52,11 +52,11 @@
       // 是否有括号
       hasBracket?: boolean;
       // 是否有后缀值
-      hasValue?: boolean;
+      hasValue?: boolean | unknown;
       // 前缀颜色
-      prefixColor?: string;
+      prefixColor?: string | unknown;
       // 后缀值颜色
-      valueColor?: string;
+      valueColor?: string | unknown;
     }>;
   }
   const props = withDefaults(defineProps<Props>(), {

+ 19 - 6
src/components/XTTimeLine/src/TimeLine.vue

@@ -10,7 +10,11 @@
       <slot name="head" />
     </div>
     <div class="timeline-body">
-      <div class="timeline-item" v-for="item in data" :key="item.id">
+      <div
+        :class="['timeline-item', item.dot == '已转归' ? 'timeline-item--muted' : '']"
+        v-for="item in data"
+        :key="item.id"
+      >
         <!-- 线 -->
         <div class="timeline-item-tail" />
         <!-- 圆点 -->
@@ -18,13 +22,16 @@
         <div class="timeline-item-cnt">
           <DescCard
             :id="item.cnt.id"
-            icon="icon-xt-edit_default"
-            icon-type="edit"
+            :icon="item.cnt.icon"
             :type="item.cnt.type"
             :title="item.cnt.title"
             :data="item.cnt.data"
             @icon="handleIcon"
-          />
+          >
+            <template #headRight>
+              <slot name="card" :data="item" />
+            </template>
+          </DescCard>
         </div>
         <div class="timeline-item-date"> {{ item.date }} </div>
       </div>
@@ -42,6 +49,7 @@
       id?: string;
       dot?: string;
       date: string;
+      icon?: string;
       cnt: any;
     }>;
   }
@@ -71,7 +79,6 @@
 <style lang="less" scoped>
   .timeline {
     background-color: #fff;
-    padding: 10px 0;
 
     &-head {
       display: flex;
@@ -79,7 +86,7 @@
       line-height: 40px;
       font-weight: 600;
       text-align: center;
-      margin: 20px 0 20px 96px;
+      margin: 0 0 20px 96px;
 
       & .iconfont {
         display: block;
@@ -99,6 +106,11 @@
       font-size: 14px;
       list-style: none;
 
+      &--muted {
+        filter: opacity(0.8) grayscale(1);
+        color: #ccc;
+      }
+
       &-tail {
         position: absolute;
         top: 10px;
@@ -117,6 +129,7 @@
         color: #fff;
         background: #21c999;
         border-radius: 50%;
+        text-align: center;
         left: 96px;
       }
 

+ 7 - 2
src/components/XTTitle/src/Title.vue

@@ -53,9 +53,9 @@
       type: string;
       icon?: string;
       iconType?: string | 'primary';
-      isBtn: boolean;
+      isBtn?: boolean;
       btnText?: string;
-      btnType?: 'primary' | 'ghost' | 'dashed' | 'link' | 'text' | 'default';
+      btnType?: string | 'primary' | 'ghost' | 'dashed' | 'link' | 'text' | 'default';
       btnIcon?: string;
     }>;
     upload?: {
@@ -154,4 +154,9 @@
       }
     }
   }
+
+  ::v-deep(.ant-btn) {
+    border-radius: 5px;
+    font-size: 14px;
+  }
 </style>

+ 12 - 0
src/design/ant/index.less

@@ -77,3 +77,15 @@
 // .ant-table-tbody>tr.ant-table-row-selected>td {
 //   background: var(--ant-primary-8) !important;
 // }
+.ant-slider-tooltip .ant-tooltip-arrow {
+  display: none !important;
+}
+
+.ant-slider-tooltip .ant-tooltip-inner {
+  background: #fff;
+  color: #000;
+  box-shadow: none;
+  margin-top: -11px;
+  z-index: 99;
+  padding: 2px;
+}

+ 8 - 12
src/design/reset.css

@@ -28,10 +28,11 @@ body {
   width: 100%;
   height: 100%;
   -moz-osx-font-smoothing: grayscale;
-  -webkit-font-smoothing: antialiased;
+  /* -webkit-font-smoothing: antialiased; */
   text-rendering: optimizelegibility;
-  font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB',
-    'Microsoft YaHei', '微软雅黑', Arial, sans-serif;
+  -webkit-font-smoothing: unset !important;
+  font-family: -apple-system, system-ui, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif,
+    BlinkMacSystemFont, Helvetica Neue, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial !important;
 }
 
 hr {
@@ -58,8 +59,8 @@ code,
 kbd,
 samp,
 pre {
-  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,
-    'Liberation Mono', 'Courier New', monospace;
+  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
+    'Courier New', monospace;
   font-size: 1em;
 }
 
@@ -221,13 +222,8 @@ video {
 }
 
 label {
-  font-weight: 700;
-}
-
-*,
-*::before,
-*::after {
-  box-sizing: inherit;
+  font-weight: 400;
+  color: #818694;
 }
 
 a:focus,

+ 3 - 0
src/enums/cacheEnum.ts

@@ -33,6 +33,9 @@ export const APP_SESSION_CACHE_KEY = 'COMMON__SESSION__KEY__';
 
 export const EXPRISEIN_KEY = 'EXPRISEIN__';
 
+// 当前租户信息
+export const TENANT_KEY = 'Tenant__';
+
 export const PORTAL_KEY = 'PORTAL_KEY_';
 export enum CacheTypeEnum {
   SESSION,

+ 8 - 0
src/layouts/default/header/index.vue

@@ -32,6 +32,7 @@
         />
       </div>
       <!-- menu-end -->
+      <div class="menu-name"> 驼人新城人民医院 </div>
     </div>
     <!-- left end -->
 
@@ -184,4 +185,11 @@
 </script>
 <style lang="less">
   @import url('./index.less');
+
+  .menu-name {
+    font-size: 18px;
+    font-weight: normal;
+    color: #0d2f4f;
+    line-height: 21px;
+  }
 </style>