Kaynağa Gözat

Merge branch 'story-237' of ssh://121.43.162.141:10022/six.fe/health.admin into story-238

张田田 1 ay önce
ebeveyn
işleme
acff56aa62
36 değiştirilmiş dosya ile 188 ekleme ve 59 silme
  1. 6 0
      public/i18n/applet.develop.json
  2. 6 0
      public/i18n/applet.release.json
  3. 6 0
      public/i18n/applet.trial.json
  4. 36 59
      src/components/EditSupplier.vue
  5. 4 0
      src/pages/index/care/conditioningRecord.vue
  6. 5 0
      src/pages/index/care/configured.vue
  7. 4 0
      src/pages/index/care/institutionService.vue
  8. 5 0
      src/pages/index/care/supplier.vue
  9. 4 0
      src/pages/index/care/systemService.vue
  10. 1 0
      src/pages/index/equipment/configured.vue
  11. 5 0
      src/pages/index/equipment/registe.vue
  12. 5 0
      src/pages/index/equipment/reportManagement.vue
  13. 5 0
      src/pages/index/follow/assessment.vue
  14. 4 0
      src/pages/index/follow/plan.vue
  15. 5 0
      src/pages/index/follow/task.vue
  16. 4 0
      src/pages/index/healthy/education.vue
  17. 4 0
      src/pages/index/order/management.vue
  18. 4 0
      src/pages/index/order/revenueSharing.vue
  19. 4 0
      src/pages/index/order/shipment.vue
  20. 4 0
      src/pages/index/patient/history.vue
  21. 4 0
      src/pages/index/system/institution.vue
  22. 4 0
      src/pages/index/system/organization.vue
  23. 4 0
      src/pages/index/system/role.vue
  24. 4 0
      src/pages/index/system/tag.vue
  25. 4 0
      src/pages/index/system/user.vue
  26. 4 0
      src/satisfaction/SendRecord.vue
  27. 4 0
      src/satisfaction/SurveyList.vue
  28. 4 0
      src/service/NotifyManageList.vue
  29. 4 0
      src/service/NotifyManageRecord.vue
  30. 5 0
      src/service/ServiceItemsConfirm.vue
  31. 5 0
      src/service/ServiceItemsList.vue
  32. 5 0
      src/service/ServiceItemsSystem.vue
  33. 4 0
      src/widgets/PatientCareRecordsWidget.vue
  34. 4 0
      src/widgets/PatientDiagnosisRecordsWidget.vue
  35. 4 0
      src/widgets/PatientFollowUpRecordsWidget.vue
  36. 4 0
      src/widgets/PatientHealthRecordsWidget.vue

+ 6 - 0
public/i18n/applet.develop.json

