单应用项目,可以创建很多独立工具类页面 ,不用登录 初始化的页面
zhangchen
2025-08-04 2a122106c080eb0a8b0ec82903e785087c6d3b49
ID1918-患者姓名根据配置脱敏
4个文件已修改
98 ■■■■■ 已修改文件
package-lock.json 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/utils.ts 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mobile/bedsideAuxiliaryScreen/components/Header.vue 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json
@@ -16,6 +16,7 @@
        "element-plus": "^2.9.2",
        "event-source-polyfill": "^1.0.31",
        "pinia": "^3.0.3",
        "pinyin": "^4.0.0",
        "qs": "^6.14.0",
        "speak-tts": "^2.0.8",
        "vant": "^3.4.3",
@@ -1821,6 +1822,12 @@
      "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz",
      "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
      "dev": true,
      "license": "MIT"
    },
    "node_modules/keypress": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz",
      "integrity": "sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA==",
      "license": "MIT"
    },
    "node_modules/less": {
@@ -4773,6 +4780,48 @@
        "@vue/devtools-kit": "^7.7.7"
      }
    },
    "node_modules/pinyin": {
      "version": "4.0.0",
      "resolved": "https://registry.npmjs.org/pinyin/-/pinyin-4.0.0.tgz",
      "integrity": "sha512-vHpV5K+vpp6XUUpZNGRDuHoN+1xcmieM3EWlH4QjSX2kkpG/gVOwpqwV9EOJ9x9c9UERFKeLml5XVSukE/PLgQ==",
      "license": "MIT",
      "dependencies": {
        "commander": "~1.1.1"
      },
      "bin": {
        "pinyin": "bin/pinyin"
      },
      "engines": {
        "install-node": "^18.0.0"
      },
      "peerDependencies": {
        "@node-rs/jieba": "^1.6.0",
        "nodejieba": "^3.4.4",
        "segmentit": "^2.0.3"
      },
      "peerDependenciesMeta": {
        "@node-rs/jieba": {
          "optional": true
        },
        "nodejieba": {
          "optional": true
        },
        "segmentit": {
          "optional": true
        }
      }
    },
    "node_modules/pinyin/node_modules/commander": {
      "version": "1.1.1",
      "resolved": "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz",
      "integrity": "sha512-71Rod2AhcH3JhkBikVpNd0pA+fWsmAaVoti6OR38T76chA7vE3pSerS0Jor4wDw+tOueD2zLVvFOw5H0Rcj7rA==",
      "dependencies": {
        "keypress": "0.1.x"
      },
      "engines": {
        "node": ">= 0.6.x"
      }
    },
    "node_modules/postcss": {
      "version": "8.4.49",
      "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz",
@@ -6401,6 +6450,11 @@
      "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz",
      "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==",
      "dev": true
    },
    "keypress": {
      "version": "0.1.0",
      "resolved": "https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz",
      "integrity": "sha512-x0yf9PL/nx9Nw9oLL8ZVErFAk85/lslwEP7Vz7s5SI1ODXZIgit3C5qyWjw4DxOuO/3Hb4866SQh28a1V1d+WA=="
    },
    "less": {
      "version": "4.2.1",
@@ -8355,6 +8409,24 @@
        }
      }
    },
    "pinyin": {
      "version": "4.0.0",
      "resolved": "https://registry.npmjs.org/pinyin/-/pinyin-4.0.0.tgz",
      "integrity": "sha512-vHpV5K+vpp6XUUpZNGRDuHoN+1xcmieM3EWlH4QjSX2kkpG/gVOwpqwV9EOJ9x9c9UERFKeLml5XVSukE/PLgQ==",
      "requires": {
        "commander": "~1.1.1"
      },
      "dependencies": {
        "commander": {
          "version": "1.1.1",
          "resolved": "https://registry.npmjs.org/commander/-/commander-1.1.1.tgz",
          "integrity": "sha512-71Rod2AhcH3JhkBikVpNd0pA+fWsmAaVoti6OR38T76chA7vE3pSerS0Jor4wDw+tOueD2zLVvFOw5H0Rcj7rA==",
          "requires": {
            "keypress": "0.1.x"
          }
        }
      }
    },
    "postcss": {
      "version": "8.4.49",
      "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz",
package.json
@@ -20,6 +20,7 @@
    "element-plus": "^2.9.2",
    "event-source-polyfill": "^1.0.31",
    "pinia": "^3.0.3",
    "pinyin": "^4.0.0",
    "qs": "^6.14.0",
    "speak-tts": "^2.0.8",
    "vant": "^3.4.3",
src/utils/utils.ts
@@ -1,3 +1,5 @@
import pinyin from 'pinyin';
/**
 * 计算某个类名元素的可用高度(视口高度 - 元素顶部距离)
 * @param className 元素类名(不带.)
@@ -49,3 +51,22 @@
  }
  return result;
}
/**
 * 姓名脱敏:第二个字变成首字母大写
 * @param name 患者姓名
 * @returns 脱敏后的姓名
 */
export function maskName(name: string): string {
  if (!name) return ''
  const chars = Array.from(name)
  if (chars.length < 2) return name
  const secondChar = chars[1]
  const [pinyinArr] = pinyin(secondChar, { style: pinyin.STYLE_FIRST_LETTER })
  const masked = pinyinArr[0]?.toUpperCase?.() || '*'
  chars[1] = masked
  return chars.join('')
}
src/views/mobile/bedsideAuxiliaryScreen/components/Header.vue
@@ -101,6 +101,7 @@
import { useBedsideAuxiliaryScreenStore } from "@/store/bedsideAuxiliaryScreen";
import { EPatForm, EPageType } from "@/store/type/bedsideAuxiliaryScreen.type";
import { ElMessage } from "element-plus";
import { maskName } from '@/utils/utils';
const bedsideAuxiliaryScreenStore = useBedsideAuxiliaryScreenStore();
@@ -118,9 +119,10 @@
  return bedsideAuxiliaryScreenStore.deviceData.pageType;
});
const patientInfo = computed(() => {
  return {
    patientName: bedsideAuxiliaryScreenStore.deviceData.patientName,
    patientName: bedsideAuxiliaryScreenStore.deviceData.customConfiguration.患者信息是否加密显示 === 1 ? maskName(bedsideAuxiliaryScreenStore.deviceData.patientName) :  bedsideAuxiliaryScreenStore.deviceData.patientName,
    patientPhone: bedsideAuxiliaryScreenStore.deviceData.patientPhone,
    age: bedsideAuxiliaryScreenStore.deviceData.age,
    gender: bedsideAuxiliaryScreenStore.deviceData.gender,