@@ -103,6 +103,12 @@
     },
     "orderText":{
       "mineOrder": "我的服务" ,
+      "payStatusList": [
+        "待确认",
+        "已确认",
+        "已完成",
+        "全部"
+      ],
       "paying": "待确认",
       "paid": "已确认",
       "paySuccess":"已完成",

+ 6 - 0
public/i18n/applet.release.json

@@ -103,6 +103,12 @@
     },
     "orderText":{
       "mineOrder": "我的订单" ,
+      "payStatusList": [
+        "待付款",
+        "已付款",
+        "交易成功",
+        "全部"
+      ],
       "paying": "待付款",
       "paid": "已付款",
       "paySuccess":"交易成功",

+ 6 - 0
public/i18n/applet.trial.json

@@ -103,6 +103,12 @@
     },
     "orderText":{
       "mineOrder": "我的服务" ,
+      "payStatusList": [
+        "待确认",
+        "已确认",
+        "已完成",
+        "全部"
+      ],
       "paying": "待确认",
       "paid": "已确认",
       "paySuccess":"已完成",

+ 36 - 59
src/components/EditSupplier.vue

@@ -289,6 +289,17 @@ initTimeRangeValues();
 
 const formRef = ref<any>(null);
 
+// 营业时间字段(始终存在于表单中,通过样式控制显示/隐藏,避免动态增删表单项导致下拉失焦收起)
+const businessHoursField = {
+  field: 'businessTime',
+  title: '营业时间',
+  span: 24,
+  slots: {
+    title: 'businessTimeTitle',
+    default: 'businessHours',
+  },
+  className: 'business-hours-item',
+} as const;
 
 const baseFormItems = [
   {
@@ -412,6 +423,7 @@ const baseFormItems = [
     span: 24,
     itemRender: { name: 'VxeInput', props: { placeholder: '请输入', type: 'number', min: 0, max: 100 } },
   },
+  businessHoursField as any,
   // 营业状态 单选,营业、休息、停业
   {
     field: 'businessStatus',
@@ -423,44 +435,12 @@ const baseFormItems = [
   { align: 'center', span: 24, slots: { default: 'active' } },
 ];
 
-// 营业时间字段
-const businessHoursField = {
-  field: 'businessTime',
-  title: '营业时间',
-  span: 24,
-  slots: {
-    title: 'businessTimeTitle',
-    default: 'businessHours',
-  },
-} as const;
-
-// 更新表单项
-function updateFormItems() {
-  const items = [...baseFormItems];
-  const shouldShow = showBusinessHours.value;
-  // 查找分账比例和营业时间
-  const profitSharingIndex = items.findIndex(item => item.field === 'profitSharing');
-  const businessTimeIndex = items.findIndex(item => item.field === 'businessTime');
-
-  if (shouldShow) {
-    if (businessTimeIndex === -1 && profitSharingIndex !== -1) {
-      items.splice(profitSharingIndex + 1, 0, businessHoursField as any);
-    }
-  } else {
-    if (businessTimeIndex !== -1) {
-      items.splice(businessTimeIndex, 1);
-    }
-  }
-
-  formProps.items = items as any;
-}
-
 const formProps = reactive<VxeFormProps<FormModel>>({
   titleWidth: 100,
   titleAlign: 'right',
   titleColon: true,
   data: { ...props.data },
-  items: baseFormItems as any,
+  items: [...baseFormItems] as any,
   rules: {
     name: [{ required: true, message: '请输入供应商名称' }],
     detailAddress: [{ required: true, message: '请输入地址' }],
@@ -519,12 +499,12 @@ const formProps = reactive<VxeFormProps<FormModel>>({
 });
 
 // 判断是否显示营业时间(仅限"线下项目"有值时展示)
-const showBusinessHours = computed<boolean>(() => {
+const hasOfflineSelected = computed<boolean>(() => {
   const offlineCPTypes: string[] | undefined = formProps.data?.offlineCPTypes;
   return !!(offlineCPTypes && Array.isArray(offlineCPTypes) && offlineCPTypes.length > 0);
 });
+const showBusinessHours = hasOfflineSelected;
 
-const prevOfflineCPTypes = ref<string[] | undefined>(undefined);
 let wasCleared = false;
 
 // 重置营业时间为默认值
@@ -546,25 +526,20 @@ function resetBusinessHours() {
   });
 }
 
-// 监听线下项目变化,更新表单项,并在清除后再次选择时重置营业时间
-watch(() => formProps.data?.offlineCPTypes, (newVal) => {
-  const newHasValue = !!(newVal && Array.isArray(newVal) && newVal.length > 0);
-  const oldHasValue = !!(prevOfflineCPTypes.value && Array.isArray(prevOfflineCPTypes.value) && prevOfflineCPTypes.value.length > 0);
-
-
-  if (oldHasValue && !newHasValue) {
-    wasCleared = true;
-  }
-
-
-  if (wasCleared && !oldHasValue && newHasValue) {
-    resetBusinessHours();
-    wasCleared = false;
-  }
-
-  prevOfflineCPTypes.value = newVal ? [...newVal] : undefined;
-  updateFormItems();
-}, { deep: true });
+// 仅在“是否选中线下服务”发生变化时处理:
+// - 避免每次勾选/取消一个选项都触发表单 items 重建,导致下拉框自动收起
+// - 保持原逻辑:清空后再次选择时重置营业时间;并联动显示/隐藏营业时间字段
+watch(
+  hasOfflineSelected,
+  (newHasValue, oldHasValue) => {
+    if (oldHasValue && !newHasValue) wasCleared = true;
+    if (wasCleared && !oldHasValue && newHasValue) {
+      resetBusinessHours();
+      wasCleared = false;
+    }
+  },
+  { immediate: true }
+);
 
 const formEmits: VxeFormListeners<FormModel> = {
   submit({ data }) {
@@ -675,15 +650,11 @@ onBeforeMount(async () => {
   if (props.data?.id) load(props.data);
   await getOnlineCPList();
   await getOfflineCPList();
-  // 初始化线下服务
-  prevOfflineCPTypes.value = formProps.data?.offlineCPTypes ? [...formProps.data.offlineCPTypes] : undefined;
-  // 初始化表单
-  updateFormItems();
 });
 </script>
 
 <template>
-  <div class="form-container">
+  <div class="form-container" :class="{ 'business-hours-hidden': !showBusinessHours }">
     <vxe-form ref="formRef" v-bind="formProps" v-on="formEmits" :loading="submitting">
       <template #initiate>
         <a-tree-select style="width: 100%" :show-checked-strategy="SHOW_ALL" tree-check-strictly :tree-data="branch"
@@ -728,6 +699,12 @@ onBeforeMount(async () => {
   padding: 20px;
 }
 
+.form-container.business-hours-hidden {
+  :deep(.business-hours-item) {
+    display: none !important;
+  }
+}
+
 .business-hours-container {
   width: 100%;
 }

+ 4 - 0
src/pages/index/care/conditioningRecord.vue

@@ -75,6 +75,10 @@ const gridOptions = reactive<VxeGridProps<ConditioningRecordListModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 5 - 0
src/pages/index/care/configured.vue

@@ -139,6 +139,10 @@ const gridOptions = reactive<VxeGridProps<ConditioningSchemeModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,
@@ -153,6 +157,7 @@ const gridOptions = reactive<VxeGridProps<ConditioningSchemeModel>>({
     storage: true,
   },
   columns: [
+    { type: 'seq', title: '序号', width: 80 },
     { field: 'orgName', title: '组织名称' },
     { field: 'insName', title: '机构名称' },
     // {

+ 4 - 0
src/pages/index/care/institutionService.vue

@@ -94,6 +94,10 @@ const gridOptions = reactive<VxeGridProps<SystemCwModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 5 - 0
src/pages/index/care/supplier.vue

@@ -119,6 +119,10 @@ const gridOptions = reactive<VxeGridProps<SupplierModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,
@@ -133,6 +137,7 @@ const gridOptions = reactive<VxeGridProps<SupplierModel>>({
     storage: true,
   },
   columns: [
+    { type: 'seq', title: '序号', width: 80 },
     { field: 'name', title: '供应商' },
     { field: 'detailAddress', title: '地址' },
     { field: 'kahuna', title: '负责人' },

+ 4 - 0
src/pages/index/care/systemService.vue

@@ -80,6 +80,10 @@ const gridOptions = reactive<VxeGridProps<SystemCwModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 1 - 0
src/pages/index/equipment/configured.vue

@@ -190,6 +190,7 @@ const gridOptions = reactive<VxeGridProps<DeviceManageModel>>({
   },
   columns: [
     { type: 'checkbox', width: 60, fixed: 'left', title: '', align: 'center' },
+    { type: 'seq', title: '序号', width: 80 },
     { field: 'orgName', title: '组织名称' },
     { field: 'warrant', title: '设备ID' },
     {

+ 5 - 0
src/pages/index/equipment/registe.vue

@@ -186,6 +186,10 @@ const gridOptions = reactive<VxeGridProps<EquirementModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,
@@ -201,6 +205,7 @@ const gridOptions = reactive<VxeGridProps<EquirementModel>>({
   },
   columns: [
     { type: 'checkbox', width: 100, fixed: 'left', title: '', align: 'center' },
+    { type: 'seq', title: '序号', width: 80 },
     { field: 'deviceType', title: '设备名称' },
     { field: 'orgName', title: '组织名称' },
     { field: 'institutionName', title: '机构名称' },

+ 5 - 0
src/pages/index/equipment/reportManagement.vue

@@ -156,6 +156,10 @@ const gridOptions = reactive<any>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,
@@ -170,6 +174,7 @@ const gridOptions = reactive<any>({
     storage: true,
   },
   columns: [
+    { type: 'seq', title: '序号', width: 80 },
     { field: 'orgName', title: '组织名称' },
     { field: 'deviceType', title: '设备名称' },
     { field: 'deviceCode', title: '设备ID' },

+ 5 - 0
src/pages/index/follow/assessment.vue

@@ -100,6 +100,10 @@ const gridOptions = reactive<VxeGridProps<EvaluationModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,
@@ -111,6 +115,7 @@ const gridOptions = reactive<VxeGridProps<EvaluationModel>>({
     storage: true,
   },
   columns: [
+    { type: 'seq', title: '序号', width: 80 },
     { field: 'followupPlanName', title: '随访计划' },
     { field: 'patientName', title: '姓名' },
     { field: 'sex', title: '性别', slots: { default: 'sex' } },

+ 4 - 0
src/pages/index/follow/plan.vue

@@ -129,6 +129,10 @@ const gridOptions = reactive<VxeGridProps<PlanModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 5 - 0
src/pages/index/follow/task.vue

@@ -114,6 +114,10 @@ const gridOptions = reactive<VxeGridProps<TaskModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,
@@ -126,6 +130,7 @@ const gridOptions = reactive<VxeGridProps<TaskModel>>({
     storage: true,
   },
   columns: [
+    { type: 'seq', title: '序号', width: 80 },
     { field: 'followupTaskName', title: '随访计划' },
     { field: 'patientName', title: '姓名' },
     { field: 'sex', title: '性别', slots: { default: 'sex' } },

+ 4 - 0
src/pages/index/healthy/education.vue

@@ -80,6 +80,10 @@ const gridOptions = reactive<VxeGridProps<EducationModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 4 - 0
src/pages/index/order/management.vue

@@ -130,6 +130,10 @@ const gridOptions = reactive<VxeGridProps<ConditioningRecordListModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 4 - 0
src/pages/index/order/revenueSharing.vue

@@ -122,6 +122,10 @@ const gridOptions = reactive<VxeGridProps<RevenueSharingDetailModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 4 - 0
src/pages/index/order/shipment.vue

@@ -180,6 +180,10 @@ const gridOptions = reactive<VxeGridProps<ShipmentModel>>({
 
     return { rowspan: 1, colspan: 1 };
   },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 4 - 0
src/pages/index/patient/history.vue

@@ -169,6 +169,10 @@ const gridOptions = reactive<VxeGridProps<PatientReportModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 4 - 0
src/pages/index/system/institution.vue

@@ -55,6 +55,10 @@ const gridOptions = reactive<VxeGridProps<InstitutionModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 4 - 0
src/pages/index/system/organization.vue

@@ -55,6 +55,10 @@ const gridOptions = reactive<VxeGridProps<OrganizationModel>>({
   autoResize: false,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 4 - 0
src/pages/index/system/role.vue

@@ -59,6 +59,10 @@ const gridOptions = reactive<VxeGridProps<RoleModel>>({
   showOverflow: true,
   height: 'auto', autoResize: false, syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 4 - 0
src/pages/index/system/tag.vue

@@ -92,6 +92,10 @@ const gridOptions = reactive<VxeGridProps<TagModel>>({
   showOverflow: true,
   height: 'auto', autoResize: false, syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 4 - 0
src/pages/index/system/user.vue

@@ -66,6 +66,10 @@ const gridOptions = reactive<VxeGridProps<UserModel>>({
   showOverflow: true,
   height: 'auto', autoResize: false, syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 4 - 0
src/satisfaction/SendRecord.vue

@@ -87,6 +87,10 @@ const gridOptions = reactive<VxeGridProps<SatisfactionSendRecordModel>>({
   autoResize: true,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 4 - 0
src/satisfaction/SurveyList.vue

@@ -89,6 +89,10 @@ const gridOptions = reactive<VxeGridProps<SystemItemModel>>({
   autoResize: true,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 4 - 0
src/service/NotifyManageList.vue

@@ -86,6 +86,10 @@ const gridOptions = reactive<VxeGridProps<NotifyModel>>({
   autoResize: true,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 4 - 0
src/service/NotifyManageRecord.vue

@@ -87,6 +87,10 @@ const gridOptions = reactive<VxeGridProps<NotifyRecordModel>>({
   autoResize: true,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,

+ 5 - 0
src/service/ServiceItemsConfirm.vue

@@ -66,6 +66,10 @@ const gridOptions = reactive<VxeGridProps<SystemItemModel>>({
   autoResize: true,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,
@@ -81,6 +85,7 @@ const gridOptions = reactive<VxeGridProps<SystemItemModel>>({
     storage: true,
   },
   columns: [
+    { type: 'seq', title: '序号', width: 80 },
     { field: 'name', title: '项目名称' },
     { field: 'conditioningProgramType', title: '方案类型' },
     { field: 'cpFixedPricingRule.unitPrice', title: '单价(元)', slots: { default: 'unitPriceCell' } },

+ 5 - 0
src/service/ServiceItemsList.vue

@@ -118,6 +118,10 @@ const gridOptions = reactive<VxeGridProps<SystemItemModel>>({
   autoResize: true,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,
@@ -133,6 +137,7 @@ const gridOptions = reactive<VxeGridProps<SystemItemModel>>({
     storage: true,
   },
   columns: [
+    { type: 'seq', title: '序号', width: 80 },
     { field: 'name', title: '项目名称' },
     { field: 'conditioningProgramType', title: '方案类型' },
     { field: 'isForWrapCell', title: '项目应用', slots: { default: 'isForWrapCell' } },

+ 5 - 0
src/service/ServiceItemsSystem.vue

@@ -105,6 +105,10 @@ const gridOptions = reactive<VxeGridProps<SystemItemModel>>({
   autoResize: true,
   syncResize: true,
   scrollY: { enabled: true, gt: 0 },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   toolbarConfig: {
     custom: true,
     zoom: true,
@@ -121,6 +125,7 @@ const gridOptions = reactive<VxeGridProps<SystemItemModel>>({
   },
   columns: [
     { type: 'checkbox', width: 100, fixed: 'left', title: '批量' },
+    { type: 'seq', title: '序号', width: 80 },
     { field: 'name', title: '项目名称' },
     { field: 'conditioningProgramType', title: '方案类型' },
     { field: 'cpFixedPricingRule.unitPrice', title: '单价(元)', slots: { default: 'unitPriceCell' }, width: 150 },

+ 4 - 0
src/widgets/PatientCareRecordsWidget.vue

@@ -23,6 +23,10 @@ const gridOptions = reactive<VxeGridProps<ConditioningRecordListModel>>({
   height: 'auto',
   headerAlign: 'center',
   align: 'center',
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   columnConfig: {
     resizable: true,
   },

+ 4 - 0
src/widgets/PatientDiagnosisRecordsWidget.vue

@@ -21,6 +21,10 @@ const gridOptions = reactive<VxeGridProps<DiagnosisReportVO>>({
   height: 'auto',
   headerAlign: 'center',
   align: 'center',
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   columnConfig: {
     resizable: true,
   },

+ 4 - 0
src/widgets/PatientFollowUpRecordsWidget.vue

@@ -23,6 +23,10 @@ const gridOptions = reactive<VxeGridProps<DiagnosisReportVO>>({
   height: 'auto',
   headerAlign: 'center',
   align: 'center',
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   columnConfig: {
     resizable: true,
   },

+ 4 - 0
src/widgets/PatientHealthRecordsWidget.vue

@@ -100,6 +100,10 @@ const gridOptions = reactive<VxeGridProps<Model>>({
   cellConfig: {
     height: 126,
   },
+  rowConfig: {
+    isHover: true,
+    isCurrent: true,
+  },
   columns: [
     { field: 'date', title: '日期', width: '150px', align: 'center', slots: { default: 'records' } },
     {