commit 9041a4298fcababc48497c30ff1d186a03fcee03 Author: chenyc <501753378@qq.com> Date: Sat Dec 13 18:52:08 2025 +0800 初始化 diff --git a/.env b/.env new file mode 100644 index 0000000..50bb4f4 --- /dev/null +++ b/.env @@ -0,0 +1,8 @@ +# port 端口号 +VITE_PORT = 8888 + +# open 运行 npm run dev 时自动打开浏览器 +VITE_OPEN = false + +# public path 配置线上环境路径(打包)、本地通过 http-server 访问时,请置空即可 +; VITE_PUBLIC_PATH = // \ No newline at end of file diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..6ce416b --- /dev/null +++ b/.env.production @@ -0,0 +1,21 @@ +# 线上环境 +ENV = 'production' + +#文件上传 +VITE_FILE_URL = 'https://hemobs.icoldchain.cn' +# 线上环境接口地址 +# VITE_API_URL = 'http://10.36.2.146:8069/' +# VITE_API_WSS ='ws://10.36.2.146:8069/broadcast' +# 阿里云SLB地址 +VITE_API_URL = 'https://backend.ihemodialysis.com/' +VITE_API_WSS = 'wss://backend.ihemodialysis.com/broadcast' + +# TTS 语音合成服务地址 +VITE_TTS_URL = 'http://ikuai.m-iot.tech:62335/tts' + +# 是否显示logo enum { 显示=1, 不显示=0 } +VITE_SHOW_LOGO = 1 +# 发布版本 +VITE_RELEASE_VERSION = '1' +# 完整版本 +VITE_FULL_VERSION = '1.4.1' \ No newline at end of file diff --git a/.env.staging b/.env.staging new file mode 100644 index 0000000..a3c760a --- /dev/null +++ b/.env.staging @@ -0,0 +1,12 @@ +# 医疗器械测试用的 +ENV = 'staging' + +# 本地环境接口地址 +# VITE_API_URL = 'https://hemobs.icoldchain.cn/' +VITE_API_URL = 'http://testbs2.ihemodialysis.com/' +# 是否显示logo enum { 显示=1, 不显示=0 } +VITE_SHOW_LOGO = 1 +# 发布版本 +VITE_RELEASE_VERSION = '1.4' +# 完整版本 +VITE_FULL_VERSION = '1.4.0' \ No newline at end of file diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..cfc877d --- /dev/null +++ b/.eslintignore @@ -0,0 +1,18 @@ + +*.sh +node_modules +lib +*.md +*.scss +*.woff +*.ttf +.vscode +.idea +dist +mock +public +bin +build +config +index.html +src/assets \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..5b23249 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,63 @@ +module.exports = { + root: true, + env: { + browser: true, + es2021: true, + node: true, + }, + parser: 'vue-eslint-parser', + parserOptions: { + ecmaVersion: 12, + parser: '@typescript-eslint/parser', + sourceType: 'module', + }, + extends: ['plugin:vue/vue3-essential', 'plugin:vue/essential', 'eslint:recommended'], + plugins: ['vue', '@typescript-eslint'], + rules: { + // http://eslint.cn/docs/rules/ + // https://eslint.vuejs.org/rules/ + '@type-eslint/ban-ts-ignore': 'off', + '@type-eslint/explicit-function-return-type': 'off', + '@type-eslint/no-explicit-any': 'off', + '@type-eslint/no-var-requires': 'off', + '@type-eslint/no-empty-function': 'off', + '@type-eslint/no-use-before-define': 'off', + '@type-eslint/ban-ts-comment': 'off', + '@type-eslint/ban-types': 'off', + '@type-eslint/no-non-null-assertion': 'off', + '@type-eslint/explicit-module-boundary-types': 'off', + 'vue/custom-event-name-casing': 'off', + 'vue/attributes-order': 'off', + 'vue/one-component-per-file': 'off', + 'vue/html-closing-bracket-newline': 'off', + 'vue/max-attributes-per-line': 'off', + 'vue/multiline-html-element-content-newline': 'off', + 'vue/singleline-html-element-content-newline': 'off', + 'vue/attribute-hyphenation': 'off', + 'vue/html-self-closing': 'off', + 'vue/no-multiple-template-root': 'off', + 'vue/require-default-prop': 'off', + 'vue/no-v-model-argument': 'off', + 'vue/no-arrow-functions-in-watch': 'off', + 'vue/no-template-key': 'off', + 'vue/no-v-html': 'off', + 'vue/comment-directive': 'off', + 'vue/no-parsing-error': 'off', + 'vue/no-deprecated-v-on-native-modifier': 'off', + 'vue/multi-word-component-names': 'off', + 'no-useless-escape': 'off', + 'no-sparse-arrays': 'off', + 'no-prototype-builtins': 'off', + 'no-constant-condition': 'off', + 'no-use-before-define': 'off', + 'no-restricted-globals': 'off', + 'no-restricted-syntax': 'off', + 'generator-star-spacing': 'off', + 'no-unreachable': 'off', + 'no-multiple-template-root': 'off', + 'no-unused-vars': 'off', + 'no-v-model-argument': 'off', + 'no-case-declarations': 'off', + 'no-console': 'off', + }, +}; diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..def0618 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +.DS_Store +node_modules +/dist +/package-lock.json +/.env.development +/cycgetlogo.sh + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.prettierrc.js b/.prettierrc.js new file mode 100644 index 0000000..cff490a --- /dev/null +++ b/.prettierrc.js @@ -0,0 +1,39 @@ +module.exports = { + // 一行最多多少个字符 + printWidth: 150, + // 指定每个缩进级别的空格数 + tabWidth: 2, + // 使用制表符而不是空格缩进行 + useTabs: true, + // 在语句末尾打印分号 + semi: true, + // 使用单引号而不是双引号 + singleQuote: true, + // 更改引用对象属性的时间 可选值"" + quoteProps: 'as-needed', + // 在JSX中使用单引号而不是双引号 + jsxSingleQuote: false, + // 多行时尽可能打印尾随逗号。(例如,单行数组永远不会出现逗号结尾。) 可选值"",默认none + trailingComma: 'es5', + // 在对象文字中的括号之间打印空格 + bracketSpacing: true, + // jsx 标签的反尖括号需要换行 + jsxBracketSameLine: false, + // 在单独的箭头函数参数周围包括括号 always:(x) => x \ avoid:x => x + arrowParens: 'always', + // 这两个选项可用于格式化以给定字符偏移量(分别包括和不包括)开始和结束的代码 + rangeStart: 0, + rangeEnd: Infinity, + // 指定要使用的解析器,不需要写文件开头的 @prettier + requirePragma: false, + // 不需要自动在文件开头插入 @prettier + insertPragma: false, + // 使用默认的折行标准 always\never\preserve + proseWrap: 'preserve', + // 指定HTML文件的全局空格敏感度 css\strict\ignore + htmlWhitespaceSensitivity: 'css', + // Vue文件脚本和样式标签缩进 + vueIndentScriptAndStyle: false, + // 换行符使用 lf 结尾是 可选值"" + endOfLine: 'lf', +}; diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6f6a7ea --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 lyt-Top + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..b02e57c --- /dev/null +++ b/README.md @@ -0,0 +1,475 @@ +# 胜透叫号系统 - 项目说明文档 + +## 📋 项目概览 + +**胜透叫号系统** 是一个基于 Vue 3 + TypeScript + Vite 开发的医疗透析患者叫号和管理系统。该系统是从完整的 Vue 3 后台管理模板 `vue-next-admin` 中独立提取出来的单页面应用,专门用于显示和管理患者叫号信息。 + +### 核心特性 +- 🎯 **患者实时叫号**:支持后端 TTS 服务和前端浏览器 TTS 双种语音播报方式 +- 🔊 **音频播放**:集成 WAV 格式音频播放,支持等待播放完成再重置状态 +- 📊 **实时数据展示**:通过 WebSocket 实时获取患者状态变化 +- 🎨 **大屏展示**:支持全屏展示、字体大小调整、数据脱敏显示 +- 🎬 **多媒体支持**:支持时段内容显示(视频/图片轮播) +- ⚙️ **灵活配置**:支持环境变量配置各项服务地址 + +--- + +## 🔧 技术栈 + +| 技术 | 版本 | 说明 | +|-----|------|------| +| Vue.js | 3.x | 前端框架 | +| TypeScript | 4.x+ | 类型系统 | +| Vite | 2.6.14 | 构建工具 | +| Element Plus | 1.2.0 | UI 组件库 | +| Vue Router | 4.x | 路由管理 | +| Vuex | 4.x | 状态管理 | +| Axios | 0.24.0 | HTTP 请求库 | +| WebSocket | 原生 | 实时通信 | +| speak-tts | - | 前端语音合成 | + +--- + +## 📁 项目结构 + +``` +pcWeb/ +├── src/ +│ ├── views/ +│ │ └── listCurrentHemoMeds/ # 主叫号页面 +│ │ └── index.vue # 叫号系统主组件 +│ ├── components/ +│ │ └── webSocket/index.vue # WebSocket 实时通信组件 +│ ├── api/ +│ │ └── comm/ # 通用 API 接口 +│ │ └── index.ts # 患者数据和媒体接口 +│ ├── router/ +│ │ └── route.ts # 路由配置(已简化) +│ ├── store/ # Vuex 状态管理 +│ ├── assets/ # 静态资源 +│ ├── utils/ # 工具函数 +│ ├── App.vue # 根组件 +│ └── main.ts # 应用入口 +├── .env.development # 开发环境配置 +├── .env.production # 生产环境配置 +├── vite.config.ts # Vite 配置 +├── tsconfig.json # TypeScript 配置 +└── package.json # 项目依赖 +``` + +--- + +## 🚀 快速开始 + +### 安装依赖 + +```bash +npm install +# 或 +yarn install +# 或 +cnpm install +``` + +### 开发模式运行 + +```bash +npm run dev +# 或 +yarn dev +``` + +开发服务器将在 `http://localhost:8888` 启动 + +### 生产构建 + +```bash +npm run build +``` + +输出目录:`dist/` + +--- + +## ⚙️ 环境配置 + +### 开发环境 (.env.development) + +```env +# API 服务地址 +VITE_API_URL = 'https://testbs.ihemodialysis.com/' + +# WebSocket 地址 +VITE_API_WSS = 'ws://testbs.ihemodialysis.com/broadcast' + +# TTS 语音服务地址 +VITE_TTS_URL = 'http://ikuai.m-iot.tech:62335/tts' + +# 是否显示 Logo(1=显示, 0=不显示) +VITE_SHOW_LOGO = '1' +``` + +### 生产环境 (.env.production) + +```env +# 根据实际生产服务器地址配置 +VITE_API_URL = 'https://bs.ihemodialysis.com/' +VITE_API_WSS = 'ws://bs.ihemodialysis.com/broadcast' +VITE_TTS_URL = 'http://ikuai.m-iot.tech:62335/tts' +``` + +### 环境变量加载 + +在代码中使用环境变量: + +```typescript +// 获取 TTS 服务地址 +const ttsUrl = import.meta.env.VITE_TTS_URL as string; + +// 获取 API 地址 +const apiUrl = import.meta.env.VITE_API_URL as string; +``` + +> **重要**:修改 `.env` 文件后需要重启开发服务器才能生效! + +--- + +## 🎤 叫号系统详解 + +### 核心功能组件 + +#### 1. **叫号主页面** (`src/views/listCurrentHemoMeds/index.vue`) + +该页面负责显示患者叫号信息,包含三个主要区域: + +**左侧(1/4 宽度)** +- 当前叫号:显示当前正在叫号的患者信息 +- 已叫号患者:滚动显示已叫过号的患者列表 + +**右侧(3/4 宽度)** +- 患者卡片列表:以卡片形式显示所有患者信息 +- 支持 4 列响应式布局 +- 已叫号患者显示为蓝色背景 + +**顶部** +- LOGO 和系统标题 +- 日期时间显示 +- 字体大小调整工具 + +#### 2. **叫号数据流** + +``` +WebSocket(患者叫号事件) + ↓ +alertBody 函数处理事件 + ↓ +根据 大屏语音播报类型 选择播报方式 + ├── 0: 后端 TTS (ksjh0) + └── 1: 前端浏览器 TTS (ksjh1) + ↓ +播放语音 + ↓ +等待播放完成 + ↓ +重置 UI 状态 +``` + +#### 3. **两种语音播报方式** + +**方式一:后端 TTS 服务 (ksjh0)** + +```typescript +// 发送 FormData 到 TTS 服务 +const params = new URLSearchParams(); +params.append('text', `当前叫号 ${patientName},${deviceGroupName} ${bedJh.value}`); +params.append('lang', 'zh'); // 中文 +params.append('spk_id', '0'); // 发音人 ID +params.append('rate', '+10%'); // 语速 (+10%) +params.append('vol', '6'); // 音量 + +const response = await fetch(ttsUrl, { + method: 'POST', + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + body: params.toString(), +}); + +// 获取 WAV 音频,使用 HTML5 Audio 元素播放 +const audioData = await response.arrayBuffer(); +const audioBlob = new Blob([audioData], { type: 'audio/wav' }); +// ... 播放逻辑 +``` + +**方式二:前端浏览器 TTS (ksjh1)** + +```typescript +// 使用 speak-tts 库进行本地语音合成 +speech.value.speak({ + text: `当前叫号 ${patientName},${deviceGroupName} ${bedJh.value}`, + rate: 10, + listeners: { + onstart: () => { /* 播放开始 */ }, + onend: () => { /* 播放完成 */ }, + }, +}); +``` + +#### 4. **状态管理关键变量** + +| 变量名 | 类型 | 说明 | +|-------|------|------| +| `num` | ref | 0=空闲 1=播报中(防止重复播报) | +| `jhzhuangt` | ref | 显示/隐藏叫号大屏 | +| `xjzhuangtai` | ref | 显示/隐藏下机状态屏幕 | +| `patientNameJh` | ref | 当前叫号患者名 | +| `bedJh` | ref | 当前叫号患者床位 | +| `大屏语音播报类型` | ref | 0=后端TTS 1=前端TTS | +| `大屏展示数据脱敏` | ref | 是否脱敏显示患者信息 | + +--- + +## 📡 API 接口 + +### 获取患者列表 + +**接口**:`GET /api/listCurrentHemoMeds` + +**参数**: +```typescript +{ + clientCode: string; // 机构代码 + groupCode: string; // 分组代码(可选) + page: number; // 页码 + size: number; // 每页条数 +} +``` + +**响应**: +```typescript +{ + data: { + clientName: string; // 机构名称 + 大屏展示数据脱敏选项: 0 | 1; // 是否脱敏 + 大屏语音播报类型: 0 | 1; // 播报类型 + rows: { + list: PatientInfo[]; // 患者列表 + pages: number; // 总页数 + total: number; // 总条数 + endRow: number; // 当前行尾 + }; + 已叫号列表: PatientInfo[]; // 已叫过号的患者 + 当前叫号列表: PatientInfo[]; // 当前叫号患者 + } +} +``` + +### 获取时段媒体内容 + +**接口**:`GET /api/listCurrentLcdMedia` + +**参数**: +```typescript +{ + clientCode: string; // 机构代码 +} +``` + +**响应**: +```typescript +{ + data: [ + { + startHours: number; // 开始小时 + endHours: number; // 结束小时 + startMinutes: number; // 开始分钟 + endMinutes: number; // 结束分钟 + lcdMediaFilesList: [ + { + filePath: string; // 文件路径 + fileType: 'video' | 'image'; // 文件类型 + } + ]; + } + ] +} +``` + +### WebSocket 实时通信 + +**连接地址**:由 `VITE_API_WSS` 配置 + +**收到的事件格式**: +```typescript +{ + callType: '开始叫号' | '结束叫号' | '下机'; + patientName: string; // 患者姓名 + patPinyinCode: string; // 患者拼音代码(可选) + bedNo: string; // 床位号 + deviceGroupName: string; // 设备分组名 +} +``` + +--- + +## 🎯 使用场景 + +### 场景一:启动应用 + +1. 访问 `http://localhost:8888/?pagesize=10&clientCode=XXXXX` +2. 应用加载患者数据并显示 +3. 与后端 WebSocket 建立连接 +4. 等待患者叫号事件 + +### 场景二:接收叫号事件 + +1. WebSocket 接收 `callType='开始叫号'` 事件 +2. 根据配置选择叫号方式(后端TTS 或 前端TTS) +3. 播放语音叫号 +4. 显示全屏叫号大屏 +5. 等待音频播放完成 +6. 自动关闭大屏,重置 UI 状态 + +### 场景三:数据脱敏 + +如果后端返回 `大屏展示数据脱敏选项 = 1`,患者姓名将被脱敏处理: + +``` +原始:张三 +脱敏:Z三 +``` + +--- + +## 🔍 常见问题 + +### Q1: 如何修改 TTS 服务地址? + +编辑 `.env.development` 或 `.env.production`: + +```env +VITE_TTS_URL = 'http://your-tts-server:port/tts' +``` + +然后重启开发服务器。 + +### Q2: 语音播报没有声音? + +1. 检查浏览器音量设置 +2. 检查网络连接 +3. 验证 TTS 服务地址是否正确 +4. 查看浏览器控制台 (F12) 的错误信息 + +### Q3: 如何切换语音播报方式? + +应用会自动根据后端返回的 `大屏语音播报类型` 字段选择: +- `0` = 使用后端 TTS 服务(推荐) +- `1` = 使用前端浏览器 TTS + +后端无法配置时,联系管理员修改该配置。 + +### Q4: 如何调整叫号大屏的字体大小? + +点击右下角 ⚙️ 工具图标,可调整: +- 叫号字体大小(20-200px) +- 已叫号字体大小(20-200px) +- 卡片字体大小(20-100px) + +设置会保存到浏览器本地存储。 + +### Q5: 生产环境构建有什么注意事项? + +```bash +# 生产构建 +npm run build + +# 生产构建前,需要确保: +# 1. .env.production 配置正确 +# 2. 所有依赖已安装 +# 3. 构建过程无错误 + +# 构建后生成 dist 目录,上传到服务器 +``` + +--- + +## 📝 开发注意事项 + +### 1. 代码风格 + +使用 TypeScript 编写,遵循以下规范: + +```typescript +// ✅ 推荐 +const patientName: string = ref(''); +const ksjh = async (patientName: string, bedNo: string): Promise => { + // ... +}; + +// ❌ 避免 +const patientName = ref(''); +const ksjh = async (patientName, bedNo) => { + // ... +}; +``` + +### 2. 组件更新 + +修改页面后会自动热更新(HMR),无需手动刷新浏览器。 + +### 3. 调试技巧 + +在浏览器控制台查看关键日志: + +```javascript +// 查看当前 TTS URL +console.log('TTS URL:', ttsUrl); + +// 查看 WebSocket 事件 +console.log('WebSocket 事件:', data); + +// 查看音频大小 +console.log('音频数据大小:', audioData.byteLength); +``` + +--- + +## 🔐 安全建议 + +1. **不要在前端代码中暴露敏感信息** + - API 密钥应由后端管理 + - 个人患者信息应启用脱敏显示 + +2. **CORS 跨域处理** + - TTS 服务需配置 CORS 头允许浏览器跨域请求 + - 或在生产环境使用同域转发 + +3. **WebSocket 连接安全** + - 生产环境应使用 WSS(加密WebSocket) + - 验证连接身份 + +--- + +## 📞 支持和反馈 + +- **项目仓库**:https://gitee.com/chenyincheng0624/pcWeb +- **技术栈**:Vue 3 + Vite + TypeScript + Element Plus +- **原始模板**:vue-next-admin + +--- + +## 📄 许可证 + +MIT License + +--- + +## 版本历史 + +| 版本 | 日期 | 说明 | +|-----|------|------| +| 1.0.0 | 2025-12-13 | 项目说明文档创建 | + +--- + +**最后更新**:2025-12-13 +**项目名称**:胜透叫号系统 (listCurrentHemoMeds) +**版本**:1.2.0 diff --git a/WinSCP.log b/WinSCP.log new file mode 100644 index 0000000..f7f7233 --- /dev/null +++ b/WinSCP.log @@ -0,0 +1,2733 @@ +. 2021-12-13 11:35:51.831 -------------------------------------------------------------------------- +. 2021-12-13 11:35:51.833 WinSCP Version 5.11.2 (Build 7781) (OS 10.0.22518 - Windows 10 Enterprise) +. 2021-12-13 11:35:51.833 Configuration: nul +. 2021-12-13 11:35:51.833 Log level: Normal +. 2021-12-13 11:35:51.833 Local account: SONGJUN-THINKPA\songjun +. 2021-12-13 11:35:51.833 Working directory: C:\src\hemodialysisNew +. 2021-12-13 11:35:51.833 Process ID: 4964 +. 2021-12-13 11:35:51.835 Command-line: "C:\syncthing\data1\common-tools\WinSCP-5.11.2-Portable\WinSCP.exe" /console=5.11.2 /consoleinstance=_23068_477 "/log=WinSCP.log" "/ini=nul" "/command" "open sftp://root:***@101.132.161.78/ -hostkey=""ssh-ed25519 256 34:00:7d:e0:4b:ef:fe:4d:f8:59:84:8e:58:6a:46:aa""" "lpwd" "lcd dist" "put * /root/hemodialysis/pc/" "exit" +. 2021-12-13 11:35:51.835 Time zone: Current: GMT+8 (中国标准时间), No DST +. 2021-12-13 11:35:51.836 Login time: 2021年12月13日 11:35:51 +. 2021-12-13 11:35:51.836 -------------------------------------------------------------------------- +. 2021-12-13 11:35:51.836 Script: Retrospectively logging previous script records: +> 2021-12-13 11:35:51.836 Script: open sftp://root:***@101.132.161.78/ -hostkey="ssh-ed25519 256 34:00:7d:e0:4b:ef:fe:4d:f8:59:84:8e:58:6a:46:aa" +. 2021-12-13 11:35:51.836 -------------------------------------------------------------------------- +. 2021-12-13 11:35:51.836 Session name: root@101.132.161.78 (Ad-Hoc site) +. 2021-12-13 11:35:51.836 Host name: 101.132.161.78 (Port: 22) +. 2021-12-13 11:35:51.836 User name: root (Password: Yes, Key file: No, Passphrase: No) +. 2021-12-13 11:35:51.836 Tunnel: No +. 2021-12-13 11:35:51.836 Transfer Protocol: SFTP +. 2021-12-13 11:35:51.836 Ping type: Off, Ping interval: 30 sec; Timeout: 15 sec +. 2021-12-13 11:35:51.836 Disable Nagle: No +. 2021-12-13 11:35:51.837 Proxy: None +. 2021-12-13 11:35:51.837 Send buffer: 262144 +. 2021-12-13 11:35:51.837 SSH protocol version: 2; Compression: No +. 2021-12-13 11:35:51.837 Bypass authentication: No +. 2021-12-13 11:35:51.837 Try agent: Yes; Agent forwarding: No; TIS/CryptoCard: No; KI: Yes; GSSAPI: Yes +. 2021-12-13 11:35:51.837 GSSAPI: Forwarding: No +. 2021-12-13 11:35:51.837 Ciphers: aes,chacha20,blowfish,3des,WARN,arcfour,des; Ssh2DES: No +. 2021-12-13 11:35:51.837 KEX: ecdh,dh-gex-sha1,dh-group14-sha1,rsa,WARN,dh-group1-sha1 +. 2021-12-13 11:35:51.837 SSH Bugs: Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto +. 2021-12-13 11:35:51.837 Simple channel: Yes +. 2021-12-13 11:35:51.837 Return code variable: Autodetect; Lookup user groups: Auto +. 2021-12-13 11:35:51.837 Shell: default +. 2021-12-13 11:35:51.837 EOL: LF, UTF: Auto +. 2021-12-13 11:35:51.837 Clear aliases: Yes, Unset nat.vars: Yes, Resolve symlinks: Yes; Follow directory symlinks: No +. 2021-12-13 11:35:51.837 LS: ls -la, Ign LS warn: Yes, Scp1 Comp: No +. 2021-12-13 11:35:51.837 SFTP Bugs: Auto,Auto +. 2021-12-13 11:35:51.837 SFTP Server: default +. 2021-12-13 11:35:51.837 Local directory: default, Remote directory: home, Update: Yes, Cache: Yes +. 2021-12-13 11:35:51.837 Cache directory changes: Yes, Permanent: Yes +. 2021-12-13 11:35:51.837 Recycle bin: Delete to: No, Overwritten to: No, Bin path: +. 2021-12-13 11:35:51.838 DST mode: Unix +. 2021-12-13 11:35:51.838 -------------------------------------------------------------------------- +. 2021-12-13 11:35:51.838 Looking up host "101.132.161.78" for SSH connection +. 2021-12-13 11:35:51.838 Connecting to 101.132.161.78 port 22 +. 2021-12-13 11:35:51.852 We claim version: SSH-2.0-WinSCP_release_5.11.2 +. 2021-12-13 11:35:51.874 Server version: SSH-2.0-OpenSSH_7.4 +. 2021-12-13 11:35:51.874 Using SSH protocol version 2 +. 2021-12-13 11:35:51.875 Have a known host key of type ssh-ed25519 +. 2021-12-13 11:35:51.889 Doing ECDH key exchange with curve Curve25519 and hash SHA-256 +. 2021-12-13 11:35:52.591 Server also has ecdsa-sha2-nistp256/ssh-rsa host keys, but we don't know any of them +. 2021-12-13 11:35:52.592 Host key fingerprint is: +. 2021-12-13 11:35:52.592 ssh-ed25519 256 34:00:7d:e0:4b:ef:fe:4d:f8:59:84:8e:58:6a:46:aa +. 2021-12-13 11:35:52.592 Verifying host key ssh-ed25519 0xfa7225d0d1e39df3 24b2907209e8a7f5 bde81bbe747a0d8c 9c29a20b6831364,0x1c4f0285b2c9c920 812413f12718442f ba1eab4e4fc0cba9 2dcecf6f8755cbe1 with fingerprint ssh-ed25519 256 34:00:7d:e0:4b:ef:fe:4d:f8:59:84:8e:58:6a:46:aa +. 2021-12-13 11:35:52.593 Host key matches configured key +. 2021-12-13 11:35:52.594 Initialised AES-256 SDCTR client->server encryption +. 2021-12-13 11:35:52.594 Initialised HMAC-SHA-256 client->server MAC algorithm +. 2021-12-13 11:35:52.594 Initialised AES-256 SDCTR server->client encryption +. 2021-12-13 11:35:52.594 Initialised HMAC-SHA-256 server->client MAC algorithm +! 2021-12-13 11:35:52.651 Using username "root". +. 2021-12-13 11:35:52.674 Server offered these authentication methods: publickey,gssapi-keyex,gssapi-with-mic,password +. 2021-12-13 11:35:52.674 Using SSPI from SECUR32.DLL +. 2021-12-13 11:35:52.674 Attempting GSSAPI authentication +. 2021-12-13 11:35:52.686 GSSAPI authentication request refused +. 2021-12-13 11:35:52.686 Server offered these authentication methods: publickey,gssapi-keyex,gssapi-with-mic,password +. 2021-12-13 11:35:52.686 Prompt (password, "SSH password", , "&Password: ") +. 2021-12-13 11:35:52.686 Using stored password. +. 2021-12-13 11:35:52.687 Sent password +. 2021-12-13 11:35:52.727 Access granted +. 2021-12-13 11:35:52.727 Opening session as main channel +. 2021-12-13 11:35:52.961 Opened main channel +. 2021-12-13 11:35:53.029 Started a shell/command +. 2021-12-13 11:35:53.030 -------------------------------------------------------------------------- +. 2021-12-13 11:35:53.030 Using SFTP protocol. +. 2021-12-13 11:35:53.030 Doing startup conversation with host. +> 2021-12-13 11:35:53.034 Type: SSH_FXP_INIT, Size: 5, Number: -1 +< 2021-12-13 11:35:53.066 Type: SSH_FXP_VERSION, Size: 150, Number: -1 +. 2021-12-13 11:35:53.066 SFTP version 3 negotiated. +. 2021-12-13 11:35:53.066 Unknown server extension posix-rename@openssh.com="1" +. 2021-12-13 11:35:53.066 Supports statvfs@openssh.com extension version "2" +. 2021-12-13 11:35:53.066 Unknown server extension fstatvfs@openssh.com="2" +. 2021-12-13 11:35:53.066 Supports hardlink@openssh.com extension version "1" +. 2021-12-13 11:35:53.066 Unknown server extension fsync@openssh.com="1" +. 2021-12-13 11:35:53.066 We believe the server has signed timestamps bug +. 2021-12-13 11:35:53.067 We will use UTF-8 strings until server sends an invalid UTF-8 string as with SFTP version 3 and older UTF-8 strings are not mandatory +. 2021-12-13 11:35:53.067 Limiting packet size to OpenSSH sftp-server limit of 262148 bytes +. 2021-12-13 11:35:53.067 Getting current directory name. +. 2021-12-13 11:35:53.067 Getting real path for '.' +> 2021-12-13 11:35:53.067 Type: SSH_FXP_REALPATH, Size: 10, Number: 16 +< 2021-12-13 11:35:53.077 Type: SSH_FXP_NAME, Size: 31, Number: 16 +. 2021-12-13 11:35:53.077 Real path is '/root' +. 2021-12-13 11:35:53.078 Startup conversation with host finished. +< 2021-12-13 11:35:53.078 Script: Active session: [1] root@101.132.161.78 +> 2021-12-13 11:35:53.090 Script: lpwd +< 2021-12-13 11:35:53.090 Script: C:\src\hemodialysisNew +> 2021-12-13 11:35:53.092 Script: lcd dist +< 2021-12-13 11:35:53.092 Script: C:\src\hemodialysisNew\dist +> 2021-12-13 11:35:53.094 Script: put * /root/hemodialysis/pc/ +. 2021-12-13 11:35:53.095 Copying 3 files/directories to remote directory "/root/hemodialysis/pc/" +. 2021-12-13 11:35:53.095 PrTime: Yes; PrRO: No; Rght: rw-r--r--; PrR: No (No); FnCs: N; RIC: 0100; Resume: S (102400); CalcS: No; Mask: +. 2021-12-13 11:35:53.095 TM: B; ClAr: No; RemEOF: No; RemBOM: No; CPS: 0; NewerOnly: No; InclM: ; ResumeL: 0 +. 2021-12-13 11:35:53.095 AscM: *.*html; *.htm; *.txt; *.php; *.php3; *.cgi; *.c; *.cpp; *.h; *.pas; *.bas; *.tex; *.pl; *.js; .htaccess; *.xtml; *.css; *.cfg; *.ini; *.sh; *.xml +. 2021-12-13 11:35:53.096 File: 'assets' [2021-12-13T03:35:50.089Z] [0] +. 2021-12-13 11:35:53.097 Trying to open directory "/root/hemodialysis/pc/assets/". +> 2021-12-13 11:35:53.097 Type: SSH_FXP_LSTAT, Size: 38, Number: 263 +< 2021-12-13 11:35:53.108 Type: SSH_FXP_STATUS, Size: 29, Number: 263 +< 2021-12-13 11:35:53.108 Status code: 2, Message: 263, Server: No such file, Language: +. 2021-12-13 11:35:53.109 Creating directory "/root/hemodialysis/pc/assets/". +. 2021-12-13 11:35:53.109 Canonifying: "/root/hemodialysis/pc/assets/" +. 2021-12-13 11:35:53.109 Getting real path for '/root/hemodialysis/pc/assets/' +> 2021-12-13 11:35:53.110 Type: SSH_FXP_REALPATH, Size: 38, Number: 784 +< 2021-12-13 11:35:53.122 Type: SSH_FXP_STATUS, Size: 29, Number: 784 +< 2021-12-13 11:35:53.122 Status code: 2, Message: 784, Server: No such file, Language: +. 2021-12-13 11:35:53.123 Getting real path for '/root/hemodialysis/pc/' +> 2021-12-13 11:35:53.123 Type: SSH_FXP_REALPATH, Size: 31, Number: 1040 +< 2021-12-13 11:35:53.135 Type: SSH_FXP_NAME, Size: 63, Number: 1040 +. 2021-12-13 11:35:53.135 Real path is '/root/hemodialysis/pc' +. 2021-12-13 11:35:53.135 Canonified: "/root/hemodialysis/pc/assets" +> 2021-12-13 11:35:53.135 Type: SSH_FXP_MKDIR, Size: 41, Number: 526 +< 2021-12-13 11:35:53.145 Type: SSH_FXP_STATUS, Size: 24, Number: 526 +< 2021-12-13 11:35:53.145 Status code: 0 +. 2021-12-13 11:35:53.146 File: 'assets\401.bd1bfb5b.js' [2021-12-13T03:35:50.109Z] [1149] +. 2021-12-13 11:35:53.175 Copying "assets\401.bd1bfb5b.js" to remote directory started. +. 2021-12-13 11:35:53.175 Binary transfer mode selected. +. 2021-12-13 11:35:53.175 Opening remote file. +> 2021-12-13 11:35:53.175 Type: SSH_FXP_OPEN, Size: 69, Number: 1283 +< 2021-12-13 11:35:53.186 Type: SSH_FXP_HANDLE, Size: 13, Number: 1283 +> 2021-12-13 11:35:53.186 Type: SSH_FXP_WRITE, Size: 1174, Number: 1798 +> 2021-12-13 11:35:53.187 Type: SSH_FXP_CLOSE, Size: 13, Number: 2052 +> 2021-12-13 11:35:53.187 Type: SSH_FXP_SETSTAT, Size: 65, Number: 1545 +< 2021-12-13 11:35:53.201 Type: SSH_FXP_STATUS, Size: 24, Number: 1798 +< 2021-12-13 11:35:53.201 Status code: 0 +< 2021-12-13 11:35:53.215 Type: SSH_FXP_STATUS, Size: 24, Number: 2052 +< 2021-12-13 11:35:53.215 Status code: 0 +. 2021-12-13 11:35:53.215 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:53.215 Type: SSH_FXP_STATUS, Size: 24, Number: 1545 +< 2021-12-13 11:35:53.215 Status code: 0 +. 2021-12-13 11:35:53.215 Transfer done: 'assets\401.bd1bfb5b.js' => '/root/hemodialysis/pc/assets/401.bd1bfb5b.js' [1149] +. 2021-12-13 11:35:53.216 File: 'assets\401.dbcee9d5.css' [2021-12-13T03:35:50.112Z] [1150] +. 2021-12-13 11:35:53.252 Copying "assets\401.dbcee9d5.css" to remote directory started. +. 2021-12-13 11:35:53.252 Binary transfer mode selected. +. 2021-12-13 11:35:53.252 Opening remote file. +> 2021-12-13 11:35:53.252 Type: SSH_FXP_OPEN, Size: 70, Number: 2307 +< 2021-12-13 11:35:53.262 Type: SSH_FXP_HANDLE, Size: 13, Number: 2307 +> 2021-12-13 11:35:53.262 Type: SSH_FXP_WRITE, Size: 1175, Number: 2822 +> 2021-12-13 11:35:53.263 Type: SSH_FXP_CLOSE, Size: 13, Number: 3076 +> 2021-12-13 11:35:53.263 Type: SSH_FXP_SETSTAT, Size: 66, Number: 2569 +< 2021-12-13 11:35:53.284 Type: SSH_FXP_STATUS, Size: 24, Number: 2822 +< 2021-12-13 11:35:53.284 Status code: 0 +< 2021-12-13 11:35:53.297 Type: SSH_FXP_STATUS, Size: 24, Number: 3076 +< 2021-12-13 11:35:53.297 Status code: 0 +. 2021-12-13 11:35:53.298 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:53.298 Type: SSH_FXP_STATUS, Size: 24, Number: 2569 +< 2021-12-13 11:35:53.298 Status code: 0 +. 2021-12-13 11:35:53.299 Transfer done: 'assets\401.dbcee9d5.css' => '/root/hemodialysis/pc/assets/401.dbcee9d5.css' [1150] +. 2021-12-13 11:35:53.299 File: 'assets\404.0f991cf3.css' [2021-12-13T03:35:50.112Z] [1150] +. 2021-12-13 11:35:53.324 Copying "assets\404.0f991cf3.css" to remote directory started. +. 2021-12-13 11:35:53.324 Binary transfer mode selected. +. 2021-12-13 11:35:53.324 Opening remote file. +> 2021-12-13 11:35:53.324 Type: SSH_FXP_OPEN, Size: 70, Number: 3331 +< 2021-12-13 11:35:53.337 Type: SSH_FXP_HANDLE, Size: 13, Number: 3331 +> 2021-12-13 11:35:53.337 Type: SSH_FXP_WRITE, Size: 1175, Number: 3846 +> 2021-12-13 11:35:53.339 Type: SSH_FXP_CLOSE, Size: 13, Number: 4100 +> 2021-12-13 11:35:53.339 Type: SSH_FXP_SETSTAT, Size: 66, Number: 3593 +< 2021-12-13 11:35:53.369 Type: SSH_FXP_STATUS, Size: 24, Number: 3846 +< 2021-12-13 11:35:53.369 Status code: 0 +< 2021-12-13 11:35:53.400 Type: SSH_FXP_STATUS, Size: 24, Number: 4100 +< 2021-12-13 11:35:53.400 Status code: 0 +. 2021-12-13 11:35:53.401 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:53.401 Type: SSH_FXP_STATUS, Size: 24, Number: 3593 +< 2021-12-13 11:35:53.401 Status code: 0 +. 2021-12-13 11:35:53.401 Transfer done: 'assets\404.0f991cf3.css' => '/root/hemodialysis/pc/assets/404.0f991cf3.css' [1150] +. 2021-12-13 11:35:53.402 File: 'assets\404.2b218f09.js' [2021-12-13T03:35:50.109Z] [1122] +. 2021-12-13 11:35:53.428 Copying "assets\404.2b218f09.js" to remote directory started. +. 2021-12-13 11:35:53.429 Binary transfer mode selected. +. 2021-12-13 11:35:53.429 Opening remote file. +> 2021-12-13 11:35:53.429 Type: SSH_FXP_OPEN, Size: 69, Number: 4355 +< 2021-12-13 11:35:53.439 Type: SSH_FXP_HANDLE, Size: 13, Number: 4355 +> 2021-12-13 11:35:53.439 Type: SSH_FXP_WRITE, Size: 1147, Number: 4870 +> 2021-12-13 11:35:53.440 Type: SSH_FXP_CLOSE, Size: 13, Number: 5124 +> 2021-12-13 11:35:53.440 Type: SSH_FXP_SETSTAT, Size: 65, Number: 4617 +< 2021-12-13 11:35:53.462 Type: SSH_FXP_STATUS, Size: 24, Number: 4870 +< 2021-12-13 11:35:53.462 Status code: 0 +< 2021-12-13 11:35:53.474 Type: SSH_FXP_STATUS, Size: 24, Number: 5124 +< 2021-12-13 11:35:53.474 Status code: 0 +. 2021-12-13 11:35:53.474 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:53.474 Type: SSH_FXP_STATUS, Size: 24, Number: 4617 +< 2021-12-13 11:35:53.474 Status code: 0 +. 2021-12-13 11:35:53.474 Transfer done: 'assets\404.2b218f09.js' => '/root/hemodialysis/pc/assets/404.2b218f09.js' [1122] +. 2021-12-13 11:35:53.474 File: 'assets\account.0e8a83e3.js' [2021-12-13T03:35:50.109Z] [4367] +. 2021-12-13 11:35:53.504 Copying "assets\account.0e8a83e3.js" to remote directory started. +. 2021-12-13 11:35:53.504 Binary transfer mode selected. +. 2021-12-13 11:35:53.504 Opening remote file. +> 2021-12-13 11:35:53.504 Type: SSH_FXP_OPEN, Size: 73, Number: 5379 +< 2021-12-13 11:35:53.513 Type: SSH_FXP_HANDLE, Size: 13, Number: 5379 +> 2021-12-13 11:35:53.513 Type: SSH_FXP_WRITE, Size: 4392, Number: 5894 +> 2021-12-13 11:35:53.514 Type: SSH_FXP_CLOSE, Size: 13, Number: 6148 +> 2021-12-13 11:35:53.514 Type: SSH_FXP_SETSTAT, Size: 69, Number: 5641 +< 2021-12-13 11:35:54.193 Type: SSH_FXP_STATUS, Size: 24, Number: 5894 +< 2021-12-13 11:35:54.193 Status code: 0 +< 2021-12-13 11:35:54.194 Type: SSH_FXP_STATUS, Size: 24, Number: 6148 +< 2021-12-13 11:35:54.194 Status code: 0 +. 2021-12-13 11:35:54.195 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:54.195 Type: SSH_FXP_STATUS, Size: 24, Number: 5641 +< 2021-12-13 11:35:54.195 Status code: 0 +. 2021-12-13 11:35:54.195 Transfer done: 'assets\account.0e8a83e3.js' => '/root/hemodialysis/pc/assets/account.0e8a83e3.js' [4367] +. 2021-12-13 11:35:54.195 File: 'assets\account.c03b300b.css' [2021-12-13T03:35:50.114Z] [951] +. 2021-12-13 11:35:54.211 Copying "assets\account.c03b300b.css" to remote directory started. +. 2021-12-13 11:35:54.212 Binary transfer mode selected. +. 2021-12-13 11:35:54.212 Opening remote file. +> 2021-12-13 11:35:54.212 Type: SSH_FXP_OPEN, Size: 74, Number: 6403 +< 2021-12-13 11:35:54.220 Type: SSH_FXP_HANDLE, Size: 13, Number: 6403 +> 2021-12-13 11:35:54.221 Type: SSH_FXP_WRITE, Size: 976, Number: 6918 +> 2021-12-13 11:35:54.221 Type: SSH_FXP_CLOSE, Size: 13, Number: 7172 +> 2021-12-13 11:35:54.221 Type: SSH_FXP_SETSTAT, Size: 70, Number: 6665 +< 2021-12-13 11:35:54.230 Type: SSH_FXP_STATUS, Size: 24, Number: 6918 +< 2021-12-13 11:35:54.230 Status code: 0 +< 2021-12-13 11:35:54.240 Type: SSH_FXP_STATUS, Size: 24, Number: 7172 +< 2021-12-13 11:35:54.240 Status code: 0 +. 2021-12-13 11:35:54.240 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:54.240 Type: SSH_FXP_STATUS, Size: 24, Number: 6665 +< 2021-12-13 11:35:54.240 Status code: 0 +. 2021-12-13 11:35:54.240 Transfer done: 'assets\account.c03b300b.css' => '/root/hemodialysis/pc/assets/account.c03b300b.css' [951] +. 2021-12-13 11:35:54.241 File: 'assets\addDept.0702dc50.js' [2021-12-13T03:35:50.099Z] [5039] +. 2021-12-13 11:35:54.276 Copying "assets\addDept.0702dc50.js" to remote directory started. +. 2021-12-13 11:35:54.276 Binary transfer mode selected. +. 2021-12-13 11:35:54.276 Opening remote file. +> 2021-12-13 11:35:54.277 Type: SSH_FXP_OPEN, Size: 73, Number: 7427 +< 2021-12-13 11:35:54.286 Type: SSH_FXP_HANDLE, Size: 13, Number: 7427 +> 2021-12-13 11:35:54.286 Type: SSH_FXP_WRITE, Size: 5064, Number: 7942 +> 2021-12-13 11:35:54.287 Type: SSH_FXP_CLOSE, Size: 13, Number: 8196 +> 2021-12-13 11:35:54.287 Type: SSH_FXP_SETSTAT, Size: 69, Number: 7689 +< 2021-12-13 11:35:54.302 Type: SSH_FXP_STATUS, Size: 24, Number: 7942 +< 2021-12-13 11:35:54.302 Status code: 0 +< 2021-12-13 11:35:54.322 Type: SSH_FXP_STATUS, Size: 24, Number: 8196 +< 2021-12-13 11:35:54.322 Status code: 0 +. 2021-12-13 11:35:54.323 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:54.323 Type: SSH_FXP_STATUS, Size: 24, Number: 7689 +< 2021-12-13 11:35:54.323 Status code: 0 +. 2021-12-13 11:35:54.323 Transfer done: 'assets\addDept.0702dc50.js' => '/root/hemodialysis/pc/assets/addDept.0702dc50.js' [5039] +. 2021-12-13 11:35:54.324 File: 'assets\addDic.0c7b8b28.js' [2021-12-13T03:35:50.100Z] [4571] +. 2021-12-13 11:35:54.368 Copying "assets\addDic.0c7b8b28.js" to remote directory started. +. 2021-12-13 11:35:54.371 Binary transfer mode selected. +. 2021-12-13 11:35:54.371 Opening remote file. +> 2021-12-13 11:35:54.371 Type: SSH_FXP_OPEN, Size: 72, Number: 8451 +< 2021-12-13 11:35:54.382 Type: SSH_FXP_HANDLE, Size: 13, Number: 8451 +> 2021-12-13 11:35:54.382 Type: SSH_FXP_WRITE, Size: 4596, Number: 8966 +> 2021-12-13 11:35:54.383 Type: SSH_FXP_CLOSE, Size: 13, Number: 9220 +> 2021-12-13 11:35:54.383 Type: SSH_FXP_SETSTAT, Size: 68, Number: 8713 +< 2021-12-13 11:35:54.394 Type: SSH_FXP_STATUS, Size: 24, Number: 8966 +< 2021-12-13 11:35:54.394 Status code: 0 +< 2021-12-13 11:35:54.400 Type: SSH_FXP_STATUS, Size: 24, Number: 9220 +< 2021-12-13 11:35:54.400 Status code: 0 +. 2021-12-13 11:35:54.401 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:54.401 Type: SSH_FXP_STATUS, Size: 24, Number: 8713 +< 2021-12-13 11:35:54.401 Status code: 0 +. 2021-12-13 11:35:54.401 Transfer done: 'assets\addDic.0c7b8b28.js' => '/root/hemodialysis/pc/assets/addDic.0c7b8b28.js' [4571] +. 2021-12-13 11:35:54.402 File: 'assets\addMenu.58bb5146.js' [2021-12-13T03:35:50.098Z] [9041] +. 2021-12-13 11:35:54.440 Copying "assets\addMenu.58bb5146.js" to remote directory started. +. 2021-12-13 11:35:54.440 Binary transfer mode selected. +. 2021-12-13 11:35:54.440 Opening remote file. +> 2021-12-13 11:35:54.440 Type: SSH_FXP_OPEN, Size: 73, Number: 9475 +< 2021-12-13 11:35:54.452 Type: SSH_FXP_HANDLE, Size: 13, Number: 9475 +> 2021-12-13 11:35:54.452 Type: SSH_FXP_WRITE, Size: 9066, Number: 9990 +> 2021-12-13 11:35:54.453 Type: SSH_FXP_CLOSE, Size: 13, Number: 10244 +> 2021-12-13 11:35:54.453 Type: SSH_FXP_SETSTAT, Size: 69, Number: 9737 +< 2021-12-13 11:35:54.463 Type: SSH_FXP_STATUS, Size: 24, Number: 9990 +< 2021-12-13 11:35:54.463 Status code: 0 +< 2021-12-13 11:35:54.473 Type: SSH_FXP_STATUS, Size: 24, Number: 10244 +< 2021-12-13 11:35:54.473 Status code: 0 +. 2021-12-13 11:35:54.473 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:54.473 Type: SSH_FXP_STATUS, Size: 24, Number: 9737 +< 2021-12-13 11:35:54.473 Status code: 0 +. 2021-12-13 11:35:54.473 Transfer done: 'assets\addMenu.58bb5146.js' => '/root/hemodialysis/pc/assets/addMenu.58bb5146.js' [9041] +. 2021-12-13 11:35:54.474 File: 'assets\addRole.00b3c41d.js' [2021-12-13T03:35:50.099Z] [4038] +. 2021-12-13 11:35:54.506 Copying "assets\addRole.00b3c41d.js" to remote directory started. +. 2021-12-13 11:35:54.506 Binary transfer mode selected. +. 2021-12-13 11:35:54.506 Opening remote file. +> 2021-12-13 11:35:54.506 Type: SSH_FXP_OPEN, Size: 73, Number: 10499 +< 2021-12-13 11:35:54.517 Type: SSH_FXP_HANDLE, Size: 13, Number: 10499 +> 2021-12-13 11:35:54.517 Type: SSH_FXP_WRITE, Size: 4063, Number: 11014 +> 2021-12-13 11:35:54.518 Type: SSH_FXP_CLOSE, Size: 13, Number: 11268 +> 2021-12-13 11:35:54.518 Type: SSH_FXP_SETSTAT, Size: 69, Number: 10761 +< 2021-12-13 11:35:54.530 Type: SSH_FXP_STATUS, Size: 24, Number: 11014 +< 2021-12-13 11:35:54.530 Status code: 0 +< 2021-12-13 11:35:54.543 Type: SSH_FXP_STATUS, Size: 24, Number: 11268 +< 2021-12-13 11:35:54.543 Status code: 0 +. 2021-12-13 11:35:54.544 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:54.544 Type: SSH_FXP_STATUS, Size: 24, Number: 10761 +< 2021-12-13 11:35:54.544 Status code: 0 +. 2021-12-13 11:35:54.544 Transfer done: 'assets\addRole.00b3c41d.js' => '/root/hemodialysis/pc/assets/addRole.00b3c41d.js' [4038] +. 2021-12-13 11:35:54.545 File: 'assets\addRole.37e2bfa9.css' [2021-12-13T03:35:50.111Z] [200] +. 2021-12-13 11:35:54.560 Copying "assets\addRole.37e2bfa9.css" to remote directory started. +. 2021-12-13 11:35:54.561 Binary transfer mode selected. +. 2021-12-13 11:35:54.561 Opening remote file. +> 2021-12-13 11:35:54.561 Type: SSH_FXP_OPEN, Size: 74, Number: 11523 +< 2021-12-13 11:35:54.573 Type: SSH_FXP_HANDLE, Size: 13, Number: 11523 +> 2021-12-13 11:35:54.573 Type: SSH_FXP_WRITE, Size: 225, Number: 12038 +> 2021-12-13 11:35:54.573 Type: SSH_FXP_CLOSE, Size: 13, Number: 12292 +> 2021-12-13 11:35:54.574 Type: SSH_FXP_SETSTAT, Size: 70, Number: 11785 +< 2021-12-13 11:35:54.584 Type: SSH_FXP_STATUS, Size: 24, Number: 12038 +< 2021-12-13 11:35:54.584 Status code: 0 +< 2021-12-13 11:35:54.595 Type: SSH_FXP_STATUS, Size: 24, Number: 12292 +< 2021-12-13 11:35:54.595 Status code: 0 +. 2021-12-13 11:35:54.595 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:54.595 Type: SSH_FXP_STATUS, Size: 24, Number: 11785 +< 2021-12-13 11:35:54.595 Status code: 0 +. 2021-12-13 11:35:54.595 Transfer done: 'assets\addRole.37e2bfa9.css' => '/root/hemodialysis/pc/assets/addRole.37e2bfa9.css' [200] +. 2021-12-13 11:35:54.596 File: 'assets\addUser.1176f362.js' [2021-12-13T03:35:50.099Z] [5884] +. 2021-12-13 11:35:54.634 Copying "assets\addUser.1176f362.js" to remote directory started. +. 2021-12-13 11:35:54.636 Binary transfer mode selected. +. 2021-12-13 11:35:54.636 Opening remote file. +> 2021-12-13 11:35:54.636 Type: SSH_FXP_OPEN, Size: 73, Number: 12547 +< 2021-12-13 11:35:54.647 Type: SSH_FXP_HANDLE, Size: 13, Number: 12547 +> 2021-12-13 11:35:54.647 Type: SSH_FXP_WRITE, Size: 5909, Number: 13062 +> 2021-12-13 11:35:54.648 Type: SSH_FXP_CLOSE, Size: 13, Number: 13316 +> 2021-12-13 11:35:54.648 Type: SSH_FXP_SETSTAT, Size: 69, Number: 12809 +< 2021-12-13 11:35:54.657 Type: SSH_FXP_STATUS, Size: 24, Number: 13062 +< 2021-12-13 11:35:54.657 Status code: 0 +< 2021-12-13 11:35:54.665 Type: SSH_FXP_STATUS, Size: 24, Number: 13316 +< 2021-12-13 11:35:54.665 Status code: 0 +. 2021-12-13 11:35:54.666 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:54.666 Type: SSH_FXP_STATUS, Size: 24, Number: 12809 +< 2021-12-13 11:35:54.666 Status code: 0 +. 2021-12-13 11:35:54.666 Transfer done: 'assets\addUser.1176f362.js' => '/root/hemodialysis/pc/assets/addUser.1176f362.js' [5884] +. 2021-12-13 11:35:54.666 File: 'assets\api.a553ec68.js' [2021-12-13T03:35:50.102Z] [338] +. 2021-12-13 11:35:54.687 Copying "assets\api.a553ec68.js" to remote directory started. +. 2021-12-13 11:35:54.687 Binary transfer mode selected. +. 2021-12-13 11:35:54.687 Opening remote file. +> 2021-12-13 11:35:54.687 Type: SSH_FXP_OPEN, Size: 69, Number: 13571 +< 2021-12-13 11:35:54.698 Type: SSH_FXP_HANDLE, Size: 13, Number: 13571 +> 2021-12-13 11:35:54.698 Type: SSH_FXP_WRITE, Size: 363, Number: 14086 +> 2021-12-13 11:35:54.699 Type: SSH_FXP_CLOSE, Size: 13, Number: 14340 +> 2021-12-13 11:35:54.699 Type: SSH_FXP_SETSTAT, Size: 65, Number: 13833 +< 2021-12-13 11:35:54.709 Type: SSH_FXP_STATUS, Size: 24, Number: 14086 +< 2021-12-13 11:35:54.709 Status code: 0 +< 2021-12-13 11:35:54.719 Type: SSH_FXP_STATUS, Size: 24, Number: 14340 +< 2021-12-13 11:35:54.719 Status code: 0 +. 2021-12-13 11:35:54.719 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:54.719 Type: SSH_FXP_STATUS, Size: 24, Number: 13833 +< 2021-12-13 11:35:54.719 Status code: 0 +. 2021-12-13 11:35:54.719 Transfer done: 'assets\api.a553ec68.js' => '/root/hemodialysis/pc/assets/api.a553ec68.js' [338] +. 2021-12-13 11:35:54.720 File: 'assets\bathymetry.0fd23d63.jpg' [2021-12-13T03:35:50.089Z] [621596] +. 2021-12-13 11:35:54.737 Copying "assets\bathymetry.0fd23d63.jpg" to remote directory started. +. 2021-12-13 11:35:54.737 Binary transfer mode selected. +. 2021-12-13 11:35:54.737 Opening remote file. +> 2021-12-13 11:35:54.737 Type: SSH_FXP_OPEN, Size: 86, Number: 14595 +< 2021-12-13 11:35:54.753 Type: SSH_FXP_HANDLE, Size: 13, Number: 14595 +> 2021-12-13 11:35:54.753 Type: SSH_FXP_WRITE, Size: 32764, Number: 15110 +. 2021-12-13 11:35:54.900 28 skipped SSH_FXP_WRITE, SSH_FXP_READ, SSH_FXP_DATA and SSH_FXP_STATUS packets. +> 2021-12-13 11:35:54.900 Type: SSH_FXP_CLOSE, Size: 13, Number: 19972 +< 2021-12-13 11:35:54.908 Type: SSH_FXP_STATUS, Size: 24, Number: 17670 +< 2021-12-13 11:35:54.908 Status code: 0 +< 2021-12-13 11:35:54.922 Type: SSH_FXP_STATUS, Size: 24, Number: 17926 +< 2021-12-13 11:35:54.922 Status code: 0 +< 2021-12-13 11:35:55.043 Type: SSH_FXP_STATUS, Size: 24, Number: 18182 +< 2021-12-13 11:35:55.043 Status code: 0 +< 2021-12-13 11:35:55.044 Type: SSH_FXP_STATUS, Size: 24, Number: 18438 +< 2021-12-13 11:35:55.044 Status code: 0 +< 2021-12-13 11:35:55.044 Type: SSH_FXP_STATUS, Size: 24, Number: 18694 +< 2021-12-13 11:35:55.044 Status code: 0 +< 2021-12-13 11:35:55.044 Type: SSH_FXP_STATUS, Size: 24, Number: 18950 +< 2021-12-13 11:35:55.044 Status code: 0 +< 2021-12-13 11:35:55.050 Type: SSH_FXP_STATUS, Size: 24, Number: 19206 +< 2021-12-13 11:35:55.050 Status code: 0 +< 2021-12-13 11:35:55.062 Type: SSH_FXP_STATUS, Size: 24, Number: 19462 +< 2021-12-13 11:35:55.062 Status code: 0 +< 2021-12-13 11:35:55.075 Type: SSH_FXP_STATUS, Size: 24, Number: 19718 +< 2021-12-13 11:35:55.075 Status code: 0 +< 2021-12-13 11:35:55.076 Type: SSH_FXP_STATUS, Size: 24, Number: 19972 +< 2021-12-13 11:35:55.076 Status code: 0 +> 2021-12-13 11:35:55.076 Type: SSH_FXP_RENAME, Size: 126, Number: 20242 +< 2021-12-13 11:35:55.093 Type: SSH_FXP_STATUS, Size: 24, Number: 20242 +< 2021-12-13 11:35:55.093 Status code: 0 +. 2021-12-13 11:35:55.093 Preserving timestamp [2021-12-13T03:35:50.000Z] +> 2021-12-13 11:35:55.093 Type: SSH_FXP_SETSTAT, Size: 73, Number: 14857 +< 2021-12-13 11:35:55.102 Type: SSH_FXP_STATUS, Size: 24, Number: 14857 +< 2021-12-13 11:35:55.102 Status code: 0 +. 2021-12-13 11:35:55.102 Transfer done: 'assets\bathymetry.0fd23d63.jpg' => '/root/hemodialysis/pc/assets/bathymetry.0fd23d63.jpg' [621596] +. 2021-12-13 11:35:55.102 File: 'assets\bmap.cd9e1e7e.js' [2021-12-13T03:35:50.102Z] [4707] +. 2021-12-13 11:35:55.131 Copying "assets\bmap.cd9e1e7e.js" to remote directory started. +. 2021-12-13 11:35:55.131 Binary transfer mode selected. +. 2021-12-13 11:35:55.131 Opening remote file. +> 2021-12-13 11:35:55.131 Type: SSH_FXP_OPEN, Size: 70, Number: 20483 +< 2021-12-13 11:35:55.142 Type: SSH_FXP_HANDLE, Size: 13, Number: 20483 +> 2021-12-13 11:35:55.142 Type: SSH_FXP_WRITE, Size: 4732, Number: 20998 +> 2021-12-13 11:35:55.143 Type: SSH_FXP_CLOSE, Size: 13, Number: 21252 +> 2021-12-13 11:35:55.143 Type: SSH_FXP_SETSTAT, Size: 66, Number: 20745 +< 2021-12-13 11:35:55.152 Type: SSH_FXP_STATUS, Size: 24, Number: 20998 +< 2021-12-13 11:35:55.152 Status code: 0 +< 2021-12-13 11:35:55.170 Type: SSH_FXP_STATUS, Size: 24, Number: 21252 +< 2021-12-13 11:35:55.170 Status code: 0 +. 2021-12-13 11:35:55.171 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:55.171 Type: SSH_FXP_STATUS, Size: 24, Number: 20745 +< 2021-12-13 11:35:55.171 Status code: 0 +. 2021-12-13 11:35:55.171 Transfer done: 'assets\bmap.cd9e1e7e.js' => '/root/hemodialysis/pc/assets/bmap.cd9e1e7e.js' [4707] +. 2021-12-13 11:35:55.172 File: 'assets\countUp.min.90cf0ff4.js' [2021-12-13T03:35:50.098Z] [4675] +. 2021-12-13 11:35:55.201 Copying "assets\countUp.min.90cf0ff4.js" to remote directory started. +. 2021-12-13 11:35:55.201 Binary transfer mode selected. +. 2021-12-13 11:35:55.201 Opening remote file. +> 2021-12-13 11:35:55.201 Type: SSH_FXP_OPEN, Size: 77, Number: 21507 +< 2021-12-13 11:35:55.211 Type: SSH_FXP_HANDLE, Size: 13, Number: 21507 +> 2021-12-13 11:35:55.211 Type: SSH_FXP_WRITE, Size: 4700, Number: 22022 +> 2021-12-13 11:35:55.212 Type: SSH_FXP_CLOSE, Size: 13, Number: 22276 +> 2021-12-13 11:35:55.212 Type: SSH_FXP_SETSTAT, Size: 73, Number: 21769 +< 2021-12-13 11:35:55.225 Type: SSH_FXP_STATUS, Size: 24, Number: 22022 +< 2021-12-13 11:35:55.226 Status code: 0 +< 2021-12-13 11:35:55.235 Type: SSH_FXP_STATUS, Size: 24, Number: 22276 +< 2021-12-13 11:35:55.235 Status code: 0 +. 2021-12-13 11:35:55.236 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:55.236 Type: SSH_FXP_STATUS, Size: 24, Number: 21769 +< 2021-12-13 11:35:55.236 Status code: 0 +. 2021-12-13 11:35:55.236 Transfer done: 'assets\countUp.min.90cf0ff4.js' => '/root/hemodialysis/pc/assets/countUp.min.90cf0ff4.js' [4675] +. 2021-12-13 11:35:55.236 File: 'assets\demo1.5cf3002f.js' [2021-12-13T03:35:50.109Z] [17830] +. 2021-12-13 11:35:55.279 Copying "assets\demo1.5cf3002f.js" to remote directory started. +. 2021-12-13 11:35:55.279 Binary transfer mode selected. +. 2021-12-13 11:35:55.279 Opening remote file. +> 2021-12-13 11:35:55.279 Type: SSH_FXP_OPEN, Size: 71, Number: 22531 +< 2021-12-13 11:35:55.290 Type: SSH_FXP_HANDLE, Size: 13, Number: 22531 +> 2021-12-13 11:35:55.290 Type: SSH_FXP_WRITE, Size: 17855, Number: 23046 +> 2021-12-13 11:35:55.292 Type: SSH_FXP_CLOSE, Size: 13, Number: 23300 +> 2021-12-13 11:35:55.292 Type: SSH_FXP_SETSTAT, Size: 67, Number: 22793 +< 2021-12-13 11:35:55.307 Type: SSH_FXP_STATUS, Size: 24, Number: 23046 +< 2021-12-13 11:35:55.307 Status code: 0 +< 2021-12-13 11:35:55.325 Type: SSH_FXP_STATUS, Size: 24, Number: 23300 +< 2021-12-13 11:35:55.325 Status code: 0 +. 2021-12-13 11:35:55.327 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:55.327 Type: SSH_FXP_STATUS, Size: 24, Number: 22793 +< 2021-12-13 11:35:55.327 Status code: 0 +. 2021-12-13 11:35:55.327 Transfer done: 'assets\demo1.5cf3002f.js' => '/root/hemodialysis/pc/assets/demo1.5cf3002f.js' [17830] +. 2021-12-13 11:35:55.327 File: 'assets\demo1.ec8250c7.css' [2021-12-13T03:35:50.116Z] [11590] +. 2021-12-13 11:35:55.349 Copying "assets\demo1.ec8250c7.css" to remote directory started. +. 2021-12-13 11:35:55.349 Binary transfer mode selected. +. 2021-12-13 11:35:55.349 Opening remote file. +> 2021-12-13 11:35:55.349 Type: SSH_FXP_OPEN, Size: 72, Number: 23555 +< 2021-12-13 11:35:55.363 Type: SSH_FXP_HANDLE, Size: 13, Number: 23555 +> 2021-12-13 11:35:55.363 Type: SSH_FXP_WRITE, Size: 11615, Number: 24070 +> 2021-12-13 11:35:55.365 Type: SSH_FXP_CLOSE, Size: 13, Number: 24324 +> 2021-12-13 11:35:55.365 Type: SSH_FXP_SETSTAT, Size: 68, Number: 23817 +< 2021-12-13 11:35:55.380 Type: SSH_FXP_STATUS, Size: 24, Number: 24070 +< 2021-12-13 11:35:55.380 Status code: 0 +< 2021-12-13 11:35:55.383 Type: SSH_FXP_STATUS, Size: 24, Number: 24324 +< 2021-12-13 11:35:55.383 Status code: 0 +. 2021-12-13 11:35:55.383 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:55.384 Type: SSH_FXP_STATUS, Size: 24, Number: 23817 +< 2021-12-13 11:35:55.384 Status code: 0 +. 2021-12-13 11:35:55.384 Transfer done: 'assets\demo1.ec8250c7.css' => '/root/hemodialysis/pc/assets/demo1.ec8250c7.css' [11590] +. 2021-12-13 11:35:55.384 File: 'assets\demo2.54f7298c.js' [2021-12-13T03:35:50.111Z] [622455] +. 2021-12-13 11:35:55.594 Copying "assets\demo2.54f7298c.js" to remote directory started. +. 2021-12-13 11:35:55.594 Binary transfer mode selected. +. 2021-12-13 11:35:55.594 Opening remote file. +> 2021-12-13 11:35:55.594 Type: SSH_FXP_OPEN, Size: 80, Number: 24579 +< 2021-12-13 11:35:55.607 Type: SSH_FXP_HANDLE, Size: 13, Number: 24579 +> 2021-12-13 11:35:55.608 Type: SSH_FXP_WRITE, Size: 32764, Number: 25094 +. 2021-12-13 11:35:55.669 30 skipped SSH_FXP_WRITE, SSH_FXP_READ, SSH_FXP_DATA and SSH_FXP_STATUS packets. +> 2021-12-13 11:35:55.669 Type: SSH_FXP_CLOSE, Size: 13, Number: 30212 +< 2021-12-13 11:35:55.670 Type: SSH_FXP_STATUS, Size: 24, Number: 27910 +< 2021-12-13 11:35:55.670 Status code: 0 +< 2021-12-13 11:35:55.673 Type: SSH_FXP_STATUS, Size: 24, Number: 28166 +< 2021-12-13 11:35:55.673 Status code: 0 +< 2021-12-13 11:35:55.681 Type: SSH_FXP_STATUS, Size: 24, Number: 28422 +< 2021-12-13 11:35:55.681 Status code: 0 +< 2021-12-13 11:35:55.684 Type: SSH_FXP_STATUS, Size: 24, Number: 28678 +< 2021-12-13 11:35:55.684 Status code: 0 +< 2021-12-13 11:35:55.691 Type: SSH_FXP_STATUS, Size: 24, Number: 28934 +< 2021-12-13 11:35:55.691 Status code: 0 +< 2021-12-13 11:35:55.693 Type: SSH_FXP_STATUS, Size: 24, Number: 29190 +< 2021-12-13 11:35:55.693 Status code: 0 +< 2021-12-13 11:35:55.696 Type: SSH_FXP_STATUS, Size: 24, Number: 29446 +< 2021-12-13 11:35:55.696 Status code: 0 +< 2021-12-13 11:35:55.704 Type: SSH_FXP_STATUS, Size: 24, Number: 29702 +< 2021-12-13 11:35:55.704 Status code: 0 +< 2021-12-13 11:35:55.704 Type: SSH_FXP_STATUS, Size: 24, Number: 29958 +< 2021-12-13 11:35:55.704 Status code: 0 +< 2021-12-13 11:35:55.704 Type: SSH_FXP_STATUS, Size: 24, Number: 30212 +< 2021-12-13 11:35:55.704 Status code: 0 +> 2021-12-13 11:35:55.704 Type: SSH_FXP_RENAME, Size: 114, Number: 30482 +< 2021-12-13 11:35:55.712 Type: SSH_FXP_STATUS, Size: 24, Number: 30482 +< 2021-12-13 11:35:55.712 Status code: 0 +. 2021-12-13 11:35:55.712 Preserving timestamp [2021-12-13T03:35:50.000Z] +> 2021-12-13 11:35:55.712 Type: SSH_FXP_SETSTAT, Size: 67, Number: 24841 +< 2021-12-13 11:35:55.721 Type: SSH_FXP_STATUS, Size: 24, Number: 24841 +< 2021-12-13 11:35:55.721 Status code: 0 +. 2021-12-13 11:35:55.721 Transfer done: 'assets\demo2.54f7298c.js' => '/root/hemodialysis/pc/assets/demo2.54f7298c.js' [622455] +. 2021-12-13 11:35:55.722 File: 'assets\demo2.b654deae.css' [2021-12-13T03:35:50.112Z] [20174] +. 2021-12-13 11:35:55.740 Copying "assets\demo2.b654deae.css" to remote directory started. +. 2021-12-13 11:35:55.740 Binary transfer mode selected. +. 2021-12-13 11:35:55.740 Opening remote file. +> 2021-12-13 11:35:55.740 Type: SSH_FXP_OPEN, Size: 72, Number: 30723 +< 2021-12-13 11:35:55.752 Type: SSH_FXP_HANDLE, Size: 13, Number: 30723 +> 2021-12-13 11:35:55.752 Type: SSH_FXP_WRITE, Size: 20199, Number: 31238 +> 2021-12-13 11:35:55.753 Type: SSH_FXP_CLOSE, Size: 13, Number: 31492 +> 2021-12-13 11:35:55.753 Type: SSH_FXP_SETSTAT, Size: 68, Number: 30985 +< 2021-12-13 11:35:55.772 Type: SSH_FXP_STATUS, Size: 24, Number: 31238 +< 2021-12-13 11:35:55.772 Status code: 0 +< 2021-12-13 11:35:55.786 Type: SSH_FXP_STATUS, Size: 24, Number: 31492 +< 2021-12-13 11:35:55.786 Status code: 0 +. 2021-12-13 11:35:55.787 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:55.787 Type: SSH_FXP_STATUS, Size: 24, Number: 30985 +< 2021-12-13 11:35:55.787 Status code: 0 +. 2021-12-13 11:35:55.787 Transfer done: 'assets\demo2.b654deae.css' => '/root/hemodialysis/pc/assets/demo2.b654deae.css' [20174] +. 2021-12-13 11:35:55.787 File: 'assets\details.649f6789.js' [2021-12-13T03:35:50.108Z] [1205] +. 2021-12-13 11:35:55.807 Copying "assets\details.649f6789.js" to remote directory started. +. 2021-12-13 11:35:55.807 Binary transfer mode selected. +. 2021-12-13 11:35:55.807 Opening remote file. +> 2021-12-13 11:35:55.807 Type: SSH_FXP_OPEN, Size: 73, Number: 31747 +< 2021-12-13 11:35:55.818 Type: SSH_FXP_HANDLE, Size: 13, Number: 31747 +> 2021-12-13 11:35:55.818 Type: SSH_FXP_WRITE, Size: 1230, Number: 32262 +> 2021-12-13 11:35:55.819 Type: SSH_FXP_CLOSE, Size: 13, Number: 32516 +> 2021-12-13 11:35:55.819 Type: SSH_FXP_SETSTAT, Size: 69, Number: 32009 +< 2021-12-13 11:35:55.828 Type: SSH_FXP_STATUS, Size: 24, Number: 32262 +< 2021-12-13 11:35:55.828 Status code: 0 +< 2021-12-13 11:35:55.878 Type: SSH_FXP_STATUS, Size: 24, Number: 32516 +< 2021-12-13 11:35:55.878 Status code: 0 +. 2021-12-13 11:35:55.878 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:55.878 Type: SSH_FXP_STATUS, Size: 24, Number: 32009 +< 2021-12-13 11:35:55.878 Status code: 0 +. 2021-12-13 11:35:55.878 Transfer done: 'assets\details.649f6789.js' => '/root/hemodialysis/pc/assets/details.649f6789.js' [1205] +. 2021-12-13 11:35:55.879 File: 'assets\details.8c3c358c.js' [2021-12-13T03:35:50.103Z] [1071] +. 2021-12-13 11:35:55.898 Copying "assets\details.8c3c358c.js" to remote directory started. +. 2021-12-13 11:35:55.899 Binary transfer mode selected. +. 2021-12-13 11:35:55.899 Opening remote file. +> 2021-12-13 11:35:55.899 Type: SSH_FXP_OPEN, Size: 73, Number: 32771 +< 2021-12-13 11:35:55.910 Type: SSH_FXP_HANDLE, Size: 13, Number: 32771 +> 2021-12-13 11:35:55.910 Type: SSH_FXP_WRITE, Size: 1096, Number: 33286 +> 2021-12-13 11:35:55.911 Type: SSH_FXP_CLOSE, Size: 13, Number: 33540 +> 2021-12-13 11:35:55.911 Type: SSH_FXP_SETSTAT, Size: 69, Number: 33033 +< 2021-12-13 11:35:55.922 Type: SSH_FXP_STATUS, Size: 24, Number: 33286 +< 2021-12-13 11:35:55.922 Status code: 0 +< 2021-12-13 11:35:55.934 Type: SSH_FXP_STATUS, Size: 24, Number: 33540 +< 2021-12-13 11:35:55.934 Status code: 0 +. 2021-12-13 11:35:55.935 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:55.935 Type: SSH_FXP_STATUS, Size: 24, Number: 33033 +< 2021-12-13 11:35:55.935 Status code: 0 +. 2021-12-13 11:35:55.935 Transfer done: 'assets\details.8c3c358c.js' => '/root/hemodialysis/pc/assets/details.8c3c358c.js' [1071] +. 2021-12-13 11:35:55.936 File: 'assets\details.d78a78aa.js' [2021-12-13T03:35:50.107Z] [1201] +. 2021-12-13 11:35:55.954 Copying "assets\details.d78a78aa.js" to remote directory started. +. 2021-12-13 11:35:55.954 Binary transfer mode selected. +. 2021-12-13 11:35:55.954 Opening remote file. +> 2021-12-13 11:35:55.954 Type: SSH_FXP_OPEN, Size: 73, Number: 33795 +< 2021-12-13 11:35:55.963 Type: SSH_FXP_HANDLE, Size: 13, Number: 33795 +> 2021-12-13 11:35:55.964 Type: SSH_FXP_WRITE, Size: 1226, Number: 34310 +> 2021-12-13 11:35:55.965 Type: SSH_FXP_CLOSE, Size: 13, Number: 34564 +> 2021-12-13 11:35:55.965 Type: SSH_FXP_SETSTAT, Size: 69, Number: 34057 +< 2021-12-13 11:35:55.974 Type: SSH_FXP_STATUS, Size: 24, Number: 34310 +< 2021-12-13 11:35:55.974 Status code: 0 +< 2021-12-13 11:35:55.983 Type: SSH_FXP_STATUS, Size: 24, Number: 34564 +< 2021-12-13 11:35:55.983 Status code: 0 +. 2021-12-13 11:35:55.984 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:55.984 Type: SSH_FXP_STATUS, Size: 24, Number: 34057 +< 2021-12-13 11:35:55.984 Status code: 0 +. 2021-12-13 11:35:55.984 Transfer done: 'assets\details.d78a78aa.js' => '/root/hemodialysis/pc/assets/details.d78a78aa.js' [1201] +. 2021-12-13 11:35:55.984 File: 'assets\details1.ad6479cc.js' [2021-12-13T03:35:50.103Z] [1054] +. 2021-12-13 11:35:56.002 Copying "assets\details1.ad6479cc.js" to remote directory started. +. 2021-12-13 11:35:56.002 Binary transfer mode selected. +. 2021-12-13 11:35:56.002 Opening remote file. +> 2021-12-13 11:35:56.002 Type: SSH_FXP_OPEN, Size: 74, Number: 34819 +< 2021-12-13 11:35:56.012 Type: SSH_FXP_HANDLE, Size: 13, Number: 34819 +> 2021-12-13 11:35:56.012 Type: SSH_FXP_WRITE, Size: 1079, Number: 35334 +> 2021-12-13 11:35:56.013 Type: SSH_FXP_CLOSE, Size: 13, Number: 35588 +> 2021-12-13 11:35:56.013 Type: SSH_FXP_SETSTAT, Size: 70, Number: 35081 +< 2021-12-13 11:35:56.021 Type: SSH_FXP_STATUS, Size: 24, Number: 35334 +< 2021-12-13 11:35:56.021 Status code: 0 +< 2021-12-13 11:35:56.030 Type: SSH_FXP_STATUS, Size: 24, Number: 35588 +< 2021-12-13 11:35:56.030 Status code: 0 +. 2021-12-13 11:35:56.031 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.031 Type: SSH_FXP_STATUS, Size: 24, Number: 35081 +< 2021-12-13 11:35:56.031 Status code: 0 +. 2021-12-13 11:35:56.031 Transfer done: 'assets\details1.ad6479cc.js' => '/root/hemodialysis/pc/assets/details1.ad6479cc.js' [1054] +. 2021-12-13 11:35:56.031 File: 'assets\echarts.58b3187e.js' [2021-12-13T03:35:50.108Z] [473] +. 2021-12-13 11:35:56.049 Copying "assets\echarts.58b3187e.js" to remote directory started. +. 2021-12-13 11:35:56.049 Binary transfer mode selected. +. 2021-12-13 11:35:56.049 Opening remote file. +> 2021-12-13 11:35:56.049 Type: SSH_FXP_OPEN, Size: 73, Number: 35843 +< 2021-12-13 11:35:56.059 Type: SSH_FXP_HANDLE, Size: 13, Number: 35843 +> 2021-12-13 11:35:56.059 Type: SSH_FXP_WRITE, Size: 498, Number: 36358 +> 2021-12-13 11:35:56.060 Type: SSH_FXP_CLOSE, Size: 13, Number: 36612 +> 2021-12-13 11:35:56.060 Type: SSH_FXP_SETSTAT, Size: 69, Number: 36105 +< 2021-12-13 11:35:56.068 Type: SSH_FXP_STATUS, Size: 24, Number: 36358 +< 2021-12-13 11:35:56.069 Status code: 0 +< 2021-12-13 11:35:56.075 Type: SSH_FXP_STATUS, Size: 24, Number: 36612 +< 2021-12-13 11:35:56.075 Status code: 0 +. 2021-12-13 11:35:56.076 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.076 Type: SSH_FXP_STATUS, Size: 24, Number: 36105 +< 2021-12-13 11:35:56.076 Status code: 0 +. 2021-12-13 11:35:56.076 Transfer done: 'assets\echarts.58b3187e.js' => '/root/hemodialysis/pc/assets/echarts.58b3187e.js' [473] +. 2021-12-13 11:35:56.077 File: 'assets\editDept.7412b64d.js' [2021-12-13T03:35:50.099Z] [5145] +. 2021-12-13 11:35:56.106 Copying "assets\editDept.7412b64d.js" to remote directory started. +. 2021-12-13 11:35:56.106 Binary transfer mode selected. +. 2021-12-13 11:35:56.106 Opening remote file. +> 2021-12-13 11:35:56.106 Type: SSH_FXP_OPEN, Size: 74, Number: 36867 +< 2021-12-13 11:35:56.121 Type: SSH_FXP_HANDLE, Size: 13, Number: 36867 +> 2021-12-13 11:35:56.122 Type: SSH_FXP_WRITE, Size: 5170, Number: 37382 +> 2021-12-13 11:35:56.122 Type: SSH_FXP_CLOSE, Size: 13, Number: 37636 +> 2021-12-13 11:35:56.122 Type: SSH_FXP_SETSTAT, Size: 70, Number: 37129 +< 2021-12-13 11:35:56.135 Type: SSH_FXP_STATUS, Size: 24, Number: 37382 +< 2021-12-13 11:35:56.135 Status code: 0 +< 2021-12-13 11:35:56.147 Type: SSH_FXP_STATUS, Size: 24, Number: 37636 +< 2021-12-13 11:35:56.147 Status code: 0 +. 2021-12-13 11:35:56.147 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.147 Type: SSH_FXP_STATUS, Size: 24, Number: 37129 +< 2021-12-13 11:35:56.147 Status code: 0 +. 2021-12-13 11:35:56.147 Transfer done: 'assets\editDept.7412b64d.js' => '/root/hemodialysis/pc/assets/editDept.7412b64d.js' [5145] +. 2021-12-13 11:35:56.148 File: 'assets\editDic.a3ca5026.js' [2021-12-13T03:35:50.100Z] [4950] +. 2021-12-13 11:35:56.180 Copying "assets\editDic.a3ca5026.js" to remote directory started. +. 2021-12-13 11:35:56.182 Binary transfer mode selected. +. 2021-12-13 11:35:56.182 Opening remote file. +> 2021-12-13 11:35:56.182 Type: SSH_FXP_OPEN, Size: 73, Number: 37891 +< 2021-12-13 11:35:56.196 Type: SSH_FXP_HANDLE, Size: 13, Number: 37891 +> 2021-12-13 11:35:56.196 Type: SSH_FXP_WRITE, Size: 4975, Number: 38406 +> 2021-12-13 11:35:56.198 Type: SSH_FXP_CLOSE, Size: 13, Number: 38660 +> 2021-12-13 11:35:56.198 Type: SSH_FXP_SETSTAT, Size: 69, Number: 38153 +< 2021-12-13 11:35:56.206 Type: SSH_FXP_STATUS, Size: 24, Number: 38406 +< 2021-12-13 11:35:56.206 Status code: 0 +< 2021-12-13 11:35:56.215 Type: SSH_FXP_STATUS, Size: 24, Number: 38660 +< 2021-12-13 11:35:56.215 Status code: 0 +. 2021-12-13 11:35:56.215 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.215 Type: SSH_FXP_STATUS, Size: 24, Number: 38153 +< 2021-12-13 11:35:56.215 Status code: 0 +. 2021-12-13 11:35:56.216 Transfer done: 'assets\editDic.a3ca5026.js' => '/root/hemodialysis/pc/assets/editDic.a3ca5026.js' [4950] +. 2021-12-13 11:35:56.216 File: 'assets\editMenu.6c483518.js' [2021-12-13T03:35:50.098Z] [9103] +. 2021-12-13 11:35:56.255 Copying "assets\editMenu.6c483518.js" to remote directory started. +. 2021-12-13 11:35:56.255 Binary transfer mode selected. +. 2021-12-13 11:35:56.255 Opening remote file. +> 2021-12-13 11:35:56.255 Type: SSH_FXP_OPEN, Size: 74, Number: 38915 +< 2021-12-13 11:35:56.275 Type: SSH_FXP_HANDLE, Size: 13, Number: 38915 +> 2021-12-13 11:35:56.276 Type: SSH_FXP_WRITE, Size: 9128, Number: 39430 +> 2021-12-13 11:35:56.277 Type: SSH_FXP_CLOSE, Size: 13, Number: 39684 +> 2021-12-13 11:35:56.277 Type: SSH_FXP_SETSTAT, Size: 70, Number: 39177 +< 2021-12-13 11:35:56.287 Type: SSH_FXP_STATUS, Size: 24, Number: 39430 +< 2021-12-13 11:35:56.288 Status code: 0 +< 2021-12-13 11:35:56.300 Type: SSH_FXP_STATUS, Size: 24, Number: 39684 +< 2021-12-13 11:35:56.300 Status code: 0 +. 2021-12-13 11:35:56.301 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.301 Type: SSH_FXP_STATUS, Size: 24, Number: 39177 +< 2021-12-13 11:35:56.301 Status code: 0 +. 2021-12-13 11:35:56.301 Transfer done: 'assets\editMenu.6c483518.js' => '/root/hemodialysis/pc/assets/editMenu.6c483518.js' [9103] +. 2021-12-13 11:35:56.301 File: 'assets\editRole.08906a33.css' [2021-12-13T03:35:50.113Z] [201] +. 2021-12-13 11:35:56.316 Copying "assets\editRole.08906a33.css" to remote directory started. +. 2021-12-13 11:35:56.317 Binary transfer mode selected. +. 2021-12-13 11:35:56.317 Opening remote file. +> 2021-12-13 11:35:56.317 Type: SSH_FXP_OPEN, Size: 75, Number: 39939 +< 2021-12-13 11:35:56.327 Type: SSH_FXP_HANDLE, Size: 13, Number: 39939 +> 2021-12-13 11:35:56.327 Type: SSH_FXP_WRITE, Size: 226, Number: 40454 +> 2021-12-13 11:35:56.328 Type: SSH_FXP_CLOSE, Size: 13, Number: 40708 +> 2021-12-13 11:35:56.328 Type: SSH_FXP_SETSTAT, Size: 71, Number: 40201 +< 2021-12-13 11:35:56.341 Type: SSH_FXP_STATUS, Size: 24, Number: 40454 +< 2021-12-13 11:35:56.341 Status code: 0 +< 2021-12-13 11:35:56.353 Type: SSH_FXP_STATUS, Size: 24, Number: 40708 +< 2021-12-13 11:35:56.353 Status code: 0 +. 2021-12-13 11:35:56.354 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.354 Type: SSH_FXP_STATUS, Size: 24, Number: 40201 +< 2021-12-13 11:35:56.354 Status code: 0 +. 2021-12-13 11:35:56.354 Transfer done: 'assets\editRole.08906a33.css' => '/root/hemodialysis/pc/assets/editRole.08906a33.css' [201] +. 2021-12-13 11:35:56.356 File: 'assets\editRole.d47f60fd.js' [2021-12-13T03:35:50.099Z] [4037] +. 2021-12-13 11:35:56.390 Copying "assets\editRole.d47f60fd.js" to remote directory started. +. 2021-12-13 11:35:56.390 Binary transfer mode selected. +. 2021-12-13 11:35:56.390 Opening remote file. +> 2021-12-13 11:35:56.390 Type: SSH_FXP_OPEN, Size: 74, Number: 40963 +< 2021-12-13 11:35:56.402 Type: SSH_FXP_HANDLE, Size: 13, Number: 40963 +> 2021-12-13 11:35:56.402 Type: SSH_FXP_WRITE, Size: 4062, Number: 41478 +> 2021-12-13 11:35:56.403 Type: SSH_FXP_CLOSE, Size: 13, Number: 41732 +> 2021-12-13 11:35:56.403 Type: SSH_FXP_SETSTAT, Size: 70, Number: 41225 +< 2021-12-13 11:35:56.412 Type: SSH_FXP_STATUS, Size: 24, Number: 41478 +< 2021-12-13 11:35:56.412 Status code: 0 +< 2021-12-13 11:35:56.423 Type: SSH_FXP_STATUS, Size: 24, Number: 41732 +< 2021-12-13 11:35:56.423 Status code: 0 +. 2021-12-13 11:35:56.424 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.424 Type: SSH_FXP_STATUS, Size: 24, Number: 41225 +< 2021-12-13 11:35:56.424 Status code: 0 +. 2021-12-13 11:35:56.424 Transfer done: 'assets\editRole.d47f60fd.js' => '/root/hemodialysis/pc/assets/editRole.d47f60fd.js' [4037] +. 2021-12-13 11:35:56.425 File: 'assets\editUser.25532b6e.js' [2021-12-13T03:35:50.099Z] [4992] +. 2021-12-13 11:35:56.457 Copying "assets\editUser.25532b6e.js" to remote directory started. +. 2021-12-13 11:35:56.457 Binary transfer mode selected. +. 2021-12-13 11:35:56.457 Opening remote file. +> 2021-12-13 11:35:56.457 Type: SSH_FXP_OPEN, Size: 74, Number: 41987 +< 2021-12-13 11:35:56.465 Type: SSH_FXP_HANDLE, Size: 13, Number: 41987 +> 2021-12-13 11:35:56.465 Type: SSH_FXP_WRITE, Size: 5017, Number: 42502 +> 2021-12-13 11:35:56.466 Type: SSH_FXP_CLOSE, Size: 13, Number: 42756 +> 2021-12-13 11:35:56.466 Type: SSH_FXP_SETSTAT, Size: 70, Number: 42249 +< 2021-12-13 11:35:56.475 Type: SSH_FXP_STATUS, Size: 24, Number: 42502 +< 2021-12-13 11:35:56.475 Status code: 0 +< 2021-12-13 11:35:56.488 Type: SSH_FXP_STATUS, Size: 24, Number: 42756 +< 2021-12-13 11:35:56.488 Status code: 0 +. 2021-12-13 11:35:56.489 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.489 Type: SSH_FXP_STATUS, Size: 24, Number: 42249 +< 2021-12-13 11:35:56.489 Status code: 0 +. 2021-12-13 11:35:56.489 Transfer done: 'assets\editUser.25532b6e.js' => '/root/hemodialysis/pc/assets/editUser.25532b6e.js' [4992] +. 2021-12-13 11:35:56.489 File: 'assets\formRulesOne.50aec06c.js' [2021-12-13T03:35:50.105Z] [2938] +. 2021-12-13 11:35:56.522 Copying "assets\formRulesOne.50aec06c.js" to remote directory started. +. 2021-12-13 11:35:56.522 Binary transfer mode selected. +. 2021-12-13 11:35:56.522 Opening remote file. +> 2021-12-13 11:35:56.522 Type: SSH_FXP_OPEN, Size: 78, Number: 43011 +< 2021-12-13 11:35:56.534 Type: SSH_FXP_HANDLE, Size: 13, Number: 43011 +> 2021-12-13 11:35:56.535 Type: SSH_FXP_WRITE, Size: 2963, Number: 43526 +> 2021-12-13 11:35:56.535 Type: SSH_FXP_CLOSE, Size: 13, Number: 43780 +> 2021-12-13 11:35:56.535 Type: SSH_FXP_SETSTAT, Size: 74, Number: 43273 +< 2021-12-13 11:35:56.548 Type: SSH_FXP_STATUS, Size: 24, Number: 43526 +< 2021-12-13 11:35:56.549 Status code: 0 +< 2021-12-13 11:35:56.561 Type: SSH_FXP_STATUS, Size: 24, Number: 43780 +< 2021-12-13 11:35:56.562 Status code: 0 +. 2021-12-13 11:35:56.562 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.562 Type: SSH_FXP_STATUS, Size: 24, Number: 43273 +< 2021-12-13 11:35:56.562 Status code: 0 +. 2021-12-13 11:35:56.562 Transfer done: 'assets\formRulesOne.50aec06c.js' => '/root/hemodialysis/pc/assets/formRulesOne.50aec06c.js' [2938] +. 2021-12-13 11:35:56.563 File: 'assets\formRulesThree.429b80b8.js' [2021-12-13T03:35:50.106Z] [2653] +. 2021-12-13 11:35:56.596 Copying "assets\formRulesThree.429b80b8.js" to remote directory started. +. 2021-12-13 11:35:56.596 Binary transfer mode selected. +. 2021-12-13 11:35:56.596 Opening remote file. +> 2021-12-13 11:35:56.596 Type: SSH_FXP_OPEN, Size: 80, Number: 44035 +< 2021-12-13 11:35:56.609 Type: SSH_FXP_HANDLE, Size: 13, Number: 44035 +> 2021-12-13 11:35:56.609 Type: SSH_FXP_WRITE, Size: 2678, Number: 44550 +> 2021-12-13 11:35:56.610 Type: SSH_FXP_CLOSE, Size: 13, Number: 44804 +> 2021-12-13 11:35:56.610 Type: SSH_FXP_SETSTAT, Size: 76, Number: 44297 +< 2021-12-13 11:35:56.625 Type: SSH_FXP_STATUS, Size: 24, Number: 44550 +< 2021-12-13 11:35:56.625 Status code: 0 +< 2021-12-13 11:35:56.633 Type: SSH_FXP_STATUS, Size: 24, Number: 44804 +< 2021-12-13 11:35:56.633 Status code: 0 +. 2021-12-13 11:35:56.633 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.633 Type: SSH_FXP_STATUS, Size: 24, Number: 44297 +< 2021-12-13 11:35:56.633 Status code: 0 +. 2021-12-13 11:35:56.633 Transfer done: 'assets\formRulesThree.429b80b8.js' => '/root/hemodialysis/pc/assets/formRulesThree.429b80b8.js' [2653] +. 2021-12-13 11:35:56.634 File: 'assets\formRulesTwo.e9aa8de3.js' [2021-12-13T03:35:50.105Z] [2576] +. 2021-12-13 11:35:56.665 Copying "assets\formRulesTwo.e9aa8de3.js" to remote directory started. +. 2021-12-13 11:35:56.666 Binary transfer mode selected. +. 2021-12-13 11:35:56.666 Opening remote file. +> 2021-12-13 11:35:56.666 Type: SSH_FXP_OPEN, Size: 78, Number: 45059 +< 2021-12-13 11:35:56.677 Type: SSH_FXP_HANDLE, Size: 13, Number: 45059 +> 2021-12-13 11:35:56.677 Type: SSH_FXP_WRITE, Size: 2601, Number: 45574 +> 2021-12-13 11:35:56.678 Type: SSH_FXP_CLOSE, Size: 13, Number: 45828 +> 2021-12-13 11:35:56.678 Type: SSH_FXP_SETSTAT, Size: 74, Number: 45321 +< 2021-12-13 11:35:56.687 Type: SSH_FXP_STATUS, Size: 24, Number: 45574 +< 2021-12-13 11:35:56.687 Status code: 0 +< 2021-12-13 11:35:56.697 Type: SSH_FXP_STATUS, Size: 24, Number: 45828 +< 2021-12-13 11:35:56.697 Status code: 0 +. 2021-12-13 11:35:56.698 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.698 Type: SSH_FXP_STATUS, Size: 24, Number: 45321 +< 2021-12-13 11:35:56.698 Status code: 0 +. 2021-12-13 11:35:56.698 Transfer done: 'assets\formRulesTwo.e9aa8de3.js' => '/root/hemodialysis/pc/assets/formRulesTwo.e9aa8de3.js' [2576] +. 2021-12-13 11:35:56.699 File: 'assets\getStyleSheets.885e6ae1.js' [2021-12-13T03:35:50.098Z] [1467] +. 2021-12-13 11:35:56.717 Copying "assets\getStyleSheets.885e6ae1.js" to remote directory started. +. 2021-12-13 11:35:56.717 Binary transfer mode selected. +. 2021-12-13 11:35:56.717 Opening remote file. +> 2021-12-13 11:35:56.717 Type: SSH_FXP_OPEN, Size: 80, Number: 46083 +< 2021-12-13 11:35:56.727 Type: SSH_FXP_HANDLE, Size: 13, Number: 46083 +> 2021-12-13 11:35:56.727 Type: SSH_FXP_WRITE, Size: 1492, Number: 46598 +> 2021-12-13 11:35:56.728 Type: SSH_FXP_CLOSE, Size: 13, Number: 46852 +> 2021-12-13 11:35:56.728 Type: SSH_FXP_SETSTAT, Size: 76, Number: 46345 +< 2021-12-13 11:35:56.736 Type: SSH_FXP_STATUS, Size: 24, Number: 46598 +< 2021-12-13 11:35:56.736 Status code: 0 +< 2021-12-13 11:35:56.747 Type: SSH_FXP_STATUS, Size: 24, Number: 46852 +< 2021-12-13 11:35:56.747 Status code: 0 +. 2021-12-13 11:35:56.747 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.747 Type: SSH_FXP_STATUS, Size: 24, Number: 46345 +< 2021-12-13 11:35:56.747 Status code: 0 +. 2021-12-13 11:35:56.748 Transfer done: 'assets\getStyleSheets.885e6ae1.js' => '/root/hemodialysis/pc/assets/getStyleSheets.885e6ae1.js' [1467] +. 2021-12-13 11:35:56.748 File: 'assets\head.4a800d99.js' [2021-12-13T03:35:50.108Z] [1215] +. 2021-12-13 11:35:56.781 Copying "assets\head.4a800d99.js" to remote directory started. +. 2021-12-13 11:35:56.781 Binary transfer mode selected. +. 2021-12-13 11:35:56.781 Opening remote file. +> 2021-12-13 11:35:56.781 Type: SSH_FXP_OPEN, Size: 70, Number: 47107 +< 2021-12-13 11:35:56.793 Type: SSH_FXP_HANDLE, Size: 13, Number: 47107 +> 2021-12-13 11:35:56.794 Type: SSH_FXP_WRITE, Size: 1240, Number: 47622 +> 2021-12-13 11:35:56.794 Type: SSH_FXP_CLOSE, Size: 13, Number: 47876 +> 2021-12-13 11:35:56.794 Type: SSH_FXP_SETSTAT, Size: 66, Number: 47369 +< 2021-12-13 11:35:56.805 Type: SSH_FXP_STATUS, Size: 24, Number: 47622 +< 2021-12-13 11:35:56.805 Status code: 0 +< 2021-12-13 11:35:56.814 Type: SSH_FXP_STATUS, Size: 24, Number: 47876 +< 2021-12-13 11:35:56.814 Status code: 0 +. 2021-12-13 11:35:56.814 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.814 Type: SSH_FXP_STATUS, Size: 24, Number: 47369 +< 2021-12-13 11:35:56.814 Status code: 0 +. 2021-12-13 11:35:56.814 Transfer done: 'assets\head.4a800d99.js' => '/root/hemodialysis/pc/assets/head.4a800d99.js' [1215] +. 2021-12-13 11:35:56.815 File: 'assets\head.e0267c82.css' [2021-12-13T03:35:50.112Z] [1319] +. 2021-12-13 11:35:56.830 Copying "assets\head.e0267c82.css" to remote directory started. +. 2021-12-13 11:35:56.830 Binary transfer mode selected. +. 2021-12-13 11:35:56.830 Opening remote file. +> 2021-12-13 11:35:56.830 Type: SSH_FXP_OPEN, Size: 71, Number: 48131 +< 2021-12-13 11:35:56.841 Type: SSH_FXP_HANDLE, Size: 13, Number: 48131 +> 2021-12-13 11:35:56.841 Type: SSH_FXP_WRITE, Size: 1344, Number: 48646 +> 2021-12-13 11:35:56.841 Type: SSH_FXP_CLOSE, Size: 13, Number: 48900 +> 2021-12-13 11:35:56.842 Type: SSH_FXP_SETSTAT, Size: 67, Number: 48393 +< 2021-12-13 11:35:56.852 Type: SSH_FXP_STATUS, Size: 24, Number: 48646 +< 2021-12-13 11:35:56.852 Status code: 0 +< 2021-12-13 11:35:56.863 Type: SSH_FXP_STATUS, Size: 24, Number: 48900 +< 2021-12-13 11:35:56.863 Status code: 0 +. 2021-12-13 11:35:56.863 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.863 Type: SSH_FXP_STATUS, Size: 24, Number: 48393 +< 2021-12-13 11:35:56.863 Status code: 0 +. 2021-12-13 11:35:56.863 Transfer done: 'assets\head.e0267c82.css' => '/root/hemodialysis/pc/assets/head.e0267c82.css' [1319] +. 2021-12-13 11:35:56.864 File: 'assets\iframes.cc4fca40.js' [2021-12-13T03:35:50.111Z] [1379] +. 2021-12-13 11:35:56.883 Copying "assets\iframes.cc4fca40.js" to remote directory started. +. 2021-12-13 11:35:56.885 Binary transfer mode selected. +. 2021-12-13 11:35:56.885 Opening remote file. +> 2021-12-13 11:35:56.885 Type: SSH_FXP_OPEN, Size: 73, Number: 49155 +< 2021-12-13 11:35:56.894 Type: SSH_FXP_HANDLE, Size: 13, Number: 49155 +> 2021-12-13 11:35:56.894 Type: SSH_FXP_WRITE, Size: 1404, Number: 49670 +> 2021-12-13 11:35:56.895 Type: SSH_FXP_CLOSE, Size: 13, Number: 49924 +> 2021-12-13 11:35:56.895 Type: SSH_FXP_SETSTAT, Size: 69, Number: 49417 +< 2021-12-13 11:35:56.910 Type: SSH_FXP_STATUS, Size: 24, Number: 49670 +< 2021-12-13 11:35:56.910 Status code: 0 +< 2021-12-13 11:35:56.923 Type: SSH_FXP_STATUS, Size: 24, Number: 49924 +< 2021-12-13 11:35:56.923 Status code: 0 +. 2021-12-13 11:35:56.923 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:56.923 Type: SSH_FXP_STATUS, Size: 24, Number: 49417 +< 2021-12-13 11:35:56.924 Status code: 0 +. 2021-12-13 11:35:56.924 Transfer done: 'assets\iframes.cc4fca40.js' => '/root/hemodialysis/pc/assets/iframes.cc4fca40.js' [1379] +. 2021-12-13 11:35:56.924 File: 'assets\index.00cfe0f5.js' [2021-12-13T03:35:50.107Z] [226786] +. 2021-12-13 11:35:57.022 Copying "assets\index.00cfe0f5.js" to remote directory started. +. 2021-12-13 11:35:57.022 Binary transfer mode selected. +. 2021-12-13 11:35:57.023 Opening remote file. +> 2021-12-13 11:35:57.023 Type: SSH_FXP_OPEN, Size: 80, Number: 50179 +< 2021-12-13 11:35:57.033 Type: SSH_FXP_HANDLE, Size: 13, Number: 50179 +> 2021-12-13 11:35:57.034 Type: SSH_FXP_WRITE, Size: 32764, Number: 50694 +. 2021-12-13 11:35:57.041 6 skipped SSH_FXP_WRITE, SSH_FXP_READ, SSH_FXP_DATA and SSH_FXP_STATUS packets. +> 2021-12-13 11:35:57.041 Type: SSH_FXP_CLOSE, Size: 13, Number: 52484 +< 2021-12-13 11:35:57.047 Type: SSH_FXP_STATUS, Size: 24, Number: 50694 +< 2021-12-13 11:35:57.047 Status code: 0 +< 2021-12-13 11:35:57.048 Type: SSH_FXP_STATUS, Size: 24, Number: 50950 +< 2021-12-13 11:35:57.048 Status code: 0 +< 2021-12-13 11:35:57.062 Type: SSH_FXP_STATUS, Size: 24, Number: 51206 +< 2021-12-13 11:35:57.062 Status code: 0 +< 2021-12-13 11:35:57.062 Type: SSH_FXP_STATUS, Size: 24, Number: 51462 +< 2021-12-13 11:35:57.062 Status code: 0 +< 2021-12-13 11:35:57.063 Type: SSH_FXP_STATUS, Size: 24, Number: 51718 +< 2021-12-13 11:35:57.063 Status code: 0 +< 2021-12-13 11:35:57.063 Type: SSH_FXP_STATUS, Size: 24, Number: 51974 +< 2021-12-13 11:35:57.063 Status code: 0 +< 2021-12-13 11:35:57.063 Type: SSH_FXP_STATUS, Size: 24, Number: 52230 +< 2021-12-13 11:35:57.063 Status code: 0 +< 2021-12-13 11:35:57.063 Type: SSH_FXP_STATUS, Size: 24, Number: 52484 +< 2021-12-13 11:35:57.063 Status code: 0 +> 2021-12-13 11:35:57.063 Type: SSH_FXP_RENAME, Size: 114, Number: 52754 +< 2021-12-13 11:35:57.074 Type: SSH_FXP_STATUS, Size: 24, Number: 52754 +< 2021-12-13 11:35:57.074 Status code: 0 +. 2021-12-13 11:35:57.074 Preserving timestamp [2021-12-13T03:35:50.000Z] +> 2021-12-13 11:35:57.074 Type: SSH_FXP_SETSTAT, Size: 67, Number: 50441 +< 2021-12-13 11:35:57.085 Type: SSH_FXP_STATUS, Size: 24, Number: 50441 +< 2021-12-13 11:35:57.085 Status code: 0 +. 2021-12-13 11:35:57.085 Transfer done: 'assets\index.00cfe0f5.js' => '/root/hemodialysis/pc/assets/index.00cfe0f5.js' [226786] +. 2021-12-13 11:35:57.085 File: 'assets\index.06640ea6.js' [2021-12-13T03:35:50.109Z] [2943] +. 2021-12-13 11:35:57.103 Copying "assets\index.06640ea6.js" to remote directory started. +. 2021-12-13 11:35:57.103 Binary transfer mode selected. +. 2021-12-13 11:35:57.103 Opening remote file. +> 2021-12-13 11:35:57.103 Type: SSH_FXP_OPEN, Size: 71, Number: 52995 +< 2021-12-13 11:35:57.113 Type: SSH_FXP_HANDLE, Size: 13, Number: 52995 +> 2021-12-13 11:35:57.113 Type: SSH_FXP_WRITE, Size: 2968, Number: 53510 +> 2021-12-13 11:35:57.114 Type: SSH_FXP_CLOSE, Size: 13, Number: 53764 +> 2021-12-13 11:35:57.114 Type: SSH_FXP_SETSTAT, Size: 67, Number: 53257 +< 2021-12-13 11:35:57.135 Type: SSH_FXP_STATUS, Size: 24, Number: 53510 +< 2021-12-13 11:35:57.135 Status code: 0 +< 2021-12-13 11:35:57.146 Type: SSH_FXP_STATUS, Size: 24, Number: 53764 +< 2021-12-13 11:35:57.146 Status code: 0 +. 2021-12-13 11:35:57.146 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:57.146 Type: SSH_FXP_STATUS, Size: 24, Number: 53257 +< 2021-12-13 11:35:57.146 Status code: 0 +. 2021-12-13 11:35:57.146 Transfer done: 'assets\index.06640ea6.js' => '/root/hemodialysis/pc/assets/index.06640ea6.js' [2943] +. 2021-12-13 11:35:57.147 File: 'assets\index.082ef6f0.js' [2021-12-13T03:35:50.099Z] [5765] +. 2021-12-13 11:35:57.180 Copying "assets\index.082ef6f0.js" to remote directory started. +. 2021-12-13 11:35:57.183 Binary transfer mode selected. +. 2021-12-13 11:35:57.183 Opening remote file. +> 2021-12-13 11:35:57.183 Type: SSH_FXP_OPEN, Size: 71, Number: 54019 +< 2021-12-13 11:35:57.195 Type: SSH_FXP_HANDLE, Size: 13, Number: 54019 +> 2021-12-13 11:35:57.195 Type: SSH_FXP_WRITE, Size: 5790, Number: 54534 +> 2021-12-13 11:35:57.196 Type: SSH_FXP_CLOSE, Size: 13, Number: 54788 +> 2021-12-13 11:35:57.196 Type: SSH_FXP_SETSTAT, Size: 67, Number: 54281 +< 2021-12-13 11:35:57.212 Type: SSH_FXP_STATUS, Size: 24, Number: 54534 +< 2021-12-13 11:35:57.212 Status code: 0 +< 2021-12-13 11:35:57.224 Type: SSH_FXP_STATUS, Size: 24, Number: 54788 +< 2021-12-13 11:35:57.224 Status code: 0 +. 2021-12-13 11:35:57.224 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:57.224 Type: SSH_FXP_STATUS, Size: 24, Number: 54281 +< 2021-12-13 11:35:57.224 Status code: 0 +. 2021-12-13 11:35:57.224 Transfer done: 'assets\index.082ef6f0.js' => '/root/hemodialysis/pc/assets/index.082ef6f0.js' [5765] +. 2021-12-13 11:35:57.225 File: 'assets\index.083252c5.js' [2021-12-13T03:35:50.106Z] [6865] +. 2021-12-13 11:35:57.266 Copying "assets\index.083252c5.js" to remote directory started. +. 2021-12-13 11:35:57.266 Binary transfer mode selected. +. 2021-12-13 11:35:57.266 Opening remote file. +> 2021-12-13 11:35:57.267 Type: SSH_FXP_OPEN, Size: 71, Number: 55043 +< 2021-12-13 11:35:57.289 Type: SSH_FXP_HANDLE, Size: 13, Number: 55043 +> 2021-12-13 11:35:57.289 Type: SSH_FXP_WRITE, Size: 6890, Number: 55558 +> 2021-12-13 11:35:57.291 Type: SSH_FXP_CLOSE, Size: 13, Number: 55812 +> 2021-12-13 11:35:57.291 Type: SSH_FXP_SETSTAT, Size: 67, Number: 55305 +< 2021-12-13 11:35:57.302 Type: SSH_FXP_STATUS, Size: 24, Number: 55558 +< 2021-12-13 11:35:57.303 Status code: 0 +< 2021-12-13 11:35:57.312 Type: SSH_FXP_STATUS, Size: 24, Number: 55812 +< 2021-12-13 11:35:57.312 Status code: 0 +. 2021-12-13 11:35:57.313 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:57.313 Type: SSH_FXP_STATUS, Size: 24, Number: 55305 +< 2021-12-13 11:35:57.313 Status code: 0 +. 2021-12-13 11:35:57.313 Transfer done: 'assets\index.083252c5.js' => '/root/hemodialysis/pc/assets/index.083252c5.js' [6865] +. 2021-12-13 11:35:57.313 File: 'assets\index.08531757.js' [2021-12-13T03:35:50.101Z] [1787] +. 2021-12-13 11:35:57.358 Copying "assets\index.08531757.js" to remote directory started. +. 2021-12-13 11:35:57.359 Binary transfer mode selected. +. 2021-12-13 11:35:57.359 Opening remote file. +> 2021-12-13 11:35:57.359 Type: SSH_FXP_OPEN, Size: 71, Number: 56067 +< 2021-12-13 11:35:57.371 Type: SSH_FXP_HANDLE, Size: 13, Number: 56067 +> 2021-12-13 11:35:57.371 Type: SSH_FXP_WRITE, Size: 1812, Number: 56582 +> 2021-12-13 11:35:57.372 Type: SSH_FXP_CLOSE, Size: 13, Number: 56836 +> 2021-12-13 11:35:57.372 Type: SSH_FXP_SETSTAT, Size: 67, Number: 56329 +< 2021-12-13 11:35:57.389 Type: SSH_FXP_STATUS, Size: 24, Number: 56582 +< 2021-12-13 11:35:57.389 Status code: 0 +< 2021-12-13 11:35:57.403 Type: SSH_FXP_STATUS, Size: 24, Number: 56836 +< 2021-12-13 11:35:57.403 Status code: 0 +. 2021-12-13 11:35:57.404 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:57.404 Type: SSH_FXP_STATUS, Size: 24, Number: 56329 +< 2021-12-13 11:35:57.404 Status code: 0 +. 2021-12-13 11:35:57.404 Transfer done: 'assets\index.08531757.js' => '/root/hemodialysis/pc/assets/index.08531757.js' [1787] +. 2021-12-13 11:35:57.405 File: 'assets\index.085c646c.js' [2021-12-13T03:35:50.103Z] [51784] +. 2021-12-13 11:35:57.474 Copying "assets\index.085c646c.js" to remote directory started. +. 2021-12-13 11:35:57.474 Binary transfer mode selected. +. 2021-12-13 11:35:57.474 Opening remote file. +> 2021-12-13 11:35:57.474 Type: SSH_FXP_OPEN, Size: 71, Number: 57091 +< 2021-12-13 11:35:57.487 Type: SSH_FXP_HANDLE, Size: 13, Number: 57091 +> 2021-12-13 11:35:57.487 Type: SSH_FXP_WRITE, Size: 32764, Number: 57606 +. 2021-12-13 11:35:57.490 1 skipped SSH_FXP_WRITE, SSH_FXP_READ, SSH_FXP_DATA and SSH_FXP_STATUS packets. +> 2021-12-13 11:35:57.490 Type: SSH_FXP_CLOSE, Size: 13, Number: 58116 +> 2021-12-13 11:35:57.490 Type: SSH_FXP_SETSTAT, Size: 67, Number: 57353 +< 2021-12-13 11:35:57.502 Type: SSH_FXP_STATUS, Size: 24, Number: 57606 +< 2021-12-13 11:35:57.502 Status code: 0 +< 2021-12-13 11:35:57.503 Type: SSH_FXP_STATUS, Size: 24, Number: 57862 +< 2021-12-13 11:35:57.503 Status code: 0 +< 2021-12-13 11:35:57.524 Type: SSH_FXP_STATUS, Size: 24, Number: 58116 +< 2021-12-13 11:35:57.524 Status code: 0 +. 2021-12-13 11:35:57.525 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:57.525 Type: SSH_FXP_STATUS, Size: 24, Number: 57353 +< 2021-12-13 11:35:57.525 Status code: 0 +. 2021-12-13 11:35:57.525 Transfer done: 'assets\index.085c646c.js' => '/root/hemodialysis/pc/assets/index.085c646c.js' [51784] +. 2021-12-13 11:35:57.526 File: 'assets\index.0a646f88.css' [2021-12-13T03:35:50.114Z] [1258] +. 2021-12-13 11:35:57.548 Copying "assets\index.0a646f88.css" to remote directory started. +. 2021-12-13 11:35:57.548 Binary transfer mode selected. +. 2021-12-13 11:35:57.548 Opening remote file. +> 2021-12-13 11:35:57.548 Type: SSH_FXP_OPEN, Size: 72, Number: 58371 +< 2021-12-13 11:35:57.559 Type: SSH_FXP_HANDLE, Size: 13, Number: 58371 +> 2021-12-13 11:35:57.559 Type: SSH_FXP_WRITE, Size: 1283, Number: 58886 +> 2021-12-13 11:35:57.560 Type: SSH_FXP_CLOSE, Size: 13, Number: 59140 +> 2021-12-13 11:35:57.560 Type: SSH_FXP_SETSTAT, Size: 68, Number: 58633 +< 2021-12-13 11:35:57.570 Type: SSH_FXP_STATUS, Size: 24, Number: 58886 +< 2021-12-13 11:35:57.570 Status code: 0 +< 2021-12-13 11:35:57.579 Type: SSH_FXP_STATUS, Size: 24, Number: 59140 +< 2021-12-13 11:35:57.579 Status code: 0 +. 2021-12-13 11:35:57.579 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:57.579 Type: SSH_FXP_STATUS, Size: 24, Number: 58633 +< 2021-12-13 11:35:57.579 Status code: 0 +. 2021-12-13 11:35:57.579 Transfer done: 'assets\index.0a646f88.css' => '/root/hemodialysis/pc/assets/index.0a646f88.css' [1258] +. 2021-12-13 11:35:57.580 File: 'assets\index.0b3f923e.css' [2021-12-13T03:35:50.112Z] [16287] +. 2021-12-13 11:35:57.600 Copying "assets\index.0b3f923e.css" to remote directory started. +. 2021-12-13 11:35:57.600 Binary transfer mode selected. +. 2021-12-13 11:35:57.600 Opening remote file. +> 2021-12-13 11:35:57.600 Type: SSH_FXP_OPEN, Size: 72, Number: 59395 +< 2021-12-13 11:35:57.611 Type: SSH_FXP_HANDLE, Size: 13, Number: 59395 +> 2021-12-13 11:35:57.611 Type: SSH_FXP_WRITE, Size: 16312, Number: 59910 +> 2021-12-13 11:35:57.612 Type: SSH_FXP_CLOSE, Size: 13, Number: 60164 +> 2021-12-13 11:35:57.612 Type: SSH_FXP_SETSTAT, Size: 68, Number: 59657 +< 2021-12-13 11:35:57.623 Type: SSH_FXP_STATUS, Size: 24, Number: 59910 +< 2021-12-13 11:35:57.623 Status code: 0 +< 2021-12-13 11:35:57.633 Type: SSH_FXP_STATUS, Size: 24, Number: 60164 +< 2021-12-13 11:35:57.633 Status code: 0 +. 2021-12-13 11:35:57.633 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:57.633 Type: SSH_FXP_STATUS, Size: 24, Number: 59657 +< 2021-12-13 11:35:57.634 Status code: 0 +. 2021-12-13 11:35:57.634 Transfer done: 'assets\index.0b3f923e.css' => '/root/hemodialysis/pc/assets/index.0b3f923e.css' [16287] +. 2021-12-13 11:35:57.634 File: 'assets\index.0c63486d.js' [2021-12-13T03:35:50.106Z] [1362] +. 2021-12-13 11:35:57.662 Copying "assets\index.0c63486d.js" to remote directory started. +. 2021-12-13 11:35:57.662 Binary transfer mode selected. +. 2021-12-13 11:35:57.662 Opening remote file. +> 2021-12-13 11:35:57.662 Type: SSH_FXP_OPEN, Size: 71, Number: 60419 +< 2021-12-13 11:35:57.671 Type: SSH_FXP_HANDLE, Size: 13, Number: 60419 +> 2021-12-13 11:35:57.671 Type: SSH_FXP_WRITE, Size: 1387, Number: 60934 +> 2021-12-13 11:35:57.671 Type: SSH_FXP_CLOSE, Size: 13, Number: 61188 +> 2021-12-13 11:35:57.672 Type: SSH_FXP_SETSTAT, Size: 67, Number: 60681 +< 2021-12-13 11:35:57.681 Type: SSH_FXP_STATUS, Size: 24, Number: 60934 +< 2021-12-13 11:35:57.681 Status code: 0 +< 2021-12-13 11:35:57.690 Type: SSH_FXP_STATUS, Size: 24, Number: 61188 +< 2021-12-13 11:35:57.690 Status code: 0 +. 2021-12-13 11:35:57.690 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:57.691 Type: SSH_FXP_STATUS, Size: 24, Number: 60681 +< 2021-12-13 11:35:57.691 Status code: 0 +. 2021-12-13 11:35:57.691 Transfer done: 'assets\index.0c63486d.js' => '/root/hemodialysis/pc/assets/index.0c63486d.js' [1362] +. 2021-12-13 11:35:57.691 File: 'assets\index.1760156f.js' [2021-12-13T03:35:50.100Z] [840] +. 2021-12-13 11:35:57.718 Copying "assets\index.1760156f.js" to remote directory started. +. 2021-12-13 11:35:57.718 Binary transfer mode selected. +. 2021-12-13 11:35:57.718 Opening remote file. +> 2021-12-13 11:35:57.718 Type: SSH_FXP_OPEN, Size: 71, Number: 61443 +< 2021-12-13 11:35:57.729 Type: SSH_FXP_HANDLE, Size: 13, Number: 61443 +> 2021-12-13 11:35:57.729 Type: SSH_FXP_WRITE, Size: 865, Number: 61958 +> 2021-12-13 11:35:57.730 Type: SSH_FXP_CLOSE, Size: 13, Number: 62212 +> 2021-12-13 11:35:57.730 Type: SSH_FXP_SETSTAT, Size: 67, Number: 61705 +< 2021-12-13 11:35:57.739 Type: SSH_FXP_STATUS, Size: 24, Number: 61958 +< 2021-12-13 11:35:57.739 Status code: 0 +< 2021-12-13 11:35:57.754 Type: SSH_FXP_STATUS, Size: 24, Number: 62212 +< 2021-12-13 11:35:57.754 Status code: 0 +. 2021-12-13 11:35:57.754 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:57.755 Type: SSH_FXP_STATUS, Size: 24, Number: 61705 +< 2021-12-13 11:35:57.755 Status code: 0 +. 2021-12-13 11:35:57.755 Transfer done: 'assets\index.1760156f.js' => '/root/hemodialysis/pc/assets/index.1760156f.js' [840] +. 2021-12-13 11:35:57.755 File: 'assets\index.26f7bad7.js' [2021-12-13T03:35:50.104Z] [1467] +. 2021-12-13 11:35:57.773 Copying "assets\index.26f7bad7.js" to remote directory started. +. 2021-12-13 11:35:57.776 Binary transfer mode selected. +. 2021-12-13 11:35:57.776 Opening remote file. +> 2021-12-13 11:35:57.776 Type: SSH_FXP_OPEN, Size: 71, Number: 62467 +< 2021-12-13 11:35:57.787 Type: SSH_FXP_HANDLE, Size: 13, Number: 62467 +> 2021-12-13 11:35:57.787 Type: SSH_FXP_WRITE, Size: 1492, Number: 62982 +> 2021-12-13 11:35:57.788 Type: SSH_FXP_CLOSE, Size: 13, Number: 63236 +> 2021-12-13 11:35:57.788 Type: SSH_FXP_SETSTAT, Size: 67, Number: 62729 +< 2021-12-13 11:35:57.797 Type: SSH_FXP_STATUS, Size: 24, Number: 62982 +< 2021-12-13 11:35:57.797 Status code: 0 +< 2021-12-13 11:35:57.809 Type: SSH_FXP_STATUS, Size: 24, Number: 63236 +< 2021-12-13 11:35:57.809 Status code: 0 +. 2021-12-13 11:35:57.810 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:57.810 Type: SSH_FXP_STATUS, Size: 24, Number: 62729 +< 2021-12-13 11:35:57.810 Status code: 0 +. 2021-12-13 11:35:57.810 Transfer done: 'assets\index.26f7bad7.js' => '/root/hemodialysis/pc/assets/index.26f7bad7.js' [1467] +. 2021-12-13 11:35:57.811 File: 'assets\index.27d02ea2.css' [2021-12-13T03:35:50.114Z] [966] +. 2021-12-13 11:35:57.827 Copying "assets\index.27d02ea2.css" to remote directory started. +. 2021-12-13 11:35:57.827 Binary transfer mode selected. +. 2021-12-13 11:35:57.827 Opening remote file. +> 2021-12-13 11:35:57.827 Type: SSH_FXP_OPEN, Size: 72, Number: 63491 +< 2021-12-13 11:35:57.837 Type: SSH_FXP_HANDLE, Size: 13, Number: 63491 +> 2021-12-13 11:35:57.837 Type: SSH_FXP_WRITE, Size: 991, Number: 64006 +> 2021-12-13 11:35:57.838 Type: SSH_FXP_CLOSE, Size: 13, Number: 64260 +> 2021-12-13 11:35:57.838 Type: SSH_FXP_SETSTAT, Size: 68, Number: 63753 +< 2021-12-13 11:35:57.846 Type: SSH_FXP_STATUS, Size: 24, Number: 64006 +< 2021-12-13 11:35:57.846 Status code: 0 +< 2021-12-13 11:35:57.859 Type: SSH_FXP_STATUS, Size: 24, Number: 64260 +< 2021-12-13 11:35:57.859 Status code: 0 +. 2021-12-13 11:35:57.859 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:57.859 Type: SSH_FXP_STATUS, Size: 24, Number: 63753 +< 2021-12-13 11:35:57.859 Status code: 0 +. 2021-12-13 11:35:57.859 Transfer done: 'assets\index.27d02ea2.css' => '/root/hemodialysis/pc/assets/index.27d02ea2.css' [966] +. 2021-12-13 11:35:57.860 File: 'assets\index.2d5beab8.css' [2021-12-13T03:35:50.112Z] [2202] +. 2021-12-13 11:35:57.875 Copying "assets\index.2d5beab8.css" to remote directory started. +. 2021-12-13 11:35:57.875 Binary transfer mode selected. +. 2021-12-13 11:35:57.875 Opening remote file. +> 2021-12-13 11:35:57.875 Type: SSH_FXP_OPEN, Size: 72, Number: 64515 +< 2021-12-13 11:35:57.889 Type: SSH_FXP_HANDLE, Size: 13, Number: 64515 +> 2021-12-13 11:35:57.890 Type: SSH_FXP_WRITE, Size: 2227, Number: 65030 +> 2021-12-13 11:35:57.890 Type: SSH_FXP_CLOSE, Size: 13, Number: 65284 +> 2021-12-13 11:35:57.890 Type: SSH_FXP_SETSTAT, Size: 68, Number: 64777 +< 2021-12-13 11:35:57.899 Type: SSH_FXP_STATUS, Size: 24, Number: 65030 +< 2021-12-13 11:35:57.900 Status code: 0 +< 2021-12-13 11:35:57.908 Type: SSH_FXP_STATUS, Size: 24, Number: 65284 +< 2021-12-13 11:35:57.908 Status code: 0 +. 2021-12-13 11:35:57.908 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:57.908 Type: SSH_FXP_STATUS, Size: 24, Number: 64777 +< 2021-12-13 11:35:57.908 Status code: 0 +. 2021-12-13 11:35:57.908 Transfer done: 'assets\index.2d5beab8.css' => '/root/hemodialysis/pc/assets/index.2d5beab8.css' [2202] +. 2021-12-13 11:35:57.909 File: 'assets\index.2d679fdd.js' [2021-12-13T03:35:50.103Z] [15828] +. 2021-12-13 11:35:57.938 Copying "assets\index.2d679fdd.js" to remote directory started. +. 2021-12-13 11:35:57.938 Binary transfer mode selected. +. 2021-12-13 11:35:57.938 Opening remote file. +> 2021-12-13 11:35:57.938 Type: SSH_FXP_OPEN, Size: 71, Number: 65539 +< 2021-12-13 11:35:57.948 Type: SSH_FXP_HANDLE, Size: 13, Number: 65539 +> 2021-12-13 11:35:57.948 Type: SSH_FXP_WRITE, Size: 15853, Number: 66054 +> 2021-12-13 11:35:57.949 Type: SSH_FXP_CLOSE, Size: 13, Number: 66308 +> 2021-12-13 11:35:57.949 Type: SSH_FXP_SETSTAT, Size: 67, Number: 65801 +< 2021-12-13 11:35:57.970 Type: SSH_FXP_STATUS, Size: 24, Number: 66054 +< 2021-12-13 11:35:57.970 Status code: 0 +< 2021-12-13 11:35:57.980 Type: SSH_FXP_STATUS, Size: 24, Number: 66308 +< 2021-12-13 11:35:57.980 Status code: 0 +. 2021-12-13 11:35:57.981 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:57.981 Type: SSH_FXP_STATUS, Size: 24, Number: 65801 +< 2021-12-13 11:35:57.981 Status code: 0 +. 2021-12-13 11:35:57.981 Transfer done: 'assets\index.2d679fdd.js' => '/root/hemodialysis/pc/assets/index.2d679fdd.js' [15828] +. 2021-12-13 11:35:57.981 File: 'assets\index.2e488f0b.css' [2021-12-13T03:35:50.116Z] [281] +. 2021-12-13 11:35:57.995 Copying "assets\index.2e488f0b.css" to remote directory started. +. 2021-12-13 11:35:57.995 Binary transfer mode selected. +. 2021-12-13 11:35:57.995 Opening remote file. +> 2021-12-13 11:35:57.995 Type: SSH_FXP_OPEN, Size: 72, Number: 66563 +< 2021-12-13 11:35:58.006 Type: SSH_FXP_HANDLE, Size: 13, Number: 66563 +> 2021-12-13 11:35:58.006 Type: SSH_FXP_WRITE, Size: 306, Number: 67078 +> 2021-12-13 11:35:58.006 Type: SSH_FXP_CLOSE, Size: 13, Number: 67332 +> 2021-12-13 11:35:58.006 Type: SSH_FXP_SETSTAT, Size: 68, Number: 66825 +< 2021-12-13 11:35:58.016 Type: SSH_FXP_STATUS, Size: 24, Number: 67078 +< 2021-12-13 11:35:58.016 Status code: 0 +< 2021-12-13 11:35:58.024 Type: SSH_FXP_STATUS, Size: 24, Number: 67332 +< 2021-12-13 11:35:58.024 Status code: 0 +. 2021-12-13 11:35:58.025 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.025 Type: SSH_FXP_STATUS, Size: 24, Number: 66825 +< 2021-12-13 11:35:58.025 Status code: 0 +. 2021-12-13 11:35:58.025 Transfer done: 'assets\index.2e488f0b.css' => '/root/hemodialysis/pc/assets/index.2e488f0b.css' [281] +. 2021-12-13 11:35:58.026 File: 'assets\index.378ce842.js' [2021-12-13T03:35:50.101Z] [5089] +. 2021-12-13 11:35:58.052 Copying "assets\index.378ce842.js" to remote directory started. +. 2021-12-13 11:35:58.052 Binary transfer mode selected. +. 2021-12-13 11:35:58.052 Opening remote file. +> 2021-12-13 11:35:58.052 Type: SSH_FXP_OPEN, Size: 71, Number: 67587 +< 2021-12-13 11:35:58.063 Type: SSH_FXP_HANDLE, Size: 13, Number: 67587 +> 2021-12-13 11:35:58.063 Type: SSH_FXP_WRITE, Size: 5114, Number: 68102 +> 2021-12-13 11:35:58.064 Type: SSH_FXP_CLOSE, Size: 13, Number: 68356 +> 2021-12-13 11:35:58.064 Type: SSH_FXP_SETSTAT, Size: 67, Number: 67849 +< 2021-12-13 11:35:58.074 Type: SSH_FXP_STATUS, Size: 24, Number: 68102 +< 2021-12-13 11:35:58.075 Status code: 0 +< 2021-12-13 11:35:58.083 Type: SSH_FXP_STATUS, Size: 24, Number: 68356 +< 2021-12-13 11:35:58.083 Status code: 0 +. 2021-12-13 11:35:58.083 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.083 Type: SSH_FXP_STATUS, Size: 24, Number: 67849 +< 2021-12-13 11:35:58.083 Status code: 0 +. 2021-12-13 11:35:58.083 Transfer done: 'assets\index.378ce842.js' => '/root/hemodialysis/pc/assets/index.378ce842.js' [5089] +. 2021-12-13 11:35:58.084 File: 'assets\index.3ae49670.css' [2021-12-13T03:35:50.112Z] [1121] +. 2021-12-13 11:35:58.097 Copying "assets\index.3ae49670.css" to remote directory started. +. 2021-12-13 11:35:58.097 Binary transfer mode selected. +. 2021-12-13 11:35:58.097 Opening remote file. +> 2021-12-13 11:35:58.097 Type: SSH_FXP_OPEN, Size: 72, Number: 68611 +< 2021-12-13 11:35:58.109 Type: SSH_FXP_HANDLE, Size: 13, Number: 68611 +> 2021-12-13 11:35:58.109 Type: SSH_FXP_WRITE, Size: 1146, Number: 69126 +> 2021-12-13 11:35:58.109 Type: SSH_FXP_CLOSE, Size: 13, Number: 69380 +> 2021-12-13 11:35:58.110 Type: SSH_FXP_SETSTAT, Size: 68, Number: 68873 +< 2021-12-13 11:35:58.122 Type: SSH_FXP_STATUS, Size: 24, Number: 69126 +< 2021-12-13 11:35:58.122 Status code: 0 +< 2021-12-13 11:35:58.138 Type: SSH_FXP_STATUS, Size: 24, Number: 69380 +< 2021-12-13 11:35:58.138 Status code: 0 +. 2021-12-13 11:35:58.139 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.139 Type: SSH_FXP_STATUS, Size: 24, Number: 68873 +< 2021-12-13 11:35:58.139 Status code: 0 +. 2021-12-13 11:35:58.139 Transfer done: 'assets\index.3ae49670.css' => '/root/hemodialysis/pc/assets/index.3ae49670.css' [1121] +. 2021-12-13 11:35:58.139 File: 'assets\index.3c586308.css' [2021-12-13T03:35:50.113Z] [4881] +. 2021-12-13 11:35:58.153 Copying "assets\index.3c586308.css" to remote directory started. +. 2021-12-13 11:35:58.153 Binary transfer mode selected. +. 2021-12-13 11:35:58.153 Opening remote file. +> 2021-12-13 11:35:58.153 Type: SSH_FXP_OPEN, Size: 72, Number: 69635 +< 2021-12-13 11:35:58.164 Type: SSH_FXP_HANDLE, Size: 13, Number: 69635 +> 2021-12-13 11:35:58.164 Type: SSH_FXP_WRITE, Size: 4906, Number: 70150 +> 2021-12-13 11:35:58.166 Type: SSH_FXP_CLOSE, Size: 13, Number: 70404 +> 2021-12-13 11:35:58.167 Type: SSH_FXP_SETSTAT, Size: 68, Number: 69897 +< 2021-12-13 11:35:58.183 Type: SSH_FXP_STATUS, Size: 24, Number: 70150 +< 2021-12-13 11:35:58.183 Status code: 0 +< 2021-12-13 11:35:58.195 Type: SSH_FXP_STATUS, Size: 24, Number: 70404 +< 2021-12-13 11:35:58.195 Status code: 0 +. 2021-12-13 11:35:58.195 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.195 Type: SSH_FXP_STATUS, Size: 24, Number: 69897 +< 2021-12-13 11:35:58.195 Status code: 0 +. 2021-12-13 11:35:58.195 Transfer done: 'assets\index.3c586308.css' => '/root/hemodialysis/pc/assets/index.3c586308.css' [4881] +. 2021-12-13 11:35:58.196 File: 'assets\index.3c9ded58.css' [2021-12-13T03:35:50.113Z] [4832] +. 2021-12-13 11:35:58.209 Copying "assets\index.3c9ded58.css" to remote directory started. +. 2021-12-13 11:35:58.209 Binary transfer mode selected. +. 2021-12-13 11:35:58.209 Opening remote file. +> 2021-12-13 11:35:58.209 Type: SSH_FXP_OPEN, Size: 72, Number: 70659 +< 2021-12-13 11:35:58.220 Type: SSH_FXP_HANDLE, Size: 13, Number: 70659 +> 2021-12-13 11:35:58.220 Type: SSH_FXP_WRITE, Size: 4857, Number: 71174 +> 2021-12-13 11:35:58.221 Type: SSH_FXP_CLOSE, Size: 13, Number: 71428 +> 2021-12-13 11:35:58.221 Type: SSH_FXP_SETSTAT, Size: 68, Number: 70921 +< 2021-12-13 11:35:58.231 Type: SSH_FXP_STATUS, Size: 24, Number: 71174 +< 2021-12-13 11:35:58.231 Status code: 0 +< 2021-12-13 11:35:58.239 Type: SSH_FXP_STATUS, Size: 24, Number: 71428 +< 2021-12-13 11:35:58.240 Status code: 0 +. 2021-12-13 11:35:58.240 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.240 Type: SSH_FXP_STATUS, Size: 24, Number: 70921 +< 2021-12-13 11:35:58.240 Status code: 0 +. 2021-12-13 11:35:58.240 Transfer done: 'assets\index.3c9ded58.css' => '/root/hemodialysis/pc/assets/index.3c9ded58.css' [4832] +. 2021-12-13 11:35:58.240 File: 'assets\index.3d14e83f.js' [2021-12-13T03:35:50.105Z] [2495] +. 2021-12-13 11:35:58.264 Copying "assets\index.3d14e83f.js" to remote directory started. +. 2021-12-13 11:35:58.264 Binary transfer mode selected. +. 2021-12-13 11:35:58.264 Opening remote file. +> 2021-12-13 11:35:58.265 Type: SSH_FXP_OPEN, Size: 71, Number: 71683 +< 2021-12-13 11:35:58.275 Type: SSH_FXP_HANDLE, Size: 13, Number: 71683 +> 2021-12-13 11:35:58.275 Type: SSH_FXP_WRITE, Size: 2520, Number: 72198 +> 2021-12-13 11:35:58.275 Type: SSH_FXP_CLOSE, Size: 13, Number: 72452 +> 2021-12-13 11:35:58.275 Type: SSH_FXP_SETSTAT, Size: 67, Number: 71945 +< 2021-12-13 11:35:58.283 Type: SSH_FXP_STATUS, Size: 24, Number: 72198 +< 2021-12-13 11:35:58.283 Status code: 0 +< 2021-12-13 11:35:58.293 Type: SSH_FXP_STATUS, Size: 24, Number: 72452 +< 2021-12-13 11:35:58.293 Status code: 0 +. 2021-12-13 11:35:58.293 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.293 Type: SSH_FXP_STATUS, Size: 24, Number: 71945 +< 2021-12-13 11:35:58.293 Status code: 0 +. 2021-12-13 11:35:58.293 Transfer done: 'assets\index.3d14e83f.js' => '/root/hemodialysis/pc/assets/index.3d14e83f.js' [2495] +. 2021-12-13 11:35:58.294 File: 'assets\index.3debeee8.css' [2021-12-13T03:35:50.111Z] [966] +. 2021-12-13 11:35:58.306 Copying "assets\index.3debeee8.css" to remote directory started. +. 2021-12-13 11:35:58.306 Binary transfer mode selected. +. 2021-12-13 11:35:58.307 Opening remote file. +> 2021-12-13 11:35:58.307 Type: SSH_FXP_OPEN, Size: 72, Number: 72707 +< 2021-12-13 11:35:58.325 Type: SSH_FXP_HANDLE, Size: 13, Number: 72707 +> 2021-12-13 11:35:58.325 Type: SSH_FXP_WRITE, Size: 991, Number: 73222 +> 2021-12-13 11:35:58.326 Type: SSH_FXP_CLOSE, Size: 13, Number: 73476 +> 2021-12-13 11:35:58.326 Type: SSH_FXP_SETSTAT, Size: 68, Number: 72969 +< 2021-12-13 11:35:58.336 Type: SSH_FXP_STATUS, Size: 24, Number: 73222 +< 2021-12-13 11:35:58.336 Status code: 0 +< 2021-12-13 11:35:58.346 Type: SSH_FXP_STATUS, Size: 24, Number: 73476 +< 2021-12-13 11:35:58.346 Status code: 0 +. 2021-12-13 11:35:58.346 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.346 Type: SSH_FXP_STATUS, Size: 24, Number: 72969 +< 2021-12-13 11:35:58.346 Status code: 0 +. 2021-12-13 11:35:58.346 Transfer done: 'assets\index.3debeee8.css' => '/root/hemodialysis/pc/assets/index.3debeee8.css' [966] +. 2021-12-13 11:35:58.348 File: 'assets\index.4889a950.js' [2021-12-13T03:35:50.101Z] [1710] +. 2021-12-13 11:35:58.363 Copying "assets\index.4889a950.js" to remote directory started. +. 2021-12-13 11:35:58.363 Binary transfer mode selected. +. 2021-12-13 11:35:58.363 Opening remote file. +> 2021-12-13 11:35:58.363 Type: SSH_FXP_OPEN, Size: 71, Number: 73731 +< 2021-12-13 11:35:58.380 Type: SSH_FXP_HANDLE, Size: 13, Number: 73731 +> 2021-12-13 11:35:58.380 Type: SSH_FXP_WRITE, Size: 1735, Number: 74246 +> 2021-12-13 11:35:58.381 Type: SSH_FXP_CLOSE, Size: 13, Number: 74500 +> 2021-12-13 11:35:58.381 Type: SSH_FXP_SETSTAT, Size: 67, Number: 73993 +< 2021-12-13 11:35:58.396 Type: SSH_FXP_STATUS, Size: 24, Number: 74246 +< 2021-12-13 11:35:58.396 Status code: 0 +< 2021-12-13 11:35:58.407 Type: SSH_FXP_STATUS, Size: 24, Number: 74500 +< 2021-12-13 11:35:58.407 Status code: 0 +. 2021-12-13 11:35:58.407 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.407 Type: SSH_FXP_STATUS, Size: 24, Number: 73993 +< 2021-12-13 11:35:58.407 Status code: 0 +. 2021-12-13 11:35:58.407 Transfer done: 'assets\index.4889a950.js' => '/root/hemodialysis/pc/assets/index.4889a950.js' [1710] +. 2021-12-13 11:35:58.408 File: 'assets\index.488ffed1.js' [2021-12-13T03:35:50.100Z] [840] +. 2021-12-13 11:35:58.432 Copying "assets\index.488ffed1.js" to remote directory started. +. 2021-12-13 11:35:58.432 Binary transfer mode selected. +. 2021-12-13 11:35:58.432 Opening remote file. +> 2021-12-13 11:35:58.432 Type: SSH_FXP_OPEN, Size: 71, Number: 74755 +< 2021-12-13 11:35:58.439 Type: SSH_FXP_HANDLE, Size: 13, Number: 74755 +> 2021-12-13 11:35:58.439 Type: SSH_FXP_WRITE, Size: 865, Number: 75270 +> 2021-12-13 11:35:58.440 Type: SSH_FXP_CLOSE, Size: 13, Number: 75524 +> 2021-12-13 11:35:58.440 Type: SSH_FXP_SETSTAT, Size: 67, Number: 75017 +< 2021-12-13 11:35:58.448 Type: SSH_FXP_STATUS, Size: 24, Number: 75270 +< 2021-12-13 11:35:58.448 Status code: 0 +< 2021-12-13 11:35:58.458 Type: SSH_FXP_STATUS, Size: 24, Number: 75524 +< 2021-12-13 11:35:58.458 Status code: 0 +. 2021-12-13 11:35:58.458 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.458 Type: SSH_FXP_STATUS, Size: 24, Number: 75017 +< 2021-12-13 11:35:58.458 Status code: 0 +. 2021-12-13 11:35:58.458 Transfer done: 'assets\index.488ffed1.js' => '/root/hemodialysis/pc/assets/index.488ffed1.js' [840] +. 2021-12-13 11:35:58.459 File: 'assets\index.492e7936.css' [2021-12-13T03:35:50.116Z] [336259] +. 2021-12-13 11:35:58.475 Copying "assets\index.492e7936.css" to remote directory started. +. 2021-12-13 11:35:58.475 Binary transfer mode selected. +. 2021-12-13 11:35:58.475 Opening remote file. +> 2021-12-13 11:35:58.475 Type: SSH_FXP_OPEN, Size: 81, Number: 75779 +< 2021-12-13 11:35:58.485 Type: SSH_FXP_HANDLE, Size: 13, Number: 75779 +> 2021-12-13 11:35:58.485 Type: SSH_FXP_WRITE, Size: 32764, Number: 76294 +. 2021-12-13 11:35:58.500 11 skipped SSH_FXP_WRITE, SSH_FXP_READ, SSH_FXP_DATA and SSH_FXP_STATUS packets. +> 2021-12-13 11:35:58.500 Type: SSH_FXP_CLOSE, Size: 13, Number: 79108 +< 2021-12-13 11:35:58.501 Type: SSH_FXP_STATUS, Size: 24, Number: 76550 +< 2021-12-13 11:35:58.501 Status code: 0 +< 2021-12-13 11:35:58.517 Type: SSH_FXP_STATUS, Size: 24, Number: 76806 +< 2021-12-13 11:35:58.517 Status code: 0 +< 2021-12-13 11:35:58.517 Type: SSH_FXP_STATUS, Size: 24, Number: 77062 +< 2021-12-13 11:35:58.517 Status code: 0 +< 2021-12-13 11:35:58.517 Type: SSH_FXP_STATUS, Size: 24, Number: 77318 +< 2021-12-13 11:35:58.517 Status code: 0 +< 2021-12-13 11:35:58.517 Type: SSH_FXP_STATUS, Size: 24, Number: 77574 +< 2021-12-13 11:35:58.517 Status code: 0 +< 2021-12-13 11:35:58.517 Type: SSH_FXP_STATUS, Size: 24, Number: 77830 +< 2021-12-13 11:35:58.517 Status code: 0 +< 2021-12-13 11:35:58.517 Type: SSH_FXP_STATUS, Size: 24, Number: 78086 +< 2021-12-13 11:35:58.518 Status code: 0 +< 2021-12-13 11:35:58.521 Type: SSH_FXP_STATUS, Size: 24, Number: 78342 +< 2021-12-13 11:35:58.521 Status code: 0 +< 2021-12-13 11:35:58.525 Type: SSH_FXP_STATUS, Size: 24, Number: 78598 +< 2021-12-13 11:35:58.525 Status code: 0 +< 2021-12-13 11:35:58.525 Type: SSH_FXP_STATUS, Size: 24, Number: 78854 +< 2021-12-13 11:35:58.525 Status code: 0 +< 2021-12-13 11:35:58.525 Type: SSH_FXP_STATUS, Size: 24, Number: 79108 +< 2021-12-13 11:35:58.526 Status code: 0 +> 2021-12-13 11:35:58.526 Type: SSH_FXP_RENAME, Size: 116, Number: 79378 +< 2021-12-13 11:35:58.534 Type: SSH_FXP_STATUS, Size: 24, Number: 79378 +< 2021-12-13 11:35:58.534 Status code: 0 +. 2021-12-13 11:35:58.534 Preserving timestamp [2021-12-13T03:35:50.000Z] +> 2021-12-13 11:35:58.534 Type: SSH_FXP_SETSTAT, Size: 68, Number: 76041 +< 2021-12-13 11:35:58.543 Type: SSH_FXP_STATUS, Size: 24, Number: 76041 +< 2021-12-13 11:35:58.543 Status code: 0 +. 2021-12-13 11:35:58.543 Transfer done: 'assets\index.492e7936.css' => '/root/hemodialysis/pc/assets/index.492e7936.css' [336259] +. 2021-12-13 11:35:58.544 File: 'assets\index.4c48eefd.js' [2021-12-13T03:35:50.099Z] [3778] +. 2021-12-13 11:35:58.573 Copying "assets\index.4c48eefd.js" to remote directory started. +. 2021-12-13 11:35:58.573 Binary transfer mode selected. +. 2021-12-13 11:35:58.573 Opening remote file. +> 2021-12-13 11:35:58.573 Type: SSH_FXP_OPEN, Size: 71, Number: 79619 +< 2021-12-13 11:35:58.584 Type: SSH_FXP_HANDLE, Size: 13, Number: 79619 +> 2021-12-13 11:35:58.584 Type: SSH_FXP_WRITE, Size: 3803, Number: 80134 +> 2021-12-13 11:35:58.585 Type: SSH_FXP_CLOSE, Size: 13, Number: 80388 +> 2021-12-13 11:35:58.585 Type: SSH_FXP_SETSTAT, Size: 67, Number: 79881 +< 2021-12-13 11:35:58.596 Type: SSH_FXP_STATUS, Size: 24, Number: 80134 +< 2021-12-13 11:35:58.596 Status code: 0 +< 2021-12-13 11:35:58.608 Type: SSH_FXP_STATUS, Size: 24, Number: 80388 +< 2021-12-13 11:35:58.608 Status code: 0 +. 2021-12-13 11:35:58.609 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.609 Type: SSH_FXP_STATUS, Size: 24, Number: 79881 +< 2021-12-13 11:35:58.609 Status code: 0 +. 2021-12-13 11:35:58.609 Transfer done: 'assets\index.4c48eefd.js' => '/root/hemodialysis/pc/assets/index.4c48eefd.js' [3778] +. 2021-12-13 11:35:58.610 File: 'assets\index.50292337.js' [2021-12-13T03:35:50.099Z] [4232] +. 2021-12-13 11:35:58.642 Copying "assets\index.50292337.js" to remote directory started. +. 2021-12-13 11:35:58.642 Binary transfer mode selected. +. 2021-12-13 11:35:58.642 Opening remote file. +> 2021-12-13 11:35:58.642 Type: SSH_FXP_OPEN, Size: 71, Number: 80643 +< 2021-12-13 11:35:58.653 Type: SSH_FXP_HANDLE, Size: 13, Number: 80643 +> 2021-12-13 11:35:58.653 Type: SSH_FXP_WRITE, Size: 4257, Number: 81158 +> 2021-12-13 11:35:58.654 Type: SSH_FXP_CLOSE, Size: 13, Number: 81412 +> 2021-12-13 11:35:58.654 Type: SSH_FXP_SETSTAT, Size: 67, Number: 80905 +< 2021-12-13 11:35:58.672 Type: SSH_FXP_STATUS, Size: 24, Number: 81158 +< 2021-12-13 11:35:58.672 Status code: 0 +< 2021-12-13 11:35:58.681 Type: SSH_FXP_STATUS, Size: 24, Number: 81412 +< 2021-12-13 11:35:58.681 Status code: 0 +. 2021-12-13 11:35:58.682 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.682 Type: SSH_FXP_STATUS, Size: 24, Number: 80905 +< 2021-12-13 11:35:58.682 Status code: 0 +. 2021-12-13 11:35:58.682 Transfer done: 'assets\index.50292337.js' => '/root/hemodialysis/pc/assets/index.50292337.js' [4232] +. 2021-12-13 11:35:58.683 File: 'assets\index.5045d4b7.css' [2021-12-13T03:35:50.115Z] [287] +. 2021-12-13 11:35:58.695 Copying "assets\index.5045d4b7.css" to remote directory started. +. 2021-12-13 11:35:58.695 Binary transfer mode selected. +. 2021-12-13 11:35:58.695 Opening remote file. +> 2021-12-13 11:35:58.695 Type: SSH_FXP_OPEN, Size: 72, Number: 81667 +< 2021-12-13 11:35:58.714 Type: SSH_FXP_HANDLE, Size: 13, Number: 81667 +> 2021-12-13 11:35:58.714 Type: SSH_FXP_WRITE, Size: 312, Number: 82182 +> 2021-12-13 11:35:58.715 Type: SSH_FXP_CLOSE, Size: 13, Number: 82436 +> 2021-12-13 11:35:58.715 Type: SSH_FXP_SETSTAT, Size: 68, Number: 81929 +< 2021-12-13 11:35:58.722 Type: SSH_FXP_STATUS, Size: 24, Number: 82182 +< 2021-12-13 11:35:58.722 Status code: 0 +< 2021-12-13 11:35:58.733 Type: SSH_FXP_STATUS, Size: 24, Number: 82436 +< 2021-12-13 11:35:58.733 Status code: 0 +. 2021-12-13 11:35:58.734 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.734 Type: SSH_FXP_STATUS, Size: 24, Number: 81929 +< 2021-12-13 11:35:58.734 Status code: 0 +. 2021-12-13 11:35:58.734 Transfer done: 'assets\index.5045d4b7.css' => '/root/hemodialysis/pc/assets/index.5045d4b7.css' [287] +. 2021-12-13 11:35:58.734 File: 'assets\index.515dade1.js' [2021-12-13T03:35:50.101Z] [11765] +. 2021-12-13 11:35:58.770 Copying "assets\index.515dade1.js" to remote directory started. +. 2021-12-13 11:35:58.770 Binary transfer mode selected. +. 2021-12-13 11:35:58.770 Opening remote file. +> 2021-12-13 11:35:58.770 Type: SSH_FXP_OPEN, Size: 71, Number: 82691 +< 2021-12-13 11:35:58.786 Type: SSH_FXP_HANDLE, Size: 13, Number: 82691 +> 2021-12-13 11:35:58.786 Type: SSH_FXP_WRITE, Size: 11790, Number: 83206 +> 2021-12-13 11:35:58.787 Type: SSH_FXP_CLOSE, Size: 13, Number: 83460 +> 2021-12-13 11:35:58.787 Type: SSH_FXP_SETSTAT, Size: 67, Number: 82953 +< 2021-12-13 11:35:58.802 Type: SSH_FXP_STATUS, Size: 24, Number: 83206 +< 2021-12-13 11:35:58.802 Status code: 0 +< 2021-12-13 11:35:58.811 Type: SSH_FXP_STATUS, Size: 24, Number: 83460 +< 2021-12-13 11:35:58.811 Status code: 0 +. 2021-12-13 11:35:58.812 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.812 Type: SSH_FXP_STATUS, Size: 24, Number: 82953 +< 2021-12-13 11:35:58.812 Status code: 0 +. 2021-12-13 11:35:58.812 Transfer done: 'assets\index.515dade1.js' => '/root/hemodialysis/pc/assets/index.515dade1.js' [11765] +. 2021-12-13 11:35:58.812 File: 'assets\index.53043ee6.js' [2021-12-13T03:35:50.101Z] [3221] +. 2021-12-13 11:35:58.841 Copying "assets\index.53043ee6.js" to remote directory started. +. 2021-12-13 11:35:58.841 Binary transfer mode selected. +. 2021-12-13 11:35:58.841 Opening remote file. +> 2021-12-13 11:35:58.842 Type: SSH_FXP_OPEN, Size: 71, Number: 83715 +< 2021-12-13 11:35:58.851 Type: SSH_FXP_HANDLE, Size: 13, Number: 83715 +> 2021-12-13 11:35:58.851 Type: SSH_FXP_WRITE, Size: 3246, Number: 84230 +> 2021-12-13 11:35:58.852 Type: SSH_FXP_CLOSE, Size: 13, Number: 84484 +> 2021-12-13 11:35:58.852 Type: SSH_FXP_SETSTAT, Size: 67, Number: 83977 +< 2021-12-13 11:35:58.863 Type: SSH_FXP_STATUS, Size: 24, Number: 84230 +< 2021-12-13 11:35:58.864 Status code: 0 +< 2021-12-13 11:35:58.915 Type: SSH_FXP_STATUS, Size: 24, Number: 84484 +< 2021-12-13 11:35:58.915 Status code: 0 +. 2021-12-13 11:35:58.916 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.916 Type: SSH_FXP_STATUS, Size: 24, Number: 83977 +< 2021-12-13 11:35:58.916 Status code: 0 +. 2021-12-13 11:35:58.916 Transfer done: 'assets\index.53043ee6.js' => '/root/hemodialysis/pc/assets/index.53043ee6.js' [3221] +. 2021-12-13 11:35:58.916 File: 'assets\index.5b2b5d31.js' [2021-12-13T03:35:50.103Z] [9316] +. 2021-12-13 11:35:58.946 Copying "assets\index.5b2b5d31.js" to remote directory started. +. 2021-12-13 11:35:58.948 Binary transfer mode selected. +. 2021-12-13 11:35:58.948 Opening remote file. +> 2021-12-13 11:35:58.948 Type: SSH_FXP_OPEN, Size: 71, Number: 84739 +< 2021-12-13 11:35:58.964 Type: SSH_FXP_HANDLE, Size: 13, Number: 84739 +> 2021-12-13 11:35:58.964 Type: SSH_FXP_WRITE, Size: 9341, Number: 85254 +> 2021-12-13 11:35:58.965 Type: SSH_FXP_CLOSE, Size: 13, Number: 85508 +> 2021-12-13 11:35:58.965 Type: SSH_FXP_SETSTAT, Size: 67, Number: 85001 +< 2021-12-13 11:35:58.977 Type: SSH_FXP_STATUS, Size: 24, Number: 85254 +< 2021-12-13 11:35:58.977 Status code: 0 +< 2021-12-13 11:35:58.988 Type: SSH_FXP_STATUS, Size: 24, Number: 85508 +< 2021-12-13 11:35:58.988 Status code: 0 +. 2021-12-13 11:35:58.988 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:58.988 Type: SSH_FXP_STATUS, Size: 24, Number: 85001 +< 2021-12-13 11:35:58.988 Status code: 0 +. 2021-12-13 11:35:58.988 Transfer done: 'assets\index.5b2b5d31.js' => '/root/hemodialysis/pc/assets/index.5b2b5d31.js' [9316] +. 2021-12-13 11:35:58.989 File: 'assets\index.674f0ba2.css' [2021-12-13T03:35:50.114Z] [973] +. 2021-12-13 11:35:59.004 Copying "assets\index.674f0ba2.css" to remote directory started. +. 2021-12-13 11:35:59.004 Binary transfer mode selected. +. 2021-12-13 11:35:59.004 Opening remote file. +> 2021-12-13 11:35:59.004 Type: SSH_FXP_OPEN, Size: 72, Number: 85763 +< 2021-12-13 11:35:59.013 Type: SSH_FXP_HANDLE, Size: 13, Number: 85763 +> 2021-12-13 11:35:59.013 Type: SSH_FXP_WRITE, Size: 998, Number: 86278 +> 2021-12-13 11:35:59.014 Type: SSH_FXP_CLOSE, Size: 13, Number: 86532 +> 2021-12-13 11:35:59.014 Type: SSH_FXP_SETSTAT, Size: 68, Number: 86025 +< 2021-12-13 11:35:59.024 Type: SSH_FXP_STATUS, Size: 24, Number: 86278 +< 2021-12-13 11:35:59.024 Status code: 0 +< 2021-12-13 11:35:59.034 Type: SSH_FXP_STATUS, Size: 24, Number: 86532 +< 2021-12-13 11:35:59.034 Status code: 0 +. 2021-12-13 11:35:59.034 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:59.034 Type: SSH_FXP_STATUS, Size: 24, Number: 86025 +< 2021-12-13 11:35:59.034 Status code: 0 +. 2021-12-13 11:35:59.034 Transfer done: 'assets\index.674f0ba2.css' => '/root/hemodialysis/pc/assets/index.674f0ba2.css' [973] +. 2021-12-13 11:35:59.035 File: 'assets\index.72a05aa4.js' [2021-12-13T03:35:50.095Z] [8759] +. 2021-12-13 11:35:59.063 Copying "assets\index.72a05aa4.js" to remote directory started. +. 2021-12-13 11:35:59.063 Binary transfer mode selected. +. 2021-12-13 11:35:59.063 Opening remote file. +> 2021-12-13 11:35:59.063 Type: SSH_FXP_OPEN, Size: 71, Number: 86787 +< 2021-12-13 11:35:59.074 Type: SSH_FXP_HANDLE, Size: 13, Number: 86787 +> 2021-12-13 11:35:59.074 Type: SSH_FXP_WRITE, Size: 8784, Number: 87302 +> 2021-12-13 11:35:59.075 Type: SSH_FXP_CLOSE, Size: 13, Number: 87556 +> 2021-12-13 11:35:59.075 Type: SSH_FXP_SETSTAT, Size: 67, Number: 87049 +< 2021-12-13 11:35:59.095 Type: SSH_FXP_STATUS, Size: 24, Number: 87302 +< 2021-12-13 11:35:59.095 Status code: 0 +< 2021-12-13 11:35:59.112 Type: SSH_FXP_STATUS, Size: 24, Number: 87556 +< 2021-12-13 11:35:59.112 Status code: 0 +. 2021-12-13 11:35:59.113 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:59.113 Type: SSH_FXP_STATUS, Size: 24, Number: 87049 +< 2021-12-13 11:35:59.113 Status code: 0 +. 2021-12-13 11:35:59.113 Transfer done: 'assets\index.72a05aa4.js' => '/root/hemodialysis/pc/assets/index.72a05aa4.js' [8759] +. 2021-12-13 11:35:59.113 File: 'assets\index.7c35707a.js' [2021-12-13T03:35:50.099Z] [419] +. 2021-12-13 11:35:59.129 Copying "assets\index.7c35707a.js" to remote directory started. +. 2021-12-13 11:35:59.129 Binary transfer mode selected. +. 2021-12-13 11:35:59.129 Opening remote file. +> 2021-12-13 11:35:59.129 Type: SSH_FXP_OPEN, Size: 71, Number: 87811 +< 2021-12-13 11:35:59.147 Type: SSH_FXP_HANDLE, Size: 13, Number: 87811 +> 2021-12-13 11:35:59.147 Type: SSH_FXP_WRITE, Size: 444, Number: 88326 +> 2021-12-13 11:35:59.148 Type: SSH_FXP_CLOSE, Size: 13, Number: 88580 +> 2021-12-13 11:35:59.148 Type: SSH_FXP_SETSTAT, Size: 67, Number: 88073 +< 2021-12-13 11:35:59.158 Type: SSH_FXP_STATUS, Size: 24, Number: 88326 +< 2021-12-13 11:35:59.158 Status code: 0 +< 2021-12-13 11:35:59.166 Type: SSH_FXP_STATUS, Size: 24, Number: 88580 +< 2021-12-13 11:35:59.166 Status code: 0 +. 2021-12-13 11:35:59.167 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:59.167 Type: SSH_FXP_STATUS, Size: 24, Number: 88073 +< 2021-12-13 11:35:59.167 Status code: 0 +. 2021-12-13 11:35:59.167 Transfer done: 'assets\index.7c35707a.js' => '/root/hemodialysis/pc/assets/index.7c35707a.js' [419] +. 2021-12-13 11:35:59.167 File: 'assets\index.7d6da062.css' [2021-12-13T03:35:50.112Z] [160] +. 2021-12-13 11:35:59.179 Copying "assets\index.7d6da062.css" to remote directory started. +. 2021-12-13 11:35:59.180 Binary transfer mode selected. +. 2021-12-13 11:35:59.181 Opening remote file. +> 2021-12-13 11:35:59.181 Type: SSH_FXP_OPEN, Size: 72, Number: 88835 +< 2021-12-13 11:35:59.195 Type: SSH_FXP_HANDLE, Size: 13, Number: 88835 +> 2021-12-13 11:35:59.195 Type: SSH_FXP_WRITE, Size: 185, Number: 89350 +> 2021-12-13 11:35:59.196 Type: SSH_FXP_CLOSE, Size: 13, Number: 89604 +> 2021-12-13 11:35:59.196 Type: SSH_FXP_SETSTAT, Size: 68, Number: 89097 +< 2021-12-13 11:35:59.207 Type: SSH_FXP_STATUS, Size: 24, Number: 89350 +< 2021-12-13 11:35:59.207 Status code: 0 +< 2021-12-13 11:35:59.214 Type: SSH_FXP_STATUS, Size: 24, Number: 89604 +< 2021-12-13 11:35:59.214 Status code: 0 +. 2021-12-13 11:35:59.215 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:59.215 Type: SSH_FXP_STATUS, Size: 24, Number: 89097 +< 2021-12-13 11:35:59.215 Status code: 0 +. 2021-12-13 11:35:59.215 Transfer done: 'assets\index.7d6da062.css' => '/root/hemodialysis/pc/assets/index.7d6da062.css' [160] +. 2021-12-13 11:35:59.215 File: 'assets\index.7e7a9b98.css' [2021-12-13T03:35:50.111Z] [103] +. 2021-12-13 11:35:59.228 Copying "assets\index.7e7a9b98.css" to remote directory started. +. 2021-12-13 11:35:59.228 Binary transfer mode selected. +. 2021-12-13 11:35:59.228 Opening remote file. +> 2021-12-13 11:35:59.228 Type: SSH_FXP_OPEN, Size: 72, Number: 89859 +< 2021-12-13 11:35:59.250 Type: SSH_FXP_HANDLE, Size: 13, Number: 89859 +> 2021-12-13 11:35:59.250 Type: SSH_FXP_WRITE, Size: 128, Number: 90374 +> 2021-12-13 11:35:59.251 Type: SSH_FXP_CLOSE, Size: 13, Number: 90628 +> 2021-12-13 11:35:59.251 Type: SSH_FXP_SETSTAT, Size: 68, Number: 90121 +< 2021-12-13 11:35:59.262 Type: SSH_FXP_STATUS, Size: 24, Number: 90374 +< 2021-12-13 11:35:59.262 Status code: 0 +< 2021-12-13 11:35:59.274 Type: SSH_FXP_STATUS, Size: 24, Number: 90628 +< 2021-12-13 11:35:59.274 Status code: 0 +. 2021-12-13 11:35:59.275 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:59.275 Type: SSH_FXP_STATUS, Size: 24, Number: 90121 +< 2021-12-13 11:35:59.275 Status code: 0 +. 2021-12-13 11:35:59.275 Transfer done: 'assets\index.7e7a9b98.css' => '/root/hemodialysis/pc/assets/index.7e7a9b98.css' [103] +. 2021-12-13 11:35:59.275 File: 'assets\index.88acfdda.js' [2021-12-13T03:35:50.101Z] [9306] +. 2021-12-13 11:35:59.293 Copying "assets\index.88acfdda.js" to remote directory started. +. 2021-12-13 11:35:59.293 Binary transfer mode selected. +. 2021-12-13 11:35:59.293 Opening remote file. +> 2021-12-13 11:35:59.293 Type: SSH_FXP_OPEN, Size: 71, Number: 90883 +< 2021-12-13 11:35:59.303 Type: SSH_FXP_HANDLE, Size: 13, Number: 90883 +> 2021-12-13 11:35:59.303 Type: SSH_FXP_WRITE, Size: 9331, Number: 91398 +> 2021-12-13 11:35:59.304 Type: SSH_FXP_CLOSE, Size: 13, Number: 91652 +> 2021-12-13 11:35:59.304 Type: SSH_FXP_SETSTAT, Size: 67, Number: 91145 +< 2021-12-13 11:35:59.316 Type: SSH_FXP_STATUS, Size: 24, Number: 91398 +< 2021-12-13 11:35:59.316 Status code: 0 +< 2021-12-13 11:35:59.327 Type: SSH_FXP_STATUS, Size: 24, Number: 91652 +< 2021-12-13 11:35:59.327 Status code: 0 +. 2021-12-13 11:35:59.327 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:59.327 Type: SSH_FXP_STATUS, Size: 24, Number: 91145 +< 2021-12-13 11:35:59.327 Status code: 0 +. 2021-12-13 11:35:59.327 Transfer done: 'assets\index.88acfdda.js' => '/root/hemodialysis/pc/assets/index.88acfdda.js' [9306] +. 2021-12-13 11:35:59.328 File: 'assets\index.8df138b8.css' [2021-12-13T03:35:50.114Z] [266] +. 2021-12-13 11:35:59.341 Copying "assets\index.8df138b8.css" to remote directory started. +. 2021-12-13 11:35:59.341 Binary transfer mode selected. +. 2021-12-13 11:35:59.341 Opening remote file. +> 2021-12-13 11:35:59.341 Type: SSH_FXP_OPEN, Size: 72, Number: 91907 +< 2021-12-13 11:35:59.350 Type: SSH_FXP_HANDLE, Size: 13, Number: 91907 +> 2021-12-13 11:35:59.350 Type: SSH_FXP_WRITE, Size: 291, Number: 92422 +> 2021-12-13 11:35:59.351 Type: SSH_FXP_CLOSE, Size: 13, Number: 92676 +> 2021-12-13 11:35:59.351 Type: SSH_FXP_SETSTAT, Size: 68, Number: 92169 +< 2021-12-13 11:35:59.358 Type: SSH_FXP_STATUS, Size: 24, Number: 92422 +< 2021-12-13 11:35:59.358 Status code: 0 +< 2021-12-13 11:35:59.365 Type: SSH_FXP_STATUS, Size: 24, Number: 92676 +< 2021-12-13 11:35:59.365 Status code: 0 +. 2021-12-13 11:35:59.365 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:59.365 Type: SSH_FXP_STATUS, Size: 24, Number: 92169 +< 2021-12-13 11:35:59.365 Status code: 0 +. 2021-12-13 11:35:59.365 Transfer done: 'assets\index.8df138b8.css' => '/root/hemodialysis/pc/assets/index.8df138b8.css' [266] +. 2021-12-13 11:35:59.366 File: 'assets\index.8e32643b.js' [2021-12-13T03:35:50.103Z] [2103] +. 2021-12-13 11:35:59.397 Copying "assets\index.8e32643b.js" to remote directory started. +. 2021-12-13 11:35:59.397 Binary transfer mode selected. +. 2021-12-13 11:35:59.397 Opening remote file. +> 2021-12-13 11:35:59.397 Type: SSH_FXP_OPEN, Size: 71, Number: 92931 +< 2021-12-13 11:35:59.409 Type: SSH_FXP_HANDLE, Size: 13, Number: 92931 +> 2021-12-13 11:35:59.409 Type: SSH_FXP_WRITE, Size: 2128, Number: 93446 +> 2021-12-13 11:35:59.410 Type: SSH_FXP_CLOSE, Size: 13, Number: 93700 +> 2021-12-13 11:35:59.410 Type: SSH_FXP_SETSTAT, Size: 67, Number: 93193 +< 2021-12-13 11:35:59.420 Type: SSH_FXP_STATUS, Size: 24, Number: 93446 +< 2021-12-13 11:35:59.420 Status code: 0 +< 2021-12-13 11:35:59.432 Type: SSH_FXP_STATUS, Size: 24, Number: 93700 +< 2021-12-13 11:35:59.432 Status code: 0 +. 2021-12-13 11:35:59.433 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:59.433 Type: SSH_FXP_STATUS, Size: 24, Number: 93193 +< 2021-12-13 11:35:59.433 Status code: 0 +. 2021-12-13 11:35:59.433 Transfer done: 'assets\index.8e32643b.js' => '/root/hemodialysis/pc/assets/index.8e32643b.js' [2103] +. 2021-12-13 11:35:59.433 File: 'assets\index.8e35fbd7.js' [2021-12-13T03:35:50.102Z] [275261] +. 2021-12-13 11:35:59.506 Copying "assets\index.8e35fbd7.js" to remote directory started. +. 2021-12-13 11:35:59.506 Binary transfer mode selected. +. 2021-12-13 11:35:59.506 Opening remote file. +> 2021-12-13 11:35:59.506 Type: SSH_FXP_OPEN, Size: 80, Number: 93955 +< 2021-12-13 11:35:59.516 Type: SSH_FXP_HANDLE, Size: 13, Number: 93955 +> 2021-12-13 11:35:59.516 Type: SSH_FXP_WRITE, Size: 32764, Number: 94470 +. 2021-12-13 11:35:59.524 8 skipped SSH_FXP_WRITE, SSH_FXP_READ, SSH_FXP_DATA and SSH_FXP_STATUS packets. +> 2021-12-13 11:35:59.524 Type: SSH_FXP_CLOSE, Size: 13, Number: 96772 +< 2021-12-13 11:35:59.528 Type: SSH_FXP_STATUS, Size: 24, Number: 94470 +< 2021-12-13 11:35:59.528 Status code: 0 +< 2021-12-13 11:35:59.537 Type: SSH_FXP_STATUS, Size: 24, Number: 94726 +< 2021-12-13 11:35:59.537 Status code: 0 +< 2021-12-13 11:35:59.554 Type: SSH_FXP_STATUS, Size: 24, Number: 94982 +< 2021-12-13 11:35:59.554 Status code: 0 +< 2021-12-13 11:35:59.555 Type: SSH_FXP_STATUS, Size: 24, Number: 95238 +< 2021-12-13 11:35:59.555 Status code: 0 +< 2021-12-13 11:35:59.555 Type: SSH_FXP_STATUS, Size: 24, Number: 95494 +< 2021-12-13 11:35:59.555 Status code: 0 +< 2021-12-13 11:35:59.556 Type: SSH_FXP_STATUS, Size: 24, Number: 95750 +< 2021-12-13 11:35:59.556 Status code: 0 +< 2021-12-13 11:35:59.556 Type: SSH_FXP_STATUS, Size: 24, Number: 96006 +< 2021-12-13 11:35:59.556 Status code: 0 +< 2021-12-13 11:35:59.556 Type: SSH_FXP_STATUS, Size: 24, Number: 96262 +< 2021-12-13 11:35:59.556 Status code: 0 +< 2021-12-13 11:35:59.556 Type: SSH_FXP_STATUS, Size: 24, Number: 96518 +< 2021-12-13 11:35:59.556 Status code: 0 +< 2021-12-13 11:35:59.556 Type: SSH_FXP_STATUS, Size: 24, Number: 96772 +< 2021-12-13 11:35:59.556 Status code: 0 +> 2021-12-13 11:35:59.556 Type: SSH_FXP_RENAME, Size: 114, Number: 97042 +< 2021-12-13 11:35:59.566 Type: SSH_FXP_STATUS, Size: 24, Number: 97042 +< 2021-12-13 11:35:59.567 Status code: 0 +. 2021-12-13 11:35:59.567 Preserving timestamp [2021-12-13T03:35:50.000Z] +> 2021-12-13 11:35:59.567 Type: SSH_FXP_SETSTAT, Size: 67, Number: 94217 +< 2021-12-13 11:35:59.584 Type: SSH_FXP_STATUS, Size: 24, Number: 94217 +< 2021-12-13 11:35:59.584 Status code: 0 +. 2021-12-13 11:35:59.584 Transfer done: 'assets\index.8e35fbd7.js' => '/root/hemodialysis/pc/assets/index.8e35fbd7.js' [275261] +. 2021-12-13 11:35:59.585 File: 'assets\index.90e4c38d.js' [2021-12-13T03:35:50.107Z] [6822] +. 2021-12-13 11:35:59.612 Copying "assets\index.90e4c38d.js" to remote directory started. +. 2021-12-13 11:35:59.612 Binary transfer mode selected. +. 2021-12-13 11:35:59.612 Opening remote file. +> 2021-12-13 11:35:59.612 Type: SSH_FXP_OPEN, Size: 71, Number: 97283 +< 2021-12-13 11:35:59.623 Type: SSH_FXP_HANDLE, Size: 13, Number: 97283 +> 2021-12-13 11:35:59.623 Type: SSH_FXP_WRITE, Size: 6847, Number: 97798 +> 2021-12-13 11:35:59.624 Type: SSH_FXP_CLOSE, Size: 13, Number: 98052 +> 2021-12-13 11:35:59.624 Type: SSH_FXP_SETSTAT, Size: 67, Number: 97545 +< 2021-12-13 11:35:59.636 Type: SSH_FXP_STATUS, Size: 24, Number: 97798 +< 2021-12-13 11:35:59.636 Status code: 0 +< 2021-12-13 11:35:59.642 Type: SSH_FXP_STATUS, Size: 24, Number: 98052 +< 2021-12-13 11:35:59.642 Status code: 0 +. 2021-12-13 11:35:59.642 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:35:59.642 Type: SSH_FXP_STATUS, Size: 24, Number: 97545 +< 2021-12-13 11:35:59.642 Status code: 0 +. 2021-12-13 11:35:59.642 Transfer done: 'assets\index.90e4c38d.js' => '/root/hemodialysis/pc/assets/index.90e4c38d.js' [6822] +. 2021-12-13 11:35:59.643 File: 'assets\index.97bb2a95.js' [2021-12-13T03:35:50.098Z] [1018507] +. 2021-12-13 11:35:59.992 Copying "assets\index.97bb2a95.js" to remote directory started. +. 2021-12-13 11:35:59.995 Binary transfer mode selected. +. 2021-12-13 11:35:59.995 Opening remote file. +> 2021-12-13 11:35:59.995 Type: SSH_FXP_OPEN, Size: 80, Number: 98307 +< 2021-12-13 11:36:00.006 Type: SSH_FXP_HANDLE, Size: 13, Number: 98307 +> 2021-12-13 11:36:00.006 Type: SSH_FXP_WRITE, Size: 32764, Number: 98822 +. 2021-12-13 11:36:00.082 53 skipped SSH_FXP_WRITE, SSH_FXP_READ, SSH_FXP_DATA and SSH_FXP_STATUS packets. +> 2021-12-13 11:36:00.082 Type: SSH_FXP_CLOSE, Size: 13, Number: 107012 +< 2021-12-13 11:36:00.104 Type: SSH_FXP_STATUS, Size: 24, Number: 104454 +< 2021-12-13 11:36:00.104 Status code: 0 +< 2021-12-13 11:36:00.104 Type: SSH_FXP_STATUS, Size: 24, Number: 104710 +< 2021-12-13 11:36:00.104 Status code: 0 +< 2021-12-13 11:36:00.104 Type: SSH_FXP_STATUS, Size: 24, Number: 104966 +< 2021-12-13 11:36:00.104 Status code: 0 +< 2021-12-13 11:36:00.105 Type: SSH_FXP_STATUS, Size: 24, Number: 105222 +< 2021-12-13 11:36:00.105 Status code: 0 +< 2021-12-13 11:36:00.105 Type: SSH_FXP_STATUS, Size: 24, Number: 105478 +< 2021-12-13 11:36:00.105 Status code: 0 +< 2021-12-13 11:36:00.105 Type: SSH_FXP_STATUS, Size: 24, Number: 105734 +< 2021-12-13 11:36:00.105 Status code: 0 +< 2021-12-13 11:36:00.105 Type: SSH_FXP_STATUS, Size: 24, Number: 105990 +< 2021-12-13 11:36:00.105 Status code: 0 +< 2021-12-13 11:36:00.111 Type: SSH_FXP_STATUS, Size: 24, Number: 106246 +< 2021-12-13 11:36:00.111 Status code: 0 +< 2021-12-13 11:36:00.111 Type: SSH_FXP_STATUS, Size: 24, Number: 106502 +< 2021-12-13 11:36:00.111 Status code: 0 +< 2021-12-13 11:36:00.111 Type: SSH_FXP_STATUS, Size: 24, Number: 106758 +< 2021-12-13 11:36:00.111 Status code: 0 +< 2021-12-13 11:36:00.111 Type: SSH_FXP_STATUS, Size: 24, Number: 107012 +< 2021-12-13 11:36:00.111 Status code: 0 +> 2021-12-13 11:36:00.111 Type: SSH_FXP_RENAME, Size: 114, Number: 107282 +< 2021-12-13 11:36:00.121 Type: SSH_FXP_STATUS, Size: 24, Number: 107282 +< 2021-12-13 11:36:00.121 Status code: 0 +. 2021-12-13 11:36:00.121 Preserving timestamp [2021-12-13T03:35:50.000Z] +> 2021-12-13 11:36:00.121 Type: SSH_FXP_SETSTAT, Size: 67, Number: 98569 +< 2021-12-13 11:36:00.132 Type: SSH_FXP_STATUS, Size: 24, Number: 98569 +< 2021-12-13 11:36:00.132 Status code: 0 +. 2021-12-13 11:36:00.132 Transfer done: 'assets\index.97bb2a95.js' => '/root/hemodialysis/pc/assets/index.97bb2a95.js' [1018507] +. 2021-12-13 11:36:00.133 File: 'assets\index.97ca861e.js' [2021-12-13T03:35:50.105Z] [2703] +. 2021-12-13 11:36:00.156 Copying "assets\index.97ca861e.js" to remote directory started. +. 2021-12-13 11:36:00.156 Binary transfer mode selected. +. 2021-12-13 11:36:00.156 Opening remote file. +> 2021-12-13 11:36:00.156 Type: SSH_FXP_OPEN, Size: 71, Number: 107523 +< 2021-12-13 11:36:00.165 Type: SSH_FXP_HANDLE, Size: 13, Number: 107523 +> 2021-12-13 11:36:00.165 Type: SSH_FXP_WRITE, Size: 2728, Number: 108038 +> 2021-12-13 11:36:00.166 Type: SSH_FXP_CLOSE, Size: 13, Number: 108292 +> 2021-12-13 11:36:00.166 Type: SSH_FXP_SETSTAT, Size: 67, Number: 107785 +< 2021-12-13 11:36:00.175 Type: SSH_FXP_STATUS, Size: 24, Number: 108038 +< 2021-12-13 11:36:00.176 Status code: 0 +< 2021-12-13 11:36:00.184 Type: SSH_FXP_STATUS, Size: 24, Number: 108292 +< 2021-12-13 11:36:00.185 Status code: 0 +. 2021-12-13 11:36:00.185 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.185 Type: SSH_FXP_STATUS, Size: 24, Number: 107785 +< 2021-12-13 11:36:00.185 Status code: 0 +. 2021-12-13 11:36:00.185 Transfer done: 'assets\index.97ca861e.js' => '/root/hemodialysis/pc/assets/index.97ca861e.js' [2703] +. 2021-12-13 11:36:00.186 File: 'assets\index.9c05ca74.js' [2021-12-13T03:35:50.106Z] [1918] +. 2021-12-13 11:36:00.210 Copying "assets\index.9c05ca74.js" to remote directory started. +. 2021-12-13 11:36:00.210 Binary transfer mode selected. +. 2021-12-13 11:36:00.210 Opening remote file. +> 2021-12-13 11:36:00.210 Type: SSH_FXP_OPEN, Size: 71, Number: 108547 +. 2021-12-13 11:36:00.210 Increasing send buffer from 262144 to 524288 +< 2021-12-13 11:36:00.220 Type: SSH_FXP_HANDLE, Size: 13, Number: 108547 +> 2021-12-13 11:36:00.220 Type: SSH_FXP_WRITE, Size: 1943, Number: 109062 +> 2021-12-13 11:36:00.221 Type: SSH_FXP_CLOSE, Size: 13, Number: 109316 +> 2021-12-13 11:36:00.221 Type: SSH_FXP_SETSTAT, Size: 67, Number: 108809 +< 2021-12-13 11:36:00.231 Type: SSH_FXP_STATUS, Size: 24, Number: 109062 +< 2021-12-13 11:36:00.231 Status code: 0 +< 2021-12-13 11:36:00.240 Type: SSH_FXP_STATUS, Size: 24, Number: 109316 +< 2021-12-13 11:36:00.240 Status code: 0 +. 2021-12-13 11:36:00.240 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.240 Type: SSH_FXP_STATUS, Size: 24, Number: 108809 +< 2021-12-13 11:36:00.240 Status code: 0 +. 2021-12-13 11:36:00.240 Transfer done: 'assets\index.9c05ca74.js' => '/root/hemodialysis/pc/assets/index.9c05ca74.js' [1918] +. 2021-12-13 11:36:00.240 File: 'assets\index.9cde7e5f.js' [2021-12-13T03:35:50.102Z] [13775] +. 2021-12-13 11:36:00.270 Copying "assets\index.9cde7e5f.js" to remote directory started. +. 2021-12-13 11:36:00.270 Binary transfer mode selected. +. 2021-12-13 11:36:00.270 Opening remote file. +> 2021-12-13 11:36:00.270 Type: SSH_FXP_OPEN, Size: 71, Number: 109571 +< 2021-12-13 11:36:00.282 Type: SSH_FXP_HANDLE, Size: 13, Number: 109571 +> 2021-12-13 11:36:00.282 Type: SSH_FXP_WRITE, Size: 13800, Number: 110086 +> 2021-12-13 11:36:00.283 Type: SSH_FXP_CLOSE, Size: 13, Number: 110340 +> 2021-12-13 11:36:00.284 Type: SSH_FXP_SETSTAT, Size: 67, Number: 109833 +< 2021-12-13 11:36:00.292 Type: SSH_FXP_STATUS, Size: 24, Number: 110086 +< 2021-12-13 11:36:00.292 Status code: 0 +< 2021-12-13 11:36:00.303 Type: SSH_FXP_STATUS, Size: 24, Number: 110340 +< 2021-12-13 11:36:00.303 Status code: 0 +. 2021-12-13 11:36:00.303 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.303 Type: SSH_FXP_STATUS, Size: 24, Number: 109833 +< 2021-12-13 11:36:00.303 Status code: 0 +. 2021-12-13 11:36:00.303 Transfer done: 'assets\index.9cde7e5f.js' => '/root/hemodialysis/pc/assets/index.9cde7e5f.js' [13775] +. 2021-12-13 11:36:00.304 File: 'assets\index.9f269da2.js' [2021-12-13T03:35:50.107Z] [2234] +. 2021-12-13 11:36:00.321 Copying "assets\index.9f269da2.js" to remote directory started. +. 2021-12-13 11:36:00.323 Binary transfer mode selected. +. 2021-12-13 11:36:00.323 Opening remote file. +> 2021-12-13 11:36:00.323 Type: SSH_FXP_OPEN, Size: 71, Number: 110595 +< 2021-12-13 11:36:00.335 Type: SSH_FXP_HANDLE, Size: 13, Number: 110595 +> 2021-12-13 11:36:00.335 Type: SSH_FXP_WRITE, Size: 2259, Number: 111110 +> 2021-12-13 11:36:00.336 Type: SSH_FXP_CLOSE, Size: 13, Number: 111364 +> 2021-12-13 11:36:00.336 Type: SSH_FXP_SETSTAT, Size: 67, Number: 110857 +< 2021-12-13 11:36:00.344 Type: SSH_FXP_STATUS, Size: 24, Number: 111110 +< 2021-12-13 11:36:00.344 Status code: 0 +< 2021-12-13 11:36:00.363 Type: SSH_FXP_STATUS, Size: 24, Number: 111364 +< 2021-12-13 11:36:00.363 Status code: 0 +. 2021-12-13 11:36:00.364 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.364 Type: SSH_FXP_STATUS, Size: 24, Number: 110857 +< 2021-12-13 11:36:00.364 Status code: 0 +. 2021-12-13 11:36:00.364 Transfer done: 'assets\index.9f269da2.js' => '/root/hemodialysis/pc/assets/index.9f269da2.js' [2234] +. 2021-12-13 11:36:00.364 File: 'assets\index.9f65a0b7.js' [2021-12-13T03:35:50.105Z] [5385] +. 2021-12-13 11:36:00.394 Copying "assets\index.9f65a0b7.js" to remote directory started. +. 2021-12-13 11:36:00.394 Binary transfer mode selected. +. 2021-12-13 11:36:00.394 Opening remote file. +> 2021-12-13 11:36:00.395 Type: SSH_FXP_OPEN, Size: 71, Number: 111619 +< 2021-12-13 11:36:00.407 Type: SSH_FXP_HANDLE, Size: 13, Number: 111619 +> 2021-12-13 11:36:00.408 Type: SSH_FXP_WRITE, Size: 5410, Number: 112134 +> 2021-12-13 11:36:00.409 Type: SSH_FXP_CLOSE, Size: 13, Number: 112388 +> 2021-12-13 11:36:00.409 Type: SSH_FXP_SETSTAT, Size: 67, Number: 111881 +< 2021-12-13 11:36:00.419 Type: SSH_FXP_STATUS, Size: 24, Number: 112134 +< 2021-12-13 11:36:00.419 Status code: 0 +< 2021-12-13 11:36:00.429 Type: SSH_FXP_STATUS, Size: 24, Number: 112388 +< 2021-12-13 11:36:00.429 Status code: 0 +. 2021-12-13 11:36:00.429 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.429 Type: SSH_FXP_STATUS, Size: 24, Number: 111881 +< 2021-12-13 11:36:00.429 Status code: 0 +. 2021-12-13 11:36:00.429 Transfer done: 'assets\index.9f65a0b7.js' => '/root/hemodialysis/pc/assets/index.9f65a0b7.js' [5385] +. 2021-12-13 11:36:00.430 File: 'assets\index.9f9d6dc5.css' [2021-12-13T03:35:50.116Z] [10820] +. 2021-12-13 11:36:00.444 Copying "assets\index.9f9d6dc5.css" to remote directory started. +. 2021-12-13 11:36:00.444 Binary transfer mode selected. +. 2021-12-13 11:36:00.444 Opening remote file. +> 2021-12-13 11:36:00.444 Type: SSH_FXP_OPEN, Size: 72, Number: 112643 +< 2021-12-13 11:36:00.454 Type: SSH_FXP_HANDLE, Size: 13, Number: 112643 +> 2021-12-13 11:36:00.455 Type: SSH_FXP_WRITE, Size: 10845, Number: 113158 +> 2021-12-13 11:36:00.456 Type: SSH_FXP_CLOSE, Size: 13, Number: 113412 +> 2021-12-13 11:36:00.456 Type: SSH_FXP_SETSTAT, Size: 68, Number: 112905 +< 2021-12-13 11:36:00.466 Type: SSH_FXP_STATUS, Size: 24, Number: 113158 +< 2021-12-13 11:36:00.467 Status code: 0 +< 2021-12-13 11:36:00.476 Type: SSH_FXP_STATUS, Size: 24, Number: 113412 +< 2021-12-13 11:36:00.476 Status code: 0 +. 2021-12-13 11:36:00.476 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.476 Type: SSH_FXP_STATUS, Size: 24, Number: 112905 +< 2021-12-13 11:36:00.476 Status code: 0 +. 2021-12-13 11:36:00.476 Transfer done: 'assets\index.9f9d6dc5.css' => '/root/hemodialysis/pc/assets/index.9f9d6dc5.css' [10820] +. 2021-12-13 11:36:00.476 File: 'assets\index.a0ce9fbe.js' [2021-12-13T03:35:50.099Z] [3988] +. 2021-12-13 11:36:00.503 Copying "assets\index.a0ce9fbe.js" to remote directory started. +. 2021-12-13 11:36:00.503 Binary transfer mode selected. +. 2021-12-13 11:36:00.503 Opening remote file. +> 2021-12-13 11:36:00.503 Type: SSH_FXP_OPEN, Size: 71, Number: 113667 +< 2021-12-13 11:36:00.515 Type: SSH_FXP_HANDLE, Size: 13, Number: 113667 +> 2021-12-13 11:36:00.515 Type: SSH_FXP_WRITE, Size: 4013, Number: 114182 +> 2021-12-13 11:36:00.516 Type: SSH_FXP_CLOSE, Size: 13, Number: 114436 +> 2021-12-13 11:36:00.516 Type: SSH_FXP_SETSTAT, Size: 67, Number: 113929 +< 2021-12-13 11:36:00.524 Type: SSH_FXP_STATUS, Size: 24, Number: 114182 +< 2021-12-13 11:36:00.524 Status code: 0 +< 2021-12-13 11:36:00.535 Type: SSH_FXP_STATUS, Size: 24, Number: 114436 +< 2021-12-13 11:36:00.535 Status code: 0 +. 2021-12-13 11:36:00.535 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.535 Type: SSH_FXP_STATUS, Size: 24, Number: 113929 +< 2021-12-13 11:36:00.535 Status code: 0 +. 2021-12-13 11:36:00.535 Transfer done: 'assets\index.a0ce9fbe.js' => '/root/hemodialysis/pc/assets/index.a0ce9fbe.js' [3988] +. 2021-12-13 11:36:00.536 File: 'assets\index.a1275e21.css' [2021-12-13T03:35:50.111Z] [4527] +. 2021-12-13 11:36:00.550 Copying "assets\index.a1275e21.css" to remote directory started. +. 2021-12-13 11:36:00.550 Binary transfer mode selected. +. 2021-12-13 11:36:00.550 Opening remote file. +> 2021-12-13 11:36:00.550 Type: SSH_FXP_OPEN, Size: 72, Number: 114691 +< 2021-12-13 11:36:00.561 Type: SSH_FXP_HANDLE, Size: 13, Number: 114691 +> 2021-12-13 11:36:00.561 Type: SSH_FXP_WRITE, Size: 4552, Number: 115206 +> 2021-12-13 11:36:00.562 Type: SSH_FXP_CLOSE, Size: 13, Number: 115460 +> 2021-12-13 11:36:00.563 Type: SSH_FXP_SETSTAT, Size: 68, Number: 114953 +< 2021-12-13 11:36:00.572 Type: SSH_FXP_STATUS, Size: 24, Number: 115206 +< 2021-12-13 11:36:00.572 Status code: 0 +< 2021-12-13 11:36:00.583 Type: SSH_FXP_STATUS, Size: 24, Number: 115460 +< 2021-12-13 11:36:00.583 Status code: 0 +. 2021-12-13 11:36:00.583 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.583 Type: SSH_FXP_STATUS, Size: 24, Number: 114953 +< 2021-12-13 11:36:00.583 Status code: 0 +. 2021-12-13 11:36:00.583 Transfer done: 'assets\index.a1275e21.css' => '/root/hemodialysis/pc/assets/index.a1275e21.css' [4527] +. 2021-12-13 11:36:00.583 File: 'assets\index.a1ac184a.js' [2021-12-13T03:35:50.101Z] [41647] +. 2021-12-13 11:36:00.615 Copying "assets\index.a1ac184a.js" to remote directory started. +. 2021-12-13 11:36:00.615 Binary transfer mode selected. +. 2021-12-13 11:36:00.615 Opening remote file. +> 2021-12-13 11:36:00.615 Type: SSH_FXP_OPEN, Size: 71, Number: 115715 +< 2021-12-13 11:36:00.625 Type: SSH_FXP_HANDLE, Size: 13, Number: 115715 +> 2021-12-13 11:36:00.625 Type: SSH_FXP_WRITE, Size: 32764, Number: 116230 +. 2021-12-13 11:36:00.627 1 skipped SSH_FXP_WRITE, SSH_FXP_READ, SSH_FXP_DATA and SSH_FXP_STATUS packets. +> 2021-12-13 11:36:00.627 Type: SSH_FXP_CLOSE, Size: 13, Number: 116740 +> 2021-12-13 11:36:00.627 Type: SSH_FXP_SETSTAT, Size: 67, Number: 115977 +< 2021-12-13 11:36:00.638 Type: SSH_FXP_STATUS, Size: 24, Number: 116230 +< 2021-12-13 11:36:00.639 Status code: 0 +< 2021-12-13 11:36:00.639 Type: SSH_FXP_STATUS, Size: 24, Number: 116486 +< 2021-12-13 11:36:00.639 Status code: 0 +< 2021-12-13 11:36:00.647 Type: SSH_FXP_STATUS, Size: 24, Number: 116740 +< 2021-12-13 11:36:00.647 Status code: 0 +. 2021-12-13 11:36:00.647 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.647 Type: SSH_FXP_STATUS, Size: 24, Number: 115977 +< 2021-12-13 11:36:00.647 Status code: 0 +. 2021-12-13 11:36:00.647 Transfer done: 'assets\index.a1ac184a.js' => '/root/hemodialysis/pc/assets/index.a1ac184a.js' [41647] +. 2021-12-13 11:36:00.647 File: 'assets\index.aa21c176.css' [2021-12-13T03:35:50.115Z] [1166] +. 2021-12-13 11:36:00.660 Copying "assets\index.aa21c176.css" to remote directory started. +. 2021-12-13 11:36:00.660 Binary transfer mode selected. +. 2021-12-13 11:36:00.660 Opening remote file. +> 2021-12-13 11:36:00.660 Type: SSH_FXP_OPEN, Size: 72, Number: 116995 +< 2021-12-13 11:36:00.671 Type: SSH_FXP_HANDLE, Size: 13, Number: 116995 +> 2021-12-13 11:36:00.671 Type: SSH_FXP_WRITE, Size: 1191, Number: 117510 +> 2021-12-13 11:36:00.671 Type: SSH_FXP_CLOSE, Size: 13, Number: 117764 +> 2021-12-13 11:36:00.672 Type: SSH_FXP_SETSTAT, Size: 68, Number: 117257 +< 2021-12-13 11:36:00.680 Type: SSH_FXP_STATUS, Size: 24, Number: 117510 +< 2021-12-13 11:36:00.680 Status code: 0 +< 2021-12-13 11:36:00.688 Type: SSH_FXP_STATUS, Size: 24, Number: 117764 +< 2021-12-13 11:36:00.688 Status code: 0 +. 2021-12-13 11:36:00.688 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.688 Type: SSH_FXP_STATUS, Size: 24, Number: 117257 +< 2021-12-13 11:36:00.688 Status code: 0 +. 2021-12-13 11:36:00.688 Transfer done: 'assets\index.aa21c176.css' => '/root/hemodialysis/pc/assets/index.aa21c176.css' [1166] +. 2021-12-13 11:36:00.689 File: 'assets\index.b42d2306.js' [2021-12-13T03:35:50.107Z] [1717] +. 2021-12-13 11:36:00.714 Copying "assets\index.b42d2306.js" to remote directory started. +. 2021-12-13 11:36:00.714 Binary transfer mode selected. +. 2021-12-13 11:36:00.714 Opening remote file. +> 2021-12-13 11:36:00.714 Type: SSH_FXP_OPEN, Size: 71, Number: 118019 +< 2021-12-13 11:36:00.723 Type: SSH_FXP_HANDLE, Size: 13, Number: 118019 +> 2021-12-13 11:36:00.723 Type: SSH_FXP_WRITE, Size: 1742, Number: 118534 +> 2021-12-13 11:36:00.724 Type: SSH_FXP_CLOSE, Size: 13, Number: 118788 +> 2021-12-13 11:36:00.724 Type: SSH_FXP_SETSTAT, Size: 67, Number: 118281 +< 2021-12-13 11:36:00.734 Type: SSH_FXP_STATUS, Size: 24, Number: 118534 +< 2021-12-13 11:36:00.734 Status code: 0 +< 2021-12-13 11:36:00.747 Type: SSH_FXP_STATUS, Size: 24, Number: 118788 +< 2021-12-13 11:36:00.747 Status code: 0 +. 2021-12-13 11:36:00.748 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.748 Type: SSH_FXP_STATUS, Size: 24, Number: 118281 +< 2021-12-13 11:36:00.748 Status code: 0 +. 2021-12-13 11:36:00.748 Transfer done: 'assets\index.b42d2306.js' => '/root/hemodialysis/pc/assets/index.b42d2306.js' [1717] +. 2021-12-13 11:36:00.750 File: 'assets\index.b56e5a5e.css' [2021-12-13T03:35:50.113Z] [5295] +. 2021-12-13 11:36:00.764 Copying "assets\index.b56e5a5e.css" to remote directory started. +. 2021-12-13 11:36:00.764 Binary transfer mode selected. +. 2021-12-13 11:36:00.764 Opening remote file. +> 2021-12-13 11:36:00.764 Type: SSH_FXP_OPEN, Size: 72, Number: 119043 +< 2021-12-13 11:36:00.773 Type: SSH_FXP_HANDLE, Size: 13, Number: 119043 +> 2021-12-13 11:36:00.773 Type: SSH_FXP_WRITE, Size: 5320, Number: 119558 +> 2021-12-13 11:36:00.774 Type: SSH_FXP_CLOSE, Size: 13, Number: 119812 +> 2021-12-13 11:36:00.774 Type: SSH_FXP_SETSTAT, Size: 68, Number: 119305 +< 2021-12-13 11:36:00.783 Type: SSH_FXP_STATUS, Size: 24, Number: 119558 +< 2021-12-13 11:36:00.783 Status code: 0 +< 2021-12-13 11:36:00.796 Type: SSH_FXP_STATUS, Size: 24, Number: 119812 +< 2021-12-13 11:36:00.796 Status code: 0 +. 2021-12-13 11:36:00.796 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.796 Type: SSH_FXP_STATUS, Size: 24, Number: 119305 +< 2021-12-13 11:36:00.796 Status code: 0 +. 2021-12-13 11:36:00.796 Transfer done: 'assets\index.b56e5a5e.css' => '/root/hemodialysis/pc/assets/index.b56e5a5e.css' [5295] +. 2021-12-13 11:36:00.797 File: 'assets\index.b58ed7e6.js' [2021-12-13T03:35:50.107Z] [1719] +. 2021-12-13 11:36:00.822 Copying "assets\index.b58ed7e6.js" to remote directory started. +. 2021-12-13 11:36:00.822 Binary transfer mode selected. +. 2021-12-13 11:36:00.822 Opening remote file. +> 2021-12-13 11:36:00.822 Type: SSH_FXP_OPEN, Size: 71, Number: 120067 +< 2021-12-13 11:36:00.833 Type: SSH_FXP_HANDLE, Size: 13, Number: 120067 +> 2021-12-13 11:36:00.833 Type: SSH_FXP_WRITE, Size: 1744, Number: 120582 +> 2021-12-13 11:36:00.834 Type: SSH_FXP_CLOSE, Size: 13, Number: 120836 +> 2021-12-13 11:36:00.834 Type: SSH_FXP_SETSTAT, Size: 67, Number: 120329 +< 2021-12-13 11:36:00.843 Type: SSH_FXP_STATUS, Size: 24, Number: 120582 +< 2021-12-13 11:36:00.843 Status code: 0 +< 2021-12-13 11:36:00.854 Type: SSH_FXP_STATUS, Size: 24, Number: 120836 +< 2021-12-13 11:36:00.854 Status code: 0 +. 2021-12-13 11:36:00.855 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.855 Type: SSH_FXP_STATUS, Size: 24, Number: 120329 +< 2021-12-13 11:36:00.855 Status code: 0 +. 2021-12-13 11:36:00.855 Transfer done: 'assets\index.b58ed7e6.js' => '/root/hemodialysis/pc/assets/index.b58ed7e6.js' [1719] +. 2021-12-13 11:36:00.856 File: 'assets\index.b9a62d8c.css' [2021-12-13T03:35:50.111Z] [5118] +. 2021-12-13 11:36:00.869 Copying "assets\index.b9a62d8c.css" to remote directory started. +. 2021-12-13 11:36:00.869 Binary transfer mode selected. +. 2021-12-13 11:36:00.869 Opening remote file. +> 2021-12-13 11:36:00.869 Type: SSH_FXP_OPEN, Size: 72, Number: 121091 +< 2021-12-13 11:36:00.881 Type: SSH_FXP_HANDLE, Size: 13, Number: 121091 +> 2021-12-13 11:36:00.881 Type: SSH_FXP_WRITE, Size: 5143, Number: 121606 +> 2021-12-13 11:36:00.882 Type: SSH_FXP_CLOSE, Size: 13, Number: 121860 +> 2021-12-13 11:36:00.882 Type: SSH_FXP_SETSTAT, Size: 68, Number: 121353 +< 2021-12-13 11:36:00.890 Type: SSH_FXP_STATUS, Size: 24, Number: 121606 +< 2021-12-13 11:36:00.890 Status code: 0 +< 2021-12-13 11:36:00.905 Type: SSH_FXP_STATUS, Size: 24, Number: 121860 +< 2021-12-13 11:36:00.905 Status code: 0 +. 2021-12-13 11:36:00.905 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.905 Type: SSH_FXP_STATUS, Size: 24, Number: 121353 +< 2021-12-13 11:36:00.905 Status code: 0 +. 2021-12-13 11:36:00.905 Transfer done: 'assets\index.b9a62d8c.css' => '/root/hemodialysis/pc/assets/index.b9a62d8c.css' [5118] +. 2021-12-13 11:36:00.906 File: 'assets\index.bac9bf88.js' [2021-12-13T03:35:50.101Z] [907] +. 2021-12-13 11:36:00.931 Copying "assets\index.bac9bf88.js" to remote directory started. +. 2021-12-13 11:36:00.933 Binary transfer mode selected. +. 2021-12-13 11:36:00.933 Opening remote file. +> 2021-12-13 11:36:00.933 Type: SSH_FXP_OPEN, Size: 71, Number: 122115 +< 2021-12-13 11:36:00.955 Type: SSH_FXP_HANDLE, Size: 13, Number: 122115 +> 2021-12-13 11:36:00.955 Type: SSH_FXP_WRITE, Size: 932, Number: 122630 +> 2021-12-13 11:36:00.955 Type: SSH_FXP_CLOSE, Size: 13, Number: 122884 +> 2021-12-13 11:36:00.956 Type: SSH_FXP_SETSTAT, Size: 67, Number: 122377 +< 2021-12-13 11:36:00.971 Type: SSH_FXP_STATUS, Size: 24, Number: 122630 +< 2021-12-13 11:36:00.971 Status code: 0 +< 2021-12-13 11:36:00.979 Type: SSH_FXP_STATUS, Size: 24, Number: 122884 +< 2021-12-13 11:36:00.979 Status code: 0 +. 2021-12-13 11:36:00.979 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:00.979 Type: SSH_FXP_STATUS, Size: 24, Number: 122377 +< 2021-12-13 11:36:00.979 Status code: 0 +. 2021-12-13 11:36:00.979 Transfer done: 'assets\index.bac9bf88.js' => '/root/hemodialysis/pc/assets/index.bac9bf88.js' [907] +. 2021-12-13 11:36:00.980 File: 'assets\index.bada60a9.js' [2021-12-13T03:35:50.106Z] [3854] +. 2021-12-13 11:36:01.009 Copying "assets\index.bada60a9.js" to remote directory started. +. 2021-12-13 11:36:01.011 Binary transfer mode selected. +. 2021-12-13 11:36:01.011 Opening remote file. +> 2021-12-13 11:36:01.011 Type: SSH_FXP_OPEN, Size: 71, Number: 123139 +< 2021-12-13 11:36:01.022 Type: SSH_FXP_HANDLE, Size: 13, Number: 123139 +> 2021-12-13 11:36:01.022 Type: SSH_FXP_WRITE, Size: 3879, Number: 123654 +> 2021-12-13 11:36:01.023 Type: SSH_FXP_CLOSE, Size: 13, Number: 123908 +> 2021-12-13 11:36:01.023 Type: SSH_FXP_SETSTAT, Size: 67, Number: 123401 +< 2021-12-13 11:36:01.036 Type: SSH_FXP_STATUS, Size: 24, Number: 123654 +< 2021-12-13 11:36:01.036 Status code: 0 +< 2021-12-13 11:36:01.046 Type: SSH_FXP_STATUS, Size: 24, Number: 123908 +< 2021-12-13 11:36:01.046 Status code: 0 +. 2021-12-13 11:36:01.046 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.046 Type: SSH_FXP_STATUS, Size: 24, Number: 123401 +< 2021-12-13 11:36:01.046 Status code: 0 +. 2021-12-13 11:36:01.046 Transfer done: 'assets\index.bada60a9.js' => '/root/hemodialysis/pc/assets/index.bada60a9.js' [3854] +. 2021-12-13 11:36:01.047 File: 'assets\index.becd8791.js' [2021-12-13T03:35:50.101Z] [2953] +. 2021-12-13 11:36:01.063 Copying "assets\index.becd8791.js" to remote directory started. +. 2021-12-13 11:36:01.064 Binary transfer mode selected. +. 2021-12-13 11:36:01.064 Opening remote file. +> 2021-12-13 11:36:01.064 Type: SSH_FXP_OPEN, Size: 71, Number: 124163 +< 2021-12-13 11:36:01.072 Type: SSH_FXP_HANDLE, Size: 13, Number: 124163 +> 2021-12-13 11:36:01.073 Type: SSH_FXP_WRITE, Size: 2978, Number: 124678 +> 2021-12-13 11:36:01.073 Type: SSH_FXP_CLOSE, Size: 13, Number: 124932 +> 2021-12-13 11:36:01.074 Type: SSH_FXP_SETSTAT, Size: 67, Number: 124425 +< 2021-12-13 11:36:01.083 Type: SSH_FXP_STATUS, Size: 24, Number: 124678 +< 2021-12-13 11:36:01.083 Status code: 0 +< 2021-12-13 11:36:01.093 Type: SSH_FXP_STATUS, Size: 24, Number: 124932 +< 2021-12-13 11:36:01.093 Status code: 0 +. 2021-12-13 11:36:01.093 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.093 Type: SSH_FXP_STATUS, Size: 24, Number: 124425 +< 2021-12-13 11:36:01.093 Status code: 0 +. 2021-12-13 11:36:01.093 Transfer done: 'assets\index.becd8791.js' => '/root/hemodialysis/pc/assets/index.becd8791.js' [2953] +. 2021-12-13 11:36:01.094 File: 'assets\index.c0f68e5b.js' [2021-12-13T03:35:50.109Z] [17824] +. 2021-12-13 11:36:01.124 Copying "assets\index.c0f68e5b.js" to remote directory started. +. 2021-12-13 11:36:01.124 Binary transfer mode selected. +. 2021-12-13 11:36:01.124 Opening remote file. +> 2021-12-13 11:36:01.124 Type: SSH_FXP_OPEN, Size: 71, Number: 125187 +< 2021-12-13 11:36:01.138 Type: SSH_FXP_HANDLE, Size: 13, Number: 125187 +> 2021-12-13 11:36:01.138 Type: SSH_FXP_WRITE, Size: 17849, Number: 125702 +> 2021-12-13 11:36:01.140 Type: SSH_FXP_CLOSE, Size: 13, Number: 125956 +> 2021-12-13 11:36:01.140 Type: SSH_FXP_SETSTAT, Size: 67, Number: 125449 +< 2021-12-13 11:36:01.155 Type: SSH_FXP_STATUS, Size: 24, Number: 125702 +< 2021-12-13 11:36:01.155 Status code: 0 +< 2021-12-13 11:36:01.164 Type: SSH_FXP_STATUS, Size: 24, Number: 125956 +< 2021-12-13 11:36:01.164 Status code: 0 +. 2021-12-13 11:36:01.164 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.165 Type: SSH_FXP_STATUS, Size: 24, Number: 125449 +< 2021-12-13 11:36:01.165 Status code: 0 +. 2021-12-13 11:36:01.165 Transfer done: 'assets\index.c0f68e5b.js' => '/root/hemodialysis/pc/assets/index.c0f68e5b.js' [17824] +. 2021-12-13 11:36:01.166 File: 'assets\index.c113c4c4.js' [2021-12-13T03:35:50.101Z] [3384] +. 2021-12-13 11:36:01.189 Copying "assets\index.c113c4c4.js" to remote directory started. +. 2021-12-13 11:36:01.189 Binary transfer mode selected. +. 2021-12-13 11:36:01.189 Opening remote file. +> 2021-12-13 11:36:01.189 Type: SSH_FXP_OPEN, Size: 71, Number: 126211 +< 2021-12-13 11:36:01.199 Type: SSH_FXP_HANDLE, Size: 13, Number: 126211 +> 2021-12-13 11:36:01.200 Type: SSH_FXP_WRITE, Size: 3409, Number: 126726 +> 2021-12-13 11:36:01.200 Type: SSH_FXP_CLOSE, Size: 13, Number: 126980 +> 2021-12-13 11:36:01.200 Type: SSH_FXP_SETSTAT, Size: 67, Number: 126473 +< 2021-12-13 11:36:01.218 Type: SSH_FXP_STATUS, Size: 24, Number: 126726 +< 2021-12-13 11:36:01.218 Status code: 0 +< 2021-12-13 11:36:01.228 Type: SSH_FXP_STATUS, Size: 24, Number: 126980 +< 2021-12-13 11:36:01.228 Status code: 0 +. 2021-12-13 11:36:01.229 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.229 Type: SSH_FXP_STATUS, Size: 24, Number: 126473 +< 2021-12-13 11:36:01.229 Status code: 0 +. 2021-12-13 11:36:01.229 Transfer done: 'assets\index.c113c4c4.js' => '/root/hemodialysis/pc/assets/index.c113c4c4.js' [3384] +. 2021-12-13 11:36:01.230 File: 'assets\index.c224d7f0.css' [2021-12-13T03:35:50.116Z] [7034] +. 2021-12-13 11:36:01.243 Copying "assets\index.c224d7f0.css" to remote directory started. +. 2021-12-13 11:36:01.243 Binary transfer mode selected. +. 2021-12-13 11:36:01.244 Opening remote file. +> 2021-12-13 11:36:01.244 Type: SSH_FXP_OPEN, Size: 72, Number: 127235 +< 2021-12-13 11:36:01.252 Type: SSH_FXP_HANDLE, Size: 13, Number: 127235 +> 2021-12-13 11:36:01.252 Type: SSH_FXP_WRITE, Size: 7059, Number: 127750 +> 2021-12-13 11:36:01.253 Type: SSH_FXP_CLOSE, Size: 13, Number: 128004 +> 2021-12-13 11:36:01.253 Type: SSH_FXP_SETSTAT, Size: 68, Number: 127497 +< 2021-12-13 11:36:01.264 Type: SSH_FXP_STATUS, Size: 24, Number: 127750 +< 2021-12-13 11:36:01.265 Status code: 0 +< 2021-12-13 11:36:01.281 Type: SSH_FXP_STATUS, Size: 24, Number: 128004 +< 2021-12-13 11:36:01.281 Status code: 0 +. 2021-12-13 11:36:01.282 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.282 Type: SSH_FXP_STATUS, Size: 24, Number: 127497 +< 2021-12-13 11:36:01.282 Status code: 0 +. 2021-12-13 11:36:01.282 Transfer done: 'assets\index.c224d7f0.css' => '/root/hemodialysis/pc/assets/index.c224d7f0.css' [7034] +. 2021-12-13 11:36:01.282 File: 'assets\index.c31dace9.js' [2021-12-13T03:35:50.100Z] [838] +. 2021-12-13 11:36:01.305 Copying "assets\index.c31dace9.js" to remote directory started. +. 2021-12-13 11:36:01.307 Binary transfer mode selected. +. 2021-12-13 11:36:01.307 Opening remote file. +> 2021-12-13 11:36:01.307 Type: SSH_FXP_OPEN, Size: 71, Number: 128259 +< 2021-12-13 11:36:01.319 Type: SSH_FXP_HANDLE, Size: 13, Number: 128259 +> 2021-12-13 11:36:01.319 Type: SSH_FXP_WRITE, Size: 863, Number: 128774 +> 2021-12-13 11:36:01.320 Type: SSH_FXP_CLOSE, Size: 13, Number: 129028 +> 2021-12-13 11:36:01.320 Type: SSH_FXP_SETSTAT, Size: 67, Number: 128521 +< 2021-12-13 11:36:01.341 Type: SSH_FXP_STATUS, Size: 24, Number: 128774 +< 2021-12-13 11:36:01.341 Status code: 0 +< 2021-12-13 11:36:01.349 Type: SSH_FXP_STATUS, Size: 24, Number: 129028 +< 2021-12-13 11:36:01.349 Status code: 0 +. 2021-12-13 11:36:01.349 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.349 Type: SSH_FXP_STATUS, Size: 24, Number: 128521 +< 2021-12-13 11:36:01.349 Status code: 0 +. 2021-12-13 11:36:01.349 Transfer done: 'assets\index.c31dace9.js' => '/root/hemodialysis/pc/assets/index.c31dace9.js' [838] +. 2021-12-13 11:36:01.350 File: 'assets\index.c3bcf2de.js' [2021-12-13T03:35:50.106Z] [16789] +. 2021-12-13 11:36:01.380 Copying "assets\index.c3bcf2de.js" to remote directory started. +. 2021-12-13 11:36:01.381 Binary transfer mode selected. +. 2021-12-13 11:36:01.381 Opening remote file. +> 2021-12-13 11:36:01.381 Type: SSH_FXP_OPEN, Size: 71, Number: 129283 +< 2021-12-13 11:36:01.395 Type: SSH_FXP_HANDLE, Size: 13, Number: 129283 +> 2021-12-13 11:36:01.396 Type: SSH_FXP_WRITE, Size: 16814, Number: 129798 +> 2021-12-13 11:36:01.397 Type: SSH_FXP_CLOSE, Size: 13, Number: 130052 +> 2021-12-13 11:36:01.397 Type: SSH_FXP_SETSTAT, Size: 67, Number: 129545 +< 2021-12-13 11:36:01.406 Type: SSH_FXP_STATUS, Size: 24, Number: 129798 +< 2021-12-13 11:36:01.406 Status code: 0 +< 2021-12-13 11:36:01.416 Type: SSH_FXP_STATUS, Size: 24, Number: 130052 +< 2021-12-13 11:36:01.416 Status code: 0 +. 2021-12-13 11:36:01.417 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.417 Type: SSH_FXP_STATUS, Size: 24, Number: 129545 +< 2021-12-13 11:36:01.417 Status code: 0 +. 2021-12-13 11:36:01.417 Transfer done: 'assets\index.c3bcf2de.js' => '/root/hemodialysis/pc/assets/index.c3bcf2de.js' [16789] +. 2021-12-13 11:36:01.417 File: 'assets\index.c8d470ce.js' [2021-12-13T03:35:50.106Z] [3186] +. 2021-12-13 11:36:01.443 Copying "assets\index.c8d470ce.js" to remote directory started. +. 2021-12-13 11:36:01.443 Binary transfer mode selected. +. 2021-12-13 11:36:01.443 Opening remote file. +> 2021-12-13 11:36:01.443 Type: SSH_FXP_OPEN, Size: 71, Number: 130307 +< 2021-12-13 11:36:01.454 Type: SSH_FXP_HANDLE, Size: 13, Number: 130307 +> 2021-12-13 11:36:01.454 Type: SSH_FXP_WRITE, Size: 3211, Number: 130822 +> 2021-12-13 11:36:01.455 Type: SSH_FXP_CLOSE, Size: 13, Number: 131076 +> 2021-12-13 11:36:01.455 Type: SSH_FXP_SETSTAT, Size: 67, Number: 130569 +< 2021-12-13 11:36:01.464 Type: SSH_FXP_STATUS, Size: 24, Number: 130822 +< 2021-12-13 11:36:01.464 Status code: 0 +< 2021-12-13 11:36:01.471 Type: SSH_FXP_STATUS, Size: 24, Number: 131076 +< 2021-12-13 11:36:01.471 Status code: 0 +. 2021-12-13 11:36:01.471 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.471 Type: SSH_FXP_STATUS, Size: 24, Number: 130569 +< 2021-12-13 11:36:01.471 Status code: 0 +. 2021-12-13 11:36:01.471 Transfer done: 'assets\index.c8d470ce.js' => '/root/hemodialysis/pc/assets/index.c8d470ce.js' [3186] +. 2021-12-13 11:36:01.472 File: 'assets\index.d0b21cd5.css' [2021-12-13T03:35:50.112Z] [2328] +. 2021-12-13 11:36:01.485 Copying "assets\index.d0b21cd5.css" to remote directory started. +. 2021-12-13 11:36:01.485 Binary transfer mode selected. +. 2021-12-13 11:36:01.485 Opening remote file. +> 2021-12-13 11:36:01.485 Type: SSH_FXP_OPEN, Size: 72, Number: 131331 +< 2021-12-13 11:36:01.496 Type: SSH_FXP_HANDLE, Size: 13, Number: 131331 +> 2021-12-13 11:36:01.496 Type: SSH_FXP_WRITE, Size: 2353, Number: 131846 +> 2021-12-13 11:36:01.497 Type: SSH_FXP_CLOSE, Size: 13, Number: 132100 +> 2021-12-13 11:36:01.497 Type: SSH_FXP_SETSTAT, Size: 68, Number: 131593 +< 2021-12-13 11:36:01.507 Type: SSH_FXP_STATUS, Size: 24, Number: 131846 +< 2021-12-13 11:36:01.507 Status code: 0 +< 2021-12-13 11:36:01.516 Type: SSH_FXP_STATUS, Size: 24, Number: 132100 +< 2021-12-13 11:36:01.516 Status code: 0 +. 2021-12-13 11:36:01.517 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.517 Type: SSH_FXP_STATUS, Size: 24, Number: 131593 +< 2021-12-13 11:36:01.517 Status code: 0 +. 2021-12-13 11:36:01.517 Transfer done: 'assets\index.d0b21cd5.css' => '/root/hemodialysis/pc/assets/index.d0b21cd5.css' [2328] +. 2021-12-13 11:36:01.517 File: 'assets\index.d130fa5d.js' [2021-12-13T03:35:50.107Z] [1053] +. 2021-12-13 11:36:01.537 Copying "assets\index.d130fa5d.js" to remote directory started. +. 2021-12-13 11:36:01.537 Binary transfer mode selected. +. 2021-12-13 11:36:01.537 Opening remote file. +> 2021-12-13 11:36:01.537 Type: SSH_FXP_OPEN, Size: 71, Number: 132355 +< 2021-12-13 11:36:01.548 Type: SSH_FXP_HANDLE, Size: 13, Number: 132355 +> 2021-12-13 11:36:01.548 Type: SSH_FXP_WRITE, Size: 1078, Number: 132870 +> 2021-12-13 11:36:01.549 Type: SSH_FXP_CLOSE, Size: 13, Number: 133124 +> 2021-12-13 11:36:01.549 Type: SSH_FXP_SETSTAT, Size: 67, Number: 132617 +< 2021-12-13 11:36:01.558 Type: SSH_FXP_STATUS, Size: 24, Number: 132870 +< 2021-12-13 11:36:01.558 Status code: 0 +< 2021-12-13 11:36:01.567 Type: SSH_FXP_STATUS, Size: 24, Number: 133124 +< 2021-12-13 11:36:01.567 Status code: 0 +. 2021-12-13 11:36:01.567 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.567 Type: SSH_FXP_STATUS, Size: 24, Number: 132617 +< 2021-12-13 11:36:01.567 Status code: 0 +. 2021-12-13 11:36:01.567 Transfer done: 'assets\index.d130fa5d.js' => '/root/hemodialysis/pc/assets/index.d130fa5d.js' [1053] +. 2021-12-13 11:36:01.567 File: 'assets\index.d1510047.js' [2021-12-13T03:35:50.094Z] [47963] +. 2021-12-13 11:36:01.601 Copying "assets\index.d1510047.js" to remote directory started. +. 2021-12-13 11:36:01.601 Binary transfer mode selected. +. 2021-12-13 11:36:01.601 Opening remote file. +> 2021-12-13 11:36:01.601 Type: SSH_FXP_OPEN, Size: 71, Number: 133379 +< 2021-12-13 11:36:01.614 Type: SSH_FXP_HANDLE, Size: 13, Number: 133379 +> 2021-12-13 11:36:01.614 Type: SSH_FXP_WRITE, Size: 32764, Number: 133894 +. 2021-12-13 11:36:01.616 1 skipped SSH_FXP_WRITE, SSH_FXP_READ, SSH_FXP_DATA and SSH_FXP_STATUS packets. +> 2021-12-13 11:36:01.616 Type: SSH_FXP_CLOSE, Size: 13, Number: 134404 +> 2021-12-13 11:36:01.616 Type: SSH_FXP_SETSTAT, Size: 67, Number: 133641 +< 2021-12-13 11:36:01.630 Type: SSH_FXP_STATUS, Size: 24, Number: 133894 +< 2021-12-13 11:36:01.630 Status code: 0 +< 2021-12-13 11:36:01.630 Type: SSH_FXP_STATUS, Size: 24, Number: 134150 +< 2021-12-13 11:36:01.630 Status code: 0 +< 2021-12-13 11:36:01.640 Type: SSH_FXP_STATUS, Size: 24, Number: 134404 +< 2021-12-13 11:36:01.640 Status code: 0 +. 2021-12-13 11:36:01.640 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.640 Type: SSH_FXP_STATUS, Size: 24, Number: 133641 +< 2021-12-13 11:36:01.641 Status code: 0 +. 2021-12-13 11:36:01.641 Transfer done: 'assets\index.d1510047.js' => '/root/hemodialysis/pc/assets/index.d1510047.js' [47963] +. 2021-12-13 11:36:01.641 File: 'assets\index.d28ff1c5.js' [2021-12-13T03:35:50.108Z] [10607] +. 2021-12-13 11:36:01.676 Copying "assets\index.d28ff1c5.js" to remote directory started. +. 2021-12-13 11:36:01.676 Binary transfer mode selected. +. 2021-12-13 11:36:01.676 Opening remote file. +> 2021-12-13 11:36:01.676 Type: SSH_FXP_OPEN, Size: 71, Number: 134659 +< 2021-12-13 11:36:01.685 Type: SSH_FXP_HANDLE, Size: 13, Number: 134659 +> 2021-12-13 11:36:01.685 Type: SSH_FXP_WRITE, Size: 10632, Number: 135174 +> 2021-12-13 11:36:01.686 Type: SSH_FXP_CLOSE, Size: 13, Number: 135428 +> 2021-12-13 11:36:01.686 Type: SSH_FXP_SETSTAT, Size: 67, Number: 134921 +< 2021-12-13 11:36:01.698 Type: SSH_FXP_STATUS, Size: 24, Number: 135174 +< 2021-12-13 11:36:01.698 Status code: 0 +< 2021-12-13 11:36:01.706 Type: SSH_FXP_STATUS, Size: 24, Number: 135428 +< 2021-12-13 11:36:01.706 Status code: 0 +. 2021-12-13 11:36:01.706 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.706 Type: SSH_FXP_STATUS, Size: 24, Number: 134921 +< 2021-12-13 11:36:01.706 Status code: 0 +. 2021-12-13 11:36:01.706 Transfer done: 'assets\index.d28ff1c5.js' => '/root/hemodialysis/pc/assets/index.d28ff1c5.js' [10607] +. 2021-12-13 11:36:01.707 File: 'assets\index.d4bd4e17.js' [2021-12-13T03:35:50.091Z] [131779] +. 2021-12-13 11:36:01.781 Copying "assets\index.d4bd4e17.js" to remote directory started. +. 2021-12-13 11:36:01.781 Binary transfer mode selected. +. 2021-12-13 11:36:01.781 Opening remote file. +> 2021-12-13 11:36:01.781 Type: SSH_FXP_OPEN, Size: 80, Number: 135683 +< 2021-12-13 11:36:01.791 Type: SSH_FXP_HANDLE, Size: 13, Number: 135683 +> 2021-12-13 11:36:01.791 Type: SSH_FXP_WRITE, Size: 32764, Number: 136198 +. 2021-12-13 11:36:01.795 4 skipped SSH_FXP_WRITE, SSH_FXP_READ, SSH_FXP_DATA and SSH_FXP_STATUS packets. +> 2021-12-13 11:36:01.795 Type: SSH_FXP_CLOSE, Size: 13, Number: 137476 +< 2021-12-13 11:36:01.803 Type: SSH_FXP_STATUS, Size: 24, Number: 136198 +< 2021-12-13 11:36:01.803 Status code: 0 +< 2021-12-13 11:36:01.807 Type: SSH_FXP_STATUS, Size: 24, Number: 136454 +< 2021-12-13 11:36:01.807 Status code: 0 +< 2021-12-13 11:36:01.812 Type: SSH_FXP_STATUS, Size: 24, Number: 136710 +< 2021-12-13 11:36:01.812 Status code: 0 +< 2021-12-13 11:36:01.812 Type: SSH_FXP_STATUS, Size: 24, Number: 136966 +< 2021-12-13 11:36:01.812 Status code: 0 +< 2021-12-13 11:36:01.815 Type: SSH_FXP_STATUS, Size: 24, Number: 137222 +< 2021-12-13 11:36:01.816 Status code: 0 +< 2021-12-13 11:36:01.816 Type: SSH_FXP_STATUS, Size: 24, Number: 137476 +< 2021-12-13 11:36:01.816 Status code: 0 +> 2021-12-13 11:36:01.816 Type: SSH_FXP_RENAME, Size: 114, Number: 137746 +< 2021-12-13 11:36:01.824 Type: SSH_FXP_STATUS, Size: 24, Number: 137746 +< 2021-12-13 11:36:01.824 Status code: 0 +. 2021-12-13 11:36:01.824 Preserving timestamp [2021-12-13T03:35:50.000Z] +> 2021-12-13 11:36:01.824 Type: SSH_FXP_SETSTAT, Size: 67, Number: 135945 +< 2021-12-13 11:36:01.833 Type: SSH_FXP_STATUS, Size: 24, Number: 135945 +< 2021-12-13 11:36:01.833 Status code: 0 +. 2021-12-13 11:36:01.833 Transfer done: 'assets\index.d4bd4e17.js' => '/root/hemodialysis/pc/assets/index.d4bd4e17.js' [131779] +. 2021-12-13 11:36:01.834 File: 'assets\index.d5eccda6.js' [2021-12-13T03:35:50.108Z] [26806] +. 2021-12-13 11:36:01.875 Copying "assets\index.d5eccda6.js" to remote directory started. +. 2021-12-13 11:36:01.875 Binary transfer mode selected. +. 2021-12-13 11:36:01.875 Opening remote file. +> 2021-12-13 11:36:01.875 Type: SSH_FXP_OPEN, Size: 71, Number: 137987 +< 2021-12-13 11:36:01.883 Type: SSH_FXP_HANDLE, Size: 13, Number: 137987 +> 2021-12-13 11:36:01.884 Type: SSH_FXP_WRITE, Size: 26831, Number: 138502 +> 2021-12-13 11:36:01.885 Type: SSH_FXP_CLOSE, Size: 13, Number: 138756 +> 2021-12-13 11:36:01.885 Type: SSH_FXP_SETSTAT, Size: 67, Number: 138249 +< 2021-12-13 11:36:01.895 Type: SSH_FXP_STATUS, Size: 24, Number: 138502 +< 2021-12-13 11:36:01.895 Status code: 0 +< 2021-12-13 11:36:01.904 Type: SSH_FXP_STATUS, Size: 24, Number: 138756 +< 2021-12-13 11:36:01.904 Status code: 0 +. 2021-12-13 11:36:01.905 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.905 Type: SSH_FXP_STATUS, Size: 24, Number: 138249 +< 2021-12-13 11:36:01.905 Status code: 0 +. 2021-12-13 11:36:01.905 Transfer done: 'assets\index.d5eccda6.js' => '/root/hemodialysis/pc/assets/index.d5eccda6.js' [26806] +. 2021-12-13 11:36:01.905 File: 'assets\index.d60ba956.css' [2021-12-13T03:35:50.116Z] [1082] +. 2021-12-13 11:36:01.918 Copying "assets\index.d60ba956.css" to remote directory started. +. 2021-12-13 11:36:01.918 Binary transfer mode selected. +. 2021-12-13 11:36:01.918 Opening remote file. +> 2021-12-13 11:36:01.918 Type: SSH_FXP_OPEN, Size: 72, Number: 139011 +< 2021-12-13 11:36:01.928 Type: SSH_FXP_HANDLE, Size: 13, Number: 139011 +> 2021-12-13 11:36:01.928 Type: SSH_FXP_WRITE, Size: 1107, Number: 139526 +> 2021-12-13 11:36:01.929 Type: SSH_FXP_CLOSE, Size: 13, Number: 139780 +> 2021-12-13 11:36:01.929 Type: SSH_FXP_SETSTAT, Size: 68, Number: 139273 +< 2021-12-13 11:36:01.937 Type: SSH_FXP_STATUS, Size: 24, Number: 139526 +< 2021-12-13 11:36:01.937 Status code: 0 +< 2021-12-13 11:36:01.944 Type: SSH_FXP_STATUS, Size: 24, Number: 139780 +< 2021-12-13 11:36:01.944 Status code: 0 +. 2021-12-13 11:36:01.944 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.944 Type: SSH_FXP_STATUS, Size: 24, Number: 139273 +< 2021-12-13 11:36:01.944 Status code: 0 +. 2021-12-13 11:36:01.944 Transfer done: 'assets\index.d60ba956.css' => '/root/hemodialysis/pc/assets/index.d60ba956.css' [1082] +. 2021-12-13 11:36:01.945 File: 'assets\index.da180687.js' [2021-12-13T03:35:50.101Z] [836] +. 2021-12-13 11:36:01.971 Copying "assets\index.da180687.js" to remote directory started. +. 2021-12-13 11:36:01.971 Binary transfer mode selected. +. 2021-12-13 11:36:01.971 Opening remote file. +> 2021-12-13 11:36:01.971 Type: SSH_FXP_OPEN, Size: 71, Number: 140035 +< 2021-12-13 11:36:01.980 Type: SSH_FXP_HANDLE, Size: 13, Number: 140035 +> 2021-12-13 11:36:01.980 Type: SSH_FXP_WRITE, Size: 861, Number: 140550 +> 2021-12-13 11:36:01.981 Type: SSH_FXP_CLOSE, Size: 13, Number: 140804 +> 2021-12-13 11:36:01.981 Type: SSH_FXP_SETSTAT, Size: 67, Number: 140297 +< 2021-12-13 11:36:01.989 Type: SSH_FXP_STATUS, Size: 24, Number: 140550 +< 2021-12-13 11:36:01.989 Status code: 0 +< 2021-12-13 11:36:01.999 Type: SSH_FXP_STATUS, Size: 24, Number: 140804 +< 2021-12-13 11:36:01.999 Status code: 0 +. 2021-12-13 11:36:01.999 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:01.999 Type: SSH_FXP_STATUS, Size: 24, Number: 140297 +< 2021-12-13 11:36:01.999 Status code: 0 +. 2021-12-13 11:36:01.999 Transfer done: 'assets\index.da180687.js' => '/root/hemodialysis/pc/assets/index.da180687.js' [836] +. 2021-12-13 11:36:02.000 File: 'assets\index.ddf69731.js' [2021-12-13T03:35:50.103Z] [1763] +. 2021-12-13 11:36:02.023 Copying "assets\index.ddf69731.js" to remote directory started. +. 2021-12-13 11:36:02.023 Binary transfer mode selected. +. 2021-12-13 11:36:02.023 Opening remote file. +> 2021-12-13 11:36:02.023 Type: SSH_FXP_OPEN, Size: 71, Number: 141059 +< 2021-12-13 11:36:02.033 Type: SSH_FXP_HANDLE, Size: 13, Number: 141059 +> 2021-12-13 11:36:02.033 Type: SSH_FXP_WRITE, Size: 1788, Number: 141574 +> 2021-12-13 11:36:02.034 Type: SSH_FXP_CLOSE, Size: 13, Number: 141828 +> 2021-12-13 11:36:02.034 Type: SSH_FXP_SETSTAT, Size: 67, Number: 141321 +< 2021-12-13 11:36:02.042 Type: SSH_FXP_STATUS, Size: 24, Number: 141574 +< 2021-12-13 11:36:02.043 Status code: 0 +< 2021-12-13 11:36:02.051 Type: SSH_FXP_STATUS, Size: 24, Number: 141828 +< 2021-12-13 11:36:02.051 Status code: 0 +. 2021-12-13 11:36:02.051 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.051 Type: SSH_FXP_STATUS, Size: 24, Number: 141321 +< 2021-12-13 11:36:02.051 Status code: 0 +. 2021-12-13 11:36:02.051 Transfer done: 'assets\index.ddf69731.js' => '/root/hemodialysis/pc/assets/index.ddf69731.js' [1763] +. 2021-12-13 11:36:02.051 File: 'assets\index.de17bffa.js' [2021-12-13T03:35:50.098Z] [3612] +. 2021-12-13 11:36:02.077 Copying "assets\index.de17bffa.js" to remote directory started. +. 2021-12-13 11:36:02.077 Binary transfer mode selected. +. 2021-12-13 11:36:02.077 Opening remote file. +> 2021-12-13 11:36:02.077 Type: SSH_FXP_OPEN, Size: 71, Number: 142083 +< 2021-12-13 11:36:02.090 Type: SSH_FXP_HANDLE, Size: 13, Number: 142083 +> 2021-12-13 11:36:02.091 Type: SSH_FXP_WRITE, Size: 3637, Number: 142598 +> 2021-12-13 11:36:02.091 Type: SSH_FXP_CLOSE, Size: 13, Number: 142852 +> 2021-12-13 11:36:02.091 Type: SSH_FXP_SETSTAT, Size: 67, Number: 142345 +< 2021-12-13 11:36:02.104 Type: SSH_FXP_STATUS, Size: 24, Number: 142598 +< 2021-12-13 11:36:02.104 Status code: 0 +< 2021-12-13 11:36:02.119 Type: SSH_FXP_STATUS, Size: 24, Number: 142852 +< 2021-12-13 11:36:02.119 Status code: 0 +. 2021-12-13 11:36:02.119 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.119 Type: SSH_FXP_STATUS, Size: 24, Number: 142345 +< 2021-12-13 11:36:02.119 Status code: 0 +. 2021-12-13 11:36:02.119 Transfer done: 'assets\index.de17bffa.js' => '/root/hemodialysis/pc/assets/index.de17bffa.js' [3612] +. 2021-12-13 11:36:02.120 File: 'assets\index.dfeaf4d0.js' [2021-12-13T03:35:50.100Z] [4228] +. 2021-12-13 11:36:02.146 Copying "assets\index.dfeaf4d0.js" to remote directory started. +. 2021-12-13 11:36:02.146 Binary transfer mode selected. +. 2021-12-13 11:36:02.146 Opening remote file. +> 2021-12-13 11:36:02.146 Type: SSH_FXP_OPEN, Size: 71, Number: 143107 +< 2021-12-13 11:36:02.155 Type: SSH_FXP_HANDLE, Size: 13, Number: 143107 +> 2021-12-13 11:36:02.155 Type: SSH_FXP_WRITE, Size: 4253, Number: 143622 +> 2021-12-13 11:36:02.156 Type: SSH_FXP_CLOSE, Size: 13, Number: 143876 +> 2021-12-13 11:36:02.157 Type: SSH_FXP_SETSTAT, Size: 67, Number: 143369 +< 2021-12-13 11:36:02.165 Type: SSH_FXP_STATUS, Size: 24, Number: 143622 +< 2021-12-13 11:36:02.165 Status code: 0 +< 2021-12-13 11:36:02.173 Type: SSH_FXP_STATUS, Size: 24, Number: 143876 +< 2021-12-13 11:36:02.173 Status code: 0 +. 2021-12-13 11:36:02.173 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.173 Type: SSH_FXP_STATUS, Size: 24, Number: 143369 +< 2021-12-13 11:36:02.173 Status code: 0 +. 2021-12-13 11:36:02.173 Transfer done: 'assets\index.dfeaf4d0.js' => '/root/hemodialysis/pc/assets/index.dfeaf4d0.js' [4228] +. 2021-12-13 11:36:02.174 File: 'assets\index.e1d98b85.css' [2021-12-13T03:35:50.113Z] [4025] +. 2021-12-13 11:36:02.186 Copying "assets\index.e1d98b85.css" to remote directory started. +. 2021-12-13 11:36:02.187 Binary transfer mode selected. +. 2021-12-13 11:36:02.187 Opening remote file. +> 2021-12-13 11:36:02.187 Type: SSH_FXP_OPEN, Size: 72, Number: 144131 +< 2021-12-13 11:36:02.196 Type: SSH_FXP_HANDLE, Size: 13, Number: 144131 +> 2021-12-13 11:36:02.196 Type: SSH_FXP_WRITE, Size: 4050, Number: 144646 +> 2021-12-13 11:36:02.197 Type: SSH_FXP_CLOSE, Size: 13, Number: 144900 +> 2021-12-13 11:36:02.197 Type: SSH_FXP_SETSTAT, Size: 68, Number: 144393 +< 2021-12-13 11:36:02.209 Type: SSH_FXP_STATUS, Size: 24, Number: 144646 +< 2021-12-13 11:36:02.209 Status code: 0 +< 2021-12-13 11:36:02.217 Type: SSH_FXP_STATUS, Size: 24, Number: 144900 +< 2021-12-13 11:36:02.217 Status code: 0 +. 2021-12-13 11:36:02.218 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.218 Type: SSH_FXP_STATUS, Size: 24, Number: 144393 +< 2021-12-13 11:36:02.218 Status code: 0 +. 2021-12-13 11:36:02.218 Transfer done: 'assets\index.e1d98b85.css' => '/root/hemodialysis/pc/assets/index.e1d98b85.css' [4025] +. 2021-12-13 11:36:02.218 File: 'assets\index.e39e2136.js' [2021-12-13T03:35:50.104Z] [1469] +. 2021-12-13 11:36:02.234 Copying "assets\index.e39e2136.js" to remote directory started. +. 2021-12-13 11:36:02.234 Binary transfer mode selected. +. 2021-12-13 11:36:02.234 Opening remote file. +> 2021-12-13 11:36:02.235 Type: SSH_FXP_OPEN, Size: 71, Number: 145155 +< 2021-12-13 11:36:02.245 Type: SSH_FXP_HANDLE, Size: 13, Number: 145155 +> 2021-12-13 11:36:02.245 Type: SSH_FXP_WRITE, Size: 1494, Number: 145670 +> 2021-12-13 11:36:02.246 Type: SSH_FXP_CLOSE, Size: 13, Number: 145924 +> 2021-12-13 11:36:02.246 Type: SSH_FXP_SETSTAT, Size: 67, Number: 145417 +< 2021-12-13 11:36:02.254 Type: SSH_FXP_STATUS, Size: 24, Number: 145670 +< 2021-12-13 11:36:02.254 Status code: 0 +< 2021-12-13 11:36:02.265 Type: SSH_FXP_STATUS, Size: 24, Number: 145924 +< 2021-12-13 11:36:02.265 Status code: 0 +. 2021-12-13 11:36:02.266 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.266 Type: SSH_FXP_STATUS, Size: 24, Number: 145417 +< 2021-12-13 11:36:02.266 Status code: 0 +. 2021-12-13 11:36:02.266 Transfer done: 'assets\index.e39e2136.js' => '/root/hemodialysis/pc/assets/index.e39e2136.js' [1469] +. 2021-12-13 11:36:02.266 File: 'assets\index.e6a33df5.js' [2021-12-13T03:35:50.101Z] [3167] +. 2021-12-13 11:36:02.293 Copying "assets\index.e6a33df5.js" to remote directory started. +. 2021-12-13 11:36:02.293 Binary transfer mode selected. +. 2021-12-13 11:36:02.293 Opening remote file. +> 2021-12-13 11:36:02.294 Type: SSH_FXP_OPEN, Size: 71, Number: 146179 +< 2021-12-13 11:36:02.308 Type: SSH_FXP_HANDLE, Size: 13, Number: 146179 +> 2021-12-13 11:36:02.308 Type: SSH_FXP_WRITE, Size: 3192, Number: 146694 +> 2021-12-13 11:36:02.309 Type: SSH_FXP_CLOSE, Size: 13, Number: 146948 +> 2021-12-13 11:36:02.309 Type: SSH_FXP_SETSTAT, Size: 67, Number: 146441 +< 2021-12-13 11:36:02.319 Type: SSH_FXP_STATUS, Size: 24, Number: 146694 +< 2021-12-13 11:36:02.319 Status code: 0 +< 2021-12-13 11:36:02.328 Type: SSH_FXP_STATUS, Size: 24, Number: 146948 +< 2021-12-13 11:36:02.328 Status code: 0 +. 2021-12-13 11:36:02.328 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.328 Type: SSH_FXP_STATUS, Size: 24, Number: 146441 +< 2021-12-13 11:36:02.328 Status code: 0 +. 2021-12-13 11:36:02.328 Transfer done: 'assets\index.e6a33df5.js' => '/root/hemodialysis/pc/assets/index.e6a33df5.js' [3167] +. 2021-12-13 11:36:02.329 File: 'assets\index.e9b0ecd6.js' [2021-12-13T03:35:50.106Z] [2357] +. 2021-12-13 11:36:02.355 Copying "assets\index.e9b0ecd6.js" to remote directory started. +. 2021-12-13 11:36:02.355 Binary transfer mode selected. +. 2021-12-13 11:36:02.355 Opening remote file. +> 2021-12-13 11:36:02.356 Type: SSH_FXP_OPEN, Size: 71, Number: 147203 +< 2021-12-13 11:36:02.371 Type: SSH_FXP_HANDLE, Size: 13, Number: 147203 +> 2021-12-13 11:36:02.371 Type: SSH_FXP_WRITE, Size: 2382, Number: 147718 +> 2021-12-13 11:36:02.372 Type: SSH_FXP_CLOSE, Size: 13, Number: 147972 +> 2021-12-13 11:36:02.372 Type: SSH_FXP_SETSTAT, Size: 67, Number: 147465 +< 2021-12-13 11:36:02.381 Type: SSH_FXP_STATUS, Size: 24, Number: 147718 +< 2021-12-13 11:36:02.381 Status code: 0 +< 2021-12-13 11:36:02.397 Type: SSH_FXP_STATUS, Size: 24, Number: 147972 +< 2021-12-13 11:36:02.397 Status code: 0 +. 2021-12-13 11:36:02.398 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.398 Type: SSH_FXP_STATUS, Size: 24, Number: 147465 +< 2021-12-13 11:36:02.398 Status code: 0 +. 2021-12-13 11:36:02.398 Transfer done: 'assets\index.e9b0ecd6.js' => '/root/hemodialysis/pc/assets/index.e9b0ecd6.js' [2357] +. 2021-12-13 11:36:02.398 File: 'assets\index.e9faf5aa.js' [2021-12-13T03:35:50.105Z] [163898] +. 2021-12-13 11:36:02.474 Copying "assets\index.e9faf5aa.js" to remote directory started. +. 2021-12-13 11:36:02.475 Binary transfer mode selected. +. 2021-12-13 11:36:02.475 Opening remote file. +> 2021-12-13 11:36:02.475 Type: SSH_FXP_OPEN, Size: 80, Number: 148227 +< 2021-12-13 11:36:02.486 Type: SSH_FXP_HANDLE, Size: 13, Number: 148227 +> 2021-12-13 11:36:02.486 Type: SSH_FXP_WRITE, Size: 32764, Number: 148742 +. 2021-12-13 11:36:02.491 5 skipped SSH_FXP_WRITE, SSH_FXP_READ, SSH_FXP_DATA and SSH_FXP_STATUS packets. +> 2021-12-13 11:36:02.492 Type: SSH_FXP_CLOSE, Size: 13, Number: 150276 +< 2021-12-13 11:36:02.498 Type: SSH_FXP_STATUS, Size: 24, Number: 148742 +< 2021-12-13 11:36:02.498 Status code: 0 +< 2021-12-13 11:36:02.500 Type: SSH_FXP_STATUS, Size: 24, Number: 148998 +< 2021-12-13 11:36:02.500 Status code: 0 +< 2021-12-13 11:36:02.506 Type: SSH_FXP_STATUS, Size: 24, Number: 149254 +< 2021-12-13 11:36:02.506 Status code: 0 +< 2021-12-13 11:36:02.506 Type: SSH_FXP_STATUS, Size: 24, Number: 149510 +< 2021-12-13 11:36:02.506 Status code: 0 +< 2021-12-13 11:36:02.514 Type: SSH_FXP_STATUS, Size: 24, Number: 149766 +< 2021-12-13 11:36:02.514 Status code: 0 +< 2021-12-13 11:36:02.514 Type: SSH_FXP_STATUS, Size: 24, Number: 150022 +< 2021-12-13 11:36:02.514 Status code: 0 +< 2021-12-13 11:36:02.514 Type: SSH_FXP_STATUS, Size: 24, Number: 150276 +< 2021-12-13 11:36:02.514 Status code: 0 +> 2021-12-13 11:36:02.514 Type: SSH_FXP_RENAME, Size: 114, Number: 150546 +< 2021-12-13 11:36:02.523 Type: SSH_FXP_STATUS, Size: 24, Number: 150546 +< 2021-12-13 11:36:02.523 Status code: 0 +. 2021-12-13 11:36:02.523 Preserving timestamp [2021-12-13T03:35:50.000Z] +> 2021-12-13 11:36:02.523 Type: SSH_FXP_SETSTAT, Size: 67, Number: 148489 +< 2021-12-13 11:36:02.536 Type: SSH_FXP_STATUS, Size: 24, Number: 148489 +< 2021-12-13 11:36:02.536 Status code: 0 +. 2021-12-13 11:36:02.536 Transfer done: 'assets\index.e9faf5aa.js' => '/root/hemodialysis/pc/assets/index.e9faf5aa.js' [163898] +. 2021-12-13 11:36:02.536 File: 'assets\index.ea70a759.js' [2021-12-13T03:35:50.104Z] [1556] +. 2021-12-13 11:36:02.558 Copying "assets\index.ea70a759.js" to remote directory started. +. 2021-12-13 11:36:02.558 Binary transfer mode selected. +. 2021-12-13 11:36:02.558 Opening remote file. +> 2021-12-13 11:36:02.558 Type: SSH_FXP_OPEN, Size: 71, Number: 150787 +< 2021-12-13 11:36:02.569 Type: SSH_FXP_HANDLE, Size: 13, Number: 150787 +> 2021-12-13 11:36:02.570 Type: SSH_FXP_WRITE, Size: 1581, Number: 151302 +> 2021-12-13 11:36:02.570 Type: SSH_FXP_CLOSE, Size: 13, Number: 151556 +> 2021-12-13 11:36:02.570 Type: SSH_FXP_SETSTAT, Size: 67, Number: 151049 +< 2021-12-13 11:36:02.582 Type: SSH_FXP_STATUS, Size: 24, Number: 151302 +< 2021-12-13 11:36:02.582 Status code: 0 +< 2021-12-13 11:36:02.591 Type: SSH_FXP_STATUS, Size: 24, Number: 151556 +< 2021-12-13 11:36:02.591 Status code: 0 +. 2021-12-13 11:36:02.591 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.591 Type: SSH_FXP_STATUS, Size: 24, Number: 151049 +< 2021-12-13 11:36:02.591 Status code: 0 +. 2021-12-13 11:36:02.592 Transfer done: 'assets\index.ea70a759.js' => '/root/hemodialysis/pc/assets/index.ea70a759.js' [1556] +. 2021-12-13 11:36:02.592 File: 'assets\index.f24d452e.js' [2021-12-13T03:35:50.103Z] [1652] +. 2021-12-13 11:36:02.618 Copying "assets\index.f24d452e.js" to remote directory started. +. 2021-12-13 11:36:02.618 Binary transfer mode selected. +. 2021-12-13 11:36:02.618 Opening remote file. +> 2021-12-13 11:36:02.619 Type: SSH_FXP_OPEN, Size: 71, Number: 151811 +< 2021-12-13 11:36:02.631 Type: SSH_FXP_HANDLE, Size: 13, Number: 151811 +> 2021-12-13 11:36:02.631 Type: SSH_FXP_WRITE, Size: 1677, Number: 152326 +> 2021-12-13 11:36:02.631 Type: SSH_FXP_CLOSE, Size: 13, Number: 152580 +> 2021-12-13 11:36:02.631 Type: SSH_FXP_SETSTAT, Size: 67, Number: 152073 +< 2021-12-13 11:36:02.640 Type: SSH_FXP_STATUS, Size: 24, Number: 152326 +< 2021-12-13 11:36:02.640 Status code: 0 +< 2021-12-13 11:36:02.649 Type: SSH_FXP_STATUS, Size: 24, Number: 152580 +< 2021-12-13 11:36:02.649 Status code: 0 +. 2021-12-13 11:36:02.650 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.650 Type: SSH_FXP_STATUS, Size: 24, Number: 152073 +< 2021-12-13 11:36:02.650 Status code: 0 +. 2021-12-13 11:36:02.650 Transfer done: 'assets\index.f24d452e.js' => '/root/hemodialysis/pc/assets/index.f24d452e.js' [1652] +. 2021-12-13 11:36:02.650 File: 'assets\index.f3b0bcce.css' [2021-12-13T03:35:50.115Z] [239] +. 2021-12-13 11:36:02.663 Copying "assets\index.f3b0bcce.css" to remote directory started. +. 2021-12-13 11:36:02.663 Binary transfer mode selected. +. 2021-12-13 11:36:02.663 Opening remote file. +> 2021-12-13 11:36:02.663 Type: SSH_FXP_OPEN, Size: 72, Number: 152835 +< 2021-12-13 11:36:02.672 Type: SSH_FXP_HANDLE, Size: 13, Number: 152835 +> 2021-12-13 11:36:02.672 Type: SSH_FXP_WRITE, Size: 264, Number: 153350 +> 2021-12-13 11:36:02.673 Type: SSH_FXP_CLOSE, Size: 13, Number: 153604 +> 2021-12-13 11:36:02.673 Type: SSH_FXP_SETSTAT, Size: 68, Number: 153097 +< 2021-12-13 11:36:02.681 Type: SSH_FXP_STATUS, Size: 24, Number: 153350 +< 2021-12-13 11:36:02.681 Status code: 0 +< 2021-12-13 11:36:02.688 Type: SSH_FXP_STATUS, Size: 24, Number: 153604 +< 2021-12-13 11:36:02.688 Status code: 0 +. 2021-12-13 11:36:02.688 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.688 Type: SSH_FXP_STATUS, Size: 24, Number: 153097 +< 2021-12-13 11:36:02.688 Status code: 0 +. 2021-12-13 11:36:02.688 Transfer done: 'assets\index.f3b0bcce.css' => '/root/hemodialysis/pc/assets/index.f3b0bcce.css' [239] +. 2021-12-13 11:36:02.689 File: 'assets\index.f44da30c.js' [2021-12-13T03:35:50.103Z] [27909] +. 2021-12-13 11:36:02.730 Copying "assets\index.f44da30c.js" to remote directory started. +. 2021-12-13 11:36:02.730 Binary transfer mode selected. +. 2021-12-13 11:36:02.730 Opening remote file. +> 2021-12-13 11:36:02.730 Type: SSH_FXP_OPEN, Size: 71, Number: 153859 +< 2021-12-13 11:36:02.739 Type: SSH_FXP_HANDLE, Size: 13, Number: 153859 +> 2021-12-13 11:36:02.739 Type: SSH_FXP_WRITE, Size: 27934, Number: 154374 +> 2021-12-13 11:36:02.741 Type: SSH_FXP_CLOSE, Size: 13, Number: 154628 +> 2021-12-13 11:36:02.741 Type: SSH_FXP_SETSTAT, Size: 67, Number: 154121 +< 2021-12-13 11:36:02.753 Type: SSH_FXP_STATUS, Size: 24, Number: 154374 +< 2021-12-13 11:36:02.753 Status code: 0 +< 2021-12-13 11:36:02.759 Type: SSH_FXP_STATUS, Size: 24, Number: 154628 +< 2021-12-13 11:36:02.759 Status code: 0 +. 2021-12-13 11:36:02.760 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.760 Type: SSH_FXP_STATUS, Size: 24, Number: 154121 +< 2021-12-13 11:36:02.760 Status code: 0 +. 2021-12-13 11:36:02.760 Transfer done: 'assets\index.f44da30c.js' => '/root/hemodialysis/pc/assets/index.f44da30c.js' [27909] +. 2021-12-13 11:36:02.761 File: 'assets\index.f49cf711.css' [2021-12-13T03:35:50.111Z] [3626] +. 2021-12-13 11:36:02.775 Copying "assets\index.f49cf711.css" to remote directory started. +. 2021-12-13 11:36:02.775 Binary transfer mode selected. +. 2021-12-13 11:36:02.775 Opening remote file. +> 2021-12-13 11:36:02.775 Type: SSH_FXP_OPEN, Size: 72, Number: 154883 +< 2021-12-13 11:36:02.785 Type: SSH_FXP_HANDLE, Size: 13, Number: 154883 +> 2021-12-13 11:36:02.785 Type: SSH_FXP_WRITE, Size: 3651, Number: 155398 +> 2021-12-13 11:36:02.786 Type: SSH_FXP_CLOSE, Size: 13, Number: 155652 +> 2021-12-13 11:36:02.786 Type: SSH_FXP_SETSTAT, Size: 68, Number: 155145 +< 2021-12-13 11:36:02.797 Type: SSH_FXP_STATUS, Size: 24, Number: 155398 +< 2021-12-13 11:36:02.797 Status code: 0 +< 2021-12-13 11:36:02.807 Type: SSH_FXP_STATUS, Size: 24, Number: 155652 +< 2021-12-13 11:36:02.807 Status code: 0 +. 2021-12-13 11:36:02.807 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.807 Type: SSH_FXP_STATUS, Size: 24, Number: 155145 +< 2021-12-13 11:36:02.807 Status code: 0 +. 2021-12-13 11:36:02.807 Transfer done: 'assets\index.f49cf711.css' => '/root/hemodialysis/pc/assets/index.f49cf711.css' [3626] +. 2021-12-13 11:36:02.808 File: 'assets\index.f6435eda.css' [2021-12-13T03:35:50.112Z] [114] +. 2021-12-13 11:36:02.821 Copying "assets\index.f6435eda.css" to remote directory started. +. 2021-12-13 11:36:02.821 Binary transfer mode selected. +. 2021-12-13 11:36:02.821 Opening remote file. +> 2021-12-13 11:36:02.821 Type: SSH_FXP_OPEN, Size: 72, Number: 155907 +< 2021-12-13 11:36:02.829 Type: SSH_FXP_HANDLE, Size: 13, Number: 155907 +> 2021-12-13 11:36:02.829 Type: SSH_FXP_WRITE, Size: 139, Number: 156422 +> 2021-12-13 11:36:02.829 Type: SSH_FXP_CLOSE, Size: 13, Number: 156676 +> 2021-12-13 11:36:02.829 Type: SSH_FXP_SETSTAT, Size: 68, Number: 156169 +< 2021-12-13 11:36:02.838 Type: SSH_FXP_STATUS, Size: 24, Number: 156422 +< 2021-12-13 11:36:02.838 Status code: 0 +< 2021-12-13 11:36:02.850 Type: SSH_FXP_STATUS, Size: 24, Number: 156676 +< 2021-12-13 11:36:02.850 Status code: 0 +. 2021-12-13 11:36:02.850 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.850 Type: SSH_FXP_STATUS, Size: 24, Number: 156169 +< 2021-12-13 11:36:02.850 Status code: 0 +. 2021-12-13 11:36:02.850 Transfer done: 'assets\index.f6435eda.css' => '/root/hemodialysis/pc/assets/index.f6435eda.css' [114] +. 2021-12-13 11:36:02.851 File: 'assets\index.f774af98.js' [2021-12-13T03:35:50.106Z] [1429] +. 2021-12-13 11:36:02.875 Copying "assets\index.f774af98.js" to remote directory started. +. 2021-12-13 11:36:02.875 Binary transfer mode selected. +. 2021-12-13 11:36:02.875 Opening remote file. +> 2021-12-13 11:36:02.875 Type: SSH_FXP_OPEN, Size: 71, Number: 156931 +< 2021-12-13 11:36:02.886 Type: SSH_FXP_HANDLE, Size: 13, Number: 156931 +> 2021-12-13 11:36:02.886 Type: SSH_FXP_WRITE, Size: 1454, Number: 157446 +> 2021-12-13 11:36:02.886 Type: SSH_FXP_CLOSE, Size: 13, Number: 157700 +> 2021-12-13 11:36:02.886 Type: SSH_FXP_SETSTAT, Size: 67, Number: 157193 +< 2021-12-13 11:36:02.895 Type: SSH_FXP_STATUS, Size: 24, Number: 157446 +< 2021-12-13 11:36:02.895 Status code: 0 +< 2021-12-13 11:36:02.904 Type: SSH_FXP_STATUS, Size: 24, Number: 157700 +< 2021-12-13 11:36:02.904 Status code: 0 +. 2021-12-13 11:36:02.904 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.904 Type: SSH_FXP_STATUS, Size: 24, Number: 157193 +< 2021-12-13 11:36:02.904 Status code: 0 +. 2021-12-13 11:36:02.905 Transfer done: 'assets\index.f774af98.js' => '/root/hemodialysis/pc/assets/index.f774af98.js' [1429] +. 2021-12-13 11:36:02.905 File: 'assets\index.f9596ced.css' [2021-12-13T03:35:50.111Z] [2648] +. 2021-12-13 11:36:02.918 Copying "assets\index.f9596ced.css" to remote directory started. +. 2021-12-13 11:36:02.918 Binary transfer mode selected. +. 2021-12-13 11:36:02.918 Opening remote file. +> 2021-12-13 11:36:02.918 Type: SSH_FXP_OPEN, Size: 72, Number: 157955 +< 2021-12-13 11:36:02.928 Type: SSH_FXP_HANDLE, Size: 13, Number: 157955 +> 2021-12-13 11:36:02.928 Type: SSH_FXP_WRITE, Size: 2673, Number: 158470 +> 2021-12-13 11:36:02.929 Type: SSH_FXP_CLOSE, Size: 13, Number: 158724 +> 2021-12-13 11:36:02.929 Type: SSH_FXP_SETSTAT, Size: 68, Number: 158217 +< 2021-12-13 11:36:02.939 Type: SSH_FXP_STATUS, Size: 24, Number: 158470 +< 2021-12-13 11:36:02.939 Status code: 0 +< 2021-12-13 11:36:02.947 Type: SSH_FXP_STATUS, Size: 24, Number: 158724 +< 2021-12-13 11:36:02.948 Status code: 0 +. 2021-12-13 11:36:02.948 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:02.948 Type: SSH_FXP_STATUS, Size: 24, Number: 158217 +< 2021-12-13 11:36:02.948 Status code: 0 +. 2021-12-13 11:36:02.948 Transfer done: 'assets\index.f9596ced.css' => '/root/hemodialysis/pc/assets/index.f9596ced.css' [2648] +. 2021-12-13 11:36:02.949 File: 'assets\index.fc5972a5.js' [2021-12-13T03:35:50.100Z] [3132] +. 2021-12-13 11:36:02.974 Copying "assets\index.fc5972a5.js" to remote directory started. +. 2021-12-13 11:36:02.974 Binary transfer mode selected. +. 2021-12-13 11:36:02.974 Opening remote file. +> 2021-12-13 11:36:02.974 Type: SSH_FXP_OPEN, Size: 71, Number: 158979 +< 2021-12-13 11:36:02.984 Type: SSH_FXP_HANDLE, Size: 13, Number: 158979 +> 2021-12-13 11:36:02.984 Type: SSH_FXP_WRITE, Size: 3157, Number: 159494 +> 2021-12-13 11:36:02.985 Type: SSH_FXP_CLOSE, Size: 13, Number: 159748 +> 2021-12-13 11:36:02.985 Type: SSH_FXP_SETSTAT, Size: 67, Number: 159241 +< 2021-12-13 11:36:02.993 Type: SSH_FXP_STATUS, Size: 24, Number: 159494 +< 2021-12-13 11:36:02.993 Status code: 0 +< 2021-12-13 11:36:03.002 Type: SSH_FXP_STATUS, Size: 24, Number: 159748 +< 2021-12-13 11:36:03.002 Status code: 0 +. 2021-12-13 11:36:03.002 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:03.002 Type: SSH_FXP_STATUS, Size: 24, Number: 159241 +< 2021-12-13 11:36:03.002 Status code: 0 +. 2021-12-13 11:36:03.002 Transfer done: 'assets\index.fc5972a5.js' => '/root/hemodialysis/pc/assets/index.fc5972a5.js' [3132] +. 2021-12-13 11:36:03.003 File: 'assets\link.b6d1ba91.js' [2021-12-13T03:35:50.108Z] [1148] +. 2021-12-13 11:36:03.019 Copying "assets\link.b6d1ba91.js" to remote directory started. +. 2021-12-13 11:36:03.019 Binary transfer mode selected. +. 2021-12-13 11:36:03.019 Opening remote file. +> 2021-12-13 11:36:03.019 Type: SSH_FXP_OPEN, Size: 70, Number: 160003 +< 2021-12-13 11:36:03.029 Type: SSH_FXP_HANDLE, Size: 13, Number: 160003 +> 2021-12-13 11:36:03.029 Type: SSH_FXP_WRITE, Size: 1173, Number: 160518 +> 2021-12-13 11:36:03.030 Type: SSH_FXP_CLOSE, Size: 13, Number: 160772 +> 2021-12-13 11:36:03.030 Type: SSH_FXP_SETSTAT, Size: 66, Number: 160265 +< 2021-12-13 11:36:03.038 Type: SSH_FXP_STATUS, Size: 24, Number: 160518 +< 2021-12-13 11:36:03.038 Status code: 0 +< 2021-12-13 11:36:03.047 Type: SSH_FXP_STATUS, Size: 24, Number: 160772 +< 2021-12-13 11:36:03.047 Status code: 0 +. 2021-12-13 11:36:03.048 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:03.048 Type: SSH_FXP_STATUS, Size: 24, Number: 160265 +< 2021-12-13 11:36:03.048 Status code: 0 +. 2021-12-13 11:36:03.048 Transfer done: 'assets\link.b6d1ba91.js' => '/root/hemodialysis/pc/assets/link.b6d1ba91.js' [1148] +. 2021-12-13 11:36:03.048 File: 'assets\mobile.babd4354.css' [2021-12-13T03:35:50.112Z] [253] +. 2021-12-13 11:36:03.061 Copying "assets\mobile.babd4354.css" to remote directory started. +. 2021-12-13 11:36:03.061 Binary transfer mode selected. +. 2021-12-13 11:36:03.061 Opening remote file. +> 2021-12-13 11:36:03.061 Type: SSH_FXP_OPEN, Size: 73, Number: 161027 +< 2021-12-13 11:36:03.069 Type: SSH_FXP_HANDLE, Size: 13, Number: 161027 +> 2021-12-13 11:36:03.069 Type: SSH_FXP_WRITE, Size: 278, Number: 161542 +> 2021-12-13 11:36:03.070 Type: SSH_FXP_CLOSE, Size: 13, Number: 161796 +> 2021-12-13 11:36:03.070 Type: SSH_FXP_SETSTAT, Size: 69, Number: 161289 +< 2021-12-13 11:36:03.078 Type: SSH_FXP_STATUS, Size: 24, Number: 161542 +< 2021-12-13 11:36:03.078 Status code: 0 +< 2021-12-13 11:36:03.087 Type: SSH_FXP_STATUS, Size: 24, Number: 161796 +< 2021-12-13 11:36:03.087 Status code: 0 +. 2021-12-13 11:36:03.088 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:03.088 Type: SSH_FXP_STATUS, Size: 24, Number: 161289 +< 2021-12-13 11:36:03.088 Status code: 0 +. 2021-12-13 11:36:03.088 Transfer done: 'assets\mobile.babd4354.css' => '/root/hemodialysis/pc/assets/mobile.babd4354.css' [253] +. 2021-12-13 11:36:03.088 File: 'assets\mobile.d0d37ec2.js' [2021-12-13T03:35:50.109Z] [2023] +. 2021-12-13 11:36:03.104 Copying "assets\mobile.d0d37ec2.js" to remote directory started. +. 2021-12-13 11:36:03.105 Binary transfer mode selected. +. 2021-12-13 11:36:03.105 Opening remote file. +> 2021-12-13 11:36:03.105 Type: SSH_FXP_OPEN, Size: 72, Number: 162051 +< 2021-12-13 11:36:03.117 Type: SSH_FXP_HANDLE, Size: 13, Number: 162051 +> 2021-12-13 11:36:03.117 Type: SSH_FXP_WRITE, Size: 2048, Number: 162566 +> 2021-12-13 11:36:03.117 Type: SSH_FXP_CLOSE, Size: 13, Number: 162820 +> 2021-12-13 11:36:03.118 Type: SSH_FXP_SETSTAT, Size: 68, Number: 162313 +< 2021-12-13 11:36:03.125 Type: SSH_FXP_STATUS, Size: 24, Number: 162566 +< 2021-12-13 11:36:03.125 Status code: 0 +< 2021-12-13 11:36:03.134 Type: SSH_FXP_STATUS, Size: 24, Number: 162820 +< 2021-12-13 11:36:03.134 Status code: 0 +. 2021-12-13 11:36:03.135 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:03.135 Type: SSH_FXP_STATUS, Size: 24, Number: 162313 +< 2021-12-13 11:36:03.135 Status code: 0 +. 2021-12-13 11:36:03.135 Transfer done: 'assets\mobile.d0d37ec2.js' => '/root/hemodialysis/pc/assets/mobile.d0d37ec2.js' [2023] +. 2021-12-13 11:36:03.135 File: 'assets\parent.0ff8616d.js' [2021-12-13T03:35:50.094Z] [1650] +. 2021-12-13 11:36:03.151 Copying "assets\parent.0ff8616d.js" to remote directory started. +. 2021-12-13 11:36:03.151 Binary transfer mode selected. +. 2021-12-13 11:36:03.151 Opening remote file. +> 2021-12-13 11:36:03.151 Type: SSH_FXP_OPEN, Size: 72, Number: 163075 +< 2021-12-13 11:36:03.160 Type: SSH_FXP_HANDLE, Size: 13, Number: 163075 +> 2021-12-13 11:36:03.160 Type: SSH_FXP_WRITE, Size: 1675, Number: 163590 +> 2021-12-13 11:36:03.160 Type: SSH_FXP_CLOSE, Size: 13, Number: 163844 +> 2021-12-13 11:36:03.160 Type: SSH_FXP_SETSTAT, Size: 68, Number: 163337 +< 2021-12-13 11:36:03.169 Type: SSH_FXP_STATUS, Size: 24, Number: 163590 +< 2021-12-13 11:36:03.169 Status code: 0 +< 2021-12-13 11:36:03.177 Type: SSH_FXP_STATUS, Size: 24, Number: 163844 +< 2021-12-13 11:36:03.177 Status code: 0 +. 2021-12-13 11:36:03.177 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:03.177 Type: SSH_FXP_STATUS, Size: 24, Number: 163337 +< 2021-12-13 11:36:03.177 Status code: 0 +. 2021-12-13 11:36:03.177 Transfer done: 'assets\parent.0ff8616d.js' => '/root/hemodialysis/pc/assets/parent.0ff8616d.js' [1650] +. 2021-12-13 11:36:03.177 File: 'assets\qrcode.236e11e4.js' [2021-12-13T03:35:50.102Z] [20358] +. 2021-12-13 11:36:03.205 Copying "assets\qrcode.236e11e4.js" to remote directory started. +. 2021-12-13 11:36:03.205 Binary transfer mode selected. +. 2021-12-13 11:36:03.205 Opening remote file. +> 2021-12-13 11:36:03.205 Type: SSH_FXP_OPEN, Size: 72, Number: 164099 +< 2021-12-13 11:36:03.217 Type: SSH_FXP_HANDLE, Size: 13, Number: 164099 +> 2021-12-13 11:36:03.217 Type: SSH_FXP_WRITE, Size: 20383, Number: 164614 +> 2021-12-13 11:36:03.218 Type: SSH_FXP_CLOSE, Size: 13, Number: 164868 +> 2021-12-13 11:36:03.218 Type: SSH_FXP_SETSTAT, Size: 68, Number: 164361 +< 2021-12-13 11:36:03.228 Type: SSH_FXP_STATUS, Size: 24, Number: 164614 +< 2021-12-13 11:36:03.228 Status code: 0 +< 2021-12-13 11:36:03.235 Type: SSH_FXP_STATUS, Size: 24, Number: 164868 +< 2021-12-13 11:36:03.235 Status code: 0 +. 2021-12-13 11:36:03.235 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:03.235 Type: SSH_FXP_STATUS, Size: 24, Number: 164361 +< 2021-12-13 11:36:03.235 Status code: 0 +. 2021-12-13 11:36:03.235 Transfer done: 'assets\qrcode.236e11e4.js' => '/root/hemodialysis/pc/assets/qrcode.236e11e4.js' [20358] +. 2021-12-13 11:36:03.236 File: 'assets\scan.02f7a246.css' [2021-12-13T03:35:50.111Z] [125] +. 2021-12-13 11:36:03.249 Copying "assets\scan.02f7a246.css" to remote directory started. +. 2021-12-13 11:36:03.249 Binary transfer mode selected. +. 2021-12-13 11:36:03.249 Opening remote file. +> 2021-12-13 11:36:03.249 Type: SSH_FXP_OPEN, Size: 71, Number: 165123 +< 2021-12-13 11:36:03.258 Type: SSH_FXP_HANDLE, Size: 13, Number: 165123 +> 2021-12-13 11:36:03.258 Type: SSH_FXP_WRITE, Size: 150, Number: 165638 +> 2021-12-13 11:36:03.259 Type: SSH_FXP_CLOSE, Size: 13, Number: 165892 +> 2021-12-13 11:36:03.259 Type: SSH_FXP_SETSTAT, Size: 67, Number: 165385 +< 2021-12-13 11:36:03.266 Type: SSH_FXP_STATUS, Size: 24, Number: 165638 +< 2021-12-13 11:36:03.266 Status code: 0 +< 2021-12-13 11:36:03.275 Type: SSH_FXP_STATUS, Size: 24, Number: 165892 +< 2021-12-13 11:36:03.275 Status code: 0 +. 2021-12-13 11:36:03.276 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:03.276 Type: SSH_FXP_STATUS, Size: 24, Number: 165385 +< 2021-12-13 11:36:03.276 Status code: 0 +. 2021-12-13 11:36:03.276 Transfer done: 'assets\scan.02f7a246.css' => '/root/hemodialysis/pc/assets/scan.02f7a246.css' [125] +. 2021-12-13 11:36:03.276 File: 'assets\scan.eb648f81.js' [2021-12-13T03:35:50.109Z] [1054] +. 2021-12-13 11:36:03.292 Copying "assets\scan.eb648f81.js" to remote directory started. +. 2021-12-13 11:36:03.293 Binary transfer mode selected. +. 2021-12-13 11:36:03.293 Opening remote file. +> 2021-12-13 11:36:03.293 Type: SSH_FXP_OPEN, Size: 70, Number: 166147 +< 2021-12-13 11:36:03.302 Type: SSH_FXP_HANDLE, Size: 13, Number: 166147 +> 2021-12-13 11:36:03.302 Type: SSH_FXP_WRITE, Size: 1079, Number: 166662 +> 2021-12-13 11:36:03.303 Type: SSH_FXP_CLOSE, Size: 13, Number: 166916 +> 2021-12-13 11:36:03.303 Type: SSH_FXP_SETSTAT, Size: 66, Number: 166409 +< 2021-12-13 11:36:03.310 Type: SSH_FXP_STATUS, Size: 24, Number: 166662 +< 2021-12-13 11:36:03.310 Status code: 0 +< 2021-12-13 11:36:03.319 Type: SSH_FXP_STATUS, Size: 24, Number: 166916 +< 2021-12-13 11:36:03.319 Status code: 0 +. 2021-12-13 11:36:03.319 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:03.319 Type: SSH_FXP_STATUS, Size: 24, Number: 166409 +< 2021-12-13 11:36:03.319 Status code: 0 +. 2021-12-13 11:36:03.319 Transfer done: 'assets\scan.eb648f81.js' => '/root/hemodialysis/pc/assets/scan.eb648f81.js' [1054] +. 2021-12-13 11:36:03.320 File: 'assets\sortable.esm.31e56bbd.js' [2021-12-13T03:35:50.095Z] [35837] +. 2021-12-13 11:36:03.351 Copying "assets\sortable.esm.31e56bbd.js" to remote directory started. +. 2021-12-13 11:36:03.351 Binary transfer mode selected. +. 2021-12-13 11:36:03.351 Opening remote file. +> 2021-12-13 11:36:03.351 Type: SSH_FXP_OPEN, Size: 78, Number: 167171 +< 2021-12-13 11:36:03.360 Type: SSH_FXP_HANDLE, Size: 13, Number: 167171 +> 2021-12-13 11:36:03.360 Type: SSH_FXP_WRITE, Size: 32764, Number: 167686 +. 2021-12-13 11:36:03.362 1 skipped SSH_FXP_WRITE, SSH_FXP_READ, SSH_FXP_DATA and SSH_FXP_STATUS packets. +> 2021-12-13 11:36:03.362 Type: SSH_FXP_CLOSE, Size: 13, Number: 168196 +> 2021-12-13 11:36:03.362 Type: SSH_FXP_SETSTAT, Size: 74, Number: 167433 +< 2021-12-13 11:36:03.372 Type: SSH_FXP_STATUS, Size: 24, Number: 167686 +< 2021-12-13 11:36:03.372 Status code: 0 +< 2021-12-13 11:36:03.373 Type: SSH_FXP_STATUS, Size: 24, Number: 167942 +< 2021-12-13 11:36:03.373 Status code: 0 +< 2021-12-13 11:36:03.382 Type: SSH_FXP_STATUS, Size: 24, Number: 168196 +< 2021-12-13 11:36:03.382 Status code: 0 +. 2021-12-13 11:36:03.382 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:03.382 Type: SSH_FXP_STATUS, Size: 24, Number: 167433 +< 2021-12-13 11:36:03.382 Status code: 0 +. 2021-12-13 11:36:03.382 Transfer done: 'assets\sortable.esm.31e56bbd.js' => '/root/hemodialysis/pc/assets/sortable.esm.31e56bbd.js' [35837] +. 2021-12-13 11:36:03.383 File: 'assets\vendor.b4696f45.js' [2021-12-13T03:35:50.095Z] [1702853] +. 2021-12-13 11:36:03.775 Copying "assets\vendor.b4696f45.js" to remote directory started. +. 2021-12-13 11:36:03.775 Binary transfer mode selected. +. 2021-12-13 11:36:03.775 Opening remote file. +> 2021-12-13 11:36:03.775 Type: SSH_FXP_OPEN, Size: 81, Number: 168451 +< 2021-12-13 11:36:03.786 Type: SSH_FXP_HANDLE, Size: 13, Number: 168451 +> 2021-12-13 11:36:03.786 Type: SSH_FXP_WRITE, Size: 32764, Number: 168966 +. 2021-12-13 11:36:03.893 87 skipped SSH_FXP_WRITE, SSH_FXP_READ, SSH_FXP_DATA and SSH_FXP_STATUS packets. +> 2021-12-13 11:36:03.893 Type: SSH_FXP_CLOSE, Size: 13, Number: 182532 +< 2021-12-13 11:36:03.910 Type: SSH_FXP_STATUS, Size: 24, Number: 177926 +< 2021-12-13 11:36:03.910 Status code: 0 +< 2021-12-13 11:36:03.911 Type: SSH_FXP_STATUS, Size: 24, Number: 178182 +< 2021-12-13 11:36:03.911 Status code: 0 +< 2021-12-13 11:36:03.911 Type: SSH_FXP_STATUS, Size: 24, Number: 178438 +< 2021-12-13 11:36:03.911 Status code: 0 +< 2021-12-13 11:36:03.911 Type: SSH_FXP_STATUS, Size: 24, Number: 178694 +< 2021-12-13 11:36:03.911 Status code: 0 +< 2021-12-13 11:36:03.911 Type: SSH_FXP_STATUS, Size: 24, Number: 178950 +< 2021-12-13 11:36:03.911 Status code: 0 +< 2021-12-13 11:36:03.911 Type: SSH_FXP_STATUS, Size: 24, Number: 179206 +< 2021-12-13 11:36:03.911 Status code: 0 +< 2021-12-13 11:36:03.911 Type: SSH_FXP_STATUS, Size: 24, Number: 179462 +< 2021-12-13 11:36:03.911 Status code: 0 +< 2021-12-13 11:36:03.911 Type: SSH_FXP_STATUS, Size: 24, Number: 179718 +< 2021-12-13 11:36:03.911 Status code: 0 +< 2021-12-13 11:36:03.914 Type: SSH_FXP_STATUS, Size: 24, Number: 179974 +< 2021-12-13 11:36:03.914 Status code: 0 +< 2021-12-13 11:36:03.932 Type: SSH_FXP_STATUS, Size: 24, Number: 180230 +< 2021-12-13 11:36:03.932 Status code: 0 +< 2021-12-13 11:36:03.933 Type: SSH_FXP_STATUS, Size: 24, Number: 180486 +< 2021-12-13 11:36:03.933 Status code: 0 +< 2021-12-13 11:36:03.933 Type: SSH_FXP_STATUS, Size: 24, Number: 180742 +< 2021-12-13 11:36:03.933 Status code: 0 +< 2021-12-13 11:36:03.933 Type: SSH_FXP_STATUS, Size: 24, Number: 180998 +< 2021-12-13 11:36:03.933 Status code: 0 +< 2021-12-13 11:36:03.933 Type: SSH_FXP_STATUS, Size: 24, Number: 181254 +< 2021-12-13 11:36:03.933 Status code: 0 +< 2021-12-13 11:36:03.933 Type: SSH_FXP_STATUS, Size: 24, Number: 181510 +< 2021-12-13 11:36:03.933 Status code: 0 +< 2021-12-13 11:36:03.934 Type: SSH_FXP_STATUS, Size: 24, Number: 181766 +< 2021-12-13 11:36:03.934 Status code: 0 +< 2021-12-13 11:36:03.935 Type: SSH_FXP_STATUS, Size: 24, Number: 182022 +< 2021-12-13 11:36:03.935 Status code: 0 +< 2021-12-13 11:36:03.943 Type: SSH_FXP_STATUS, Size: 24, Number: 182278 +< 2021-12-13 11:36:03.943 Status code: 0 +< 2021-12-13 11:36:03.943 Type: SSH_FXP_STATUS, Size: 24, Number: 182532 +< 2021-12-13 11:36:03.943 Status code: 0 +> 2021-12-13 11:36:03.943 Type: SSH_FXP_RENAME, Size: 116, Number: 182802 +< 2021-12-13 11:36:03.951 Type: SSH_FXP_STATUS, Size: 24, Number: 182802 +< 2021-12-13 11:36:03.951 Status code: 0 +. 2021-12-13 11:36:03.951 Preserving timestamp [2021-12-13T03:35:50.000Z] +> 2021-12-13 11:36:03.951 Type: SSH_FXP_SETSTAT, Size: 68, Number: 168713 +< 2021-12-13 11:36:03.959 Type: SSH_FXP_STATUS, Size: 24, Number: 168713 +< 2021-12-13 11:36:03.959 Status code: 0 +. 2021-12-13 11:36:03.959 Transfer done: 'assets\vendor.b4696f45.js' => '/root/hemodialysis/pc/assets/vendor.b4696f45.js' [1702853] +. 2021-12-13 11:36:03.959 File: 'assets\world.f1eaa8c1.jpg' [2021-12-13T03:35:50.089Z] [801762] +. 2021-12-13 11:36:03.972 Copying "assets\world.f1eaa8c1.jpg" to remote directory started. +. 2021-12-13 11:36:03.972 Binary transfer mode selected. +. 2021-12-13 11:36:03.972 Opening remote file. +> 2021-12-13 11:36:03.972 Type: SSH_FXP_OPEN, Size: 81, Number: 183043 +< 2021-12-13 11:36:03.981 Type: SSH_FXP_HANDLE, Size: 13, Number: 183043 +> 2021-12-13 11:36:03.981 Type: SSH_FXP_WRITE, Size: 32764, Number: 183558 +. 2021-12-13 11:36:04.010 27 skipped SSH_FXP_WRITE, SSH_FXP_READ, SSH_FXP_DATA and SSH_FXP_STATUS packets. +> 2021-12-13 11:36:04.010 Type: SSH_FXP_CLOSE, Size: 13, Number: 189956 +< 2021-12-13 11:36:04.016 Type: SSH_FXP_STATUS, Size: 24, Number: 184326 +< 2021-12-13 11:36:04.016 Status code: 0 +< 2021-12-13 11:36:04.016 Type: SSH_FXP_STATUS, Size: 24, Number: 184582 +< 2021-12-13 11:36:04.016 Status code: 0 +< 2021-12-13 11:36:04.016 Type: SSH_FXP_STATUS, Size: 24, Number: 184838 +< 2021-12-13 11:36:04.016 Status code: 0 +< 2021-12-13 11:36:04.016 Type: SSH_FXP_STATUS, Size: 24, Number: 185094 +< 2021-12-13 11:36:04.016 Status code: 0 +< 2021-12-13 11:36:04.016 Type: SSH_FXP_STATUS, Size: 24, Number: 185350 +< 2021-12-13 11:36:04.016 Status code: 0 +< 2021-12-13 11:36:04.016 Type: SSH_FXP_STATUS, Size: 24, Number: 185606 +< 2021-12-13 11:36:04.016 Status code: 0 +< 2021-12-13 11:36:04.016 Type: SSH_FXP_STATUS, Size: 24, Number: 185862 +< 2021-12-13 11:36:04.016 Status code: 0 +< 2021-12-13 11:36:04.017 Type: SSH_FXP_STATUS, Size: 24, Number: 186118 +< 2021-12-13 11:36:04.017 Status code: 0 +< 2021-12-13 11:36:04.020 Type: SSH_FXP_STATUS, Size: 24, Number: 186374 +< 2021-12-13 11:36:04.020 Status code: 0 +< 2021-12-13 11:36:04.037 Type: SSH_FXP_STATUS, Size: 24, Number: 186630 +< 2021-12-13 11:36:04.037 Status code: 0 +< 2021-12-13 11:36:04.038 Type: SSH_FXP_STATUS, Size: 24, Number: 186886 +< 2021-12-13 11:36:04.038 Status code: 0 +< 2021-12-13 11:36:04.038 Type: SSH_FXP_STATUS, Size: 24, Number: 187142 +< 2021-12-13 11:36:04.038 Status code: 0 +< 2021-12-13 11:36:04.038 Type: SSH_FXP_STATUS, Size: 24, Number: 187398 +< 2021-12-13 11:36:04.038 Status code: 0 +< 2021-12-13 11:36:04.038 Type: SSH_FXP_STATUS, Size: 24, Number: 187654 +< 2021-12-13 11:36:04.038 Status code: 0 +< 2021-12-13 11:36:04.038 Type: SSH_FXP_STATUS, Size: 24, Number: 187910 +< 2021-12-13 11:36:04.038 Status code: 0 +< 2021-12-13 11:36:04.055 Type: SSH_FXP_STATUS, Size: 24, Number: 188166 +< 2021-12-13 11:36:04.055 Status code: 0 +< 2021-12-13 11:36:04.056 Type: SSH_FXP_STATUS, Size: 24, Number: 188422 +< 2021-12-13 11:36:04.056 Status code: 0 +< 2021-12-13 11:36:04.056 Type: SSH_FXP_STATUS, Size: 24, Number: 188678 +< 2021-12-13 11:36:04.056 Status code: 0 +< 2021-12-13 11:36:04.056 Type: SSH_FXP_STATUS, Size: 24, Number: 188934 +< 2021-12-13 11:36:04.056 Status code: 0 +< 2021-12-13 11:36:04.056 Type: SSH_FXP_STATUS, Size: 24, Number: 189190 +< 2021-12-13 11:36:04.056 Status code: 0 +< 2021-12-13 11:36:04.056 Type: SSH_FXP_STATUS, Size: 24, Number: 189446 +< 2021-12-13 11:36:04.056 Status code: 0 +< 2021-12-13 11:36:04.056 Type: SSH_FXP_STATUS, Size: 24, Number: 189702 +< 2021-12-13 11:36:04.056 Status code: 0 +< 2021-12-13 11:36:04.056 Type: SSH_FXP_STATUS, Size: 24, Number: 189956 +< 2021-12-13 11:36:04.056 Status code: 0 +> 2021-12-13 11:36:04.056 Type: SSH_FXP_RENAME, Size: 116, Number: 190226 +< 2021-12-13 11:36:04.064 Type: SSH_FXP_STATUS, Size: 24, Number: 190226 +< 2021-12-13 11:36:04.064 Status code: 0 +. 2021-12-13 11:36:04.064 Preserving timestamp [2021-12-13T03:35:50.000Z] +> 2021-12-13 11:36:04.064 Type: SSH_FXP_SETSTAT, Size: 68, Number: 183305 +< 2021-12-13 11:36:04.074 Type: SSH_FXP_STATUS, Size: 24, Number: 183305 +< 2021-12-13 11:36:04.074 Status code: 0 +. 2021-12-13 11:36:04.074 Transfer done: 'assets\world.f1eaa8c1.jpg' => '/root/hemodialysis/pc/assets/world.f1eaa8c1.jpg' [801762] +. 2021-12-13 11:36:04.074 File: 'favicon.ico' [2021-12-13T02:44:27.576Z] [1150] +. 2021-12-13 11:36:04.087 Copying "favicon.ico" to remote directory started. +. 2021-12-13 11:36:04.088 Binary transfer mode selected. +. 2021-12-13 11:36:04.088 Opening remote file. +> 2021-12-13 11:36:04.088 Type: SSH_FXP_OPEN, Size: 58, Number: 190467 +< 2021-12-13 11:36:04.096 Type: SSH_FXP_HANDLE, Size: 13, Number: 190467 +> 2021-12-13 11:36:04.096 Type: SSH_FXP_WRITE, Size: 1175, Number: 190982 +> 2021-12-13 11:36:04.097 Type: SSH_FXP_CLOSE, Size: 13, Number: 191236 +> 2021-12-13 11:36:04.097 Type: SSH_FXP_SETSTAT, Size: 54, Number: 190729 +< 2021-12-13 11:36:04.105 Type: SSH_FXP_STATUS, Size: 24, Number: 190982 +< 2021-12-13 11:36:04.105 Status code: 0 +< 2021-12-13 11:36:04.115 Type: SSH_FXP_STATUS, Size: 24, Number: 191236 +< 2021-12-13 11:36:04.115 Status code: 0 +. 2021-12-13 11:36:04.115 Preserving timestamp [2021-12-13T02:44:27.000Z] +< 2021-12-13 11:36:04.115 Type: SSH_FXP_STATUS, Size: 24, Number: 190729 +< 2021-12-13 11:36:04.115 Status code: 0 +. 2021-12-13 11:36:04.115 Transfer done: 'favicon.ico' => '/root/hemodialysis/pc/favicon.ico' [1150] +. 2021-12-13 11:36:04.115 File: 'index.html' [2021-12-13T03:35:50.116Z] [1891] +. 2021-12-13 11:36:04.144 Copying "index.html" to remote directory started. +. 2021-12-13 11:36:04.144 Binary transfer mode selected. +. 2021-12-13 11:36:04.144 Opening remote file. +> 2021-12-13 11:36:04.144 Type: SSH_FXP_OPEN, Size: 57, Number: 191491 +< 2021-12-13 11:36:04.153 Type: SSH_FXP_HANDLE, Size: 13, Number: 191491 +> 2021-12-13 11:36:04.153 Type: SSH_FXP_WRITE, Size: 1916, Number: 192006 +> 2021-12-13 11:36:04.154 Type: SSH_FXP_CLOSE, Size: 13, Number: 192260 +> 2021-12-13 11:36:04.154 Type: SSH_FXP_SETSTAT, Size: 53, Number: 191753 +< 2021-12-13 11:36:04.162 Type: SSH_FXP_STATUS, Size: 24, Number: 192006 +< 2021-12-13 11:36:04.162 Status code: 0 +< 2021-12-13 11:36:04.171 Type: SSH_FXP_STATUS, Size: 24, Number: 192260 +< 2021-12-13 11:36:04.171 Status code: 0 +. 2021-12-13 11:36:04.172 Preserving timestamp [2021-12-13T03:35:50.000Z] +< 2021-12-13 11:36:04.172 Type: SSH_FXP_STATUS, Size: 24, Number: 191753 +< 2021-12-13 11:36:04.172 Status code: 0 +. 2021-12-13 11:36:04.172 Transfer done: 'index.html' => '/root/hemodialysis/pc/index.html' [1891] +. 2021-12-13 11:36:04.172 Copying finished: Transferred: 6,617,061, Elapsed: 0:00:11, CPS: 663,770/s +> 2021-12-13 11:36:04.172 Script: exit +. 2021-12-13 11:36:04.173 Script: Exit code: 0 +. 2021-12-13 11:36:04.173 Closing connection. +. 2021-12-13 11:36:04.173 Sending special code: 12 +. 2021-12-13 11:36:04.173 Sent EOF message diff --git a/index.html b/index.html new file mode 100644 index 0000000..c6bdb75 --- /dev/null +++ b/index.html @@ -0,0 +1,36 @@ + + + + + + + + + 治疗数据展示 + + + + +
+ + + diff --git a/measure_lines.sh b/measure_lines.sh new file mode 100644 index 0000000..304bb80 --- /dev/null +++ b/measure_lines.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# 设置变量 +user="zhangchen" +start_date="2025-01-01T00:00:00" +end_date="2025-03-01T23:59:59" + +# 检查当前目录是否是Git仓库 +if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then + echo "当前目录不是一个Git仓库。请在Git仓库的根目录下运行此脚本。" + exit 1 +fi + +# 获取提交次数 +commit_count=$(git log --author="$user" --since="$start_date" --until="$end_date" --pretty=oneline | wc -l) + +# 获取代码行数的变化 +lines_info=$(git log --author="$user" --since="$start_date" --until="$end_date" --pretty=tformat: --numstat | awk '{ add += $1; del += $2; net += $1 - $2 } END { printf "%s,%s,%s", add, del, net }') +IFS=',' read lines_added lines_deleted lines_changed <<< "$lines_info" + +# 输出结果 +echo "日期: $start_date ~ $end_date" +echo "用户: $user" +echo "提交次数: $commit_count" +echo "增加的代码行数: $lines_added" +echo "删除的代码行数: $lines_deleted" +echo "净变化的代码行数: $lines_changed" +#!/bin/bash + +# 设置变量 +user="zhangchen" +start_date="2025-01-01T00:00:00" +end_date="2025-04-10T23:59:59" + +# 检查当前目录是否是Git仓库 +if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then + echo "当前目录不是一个Git仓库。请在Git仓库的根目录下运行此脚本。" + exit 1 +fi + +# 获取提交次数 +commit_count=$(git log --author="$user" --since="$start_date" --until="$end_date" --pretty=oneline | wc -l) + +# 获取代码行数的变化 +lines_info=$(git log --author="$user" --since="$start_date" --until="$end_date" --pretty=tformat: --numstat | awk '{ add += $1; del += $2; net += $1 - $2 } END { printf "%s,%s,%s", add, del, net }') +IFS=',' read lines_added lines_deleted lines_changed <<< "$lines_info" + +# 输出结果 +echo "日期: $start_date ~ $end_date" +echo "用户: $user" +echo "提交次数: $commit_count" +echo "增加的代码行数: $lines_added" +echo "删除的代码行数: $lines_deleted" +echo "净变化的代码行数: $lines_changed" diff --git a/package.json b/package.json new file mode 100644 index 0000000..8685310 --- /dev/null +++ b/package.json @@ -0,0 +1,145 @@ +{ + "name": "vue-next-admin", + "version": "1.2.0", + "description": "vue3 vite next admin template", + "author": "lyt_20201208", + "license": "MIT", + "scripts": { + "dev": "vite --force", + "dev:prod": "vite --force --mode production", + "build": "vite build", + "build-test": "vite build --mode development", + "staging": "vite build --mode staging", + "lint-fix": "eslint --fix --ext .js --ext .jsx --ext .vue src/" + }, + "dependencies": { + "@element-plus/icons": "0.0.11", + "@element-plus/icons-vue": "0.2.4", + "@fullcalendar/core": "^6.1.15", + "@fullcalendar/daygrid": "^6.1.15", + "@fullcalendar/interaction": "^6.1.15", + "@fullcalendar/vue3": "^6.1.15", + "@hufe921/canvas-editor": "^0.9.73", + "@types/qrcode": "^1.5.5", + "@vue/devtools-api": "6.0.0-beta.14", + "ali-oss": "^6.23.0", + "axios": "^0.24.0", + "chart.js": "^4.4.6", + "countup.js": "2.0.8", + "cropperjs": "1.5.12", + "dayjs": "1.10.7", + "decimal.js": "^10.4.3", + "default-passive-events": "^2.0.0", + "dexie": "^4.0.4", + "echarts": "^5.5.1", + "echarts-gl": "2.0.8", + "echarts-wordcloud": "2.0.0", + "element-plus": "1.2.0-beta.6", + "event-source-polyfill": "^1.0.31", + "exceljs": "^4.4.0", + "file-saver": "^2.0.5", + "fs": "^0.0.1-security", + "html2canvas": "^1.4.1", + "html2pdf.js": "^0.10.2", + "jquery": "^3.6.4", + "js-cookie": "^3.0.1", + "js-export-excel": "^1.1.4", + "jspdf": "^2.5.2", + "jsplumb": "2.15.6", + "jszip": "^3.10.1", + "lodash": "^4.17.21", + "lunar-typescript": "^1.7.6", + "marked": "^14.1.4", + "mitt": "3.0.0", + "net": "^1.0.2", + "node": "^20.2.0", + "nprogress": "0.2.0", + "pinyin": "^4.0.0", + "pinyin-pro": "^3.26.0", + "print-js": "1.6.0", + "qrcode": "^1.5.4", + "qrcodejs2-fixes": "0.0.2", + "qs": "^6.11.2", + "quill": "1.3.7", + "screenfull": "6.0.0", + "signature_pad": "4.0.4", + "sockjs-client": "^1.6.1", + "sortablejs": "^1.14.0", + "speak-tts": "^2.0.8", + "splitpanes": "3.0.4", + "stompjs": "^2.3.3", + "uuid": "^9.0.1", + "vue": "3.2.26", + "vue-chartjs": "^5.3.2", + "vue-clipboard3": "1.0.1", + "vue-cropper": "1.0.2", + "vue-echarts": "^7.0.3", + "vue-grid-layout": "3.0.0-beta1", + "vue-i18n": "9.1.9", + "vue-router": "^4.0.12", + "vue-ueditor-wrap": "3.0.8", + "vue-web-screen-shot": "1.3.0", + "vue3-eventbus": "2.0.0", + "vue3-print-nb": "^0.1.4", + "vuex": "4.0.2", + "wangeditor": "4.7.11", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@types/axios": "0.14.0", + "@types/clipboard": "2.0.1", + "@types/file-saver": "2.0.5", + "@types/jquery": "^3.5.16", + "@types/js-cookie": "^3.0.3", + "@types/node": "16.11.11", + "@types/nprogress": "0.2.0", + "@types/pinyin": "^2.10.2", + "@types/sockjs-client": "^1.5.3", + "@types/sortablejs": "1.10.7", + "@types/stompjs": "^2.3.7", + "@typescript-eslint/eslint-plugin": "5.5.0", + "@typescript-eslint/parser": "5.5.0", + "@vitejs/plugin-vue": "^1.10.1", + "@vue/compiler-sfc": "3.2.26", + "dotenv": "10.0.0", + "eslint": "8.4.0", + "eslint-plugin-vue": "8.1.1", + "less": "4.1.2", + "less-loader": "10.2.0", + "prettier": "2.5.0", + "sass": "1.44.0", + "sass-loader": "12.3.0", + "script-loader": "^0.7.2", + "style-resources-loader": "1.5.0", + "svg-sprite-loader": "6.0.11", + "typescript": "4.5.2", + "vite": "2.6.14", + "vue-cli-plugin-style-resources-loader": "0.1.5", + "vue-eslint-parser": "8.0.1" + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not dead" + ], + "bugs": { + "url": "https://gitee.com/lyt-top/vue-next-admin/issues" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">= 6.0.0" + }, + "keywords": [ + "vue", + "vue3", + "vuejs/vue-next", + "element-ui", + "element-plus", + "vue-next-admin", + "next-admin" + ], + "repository": { + "type": "git", + "url": "https://gitee.com/lyt-top/vue-next-admin.git" + } +} diff --git a/plugins.d.ts b/plugins.d.ts new file mode 100644 index 0000000..8578ca4 --- /dev/null +++ b/plugins.d.ts @@ -0,0 +1 @@ +declare module 'vue-grid-layout'; diff --git a/public/css/font-awesome.min.css b/public/css/font-awesome.min.css new file mode 100644 index 0000000..a5b13fd --- /dev/null +++ b/public/css/font-awesome.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + * + @font-face{font-family:'FontAwesome';src:url('/font/fontawesome-webfont.eot?v=4.7.0');src:url('/font/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('/font/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('/font/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('/font/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} \ No newline at end of file diff --git a/public/css/font-awesome2.min.css b/public/css/font-awesome2.min.css new file mode 100644 index 0000000..78007a5 --- /dev/null +++ b/public/css/font-awesome2.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('/font/fontawesome-webfont.eot?v=4.7.0');src:url('/font/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('/font/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('/font/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('/font/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} \ No newline at end of file diff --git a/public/css/font_2298093_rnp72ifj3ba.css b/public/css/font_2298093_rnp72ifj3ba.css new file mode 100644 index 0000000..1b52cb4 --- /dev/null +++ b/public/css/font_2298093_rnp72ifj3ba.css @@ -0,0 +1,419 @@ +@font-face { + font-family: "iconfont"; /* Project id 2298093 */ + src: url('/font/font_2298093_rnp72ifj3ba.woff2?t=1669683406059') format('woff2'), + url('/fontfont_2298093_rnp72ifj3ba.woff?t=1669683406059') format('woff'), + url('/font/font_2298093_rnp72ifj3ba.ttf?t=1669683406059') format('truetype'); + } + + .iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .icon-quanjushezhi_o:before { + content: "\eb80"; + } + + .icon-yunshangchuan_o:before { + content: "\ebb3"; + } + + .icon-yunxiazai_o:before { + content: "\ebb4"; + } + + .icon-shuaxin:before { + content: "\e63e"; + } + + .icon-diannao1:before { + content: "\e622"; + } + + .icon-barcode-qr:before { + content: "\e61e"; + } + + .icon-zhongduancanshuchaxun:before { + content: "\e638"; + } + + .icon-shouye_dongtaihui:before { + content: "\e606"; + } + + .icon-putong:before { + content: "\e603"; + } + + .icon-dongtai:before { + content: "\e659"; + } + + .icon-wenducanshu-05:before { + content: "\e634"; + } + + .icon-zhongduancanshu:before { + content: "\e63b"; + } + + .icon-tongzhi1:before { + content: "\e63a"; + } + + .icon-tongzhi2:before { + content: "\e649"; + } + + .icon-tongzhi3:before { + content: "\e648"; + } + + .icon-tongzhi4:before { + content: "\e60c"; + } + + .icon-dianhua:before { + content: "\e615"; + } + + .icon-xianshimima:before { + content: "\e63c"; + } + + .icon-yincangmima:before { + content: "\e63d"; + } + + .icon-shuxing:before { + content: "\e67a"; + } + + .icon-juxingkaobei:before { + content: "\e7a5"; + } + + .icon-shuxingtu:before { + content: "\e685"; + } + + .icon-bolangneng:before { + content: "\e745"; + } + + .icon-bolangnengshiyanchang:before { + content: "\e746"; + } + + .icon--chaifenhang:before { + content: "\e6d1"; + } + + .icon--chaifenlie:before { + content: "\e6d0"; + } + + .icon-tupianyulan:before { + content: "\e67e"; + } + + .icon-15tupianyulan:before { + content: "\e624"; + } + + .icon-728bianjiqi_zitidaxiao:before { + content: "\e660"; + } + + .icon-ziti:before { + content: "\e7b1"; + } + + .icon-font-size:before { + content: "\eaef"; + } + + .icon-tuodong:before { + content: "\e6a8"; + } + + .icon-zhongyingwen1:before { + content: "\e7a3"; + } + + .icon-fuhao-yingwen:before { + content: "\e714"; + } + + .icon-fuhao-zhongwen:before { + content: "\e712"; + } + + .icon-diqiu:before { + content: "\e689"; + } + + .icon-xingqiu:before { + content: "\e65c"; + } + + .icon-diqiu1:before { + content: "\e631"; + } + + .icon-huanjingxingqiu:before { + content: "\e617"; + } + + .icon-zidingyibuju:before { + content: "\e637"; + } + + .icon-dayin:before { + content: "\e612"; + } + + .icon-step:before { + content: "\e601"; + } + + .icon-30xuanzhongyuanxingfill:before { + content: "\e677"; + } + + .icon-shibai:before { + content: "\e60b"; + } + + .icon-7_round_solid:before { + content: "\e64d"; + } + + .icon-6_round_solid:before { + content: "\e64e"; + } + + .icon-9_round_solid:before { + content: "\e64f"; + } + + .icon-1_round_solid:before { + content: "\e650"; + } + + .icon-5_round_solid:before { + content: "\e651"; + } + + .icon-2_round_solid:before { + content: "\e654"; + } + + .icon-0_round_solid:before { + content: "\e655"; + } + + .icon-3_round_solid:before { + content: "\e656"; + } + + .icon-4_round_solid:before { + content: "\e657"; + } + + .icon-8_round_solid:before { + content: "\e658"; + } + + .icon-radio-off-full:before { + content: "\ea6b"; + } + + .icon-tongzhi:before { + content: "\e600"; + } + + .icon-ditu:before { + content: "\e8bc"; + } + + .icon-ico:before { + content: "\e646"; + } + + .icon-chazhaobiaodanliebiao:before { + content: "\e76a"; + } + + .icon-biaodan:before { + content: "\e61d"; + } + + .icon-siweidaotu:before { + content: "\e614"; + } + + .icon-jiliandongxuanzeqi:before { + content: "\e616"; + } + + .icon-caijian:before { + content: "\e611"; + } + + .icon-fuwenben:before { + content: "\e7e4"; + } + + .icon-fuwenbenkuang:before { + content: "\e66f"; + } + + .icon-shangchuan:before { + content: "\e663"; + } + + .icon-xuanzeqi:before { + content: "\e635"; + } + + .icon-fangkuang:before { + content: "\e642"; + } + + .icon-gouxuan-weixuanzhong-xianxingfangkuang:before { + content: "\e77b"; + } + + .icon-shidu:before { + content: "\e60a"; + } + + .icon-yangan:before { + content: "\e67d"; + } + + .icon-wendu:before { + content: "\e686"; + } + + .icon-zaosheng:before { + content: "\e61c"; + } + + .icon-jinridaiban:before { + content: "\e60f"; + } + + .icon-AIshiyanshi:before { + content: "\e609"; + } + + .icon-shenqingkaiban:before { + content: "\e639"; + } + + .icon-zhongyingwenqiehuan:before { + content: "\e611"; + } + + .icon-zhongyingwen:before { + content: "\e605"; + } + + .icon-zhongyingzhuanhuan:before { + content: "\e6a2"; + } + + .icon-zhongyingwenyuyan:before { + content: "\e609"; + } + + .icon-shuju:before { + content: "\e613"; + } + + .icon-ico_shuju:before { + content: "\e6ff"; + } + + .icon-shuju1:before { + content: "\e60e"; + } + + .icon-fuzhiyemian:before { + content: "\e772"; + } + + .icon-caozuo-wailian:before { + content: "\e711"; + } + + .icon-icon-:before { + content: "\e620"; + } + + .icon-gerenzhongxin:before { + content: "\e60d"; + } + + .icon-caidan:before { + content: "\e652"; + } + + .icon-xitongshezhi:before { + content: "\e69b"; + } + + .icon-neiqianshujuchucun:before { + content: "\e62f"; + } + + .icon-shouye:before { + content: "\e653"; + } + + .icon-quanxian:before { + content: "\e610"; + } + + .icon-zujian:before { + content: "\e85e"; + } + + .icon-crew_feature:before { + content: "\e602"; + } + + .icon-gongju:before { + content: "\e62d"; + } + + .icon-skin:before { + content: "\e636"; + } + + .icon-shixinyuan:before { + content: "\e669"; + } + + .icon-webicon318:before { + content: "\e6a9"; + } + + .icon-dian:before { + content: "\e608"; + } + + .icon-fullscreen:before { + content: "\e623"; + } + + .icon-tuichuquanping:before { + content: "\e641"; + } + \ No newline at end of file diff --git a/public/css/font_2298093_y6u00apwst.css b/public/css/font_2298093_y6u00apwst.css new file mode 100644 index 0000000..d08b463 --- /dev/null +++ b/public/css/font_2298093_y6u00apwst.css @@ -0,0 +1,427 @@ +@font-face { + font-family: "iconfont"; /* Project id 2298093 */ + src: url('/font/font_2298093_y6u00apwst.woff2?t=1627014681704') format('woff2'), + url('/font/t/font_2298093_y6u00apwst.woff?t=1627014681704') format('woff'), + url('/font/t/font_2298093_y6u00apwst.ttf?t=1627014681704') format('truetype'); + } + + .iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + } + + .icon-diannao101:before { + content: "\e670"; + } + + .icon-diannao:before { + content: "\e618"; + } + + .icon-diannao1:before { + content: "\e622"; + } + + .icon-diannao-shuju:before { + content: "\e63e"; + } + + .icon-shoujidiannao:before { + content: "\e62e"; + } + + .icon-diannaobangong:before { + content: "\e647"; + } + + .icon-LoggedinPC:before { + content: "\e604"; + } + + .icon-barcode-qr:before { + content: "\e61e"; + } + + .icon-zhongduancanshuchaxun:before { + content: "\e638"; + } + + .icon-shouye_dongtaihui:before { + content: "\e606"; + } + + .icon-putong:before { + content: "\e603"; + } + + .icon-dongtai:before { + content: "\e659"; + } + + .icon-wenducanshu-05:before { + content: "\e634"; + } + + .icon-zhongduancanshu:before { + content: "\e63b"; + } + + .icon-tongzhi1:before { + content: "\e63a"; + } + + .icon-tongzhi2:before { + content: "\e649"; + } + + .icon-tongzhi3:before { + content: "\e648"; + } + + .icon-tongzhi4:before { + content: "\e60c"; + } + + .icon-dianhua:before { + content: "\e615"; + } + + .icon-xianshimima:before { + content: "\e63c"; + } + + .icon-yincangmima:before { + content: "\e63d"; + } + + .icon-shuxing:before { + content: "\e67a"; + } + + .icon-juxingkaobei:before { + content: "\e7a5"; + } + + .icon-shuxingtu:before { + content: "\e685"; + } + + .icon-bolangneng:before { + content: "\e745"; + } + + .icon-bolangnengshiyanchang:before { + content: "\e746"; + } + + .icon--chaifenhang:before { + content: "\e6d1"; + } + + .icon--chaifenlie:before { + content: "\e6d0"; + } + + .icon-tupianyulan:before { + content: "\e67e"; + } + + .icon-15tupianyulan:before { + content: "\e624"; + } + + .icon-728bianjiqi_zitidaxiao:before { + content: "\e660"; + } + + .icon-ziti:before { + content: "\e7b1"; + } + + .icon-font-size:before { + content: "\eaef"; + } + + .icon-tuodong:before { + content: "\e6a8"; + } + + .icon-zhongyingwen1:before { + content: "\e7a3"; + } + + .icon-fuhao-yingwen:before { + content: "\e714"; + } + + .icon-fuhao-zhongwen:before { + content: "\e712"; + } + + .icon-diqiu:before { + content: "\e689"; + } + + .icon-xingqiu:before { + content: "\e65c"; + } + + .icon-diqiu1:before { + content: "\e631"; + } + + .icon-huanjingxingqiu:before { + content: "\e617"; + } + + .icon-zidingyibuju:before { + content: "\e637"; + } + + .icon-dayin:before { + content: "\e612"; + } + + .icon-step:before { + content: "\e601"; + } + + .icon-30xuanzhongyuanxingfill:before { + content: "\e677"; + } + + .icon-shibai:before { + content: "\e60b"; + } + + .icon-7_round_solid:before { + content: "\e64d"; + } + + .icon-6_round_solid:before { + content: "\e64e"; + } + + .icon-9_round_solid:before { + content: "\e64f"; + } + + .icon-1_round_solid:before { + content: "\e650"; + } + + .icon-5_round_solid:before { + content: "\e651"; + } + + .icon-2_round_solid:before { + content: "\e654"; + } + + .icon-0_round_solid:before { + content: "\e655"; + } + + .icon-3_round_solid:before { + content: "\e656"; + } + + .icon-4_round_solid:before { + content: "\e657"; + } + + .icon-8_round_solid:before { + content: "\e658"; + } + + .icon-radio-off-full:before { + content: "\ea6b"; + } + + .icon-tongzhi:before { + content: "\e600"; + } + + .icon-ditu:before { + content: "\e8bc"; + } + + .icon-ico:before { + content: "\e646"; + } + + .icon-chazhaobiaodanliebiao:before { + content: "\e76a"; + } + + .icon-biaodan:before { + content: "\e61d"; + } + + .icon-siweidaotu:before { + content: "\e614"; + } + + .icon-jiliandongxuanzeqi:before { + content: "\e616"; + } + + .icon-caijian:before { + content: "\e611"; + } + + .icon-fuwenben:before { + content: "\e7e4"; + } + + .icon-fuwenbenkuang:before { + content: "\e66f"; + } + + .icon-shangchuan:before { + content: "\e663"; + } + + .icon-xuanzeqi:before { + content: "\e635"; + } + + .icon-fangkuang:before { + content: "\e642"; + } + + .icon-gouxuan-weixuanzhong-xianxingfangkuang:before { + content: "\e77b"; + } + + .icon-shidu:before { + content: "\e60a"; + } + + .icon-yangan:before { + content: "\e67d"; + } + + .icon-wendu:before { + content: "\e686"; + } + + .icon-zaosheng:before { + content: "\e61c"; + } + + .icon-jinridaiban:before { + content: "\e60f"; + } + + .icon-AIshiyanshi:before { + content: "\e609"; + } + + .icon-shenqingkaiban:before { + content: "\e639"; + } + + .icon-zhongyingwenqiehuan:before { + content: "\e611"; + } + + .icon-zhongyingwen:before { + content: "\e605"; + } + + .icon-zhongyingzhuanhuan:before { + content: "\e6a2"; + } + + .icon-zhongyingwenyuyan:before { + content: "\e609"; + } + + .icon-shuju:before { + content: "\e613"; + } + + .icon-ico_shuju:before { + content: "\e6ff"; + } + + .icon-shuju1:before { + content: "\e60e"; + } + + .icon-fuzhiyemian:before { + content: "\e772"; + } + + .icon-caozuo-wailian:before { + content: "\e711"; + } + + .icon-icon-:before { + content: "\e620"; + } + + .icon-gerenzhongxin:before { + content: "\e60d"; + } + + .icon-caidan:before { + content: "\e652"; + } + + .icon-xitongshezhi:before { + content: "\e69b"; + } + + .icon-neiqianshujuchucun:before { + content: "\e62f"; + } + + .icon-shouye:before { + content: "\e653"; + } + + .icon-quanxian:before { + content: "\e610"; + } + + .icon-zujian:before { + content: "\e85e"; + } + + .icon-crew_feature:before { + content: "\e602"; + } + + .icon-gongju:before { + content: "\e62d"; + } + + .icon-skin:before { + content: "\e636"; + } + + .icon-shixinyuan:before { + content: "\e669"; + } + + .icon-webicon318:before { + content: "\e6a9"; + } + + .icon-dian:before { + content: "\e608"; + } + + .icon-fullscreen:before { + content: "\e623"; + } + + .icon-tuichuquanping:before { + content: "\e641"; + } + \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..a9668b1 Binary files /dev/null and b/public/favicon.ico differ diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..fcf269d --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/font/font_2298093_rnp72ifj3ba.ttf b/public/font/font_2298093_rnp72ifj3ba.ttf new file mode 100644 index 0000000..9df435d Binary files /dev/null and b/public/font/font_2298093_rnp72ifj3ba.ttf differ diff --git a/public/font/font_2298093_rnp72ifj3ba.woff b/public/font/font_2298093_rnp72ifj3ba.woff new file mode 100644 index 0000000..4a0251f Binary files /dev/null and b/public/font/font_2298093_rnp72ifj3ba.woff differ diff --git a/public/font/font_2298093_rnp72ifj3ba.woff2 b/public/font/font_2298093_rnp72ifj3ba.woff2 new file mode 100644 index 0000000..c3d4611 Binary files /dev/null and b/public/font/font_2298093_rnp72ifj3ba.woff2 differ diff --git a/public/font/font_2298093_y6u00apwst.ttf b/public/font/font_2298093_y6u00apwst.ttf new file mode 100644 index 0000000..2d3a61d Binary files /dev/null and b/public/font/font_2298093_y6u00apwst.ttf differ diff --git a/public/font/font_2298093_y6u00apwst.woff b/public/font/font_2298093_y6u00apwst.woff new file mode 100644 index 0000000..c3575c3 Binary files /dev/null and b/public/font/font_2298093_y6u00apwst.woff differ diff --git a/public/font/font_2298093_y6u00apwst.woff2 b/public/font/font_2298093_y6u00apwst.woff2 new file mode 100644 index 0000000..9eaf90e Binary files /dev/null and b/public/font/font_2298093_y6u00apwst.woff2 differ diff --git a/public/font/fontawesome-webfont (1).eot b/public/font/fontawesome-webfont (1).eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/public/font/fontawesome-webfont (1).eot differ diff --git a/public/font/fontawesome-webfont.eot b/public/font/fontawesome-webfont.eot new file mode 100644 index 0000000..e9f60ca Binary files /dev/null and b/public/font/fontawesome-webfont.eot differ diff --git a/public/font/fontawesome-webfont.ttf b/public/font/fontawesome-webfont.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/public/font/fontawesome-webfont.ttf differ diff --git a/public/font/fontawesome-webfont.woff b/public/font/fontawesome-webfont.woff new file mode 100644 index 0000000..400014a Binary files /dev/null and b/public/font/fontawesome-webfont.woff differ diff --git a/public/font/fontawesome-webfont.woff2 b/public/font/fontawesome-webfont.woff2 new file mode 100644 index 0000000..4d13fc6 Binary files /dev/null and b/public/font/fontawesome-webfont.woff2 differ diff --git a/public/fontawesome-webfont.svg b/public/fontawesome-webfont.svg new file mode 100644 index 0000000..b9c7d65 --- /dev/null +++ b/public/fontawesome-webfont.svg @@ -0,0 +1,716 @@ + + Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 By ,,, Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/js/embed.min.js b/public/js/embed.min.js new file mode 100644 index 0000000..1c9ea25 --- /dev/null +++ b/public/js/embed.min.js @@ -0,0 +1,141 @@ +window.initAi = () => { + const n = "difyChatbotConfig" + , a = "dify-chatbot-bubble-button" + , c = "dify-chatbot-bubble-window" + , p = window[n] + , h = { + open: ` + + `, + close: ` + + ` + }; + async function e() { + if (p && p.token) { + var e = new URLSearchParams(await async function() { + var e = p?.inputs || {}; + const n = {}; + return await Promise.all(Object.entries(e).map(async ([e,t]) => { + n[e] = (e = t, + e = (new TextEncoder).encode(e), + e = new Response(new Blob([e]).stream().pipeThrough(new CompressionStream("gzip"))).arrayBuffer(), + e = new Uint8Array(await e), + await btoa(String.fromCharCode(...e))) + } + )), + n + }()); + const i = `${p.baseUrl || `https://${p.isDev ? "dev." : ""}udify.app`}/chatbot/${p.token}?` + e; + function o() { + var e, t; + window.innerWidth <= 640 || (e = document.getElementById(c), + t = document.getElementById(a), + e && t && ((t = t.getBoundingClientRect()).top - 5 > e.clientHeight ? (e.style.bottom = t.height + 5 + "px", + e.style.top = "unset") : (e.style.bottom = "unset", + e.style.top = t.height + 5 + "px"), + t.right > e.clientWidth ? (e.style.right = "0", + e.style.left = "unset") : (e.style.right = "unset", + e.style.left = 0))) + } + function t() { + const n = document.createElement("div"); + Object.entries(p.containerProps || {}).forEach( ([e,t]) => { + "className" === e ? n.classList.add(...t.split(" ")) : "style" === e ? "object" == typeof t ? Object.assign(n.style, t) : n.style.cssText = t : "function" == typeof t ? n.addEventListener(e.replace(/^on/, "").toLowerCase(), t) : n[e] = t + } + ), + n.id = a; + var e = document.createElement("style"); + document.head.appendChild(e), + e.sheet.insertRule(` + #${n.id} { + position: fixed; + bottom: var(--${n.id}-bottom, 1rem); + right: var(--${n.id}-right, 1rem); + left: var(--${n.id}-left, unset); + top: var(--${n.id}-top, unset); + width: var(--${n.id}-width, 50px); + height: var(--${n.id}-height, 50px); + border-radius: var(--${n.id}-border-radius, 25px); + background-color: var(--${n.id}-bg-color, #155EEF); + box-shadow: var(--${n.id}-box-shadow, rgba(0, 0, 0, 0.2) 0px 4px 8px 0px); + cursor: pointer; + z-index: 2147483647; + } + `); + const t = document.createElement("div"); + if (t.style.cssText = "display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; z-index: 2147483647;", + t.innerHTML = h.open, + n.appendChild(t), + document.body.appendChild(n), + n.addEventListener("click", function() { + var e = document.getElementById(c); + e ? (e.style.display = "none" === e.style.display ? "block" : "none", + t.innerHTML = "none" === e.style.display ? h.open : h.close, + "none" === e.style.display ? document.removeEventListener("keydown", d) : document.addEventListener("keydown", d), + o()) : (n.appendChild(((e = document.createElement("iframe")).allow = "fullscreen;microphone", + e.title = "dify chatbot bubble window", + e.id = c, + e.src = i, + e.style.cssText = ` + border: none; position: absolute; flex-direction: column; justify-content: space-between; + box-shadow: rgba(150, 150, 150, 0.2) 0px 10px 30px 0px, rgba(150, 150, 150, 0.2) 0px 0px 0px 1px; + bottom: 55px; right: 0; width: 24rem; max-width: calc(100vw - 2rem); height: 40rem; + max-height: calc(100vh - 6rem); border-radius: 0.75rem; display: flex; z-index: 2147483647; + overflow: hidden; left: unset; background-color: #F3F4F6;user-select: none; + `, + e)), + o(), + this.title = "Exit (ESC)", + t.innerHTML = h.close, + document.addEventListener("keydown", d)) + }), + p.draggable) { + var s = n; + var l = p.dragAxis || "both"; + let i = !1, d, r; + s.addEventListener("mousedown", function(e) { + i = !0, + d = e.clientX - s.offsetLeft, + r = e.clientY - s.offsetTop + }), + document.addEventListener("mousemove", function(e) { + var t, n, o; + i && (s.style.transition = "none", + s.style.cursor = "grabbing", + (t = document.getElementById(c)) && (t.style.display = "none", + s.querySelector("div").innerHTML = h.open), + t = e.clientX - d, + e = window.innerHeight - e.clientY - r, + o = s.getBoundingClientRect(), + n = window.innerWidth - o.width, + o = window.innerHeight - o.height, + "x" !== l && "both" !== l || s.style.setProperty(`--${a}-left`, Math.max(0, Math.min(t, n)) + "px"), + "y" !== l && "both" !== l || s.style.setProperty(`--${a}-bottom`, Math.max(0, Math.min(e, o)) + "px")) + }), + document.addEventListener("mouseup", function() { + i = !1, + s.style.transition = "", + s.style.cursor = "pointer" + }) + } + } + 2048 < i.length && console.error("The URL is too long, please reduce the number of inputs to prevent the bot from failing to load"), + document.getElementById(a) || t() + } else + console.error(n + " is empty or token is not provided") + } + function d(e) { + var t; + "Escape" === e.key && (e = document.getElementById(c), + t = document.getElementById(a), + e) && "none" !== e.style.display && (e.style.display = "none", + t.querySelector("div").innerHTML = h.open) + } + document.addEventListener("keydown", d), + console.log(p) + // p?.dynamicScript ? e() : document.body.onload = e; + e(); + +} +; diff --git a/public/js/embedBase.min.js b/public/js/embedBase.min.js new file mode 100644 index 0000000..719f217 --- /dev/null +++ b/public/js/embedBase.min.js @@ -0,0 +1,59 @@ +window.initAi = () => { + let n = "difyChatbotConfig", + a = "dify-chatbot-bubble-button", + c = "dify-chatbot-bubble-window", + p = window[n], + h = { + open: ` + + `, close: ` + + `}; + + async function e() { + if (p && p.token) { + var e = new URLSearchParams(await (async () => { var e = p?.inputs || {}; let n = {}; return await Promise.all(Object.entries(e).map(async ([e, t]) => { n[e] = (e = t, e = (new TextEncoder).encode(e), e = new Response(new Blob([e]).stream().pipeThrough(new CompressionStream("gzip"))).arrayBuffer(), e = new Uint8Array(await e), await btoa(String.fromCharCode(...e))) })), n })()); let o = `${p.baseUrl || `https://${p.isDev ? "dev." : ""}udify.app`}/${p.token}?` + e; function i() { var e, t; window.innerWidth <= 640 || (e = document.getElementById(c), t = document.getElementById(a), e && t && ((t = t.getBoundingClientRect()).top - 5 > e.clientHeight ? (e.style.bottom = "48px", e.style.top = "unset") : (e.style.bottom = "unset", e.style.top = "48px"), t.right > e.clientWidth ? (e.style.right = "48px", e.style.left = "unset") : (e.style.right = "unset", e.style.left = '48px'))) } function t() { + let n = document.createElement("div"); Object.entries(p.containerProps || {}).forEach(([e, t]) => { "className" === e ? n.classList.add(...t.split(" ")) : "style" === e ? "object" == typeof t ? Object.assign(n.style, t) : n.style.cssText = t : "function" == typeof t ? n.addEventListener(e.replace(/^on/, "").toLowerCase(), t) : n[e] = t }), n.id = a; var e = document.createElement("style"); document.head.appendChild(e), e.sheet.insertRule(` + #${n.id} { + position: fixed; + bottom: var(--${n.id}-bottom, 1rem); + right: var(--${n.id}-right, 1rem); + left: var(--${n.id}-left, unset); + top: var(--${n.id}-top, unset); + width: var(--${n.id}-width, 48px); + height: var(--${n.id}-height, 48px); + border-radius: var(--${n.id}-border-radius, 25px); + background-color: var(--${n.id}-bg-color, #155EEF); + box-shadow: var(--${n.id}-box-shadow, rgba(0, 0, 0, 0.2) 0px 4px 8px 0px); + cursor: pointer; + z-index: 2147483647; + } + `); let t = document.createElement("div"); if (t.style.cssText = "position: relative; display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; z-index: 2147483647;", t.innerHTML = h.open, n.appendChild(t), document.body.appendChild(n), n.addEventListener("click", function () { + var e = document.getElementById(c); e ? (e.style.display = "none" === e.style.display ? "block" : "none", t.innerHTML = "none" === e.style.display ? h.open : h.close, "none" === e.style.display ? document.removeEventListener("keydown", d) : document.addEventListener("keydown", d), i()) : (n.prepend(((e = document.createElement("iframe")).allow = "fullscreen;microphone", e.title = "dify chatbot bubble window", e.id = c, e.src = o, e.style.cssText = ` + position: absolute; + display: flex; + flex-direction: column; + justify-content: space-between; + left: unset; + right: 0; + bottom: 54px; + width: 24rem; + max-width: calc(100vw - 2rem); + height: 43.75rem; + max-height: calc(100vh - 6rem); + border: none; + z-index: 2147483640; + overflow: hidden; + user-select: none; + `, e)), i(), this.title = "Exit (ESC)", t.innerHTML = h.close, document.addEventListener("keydown", d)) + }), p.draggable) { var s = n; var l = p.dragAxis || "both"; let i = !1, d, r; s.addEventListener("mousedown", function (e) { i = !0, d = e.clientX - s.offsetLeft, r = e.clientY - s.offsetTop }), document.addEventListener("mousemove", function (e) { var t, n, o; i && (s.style.transition = "none", s.style.cursor = "grabbing", (t = document.getElementById(c)) && (t.style.display = "none", s.querySelector("div").innerHTML = h.open), t = e.clientX - d, e = window.innerHeight - e.clientY - r, o = s.getBoundingClientRect(), n = window.innerWidth - o.width, o = window.innerHeight - o.height, "x" !== l && "both" !== l || s.style.setProperty(`--${a}-left`, Math.max(0, Math.min(t, n)) + "px"), "y" !== l && "both" !== l || s.style.setProperty(`--${a}-bottom`, Math.max(0, Math.min(e, o)) + "px")) }), document.addEventListener("mouseup", function () { i = !1, s.style.transition = "", s.style.cursor = "pointer" }) } + } 2048 < o.length && console.error("The URL is too long, please reduce the number of inputs to prevent the bot from failing to load"), document.getElementById(a) || t() + } else console.error(n + " is empty or token is not provided") + } + + function d(e) { + var t; "Escape" === e.key && (e = document.getElementById(c), t = document.getElementById(a), e) && "none" !== e.style.display && (e.style.display = "none", t.querySelector("div").innerHTML = h.open) + } document.addEventListener("keydown", d), + // p?.dynamicScript ? e() : document.body.onload = e + e() +} \ No newline at end of file diff --git a/shim.d.ts b/shim.d.ts new file mode 100644 index 0000000..d243947 --- /dev/null +++ b/shim.d.ts @@ -0,0 +1,13 @@ +/* eslint-disable */ + +// 声明文件,*.vue 后缀的文件交给 vue 模块来处理 +declare module '*.vue' { + import type { DefineComponent } from 'vue'; + const component: DefineComponent<{}, {}, any>; + export default component; +} +declare module jquery {} +// 声明文件,定义全局变量。其它 app.config.globalProperties.xxx,使用 getCurrentInstance() 来获取 +interface Window { + nextLoading: boolean; +} diff --git a/source.d.ts b/source.d.ts new file mode 100644 index 0000000..2f9c768 --- /dev/null +++ b/source.d.ts @@ -0,0 +1,6 @@ +declare module '*.json'; +declare module '*.png'; +declare module '*.jpg'; +declare module '*.scss'; +declare module '*.ts'; +declare module '*.js'; diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..9cd772a --- /dev/null +++ b/src/App.vue @@ -0,0 +1,66 @@ + + + \ No newline at end of file diff --git a/src/api/AI/index.ts b/src/api/AI/index.ts new file mode 100644 index 0000000..b71344c --- /dev/null +++ b/src/api/AI/index.ts @@ -0,0 +1,18 @@ + +import request from '/@/utils/request'; +/** + * 自动ai生产阶段小结处理意见 + * @param recordCode + * transferMode 0:普通输出 1:sse流式输出 + * @returns + */ +export function getAIResultForGetMedSummary(fromData) { + return request({ + url: '/patient/hemo/med/record/getAIResultForGetMedSummary', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params:fromData + }) +} diff --git a/src/api/HemodiPatients/courseRecord.ts b/src/api/HemodiPatients/courseRecord.ts new file mode 100644 index 0000000..7632a75 --- /dev/null +++ b/src/api/HemodiPatients/courseRecord.ts @@ -0,0 +1,44 @@ +import request from '/@/utils/request'; +// 所有病程名称 +export function getCourseName() { + return request({ + url: '/patient/disease/progress/record/listAllRecordName', + method: 'post' + }); +} +export function deleteCourseRecord(id: string) { + return request({ + url: '/patient/disease/progress/record/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + }, + }); +} + +// 添加 +export function addCourseRecord(params: object) { + return request({ + url: '/patient/disease/progress/record/add', + method: 'post', + data: params + }) +} +// 修改 +export function editCourseRecord(params: object) { + return request({ + url: '/patient/disease/progress/record/update', + method: 'post', + data: params + }) +} +export function getCourseRecordList(params: object) { + return request({ + url: '/patient/disease/progress/record/list', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/HemodiPatients/dry_weight.ts b/src/api/HemodiPatients/dry_weight.ts new file mode 100644 index 0000000..34daaba --- /dev/null +++ b/src/api/HemodiPatients/dry_weight.ts @@ -0,0 +1,58 @@ +import request from '/@/utils/request'; + +// 添加干体重 +export function addDryWeight(data: object) { + return request({ + url: '/patient/vs/pure/weight/add', + method: 'post', + data + }); +} + +/** + * 修改干体重 + * @param data + * @returns + */ +export function updateDryWeightApi(data: object) { + return request({ + url: '/patient/vs/pure/weight/update', + method: 'post', + data + }); +} +export function deleteMedHistory(id: string) { + return request({ + url: '/patient/disease/history/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + }, + }); +} + + +/** + * 删除干体重调整记录 + * @param id + * @returns + */ +export function deleteWeightApi (id: string) { + return request({ + url: '/patient/vs/pure/weight/delete', + method: 'post', + params: { id } + }) +} + +// 获取干体重列表 +export function getDryWeightList(params: object) { + return request({ + url: '/patient/vs/pure/weight/list', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/HemodiPatients/index.ts b/src/api/HemodiPatients/index.ts new file mode 100644 index 0000000..ee6261c --- /dev/null +++ b/src/api/HemodiPatients/index.ts @@ -0,0 +1,657 @@ +import { number } from '@intlify/core-base'; +import request from '/@/utils/request'; +import { ITendencyRequestData } from "/@/views/QC/patientTestingTrend/type"; +import { AxiosPromise } from 'axios'; +import type { AddNewPbsParams, PatientListByTransferInOrOutParams, SaveDefaultFormValueParams, LoadDefaultFormValueParams, ListPatientsParams, ListPatientsItem, getBillsParams, getBillsParamsReponseItem, CopyPBSParams, ListReceipts1Params, DiagnosisFindParams, SaveDefaultPharmacyParams, AddressListParams } from './types'; +import type { ICommonListParams } from './../common.type'; + +//定义用于查接用的接口 +export interface QueryConditions { + page: number; + size: number; + wherecondition: string; + ordercondition: string; +} + +export interface PatientInfo2 { + code: string;//?? + createTime: string;//($date-time) 创建时间 + createUser: number;//($int32) 创建人ID + deletedTime: string;//($date-time) 创建日期 + id: number;//($int32) 表主键唯一ID + isDeleted: null;//($int32) 是否删除 + patientAvatarIcon: string;// 患者头像url地址 + patientBaoxiaoState: string;//患者报销方式(字典编号) + patientBedNo: string;//床号 + patientBloodType: string;//患者血型(字典编号) + patientCardNo: string;//患者卡号 + patientCareer: string;//患者职业(字典编号) + patientComp + any: string;//患者单位 + patientCrb: + string;//患者传染病(以逗号分割) + patientDegr + ee: string;//学历(字典编号) + patientDiag + nose: string;//诊断意见 + patientDoct + or: string;//主治医生(用户表编号) + patientFirs + tTimeMedTime: string;//($date-time)首次透析时间 + patientFrom + : number;//($int32)患者来源(0:门诊 1:住院) + patientGend + er: number;//($int32)患者性别 0:男 1:女 + patientHeig + ht: number;//($int32)患者身高(cm) + patientHemo + Code: string;//透析号 + alMedCount: number;//($int32)患者初始透析次数 + alWeight: number;//($int32)患者初始体重(KG) + patientIsAl + cohol: number;//($int32)是否饮酒 0:否 1:是 + patientIsEy + eObstacle: number;//($int32)是否视力障碍 0:否 1:是 + patientIsRe + ligion: number;//($int32)宗教 + patientIsSm + oking: number;//($int32)是否吸烟 0:否 1:是 + patientMobi + le: string;//手机号 + patientName + : string;//病人姓名 + patientNati + on: string;//患者民族(字典编号) + patientNick + Name: string;//患者别名 + patientNo: + string;//门诊住院号 + patientNurs + e: string;//主管护士(用户表编号) + patientReceiveTime: string;//($date-time)接收时间 + patientRh: string;//RH(字典编号) + patientTelNo: string;//电话号码 + patientTelNoRelative: string;//联系人电话 + patientType: string;//患者类型 + patientWard: string;//病区 + patientWeddingState: string;//婚姻状态(字典编号) + patientYibaoAlarmDate: string;//医保到期提醒时间 + patientYibaoCode: string;//医保卡号 + patientYibaoEndDate: string;//($date-time)医保到期日期 + patientYoudaoPeriod: string;//诱导期(字典编号) + remark: string;//备注 + updateTime: string;//($date-time)更新日期 + updateUser: number;//($int32)更新人代码 +} + + +export interface UpdateRecordPatSnapParams { + recordCode: string; // 透析单编号 + patientFrom: number; // 患者来源 + patientNo: string; // 住院门诊号 + InHospitalWardCode: string; // 病区 + InHospitalBedNo: string; // 床号 + InHospitalTime: string; // 入院时间 + isSyncUpdateToPatInfo: 0 | 1; // 是否将修改内容同步至患者信息 + patientHemoCode?: string | number; // 透析号 +} + +export interface ListBillsetsByPat { + bill_item_time: string; + count: number; +} + +export function regeneratePatQRCode(params: object) { + return request({ + url: '/patient/info/regeneratePatQRCode', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }); +} +/** + * 获取患者信息 + * @param params + * @returns + */ +export function detail2(params: string) :AxiosPromise { + return request({ + url: '/patient/info/detail2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + +/** + * 获取患者慢病备案信息 + * @param code + * @returns + */ +export function getMBXXApi(code: string) { + return request({ + url: '/patient/info/getMBXX', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { code } + }) +} + +/** +* 查询检索血透患者 +*@param params 要传的参数值 +*@return 返回的接口数据 +*/ +export function QueryList(params: object) { + return request({ + url: '/patient/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }); +} + + +/** 查询血透患者 - 专门查转入转出 */ +export function patientListByTransferInOrOutApi(data: PatientListByTransferInOrOutParams) { + return request({ + url: '/patient/info/queryInAndOuts', + method: 'post', + data + }) +} + +export function Add(params: string) { + return request({ + url: '/patient/info/add', + method: 'post', + data: params, + }); +} +export function update(params: Object) { + return request({ + url: '/patient/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/patient/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +// 获取转归类型 +export function getComeOutRecord() { + return request({ + url: '/patient/operate/status/info/listOperateStatusTypes', + method: 'post' + }) +} +// 保存转归记录 +export function addOutComeRecord(params: string) { + return request({ + url: '/patient/operate/status/info/add', + method: 'post', + data: params, + }); +} +// 修改转归记录 +export function editOutComeRecord(params: string) { + return request({ + url: '/patient/operate/status/info/update', + method: 'post', + data: params, + }); +} +// 获取转归记录 +export function getOutComeRecordList(params: object) { + return request({ + url: '/patient/operate/status/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +// 获取转归记录 +export function syncPatients(params: object) { + return request({ + url: '/his/syncPatients', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +//HIS帐单金额 +export function checkHisBill(params: object) { + return request({ + url: '/patient/bill/info/checkHisBill', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }); +} +//HIS帐单金额 +export function addBillToHis(params: object) { + return request({ + url: '/patient/bill/info/addBillToHis', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }); +} + +/** + * 获取指定条件下拥有门诊处方的患者 + * @param params + * @returns + */ +export function listPatients(params: ListPatientsParams): AxiosPromise { + params.patientName=params.patientName.toLowerCase() + return request({ + url: '/patient/bill/set/info/listPatients', + method: 'post', + data:params + }); +} + +/** + * 获取门诊处方 + * @param params + * @returns + */ +export function getBills(params: getBillsParams): AxiosPromise { + return request({ + url: '/patient/bill/set/info/getBills', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }); +} +export function ChufangSave(params: object) { + return request({ + url: '/patient/bill/set/info/save', + method: 'post', + data:params + }); +} +export function ChufangAdd(params: object) { + return request({ + url: '/patient/bill/set/info/add', + method: 'post', + data:params + }); +} +export function deleteChufang(params: string) { + return request({ + url: '/patient/bill/set/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data:params, + }); +} +export function exportToExcel(params: string) { + return request({ + url: '/patient/info/exportToExcel', + method: 'post', + responseType: 'blob', + params + }); +} +//在操作患者删除与患者转出时, 先调用API: +export function beforeDeletePatient(params: object) { + return request({ + url: '/patient/info/beforeDeletePatient', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }); +} + + + +/** + * 患者检验趋势 + * @param data + * @returns + */ +export function apiInspectionTrend(data: ITendencyRequestData) { + return request({ + url: "/lis/stat/listHistroByTest", + method: "post", + headers: { + "Content-Type": "application/json" + }, + data + }); +} + + +/** + * 更新透析单中的患者信息(透析单页面里面使用的) + * @param params + * @returns + */ +export function updateRecordPatSnapApi(params: UpdateRecordPatSnapParams) { + return request({ + url: '/patient/hemo/med/record/updateRecordPatSnap', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 该API用于在日期选择框标明哪天是有处方的, 有几个处方 + * @param patientCode + * @returns + */ +export function listBillsetsByPatApi(patientCode: string) :AxiosPromise { + return request({ + url: '/patient/bill/set/info/listBillsetsByPat', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { patientCode: patientCode } + }) +} + + +/** + * 复制处方 + * @param params + * @returns + */ +export function copyPBSApi(params: CopyPBSParams) { + return request({ + url: '/patient/bill/set/info/copyPBS', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 获取处方打印所需指定数据 + * @param params + * @returns + */ +export function listReceipts1Api(params: ListReceipts1Params) { + return request({ + url: '/patient/bill/set/info/listReceipts1', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 根据处方编号,查询治疗项目 + * @param pbsCode + * @returns + */ +export function listReceipts2Api(pbsCode: string) { + return request({ + url: '/patient/bill/set/info/listReceipts2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { pbsCode } + }) +} + +/** + * +根据处方编号,查询检验项目 + * @param pbsCode + * @returns + */ +export function listReceipts3Api(pbsCode: string) { + return request({ + url: '/patient/bill/set/info/listReceipts3', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { pbsCode } + }) +} + +/** + * 查询门诊处方诊断接口(旧) + * @param params + * @returns + */ +export function diagnosisFindApi(params: DiagnosisFindParams) { + return request({ + url: '/his/diagnose/sync/find', + method: 'post', + params + }) +} + + +/** + * 查询诊断列表接口API + * @param params + * @returns + */ +export function getDiagnosisFindListApi(params: ICommonListParams) { + return request({ + url: '/his/diagnose/sync/list', + method: 'post', + params + }) +} + +/** + * 查询门诊处方诊断接口(新)(常用诊断) + * @param params + * @returns + */ +export function getClientConfigApi(params: DiagnosisFindParams) { + return request({ + url: '/his/diagnose/sync/getClientConfig', + method: 'post', + params + }) +} + +/** + * 获取药房列表 + * @param params + * @returns + */ +export function pharmacyListApi(params) { + return request({ + url: '/his/pharmacy/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 保存默认药房 + * @param params + * @returns + */ +export function saveDefaultPharmacyApi(params: SaveDefaultPharmacyParams) { + return request({ + url: '/his/pharmacy/saveDefaultPharmacy', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 加载默认药房 + * @param clientCode + * @returns + */ +export function loadDefaultPharmacyApi(clientCode: string) { + return request({ + url: '/his/pharmacy/loadDefaultPharmacy', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { clientCode } + }) +} + + +/** + * 获取默认报销方式 + * @param patCode + * @returns + */ +export function loadDefaultBaoxiaoTypeApi(patCode: string) { + return request({ + url: '/his/pharmacy/loadDefaultBaoxiaoType', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { patCode } + }) +} + +/** + * 保存默认报销方式 + * @param patCode + * @returns + */ +export function saveDefaultBaoxiaoTypeApi(patCode: string, baoxiaoType: string) { + return request({ + url: '/his/pharmacy/saveDefaultBaoxiaoType', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { patCode, baoxiaoType } + }) +} + + +/** + * 保存默认表单值 + * @param params + * @returns + */ +export function saveDefaultFormValueApi(params: SaveDefaultFormValueParams) { + return request({ + url: '/his/pharmacy/saveDefaultFormValue', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 获取默认表单值 + * @param params + * @returns + */ +export function loadDefaultFormValueApi(params: LoadDefaultFormValueParams) { + return request({ + url: '/his/pharmacy/loadDefaultFormValue', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 获取参保地数据 + * @param params + * @returns + */ +export function addressListApi(params: AddressListParams) { + return request({ + url: '/su/dict/medical/inrance/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 新增患者默认处方 + * @param data + * @returns + */ +export function addNewPbsApi(params: AddNewPbsParams) { + return request({ + url: '/patient/bill/set/info/addNewPbs', + method: 'post', + // headers: { + // 'Content-Type': 'application/x-www-form-urlencoded' + // }, + params + }) +} +/** + * 导出全部患者检验信息 + * @param data + * @returns + */ +export function exportAll(params) { + return request({ + url: '/export', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} \ No newline at end of file diff --git a/src/api/HemodiPatients/infect_alert_info.ts b/src/api/HemodiPatients/infect_alert_info.ts new file mode 100644 index 0000000..17b34a4 --- /dev/null +++ b/src/api/HemodiPatients/infect_alert_info.ts @@ -0,0 +1,25 @@ +import request from '/@/utils/request'; + +export function alertInfoList(params) { + return request({ + url: '/infect/alert/info/listInfectAlertsByPat', + method: 'post', + params, + }); +} + +export function alertInfoSave(params) { + return request({ + url: '/infect/alert/info/save', + method: 'post', + data: params, + }); +} + +export function alertInfoDel(params) { + return request({ + url: '/infect/alert/info/delete', + method: 'post', + params, + }); +} \ No newline at end of file diff --git a/src/api/HemodiPatients/inspectors.ts b/src/api/HemodiPatients/inspectors.ts new file mode 100644 index 0000000..c23ea86 --- /dev/null +++ b/src/api/HemodiPatients/inspectors.ts @@ -0,0 +1,49 @@ +import request from '/@/utils/request'; + + +export function update(params: string) { + return request({ + url: '/inventory/agent/info/update', + method: 'post', + data: params, + }); +} +// 保存检验 +export function saveInspectors (data:object){ + return request({ + url: '/patient/lis/report/save', + method: 'post', + data + }) +} +// 获取检验项目 +export function getInspectorsMeal(clientCode: string) { + return request({ + url: '/lis/report/item/set/getTestItems', + method: 'post', + params: { + clientCode: clientCode + } + }) +} +// 获取检验项目详情 +export function getInspectorsMealDetail (params:object){ + return request({ + url: '/patient/lis/report/listByReportItemSet', + method: 'post', + params + }) +} +// 删除信息 +export function deleteInfo (id: string) { + return request({ + url: '/patient/lis/report/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + } + }) +} \ No newline at end of file diff --git a/src/api/HemodiPatients/medHistory.ts b/src/api/HemodiPatients/medHistory.ts new file mode 100644 index 0000000..b2333b4 --- /dev/null +++ b/src/api/HemodiPatients/medHistory.ts @@ -0,0 +1,42 @@ +import request from '/@/utils/request'; + +export function saveMedHistory(params: string) { + return request({ + url: '/patient/disease/history/save', + method: 'post', + data: params, + }); +} +export function deleteMedHistory(id: string) { + return request({ + url: '/patient/disease/history/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + }, + }); +} +export function getMedHistoryList(params: object) { + return request({ + url: '/patient/disease/history/list', + method: 'post', + params + }) +} + + +/** + * 查询检验报告 + * @param data + * @returns + */ +export function apiGetInspectionReport(data: object) { + return request({ + url: "/lis/report/listReportGroupByPat", + method: "post", + data + }) +}; \ No newline at end of file diff --git a/src/api/HemodiPatients/patient_catheter_evaluate.ts b/src/api/HemodiPatients/patient_catheter_evaluate.ts new file mode 100644 index 0000000..997ccb3 --- /dev/null +++ b/src/api/HemodiPatients/patient_catheter_evaluate.ts @@ -0,0 +1,35 @@ +import request from '/@/utils/request'; + +export function saveCheck(params: string) { + return request({ + url: '/patient/catheter/evaluate/add', + method: 'post', + data: params, + }); +} +export function editCheck(params: string) { + return request({ + url: '/patient/catheter/evaluate/update', + method: 'post', + data: params, + }); +} +export function deleteCheck(id: string) { + return request({ + url: '/patient/catheter/evaluate/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + }, + }); +} +export function getCheckList(params: object) { + return request({ + url: '/patient/catheter/evaluate/list', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/HemodiPatients/patient_vascular_access_event.ts b/src/api/HemodiPatients/patient_vascular_access_event.ts new file mode 100644 index 0000000..309505d --- /dev/null +++ b/src/api/HemodiPatients/patient_vascular_access_event.ts @@ -0,0 +1,35 @@ +import request from '/@/utils/request'; + +export function saveCheck(params: string) { + return request({ + url: '/patient/vascular/access/event/add', + method: 'post', + data: params, + }); +} +export function editCheck(params: string) { + return request({ + url: '/patient/vascular/access/event/update', + method: 'post', + data: params, + }); +} +export function deleteCheck(id: string) { + return request({ + url: '/patient/vascular/access/event/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + }, + }); +} +export function getCheckList(params: object) { + return request({ + url: '/patient/vascular/access/event/list', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/HemodiPatients/physiqueCheck.ts b/src/api/HemodiPatients/physiqueCheck.ts new file mode 100644 index 0000000..ad3cac4 --- /dev/null +++ b/src/api/HemodiPatients/physiqueCheck.ts @@ -0,0 +1,35 @@ +import request from '/@/utils/request'; + +export function saveCheck(params: string) { + return request({ + url: '/patient/body/check/save', + method: 'post', + data: params, + }); +} +export function editCheck(params: string) { + return request({ + url: '/patient/body/check/update', + method: 'post', + data: params, + }); +} +export function deleteCheck(id: string) { + return request({ + url: '/patient/body/check/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + }, + }); +} +export function getCheckList(params: object) { + return request({ + url: '/patient/body/check/list', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/HemodiPatients/rentifenxiyi.ts b/src/api/HemodiPatients/rentifenxiyi.ts new file mode 100644 index 0000000..3bd59e7 --- /dev/null +++ b/src/api/HemodiPatients/rentifenxiyi.ts @@ -0,0 +1,36 @@ +import request from '/@/utils/request'; + +export function Add(params: string) { + return request({ + url: '/patient/rtcf/result/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/patient/rtcf/result/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/patient/rtcf/result/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/patient/rtcf/result/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} diff --git a/src/api/HemodiPatients/types.ts b/src/api/HemodiPatients/types.ts new file mode 100644 index 0000000..a8f4e17 --- /dev/null +++ b/src/api/HemodiPatients/types.ts @@ -0,0 +1,306 @@ +export interface ListPatientsParams { + clientCode: string; + deviceGroupCode: string; + patientName: string; + queryDateBegin: string; + queryDateEnd: string; + timeSlot: number; + feeState: number; + patientCode: string; +} + +interface PatientDiseaseRecordInGov { + beginDate: number; + code: string; + name: string; +} + +export interface ListPatientsItem { + billSetTime: string; + medDate: string; + paidBills: number; + patientAge: string; + patientCode: string; + patientGender: number; + patientHemoCode: string; + patientIdentityNo: string; + patientMobile: string; + patientName: string; + pureWeight: number; + unPaidBills: number; + patientNo: string; + schemeName: string; + 医保区划: any; + patientDiseaseRecordInGov: PatientDiseaseRecordInGov[] | null; +} + +export interface getBillsParams { + patientCode: string; + queryDate: string; +} + +export interface getBillsParamsReponseItem { + billInfos: Partial[]; + billItemTime: string; + billSetDoctor: string; + billSetDoctorName: string; + billSetIsAutoBuild: number; + billSetIsPaid: number; + billSetName: string; + billSetOperator: string; + billSetOperatorName: string; + billSetTime: string; + clientCode: string; + code: string; + createTime: string; + createUser: number; + deletedTime: any; + feeGroups: any[]; + id: number; + isDeleted: number; + patBaoxiaoType: string; + patBaoxiaoTypeName: string; + patChuanranbinHistory: string; + patDiagnose: string; + patVisitType: number; + patientCode: string; + remark: string; + updateTime: string; + updateUser: any; +} + +export interface BillInfos { + billIsAutoBuild: number; + billItemCode: string; + billItemFeeState: number; + billItemName: string; + billItemPrice: number; + billItemQty: number; + billItemSetCode: string; + billItemType: number; + billItemUseAmount: any; + billItemUseDays: null | number; + billItemUseMethod: string; + billItemUseOnce: number; + billItemUseSpan: string; + billTime: string; + billTotalPrice: number; + code: string; + createTime: string; + createUser: any; + deletedTime: any; + doseUnit: string; + hisCode: string; + hisState: number; + id: number; + isDeleted: number; + packageUnit: string; + patientCode: string; + remark: string; + updateTime: string; + updateUser: any; + hisPharmacyCode: string; + hisLotNumber: string; + billFromGroupCode: string; + billFromGroupName: string; +} + +export interface CopyPBSParams { + patientCode: string; + sourceCode: string; + targetDate: string; +} + +export enum DrugTypeEnum { + noLimit = -1, // 不限 + medicine = 0, // 药 + injection = 1, // 注射剂 + diagnosisTreatment = 2, // 诊疗 + apply = 3, // 申请 + comprehensive = 4, // 综合 +} + +export interface ListReceipts1Params { + pbsCode: string; + drugType: DrugTypeEnum; +} + +export interface DiagnosisFindParams { + clientCode: string; + queryCode: string; +} + +export interface SaveDefaultPharmacyParams { + clientCode: string; + pharmacyCode: string; +} + +/** 地址-类型 */ +export interface Address { + areaCode: string; + areaLevel: string; + areaName: string; + areaNameLevel: string; + code: string; + createTime: string; + createUser: number | null; + deletedTime: string | null; + id: number; + isDeleted: number; + upAreaCode: string; + updateTime: string; + updateUser: number | null; +} + +export interface IPatientInfo { + age: number | string; + birthday: string; + clientCode: string; + code: string; + createTime: string; + createUser: number | null; + deletedTime: null | string; + hisCode: string; + historyCount: number | null; + id: number; + isDeleted: number; + isTodayAsMyBirthday: boolean; + medHistoryStatByMonth: string | number; + patientAddress: string; + patientAvatarIcon: string; + patientBaoxiaoState: string; + patientBaoxiaoStateName: string; + patientBedNo: string; + patientBloodType: string; + patientBloodTypeName: string; + patientCardNo: string; + patientCareer: string; + patientCareerName: string; + patientCompany: string; + patientCrb: string; + patientCreditValue: number; + patientDegree: string; + patientDegreeName: string; + patientDiagnose: string; + patientDoctor: string; + patientDoctorName: string; + patientExtendJson: string; + patientFirstTimeMedTime: string; + patientFrom: number; + patientGender: number; + patientGenderText: string; + patientHeight: number; + patientHemoCode: string | number; + patientIdentityNo: string; + patientIdentityType: number; + patientInitalMedCount: number; + patientInitalWeight: any; + patientIsAlcohol: number; + patientIsAlive: number; + patientIsEyeObstacle: number; + patientIsPositive: number; + patientIsReligion: number; + patientIsSmoking: number; + patientMobile: string; + patientName: string; + patientNamePy: string; + patientNation: string; + patientNationName: string; + patientNickName: string; + patientNo: string; + patientNurse: string; + patientNurseName: string; + patientOpenId: string; + patientParentCameFrom: string; + patientPassword: string; + patientQrcodeUrl: string; + patientReceiveTime: string; + patientRh: string; + patientRhName: string; + patientSignUrl: string; + patientTelNo: string; + patientTelNoRelative: string; + patientType: string; + patientTypeName: string; + patientUnionId: string; + patientWard: string; + patientWardName: string; + patientWeddingState: string; + patientWeddingStateName: string; + patientYibaoAlarmDate: string; + patientYibaoBarcode: string; + patientYibaoCode: string; + patientYibaoEndDate: any; + patientYoudaoPeriod: string; + patientYoudaoPeriodName: string; + remark: string; + updateTime: string; + updateUser: number; + 患者扩展属性信息: { + 历史疾病: string; + 既往替代治疗史详情: string; + 是否存在既往史: number; + 是否存在既往肾脏替代治疗史: number; + 诊疗计划: string; + }; + patientJoinInsureArea: string; + 医保区划信息: Address | null; + hIS慢病备案信息: any; +} + +export type DefaultFormValueSaveType = 'crb' | 'mainDiagnose' | 'subDiagnoses'; // 传染病/主要诊断/次要诊断 + +export interface SaveDefaultFormValueParams { + patCode: string; + saveType: DefaultFormValueSaveType; + saveValue: string; +} + +export interface LoadDefaultFormValueParams { + patCode: string; + saveType: DefaultFormValueSaveType; +} + +export interface PatientListByTransferInOrOutParams { + page: number; + size: number; + clientCode: string; + beginTime?: string; // 查询日期-开始时间 + endTime?: string; // 查询日期-结束时间 + patientType?: string; // 患者类型(字典编码) + patientWard?: string; // 病区 + patientIsPositive?: '0' | '1' | ''; // 否为阳性传染病人(0:否 1:是)默认0 + operateType?: '0' | '1' | '2' | ''; // 转归类型 0:转入 1:转出 2:院内转诊 默认0 + patientGender?: '0' | '1' | ''; // 患者性别 0:男 1:女 + patientNo?: string; // 门诊住院号 + patientHemoCode?: string; // 透析号 + patientName?: string; // 患者名称 + patientNurse?: string; // 主管护士(用户编号) + startTime?: string; // 接收日期-开始时间 + finishTime?: string; // 接收日期-结束时间 + patientIsAlive?: '1' | '2' | ''; // 患者是否处于活动状态(1:已转入, 2:已转出 默认1),查留治时间是必须要传(留治时间=当前字段和接收开始结束日期) +} + +export interface AddressListParams { + page: number; + size: number; + wherecondition: string; + ordercondition: string; +} + + +export interface AddNewPbsParams { + clientCode: string; + patientCode: string; + pbsDate: string; +} + +export interface UpdateRecordPatSnapParams { + recordCode: string; // 透析单编号 + patientFrom: number; // 患者来源 + patientNo: string; // 住院门诊号 + InHospitalWardCode: string; // 病区 + InHospitalBedNo: string; // 床号 + InHospitalTime: string; // 入院时间 + isSyncUpdateToPatInfo: 0 | 1; // 是否将修改内容同步至患者信息 +} diff --git a/src/api/HemodiPatients/vascular_access.ts b/src/api/HemodiPatients/vascular_access.ts new file mode 100644 index 0000000..276f70a --- /dev/null +++ b/src/api/HemodiPatients/vascular_access.ts @@ -0,0 +1,321 @@ +import request from '/@/utils/request'; + +// 添加血管通路 +export function addVascularAccess(data: object) { + return request({ + url: '/patient/vascular/access/add', + method: 'post', + data + }); +} +// 删除血管通路 +export function deleteVascularAccess(id: string) { + return request({ + url: '/patient/vascular/access/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + }, + }); +} +// 修改血管通路 +export function editVascularAccess(data: object) { + return request({ + url: '/patient/vascular/access/update', + method: 'post', + data + }); +} +// 获取血管通路列表 +export function getVascularAccessList(params: object) { + return request({ + url: '/patient/vascular/access/list', + method: 'post', + params + }) +} + +// 获取维护日志 +export function getMaintenanceLog(params: object) { + return request({ + url: '/patient/vascular/access/vs/maintenance/record/listUpdateLog', + method: 'post', + params + }) +} +// 获取维护记录 +export function getMaintenance(params: object) { + return request({ + url: '/patient/vascular/access/vs/maintenance/list', + method: 'post', + params + }) +} +// 添加维护记录 +export function addMaintenance(data: object) { + return request({ + url: '/patient/vascular/access/vs/maintenance/add', + method: 'post', + data + }); +} +// 修改维护记录 +export function editMaintenance(data: object) { + return request({ + url: '/patient/vascular/access/vs/maintenance/update', + method: 'post', + data + }); +} +// 删除维护记录 +export function deleteMaintenance(id: string) { + return request({ + url: '/patient/vascular/access/vs/maintenance/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + }, + }); +} + +// 获取拔出日志 +export function getExtractionLog(params: object) { + return request({ + url: '/patient/vascular/access/vs/removal/record/listUpdateLog', + method: 'post', + params + }) +} +// 获取拔出记录 +export function getExtraction(params: object) { + return request({ + url: '/patient/vascular/access/vs/removal/list', + method: 'post', + params + }) +} +// 添加拔出记录 +export function addExtraction(data: object) { + return request({ + url: '/patient/vascular/access/vs/removal/add', + method: 'post', + data + }); +} +// 修改拔出记录 +export function editExtraction(data: object) { + return request({ + url: '/patient/vascular/access/vs/removal/update', + method: 'post', + data + }); +} +// 删除拔出记录 +export function deleteExtraction(id: string) { + return request({ + url: '/patient/vascular/access/vs/removal/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + }, + }); +} + +// 添加超声检查 +export function addSoundCheck(data: object) { + return request({ + url: '/patient/vascular/access/vs/b/ultra/sound/add', + method: 'post', + data + }); +} +// 修改超声检查 +export function editSoundCheck(data: object) { + return request({ + url: '/patient/vascular/access/vs/b/ultra/sound/update', + method: 'post', + data + }); +} +// 删除超声检查 +export function deleteSoundCheck(id: string) { + return request({ + url: '/patient/vascular/access/vs/b/ultra/sound/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + } + }); +} +// 获取超声检查列表 +export function getSoundList(params: object) { + return request({ + url: '/patient/vascular/access/vs/b/ultra/sound/list', + method: 'post', + params + }) +} + +// 获取穿刺信息列表 +export function getPunctureList(params: object) { + return request({ + url: '/patient/vascular/access/vs/puncture/list', + method: 'post', + params + }) +} +// 添加穿刺信息 +export function addPunctureInfo(data: object) { + return request({ + url: '/patient/vascular/access/vs/puncture/add', + method: 'post', + data + }); +} +// 修改穿刺信息 +export function editPunctureInfo(data: object) { + return request({ + url: '/patient/vascular/access/vs/puncture/update', + method: 'post', + data + }); +} +// 删除穿刺信息 +export function deletePunctureInfo(id: string) { + return request({ + url: '/patient/vascular/access/vs/puncture/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + } + }); +} + +// 获取并发症处理列表 +export function getComplicationList(params: object) { + return request({ + url: '/patient/vascular/access/vs/bfz/list', + method: 'post', + params + }) +} +// 添加并发症 +export function addBFZInfo(data: object) { + return request({ + url: '/patient/vascular/access/vs/bfz/add', + method: 'post', + data + }); +} +// 修改并发症 +export function editComplicationInfo(data: object) { + return request({ + url: '/patient/vascular/access/vs/bfz/update', + method: 'post', + data + }); +} +// 删除并发症 +export function deleteComplicationInfo(id: string) { + return request({ + url: '/patient/vascular/access/vs/bfz/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + } + }); +} + +// 添加导管信息 +export function addPipeInfo(data: object) { + return request({ + url: '/patient/vascular/access/vs/pipe/add', + method: 'post', + data + }); +} +// 修改导管信息 +export function editPipeInfo(data: object) { + return request({ + url: '/patient/vascular/access/vs/pipe/update', + method: 'post', + data + }); +} +// 获取导管信息列表 +export function getPipeList(params: object) { + return request({ + url: '/patient/vascular/access/vs/pipe/list', + method: 'post', + params + }) +} +// 删除导管信息 +export function deletePipeInfo(id: string) { + return request({ + url: '/patient/vascular/access/vs/pipe/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + } + }); +} + +// 添加通路评估 +export function addAssessInfo(data: object) { + return request({ + url: '/patient/vascular/access/vs/assess/add', + method: 'post', + data + }); +} +// 修改通路评估 +export function editAssessInfo(data: object) { + return request({ + url: '/patient/vascular/access/vs/assess/update', + method: 'post', + data + }); +} +// 获取通路评估列表 +export function getAssessList(params: object) { + return request({ + url: '/patient/vascular/access/vs/assess/list', + method: 'post', + params + }) +} +// 删除通路信息 +export function deleteAssessInfo(id: string) { + return request({ + url: '/patient/vascular/access/vs/assess/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + } + }); +} \ No newline at end of file diff --git a/src/api/JiFen/index.ts b/src/api/JiFen/index.ts new file mode 100644 index 0000000..46c328c --- /dev/null +++ b/src/api/JiFen/index.ts @@ -0,0 +1,42 @@ +import request from '/@/utils/request'; + +export function Add(params: object) { + return request({ + url: '/credit/rule/add', + method: 'post', + data: params, + }); +} +export function update(params: object) { + return request({ + url: '/credit/rule/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/credit/rule/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function listByClient(params: object) { + return request({ + url: '/credit/rule/listByClient', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} +export function listConditionKeys() { + return request({ + url: '/credit/rule/listConditionKeys', + method: 'post', + }) +} diff --git a/src/api/Qc/index.ts b/src/api/Qc/index.ts new file mode 100644 index 0000000..8840244 --- /dev/null +++ b/src/api/Qc/index.ts @@ -0,0 +1,255 @@ +import request from '/@/utils/request'; +import type { IPatientDialysisFrequencyCountRes, IPatientDialysisFrequencyCountParams, ItKtvAndUrrListByCondition, IGetKtvAndUrrListByCondition, IWypertensionStatistics, IWypertensionStatisticsParams, IQualityControlReportParams, IQualityControlReportReponse, WeightControlRateDetail, WeightControlRateByYearParams, WeightControlRateByYear, WeightControlRateDetailstParams } from './types' +import { AxiosPromise } from 'axios'; + + +export function listWorkStats(params: object) { + return request({ + url: '/patient/hemo/med/record/listWorkStats', + method: 'post', + data: params, + }); +} +export function listRecordsWorkStats(params: object) { + return request({ + url: '/patient/hemo/med/record/listRecordsWorkStats', + method: 'post', + data: params, + }); +} + +export function listHemoNurseWorkStats(params: object) { + return request({ + url: '/patient/hemo/med/record/listHemoNurseWorkStats', + method: 'post', + data: params, + }); +} +export function listRecordsByToolUsage(params: object) { + return request({ + url: '/patient/hemo/med/record/listRecordsByToolUsage', + method: 'post', + data: params, + }); +} +export function listRecordsByMedicineUsage(params: object) { + return request({ + url: '/patient/hemo/med/record/listRecordsByMedicineUsage', + method: 'post', + data: params, + }); +} + +export function listDetailsOfMedicineUsage(params: object) { + return request({ + url: '/patient/hemo/med/record/listDetailsOfMedicineUsage', + method: 'post', + data: params, + }); +} +export function doStatByResult(params: object) { + return request({ + url: '/lis/stat/doStatByResult', + method: 'post', + data: params, + }); +} +export function doStatCountByResult(params: object) { + return request({ + url: '/lis/stat/doStatCountByResult', + method: 'post', + data: params, + }); +} +export function doClientStat4(params: object) { + return request({ + url: '/lis/stat/doClientStat4', + method: 'post', + data: params, + }); +} +export function doListResultsGroupByMonth(params: object) { + return request({ + url: '/lis/stat/doListResultsGroupByMonth', + method: 'post', + data: params, + }); +} +export function doListTestItems() { + return request({ + url: '/lis/stat/doListTestItems', + method: 'post', + }); +} +export function doTestItemPassedCount(params: object) { + return request({ + url: '/lis/stat/doTestItemPassedCount', + method: 'post', + data: params, + }); +} +export function listGroups() { + return request({ + url: '/client/group/info/listGroups', + method: 'post', + }); +} +export function listDetailsEachOne(params) { + return request({ + url: '/client/group/info/listDetailsEachOne', + method: 'post', + // headers: { + // 'Content-Type': 'application/x-www-form-urlencoded' + // }, + params, + }); +} + + +/** + * 重新计算KTV与URR + * @param params + * @returns + */ +export function doCalcKtvOrUrrApi(params) { + return request({ + url: '/lis/stat/doCalcKtvOrUrr', + method: 'post', + params + }) +} + +/** + * 统计体重增长控制率 + * @param params + * @returns + */ +export function weightControlRateByYearApi(params: WeightControlRateByYearParams): AxiosPromise { + return request({ + url: '/patient/stat/weight/increase/range/weightControlRateByYear', + method: 'post', + params + }) +} + +/** 统计体重增长控制率详情 */ +export function weightControlRateDetailsApi(data: WeightControlRateDetailstParams): AxiosPromise<{ list: WeightControlRateDetail[]; total: number }> { + return request({ + url: '/patient/stat/weight/increase/range/weightControlRateDetails', + method: 'post', + data + }) +} + +/** + * 查询KTV Or URR接口 + * @param data + * @returns + */ +// export function getKtvAndUrrListByConditionsApi(data: IGetKtvAndUrrListByCondition) :AxiosPromise<{ list: ItKtvAndUrrListByCondition[]; total: number; }> { +// return request({ +// url: '/patient/ktv/listByConditions', +// method: 'post', +// data +// }) +// } + +/** + * 查询KTV Or URR接口 + * @param data + * @returns + */ +export function getKtvAndUrrListByConditionsApi(data: IGetKtvAndUrrListByCondition) :AxiosPromise<{ list: ItKtvAndUrrListByCondition[]; total: number; }> { + return request({ + url: '/patient/ktv/listByConditions', + method: 'post', + data + }) +} + +/** + * 药物用量统计页面 + */ + +export function listGroupByDrug(param) { + return request({ + url: '/patient/drug/order/vs/patient/listGroupByDrug', + method: 'post', + params:param + }) +} +/** + * 药物用量统计页面明细 + */ + +export function listDetailByDrug(param) { + return request({ + url: '/patient/drug/order/vs/patient/listDetailByDrug', + method: 'post', + params:param + }) +} +/** + * 药物用量统计临时医嘱 + */ + +export function listTempDrugGroupByDrug(param) { + return request({ + url: '/patient/drug/order/vs/patient/listTempDrugGroupByDrug', + method: 'post', + params:param + }) +} + +/** + * 药物用量统计临时医嘱明细 + */ + +export function listTempDrugDetailByDrug(param) { + return request({ + url: '/patient/drug/order/vs/patient/listTempDrugDetailByDrug', + method: 'post', + params:param + }) +} + +/** + * 获取高血压控制率 + * @param params + * @returns + */ +export function hypertensionStatisticsApi(params: IWypertensionStatisticsParams) :AxiosPromise { + return request({ + url: '/patient/hemo/med/body/state/pre/hypertensionStatistics', + method: 'post', + params + }) +} + +/** + * 获取质控报表 + * @param params + * @returns + */ +export function qualityControlReportApi(params: IQualityControlReportParams): AxiosPromise { + return request({ + url: '/patient/info/qualityControlReport', + method: 'post', + params + }) +} + + + +/** + * 月度患者透析次数统计接口 + * @param data + * @returns + */ +export function patientDialysisFrequencyCountApi(data: IPatientDialysisFrequencyCountParams) :AxiosPromise { + return request({ + url: '/patient/hemo/med/record/patientDialysisFrequencyCount', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/src/api/Qc/types.ts b/src/api/Qc/types.ts new file mode 100644 index 0000000..f504a96 --- /dev/null +++ b/src/api/Qc/types.ts @@ -0,0 +1,160 @@ +import { IComminList } from '../common.type'; + +export interface WeightControlRateByYearParams { + clientCode: string; + year: number; + quarter: number; + maxValue: number; + minValue: number; +} + +export interface WeightControlRateByYear { + allcount: number; + conditionCount: number; +} + +export interface WeightControlRateDetailstParams { + year: number; + quarter?: number; + month?: number; + weightControlRateDetailsCondition: { + page: number; + size: number; + clientCode: string; + maxValue: number; + minValue: number; + }; +} + +export interface WeightControlRateDetail { + age: string; + code: string; + patientGender: number; + patientName: string; +} + +export interface IGetKtvAndUrrListByCondition { + page: number; + size: number; + clientCode: string; + startTime: string; + endTime: string; + patientName: string; + patientCodes: string[]; +} + +export interface ItKtvAndUrrListByCondition { + code: string; //数据代码 + dataKtv: number; //KTV + dataMedPeriod: number; //透析时间(小时) + dataNiaosu1: number; //透前尿素 + dataNiaosu2: number; //透后尿素 + dataUrr: number; //URR + dataWeight1: number; //透前体重 + dataWeight2: number; //透后体重 + id: number; //记录ID + patientCode: string; //患者编号 + patientName: string; //患者姓名 + recordCode: string; //透析单 + sampleDate: string; //采样日期 +} + + +export interface IPatientDialysisFrequencyCountParams { + page: number; + size: number; + clientCode: string; + patientCodes: string[]; + scheduleTimeSlots: string[]; + recordsStatus: string; + startTime: string; + endTime: string; +} + + +export interface IPatientDialysisFrequencyCount { + allCount: string; + patientCode: string; + patientName: string; + typeCounts: IPatientDialysisFrequencyCountTypeCount[]; +} + +export interface IPatientDialysisFrequencyCountTypeCount { + schemeName: string; + typeCount: string; +} + + +export interface IPatientDialysisFrequencyCountRes extends Omit { + list: IPatientDialysisFrequencyCount[]; +} + +export interface IWypertensionStatisticsParams { + clientCode: string; + beginTime: string; + endTime: string; +} + +export interface IQualityControlReportLisResults { + client_code: string; + item_name: string; + item_result: string; + item_result_flag: string; + item_result_ref: string; + item_result_unit: string; + patient_name: string; + sample_date: string; + sample_date_str: string; + 最新报告日期: string; +} + + +export interface IWypertensionStatistics { + 大于60岁患者: IWypertensionStatisticsObj; + 小于等于60岁患者: IWypertensionStatisticsObj; + 没有年龄的患者: IWypertensionStatisticsItem[]; + 透析总人数: number; +} + +export interface IWypertensionStatisticsItem { + patientCode: string; + patientName: string; + preMbpH: string; + preMbpL: string; + signTime: string; +} + +export interface IWypertensionStatisticsObj { + count: number; + eligiblePatientCount: number; + eligiblePatients: IWypertensionStatisticsItem[]; + noEligiblePatientCount: number; + noEligiblePatients: IWypertensionStatisticsItem[]; +} + +export interface IQualityControlReportParams { + clientCode: string; + beginTime: string; + endTime: string; + page: number; + size: number; + systemItemNames: string; +} + +export interface IQualityControlReport { + accessFirstUseDate: string; + age: number; + code: string; + dictText: string; + patientDiagnose: string; + patientName: string; + sex: string; + survivalTime: string; + lisResults: IQualityControlReportLisResults[]; +} + +export interface IQualityControlReportReponse { + total: number; + list: IQualityControlReport[]; + [key: string]: any; +} \ No newline at end of file diff --git a/src/api/adjust_record_scheme_history/index.ts b/src/api/adjust_record_scheme_history/index.ts new file mode 100644 index 0000000..9129b01 --- /dev/null +++ b/src/api/adjust_record_scheme_history/index.ts @@ -0,0 +1,122 @@ +import request from '/@/utils/request'; +import type { AxiosPromise } from 'axios'; +import type { IAdjustRecordSchemeHistory, IAdjustRecordSchemeHistoryList } from './types/index.type'; +import type { ICommonListParams } from '../common.type'; + + +/** + * 添加透析单处方修改记录 + * @param data + * @returns + */ +export function adjustRecordSchemeHistoryAddApi(data: Partial) { + return request({ + url: '/adjust/record/scheme/history/add', + method: 'post', + data + }) +} + +/** + * 批量添加透析单处方修改记录 + * @param data + * @returns + */ +export function adjustRecordSchemeHistoryAddListApi(data: Partial[]) { + return request({ + url: '/adjust/record/scheme/history/addList', + method: 'post', + data + }) +} + +/** + * 删除透析单处方修改记录 + * @param id + * @returns + */ +export function adjustRecordSchemeHistoryDelApi(id: number) { + return request({ + url: '/adjust/record/scheme/history/delete', + method: 'post', + params: id + }) +} + +/** + * 批量删除透析单处方修改记录 + * @param id + * @returns + */ +export function adjustRecordSchemeHistoryDelAllApi(ids: string) { + return request({ + url: '/adjust/record/scheme/history/deleteAll', + method: 'post', + params: ids + }) +} + +/** + * 根据id获取透析单处方修改记录详情 + * @param id + * @returns + */ +export function adjustRecordSchemeHistoryDetailByIdApi(id: number) { + return request({ + url: '/adjust/record/scheme/history/detail', + method: 'post', + params: id + }) +} + +/** + * 根据code获取透析单处方修改记录详情 + * @param id + * @returns + */ +export function adjustRecordSchemeHistoryDetailByCodeApi(code: string) { + return request({ + url: '/adjust/record/scheme/history/detail2', + method: 'post', + params: code + }) +} + +/** + * 获取透析单处方修改记录列表 + * @param params + * @returns + */ +export function adjustRecordSchemeHistoryListApi(params: ICommonListParams) :AxiosPromise { + return request({ + url: '/adjust/record/scheme/history/list', + method: 'post', + params, + }) +} + +/** + * 保存透析单处方修改记录 + * @param data + * @returns + */ +export function adjustRecordSchemeHistorySaveApi(data: Partial) { + return request({ + url: '/adjust/record/scheme/history/save', + method: 'post', + data + }) +} + +/** + * 更新透析单处方修改记录 + * @param data + * @returns + */ +export function adjustRecordSchemeHistoryUpdateApi(data: Partial) { + return request({ + url: '/adjust/record/scheme/history/update', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/src/api/adjust_record_scheme_history/types/index.type.ts b/src/api/adjust_record_scheme_history/types/index.type.ts new file mode 100644 index 0000000..e50056a --- /dev/null +++ b/src/api/adjust_record_scheme_history/types/index.type.ts @@ -0,0 +1,62 @@ +import type { IComminList } from '../../common.type'; + +export enum EAdjustType { + 处方脱水量 = 0, + 血流量 = 1, + 透析时长 = 2, + 超滤量 = 3, + 透析器类型 = 4, + 抗凝剂首剂 = 5, + 透析液温度 = 6, + 透析液钠浓度 = 7, + 透析液钾浓度 = 8, + 透析液钙浓度 = 9, + 透析液碳酸氢盐浓度 = 10, + 抗凝剂类型 = 11, + 血管通路类型 = 13, + 透析模式 = 14, + 血管通路部位 = 15, + 血滤器 = 16, + 灌流器 = 17, + 透析液流量 = 18, + 抗凝剂维持追加类型 = 19, + 抗凝剂维持剂量 = 20, + 抗凝剂追加剂量 = 21, + 抗凝剂追加时机 = 22, + 抗凝剂总量 = 23, + 处方备注 = 24, + 抗凝剂2 = 25, + 抗凝剂2首剂 = 26, + 抗凝剂2维持剂量 = 27, + 抗凝剂2总量 = 28, +} + +export interface IAdjustRecordSchemeHistory { + adjusUser: string; + adjustTime: string; + adjustType: EAdjustType; + adjustUserName: string; + clientCode: string; + clientName: string; + code: string; + createTime: string; + createUser: number | null; + deletedTime: string | null; + id: number; + isDeleted: number; + newValue: string; + oldValue: string; + patientCode: string; + patientName: string; + recordCode: string; + recordDate: string; + remark: string; + schemeCode: string; + updateTime: string; + updateUser: number | null; +} + + +export interface IAdjustRecordSchemeHistoryList extends Omit { + list: IAdjustRecordSchemeHistory[]; +} diff --git a/src/api/backend_report_template/index.ts b/src/api/backend_report_template/index.ts new file mode 100644 index 0000000..15784c4 --- /dev/null +++ b/src/api/backend_report_template/index.ts @@ -0,0 +1,63 @@ +import request from '/@/utils/request'; + +export function uploadFile(params: any) { + return request({ + url: '/hemo/backend/report/template/uploadFile', + method: 'post', + data: params, + }); +} + + +export function getBackendList(params: any) { + return request({ + url: '/hemo/backend/report/template/list', + method: 'post', + params, + }); +} + +export function saveList(params: any) { + return request({ + url: '/hemo/backend/report/template/saveReport', + method: 'post', + params, + }); +} + +export function getHistory(params: any) { + return request({ + url: '/hemo/backend/report/template/listReportVersions', + method: 'post', + params, + }); +} + +export function changeVersion(params: any) { + return request({ + url: '/hemo/backend/report/template/version/activeVersion', + method: 'post', + params, + }); +} + +export function delTemplate(id) { + return request({ + url: `/hemo/backend/report/template/delete?id=${id}`, + method: 'post', + }); +} + +export function delTemplateVersion(id) { + return request({ + url: `/hemo/backend/report/template/version/delete?id=${id}`, + method: 'post', + }); +} + +export function getTemplateTypes() { + return request({ + url: `/hemo/backend/report/template/listTemplateTypes`, + method: 'post', + }); +} diff --git a/src/api/client/index.ts b/src/api/client/index.ts new file mode 100644 index 0000000..bebd945 --- /dev/null +++ b/src/api/client/index.ts @@ -0,0 +1,273 @@ +import request from '/@/utils/request'; + +export function Add(params: any) { + return request({ + url: '/client/info/add', + method: 'post', + data: params, + }); +} +export function update(params: any) { + return request({ + url: '/client/info/update', + method: 'post', + data: params, + }); +} +export function updateReportTemplate(params: string) { + return request({ + url: '/client/info/updateReportTemplate', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/client/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + data: params, + }); +} +export function publicClient(params: string) { + return request({ + url: '/client/info/list/public', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + data: params, + }); +} + +export function list(params: object) { + return request({ + url: '/client/info/list', + method: 'post', + params, + }); +} +export function listUsers(params: object) { + return request({ + url: '/client/info/listUsers', + method: 'post', + params, + }); +} +export function standardList(params: object) { + return request({ + url: '/staff/schedule/standard/list', + method: 'post', + params, + }); +} +export function standardSave(params: object) { + return request({ + url: '/staff/schedule/standard/save', + method: 'post', + data: params, + }); +} +export function doSelectSummary(params: object) { + return request({ + url: '/staff/schedule/doSelectSummary', + method: 'post', + data: params, + }); +} + +/** + * HIS自定义的维护菜单数据来源 + * @returns + */ +export function listHisTypesApi() { + return request({ + url: '/client/info/listHisTypes', + method: 'post', + }); +} + +/** + * 同步HIS系统医护人员 + * @param clientCode + * @returns + */ +export function synchronousHisMedicalStaffApi(clientCode: string) { + return request({ + url: '/his/staff/syncHisStaff', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params: { clientCode: clientCode }, + }); +} + +/** + * 同步HIS系统科室 + * @param clientCode + * @returns + */ +export function synchronousHisDepartmentApi(clientCode: string) { + return request({ + url: '/his/dept/syncHisDept', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params: { clientCode: clientCode }, + }); +} + +/** + * 同步药物用法 + * @param clientCode + * @returns + */ +export function syncUseMethodsApi(clientCode: string) { + return request({ + url: '/his/syncUseMethods', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params: { clientCode }, + }); +} + +/** + * 同步使用频率 + * @param clientCode + * @returns + */ +export function syncUseFreqencyAPi(clientCode: string) { + return request({ + url: '/his/syncUseFreqency', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params: { clientCode: clientCode }, + }); +} + +/** + * 同步药物 + * @param clientCode + * @returns + */ +export function synchronousMedicationApi(clientCode: string) { + return request({ + url: '/his/syncDrugs', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params: { clientCode }, + }); +} + +/** + * "同步收费项目字典 + * @param clientCode + * @returns + */ +export function syncChargeItemsApi(clientCode: string) { + return request({ + url: '/his/syncChargeItems', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params: { clientCode }, + }); +} + +/** + * 同步收费菜单 + * @param clientCode + * @returns + */ +export function synchronizeBillingMenuApi(clientCode: string) { + return request({ + url: '/his/syncCombo', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params: { clientCode }, + }); +} + +/** + * HIS诊断字典同步 + * @param clientCode + * @returns + */ +export function doSyncApi(clientCode: string) { + return request({ + url: '/his/diagnose/sync/doSync', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params: { clientCode }, + }); +} + +/** + * HIS药房同步 + * @param clientCode + * @returns + */ +export function pharmacyApi(clientCode: string) { + return request({ + url: '/his/pharmacy/sync', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params: { clientCode }, + }); +} + +/** + * 同步报销方式 + * @param clientCode + * @returns + */ +export function syncBxfsAPi(clientCode: string) { + return request({ + url: '/his/syncHisBxfs', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params: { clientCode }, + }); +} +export function getCityWeather(params: any) { + return request({ + url: 'https://restapi.amap.com/v3/weather/weatherInfo', + method: 'get', + data: params, + }); +} + +/** + * 同步药物单位 + * @param clientCode + * @returns + */ +export function syncDrugUnitsAPi(clientCode: string) { + return request({ + url: '/his/syncDrugUnits', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params: { clientCode }, + }); +} \ No newline at end of file diff --git a/src/api/client/types.ts b/src/api/client/types.ts new file mode 100644 index 0000000..8fa4410 --- /dev/null +++ b/src/api/client/types.ts @@ -0,0 +1,53 @@ +export interface ClientInfo { + autoStockTrigger: string + clientAddress: string + clientCity: string + clientName: string + clientNo: string + clientProvince: string + clientRegion: string + clientSetting: string + clientVsUserList: null | any[] + code: string + createTime: string + createUser: number + defaultSortOrderOnHemoMedList: number + defaultValue_DianDaodu: number + defaultValue_Huxi: number + defaultValue_TouxiYeWendu: number + deletedTime: null | string + deviceCountShiftValue: number + enableAutoHemoMedMonitorDataRecorderAtStartEndMedProgress: boolean + faceDbName: string + hemoMedTempOrderStartTimeDescShowType: string + id: number + isAddKnjToFeeList: number + isAutoAddMonitorDataWhenStartOrEndMedProcess: boolean + isAutoChangeWeightTypeWhenDoCheck: boolean + isDeleted: number + isEnableStartAndEndHemoMedService: boolean + isForceOrderFreqAsOnceWhenPushed: boolean + isLinkInventory1To2: boolean + isRePushOrderWhileSchemeConfirmed: number + isShowClliangProgress: boolean + isShowTXQInSchedule: boolean + isUseAutoOutStock: boolean + isUseFeeList: boolean + isUseHisSyncMode: number + isUseSignImage: boolean + monitorDataCheckList: any[] + recordPrintTemplate: string + recordWeightPlusType: string + remainValidDays: number + remark: string + scheduleAutoAddMonitorDataInterval: number + serviceEnabled: number + servicePeriodFrom: any + servicePeriodTo: string + sortIndexInPrepareWorkPage: number + updateTime: string + updateUser: number + userInfos: any + whichWayToStatHemoMeds: number + workingHoursInLCD: string + } \ No newline at end of file diff --git a/src/api/client_alert_info/index.ts b/src/api/client_alert_info/index.ts new file mode 100644 index 0000000..f420ffe --- /dev/null +++ b/src/api/client_alert_info/index.ts @@ -0,0 +1,34 @@ +import request from '/@/utils/request'; + +export function Add(params: any) { + return request({ + url: '/client/alert/info/add', + method: 'post', + data: params, + }); +} +export function update(params: any) { + return request({ + url: '/client/alert/info/update', + method: 'post', + data: params, + }); +} + +export function deleteId(params: string) { + return request({ + url: '/client/alert/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/client/alert/info/list', + method: 'post', + params, + }); +} diff --git a/src/api/client_group_info/index.ts b/src/api/client_group_info/index.ts new file mode 100644 index 0000000..07f8c69 --- /dev/null +++ b/src/api/client_group_info/index.ts @@ -0,0 +1,76 @@ +import request from '/@/utils/request'; +import type { ClientGroupListParams, ClientGroupType, AdminRoleUserType } from './types' +import { AxiosPromise } from 'axios'; + + +/** + * 获取集团客户对照列表 + * @param params + * @returns + */ +export const getClientGroupListApi = (params: ClientGroupListParams): AxiosPromise<{ [key: string]: any;list: ClientGroupType[]}> => { + return request({ + url: '/client/group/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 删除指定id的集团客户对照 + * @param id + * @returns + */ +export const delClientGroupApi = (id: number): AxiosPromise => { + return request({ + url: '/client/group/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { id } + }) +} + + +/** + * 保存集团对照数据 + * @param params + * @returns + */ +export const saveClientGroupApi = (params: Partial): AxiosPromise => { + return request({ + url: '/client/group/info/save', + method: 'post', + data: params + }) +} + + +/** + * 请求所有集团管理权限的用户 + * @returns + */ +export const getAdminRoleUserApi = (): AxiosPromise => { + return request({ + url: '/client/group/info/listManagers', + method: 'post' + }) +} + +/** + * 根据code获取集团对照详情 + * @param code + * @returns + */ +export const getClientGroupDetailByCodeApi = (code: string) :AxiosPromise => { + return request({ + url: '/client/group/info/detail2', + method: 'post', + params: { code } + }) +} \ No newline at end of file diff --git a/src/api/client_group_info/types.ts b/src/api/client_group_info/types.ts new file mode 100644 index 0000000..a090fad --- /dev/null +++ b/src/api/client_group_info/types.ts @@ -0,0 +1,95 @@ +export interface ClientGroupListParams { + page: number; + size: number; + wherecondition: string; + ordercondition: string; +} + + +export interface IClientGroupTypeClientSettingJsonItemCustomInfo { + clientCode: string; // 客户编号 + name: string; // 检验项目自定义名称 +} +export interface IClientGroupTypeClientSettingJsonItem { + name: string; // 检验项目名称 + top: number | null; // top + bottom: number | null; // 下限 + unit: string; // 单位 + customInfos: IClientGroupTypeClientSettingJsonItemCustomInfo[]; +} + +export interface IClientGroupTypeClientSettingJson { + items: IClientGroupTypeClientSettingJsonItem[]; +} + +export interface ClientGroupType { + clientCode: string; + clientSettingJson: string; + code: string; + createTime: null | Date; + createUser: null | number; + deletedTime: null | Date; + groupName: string; + id: number; + isDeleted: number; + remark: string; + updateTime: string | Date; + updateUser: null | number; + managerCodeList: string; +} + +export interface AdminRoleUserType { + admin: boolean; + checkVersionCode: string; + clientInfos: any; + clientVsUserList: any; + code: string; + createTime: string; + createUser: number | null; + currentClientInfo: any; + deletedTime: null | string; + doctor: boolean; + hisCode: string; + id: number; + isDeleted: number; + isRecvAlarm: null; + isRecvAlarmEmail: number; + isRecvAlarmWechat: number; + isShow: number; + isValid: number; + loginWechatMpId: string; + loginWechatUnionId: string; + nurse: number; + remark: string; + roles: any; + selectFieldsInShangjiCanshuPage: string; + selectFieldsInTodayOrderPage: string; + selectedFieldsInMedStat2: string; + updateTime: string | null; + updateUser: null | number; + userAdmin: boolean; + userAvatar: string; + userCustomSetting: string; + userDegree: string; + userEmail: string; + userFromDepartment: string; + userGender: number; + userGoDate: any; + userGoDepartment: string; + userGraduateTime: any; + userIdentityCode: string; + userInDate: any; + userIsTongluDoctor: number; + userMobile: string; + userName: string; + userNo: string; + userPassword: string; + userPinyin: string; + userRfid: any; + userSignPicUrl: string; + userSortOrder: number; + userTitle: string; + userVsRoleList: number; + userWorkState: string; + userWorkTimeFrom: any; +} diff --git a/src/api/client_setting_info_controller/index.ts b/src/api/client_setting_info_controller/index.ts new file mode 100644 index 0000000..0382064 --- /dev/null +++ b/src/api/client_setting_info_controller/index.ts @@ -0,0 +1,124 @@ +import request from '/@/utils/request'; +import type { ClientSetting, ClientSettingParams, ClientSettingGetParams, ClientSettingTypeEnum } from './types'; +import { AxiosPromise } from 'axios'; + +/** + * 新增客户设置 + * @param params + * @returns + */ +export function clientSettingAddApi(data: ClientSettingParams) { + return request({ + url: '/client/setting/info/add', + method: 'post', + data + }) +} + + +/** + * 批量新增客户自定义设置 + * @param data + * @returns + */ +export function clientSettingAddBatchApi(data: ClientSettingParams[]) { + return request({ + url: '/client/setting/info/addList', + method: 'post', + data + }) +} + +/** + * 删除指定客户自定义设置 + * @param id + * @returns + */ +export function clientSettingDelApi(id: number) { + return request({ + url: '/client/setting/info/delete', + method: 'post', + data: { id } + }) +} + + +/** + * 批量删除客户自定义设置 + * @param ids + * @returns + */ +export function clientSettingDelBatchApi(ids: string) { + return request({ + url: '/client/setting/info/deleteAll', + method: 'post', + data: { ids } + }) +} + + +/** + * 根据id获取客户自定义设置详情 + * @param id + * @returns + */ +export function clientSettingDetailByIdApi(id: number): AxiosPromise { + return request({ + url: '/client/setting/info/detail', + method: 'post', + data: { id } + }) +} + +/** + * 根据code获取自定义设置详情 + * @param code + * @returns + */ +export function clientSettingDetailByCodeApi(code: string): AxiosPromise { + return request({ + url: '/client/setting/info/detail2', + method: 'post', + data: { code } + }) +} + +/** + * 根据type获取自定义设置详情 + * @param params + * @returns + */ +export function clientSettingDetailBySettingTypeApi(params: { clientCode: string; type: ClientSettingTypeEnum }): AxiosPromise { + return request({ + url: '/client/setting/info/getAdvanceDeliveryByType', + method: 'post', + params + }) +} + +/** + * 获取客户自定义配置列表 + * @param data + * @returns + */ +export function clientSettingListApi(params: ClientSettingGetParams): AxiosPromise<{ list: ClientSetting[]; total: number; [key: string]: any; }> { + return request({ + url: '/client/setting/info/list', + method: 'post', + params + }) +} + + +/** + * 更新客户自定义配置项 + * @param data + * @returns + */ +export function clientSettingUpdateApi(data: ClientSettingParams) { + return request({ + url: '/client/setting/info/update', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/src/api/client_setting_info_controller/types.ts b/src/api/client_setting_info_controller/types.ts new file mode 100644 index 0000000..aabc827 --- /dev/null +++ b/src/api/client_setting_info_controller/types.ts @@ -0,0 +1,40 @@ +export enum ClientSettingTypeEnum { + 提前下机阈值 = 'doneMedInAdvance', + 排班颜色 = 'scheduleSchemeColor', + 监测记录是否取配方钠的值 = 'whetherDefaultRecipeNa', + 是否开启小结双角色确认 = 'enableMedSummaryDualConfirm', + 透后评估确认后不更新患者称重结果 = 'postnatalWeightUpdate', + 何时触发自动生成门诊处方 = '何时触发自动生成门诊处方', +} + +export interface ClientSetting { + clientCode: string; + code: string; + createTime: string; + createUser: number; + deletedTime: string; + id: number; + isDeleted: number; + settingType: ClientSettingTypeEnum; + settingValue: string; + updateTime: string; + updateUser: number; +} + + +export interface ClientSettingParams extends Omit { + createTime?: string; + createUser?: number; + deletedTime?: string; + updateTime?: string; + updateUser?: number; + isDeleted?: number; +} + + +export interface ClientSettingGetParams { + page: number; + size: number; + wherecondition: string; + ordercondition: string; +} \ No newline at end of file diff --git a/src/api/client_txy_info/index.ts b/src/api/client_txy_info/index.ts new file mode 100644 index 0000000..f31295e --- /dev/null +++ b/src/api/client_txy_info/index.ts @@ -0,0 +1,44 @@ +import request from '/@/utils/request'; + + + +/** + * 添加透析液 + * @param data + * @returns + */ +export function addTxyApi(data: any) { + return request({ + url: '/client/txy/info/add', + method: 'post', + data + }) +} + + +/** + * 获取透析液列表 + * @param params + * @returns + */ +export function txyListApi(params: any) { + return request({ + url: '/client/txy/info/list', + method: 'post', + params + }) +} + + +/** + * 更新透析液数据 + * @param data + * @returns + */ +export function updateTxyAPi(data: any) { + return request({ + url: '/client/txy/info/update', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/src/api/client_vs_resource/index.ts b/src/api/client_vs_resource/index.ts new file mode 100644 index 0000000..2b1550e --- /dev/null +++ b/src/api/client_vs_resource/index.ts @@ -0,0 +1,60 @@ +import request from '/@/utils/request'; +import type { AxiosPromise } from 'axios'; +import type { IClientVsResource, IClientVsResourceReponse } from './types/index.type'; +import type { ICommonListParams } from '../common.type'; + + +/** + * 添加客户权限api + * @param data + * @returns + */ +export function addClientVsResourceApi(data: IClientVsResource) { + return request({ + url: '/client/vs/resource/add', + method: 'post', + data + }) +} + +/** + * 修改客户权限api + * @param data + * @returns + */ +export function updateClientVsResourceApi(data: IClientVsResource) { + return request({ + url: '/client/vs/resource/update', + method: 'post', + data + }) +} + +/** + * 删除客户权限api + * @param data + * @returns + */ +export function delClientVsResourceApi(id: number) { + return request({ + url: '/client/vs/resource/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { id } + }) +} + +/** + * 获取客户权限列表api + * @param params + * @returns + */ +export function getClientVsResourceListApi(params: ICommonListParams) :AxiosPromise { + return request({ + url: '/client/vs/resource/list', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/client_vs_resource/types/index.type.ts b/src/api/client_vs_resource/types/index.type.ts new file mode 100644 index 0000000..27df911 --- /dev/null +++ b/src/api/client_vs_resource/types/index.type.ts @@ -0,0 +1,22 @@ +import type { IComminList } from '../../common.type'; + + +export interface IClientVsResource { + clientCode: string; + code: string; + createTime: string | null; + createUser: number; + deletedTime: string | null; + grantPrivilege: string; // 客户权限 + id: number; + isDeleted: number, + remark: string, + resourceCode: string, // 菜单code + updateTime: string | null; + updateUser: number; +} + + +export interface IClientVsResourceReponse extends Omit { + list: IClientVsResource[]; +} \ No newline at end of file diff --git a/src/api/comm/index.ts b/src/api/comm/index.ts new file mode 100644 index 0000000..8f069c4 --- /dev/null +++ b/src/api/comm/index.ts @@ -0,0 +1,105 @@ +import request from '/@/utils/request'; + +export function getAvailableDevicesByDeviceType(params: string) { + return request({ + url: '/comm/service/device/info/getAvailableDevicesByDeviceType', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function getNotifyMessages(params) { + return request({ + url: '/user/info/getNotifyMessages', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }); +} +export function makeAsRead(params:object) { + return request({ + url: '/user/info/makeAsRead', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }); +} +export function listCurrentHemoMeds(params:object) { + return request({ + url: '/common/listCurrentHemoMeds', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }); +} +export function getOSSTokenInfo(params:object) { + return request({ + url: '/common/getOSSTokenInfo', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }); +} + + +export function FileAdd(data:object){ + return request({ + url: '/lcd/media/files/add', + method: 'post', + data + }) +} +export function FileUpdate(params: string) { + return request({ + url: '/lcd/media/files/update', + method: 'post', + data: params, + }); +} +export function FileDeleteId(params: string) { + return request({ + url: '/lcd/media/files/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function FileList(params: object) { + return request({ + url: '/lcd/media/files/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function listCurrentLcdMedia(params: any) { + return request({ + url: '/common/listCurrentLcdMedia', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +}export function outputLisResultForclient(params: string) { + return request({ + url: '/common/outputLisResultForClient', + method: 'post', + responseType: 'blob', + params, + }); +} \ No newline at end of file diff --git a/src/api/common.ts b/src/api/common.ts new file mode 100644 index 0000000..d783402 --- /dev/null +++ b/src/api/common.ts @@ -0,0 +1,77 @@ +import request from '/@/utils/request'; + +//首页数据展示 +export function getHomePageData(params: string) { + return request({ + url: '/common/getHomePageData', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +//首页饼图数据 /patient/hemo/med/record/getHomePageStat2 +export function getHomePageStat2(clientCode:string,date:string) { + return request({ + url: '/patient/hemo/med/record/getHomePageStat2', + method: 'post', + headers: { + 'Content-Type': 'application/json' + }, + data: {clientCode,date} + }); +} + +// 首页透析设备列表数据 /patient/hemo/med/record/getHomePageStat3 +export function getHomePageStat3(clientCode:string,date:string) { + return request({ + url: '/patient/hemo/med/record/getHomePageStat3', + method: 'post', + headers: { + 'Content-Type': 'application/json' + }, + data: {clientCode,date} + }); +} + +export function uploadPhoto(params: any) { + return request({ + url: '/common/uploadPhoto', + method: 'post', + data: params, + }); +} + +export function getVersionList(params:object) { + return request({ + url: '/system/version/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }); +} + +export function AddVersion(params: object) { + return request({ + url: '/system/version/save', + method: 'post', + headers: { + 'Content-Type': 'application/json' + }, + data: params, + }); +} + +export function deleteId(params: string) { + return request({ + url: '/system/version/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} diff --git a/src/api/common.type.ts b/src/api/common.type.ts new file mode 100644 index 0000000..7df067e --- /dev/null +++ b/src/api/common.type.ts @@ -0,0 +1,20 @@ +/** interface 查询列表公共请求类型 */ +export interface ICommonListParams { + page: number; + size: number; + wherecondition: string; + ordercondition: string; +} + +/** intercace 列表返回公共数据类型 */ +export interface IComminList { + total: number; + list: any[]; + [key: string]: any; +} + + +export interface IOption { + label: string; + value: boolean | string | number; +} \ No newline at end of file diff --git a/src/api/dataConversion/index.ts b/src/api/dataConversion/index.ts new file mode 100644 index 0000000..e058b7e --- /dev/null +++ b/src/api/dataConversion/index.ts @@ -0,0 +1,252 @@ +import request from "/@/utils/request"; +import { IMapper, IHandCalculatorKtvAndUrrParams, IIistMapper, IInspectionItemsByChargeItem, IDeleteLisKtvReportParams } from "./type"; +import { AxiosPromise } from "axios"; + + + +/** + * 列出所有收费项目 + * @returns + */ +export function apiGetChargeItems() { + return request({ + url: "/lis/report/listFeeItems", + method: "post" + }); +} + +/** + * 获取患者检验明细 + * @param params + * @returns + */ +export function listReportsByPatientApi(params: object) { + return request({ + url: '/lis/report/listReportsByPatient2', + method: 'post', + data: params + }) +} + +/** + * 删除检验报告 + * @param data + * @returns + */ +export function apiDelLisByDate(data: string) { + return request({ + url: "/lis/report/deleteLisReport", + method: "post", + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data + }); +} + +/** + * 删除lis结果 + * @param code + * @returns + */ +export function apiDelLis(data: string) { + return request({ + url: "/lis/report/deleteLisResult", + method: "post", + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data + }); +} + +/** + * 修改LIS结果 + * @param data + * @returns + */ +export function apiUpdateLis(params: { reportCode: string; itemName: string; result: string; code?: string; sampleDate?: string; }) { + return request({ + url: "/lis/report/updateLisResult", + method: "post", + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }); +} + + + +/** + * 根据收费项目获取系统内置检验项目 + * @param data + * @returns + */ +export function apiGetInspectionItemsByChargeItem(feeItemName: string, clientCode: string) :AxiosPromise { + return request({ + url: "/lis/report/listTestItemsByFeeItemName", + method: "post", + headers: { + "Content-Type": "application/x-www-form-urlencoded" + }, + data: "feeItemName=" + feeItemName + "&clientCode=" + clientCode + }); +} + + + +/** + * 根据客户编号查询对照列表 + * @param clientCode + * @returns + */ +export function apiFindComparisonListByClientCode(clientCode: string) : AxiosPromise { + return request({ + url: "/lis/test/item/mapper/listMapper", + method: "post", + headers: { + "Content-Type": "application/x-www-form-urlencoded" + }, + data: "clientCode=" + clientCode + }); +} + + +/** + * 保存对照 + * @param data + * @returns + */ +export function apiSavecompare(data: IMapper) { + return request({ + url: "/lis/test/item/mapper/save", + method: "post", + headers: { + "Content-Type": "application/json" + }, + data + }); +} + +/** + * 查出所有lis里已有项目 + * @param clientCode + * @returns + */ +export function apiGetListItemNames (clientCode: string): AxiosPromise { + return request({ + url: '/lis/report/listDistinctItemNames', + method: 'post', + headers: { + "Content-Type": "application/x-www-form-urlencoded" + }, + params: { clientCode } + }) +} + + +/** + * 计算患者urr ktv + * @param data + * @returns + */ +export function handCalculatorKtvAndUrrApi(data: IHandCalculatorKtvAndUrrParams) { + return request({ + url: '/lis/stat/handCalculatorKtvAndUrr', + method: 'post', + data + }) +} + +/** + * 删除KTV报告接口 + * @param params + * @returns + */ +export function deleteLisKtvReportApi(params: { reportCode: string }) { + return request({ + url: '/lis/report/deleteLisKtvReport', + method: 'post', + headers: { + "Content-Type": "application/x-www-form-urlencoded" + }, + params + }) +} + +//获取列表 +/** + * + * @param params + * @returns + */ +export function getAlertPatients(params: object) { + return request({ + url: '/client/alert/info/queryAlertPatients', + method: 'post', + data: params + }) +} + +//新增 +/** + * + * @param params + * @returns + */ +export function addRemind(params: object) { + return request({ + url: '/client/alert/info/add', + method: 'post', + data: params + }) +} + +//批量新增 +export function addRemindList(data: object) { + return request({ + url: '/client/alert/info/addList', + method: 'post', + data + }) +} + +/** + * 修改api + * @param data + * @returns + */ +export function editRemindApi(data) { + return request({ + url: '/client/alert/info/update', + method: 'post', + data + }) +} + +/** + * 删除api + * @param id + * @returns + */ +export function delRemindApi(id: number) { + return request({ + url: '/client/alert/info/delete', + method: 'post', + params: { id } + }) +} + +/** + * 查询列表api + * @param params + * @returns + */ +export function getRemindApi(params) { + return request({ + url: '/client/alert/info/list', + method: 'post', + params, + }) +} \ No newline at end of file diff --git a/src/api/dataConversion/type.ts b/src/api/dataConversion/type.ts new file mode 100644 index 0000000..699784f --- /dev/null +++ b/src/api/dataConversion/type.ts @@ -0,0 +1,75 @@ +export interface IMapper { + clientCode: string; + code: string; + createTime: string; + createUser: string; + dataName: string; + deletedTime: string; + hisCode: string; + hisName: string; + hisType: string; + id: number; + isDeleted: number; + remark: string; + updateTime: string; + updateUser: string; + sortOrder: number; +} + +export interface IHandCalculatorKtvAndUrrParams { + dataNiaosu1: string; + dataNiaosu2: string; + dataMedPeriod: string; + dataWeight1: string; + dataWeight2: string; +} + + +export interface IIistMapper { + clientCode: string; + clientItemName: string; + clientItemRefH: number; + clientItemRefL: number; + clientItemRefType: number; + clientItemRefValue: string; + clientItemUnit: string; + code: string; + createTime: string; + createUser: number; + deletedTime: string; + id: number; + isDeleted: number; + itemGroupName: string; + itemIsShow: number; + remark: string; + sortOrder: number; + systemItemName: string; + updateTime: string; + updateUser: number; +} + + +export interface IInspectionItemsByChargeItem { + feeItemName: string; + testItemsText: string; + testItems: IInspectionItemsByChargeItemTestItem[]; +} + +export interface IInspectionItemsByChargeItemTestItem { + feeItem: string; + testItem: string; + testItem2: string; + testItemUnit: string; + 参考值: string; + 参考值低值: null | number; + 参考值类型: number | null; + 参考值高值: number | null; + 排序字段: number | null; + 是否显示: null | number; +} + + +export interface IDeleteLisKtvReportParams { + patientCode: string; + sampleDate: string; +} \ No newline at end of file diff --git a/src/api/data_global_item_info/index.ts b/src/api/data_global_item_info/index.ts new file mode 100644 index 0000000..0055729 --- /dev/null +++ b/src/api/data_global_item_info/index.ts @@ -0,0 +1,73 @@ +import request from '/@/utils/request'; + + +export function Add(data:object){ + return request({ + url: '/data/global/item/info/add', + method: 'post', + data + }) +} +export function update(params: string) { + return request({ + url: '/data/global/item/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/data/global/item/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function detail2(params: string) { + return request({ + url: '/data/global/item/info/detail2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/data/global/item/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} + +export function listByGlobalItemCode(params: object) { + return request({ + url: '/item/clearance/vs/xll/listByGlobalItemCode', + method: 'post', + params, + }); +} + +export function saveMapper(params: object) { + return request({ + url: '/item/clearance/vs/xll/saveMapper', + method: 'post', + data: params, + }); +} +/** + * 获取物品分类1的列表 + * @returns + */ +export function getItemClassificationOneOptions() { + return request({ + url: "/data/global/item/info/listAllType1", + method: "post" + }) +} \ No newline at end of file diff --git a/src/api/device/commServiceDevice.ts b/src/api/device/commServiceDevice.ts new file mode 100644 index 0000000..283ba6e --- /dev/null +++ b/src/api/device/commServiceDevice.ts @@ -0,0 +1,47 @@ +import request from '/@/utils/request'; + + +export function Add(data:object){ + return request({ + url: '/comm/service/device/info/add', + method: 'post', + data + }) +} +export function update(params: string) { + return request({ + url: '/comm/service/device/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/comm/service/device/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function detail2(params: string) { + return request({ + url: '/comm/service/device/info/detail2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: string) { + return request({ + url: '/comm/service/device/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} diff --git a/src/api/device/device_clean_plan.ts b/src/api/device/device_clean_plan.ts new file mode 100644 index 0000000..4acd5a7 --- /dev/null +++ b/src/api/device/device_clean_plan.ts @@ -0,0 +1,40 @@ +import request from '/@/utils/request'; +export function Add(params: object) { + return request({ + url: '/device/clean/plan/add', + method: 'post', + data: params, + }); +} +export function batchAdd(params: object) { + return request({ + url: '/device/clean/plan/batchAdd', + method: 'post', + data: params, + }); +} +export function update(params: object) { + return request({ + url: '/device/clean/plan/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/device/clean/plan/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/device/clean/plan/list', + method: 'post', + params + }) +} + diff --git a/src/api/device/group.ts b/src/api/device/group.ts new file mode 100644 index 0000000..7b5a8d7 --- /dev/null +++ b/src/api/device/group.ts @@ -0,0 +1,130 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { ICommonListParams } from '../common.type'; +import type { IDeviceGroupList } from './tyeps/group.type'; + +export function Add(data:object){ + return request({ + url: '/device/group/info/add', + method: 'post', + data + }) +} +export function update(params: string) { + return request({ + url: '/device/group/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/device/group/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function detail2(params: string) { + return request({ + url: '/device/group/info/detail2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + +/** + * 获取设备分组列表 + * @param params + * @returns + */ +export function list(params: ICommonListParams): AxiosPromise { + return request({ + url: '/device/group/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function listAllDevices(params: string) { + return request({ + url: '/device/group/info/listAllDevices', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function listAllDevices2(params: string) { + return request({ + url: '/device/group/info/listAllDevices2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function listAllDevices3(params: string) { + return request({ + url: '/device/group/info/listAllDevices3', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function listPatHemoMedCard(params: string) { + return request({ + url: '/patient/hemo/med/record/listPatHemoMedCard', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +// 读取设置API +export function loadCardSetting(params: string) { + return request({ + url: '/patient/hemo/med/record/loadCardSetting', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +// 保存设置API +export function saveCardSetting(params: object) { + return request({ + url: '/patient/hemo/med/record/saveCardSetting', + method: 'post', + data: params, + }); +} + +/** + * 获取透析单图片 + * @param data + * @returns + */ +export function apiGetTreatmentSheetImg(data: { clientCode: string; recordCodes: string;}) { + return request({ + url: "/patient/hemo/med/record/printMedReports", + method: "post", + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: `clientCode=${data.clientCode}&recordCodes=${data.recordCodes}` + }) +} \ No newline at end of file diff --git a/src/api/device/index.ts b/src/api/device/index.ts new file mode 100644 index 0000000..527cb0d --- /dev/null +++ b/src/api/device/index.ts @@ -0,0 +1,144 @@ + + +import request from '/@/utils/request'; +import type { IDeviceListReponse } from './tyeps/index.type'; +import type { AxiosPromise } from 'axios'; +import type { ICommonListParams } from '../common.type'; + +export function Add(params: string) { + return request({ + url: '/device/info/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/device/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/device/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + +/** + * 获取设备列表 + * @param params + * @returns + */ +export function list(params: ICommonListParams) : AxiosPromise { + return request({ + url: '/device/info/list', + method: 'post', + params + }) +} +export function printPatientCardCode(data: object) { + return request({ + url: '/device/info/printPatientCardCode', + method: 'post', + data, + }); +} +export function listRecords(params: object) { + return request({ + url: '/device/clean/execute/listRecords', + method: 'post', + data:params + }) +} + +export function getRecordsByDeviceCodeApi(params: object) { + return request({ + url: '/device/clean/execute/getRecordsByDeviceCode', + method: 'post', + data:params + }) +} + +export function listAvailableDevices(params: object) { + return request({ + url: '/hemo/med/schedule/template/listAvailableDevices', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} + +/** + * 获取消毒过滤器名称api + * @param clientCode + * @returns + */ +export function listBacterialFilterApi(clientCode: string) { + return request({ + url: '/device/clean/plan/listBacterialFilter', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { clientCode }, + }) +} +// 添加设备消毒记录 +export function Addxd(params: object) { + return request({ + url: '/device/clean/execute/add', + method: 'post', + data: params, + }) +} +// 修改设备消毒记录 +export function updatexd(params: object) { + return request({ + url: '/device/clean/execute/update', + method: 'post', + data: params, + }) +} +// 删除 设备消毒记录 +export function deleteIdxd(params: string) { + return request({ + url: '/device/clean/execute/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }) +} +// 查询血压计日志 +export function bpPushList(params: object) { + return request({ + url: '/device/yu/yue/bp/push/list', + method: 'post', + params + }) +} + +/** + * 设定手动刷新副屏任务API: + * @param deviceCode + * @returns + */ +export function refreshSubScreenApi(deviceCode: string) { + return request({ + url: '/device/info/setSubScreenRefreshJob', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { deviceCode }, + }) +} \ No newline at end of file diff --git a/src/api/device/signMachine.ts b/src/api/device/signMachine.ts new file mode 100644 index 0000000..353806d --- /dev/null +++ b/src/api/device/signMachine.ts @@ -0,0 +1,47 @@ +import request from '/@/utils/request'; + + +export function Add(data:object){ + return request({ + url: '/auto/self/sign/machine/add', + method: 'post', + data + }) +} +export function update(params: string) { + return request({ + url: '/auto/self/sign/machine/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/auto/self/sign/machine/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function detail2(params: string) { + return request({ + url: '/auto/self/sign/machine/detail2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: string) { + return request({ + url: '/auto/self/sign/machine/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} diff --git a/src/api/device/tyeps/group.type.ts b/src/api/device/tyeps/group.type.ts new file mode 100644 index 0000000..391f73f --- /dev/null +++ b/src/api/device/tyeps/group.type.ts @@ -0,0 +1,25 @@ +import type { IComminList } from '../../common.type'; + +/** 设备分组 */ +export interface IDeviceGroup { + clientCode: string; + code: string; + createTime: string | null; + createUser: null | number; + deletedTime: null | string; + deviceInfoCount: number; + deviceInfos: any; + groupName: string; + groupSort: number; + groupType: 0 | 1; + id: number; + isDeleted: number; + remark: string; + updateTime: string | null; + updateUser: number | null; +} + + +export interface IDeviceGroupList extends Omit { + list: IDeviceGroup[]; +} \ No newline at end of file diff --git a/src/api/device/tyeps/index.type.ts b/src/api/device/tyeps/index.type.ts new file mode 100644 index 0000000..1ee0ee8 --- /dev/null +++ b/src/api/device/tyeps/index.type.ts @@ -0,0 +1,52 @@ +import type { IDeviceGroup } from './group.type'; +import type { IComminList } from '../../common.type'; + +export interface IDeviceVsSchemes { + code: string; + createTime: string; + createUser: null | null; + deletedTime: null | string; + deviceCode: string; + id: number; + isDeleted: number; + remark: string; + schemeName: string; + updateTime: string; + updateUser: null | number; +} + +/** 设备-类型 */ +export interface IDeviceInfo { + clientCode: string; + code: string; + createTime: string; + createUser: number | null; + deletedTime: null; + deviceBrand: string; + deviceCurrentState: number; + deviceGroupCode: number; + deviceGroupInfo: IDeviceGroup; + deviceGroupName: string; + deviceGroupType: number; + deviceInitialRunCount: number; + deviceModel: string; + deviceName: string; + deviceNo: string; + devicePlusSn: string; + devicePurchaseTime: string; + deviceSn: string; + deviceType: number; + deviceVsSchemeList: null | any; + deviceVsSchemes: IDeviceVsSchemes[]; + id: number; + isDeleted: number; + remark: string; + sortOrder: number; + updateTime: string | null; + updateUser: number; +} + + +export interface IDeviceListReponse extends Omit { + list: IDeviceInfo[]; +} \ No newline at end of file diff --git a/src/api/dialysis/ca.ts b/src/api/dialysis/ca.ts new file mode 100644 index 0000000..7fba342 --- /dev/null +++ b/src/api/dialysis/ca.ts @@ -0,0 +1,25 @@ +import request from '/@/utils/request'; + +export function getCaCertificationsList(params) { + return request({ + url: '/information/ca/certification/queryInformationCaCertifications', + method: 'post', + data: params, + }); +} + +export function getCaCertification(val) { + return request({ + // url: '/bj/ca/caCertification', => '/ca/caCertification' + url: '/ca/caCertification', + method: 'post', + data: val, + }); +} + +export function getPollTokenInfo(val) { + return request({ + url: '/bj/ca/pollTokenInfo?requestId=' + val, + method: 'post', + }); +} \ No newline at end of file diff --git a/src/api/dialysis/patient-hemo-med-dialysis-scheme.ts b/src/api/dialysis/patient-hemo-med-dialysis-scheme.ts new file mode 100644 index 0000000..b8eb90d --- /dev/null +++ b/src/api/dialysis/patient-hemo-med-dialysis-scheme.ts @@ -0,0 +1,106 @@ +import request from '/@/utils/request'; + +export function Add(params: string) { + return request({ + url: '/patient/hemo/med/dialysis/scheme/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/patient/hemo/med/dialysis/scheme/update', + method: 'post', + data: params, + }); +} + +//智能审核 +export function intelligentReview(params: object) { + return request({ + url: '/patient/hemo/med/dialysis/scheme/intelligentReview', + method: 'post', + params, + }); +} + +export function deleteId(params: string) { + return request({ + url: '/patient/hemo/med/dialysis/scheme/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/patient/hemo/med/dialysis/scheme/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function getCurrentMedSchemeOfPatient(params: object):any { + return request({ + url: '/patient/hemo/med/dialysis/scheme/getCurrentMedSchemeOfPatient', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function save(params: object) { + return request({ + url: '/patient/hemo/med/dialysis/scheme/save', + method: 'post', + data: params, + }) +} +export function preSave(params: object) { + return request({ + url: '/patient/hemo/med/body/state/pre/update', + method: 'post', + data: params, + }) +} +export function preSave2(params: object) { + return request({ + url: '/patient/hemo/med/body/state/pre/save', + method: 'post', + data: params, + }) +} +export function getStatePre(params: object) { + return request({ + url: '/patient/hemo/med/body/state/pre/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function syncToPatient(params: object) { + return request({ + url: '/patient/hemo/med/dialysis/scheme/syncToPatient', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function updateSchemeTool(params: object) { + return request({ + url: '/patient/hemo/med/record/updateSchemeTool', + method: 'post', + data:params + }) +} + + diff --git a/src/api/dialysis/patient_hemo_med_body_state_after.ts b/src/api/dialysis/patient_hemo_med_body_state_after.ts new file mode 100644 index 0000000..b6c66a4 --- /dev/null +++ b/src/api/dialysis/patient_hemo_med_body_state_after.ts @@ -0,0 +1,61 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { ICommonListParams } from '../common.type'; +import type { IMedAfterList } from './types/patient_hemo_med_body_state_after.type'; + +export function Add(params: string) { + return request({ + url: '/patient/hemo/med/body/state/after/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/patient/hemo/med/body/state/after/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/patient/hemo/med/body/state/after/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +/** + * 获取透后评估 + * @param params + * @returns + */ +export function list(params: ICommonListParams) :AxiosPromise { + return request({ + url: '/patient/hemo/med/body/state/after/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 保存透后评估 + * @param data + * @returns + */ +export function medAfterSaveApi(data) { + return request({ + url: '/patient/hemo/med/body/state/after/save', + method: 'post', + // headers: { + // 'Content-Type': 'application/x-www-form-urlencoded' + // }, + data + }) +} \ No newline at end of file diff --git a/src/api/dialysis/patient_hemo_med_body_state_pre.ts b/src/api/dialysis/patient_hemo_med_body_state_pre.ts new file mode 100644 index 0000000..0f65c96 --- /dev/null +++ b/src/api/dialysis/patient_hemo_med_body_state_pre.ts @@ -0,0 +1,84 @@ +import { AxiosPromise } from 'axios'; +import request from '/@/utils/request'; +import { IBodyStatePreInfo } from '/@/views/dialysis/dialysisForm/type'; +import type { IComminList, ICommonListParams } from '../common.type'; + + +interface IBodyStatePreInfoList extends Omit { + list: IBodyStatePreInfo[]; +} + +export function Add(params: string) { + return request({ + url: '/patient/hemo/med/body/state/pre/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/patient/hemo/med/body/state/pre/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/patient/hemo/med/body/state/pre/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: ICommonListParams) :AxiosPromise{ + return request({ + url: '/patient/hemo/med/body/state/pre/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 导出小结至病程记录 + * @param recordCode + * @returns + */ +export function outputToDiseaseProgressRecordApi(recordCode: string, role: 'nurse' | 'doctor') { + return request({ + url: '/patient/hemo/med/finish/outputToDiseaseProgressRecord', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + recordCode, + role + } + }) +} +/** + * 导出小结至病程记录 + * @param recordCode + * transferMode 0:普通输出 1:sse流式输出 + * @returns + */ +export function getAIResultForRecordSummary(recordCode: string,isRebuild:number,transferMode:number) { + return request({ + url: '/patient/hemo/med/record/getAIResultForRecordSummary', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + recordCode, + isRebuild, + transferMode + } + }) +} + diff --git a/src/api/dialysis/patient_hemo_med_doule_check.ts b/src/api/dialysis/patient_hemo_med_doule_check.ts new file mode 100644 index 0000000..18c168d --- /dev/null +++ b/src/api/dialysis/patient_hemo_med_doule_check.ts @@ -0,0 +1,36 @@ +import request from '/@/utils/request'; + +export function Add(params: Object) { + return request({ + url: '/patient/hemo/med/doule/check/add', + method: 'post', + data: params, + }); +} +export function update(params: Object) { + return request({ + url: '/patient/hemo/med/doule/check/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/patient/hemo/med/doule/check/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/patient/hemo/med/doule/check/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} diff --git a/src/api/dialysis/patient_hemo_med_finish.ts b/src/api/dialysis/patient_hemo_med_finish.ts new file mode 100644 index 0000000..26245c7 --- /dev/null +++ b/src/api/dialysis/patient_hemo_med_finish.ts @@ -0,0 +1,58 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { ICommonListParams } from '/@/api/common.type'; +import type { IMedFinishList, IMedFinish } from './types/patient_hemo_med_finish.type'; + +export function Add(params: Object) { + return request({ + url: '/patient/hemo/med/finish/add', + method: 'post', + data: params, + }); +} +export function update(params: Object) { + return request({ + url: '/patient/hemo/med/finish/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/patient/hemo/med/finish/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + +/** + * 获取患者透后小结 + * @param params + * @returns + */ +export function list(params: ICommonListParams) : AxiosPromise { + return request({ + url: '/patient/hemo/med/finish/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 保存透后小结 + * @param data + * @returns + */ +export function saveMedFinishApi(data: Partial) { + return request({ + url: '/patient/hemo/med/finish/save', + method: 'post', + data, + }) +} \ No newline at end of file diff --git a/src/api/dialysis/patient_hemo_med_monitor_data.ts b/src/api/dialysis/patient_hemo_med_monitor_data.ts new file mode 100644 index 0000000..42f5779 --- /dev/null +++ b/src/api/dialysis/patient_hemo_med_monitor_data.ts @@ -0,0 +1,121 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { IopDataParams } from './types'; +import type { ICommonListParams } from '/@/api/common.type'; +import type { IMedMonitorList, IMedMonitor, IIotHistories } from './types/patient_hemo_med_monitor_data.type'; + +export function Add(params: Partial) { + return request({ + url: '/patient/hemo/med/monitor/data/add', + method: 'post', + data: params, + }); +} +export function update(params: Partial) { + return request({ + url: '/patient/hemo/med/monitor/data/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/patient/hemo/med/monitor/data/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + +/** + * 获取监测记录列表 + * @param params + * @returns + */ +export function list(params: ICommonListParams): AxiosPromise { + return request({ + url: '/patient/hemo/med/monitor/data/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 确认监测记录 + * @param params + * @returns + */ +export function confirm(params: { recordCode: string }) { + return request({ + url: '/patient/hemo/med/monitor/data/confirm', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 获取监测记录默认内容 + * @param params + * @returns + */ +export function prepareAdd(params: string): AxiosPromise { + return request({ + url: '/patient/hemo/med/monitor/data/prepareAdd', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }) +} + +/** + * 获取监测记录想去 + * @param params + * @returns + */ +export function detail2(params: string): AxiosPromise { + return request({ + url: '/patient/hemo/med/monitor/data/detail2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function getLinkedIOTStatus(params: string) { + return request({ + url: '/device/info/getLinkedIOTStatus', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }) +} + + +/** + * 获取iot联机数据 + * @param params + * @returns + */ +export function iopDataApi(params: IopDataParams): AxiosPromise { + return request({ + url: '/device/info/outputDeviceIOTHistories', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} diff --git a/src/api/dialysis/patient_hemo_med_temp_drug_order.ts b/src/api/dialysis/patient_hemo_med_temp_drug_order.ts new file mode 100644 index 0000000..02d9497 --- /dev/null +++ b/src/api/dialysis/patient_hemo_med_temp_drug_order.ts @@ -0,0 +1,122 @@ +import request from '/@/utils/request'; +import type { IExecuteOrderParams, AddDrugOrdersFromTemplateParams } from './types/patient_hemo_med_temp_drug_order.type'; + +export function Add(params: string) { + return request({ + url: '/patient/hemo/med/temp/drug/order/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/patient/hemo/med/temp/drug/order/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/patient/hemo/med/temp/drug/order/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/patient/hemo/med/temp/drug/order/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function addDrugOrdersFromTemplate(params: AddDrugOrdersFromTemplateParams) { + return request({ + url: '/patient/hemo/med/temp/drug/order/addDrugOrdersFromTemplate', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function listTodayOrder(params: Object) { + return request({ + url: '/patient/hemo/med/record/listTodayOrder', + method: 'post', + data: params, + }); +} +export function listTodayOrder2(params: Object) { + return request({ + url: '/patient/hemo/med/record/listTodayOrder2', + method: 'post', + data: params, + }); +} +export function confirmOrders(params: object) { + return request({ + url: '/patient/hemo/med/temp/drug/order/confirmOrders', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function listTodayTempOrderStat(params: Object) { + return request({ + url: '/patient/hemo/med/record/listTodayTempOrderStat', + method: 'post', + data: params, + }); +} +export function list2(params: object) { + return request({ + url: '/patient/drug/order/vs/patient/list2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function patientPush(params: Object) { + return request({ + url: '/patient/drug/order/vs/patient/push', + method: 'post', + data: params, + }) +} +export function printTodyOrderPaper(params: Object) { + return request({ + url: '/patient/hemo/med/record/printTodyOrderPaper', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} + + +/** + * 执行医嘱 + * @param params + * @returns + */ +export function executeOrderApi(params: IExecuteOrderParams) { + return request({ + url: '/patient/hemo/med/temp/drug/order/executeOrder', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} \ No newline at end of file diff --git a/src/api/dialysis/types.ts b/src/api/dialysis/types.ts new file mode 100644 index 0000000..2c2a55a --- /dev/null +++ b/src/api/dialysis/types.ts @@ -0,0 +1,5 @@ +export interface IopDataParams { + date1: string; + date2: string; + deviceCode: string; +} \ No newline at end of file diff --git a/src/api/dialysis/types/patient_hemo_med_body_state_after.type.ts b/src/api/dialysis/types/patient_hemo_med_body_state_after.type.ts new file mode 100644 index 0000000..d38435f --- /dev/null +++ b/src/api/dialysis/types/patient_hemo_med_body_state_after.type.ts @@ -0,0 +1,65 @@ +import type { IComminList } from '../../common.type'; + +export interface IMedAfter { + actuallyClliang: number | null; + actuallyMedPeriodH: number | null; + actuallyMedPeriodM: number | null; + actuallyZhliang: number | null; + afterClothesWeight: number | null; + afterHemoWeight: null | number; + afterHemoWeightFinal: number | null; + afterHemoWeightType: number | null; + afterIsUseAutoselfDeviceBp: number | null; + afterIsUseAutoselfDeviceWeight: number | null; + afterMBpH: null | number; + afterMBpL: null | number; + afterMBpPositon: number | null; + afterMP: number | null; + afterMR: number | null; + afterMT: number | null; + afterMedBfz: string; + afterMedDg: string; + afterMedDgInfo: null | number; + afterMedNl: string; + afterMedNlInfo: null; // 内瘘info + afterMedNx: string; + afterMedNxInfo: null; // 凝血info + afterMedRlCg: null | number; + afterMedRlJs: null | number; + afterMedRlSx: null | number; + afterMedRlSy: null | number; + afterMedZz: string; + afterMedZzInfo: null; // 症状info + afterPlusSetting: string; + code: string; + confirmTime: null | string; + confirmUser: string; + confirmUserDoctor: string; + confirmUserDoctorName: string; + confirmUserInfo: null; // 确认人Info + confirmUserNurse: string; + confirmUserNurseName: string; + createTime: string; + createUser: null | number; + deletedTime: null | string; + hemoMedAfterPlusSetting: any; + id: number; + isConfirm: number; + isDeleted: number; + plusSettings_交班内容选择: string[]; + plusSettings_患者去向选择: string[]; + preClothesWeight: number; + preHemoWeight: number; + recordCode: string; + remark: string; + signTime: null | string; + updateTime: string | null; + updateUser: null | number; + exitType:string; + exitTime:string; +} + + +export interface IMedAfterList extends Omit { + list: IMedAfter[]; +} \ No newline at end of file diff --git a/src/api/dialysis/types/patient_hemo_med_finish.type.ts b/src/api/dialysis/types/patient_hemo_med_finish.type.ts new file mode 100644 index 0000000..415887d --- /dev/null +++ b/src/api/dialysis/types/patient_hemo_med_finish.type.ts @@ -0,0 +1,83 @@ +import type { IUser } from '../../user/types/index.type'; +import type { IComminList } from '../../common.type'; + +export interface IMedFinish { + code: string; + confirmTime: string | null; + confirmUser: string | null; + confirmUserDoctor: string | null; + confirmUserDoctorName: string | null; + confirmUserInfo: IUser | null; + confirmUserNurse: string | null; + confirmUserNurseName: string; + createTime: string | null; + createUser: null | number; + deletedTime: null | string; + doneByg: string; + doneBygName: string; + doneCcASideDirection: string; + doneCcCcPosition: string; + doneCcNurse: string; + doneCcNurseInfo: IUser | null; + doneCcOrHy: number | null; + doneCcType: string; + doneCcTypeInfo: null | any; + doneCcZhen: string; + doneCcZhenA: string; + doneCcZhenAString: string; + doneCcZhenNames: null | string; + doneCcZhenType: string; + doneCcZhenV: string; + doneCcZhenVString: string; + doneDoctorSummary: string; + doneDoctorSummaryConfirmTime: null | string; + doneDoctorSummaryDoctor: string | null; + doneDoctorSummaryDoctorText: string; + doneDoctorSummaryText: string; + doneDownNurse: string; + doneDownNurseInfo: IUser | null; + doneGl: string; + doneGlName: string; + doneMedDoctor: string; + doneMedDoctorInfo: IUser | null; + doneMedNurse: string; + doneMedNurseInfo: IUser | null; + doneSummary: string; + doneSummaryInfo: null | any; + doneSummaryText: string + doneSummaryUser: string; + doneSummaryUserDoctor: string; + doneSummaryUserDoctorName: string; + doneSummaryUserInfo: IUser | null; + doneSummaryUserNurse: string; + doneSummaryUserNurseName: string; + doneTeach: string; + doneTeachInfo: null | any; + doneTeachText: string; + doneTechUser: string; + doneTechUserInfo: IUser | null; + doneTxqCode: string; + doneUpNurse: string; + doneUpNurseInfo: IUser | null; + doneUseHlb: string; + doneUseHlbName: string; + doneUseNsy: string; + doneUseNsyName: string; + doneVerifyUser: string; + doneVerifyUserInfo: IUser | null; + doneYcTube: string; + doneYcTubeInfo: IUser | null; + id: number | null; + isConfirm: number | null; + isDeleted: number | null; + recordCode: string; + remark: string; + updateTime: string; + updateUser: number | null; + 透析方式名称: string; +} + + +export interface IMedFinishList extends Omit { + list: IMedFinish[]; +} diff --git a/src/api/dialysis/types/patient_hemo_med_monitor_data.type.ts b/src/api/dialysis/types/patient_hemo_med_monitor_data.type.ts new file mode 100644 index 0000000..0d25722 --- /dev/null +++ b/src/api/dialysis/types/patient_hemo_med_monitor_data.type.ts @@ -0,0 +1,79 @@ +import type { IComminList } from '../../common.type'; +import type { IUser } from '../../user/types/index.type'; + +export interface IMedMonitor { + clzl: number | null; + code: string; + confirmTime: string | null; + confirmUser: string | null; + confirmUserInfo: IUser | null; + createTime: string | null; + createUser: number | null; + dataBloodPressureH: string; + dataBloodPressureL: string; + dataBloodPressureType: number; + dataBreathing: string; + dataCll: string; + dataClliang: string; + dataDdd: string; + dataDeal: string; + dataDmy: string; + dataFlag: number; + dataHuixue: string; + dataJmy: string; + dataKmy: string; + dataNnd: string; + dataNs: string; + dataPulse: string; + dataResult: string; + dataTime: string; + dataTxywd: string; + dataXll: string; + dataXrl: string; + dataYinxue: string; + dataZhl: string; + dataZhliang: string; + dataZz: string; + deletedTime: null | string; + fromIOT: boolean; + id: number | null; + isConfirm: number; + isDeleted: number; + isLastRecord: boolean; + lastTImeClliang: string; + lastTimeDataCode: string; + lastTimeDataTime: null | string; + lastTimeZhliang: string; + monitorNurse: string; + monitorNurseInfo: IUser | null; + recordCode: string; + remark: string; + screenImageUrl: string; + txPeriod: number; + updateTime: string | null; + updateUser: number | number; + zhTotal: null | number; + dataTemperture:null | number; + dataBloodTemperature: number | null; // 血温 + dataRbv: number | null; // 血容量 + dataKtV: number | null; // 在线ktv +} + +export interface IMedMonitorList extends Omit { + list: IMedMonitor[]; +} + +export interface IIotHistories { + 超滤量: string; + 置换量: string; + 时间: string; + 血流量: string; + 静脉压: string; + 跨膜压: string; + 脱水率: string; + 透析液流速: string; + 透析液温度: string; + 置换率: string; + 动脉压: string; + 电导度: string; +} diff --git a/src/api/dialysis/types/patient_hemo_med_temp_drug_order.type.ts b/src/api/dialysis/types/patient_hemo_med_temp_drug_order.type.ts new file mode 100644 index 0000000..1648309 --- /dev/null +++ b/src/api/dialysis/types/patient_hemo_med_temp_drug_order.type.ts @@ -0,0 +1,14 @@ +export interface IExecuteOrderParams { + recordCode: string; + orderCode: string; + orderExecuteUser: string; + orderExecuteTime: string; + orderExecuteCheckUser: string; +} + + +export interface AddDrugOrdersFromTemplateParams { + recordCode: string; + drugOrders: string; + startDate: string; +} \ No newline at end of file diff --git a/src/api/dialysisRecords/signIn.ts b/src/api/dialysisRecords/signIn.ts new file mode 100644 index 0000000..db2b217 --- /dev/null +++ b/src/api/dialysisRecords/signIn.ts @@ -0,0 +1,99 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { IGetStatDataInfoParams, IStatDataInfo } from './types/signln.type'; + +//溶栓 +export function thrombolysis(recordCode: string) { + return request({ + url: '/patient/hemo/med/record/startTslProcess', + method: 'post', + params: { + recordCode: recordCode, + }, + }); +} +//停止溶栓 +export function stopTslProcess(recordCode: string) { + return request({ + url: '/patient/hemo/med/record/stopTslProcess', + method: 'post', + params: { + recordCode: recordCode, + }, + }); +} +//取消溶栓 +export function cancelTslProcess(recordCode: string) { + return request({ + url: '/patient/hemo/med/record/cancelTslProcess', + method: 'post', + params: { + recordCode: recordCode, + }, + }); +} + +// 添加透前 +export function addPreSignIn(data: object) { + return request({ + url: '/patient/hemo/med/body/state/pre/add', + method: 'post', + data, + }); +} + +// 添加透后 +export function addAfterSignIn(data: object) { + return request({ + url: '/patient/hemo/med/body/state/after/add', + method: 'post', + data, + }); +} +// 修改透前 +export function updatePreSignIn(data: object) { + return request({ + url: '/patient/hemo/med/body/state/pre/update', + method: 'post', + data, + }); +} +// 修改透后 +export function updateAfterSignIn(data: object) { + return request({ + url: '/patient/hemo/med/body/state/after/update', + method: 'post', + data, + }); +} +// 患者信息回显 +export function getPatientContent(recordCode: string) { + return request({ + url: '/patient/hemo/med/record/getMedBodyStateInfo', + method: 'post', + params: { + recordCode: recordCode, + }, + }); +} +// 修改签到状态 +export function updateRecord(data: object) { + return request({ + url: '/patient/hemo/med/record/update', + method: 'post', + data, + }); +} + +/** + * 获取排班列表 + * @param params + * @returns + */ +export function getSchedule(params: IGetStatDataInfoParams): AxiosPromise { + return request({ + url: '/patient/hemo/med/record/getStatDataInfo', + method: 'post', + params, + }); +} diff --git a/src/api/dialysisRecords/types/signln.type.ts b/src/api/dialysisRecords/types/signln.type.ts new file mode 100644 index 0000000..649e411 --- /dev/null +++ b/src/api/dialysisRecords/types/signln.type.ts @@ -0,0 +1,17 @@ +export interface IGetStatDataInfoParams { + clientCode: string; + date: string; +} + +export interface IStatDataInfo { + afterCheckCount: number; + date: string; + inMedStateCount: number; + outPatientCount: number; + patientCount: number; + recordCount: number; + scheduleCount: number; + signedCount: number; + timeSlot: number; + weightCount: number; +} diff --git a/src/api/dict/Scheme.ts b/src/api/dict/Scheme.ts new file mode 100644 index 0000000..b161b48 --- /dev/null +++ b/src/api/dict/Scheme.ts @@ -0,0 +1,40 @@ +import request from '/@/utils/request'; + + +export function listSchemes(params: string) { + return request({ + url: '/hemo/med/scheme/listSchemes', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function updateMedScheme(params: string) { + return request({ + url: '/patient/hemo/med/record/updateMedScheme', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function getScheme(params: string) { + return request({ + url: '/hemo/med/scheme/getScheme', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function save(params: string) { + return request({ + url: '/hemo/med/scheme/save', + method: 'post', + data: params, + }); +} \ No newline at end of file diff --git a/src/api/dict/index.ts b/src/api/dict/index.ts new file mode 100644 index 0000000..c019867 --- /dev/null +++ b/src/api/dict/index.ts @@ -0,0 +1,174 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { ICustomDict, IDict } from './types/index.type'; + + +export function listDictType() { + return request({ + url: '/dict/base/info/listDictTypes', + method: 'post', + }); +} +export function saveDictTypes(params:object) { + return request({ + url: '/dict/base/info/saveDictTypes', + method: 'post', + data: params, + }); +} +export function saveCustDictTypes(params:object) { + return request({ + url: '/dict/custom/info/saveDictTypes', + method: 'post', + data: params, + }); +} +export function listDictValuesByType(params: string): AxiosPromise { + return request({ + url: 'dict/base/info/listDictValuesByType', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }) +} + +export function getDictType(params: Object) { + return request({ + url: '/dict/base/info/listDictValuesByType', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} +export function listDictValuesByType2(params: string): AxiosPromise { + return request({ + url: 'dict/base/info/listDictValuesByType2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }) +} + +/** 获取自定义字典 */ +export function listCustomDictValuesByType(params: string): AxiosPromise { + return request({ + url: '/dict/custom/info/listCustomDictValuesByType', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }) +} +// 根据字典类型取得所有字典项 +export function getListByTypeList(dictType: string) { + return request({ + url: '/dict/base/info/listDictValuesByType', + method: 'post', + params: { + dictType: dictType + } + }) +} + +export function listCustomDictTypes() { + return request({ + url: 'dict/custom/info/listCustomDictTypes', + method: 'post', + }) +} +// 药物字典查询 +export function getDrupDicList(params:object) { + return request({ + url: '/drug/info/list', + method: 'post', + params + }) +} +// 新增药物字典 +export function addDrugDict(data:object) { + return request({ + url: '/drug/info/add', + method: 'post', + data + }) +} +// 修改药物字典 +export function updateDrugDict(data:object) { + return request({ + url: '/drug/info/update', + method: 'post', + data + }) +} +// 删除药品字典 +export function deleteDrugDict(id:number) { + return request({ + url: '/drug/info/delete', + method: 'post', + params: { + id + } + }) +} +// 根据客户列出药物字典 +export function getDrugDictOfClient (clientCode: string,drugName:string) { + return request({ + url: '/drug/info/listDrugsByClient', + method: 'post', + params: { + clientCode, + drugName + } + }) +} +export function getsuntopItemList (params) { + return request({ + url: '/data/global/item/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function getCleanList(params: Object) { + return request({ + url: '/device/clean/type/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} +// 删除药品字典 +export function deleteCleanDict(id:number) { + return request({ + url: '/device/clean/type/delete', + method: 'post', + params: { + id + } + }) +} +export function addCleanDict(data:object){ + return request({ + url: '/device/clean/type/add', + method: 'post', + data + }) +} +export function updateCleanDict(data: object) { + return request({ + url: '/device/clean/type/update', + method: 'post', + data, + }); +} \ No newline at end of file diff --git a/src/api/dict/types/index.type.ts b/src/api/dict/types/index.type.ts new file mode 100644 index 0000000..20b3a72 --- /dev/null +++ b/src/api/dict/types/index.type.ts @@ -0,0 +1,37 @@ +export interface ICustomDict { + clientCode: string; + code: string; + createTime: string | null; + createUser: null | number; + deletedTime: null | string; + dictIsEnable: number; + dictNo: string; + dictSortOrder: number; + dictText: string; + dictType: string; + hisCode: string; + id: number; + isDeleted: number; + remark: string; + updateTime: string | null; + updateUser: null | number; +} + +export interface IDict { + code: string; + createTime: string | null; + createUser: number | null; + deletedTime: null | string; + dictIsCustom: number; + dictIsEnable: number; + dictNo: string; + dictText: string; + dictType: string; + hisCode: string; + id: number; + isDeleted: number; + remark: string; + sortOrder: number; + updateTime: string | null; + updateUser: null | number; +} diff --git a/src/api/dict_diagnose/index.ts b/src/api/dict_diagnose/index.ts new file mode 100644 index 0000000..731203c --- /dev/null +++ b/src/api/dict_diagnose/index.ts @@ -0,0 +1,106 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; + + +export function listDiagnoseTypes() { + return request({ + url: '/dict/diagnose/info/listDiagnoseTypes', + method: 'post', + }); +} +export function Add(data:object){ + return request({ + url: '/dict/diagnose/info/add', + method: 'post', + data + }) +} +export function update(params: string) { + return request({ + url: '/dict/diagnose/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/dict/diagnose/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function detail2(params: string) { + return request({ + url: '/dict/diagnose/info/detail2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function addList(data:object){ + return request({ + url: '/patient/diagnose/history/addList', + method: 'post', + data + }) +} +export function updateList(data:object){ + return request({ + url: '/patient/diagnose/history/update', + method: 'post', + data + }) +} +export function listDiagnoses(params: string){ + return request({ + url: '/patient/diagnose/history/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function deletePId(params: string) { + return request({ + url: '/patient/diagnose/history/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + +/** + * 获取患者诊断 + * @param params + * @param string + * @param patientCode + * @returns + */ +export function getDiagnoseByPatientCode(params: { patientCode: string }): AxiosPromise { + return request({ + url: '/patient/diagnose/history/getDiagnoseByPatientCode', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function findByQueryCode(params:object) { + return request({ + url: '/his/diagnose/sync/findByQueryCode', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} \ No newline at end of file diff --git a/src/api/dict_his_mapper_controller/index.ts b/src/api/dict_his_mapper_controller/index.ts new file mode 100644 index 0000000..68e7cc9 --- /dev/null +++ b/src/api/dict_his_mapper_controller/index.ts @@ -0,0 +1,37 @@ +import request from '/@/utils/request'; +import { IHisQuery, Ihis } from "./type"; + + + +/** + * 获取当前分类下所有的HIS对照API: + * @param data + * @returns + */ +export function apiGetHisData(data: IHisQuery) { + return request({ + url: "/dict/his/mapper/listMappers", + method: "post", + // headers: { + // 'Content-Type': 'application/x-www-form-urlencoded' + // }, + data + }); +}; + + +/** + * 保存对照 + * @param data + * @returns + */ +export function apiSaveHis(data: Ihis) { + return request({ + url: "/dict/his/mapper/save", + method: "post", + headers: { + "Content-Type": "application/json" + }, + data + }); +}; \ No newline at end of file diff --git a/src/api/dict_his_mapper_controller/type.ts b/src/api/dict_his_mapper_controller/type.ts new file mode 100644 index 0000000..a3b4586 --- /dev/null +++ b/src/api/dict_his_mapper_controller/type.ts @@ -0,0 +1,24 @@ +export interface IHisQuery { + clientCode: string; // 客户编号 + dictType: string; // 字典类型, 例如给药途径就是gytj +}; + + +type TTime = Date | string | null; + + +export interface Ihis { + clientCode: string, // 客户编号 + code: string, // code + createTime: TTime, // 创建日期 + createUser: number, // 创建人 + deletedTime: TTime, // 删除日期 + hisDictName: string, // his的名字 + id: number, + isDeleted: number, // 是否删除 + remark: string, // 备注 + systemDictName: string, // 系统的名字 + systemDictType: string, // 系统中的字典类型 + updateTime: TTime, // 更新时间 + updateUser: number // 更新人 +} \ No newline at end of file diff --git a/src/api/disease_course_template/index.ts b/src/api/disease_course_template/index.ts new file mode 100644 index 0000000..9038898 --- /dev/null +++ b/src/api/disease_course_template/index.ts @@ -0,0 +1,35 @@ +import request from '/@/utils/request'; + +export function addDiseaseTemplate(data: object) { + return request({ + url: '/med/progress/template/add', + method: 'post', + data + }) +} +export function getTemplateList(data: object) { + data.ordercondition='sort_order' + return request({ + url: '/med/progress/template/list', + method: 'post', + params:data + }) +} +// 编辑医嘱 +export function updateTemplate(data: object) { + return request({ + url: '/med/progress/template/update', + method: 'post', + data + }) +} +// 删除模板名称 +export function deleteTemplate(id: number) { + return request({ + url: '/med/progress/template/delete', + method: 'post', + params: { + id + } + }) +} diff --git a/src/api/doc/doc_patient_template.ts b/src/api/doc/doc_patient_template.ts new file mode 100644 index 0000000..2d4278b --- /dev/null +++ b/src/api/doc/doc_patient_template.ts @@ -0,0 +1,63 @@ +import request from '/@/utils/request'; + +export function Add(params: Object) { + return request({ + url: '/doc/patient/template/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/doc/patient/template/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/doc/patient/template/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/doc/patient/template/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function getpatient_signed_doc(params: Object) { + return request({ + url: '/patient/signed/doc/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function patient_signed_doc_add(params: Object) { + return request({ + url: '/patient/signed/doc/add', + method: 'post', + data: params, + }); +} +export function deleteSigned(params: string) { + return request({ + url: '/patient/signed/doc/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} \ No newline at end of file diff --git a/src/api/doc/doc_template.ts b/src/api/doc/doc_template.ts new file mode 100644 index 0000000..3d41be1 --- /dev/null +++ b/src/api/doc/doc_template.ts @@ -0,0 +1,36 @@ +import request from '/@/utils/request'; + +export function Add(params: string) { + return request({ + url: '/doc/template/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/doc/template/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/doc/template/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/doc/template/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} diff --git a/src/api/drug_order_operation_record/index.ts b/src/api/drug_order_operation_record/index.ts new file mode 100644 index 0000000..455f7b7 --- /dev/null +++ b/src/api/drug_order_operation_record/index.ts @@ -0,0 +1,121 @@ +import request from '/@/utils/request'; +import type { AxiosPromise } from 'axios'; +import type { IDrugOrderOperationRecord, IDrugOrderOperationRecordList, IDrugOrderOperationRecordParams } from './types/index.type'; + +/** + * 新增长期医嘱修改记录 + * @param data + * @returns + */ +export function drugOrderOperationRecordAddApi(data: Partial) { + return request({ + url: '/drug/order/operation/record/add', + method: 'post', + data + }) +} + +/** + * 批量新增长期医嘱修改记录 + * @param data + * @returns + */ +export function drugOrderOperationRecordAddListApi(data: Partial[]) { + return request({ + url: '/drug/order/operation/record/addList', + method: 'post', + data + }) +} + +/** + * 删除长期医嘱修改记录 + * @param data + * @returns + */ +export function drugOrderOperationRecordDelApi(id: number) { + return request({ + url: '/drug/order/operation/record/delete', + method: 'post', + data: { id } + }) +} + +/** + * 批量删除长期医嘱修改记录 + * @param data + * @returns + */ +export function drugOrderOperationRecordDelAllApi(ids: string) { + return request({ + url: '/drug/order/operation/record/deleteAll', + method: 'post', + data: { ids } + }) +} + +/** + * 根据id获取长期医嘱修改记录详情 + * @param data + * @returns + */ +export function drugOrderOperationRecordDetailByIdApi(id: number) :AxiosPromise { + return request({ + url: '/drug/order/operation/record/dateil', + method: 'post', + params: { id } + }) +} + +/** + * 根据code获取长期医嘱修改记录详情 + * @param data + * @returns + */ +export function drugOrderOperationRecordDetailByCodeApi(code: string) :AxiosPromise { + return request({ + url: '/drug/order/operation/record/dateil2', + method: 'post', + params: { code } + }) +} + +/** + * 获取长期医嘱修改记录列表 + * @param data + * @returns + */ +export function drugOrderOperationRecordListApi(params: IDrugOrderOperationRecordParams): AxiosPromise { + return request({ + url: '/drug/order/operation/record/list', + method: 'post', + params, + }) +} + + +/** + * 保存长期医嘱修改记录 + * @param data + * @returns + */ +export function drugOrderOperationRecordSaveApi(data: Partial) { + return request({ + url: '/drug/order/operation/record/save', + method: 'post', + data, + }) +} + +/** + * 更新长期医嘱修改记录 + * @param data + * @returns + */ +export function drugOrderOperationRecordUpdateApi(data: Partial) { + return request({ + url: '/drug/order/operation/record/update', + method: 'post', + data, + }) +} \ No newline at end of file diff --git a/src/api/drug_order_operation_record/types/index.type.ts b/src/api/drug_order_operation_record/types/index.type.ts new file mode 100644 index 0000000..2e23065 --- /dev/null +++ b/src/api/drug_order_operation_record/types/index.type.ts @@ -0,0 +1,48 @@ +export enum EDrugOrderAdjustType { + 开始时间 = 0, + 开单医生 = 1, + 医嘱名称 = 2, + 单次用量 = 3, + 开药数量 = 4, + 给药途径 = 5, + 执行频率 = 6, + 备注 = 7, + 是否使用 = 8, // 1使用0停用 + 是否删除 = 9, // 1是 +} + +export interface IDrugOrderOperationRecord { + adjusUser: string; + adjusUserName: string; + adjustTime: string; + adjustType: 0; + clientCode: string; + code: string; + createTime: string; + createUser: number | null; + deletedTime: string; + drugOrderCode: string; + drugOrderName: string; + id: number; + isDeleted: number; + newValue: string; + oldValue: string; + patientCode: string; + remark: string; + updateTime: string; + updateUser: number | null; +} + + +export interface IDrugOrderOperationRecordList { + list: IDrugOrderOperationRecord[]; + total: number; + [key: string]: any; +} + +export interface IDrugOrderOperationRecordParams { + page: number; + size: number; + wherecondition: string; + ordercondition: string; +} \ No newline at end of file diff --git a/src/api/fee/drug_templete.ts b/src/api/fee/drug_templete.ts new file mode 100644 index 0000000..a4b7c61 --- /dev/null +++ b/src/api/fee/drug_templete.ts @@ -0,0 +1,114 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { IDrugTemplate, IDrugTemplateListRes, IDrugTemplateGetDurgDescsParams } from './types'; +import type { ICommonListParams } from '../common.type'; + + +/** + * 新增处置模板 + * @param data + * @returns + */ +export function drugTemplateAddApi(data: IDrugTemplate) { + return request({ + url: 'drug/template/add', + method: 'post', + data + }) +} + + +/** + * 更新处置模板 + * @param data + * @returns + */ +export function drugTemplateUpdateApi(data: IDrugTemplate) { + return request({ + url: 'drug/template/update', + method: 'post', + data + }) +} + + +/** + * 保存处置模板 + * @param data + * @returns + */ +export function drugTemplateSaveApi(data: IDrugTemplate) { + return request({ + url: 'drug/template/save', + method: 'post', + data + }) +} + +/** + * 根据code获取处置模板详情 + * @param code + * @returns + */ +export function drugTemplateDetailByCodeApi(code: string) { + return request({ + url: 'drug/template/detail2', + method: 'post', + params: { code } + }) +} + + +/** + * 根据id获取处置模板详情 + * @param id + * @returns + */ +export function drugTemplateDetailByIdApi(id: number) { + return request({ + url: 'drug/template/detail', + method: 'post', + params: { id } + }) +} + +/** + * 获取处置模板列表 + * @param params + * @returns + */ +export function drugTemplateListApi(params: ICommonListParams) :AxiosPromise { + return request({ + url: 'drug/template/list', + method: 'post', + params + }) +} + + +/** + * 删除处置模板 + * @param id + * @returns + */ +export function drugTemplateDelApi(id: number) { + return request({ + url: 'drug/template/delete', + method: 'post', + params: { id } + }) +} + + +/** + * 获取患者指定日期默认处置 + * @param params + * @returns + */ +export function drugTemplateGetDurgDescsApi(params: IDrugTemplateGetDurgDescsParams) :AxiosPromise { + return request({ + url: 'drug/template/getDurgDescs', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/fee/group.ts b/src/api/fee/group.ts new file mode 100644 index 0000000..4cc108d --- /dev/null +++ b/src/api/fee/group.ts @@ -0,0 +1,39 @@ +import request from '/@/utils/request'; + +export function Add(params: object) { + return request({ + url: '/fee/service/group/info/add', + method: 'post', + data: params, + }); +} +export function update(params: object) { + return request({ + url: '/fee/service/group/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/fee/service/group/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/fee/service/group/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + + diff --git a/src/api/fee/his_pharmacy.ts b/src/api/fee/his_pharmacy.ts new file mode 100644 index 0000000..a0c3212 --- /dev/null +++ b/src/api/fee/his_pharmacy.ts @@ -0,0 +1,28 @@ +import request from '/@/utils/request'; +import type { ISaveDefaultHisPharmacistParams } from './types'; + +/** + * 设置默认医师 + * @param data + * @returns + */ +export function saveDefaultHisPharmacistApi(params: ISaveDefaultHisPharmacistParams) { + return request({ + url: '/his/pharmacy/saveDefaultHisPharmacist', + method: 'post', + params + }) +} + +/** + * 获取默认医师 + * @param params + * @returns + */ +export function getDefaultHisPharmacistApi(params: { clientCode: string; }) { + return request({ + url: '/his/pharmacy/loadDefaultPharmacist', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/fee/index.ts b/src/api/fee/index.ts new file mode 100644 index 0000000..c4f8ef2 --- /dev/null +++ b/src/api/fee/index.ts @@ -0,0 +1,265 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { ListHistoryApiParams, BillInfoListReceipts1Params, BillInfoListReceipts23Params, IGetConsumeInfoParams, IGetConsumeInfo, IPatientSelfInspectionParams } from './types'; + +export function Add(params: object) { + return request({ + url: '/fee/service/info/add', + method: 'post', + data: params, + }); +} +export function update(params: object) { + return request({ + url: '/fee/service/info/update', + method: 'post', + data: params, + }); +} +export function getOutputInfoList(params: object) { + return request({ + url: '/patient/bill/info/getOutputInfoList', + method: 'post', + responseType: "blob", + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/fee/service/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/fee/service/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function listDrugs2(params: string) { + return request({ + url: '/inventory/item/detail/info/listDrugs2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function listStuffs(params: string) { + return request({ + url: '/inventory/item/detail/info/listStuffs', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function reBuildPatientBill(params: object) { + return request({ + url: '/patient/bill/info/reBuildPatientBill', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function listItems(params: object) { + return request({ + url: '/fee/service/group/detail/info/listItems', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} + + +/** + * 获取门诊记录数据 + * @param params + * @returns + */ +export function listHistoryApi(params: ListHistoryApiParams) { + return request({ + url: '/patient/bill/set/info/listHistory', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +/** + * 获取处方详情 + * @param params + * @returns + */ +export function PrescriptionDetailsApi(params: object) { + return request({ + url: '/patient/bill/set/info/listHistoryDetails', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 查询药与注射液的处方明细(收费清单打印用的) + * @param params + * @returns + */ +export function billInfoListReceipts1Api(params: BillInfoListReceipts1Params) { + return request({ + url: '/patient/bill/info/listReceipts1', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 根据处方编号,查询治疗项目(收费清单打印用的) + * @param patientCode + * @returns + */ +export function billInfoListReceipts2Api(params: BillInfoListReceipts23Params) { + return request({ + url: '/patient/bill/info/listReceipts2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 根据处方编号,查询检验项目(收费清单打印用的) + * @param patientCode + * @returns + */ +export function billInfoListReceipts3Api(params: BillInfoListReceipts23Params) { + return request({ + url: '/patient/bill/info/listReceipts3', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 剩余库存低于库存预警值 + * @param clientCode + * @returns + */ +export function listHisKcjcApi(clientCode: string) { + return request({ + url: '/inventory/item/detail/info/listHisKcjc', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { clientCode } + }) +} + +/** + * 有效期低于预警天数 + * @param clientCode + * @returns + */ +export function listHisyxqjcApi(clientCode: string) { + return request({ + url: '/inventory/item/detail/info/listHisyxqjc', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { clientCode } + }) +} + +/** + * 患者复诊记录自查api + * @param params + * @returns + */ +export function patientSelfInspectionApi(params: IPatientSelfInspectionParams) { + return request({ + url: '/revisit/record/patientSelfInspection', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 取消处方同步 + * @param id + * @returns + */ +export function cancelSyncFeeApi(id: number) { + return request({ + url: '/patient/bill/set/info/cancelSync', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { id } + }) +} + +/** + * 获取患者当月费用情况 + * @param params + * @returns + */ +export function getConsumeInfoApi(params: IGetConsumeInfoParams): AxiosPromise { + return request({ + url: '/patient/bill/set/info/getConsumeInfo', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 患者复诊记录自查api + * @param params + * @returns + */ +// export function patientSelfInspectionApi(params: IPatientSelfInspectionParams) { +// return request({ +// url: '/revisit/record/patientSelfInspection', +// method: 'post', +// headers: { +// 'Content-Type': 'application/x-www-form-urlencoded' +// }, +// params +// }) +// } \ No newline at end of file diff --git a/src/api/fee/revisit_record.ts b/src/api/fee/revisit_record.ts new file mode 100644 index 0000000..f1e73cd --- /dev/null +++ b/src/api/fee/revisit_record.ts @@ -0,0 +1,58 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { IRevisitrecordSave, IRevisitrecordListRes, IRevisitrecord } from './types'; +import type { ICommonListParams } from '../common.type'; + + +/** + * 保存复诊记录 + * @param data + * @returns + */ +export function revisitrRecordSaveApi(data: IRevisitrecordSave) { + return request({ + url: '/revisit/record/save', + method: 'post', + data, + }); +} + + +/** + * 获取复诊记录列表 + * @param params + * @returns + */ +export function revisitrRecordListApi(params: ICommonListParams) :AxiosPromise { + return request({ + url: '/revisit/record/list', + method: 'post', + params, + }); +} + +/** + * 删除复诊记录 + * @param id + * @returns + */ +export function revisitrRecordDelApi(id: number) { + return request({ + url: '/revisit/record/delete', + method: 'post', + params: { id } + }) +} + +/** + * 根据code获取复诊记录详情 + * @param code + * @returns + */ +export function revisitrRecordDetailByCodeApi(code: string) :AxiosPromise { + return request({ + url: '/revisit/record/detail2', + method: 'post', + params: { code } + }) +} \ No newline at end of file diff --git a/src/api/fee/revisit_record_template.ts b/src/api/fee/revisit_record_template.ts new file mode 100644 index 0000000..365397a --- /dev/null +++ b/src/api/fee/revisit_record_template.ts @@ -0,0 +1,58 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { IRevisitrRecordTemp, IRevisitrRecordTempListRes } from './types'; +import type { ICommonListParams } from '../common.type'; + + +/** + * 保存病情描述模板 + * @param data + * @returns + */ +export function revisitrRecordTempSaveApi(data: IRevisitrRecordTemp) { + return request({ + url: '/revisit/record/template/save', + method: 'post', + data, + }); +} + +/** + * 获取病情描述模板列表 + * @param parmas + * @returns + */ +export function revisitrRecordTempListApi(params: ICommonListParams): AxiosPromise { + return request({ + url: '/revisit/record/template/list', + method: 'post', + params + }); +} + +/** + * 删除病情描述模板 + * @param id + * @returns + */ +export function revisitrRecordTempDelApi(id: number) { + return request({ + url: '/revisit/record/template/delete', + method: 'post', + params: { id } + }); +} + + +/** + * 根据code获取病情描述模板详情 + * @param code + * @returns + */ +export function revisitrRecordTempDetailByCodeApi(code: string) :AxiosPromise { + return request({ + url: '/revisit/record/template/detail2', + method: 'post', + params: { code } + }) +} diff --git a/src/api/fee/types.ts b/src/api/fee/types.ts new file mode 100644 index 0000000..c59a3f3 --- /dev/null +++ b/src/api/fee/types.ts @@ -0,0 +1,200 @@ +import type { IComminList } from '../common.type'; +import type { IPatientInfo } from '../HemodiPatients/types'; +export interface ListHistoryApiParams { + clientCode: string; + patQueryValue: string; + date1: string; + date2: string; + page: number; + size: number; +} + +export interface BillInfoListReceipts1Params { + patientCode: string; + date: string; + drugType: 0 | 1; +} + +export interface BillInfoListReceipts23Params { + patientCode: string; + date: string; +} + +export interface ISaveDefaultHisPharmacistParams { + clientCode: string; + pharmacist: string; +} + +// export interface IRevisitrecord { +// id: number; +// code: string; +// clientCode: string; +// patientCode: string; +// diagnosisTime: string | Date; +// diagnosticDoctor: string; +// diseaseDescription: string; +// disposeOf: string; +// clinicDiagnosis: string; +// createTime: string | null; +// createUser: number | null, +// deletedTime: string | null; +// isDeleted: number; +// remark: string; +// updateTime: string | null +// updateUser: number | null; +// patientInfo: IPatientInfo; +// } + +export interface IGetConsumeInfoParams { + date1: string; + date2: string; + patCode: string; +} + + +export interface IGetConsumeInfo { + patName: string; + patCode: string; + date1: string; + date2: string; + detailInfos: IGetConsumeInfoDeatil[]; + // 当月总费用: number | null; + // 当月药物费用: number | null; + // 当月限制用药费用: number | null; +} + +export interface IGetConsumeInfoDeatil { + 当月总费用: number; + 当月药物费用: number; + 当月限制用药费用: number; + 报销方式名称: string; + 报销方式编号: string; +} + + +export interface IRevisitrecord { + id: number; + code: string; + clientCode: string; + patientCode: string; + diagnosisTime: string | Date; + diagnosticDoctor: string; + diseaseDescription: string; + disposeOf: string; + clinicDiagnosis: string; + createTime: string | null; + createUser: number | null, + deletedTime: string | null; + isDeleted: number; + remark: string; + updateTime: string | null + updateUser: number | null; + patientInfo: IPatientInfo; +} + + +export interface IRevisitrecordSave extends Omit { + createTime?: string | null; + createUser?: number | null, + deletedTime?: string | null; + isDeleted?: number; + remark?: string; + updateTime?: string | null + updateUser?: number | null; + patientInfo?: IPatientInfo; +} + + +export interface IRevisitrecordListRes extends Omit { + list: IRevisitrecord[]; +} + + +export interface IRevisitrRecordTemp { + clientCode: string; + code: string; + createTime: string | null; + createUser: number | null, + deletedTime: string | null; + id: number, + isDeleted: number, + remark: string, + sortOrder: number, + templateBody: string; + patientCode: string; + updateTime: string | null; + updateUser: number | null; +} + +export interface IRevisitrRecordTempListRes extends Omit { + list: IRevisitrRecordTemp[]; +} + + + +export interface IDrugTemplate { + id: number; + code: string + clientCode: string; + drugCode: string; + drugName: string; + remark: string; + createTime: string; + createUser: number; + updateTime: string; + updateUser: number; + isDeleted: number; + deletedTime: string; + sortOrder: number; + drugBody: string; +} + + + +export interface IDrugTemplateListRes extends Omit { + list: IDrugTemplate[]; +} + + + +export interface IDrugTemplateGetDurgDescsParams { + patientCode: string; + queryDate: string; +} + +export interface IGetConsumeInfoParams { + date1: string; + date2: string; + patCode: string; +} + + +export interface IGetConsumeInfo { + patName: string; + patCode: string; + date1: string; + date2: string; + detailInfos: IGetConsumeInfoDeatil[]; + // 当月总费用: number | null; + // 当月药物费用: number | null; + // 当月限制用药费用: number | null; +} + +export interface IGetConsumeInfoDeatil { + 当月总费用: number; + 当月药物费用: number; + 当月限制用药费用: number; + 报销方式名称: string; + 报销方式编号: string; + 当月医保限额上限: number; +} + + + +export interface IPatientSelfInspectionParams { + startTime: string; + endTime: string; + clientCode: string; + timeSlot: string; // 0上午、1下午、2晚上、-1全部 + patQueryValue: string; // 患者模糊查询编号(拼音、名称、患者Code) +} \ No newline at end of file diff --git a/src/api/fee_yibao_limit_config/index.ts b/src/api/fee_yibao_limit_config/index.ts new file mode 100644 index 0000000..856109d --- /dev/null +++ b/src/api/fee_yibao_limit_config/index.ts @@ -0,0 +1,39 @@ +import request from '/@/utils/request'; + +export function Add(params: object) { + return request({ + url: '/fee/yibao/limit/config/add', + method: 'post', + data: params, + }); +} +export function update(params: object) { + return request({ + url: '/fee/yibao/limit/config/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/fee/yibao/limit/config/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/fee/yibao/limit/config/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + + diff --git a/src/api/health_education/index.ts b/src/api/health_education/index.ts new file mode 100644 index 0000000..efee365 --- /dev/null +++ b/src/api/health_education/index.ts @@ -0,0 +1,38 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { ICommonListParams } from '../common.type'; +import type { IMedEducateTempList } from './types/index.type'; + +export function addHealthTemplate(data: object) { + return request({ + url: '/med/educate/template/add', + method: 'post', + data + }) +} +export function getHealthTemplateList(data: ICommonListParams): AxiosPromise { + data.ordercondition='sort_order' + return request({ + url: '/med/educate/template/list', + method: 'post', + params:data + }) +} +// 编辑医嘱 +export function updateHealthTemplate(data: object) { + return request({ + url: '/med/educate/template/update', + method: 'post', + data + }) +} +// 删除模板名称 +export function deleteHealthTemplate(id: number) { + return request({ + url: '/med/educate/template/delete', + method: 'post', + params: { + id + } + }) +} diff --git a/src/api/health_education/types/index.type.ts b/src/api/health_education/types/index.type.ts new file mode 100644 index 0000000..c1b83a6 --- /dev/null +++ b/src/api/health_education/types/index.type.ts @@ -0,0 +1,22 @@ +import type { IComminList } from '../../common.type'; + +export interface IMedEducateTemp { + clientCode: string; + code: string; + createTime: string; + createUser: number; + deletedTime: any; + id: number; + isDeleted: number; + ptBody: string; + ptName: string; + remark: string; + sortOrder: number; + updateTime: string; + updateUser: number; +} + + +export interface IMedEducateTempList extends Omit { + list: IMedEducateTemp[]; +} \ No newline at end of file diff --git a/src/api/hemo_med_scheme/index.ts b/src/api/hemo_med_scheme/index.ts new file mode 100644 index 0000000..ca72b4f --- /dev/null +++ b/src/api/hemo_med_scheme/index.ts @@ -0,0 +1,48 @@ +import request from '/@/utils/request'; +import type { IListPatsParams, IListPats } from './types/index.type'; +import { AxiosPromise } from 'axios'; + + +export function getScheme(params: string) { + return request({ + url: '/hemo/med/scheme/getScheme', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function listSchemes(params: string) { + return request({ + url: '/hemo/med/scheme/listSchemes', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function save(data:object){ + return request({ + url: '/hemo/med/scheme/save', + method: 'post', + data + }) +} + +/** + * 获取排班表患者的API: + * @param data + * @returns + */ +export function listPatsApi(params: IListPatsParams) :AxiosPromise { + return request({ + url: '/hemo/med/schedule/listPats', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} \ No newline at end of file diff --git a/src/api/hemo_med_scheme/types/index.type.ts b/src/api/hemo_med_scheme/types/index.type.ts new file mode 100644 index 0000000..9cee08b --- /dev/null +++ b/src/api/hemo_med_scheme/types/index.type.ts @@ -0,0 +1,17 @@ +export interface IListPatsParams { + clientCode: string; // 客户编号 + deviceGroups: string; // 设备分区编号列表(以逗号分割) + year: string; // 年份(不填则默认当年) + weekNo: string; // 周数 (不填则默认当周) + dayList: string; // 周一至周日列表(不填则默认周一到周日, 以逗号分割) + timeSlots: string; // 时段列表(以逗号分割, 不填则查询全天, 0,1,2) +} + +export interface IListPats { + 分区名称: string; + 床号: string; + 患者姓名: string; + 患者编号: string; + 排班日期: string; + 时段: number; +} \ No newline at end of file diff --git a/src/api/inventory/agent.ts b/src/api/inventory/agent.ts new file mode 100644 index 0000000..8fc0a6f --- /dev/null +++ b/src/api/inventory/agent.ts @@ -0,0 +1,33 @@ +import request from '/@/utils/request'; + +export function Add(params: string) { + return request({ + url: '/inventory/agent/info/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/inventory/agent/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/inventory/agent/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/inventory/agent/info/list', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/inventory/factory.ts b/src/api/inventory/factory.ts new file mode 100644 index 0000000..08d1c85 --- /dev/null +++ b/src/api/inventory/factory.ts @@ -0,0 +1,33 @@ +import request from '/@/utils/request'; + +export function Add(params: string) { + return request({ + url: '/inventory/factory/info/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/inventory/factory/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/inventory/factory/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/inventory/factory/info/list', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/inventory/inventory2.ts b/src/api/inventory/inventory2.ts new file mode 100644 index 0000000..5c48a42 --- /dev/null +++ b/src/api/inventory/inventory2.ts @@ -0,0 +1,176 @@ +import request from '/@/utils/request'; +import type { DiffDetails, GetDiffDetailsParams, ListOperate2DetailsParams, ListInandOutDetailsParams, ListInandOutDetailsReponse, ListReadyRowsParams, ListOutStockGroupByPatOrItemParams } from './types'; +import { AxiosPromise } from 'axios'; + +export function Add(params: string) { + return request({ + url: '/inventory2/info/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/inventory2/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/inventory2/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/inventory2/info/list', + method: 'post', + params + }) +} +export function listWithItem(params: object) { + return request({ + url: '/inventory2/operate/listWithItem', + method: 'post', + data:params + }) +} +export function listWithStorageSum2(params: object) { + return request({ + url: '/inventory/item/detail/info/listWithStorageSum2', + method: 'post', + params + }) +} +export function listWithStorageSum(params: object) { + return request({ + url: '/inventory/item/detail/info/listWithStorageSum', + method: 'post', + params + }) +} +export function save(params: object) { + return request({ + url: '/inventory2/operate/save', + method: 'post', + data:params, + }); +} +export function listItems(params: object) { + return request({ + url: '/inventory2/check/listItems', + method: 'post', + data:params + }) +} +export function checkSave(params: object) { + return request({ + url: '/inventory2/check/batchSave', + method: 'post', + data:params + }) +} +export function checkList(params: object) { + return request({ + url: '/inventory2/check/list', + method: 'post', + params + }) +} +export function listWithOperateType(params: object) { + return request({ + url: '/inventory2/operate/listWithOperateType', + method: 'post', + data:params, + }); +} +export function listRefundRows(params: object) { + return request({ + url: '/inventory2/operate/listRefundRows', + method: 'post', + params, + }); +} + + +/** + * 获取进销存数据列表 + * @param params + * @returns + */ +export function listInandOutDetailsApi(params: ListInandOutDetailsParams) :AxiosPromise { + return request({ + url: '/inventory/item/detail/info/listInandOutDetails', + method: 'post', + params + }) +} + + +/** + * 患者透析耗材api + * @param params + * @returns + */ +export function listReadyRowsApi(data: ListReadyRowsParams) { + return request({ + url: '/patient/hemo/med/record/listReadyRows', + method: 'post', + data + }) +} + + +/** + * 透析耗材统计 + * @param params + * @returns + */ +export function listOutStockGroupByPatOrItemApi(params: ListOutStockGroupByPatOrItemParams) { + return request({ + url: '/inventory2/operate/listOutStockGroupByPatOrItem', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 显示库存操作明细列表 + * @param params + * @returns + */ +export function listOperate2DetailsApi(params: ListOperate2DetailsParams) { + return request({ + url: '/inventory/item/detail/info/listOperate2Details', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 获取亏盈详情 + * @param params + * @returns + */ +export function getDiffDetailsApi(params: GetDiffDetailsParams) :AxiosPromise<{ list: DiffDetails[], total: number; [key: string]: any;}> { + return request({ + url: '/inventory2/check/getDiffDetails', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} \ No newline at end of file diff --git a/src/api/inventory/itemDict.ts b/src/api/inventory/itemDict.ts new file mode 100644 index 0000000..98d557e --- /dev/null +++ b/src/api/inventory/itemDict.ts @@ -0,0 +1,193 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { IInventoryListByTypesParams, ListNearExpireItemsParams, ListNearExpireItemsReponse, IInventoryItemUpdateManufacturerDealerDictParams } from './types'; + +export function Add(params: object) { + return request({ + url: '/inventory/item/detail/info/add', + method: 'post', + data: params, + }); +} +export function update(params: object) { + return request({ + url: '/inventory/item/detail/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/inventory/item/detail/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/inventory/item/detail/info/list', + method: 'post', + params + }) +} +export function listKnj(params: string) { + return request({ + url: '/inventory/item/detail/info/listKnj', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + method: 'post', + data: params, + }) +} +export function listItemWithSum(params: object) { + return request({ + url: '/inventory/check/listItemWithSum', + method: 'post', + data:params + }) +} +export function listNames(params: object) { + return request({ + url: '/inventory/item/detail/info/listNames', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} + + +/** + * 获取过期检测数据 + * @param params + * @returns + */ +export function listNearExpireItemsApi(params: ListNearExpireItemsParams): AxiosPromise { + return request({ + url: '/inventory/item/detail/info/listNearExpireItems', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: params + }) +} + +/** + * 获取库存监测数据 + * @param params + * @returns + */ +export function listInventoryMonitoringApi(params: ListNearExpireItemsParams) { + return request({ + url: '/inventory/item/detail/info/listNearOutStockItems', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: params + }) +} + + +/** + * 厂商经销商字典手动快速录入 + * @param data + * @returns + */ +export function inventoryItemUpdateManufacturerDealerDictApi(params: IInventoryItemUpdateManufacturerDealerDictParams) { + return request({ + url: '/inventory/item/detail/info/updateManufacturerDealerDict', + method: 'post', + params + }) +} + + +/** + * 获取库存字典 + * @param params + * @returns + */ +export function inventoryListByTypesApi(params: IInventoryListByTypesParams) { + return request({ + url: '/inventory/item/detail/info/listByTypes', + method: 'post', + params + }) +} + +/** + * 获自备药字典 + * @param params + * @returns + */ +export function listByItemName(params: object) { + return request({ + url: '/inventory/item/detail/info/listByItemName', + method: 'post', + params + }) +} + +/** + * 获自自备药列表 + * @param params + * @returns + */ +export function listPage(params: object) { + return request({ + url: '/patient/inventory/item/detail/info/listPage', + method: 'post', + params + }) +} +export function patientAdd(params: object) { + return request({ + url: '/patient/inventory/item/detail/info/add', + method: 'post', + data: params, + }); +} +export function patientUpdate(params: object) { + return request({ + url: '/patient/inventory/item/detail/info/update', + method: 'post', + data: params, + }); +} +export function patientDeleteId(params: string) { + return request({ + url: '/patient/inventory/item/detail/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function listUpdateLog(params: object) { + return request({ + url: '/patient/inventory/item/detail/info/listUpdateLog', + method: 'post', + params:params + }) +} + +/** + * 查询药品及收费项目接口 + * @param params + * @returns + */ +export function queryDrugAndFeeTeamsApi(params: { page: number; size: number; clientCode: string; queryCondition?: string }) { + return request({ + url: '/fee/service/group/info/queryDrugAndFeeTeams', + method: 'post', + params, + }) +} \ No newline at end of file diff --git a/src/api/inventory/operate.ts b/src/api/inventory/operate.ts new file mode 100644 index 0000000..c50ea73 --- /dev/null +++ b/src/api/inventory/operate.ts @@ -0,0 +1,155 @@ +import request from '/@/utils/request'; +import type { IInventoryCheckQueryParams } from './types'; + +// 添加 +export function addInventoryOperate(params: object) { + return request({ + url: '/inventory/operate/add', + method: 'post', + data: params, + }); +} +// 详情 +export function getInventoryDetail(id: string) { + return request({ + url: '/inventory/operate/item/detail/detail', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + id + } + }); +} +export function listDetails(code: string) { + return request({ + url: '/inventory/operate/listDetails', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + code + } + }); +} +// 出入库查询记录 +export function getInventoryList(params: object) { + return request({ + url: '/inventory/operate/item/detail/queryList', + method: 'post', + params + }) +} +// 出入库明细查询 +export function getInventoryDetailList(params: object) { + return request({ + url: '/inventory/operate/item/detail/list', + method: 'post', + params + }) +} +// 退货 +export function back(params: string) { + return request({ + url: '/inventory/operate/save', + method: 'post', + data: params, + }); +} +// 列表 +export function getInventory(params: object) { + return request({ + url: '/inventory/operate/list', + method: 'post', + params + }) +} +// 列表 +export function getInventoryNew(params: object) { + return request({ + url: '/inventory/operate/queryInventoryOperate', + method: 'post', + data: params + }) +} + +export function listOperates(params: object) { + return request({ + url: '/inventory/operate/listOperates', + method: 'post', + params + }) +} +// 根据规格名称获取库存数量 +export function getInventoryCount(code: string, clientCode:string) { + return request({ + url: '/inventory/operate/getItemCountInStorage', + method: 'post', + params: { + inventoryItemDetailCode: code, + clientCode: clientCode + } + }) +} +// 根据规格名称出库退库获取库存数量 +export function listLots(code: string, clientCode:string) { + return request({ + url: '/inventory/operate/listLots', + method: 'post', + params: { + itemCode: code, + clientCode: clientCode + } + }) +} +// 添加库存盘点 +export function addInventoryCheck(params:object) { + return request({ + url: '/inventory/check/add', + method: 'post', + data: params + }) +} +// 盘点记录列表 +export function getInventoryCheckList(params: object) { + return request({ + url: '/inventory/check/list', + method: 'post', + params + }) +} +// 库存列表 +export function getInventoryStorageList(params: object) { + return request({ + url: '/inventory/item/detail/info/listWithStorageSum', + method: 'post', + params + }) +} +// 添加库存盘点 +export function batchSave(params:object) { + return request({ + url: '/inventory/check/batchSave', + method: 'post', + data: params + }) +} + + +/** + * 一级记录2 + * @param params + * @returns + */ +export function inventoryCheckQueryApi(params: IInventoryCheckQueryParams) { + return request({ + url: '/inventory/check/inventoryCheckQuery', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} \ No newline at end of file diff --git a/src/api/inventory/typeDict.ts b/src/api/inventory/typeDict.ts new file mode 100644 index 0000000..4961ccb --- /dev/null +++ b/src/api/inventory/typeDict.ts @@ -0,0 +1,69 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { ItemType, ICopyFromParams } from './types'; + +export function Add(params: string) { + return request({ + url: '/inventory/item/type/info/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/inventory/item/type/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/inventory/item/type/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object): AxiosPromise<{ list: ItemType[] }> { + return request({ + url: '/inventory/item/type/info/list', + method: 'post', + params + }) +} + + +/** + * 更新库存字典类型显示状态 + * @param params + * @returns + */ +export function updateShowStateApi(params: { clientCode: string; typeCode: string; showState: 0 | 1}) { + return request({ + url: '/inventory/item/type/info/updateShowState', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: params + }) +} + + +/** + * 从其它医院导入物品至新医院 + * @param params + * @returns + */ +export function copyFromApi(params: ICopyFromParams) { + return request({ + url: '/inventory/item/detail/info/copyFrom', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: params + }) +} \ No newline at end of file diff --git a/src/api/inventory/types.ts b/src/api/inventory/types.ts new file mode 100644 index 0000000..c6de22c --- /dev/null +++ b/src/api/inventory/types.ts @@ -0,0 +1,175 @@ +export interface ListNearExpireItemsParams { + clientCode: string; // 客户编号 + isContainsStuff: 0 | 1; // 是否包含耗材 , 默认0 + itemTypeCode: string; // 库存分类类型编号 + itemName: string; // 物品名称(可模糊查询) + page: number; + size: number; +} + +export interface ItemType { + clientCode: string; + code: string; + createTime: string; + createUser: any; + deletedTime: any; + id: number; + isDeleted: number; + isEditable: number; + isShow: boolean; + remark: string; + sortOrder: number; + typeName: string; + updateTime: string; + updateUser: any; +} + +export interface ListNearExpireItemsItem { + itemCode: string; + 供货商: string; + 医保编码: string; + 厂家: string; + 批号: string; + 有效日期: string; + 有效期: number; + 药品名称: string; + 药品编号: string; + 规格: string; + 进货价: string; + 零售价: string; +} + +export interface ListNearExpireItemsReponse { + list: ListNearExpireItemsItem[]; + total: number; + [key: string]: any; +} + +export interface ListInandOutDetailsParams { + clientCode: string; + itemName: string; + itemTypeCodes: string; + date1: string; + date2: string; + page: number; + size: number; +} + +export interface InandOutDetailsItem { + 本期购入金额: number; + 剂型: string; + 名称: string; + 规格: string; + 上期结存量: number; + 上期结存金额: number; + 本期销售退库金额: number; + 单位: string; + 本期结存金额: number; + 本期销售量: number; + 本期购入量: number; + 本期销售金额: number; + 医保编码: string; + 本期销售退库量: number; + 批准文号: string; + 本期结存量: number; +} + +export interface ListInandOutDetailsReponse { + list: InandOutDetailsItem[]; + total: number; +} + +export interface InventoryMonitoringItem { + itemCode: string; + 医保编码: string; + 单位: string; + 可用库存: string; + 药品名称: string; + 药品编号: string; + 规格: string; +} + + +export interface ListReadyRowsParams { + clientCode: string; + isContainsOutStockInfos: number; + queryDateBegin: string; + queryDateEnd: string; + timeSlot: number; + wards: string[]; +} + +export interface ListOutStockGroupByPatOrItemParams { + groupby: string; + clientCode: string; + date1: string; + date2: string; +} + +// 0入库 1入库退库 2出库 3出库退库 +type OperateType = 0 | 1 | 2 | 3; +export interface ListOperate2DetailsParams { + itemCode: string; + date1: string; + date2: string; + operateType: OperateType; + page: number; + size: number; + patientCode: string; + timeSlot: string; +} + + +export interface GetDiffDetailsParams { + page: number; + size: number; + date1: string; + date2: string; + itemCode: string; // 物品编号 +} + + +export interface DiffDetails { + 盘点时间: string; + 盘盈数量: number | null; + 盘亏数量: number | null; + 操作人: string; + 备注: string; +} + +export interface IInventoryCheckQueryParams { + page: number; + size: number; + types: string; + itemName: string; + startTime: string; + endTime: string; + clientCode: string; +} + +// 1:厂家;2是经销商 +export type IInventoryItemUpdateManufacturerDealerDictParamsManufacturerDealerType = 1 | 2; + +export interface IInventoryItemUpdateManufacturerDealerDictParams { + clientCode: string; + manufacturerDealerName: string; + manufacturerDealerType: IInventoryItemUpdateManufacturerDealerDictParamsManufacturerDealerType; +} + + +export interface ICopyFromParams { + fromClientCode: string; + toClientCode: string; + typeCode: string; + isOverride: number; +} + + +export interface IInventoryListByTypesParams { + clientCode: string; + itemTypes: string; + itemName?: string; + isShow?: number; // -1 | 0 | 1 + page?: number; + size?: number; +} \ No newline at end of file diff --git a/src/api/inventoryDuizhoa/index.ts b/src/api/inventoryDuizhoa/index.ts new file mode 100644 index 0000000..645ca49 --- /dev/null +++ b/src/api/inventoryDuizhoa/index.ts @@ -0,0 +1,32 @@ +import request from '/@/utils/request'; + +export function inventoryTypeList(params: object) { + return request({ + url: '/inventory/item/type/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function listMapper(params: object) { + return request({ + url: '/suntop/product/mapper/listMapper', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function saveMapper(params: object) { + return request({ + url: '/suntop/product/mapper/saveMapper', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} \ No newline at end of file diff --git a/src/api/inventory_auto_out_stock/index.ts b/src/api/inventory_auto_out_stock/index.ts new file mode 100644 index 0000000..fd664f4 --- /dev/null +++ b/src/api/inventory_auto_out_stock/index.ts @@ -0,0 +1,59 @@ +import request from '/@/utils/request'; +import type { InventoryOutStockListParams, InventoryOutStockItem } from './types'; +import { AxiosPromise } from 'axios'; + +/** + * 获取自动出库管理列表 + * @param data + * @returns + */ +export function inventoryOutStockListApi(data: InventoryOutStockListParams) :AxiosPromise<{ list: InventoryOutStockItem[]; [key: string]: any;}> { + return request({ + url: '/inventory/auto/out/stock/list', + method: 'post', + params:data + }) +} + + +/** + * 添加自动出库项 + * @param data + * @returns + */ +export function inventoryOutStockAdd(data: Partial) { + return request({ + url: '/inventory/auto/out/stock/add', + method: 'post', + data + }) +} + + +/** + * 更新自动出库项 + * @param data + * @returns + */ +export function inventoryOutStockUpdate(data: Partial) { + return request({ + url: '/inventory/auto/out/stock/update', + method: 'post', + data + }) +} + + + +/** + * 删除自动出库项 + * @param id + * @returns + */ +export function inventoryOutStockDel(id: number) { + return request({ + url: '/inventory/auto/out/stock/delete', + method: 'post', + params: { id } + }) +} \ No newline at end of file diff --git a/src/api/inventory_auto_out_stock/types.ts b/src/api/inventory_auto_out_stock/types.ts new file mode 100644 index 0000000..4d831c7 --- /dev/null +++ b/src/api/inventory_auto_out_stock/types.ts @@ -0,0 +1,24 @@ +export interface InventoryOutStockListParams { + page: number; + size: number; + wherecondition: string; + ordercondition: string; +} + +export interface InventoryOutStockItem { + clientCode: string; + code: string; + createTime: string; + createUser: number; + deletedTime: string; + id: number; + isAutoAddToFeelist: 0 | 1; + itemIsAutoAddToOutstock: 0 | 1; + isDeleted: number; + itemCode: string; + outCount: number; + remark: string; + updateTime: string; + updateUser: number; + itemName: string; +} diff --git a/src/api/lis/class.ts b/src/api/lis/class.ts new file mode 100644 index 0000000..75b933d --- /dev/null +++ b/src/api/lis/class.ts @@ -0,0 +1,120 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { ClassListParams, ClassItem, ListOrdersParams, UploadOrdersToLisParams } from './type'; + +export function Add(params: object) { + return request({ + url: '/lis/class/info/add', + method: 'post', + data: params, + }); +} +export function update(params: object) { + return request({ + url: '/lis/class/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/lis/class/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + +/** + * 获取分类列表 + * @param params + * @returns + */ +export function list(params: ClassListParams) :AxiosPromise { + return request({ + url: '/lis/class/info/list', + method: 'post', + data: params + }) +} + + +/** + * 获取门诊采样数据 + * @param params + * @returns + */ +export function listOrdersApi(params: ListOrdersParams) { + return request({ + url: '/lis/barcode/info/listOrders', + method: 'post', + params + }) +} + +/** + * 打印条码 + * @param data + * @returns + */ +export function printBarcodeApi(data: { orders: any[], printerName: string; }) { + return request({ + url: '/lis/barcode/info/printBarcode', + method: 'post', + data + }) +} + +/** + * 取消采样 + * @param barcode + * @returns + */ +export function cancelBarcodeApi(barcode: string) { + return request({ + url: '/lis/barcode/info/cancelBarcode', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { barcode } + }) +} + +/** + * 获取lis条码打印机列表 + * @param clientCode + * @returns + */ +export function getAvailableDevicesByDeviceTypeApi(clientCode: string) { + return request({ + url: '/comm/service/device/info/getAvailableDevicesByDeviceType', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { + clientCode, + deviceType: 'LIS条码标签打印机' + } + }) +} + + +/** + * 手动上传申请至LIS + * @param params + * @returns + */ +export function uploadOrdersToLisApi(params: UploadOrdersToLisParams) { + return request({ + url: '/lis/barcode/info/uploadOrdersToLis', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} \ No newline at end of file diff --git a/src/api/lis/feeitem.ts b/src/api/lis/feeitem.ts new file mode 100644 index 0000000..3238f22 --- /dev/null +++ b/src/api/lis/feeitem.ts @@ -0,0 +1,123 @@ +import request from '/@/utils/request'; + +export function Add(params: object) { + return request({ + url: '/lis/feeitem/info/add', + method: 'post', + data: params, + }); +} +export function update(params: object) { + return request({ + url: '/lis/feeitem/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/lis/feeitem/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/lis/feeitem/info/list', + method: 'post', + data: params + }) +} +export function listUsers(params: object) { + return request({ + url: '/lis/feeitem/info/listUsers', + method: 'post', + params + }) +} +export function listTestItemsByFeeItem(params: string) { + return request({ + url: '/fee/test/set/vs/item/listTestItemsByFeeItem', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function saveVS(params: object) { + return request({ + url: '/fee/test/set/vs/item/saveVS', + method: 'post', + data: params, + }) +} +export function addTestBill(params: object) { + return request({ + url: '/patient/bill/info/addTestBill', + method: 'post', + data: params, + }) +} +export function deleteOrderItem(params: string) { + return request({ + url: '/lis/order/info/deleteOrderItem', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function initFeeItems(params: string) { + return request({ + url: '/lis/feeitem/info/initFeeItems', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function initTestItems(params: string) { + return request({ + url: '/lis/testitem/info/initTestItems', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + + + +export function groupInfoListApi(params: any) { + return request({ + url: '/fee/service/group/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: params + }) +} + +/** + * 查询收费套餐明细API + * @param code + * @returns + */ +export function getFeeServiceGroupDetailByCodeApi(code: string) { + return request({ + url: '/fee/service/group/info/detail2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { code } + }) +} diff --git a/src/api/lis/feeitemVsclass.ts b/src/api/lis/feeitemVsclass.ts new file mode 100644 index 0000000..be3cf42 --- /dev/null +++ b/src/api/lis/feeitemVsclass.ts @@ -0,0 +1,70 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { ListByClassCodeParams, ListByClassCodeReponse, ListAllFeeItem } from './type'; + +export function Add(params: object) { + return request({ + url: '/lis/class/info/add', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/lis/class/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + +/** + * 获取检验分类项目对照已收费/未收费数据,其中未收费数据已废弃 + * @param params + * @returns + */ +export function listByClassCode(params: ListByClassCodeParams): AxiosPromise { + return request({ + url: 'lis/feeitem/vs/class/listByClassCode', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 修改检验分类项目对照 + * @param params + * @returns + */ +export function update(params: object) { + return request({ + url: '/lis/feeitem/vs/class/update', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: params + }) +} + + +/** + * 返回收费项目列表 + * @param clientCode + * @returns + */ +export function listAllFeeItemsApi(clientCode: string) : AxiosPromise { + return request({ + url: '/lis/feeitem/info/listAllFeeItems', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { clientCode } + }) +} \ No newline at end of file diff --git a/src/api/lis/index.ts b/src/api/lis/index.ts new file mode 100644 index 0000000..81ab907 --- /dev/null +++ b/src/api/lis/index.ts @@ -0,0 +1,60 @@ +import request from '/@/utils/request'; +import type { ListStatInfoParamsParams } from './type'; + +export interface ListPBSDetailsParams { + clientCode: string; + date1: string; + date2: string; + patientCode: string; + 报销方式: string; + 患者诊断?: string; + itemName: string; + timeSlot: number; + page: number; + size: number; + itemCode: string; + billSetStatus: string; +} + +export function doListResultsGroupByMonth(params: object) { + return request({ + url: '/lis/stat/doListResultsGroupByMonth', + method: 'post', + data: params, + }); +} + +/** + * 处方查询 + * @param params + * @returns + */ +export function listPBSDetailsApi(params: Partial) { + return request({ + url: '/patient/bill/set/info/listPBSDetails', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: params + }) +} + + +/** + * 药剂统计 + * @param params + * @returns + */ +export function listStatInfoParams(params: ListStatInfoParamsParams) { + return request({ + url: '/patient/bill/set/info/listStatInfo', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: params + }) +} + + diff --git a/src/api/lis/lisBarcode.ts b/src/api/lis/lisBarcode.ts new file mode 100644 index 0000000..0e61bd8 --- /dev/null +++ b/src/api/lis/lisBarcode.ts @@ -0,0 +1,77 @@ +import request from '/@/utils/request'; + +export function Add(params: string) { + return request({ + url: '/lis/barcode/info/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/lis/barcode/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/lis/barcode/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + +export function listRecentActivity(params: object) { + return request({ + url: '/lis/sync/task/listRecentActivity', + method: 'post', + params + }) +} + +export function getLisServiceStatus(params: object) { + return request({ + url: '/lis/service/getLisServiceStatus', + method: 'post', + params + }) +} +export function sendLisControlCommand(params: object) { + return request({ + url: '/lis/service/sendLisControlCommand', + method: 'post', + params + }) +} +export function list(params: object) { + return request({ + url: '/lis/barcode/info/list', + method: 'post', + params + }) +} +export function getItems(params: object) { + return request({ + url: '/lis/barcode/info/getItems', + method: 'post', + data: params + }) +} +export function printBarcode(params: object) { + return request({ + url: '/lis/barcode/info/printBarcode', + method: 'post', + data: params + }) +} +export function cancelBarcodes(params: object) { + return request({ + url: '/lis/barcode/info/cancelBarcodes', + method: 'post', + data: params + }) +} \ No newline at end of file diff --git a/src/api/lis/order.ts b/src/api/lis/order.ts new file mode 100644 index 0000000..f3419e9 --- /dev/null +++ b/src/api/lis/order.ts @@ -0,0 +1,19 @@ +import request from '/@/utils/request'; + +export function saveOrder(params) { + return request({ + url: '/lis/order/info/saveOrder', + method: 'post', + data: params, + }) +} +export function getLisOrder(params:string) { + return request({ + url: '/lis/order/info/getLisOrder ', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }) +} \ No newline at end of file diff --git a/src/api/lis/report.ts b/src/api/lis/report.ts new file mode 100644 index 0000000..cd1cb9d --- /dev/null +++ b/src/api/lis/report.ts @@ -0,0 +1,180 @@ +import request from '/@/utils/request'; +import type { ListTestResultsParams, SaveTestResultData, ListTestSamplesReponseItem, IListResultsByPatCodeParams, IListResultsByPatCode } from './type'; +import { AxiosPromise } from 'axios'; + +export function reportList(params) { + return request({ + url: '/lis/report/list', + method: 'post', + data: params, + }) +} +export function listResults(params:string) { + return request({ + url: '/lis/report/listResults', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }) +} +export function listReportsByPatient(params) { + return request({ + url: '/lis/report/listReportsByPatient', + method: 'post', + data: params, + }) +} +export function listReportsByPatientDay(params) { + return request({ + url: '/lis/report/listReportsByPatientDay', + method: 'post', + data: params, + }) +} +export function listReportResultsByPatientDayFeeItem(params) { + return request({ + url: '/lis/report/listReportResultsByPatientDayFeeItem', + method: 'post', + data: params, + }) +} +export function listFeeItems() { + return request({ + url: '/lis/report/listFeeItems', + method: 'post', + }) +} +export function listTestItemsByFeeItemName(params) { + return request({ + url: '/lis/report/listTestItemsByFeeItemName', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }) +} +export function saveLisResult(params) { + return request({ + url: '/lis/report/saveLisResult', + method: 'post', + data: params, + }) +} + + + +/** + * 修改LIS结果 + * @param data + * @returns + */ +export function apiUpdateLis(params: { code: string; result: string; sampleDate: string; }) { + return request({ + url: "/lis/report/updateLisResult", + method: "post", + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }); +} + + +/** + * 删除lis结果 + * @param code + * @returns + */ +export function apiDelLis(data: string) { + return request({ + url: "/lis/report/deleteLisResult", + method: "post", + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data + }); +} + + + +/** + * 根据患者获取标本列表 + * @param patientCode 患者编号 + * @returns + */ +export function listTestSamplesApi(patientCode: string): AxiosPromise { + return request({ + url: '/patient/lis/report/listTestSamples', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { patientCode } + }) +} + + +/** + * 根据患者+标本编号查询出所有检查项目 + * @param params + * @returns + */ +export function listTestResultsApi(params: ListTestResultsParams) { + return request({ + url: '/patient/lis/report/listTestResults', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 保存手动填写的检查项目 + * @param data + * @returns + */ +export function saveTestResultApi(data: SaveTestResultData) { + return request({ + url: '/patient/lis/report/saveTestResult', + method: 'post', + data + }) +} + + +/** + * 删除检查项目 + * @param id + * @returns + */ +export function delTestResultApi(id: number) { + return request({ + url: '/patient/lis/report/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { id } + }) +} + + +/** + * 根据患者编号和日期范围获取检验结果列表 + * @param params + * @returns + */ +export function listResultsByPatCodeApi(params: IListResultsByPatCodeParams) :AxiosPromise { + return request({ + url: '/lis/report/listResultsByPatCode', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/lis/sample.ts b/src/api/lis/sample.ts new file mode 100644 index 0000000..2e08a0b --- /dev/null +++ b/src/api/lis/sample.ts @@ -0,0 +1,33 @@ +import request from '/@/utils/request'; + +export function Add(params: object) { + return request({ + url: '/lis/sample/type/info/add', + method: 'post', + data: params, + }); +} +export function update(params: object) { + return request({ + url: '/lis/sample/type/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/lis/sample/type/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/lis/sample/type/info/list', + method: 'post', + data: params + }) +} \ No newline at end of file diff --git a/src/api/lis/type.ts b/src/api/lis/type.ts new file mode 100644 index 0000000..0e031b2 --- /dev/null +++ b/src/api/lis/type.ts @@ -0,0 +1,122 @@ +export interface ClassListParams { + page: number; + size: number; + clientCode: string; +} + +export interface ClassItem { + backgroudColor: string; + className: string; + clientCode: string; + code: string; + createTime: string; + createUser: number; + deletedTime: any; + id: number; + isDeleted: number; + remark: string; + sampleContainer: string; + sampleTypeCode: string; + sampleTypeName: string; + updateTime: string; + updateUser: any; +} + +export interface ListByClassCodeParams { + clientCode: string; + classCode: string; +} + +export interface ListByClassCodeReponse { + classCode: string; + selectedFeeItems: SelectedFeeItem[]; + unSelectedFeeItems: any[]; // 该数据已不再使用,类型就不写了 +} + +export interface SelectedFeeItem { + 收费项目名称: string; + 代号: string; + 类型: string; +} + +export interface ListAllFeeItem { + 名称: string; + 编号: string; + client_code: string; + 类型: string; +} + +export interface ListTestResultsParams { + patientCode: string; + sampleDate: string; + categoryName: string; +} + +export interface SaveTestResultData { + id: number; + code: string; + patientCode: string; + sampleDate: string; //标本日期, 格式 yyyy-MM-dd + categoryName: string; //分类名称 + results: SaveLisReportDetailRequest[]; +} + +export interface SaveLisReportDetailRequest { + id: number; + code: string; + testName: string; // 检查项目名称 + testResult: string; // 检查项目结果 +} + +export interface ListTestSamplesReponseItem { + code: string; + id: number; + 标本日期: string; + 检验类别: string; +} + + +export interface ListOrdersParams { + queryCode: string; + date1: string; + date2: string; + clientCode: string; +} + + +export interface UploadOrdersToLisParams { + clientCode: string; + barcodes: string; +} + +export interface ListStatInfoParamsParams { + date1: string; + date2: string; + clientCode: string; +} + + +export interface IListResultsByPatCodeParams { + clientCode: string; + patCode: string; + date1: string; + date2: string; + itemNames: string; +} + +export interface IListResultsByPatCode { + barcode: string; + clientCode: string; + code: string; + feeItemName: string; + itemCode: string; + itemName: string; + itemNameCn: string; + itemResult: string; + itemResultFlag: string; + itemResultRef: string; + itemResultUnit: string; + patientName: string; + reportCode: string; + sampleDate: string; +} \ No newline at end of file diff --git a/src/api/lis_barcode_info/index.ts b/src/api/lis_barcode_info/index.ts new file mode 100644 index 0000000..50b1a5c --- /dev/null +++ b/src/api/lis_barcode_info/index.ts @@ -0,0 +1,80 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { ListBarcodesParams, ListBarcodes, UploadOrdersToLisParams, BatchUpdateExternalBarcodeParams } from './types'; + + +/** + * 查询外检推送条码号 + * @param params + * @returns + */ +export function listBarcodesApi(params: ListBarcodesParams): AxiosPromise { + return request({ + url: '/lis/barcode/info/listBarcodes', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 外检推送用的(修改外部条码编号) + * @param data + * @returns + */ +export function lisBarcodeInfoUpdate(data: { code: string; externalBarcode: string; [key: string]: any}) { + return request({ + url: '/lis/barcode/info/update', + method: 'post', + data + }) +} + +/** + * 外检推送用的(修改备注) + * @param data + * @returns + */ +export function lisBarcodeItemInfoUpdate(data: { code: string; remark: string; [key: string]: any}) { + return request({ + url: '/lis/barcode/item/info/update', + method: 'post', + data + }) +} + + +/** + * 推送条码号 + * @param params + * @returns + */ +export function uploadOrdersToLisApi(params: UploadOrdersToLisParams) { + return request({ + url: '/lis/barcode/info/uploadOrdersToLis', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 批量修改外部条码号 + * @param params + * @returns + */ +export function batchUpdateExternalBarcodeApi(params: BatchUpdateExternalBarcodeParams) { + return request({ + url: '/lis/barcode/info/batchUpdateExternalBarcode', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} \ No newline at end of file diff --git a/src/api/lis_barcode_info/types.ts b/src/api/lis_barcode_info/types.ts new file mode 100644 index 0000000..fa20f3e --- /dev/null +++ b/src/api/lis_barcode_info/types.ts @@ -0,0 +1,37 @@ +export interface ListBarcodesParams { + date1: string; + date2: string; + barcode?: string; +} + +export interface ListBarcodes { + 价格: any; + 分类: string; + 处方编号: string; + 备注: string; + 外部条码号: string; + 客户编号: string; + 总价: any; + 患者姓名: string; + 患者编号: string; + 数量: 1; + 条码号: string; + 条码打印时间: string; + 条码表明细编号: string; + 条码表编号: string; + 项目名称: string; + 项目编号: string; + 条码表ID: number; + 条码表明细ID: number; +} + + +export interface UploadOrdersToLisParams { + clientCode: string; + barcodes: string; +} + +export interface BatchUpdateExternalBarcodeParams { + barcodes: string; + externalBarcode: string; +} \ No newline at end of file diff --git a/src/api/lis_result_evaluate/index.ts b/src/api/lis_result_evaluate/index.ts new file mode 100644 index 0000000..a54a0ee --- /dev/null +++ b/src/api/lis_result_evaluate/index.ts @@ -0,0 +1,106 @@ +import request from '/@/utils/request'; +// import { AxiosPromise } from 'axios'; + +/** + * 保存评估类别 + * @param params + * @returns + */ +export function saveCategroy(params) { + return request({ + url: '/lis/result/evaluate/categroy/save', + method: 'post', + data: params + }) +} + +/** + * 查询评估类别 + * @param params + * @returns + */ +export function getCategroyList(params) { + return request({ + url: '/lis/result/evaluate/categroy/list', + method: 'post', + params + }) +} + +/** + * 评估类别详情 + * @param params + * @returns + */ +export function getCategroyDetail(params) { + return request({ + url: '/lis/result/evaluate/categroy/detail', + method: 'post', + params + }) +} + +/** + * 删除 + * @param id + * @returns + */ +export function categroyDel(id: number) { + return request({ + url: '/lis/result/evaluate/categroy/delete', + method: 'post', + params: { id } + }) +} + +/** + * 删除 + * @param id + * @returns + */ +export function itemInfoDel(id: number) { + return request({ + url: '/lis/result/evaluate/item/info/delete', + method: 'post', + params: { id } + }) +} + +/** + * 保存评估类别 + * @param params + * @returns + */ +export function saveItemInfo(params) { + return request({ + url: '/lis/result/evaluate/item/info/save', + method: 'post', + data: params + }) +} + +/** + * 查询评估类别 + * @param params + * @returns + */ +export function getItemInfoList(params) { + return request({ + url: '/lis/result/evaluate/item/info/list', + method: 'post', + params + }) +} + +/** + * 评估类别详情 + * @param params + * @returns + */ +export function getItemInfoDetail(params) { + return request({ + url: '/lis/result/evaluate/item/info/detail', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/login/index.ts b/src/api/login/index.ts new file mode 100644 index 0000000..a821541 --- /dev/null +++ b/src/api/login/index.ts @@ -0,0 +1,53 @@ +import request from '/@/utils/request'; + +/** + * 用户登录 + * @param params 要传的参数值 + * @returns 返回接口数据 + */ +export function signIn(params: string) { + return request({ + url: '/user/info/login', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function getuserinfo() { + return request({ + url: '/user/info/getUserInfo', + method: 'post' + }) +} +// 修改用户信息 +export function editUserInfo(params:string) { + return request({ + url: '/user/info/update', + method: 'post', + data: params + }) +} +export function getUserDetail2(params: string) { + return request({ + url: '/user/info/detail2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +/** + * 用户退出登录 + * @param params 要传的参数值 + * @returns 返回接口数据 + */ +export function signOut(params: object) { + return request({ + url: '/user/signOut', + method: 'post', + data: params, + }); +} diff --git a/src/api/medicalOrderDrugTemplate/index.ts b/src/api/medicalOrderDrugTemplate/index.ts new file mode 100644 index 0000000..4ae8d41 --- /dev/null +++ b/src/api/medicalOrderDrugTemplate/index.ts @@ -0,0 +1,82 @@ +import request from '/@/utils/request'; +import type { AxiosPromise } from 'axios'; +import type { ICommonListParams } from '../common.type'; +import type { DrugOrderTemplate, DrugTemplate } from './types/index'; + +export function addTemplate(data: object) { + return request({ + url: '/patient/drug/order/template/add', + method: 'post', + data + }) +} +/** + * 获取药物医嘱模板列表 + * @param params + * @returns + */ +export function getTemplateList(params: ICommonListParams) :AxiosPromise { + return request({ + url: '/patient/drug/order/template/list', + method: 'post', + params + }) +} + +/** + * 获取药物医嘱模板列表API2 + * @param params + * @returns + */ +export function getTemplateList2(params: object) :AxiosPromise { + return request({ + url: '/patient/drug/order/template/listTemplate', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +// 编辑医嘱 +export function updateTemplate(data: object) { + return request({ + url: '/patient/drug/order/template/update', + method: 'post', + data + }) +} +// 删除模板名称 +export function deleteTemplate(id: number) { + return request({ + url: '/patient/drug/order/template/delete', + method: 'post', + params: { + id + } + }) +} +export function saveSubOrder(params: object) { + return request({ + url: '/patient/drug/order/vs/template/order/saveSubOrder', + method: 'post', + data:params + }) +} +export function saveOrder(params: object) { + return request({ + url: '/patient/drug/order/template/saveOrder', + method: 'post', + data:params + }) +} +export function deleteOrder(params: object) { + return request({ + url: '/patient/drug/order/template/deleteOrder', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} \ No newline at end of file diff --git a/src/api/medicalOrderDrugTemplate/types/index.ts b/src/api/medicalOrderDrugTemplate/types/index.ts new file mode 100644 index 0000000..af88f46 --- /dev/null +++ b/src/api/medicalOrderDrugTemplate/types/index.ts @@ -0,0 +1,313 @@ +import type { IComminList } from '../../common.type'; + +export interface DrugTemplate { + clientCode: string; + code: string; + createTime: string; + createUser: number | null; + deletedTime: string | null; + id: number; + isDeleted: number; + patientDrugOrderList: any; + patientDrugOrders: OrderDetail[]; + remark: string; + tpName: string; + tpSort: number; + tpUseType: number; + tpVsFsiGroupCode: string; + updateTime: string; + updateUser: number | null; +} + +export interface OrderDetail { + code: string; + createTime: string; + createUser: number | null; + deletedTime: string | null; + hisOrderCode: string; + hisOrderDeposit: number | null; + id: number; + isDeleted: number; + orderCount: number; + orderDoctor: string; + orderDoctorInfo: UserInfo; + orderFreq: string; + orderFreqInfo: DictInfo; + orderFrom: string; + orderFromInfo: DictInfo; + orderIsSub: number; + orderMainCode: string; + orderName: string; + orderNameInfo: InventoryItem; + orderSort: number; + orderType: number; + orderUsage: number; + pvpId: string | null; + remark: string; + subDrugOrders: any | null; + updateTime: string; + updateUser: number | null; +} + +export interface UserInfo { + admin: boolean; + canDeleteHistoryHms: boolean; + canModifyHistoryHms: boolean; + checkVersionCode: string; + clientCode: string; + clientInfos: any; + clientVsUserList: any; + code: string; + createTime: string; + createUser: number | null; + currentClientInfo: any; + deletedTime: string | null; + doctor: boolean; + hisCode: string; + id: number; + isDeleted: number; + isRecvAlarm: number | null; + isRecvAlarmEmail: number; + isRecvAlarmWechat: number; + isShow: number; + isValid: number; + isValidForClient: number; + listReadyRows: string; + listStatInfo: string; + loginWechatMpId: string; + loginWechatUnionId: string; + nurse: boolean; + prepareWorkMedicine: string; + prepareWorkMedicineStat: string; + relatedClients: string; + remark: string; + roles: any; + selectFieldsInShangjiCanshuPage: string; + selectFieldsInTodayOrderPage: string; + selectedFieldsInCleanStatPage: string; + selectedFieldsInInventory2OutPage: string; + selectedFieldsInInventory2QueryPage: string; + selectedFieldsInMedStat2: string; + signedInCountByDa: string; + signedInCountByStatistics: string; + teamState: any; + updateTime: string; + updateUser: number; + userAdmin: boolean; + userAvatar: string; + userCustomSetting: string; + userDegree: string; + userEmail: string; + userFromDepartment: string; + userGender: number; + userGoDate: string | null; + userGoDepartment: string; + userGraduateTime: string | null; + userIdentityCode: string; + userInDate: string | null; + userIsTongluDoctor: number; + userMobile: string; + userName: string; + userNo: string; + userPassword: string; + userPinyin: string; + userRfid: string; + userSignPicUrl: string; + userSortOrder: number; + userTitle: string; + userVsRoleList: any; + userWorkState: string; + userWorkTimeFrom: string | null; + + 排班时段选择项: string; + 是否自动出库至二级默认仓库: string; + 管理员能看到的客户列表: any; + 隐藏自备药: string; +} + +export interface DictInfo { + code: string; + createTime: string | null; + createUser: number | null; + deletedTime: string | null; + dictIsCustom: number; + dictIsEnable: number | null; + dictNo: string; + dictText: string; + dictType: string; + hisCode: string; + id: number; + isDeleted: number | null; + remark: string; + sortOrder: number; + updateTime: string | null; + updateUser: number | null; +} + +export interface InventoryItem { + clientCode: string; + code: string; + createTime: string; + createUser: number; + deletedTime: string | null; + feeDrugInfo: DrugInfo; + hisCode: string; + id: number; + inStorageCountInfo: any; + inventoryItemType: number; + inventoryItemTypeInfo: InventoryTypeInfo; + inventoryTypeCode: string; + inventoryTypeName: string; + isDeleted: number; + isShow: number; + itemAgent: string; + itemAgentInfo: any; + itemCode: string; + itemCommonUseInBothSide: any; + itemExtendJson: string; + itemFactory: string; + itemFactoryInfo: any; + itemHisType: string; + itemInPrice: number; + itemInventoryAlarmCount: number; + itemIsEnableManage: number; + itemIsFavor: number; + itemIsOutToPatient: number; + itemIsReUse: number; + itemIsRestrictUse: number; + itemIsUse: number; + itemIsUseAsXt: number; + itemLicenseCode: string; + itemMoArea: number; + itemMoMaterial: string; + itemName: string; + itemName2: string; + itemOperator: string; + itemOperatorInfo: any; + itemOutPrice: number; + itemPackageCount: number | null; + itemPackageUnit: string; + itemPackageUnitName: string; + itemPeriodAlarmDays: number; + itemPermissionCode: string; + itemPinyin: string; + itemRestrictUseRemark: string; + itemSalePrice: number; + itemSortOrder: number; + itemSpec: string; + itemTxqCleanRate: any; + itemUnit: string; + itemUnitInfo: any; + itemYibaoCode: string; + itemYibaoPrice: number | null; + remark: string; + storageCode: string; + suntopItemCode: string; + updateTime: string; + updateUser: number; + + 入库总量: number | null; + 剩余总量: number | null; + 当前使用量: number | null; + 批号对象列表: any; + 结存: number | null; + 透析器国网上报: any; +} + +export interface DrugInfo { + code: string; + createTime: string; + createUser: number | null; + deletedTime: string | null; + drugAntibioticLevel: any; + drugBarcode: string; + drugBaseType: any; + drugBenweiCode: string; + drugCategory: number; + drugCode: string; + drugGansuUseLimit: number; + drugHisCode: string; + drugInHospitalUseType: any; + drugInventoryAlertDays: any; + drugInventoryAlertValidDays: any; + drugInventoryPackageCount: any; + drugInventoryPackageType: string; + drugInventoryPackageTypeName: string; + drugIsFavor: number; + drugIsNeedTest: any; + drugJixing: string; + drugJixingName: string; + drugLimitUseText: string; + drugLimitUseType: number; + drugMonitorCode: string; + drugName: string; + drugName2: string; + drugPackageSum: any; + drugPackageType: number; + drugPackageUnit: string; + drugPackageUnitAlias: string; + drugPackageUnitAliasName: string; + drugPackageUnitName: string; + drugPermissionCode: string; + drugPinyin: string; + drugPlusPercent: any; + drugPriceCategory: any; + drugPriceIn: number | null; + drugPriceSale: number; + drugPriceYibao: any; + drugProduceFactory: string; + drugProduceFactoryName: string; + drugProduceLocation: string; + drugProperty: string; + drugSortOrder: number; + drugSpec: string; + drugSpecialProperty: any; + drugStatus: number; + drugSyncPrice: number; + drugTransfer1: any; + drugTransfer2: any; + drugUnit: string; + drugUnitName: string; + drugUseMethod: string; + drugUseMethodName: string; + drugUseOnetime: string; + drugUsePeriod: string; + drugUsePeriodName: string; + drugUseType: string; + drugUseTypeName: string; + drugUseUnit: string; + drugUseUnitName: string; + drugVsDiagnose: string; + drugVsDiagnoseName: string; + drugYibaoCode: string; + drugYlCode: string; + id: number; + inventoryItemDetailCode: string; + isDeleted: number; + remark: string; + updateTime: string; + updateUser: number | null; +} + +export interface InventoryTypeInfo { + clientCode: string; + code: string; + createTime: string; + createUser: number | null; + deletedTime: string | null; + id: number; + isDeleted: number; + isEditable: number; + isShow: boolean; + remark: string; + sortOrder: number; + typeCategory: number; + typeName: string; + updateTime: string; + updateUser: number | null; +} + + +export interface DrugOrderTemplate extends Omit { + list: DrugTemplate[]; +} \ No newline at end of file diff --git a/src/api/menu/index.ts b/src/api/menu/index.ts new file mode 100644 index 0000000..de49b82 --- /dev/null +++ b/src/api/menu/index.ts @@ -0,0 +1,97 @@ +import request from '/@/utils/request'; + +/** + * 后端控制菜单模拟json,路径在 https://gitee.com/lyt-top/vue-next-admin-images/tree/master/menu + * 后端控制路由,isRequestRoutes 为 true,则开启后端控制路由 + */ + +/** + * 获取后端动态路由菜单(admin) + * @link 参考:https://gitee.com/lyt-top/vue-next-admin-images/tree/master/menu + * @param params 要传的参数值,非必传 + * @returns 返回接口数据 + */ +export function getMenuAdmin(params?: object) { + return request({ + url: '/gitee/lyt-top/vue-next-admin-images/raw/master/menu/adminMenu.json', + method: 'get', + params, + }); +} + +/** + * 获取后端动态路由菜单(test) + * @link 参考:https://gitee.com/lyt-top/vue-next-admin-images/tree/master/menu + * @param params 要传的参数值,非必传 + * @returns 返回接口数据 + */ +export function getMenuTest(params?: object) { + return request({ + url: '/gitee/lyt-top/vue-next-admin-images/raw/master/menu/testMenu.json', + method: 'get', + params, + }); +} + +// 保存菜单 +export function saveResources(params: object) { + return request({ + url: '/resource/info/saveResources', + method: 'post', + data: params, + }); +} + +export function detail2(code: string) { + return request({ + url: '/resource/info/detail2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: code, + }); +} +export function listResources() { + return request({ + url: '/resource/info/listResources', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }); +} +export function Add(params: object) { + return request({ + url: '/resource/info/add', + method: 'post', + data: params, + }); +} +export function Update(params: object) { + return request({ + url: '/resource/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/resource/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/resource/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} diff --git a/src/api/patient/drug_order_vs_patient.ts b/src/api/patient/drug_order_vs_patient.ts new file mode 100644 index 0000000..8bcb133 --- /dev/null +++ b/src/api/patient/drug_order_vs_patient.ts @@ -0,0 +1,90 @@ +import request from '/@/utils/request'; +import type { BatchReplaceParams } from './types'; + +export function patientDrugSave(params: object) { + return request({ + url: '/patient/drug/order/vs/patient/save', + method: 'post', + data:params + }) +} +export function patientDrugList2(params: object) { + return request({ + url: '/patient/drug/order/vs/patient/list2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function patientDrugList3(params: object) { + return request({ + url: '/patient/drug/order/vs/patient/list3', + method: 'post', + data:params + }) +} + +export function calendarList(params) { + return request({ + url: '/patient/drug/order/vs/patient/calendarList', + method: 'post', + data:params + }) +} + +export function deleteId(params: string) { + return request({ + url: '/patient/drug/order/vs/patient/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/patient/drug/order/vs/patient/update', + method: 'post', + data: params, + }); +} +export function updatePushState(params: Object) { + return request({ + url: '/patient/drug/order/vs/patient/updatePushState', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} + + +/** + * 医嘱替换 + * @param params + * @returns + */ +export function batchReplaceApi(params: BatchReplaceParams) { + return request({ + url: '/patient/drug/order/vs/patient/batchReplace', + method: 'post', + params + }) +} + +/** + * 透析方案 + * @param params + * @returns + */ +export function batchReplaceApi2(params: any) { + return request({ + url: '/patient/vs/hemo/med/scheme/batchReplace', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/patient/index.ts b/src/api/patient/index.ts new file mode 100644 index 0000000..a250061 --- /dev/null +++ b/src/api/patient/index.ts @@ -0,0 +1,160 @@ +import request from '/@/utils/request'; +import type { IMedSummary, GetMedSummaryParams, QueryPatientByBirthParams, DialysisAgeStatisticsDetail, DialysisAgeStatisticsDetailParams, VascularAccessStatDetailParams, VascularAccessStatDetail, DialysisAgeStatisticsParams, IPatVascularAccessStatDetailsParams, IPatVascularAccessStatDetailsReponse, IPatientAgeDistributionParams, IPatientAgeDistributionReponse } from './types'; +import { AxiosPromise } from 'axios'; +export function accessStat(params: object) { + return request({ + url: '/patient/vascular/access/stat', + method: 'post', + data: params, + }) +} + +export function accessStat2Api(params) { + return request({ + url: '/patient/vascular/access/stat2', + method: 'post', + data: params, + }) +} +export function listHemoMedWeights(params: object) { + return request({ + url: '/patient/hemo/med/record/listHemoMedWeights', + method: 'post', + data:params + }) +} + + +/** + * 患者在院数量统计 + * @param data + * @returns + */ +export function listPatCountByStatusApi(params: any) { + return request({ + url: '/patient/operate/status/info/listPatCountByStatus', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 血管通路明细列表 + * @param data + * @returns + */ +export function vascularAccessStatDetailApi(data: VascularAccessStatDetailParams) :AxiosPromise<{ list: VascularAccessStatDetail[]; [key: string]: any}> { + return request({ + url: '/patient/vascular/access/statDetail', + method: 'post', + data + }) +} + + +/** + * 统计透析龄 + * @param clientCode + * @returns + */ +export function dialysisAgeStatisticsApi(params: DialysisAgeStatisticsParams): AxiosPromise<{ [key: string]: number }> { + return request({ + url: '/patient/info/dialysisAgeStatistics', + method: 'post', + params + }) +} + +/** + * 统计透析领详细信息 + * @param params + * @returns + */ +export function dialysisAgeStatisticsDetailApi(params: DialysisAgeStatisticsDetailParams) :AxiosPromise { + return request({ + url: '/patient/info/dialysisAgeStatisticsDetail', + method: 'post', + params + }) +} + + +/** + * 查询患者生日 + * @param params + * @returns + */ +export function queryPatientByBirthApi(params: QueryPatientByBirthParams) { + return request({ + url: '/patient/info/queryPatientByBirth', + method: 'post', + params + }) +} + +/** + * 获取患者阶段小结 + * @param params + * @returns + */ +export function getMedSummaryApi(params: GetMedSummaryParams): AxiosPromise { + return request({ + url: '/patient/info/getMedSummary', + method: 'post', + params + }) +} + +/** + * 患者血管通路查询统计——查询明细Api + * @param data + * @returns + */ +export function patVascularAccessStatDetailsApi(data: IPatVascularAccessStatDetailsParams) :AxiosPromise { + return request({ + url: '/patient/vascular/access/statDetails', + method: 'post', + data + }) +} + +export function listRecentBpSummary(params:object) { + return request({ + url: '/patient/hemo/med/record/listRecentBpSummary', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 查询患者平均年龄和年龄分布接口API + * @param params + * @returns + */ +export function patientAgeDistributionApi(params: IPatientAgeDistributionParams) :AxiosPromise { + return request({ + url: '/patient/info/patientAgeDistribution', + method: 'post', + params + }) +} + +/** + * 患者血管通路查询统计——查询明细Api + * @param data + * @returns + */ +// export function patVascularAccessStatDetailsApi(data: IPatVascularAccessStatDetailsParams) :AxiosPromise { +// return request({ +// url: '/patient/vascular/access/statDetails', +// method: 'post', +// data +// }) +// } \ No newline at end of file diff --git a/src/api/patient/patient_diseaseInfo.ts b/src/api/patient/patient_diseaseInfo.ts new file mode 100644 index 0000000..4df57af --- /dev/null +++ b/src/api/patient/patient_diseaseInfo.ts @@ -0,0 +1,207 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; + +/** + * + * @returns 新增病情名称 + */ +export function save(data:object) { + return request({ + url: '/patient/disease/info/save', + method: 'post', + data + }); +} +/** + * + * @returns 新增病情名称 + */ +export function saveItem(data:object) { + return request({ + url: '/patient/disease/info/record/save', + method: 'post', + data + }); +} +/** +* @returns 删除本日记录 +*/ +export function deleteItem(params:object) { + return request({ + url: '/patient/disease/info/record/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +/** + * + * @param params + * @returns 查询是否有历史没有解决的名称 + */ +export function detailByDiseaseTypeName(params: object){ + return request({ + url: '/patient/disease/info/detailByDiseaseTypeName', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +/** + * + * @param params + * @returns 查询是否有历史没有解决的名称 + */ +export function list(params: object){ + return request({ + url: '/patient/disease/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function noResolvedCount(){ + return request({ + url: '/patient/disease/info/noResolvedCount', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + }); +} +/** + * + * @param data + * @returns 同步带入过往记录 + */ +export function useHistoryData(params: object){ + return request({ + url: '/patient/disease/info/useHistoryData', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function updateHistoryRecord(params: object){ + return request({ + url: '/patient/disease/info/record/updateHistoryRecord', + method: 'post', + data:params + }) +} +export function deleteMingxiId(params: object) { + return request({ + url: '/patient/disease/info/record/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function listUpdateLog(params: object) { + return request({ + url: '/patient/disease/info/record/log/listUpdateLog', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function listDiseaseUpdateLog(params: object) { + return request({ + url: '/patient/disease/info/record/log/listDiseaseUpdateLog', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} + + +// 删除问题 +export function deleteId(params: object) { + return request({ + url: '/patient/disease/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} + +export function todayData(params: object) { + return request({ + url: '/patient/disease/info/record/todayData', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +// 获取明细 +export function Itemslist(params: object) { + return request({ + url: '/patient/disease/info/record/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function addList(data:object){ + return request({ + url: '/patient/diagnose/history/addList', + method: 'post', + data + }) +} +export function update(data:object){ + return request({ + url: '/patient/disease/info/update', + method: 'post', + data + }) +} + +export function deletePId(params: string) { + return request({ + url: '/patient/diagnose/history/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + +/** + * 获取患者诊断 + * @param params + * @param string + * @param patientCode + * @returns + */ +export function getDiagnoseByPatientCode(params: { patientCode: string }): AxiosPromise { + return request({ + url: '/patient/diagnose/history/getDiagnoseByPatientCode', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} \ No newline at end of file diff --git a/src/api/patient/patient_hemo_med_temp_drug_order.ts b/src/api/patient/patient_hemo_med_temp_drug_order.ts new file mode 100644 index 0000000..fc592c5 --- /dev/null +++ b/src/api/patient/patient_hemo_med_temp_drug_order.ts @@ -0,0 +1,44 @@ +import request from '/@/utils/request'; + +export function Add(params: string) { + return request({ + url: '/patient/hemo/med/temp/drug/order/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/patient/hemo/med/temp/drug/order/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/patient/hemo/med/temp/drug/order/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/patient/hemo/med/temp/drug/order/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function listTodayOrder(params: object) { + return request({ + url: '/patient/hemo/med/temp/drug/order/listTodayOrder', + method: 'post', + data:params + }) +} + diff --git a/src/api/patient/patient_period_summary.ts b/src/api/patient/patient_period_summary.ts new file mode 100644 index 0000000..583dfe3 --- /dev/null +++ b/src/api/patient/patient_period_summary.ts @@ -0,0 +1,44 @@ +import request from '/@/utils/request'; +import type { IPatientSummarySave, IPatientSummaryDetailParams, IListMedSummaryFinalTextParams, IListMedSummaryFinalTextResponse } from './types'; +import { AxiosPromise } from 'axios'; + +/** + * 保存患者阶段小结 + * @param data + * @returns + */ +export function patientSummarySaveApi (data: IPatientSummarySave) { + return request({ + url: '/patient/period/summary/save', + method: 'post', + data + }) +} + + +/** + * 查询患者阶段小结 + * @param params + * @returns + */ +export function getPatientSummaryDetailApi(params: IPatientSummaryDetailParams) { + return request({ + url: '/patient/period/summary/get', + method: 'post', + params + }) +} + + +/** + * 获取所有患者的小结处理意见 + * @param params + * @returns + */ +export function getListMedSummaryFinalTextApi(params: IListMedSummaryFinalTextParams) :AxiosPromise { + return request({ + url: '/patient/info/listMedSummaryFinalText', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/patient/types.ts b/src/api/patient/types.ts new file mode 100644 index 0000000..713461c --- /dev/null +++ b/src/api/patient/types.ts @@ -0,0 +1,287 @@ +export interface BatchReplaceParams { + clientCode: string; + replaceType: 'drugName'; + oldValue: string; + newValue: string; +} + +export interface VascularAccessStatDetailParams { + clientCode: string; + beginDate: string; + endDate: string; + isInHospital: 0 | 1 | 2; +} + +export interface VascularAccessStatDetail { + accessState: 0 | 1; // 使用状态 0停用 1使用中 + code: string; // 通路code + dictText: string; // 通路类型 + patientIsAlive: 1 | 2; // 患者转出状态 1已转入 2已转出 + patientName: string; // 患者名称 +} + +export interface DialysisAgeStatisticsParams { + clientCode: string; + isAlive: number; +} + +export interface DialysisAgeStatisticsDetailParams { + clientCode: string; + condition: string; + isAlive: number; +} + +export interface DialysisAgeStatisticsDetail { + age: string; // 年龄 + dialysisAge: string; // 透析龄 + patientCode: string; // 患者编号 + patientFirstTimeMedTime: string; // 首次透析日期 + patientGender: string; //患者性别 0:男 1:女 + patientName: string; // 患者姓名 +} + +export interface GetMedSummaryParams { + patientCode: string; + date1: string; + date2: string; +} + +export interface IMedSummary { + KTV标本日期当天实际透析时长: string; + KTV标本日期当天抗凝剂名称: string; + KTV标本日期当天抗凝剂总量: number | null; + KTV标本日期当天抗凝剂维持: number | null; + KTV标本日期当天抗凝剂规格: string; + KTV标本日期当天抗凝剂追加: number | null; + KTV标本日期当天抗凝剂首剂: number | null; + KTV标本日期当天提前下机: string; + KTV标本日期当天置换方式: string; + 'KTV标本日期当天透析方式': string; + 'Kt/V检查日期': string; + 'KT/V': number | null; + 'Kt/V检查日期': string; + URR: number | null; + 体重增长率均值: number | null; + 体重增长率标准差: number | null; + 干体重: number | null; + 患者姓名: string; + 患者年龄: number | null; + 患者性别: string; + 患者编号: string; + 日期: string; + 血流量: string; + 患者诊断: string; + 检验结果: { + [key: string]: { 结果列表: IMedSummaryResult[] }; + }; + 透析前BUN: number | string; + 透析后BUN: number | string; + 透析器: string; + 透析期间伸缩压: number | null; + 透析期间舒张压: number | null; + 透析期间脉搏: number | null; + +} + +export interface IMedSummaryResult { + 标本日期: string; + [key: string]: TestResult | string; +} + +export interface TestResult { + // [x: string]: string; + name: string; + result: string; + resultFlag: 'z' | 'g' | 'd'; + unit: string; + ref: string; + systemName: string; +} + +export interface IPatientSummary { + clientCode: string; + code: string; + createTime: string | null; + createUser: number | null; + deletedTime: string | null; + id: number; + isDeleted: 0 | 1; + patientCode: string; + psPeriodJson: string; + psPeriodMonth: number; + psPeriodYear: number; + remark: string; + updateTime: string | null; + updateUser: number | null; +} + +export interface IPatientSummarySave extends Omit { + createTime?: string; + createUser?: number | null; + deletedTime?: string | null; + isDeleted?: 0 | 1; + remark?: string; + updateTime?: string | null; + updateUser?: number | null; +} + + +export interface IPatientSummaryDetailParams { + patientCode: string; + year: number; + month: number; +} + + +export interface IListMedSummaryFinalTextParams { + clientCode: string; + date1: string; + date2: string; +} + + +export interface IListMedSummaryFinalTextResponse { + 阶段小结列表: IListMedSummaryFinalText[]; +} + +export interface IListMedSummaryFinalText { + patCode: string; + 患者姓名: string; + 患者年龄: string; + 患者性别: string; + 患者透析号: string; + 处理意见: IHandlingSuggestions | {}; +} + +export interface IHandlingSuggestions { + 处理意见_干体重: string; + 处理意见_干体重_建议: string; + 处理意见_干体重_无异常: string; + 处理意见_炎症: string; + 处理意见_炎症_应对: string; + 处理意见_炎症_无异常: string; + 处理意见_肾性骨病: string; + 处理意见_肾性骨病_应对: string; + 处理意见_肾性骨病_无异常: string; + 处理意见_营养_其他: string; + 处理意见_营养_其他_文本: string; + 处理意见_营养_其他_无: string; + 处理意见_营养_其他_非布司他: string; + 处理意见_营养_复查离子: string; + 处理意见_营养_复查离子_周: string; + 处理意见_营养_白蛋白: string; + 处理意见_营养_白蛋白_建议用药: string; + 处理意见_营养_磷: string; + 处理意见_营养_磷_建议用药: string; + 处理意见_营养_钙: string; + 处理意见_营养_钙_建议用药: string; + 处理意见_营养_钠: string; + 处理意见_营养_钾: string; + 处理意见_营养_钾_建议用药: string; + 处理意见_营养_饮食指导: string; + 处理意见_血压: string; + 处理意见_血压_建议: string; + 处理意见_血压_无异常: string; + 处理意见_透析效率: string; + 处理意见_透析效率_建议: string; + 处理意见_透析效率_无异常: string; + 处理意见_肾性贫血: string[], + 处理意见_铁指标: string[], + 处理意见_血压_选项: string[], + 处理意见_营养_选项: string[], + 处理意见_炎症_选项: string[], + 处理意见_肾性骨病_选项: string[], + 处理意见_血脂: string, + 处理意见_肝功能: string, + 处理意见_建议用药: string, +} + +export interface IHandlingSuggestionsFormat extends Omit { + 处理意见_营养_白蛋白: string[]; + 处理意见_营养_磷: string[]; + 处理意见_营养_钙: string[]; + 处理意见_营养_钠: string[]; + 处理意见_营养_钾: string[]; + 处理意见_肾性贫血: string[], + 处理意见_铁指标: string[], + 处理意见_血压_选项: string[], + 处理意见_营养_选项: string[], + 处理意见_炎症_选项: string[], + 处理意见_肾性骨病_选项: string[], + 处理意见_透析效率_选项: string[]; + 处理意见_定型文_选项: any; +} + + +export interface IListMedSummaryFinalTextFormat extends Omit { + 处理意见: IHandlingSuggestionsFormat; +} + +export interface IPatientAgeDistributionParams { + clientCode: string; + isAlive: number; + // maxAge: number; + // minAge: number; + interval: any; +} + +export interface IPatientAgeDistributionReponse { + 患者平均年龄: number | null; + 患者年龄分布: { [key: string]: number; }; + 患者总数: number | null; + 患者详情: { [key: string]: any[]; }; + 没有年龄的患者: any[]; +} + + +export interface IPatVascularAccessStatDetailsParams { + clientCode: string; + beginDate: string; + endDate: string; + isInHospital: number; // 是否住院(0:否,1:是) + timeType: string; // 时间类型 0是建立时间 1:首次启用时间 2本院首次使用时间 + patCodes: string[]; // 患者代码 + queryGlType: string; // 查询通用类型 + // queryType: number; // 查询类型 +} + +export interface IPatVascularAccessStatDetailsReponse { + count: number; + detail: IPatVascularAccessStatDetailsDateilItem[]; + group: IPatVascularAccessStatDetailsGroupItem[]; + patientCount: number; +} + +export interface IPatVascularAccessStatDetailsDateilItem { + accessPart: string; + accessState: string; + code: string; + dictText: string; + patientIsAlive: string; + patientName: string; + startTime: string; + useDays: string; + currentTimeUseDays: string; +} + +export interface IPatVascularAccessStatDetailsGroupItem { + count: string; + name: string; + patCode: string; + patName: string; + type: string; +} + +// export interface IPatientAgeDistributionParams { +// clientCode: string; +// isAlive: number; +// maxAge: number; +// minAge: number; +// interval: any; +// } + +// export interface IPatientAgeDistributionReponse { +// 患者平均年龄: number | null; +// 患者年龄分布: { [key: string]: number; }; +// 患者总数: number | null; +// } \ No newline at end of file diff --git a/src/api/patientBill/info.ts b/src/api/patientBill/info.ts new file mode 100644 index 0000000..e779af4 --- /dev/null +++ b/src/api/patientBill/info.ts @@ -0,0 +1,36 @@ +import request from '/@/utils/request'; + +export function Add(params: string) { + return request({ + url: '/patient/bill/info/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/patient/bill/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/patient/bill/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/patient/bill/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} diff --git a/src/api/patient_damage_evaluate/index.ts b/src/api/patient_damage_evaluate/index.ts new file mode 100644 index 0000000..b6c73cf --- /dev/null +++ b/src/api/patient_damage_evaluate/index.ts @@ -0,0 +1,73 @@ +import request from '/@/utils/request'; + +import type { AxiosPromise } from 'axios'; +import type { IPatientDamageEvaluate, IPatientDamageEvaluateReponse } from './types/index.type'; +import type { ICommonListParams } from '../common.type'; + + +/** + * 新增压力性损伤风险api + * @param data + * @returns + */ +export function addPatientDamageEvaluateApi(data: IPatientDamageEvaluate) { + return request({ + url: '/patient/damage/evaluate/add', + method: 'post', + data + }) +} + + +/** + * 修改压力性损伤风险api + * @param data + * @returns + */ +export function updatePatientDamageEvaluateApi(data: IPatientDamageEvaluate) { + return request({ + url: '/patient/damage/evaluate/update', + method: 'post', + data + }) +} + +/** + * 删除压力性损伤风险api + * @param id + * @returns + */ +export function delPatientDamageEvaluateApi(id: number) { + return request({ + url: '/patient/damage/evaluate/delete', + method: 'post', + params: { id } + }) +} + + +/** + * 根据code查询压力性损伤风险api + * @param code + * @returns + */ +export function getPatientDamageEvaluateDetailByCodeApi(code: string): AxiosPromise { + return request({ + url: '/patient/damage/evaluate/detail2', + method: 'post', + params: { code } + }) +} + +/** + * 查询压力性损伤风险列表api + * @param params + * @returns + */ +export function getPatientDamageEvaluateListApi(params: ICommonListParams): AxiosPromise { + return request({ + url: '/patient/damage/evaluate/list', + method: 'post', + params, + }) +} \ No newline at end of file diff --git a/src/api/patient_damage_evaluate/types/index.type.ts b/src/api/patient_damage_evaluate/types/index.type.ts new file mode 100644 index 0000000..5349dfb --- /dev/null +++ b/src/api/patient_damage_evaluate/types/index.type.ts @@ -0,0 +1,25 @@ +import type { IComminList } from '../../common.type'; + +export interface IPatientDamageEvaluate { + code: string; + createTime: string; + createUser: number | null; + deletedTime: string | null; + formJsonBody: string; + formTime: string; + formUser: string; + formUserName: string; + id: number; + isDeleted: number; + patientCode: string; + remark: string; + totalScore: string; + updateTime: string; + updateUser: number | null; +} + + + +export interface IPatientDamageEvaluateReponse extends Omit { + list: IPatientDamageEvaluate[]; +} diff --git a/src/api/patient_diagnose_history2.ts b/src/api/patient_diagnose_history2.ts new file mode 100644 index 0000000..07e497a --- /dev/null +++ b/src/api/patient_diagnose_history2.ts @@ -0,0 +1,41 @@ +import request from '/@/utils/request'; +export function GetHistory2(params:object) { + return request({ + url: '/patient/diagnose/history2/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }); +} +export function saveList(data:object) { + return request({ + url: '/patient/diagnose/history2/saveList', + method: 'post', + headers: { + 'Content-Type': 'application/json' + }, + data + }); +} +export function deleteId(params:object) { + return request({ + url: '/patient/diagnose/history2/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function clear(params:object) { + return request({ + url: '/patient/diagnose/history2/clear', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} \ No newline at end of file diff --git a/src/api/patient_dialysis_info_event/monitoring.ts b/src/api/patient_dialysis_info_event/monitoring.ts new file mode 100644 index 0000000..7dfc6a2 --- /dev/null +++ b/src/api/patient_dialysis_info_event/monitoring.ts @@ -0,0 +1,72 @@ +import request from '/@/utils/request'; +import type { IPatInfoEventmonitoringAddDetail, IGetPatInfoEventmonitoringDeleteDetailListParams, IPatientDialysisInfectionEventMonitoringoCcurrenceRateParams, IPatientDialysisInfectionEventMonitoringoCcurrenceRate } from './types/monitoring.type'; +import type { AxiosPromise } from 'axios'; + +/** + * 新增血液透析感染事件接口Api + * @param data + * @returns + */ +export function patInfoEventmonitoringAddDetailAndReportApi(data: IPatInfoEventmonitoringAddDetail): AxiosPromise { + return request({ + url: '/patient/dialysis/infection/event/monitoring/detail/addDetailAndReport', + method: 'post', + data + }) +} + +/** + * 删除血液透析感染事件API + * @param id + * @returns + */ +export function patInfoEventmonitoringDeleteDetailAndReportApi(id: number) { + return request({ + url: '/patient/dialysis/infection/event/monitoring/detail/deleteDetailAndReport', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { id } + }) +} + +/** + * 查询血液透析感染事件Api + * @param params + * @returns + */ +export function getPatInfoEventmonitoringDeleteDetailListApi(params: IGetPatInfoEventmonitoringDeleteDetailListParams): AxiosPromise { + return request({ + url: '/patient/dialysis/infection/event/monitoring/detail/listCondition', + method: 'post', + params + }) +} + +/** + * 更新血液透析感染事件接口Api + * @param data + * @returns + */ +export function patInfoEventmonitoringUpdatetApi(data: IPatInfoEventmonitoringAddDetail): AxiosPromise { + return request({ + url: '/patient/dialysis/infection/event/monitoring/detail/updateAndReport', + method: 'post', + data + }) +} + + +/** + * 查询感染事件控制率Api + * @param params + * @returns + */ +export function patientDialysisInfectionEventMonitoringoCcurrenceRateApi(params: IPatientDialysisInfectionEventMonitoringoCcurrenceRateParams): AxiosPromise { + return request({ + url: '/patient/dialysis/infection/event/monitoring/detail/patientDialysisInfectionEventMonitoringoCcurrenceRate', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/patient_dialysis_info_event/pathogen.ts b/src/api/patient_dialysis_info_event/pathogen.ts new file mode 100644 index 0000000..da89697 --- /dev/null +++ b/src/api/patient_dialysis_info_event/pathogen.ts @@ -0,0 +1,60 @@ +import request from '/@/utils/request'; +import type { IBloodBornePathogen, IBloodBornePathogenReponse } from './types/pathogen.type'; +import type { IGetPatInfoEventmonitoringDeleteDetailListParams } from './types/monitoring.type'; +import type { AxiosPromise } from 'axios'; + + +/** + * 新增血液透析患者血源性病原体监测API + * @param data + * @returns + */ +export function addBloodBornePathogenApi(data: IBloodBornePathogen) { + return request({ + url: '/patient/dialysis/blood/borne/pathogen/addBloodBornePathogen', + method: 'post', + data + }) +} + +/** + * 更新血液透析患者血源性病原体监测API + * @param data + * @returns + */ +export function updateBloodBornePathogenApi(data: IBloodBornePathogen) { + return request({ + url: '/patient/dialysis/blood/borne/pathogen/update', + method: 'post', + data + }) +} + +/** + * 删除血液透析患者血源性病原体监测API + * @param data + * @returns + */ +export function delBloodBornePathogenApi(id: number) { + return request({ + url: '/patient/dialysis/blood/borne/pathogen/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { id } + }) +} + +/** + * 查询血液透析患者血源性病原体监测API + * @param params + * @returns + */ +export function getBloodBornePathogenListApi(params: IGetPatInfoEventmonitoringDeleteDetailListParams): AxiosPromise { + return request({ + url: '/patient/dialysis/blood/borne/pathogen/listCondition', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/patient_dialysis_info_event/report.ts b/src/api/patient_dialysis_info_event/report.ts new file mode 100644 index 0000000..fd18992 --- /dev/null +++ b/src/api/patient_dialysis_info_event/report.ts @@ -0,0 +1,17 @@ +import request from '/@/utils/request'; +import type { IGetPatInfoEventmonitoringDeleteDetailListParams } from './types/monitoring.type'; +import type { IGetPatInfoEventmonitoringlistConditionReportReponse } from './types/report.type'; +import type { AxiosPromise } from 'axios'; + +/** + * 查询血液透析感染事件月度报告Api + * @param params + * @returns + */ +export function getPatInfoEventmonitoringlistConditionReportApi(params: IGetPatInfoEventmonitoringDeleteDetailListParams): AxiosPromise { + return request({ + url: '/patient/dialysis/infection/event/monthly/report/listCondition', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/patient_dialysis_info_event/types/monitoring.type.ts b/src/api/patient_dialysis_info_event/types/monitoring.type.ts new file mode 100644 index 0000000..63597cc --- /dev/null +++ b/src/api/patient_dialysis_info_event/types/monitoring.type.ts @@ -0,0 +1,195 @@ +import type { IBloodBornePathogen } from './pathogen.type'; + +export interface IPatInfoEventmonitoringAddDetail { + id: number; + code: string; + clientCode: string; + patientCode: string; + monitoringTime: string; + detailText: string; +} + +// export interface IPatInfoEventmonitoringAddDetailDetailText { +// 血液透析用血管通路相关信息: { +// 血管通路类型: string; +// 导管穿刺部位: string; +// 插管日期: string; +// }, +// 血液透析感染事件: { +// 全身使用抗菌药物: boolean; +// 抗菌药物名称: string; +// 开始使用抗菌药物日期: string; +// 原因: { +// 穿刺部位感染: boolean; +// 血流感染: boolean; +// 其他感染: string; +// }, +// 血培养阳性: boolean; +// 送检日期: string; +// 检出病原体: string; +// 来源: { +// 血管通道: boolean; +// 非血管通道: boolean; +// 污染: boolean; +// 不确定: boolean; +// }, +// "血管通路部位出现脓液、发红或肿胀加剧": boolean; +// 部位: { +// "穿刺点/隧道口": boolean; +// "穿刺点/隧道口周围皮肤": boolean; +// "穿刺点/隧道口皮下组织": boolean; +// }, +// 临床表现: { +// 脓液: boolean; +// 发红: boolean; +// 肿胀加剧: boolean; +// }, +// 处理: { +// 局部使用抗菌药物: boolean; +// 抗菌药物封管: boolean; +// 全身使用抗菌药物: boolean; +// 其他: boolean; +// } +// }, +// 感染结局: { +// 通道拔除: boolean; +// 重新插管: { +// 内瘘: boolean; +// 人工血管: boolean; +// 隧道式中心导管: boolean; +// 非隧道式中心导管: boolean; +// 其他: boolean; +// }, +// 住院: boolean; +// 死亡: boolean; +// } +// } + +export interface IPatInfoEventmonitoringAddDetailDetailText { + 血管通路类型: string; + 导管穿刺部位: string; + // 插管日期: { + // 年: number; + // 月: number; + // 日: number; + // }, + 插管日期: string; // YYYY-MM-DD + 血液透析感染事件: string[]; + // 全身使用抗菌药物 + 血液透析感染事件_全身使用抗菌药物_抗菌药物名称: string; + 血液透析感染事件_全身使用抗菌药物_开始使用抗菌药物日期: string; // YYYY-MM-DD + 血液透析感染事件_全身使用抗菌药物_原因: string; + // 血培养阳性 + 血液透析感染事件_血培养阳性_送检日期: string; // YYYY-MM-DD + 血液透析感染事件_血培养阳性_检出病原体: string; + 血液透析感染事件_血培养阳性_来源: string; + // 血管通路部位出现脓液、发红或肿胀加剧 + 血液透析感染事件_血管通路部位出现脓液发红或肿胀加剧_部位: string; + 血液透析感染事件_血管通路部位出现脓液发红或肿胀加剧_临床表现: string; + 血液透析感染事件_血管通路部位出现脓液发红或肿胀加剧_处理: string; + 血液透析感染事件_血管通路部位出现脓液发红或肿胀加剧_其他: string; + // ------ 感染结局 --------- + 感染结局: string; + 感染结局_重新插管_类型: string; +} + + +export interface IGetPatInfoEventmonitoringDeleteDetailListParams { + startTime: string; + endTime: string; + clientCode: string; + patientFuzzyQuery: string; +} + + +export interface IPatientDialysisInfectionEventMonitoringoCcurrenceRateParams { + clientCode: string; + startTime: string; + endTime: string; +} + +export type TPatientDialysisInfectionEventMonitoringoCcurrenceKey = 'HBV阳转率' | 'HCV阳转率' | 'HIV阳转率' | '新入患者传染病标志物检验完成率' | '梅毒阳转率' | '血液透析感染事件发生率' | '血管穿刺部位感染发生率' | '血管通路感染发生率' | '血管通路相关性血流感染发生率' | '长期患者传染病标志物检验完成率'; + + +export interface IPatientDialysisInfectionEventMonitoringoCcurrenceRate { + "HBV阳转率": IPatientDialysisInfectionEventMonitoringoCcurrenceRateHbvItem; + HCV阳转率: IPatientDialysisInfectionEventMonitoringoCcurrenceRateHcvItem; + "HIV阳转率": IPatientDialysisInfectionEventMonitoringoCcurrenceRateHivItem; + "新入患者传染病标志物检验完成率": IPatientDialysisInfectionEventMonitoringoCcurrenceRateCrbItem; + "梅毒阳转率": IPatientDialysisInfectionEventMonitoringoCcurrenceRateMdItem; + "血液透析感染事件发生率": IPatientDialysisInfectionEventMonitoringoCcurrenceRateXtGrsjItem; + "血管穿刺部位感染发生率": IPatientDialysisInfectionEventMonitoringoCcurrenceRateCibwgrItem; + "血管通路感染发生率": IPatientDialysisInfectionEventMonitoringoCcurrenceRateXgtlgrItem; + "血管通路相关性血流感染发生率": IPatientDialysisInfectionEventMonitoringoCcurrenceRateXlxgrItem; + "长期患者传染病标志物检验完成率": IPatientDialysisInfectionEventMonitoringoCcurrenceRateCrbBzwItem; +} + +export interface IPatientDialysisInfectionEventMonitoringoCcurrenceRateItem { + 发生率: number; + 统计基数: number; + 统计数量: number; +} + + +export interface IPatientDialysisInfectionEventMonitoringoCcurrenceRateHbvItem extends IPatientDialysisInfectionEventMonitoringoCcurrenceRateItem { + 统计基数详情: { + 原有患者: any[]; + 留治患者: any[]; + }; + 统计数量详情: IBloodBornePathogen[]; +} + +export interface IPatientDialysisInfectionEventMonitoringoCcurrenceRateHcvItem extends IPatientDialysisInfectionEventMonitoringoCcurrenceRateItem { + 统计基数详情: { + 原有患者: any[]; + 留治患者: any[]; + }; + 统计数量详情: IBloodBornePathogen[]; +} + +export interface IPatientDialysisInfectionEventMonitoringoCcurrenceRateHivItem extends IPatientDialysisInfectionEventMonitoringoCcurrenceRateItem { + 统计基数详情: { + 原有患者: any[]; + 留治患者: any[]; + }; + 统计数量详情: IBloodBornePathogen[]; +} + +export interface IPatientDialysisInfectionEventMonitoringoCcurrenceRateCrbItem extends IPatientDialysisInfectionEventMonitoringoCcurrenceRateItem { + 统计基数详情: any[]; + 统计数量详情: IBloodBornePathogen[]; +} + +export interface IPatientDialysisInfectionEventMonitoringoCcurrenceRateMdItem extends IPatientDialysisInfectionEventMonitoringoCcurrenceRateItem { + 统计基数详情: { + 原有患者: any[]; + 留治患者: any[]; + }; + 统计数量详情: any[]; +} + +export interface IPatientDialysisInfectionEventMonitoringoCcurrenceRateXtGrsjItem extends IPatientDialysisInfectionEventMonitoringoCcurrenceRateItem { + 统计基数详情: any[]; + 统计数量详情: any[]; +} + +export interface IPatientDialysisInfectionEventMonitoringoCcurrenceRateCibwgrItem extends IPatientDialysisInfectionEventMonitoringoCcurrenceRateItem { + 统计基数详情: any[]; + 统计数量详情: IBloodBornePathogen[]; +} + +export interface IPatientDialysisInfectionEventMonitoringoCcurrenceRateXgtlgrItem extends IPatientDialysisInfectionEventMonitoringoCcurrenceRateItem { + 统计基数详情: any[]; + 统计数量详情: any[]; +} + +export interface IPatientDialysisInfectionEventMonitoringoCcurrenceRateXlxgrItem extends IPatientDialysisInfectionEventMonitoringoCcurrenceRateItem { + 统计基数详情: any[]; + 统计数量详情: IBloodBornePathogen[]; +} + +export interface IPatientDialysisInfectionEventMonitoringoCcurrenceRateCrbBzwItem extends IPatientDialysisInfectionEventMonitoringoCcurrenceRateItem { + 统计基数详情: any[]; + 统计数量详情: any[]; +} + diff --git a/src/api/patient_dialysis_info_event/types/pathogen.type.ts b/src/api/patient_dialysis_info_event/types/pathogen.type.ts new file mode 100644 index 0000000..87634fa --- /dev/null +++ b/src/api/patient_dialysis_info_event/types/pathogen.type.ts @@ -0,0 +1,64 @@ +import type { IComminList } from '../../common.type'; + +export interface IBloodBornePathogen { + clientCode: string; + patientCode: string; + firstDialysisTime: string; + thisCenterFirstDialysisTime: string; + monitoringTime: string; + sexuallyText: string; + id: number; + code: string; +} + + +export interface IBloodBornePathogenSexuallyText { + // 在本院血液透析期间是否有以下风险因素 + + 在本院血液透析期间是否有以下风险因素: string[]; + 在本院血液透析期间是否有以下风险因素_在外院血液透析_透析地点: string; + 在本院血液透析期间是否有以下风险因素_住院治疗_住院地点: string; + // 血源性病原体筛查 + + // 首次血液透析前筛查 + 血源性病原体筛查_首次血液透析前筛查_检查日期: string; + 血源性病原体筛查_首次血液透析前筛查_HBsAg: string; + 血源性病原体筛查_首次血液透析前筛查_HBsAb: string; + 血源性病原体筛查_首次血液透析前筛查_HBcAb: string; + 血源性病原体筛查_首次血液透析前筛查_HBeAg: string; + 血源性病原体筛查_首次血液透析前筛查_HBeAb: string; + 血源性病原体筛查_首次血液透析前筛查_HBVDNA: string; + 血源性病原体筛查_首次血液透析前筛查_HCVAb: string; + 血源性病原体筛查_首次血液透析前筛查_HCVRNA: string; + 血源性病原体筛查_首次血液透析前筛查_HIV初筛: string; + 血源性病原体筛查_首次血液透析前筛查_HIV确诊: string; + 血源性病原体筛查_首次血液透析前筛查_梅毒抗体检测: string; + 血源性病原体筛查_首次血液透析前筛查_特异性抗体检测: string; + 血源性病原体筛查_首次血液透析前筛查_特异性抗体检测_抗体滴度: string; + 血源性病原体筛查_首次血液透析前筛查_非特异性抗体检测: string; + 血源性病原体筛查_首次血液透析前筛查_非特异性抗体检测_抗体滴度: string; + // 血液透析期间复查 + 血源性病原体筛查_血液透析期间复查_检查日期: string; + 血源性病原体筛查_血液透析期间复查_HBsAg: string; + 血源性病原体筛查_血液透析期间复查_HBsAb: string; + 血源性病原体筛查_血液透析期间复查_HBcAb: string; + 血源性病原体筛查_血液透析期间复查_HBeAg: string; + 血源性病原体筛查_血液透析期间复查_HBeAb: string; + 血源性病原体筛查_血液透析期间复查_HBVDNA: string; + 血源性病原体筛查_血液透析期间复查_HCVAb: string; + 血源性病原体筛查_血液透析期间复查_HCVRNA: string; + 血源性病原体筛查_血液透析期间复查_HIV初筛: string; + 血源性病原体筛查_血液透析期间复查_HIV确诊: string; + 血源性病原体筛查_血液透析期间复查_梅毒抗体检测: string; + 血源性病原体筛查_血液透析期间复查_特异性抗体检测: string; + 血源性病原体筛查_血液透析期间复查_特异性抗体检测_抗体滴度: string; + 血源性病原体筛查_血液透析期间复查_非特异性抗体检测: string; + 血源性病原体筛查_血液透析期间复查_非特异性抗体检测_抗体滴度: string; + // 血液透析期间发生血源性病原体感染 + 血源性病原体筛查_血液透析期间发生血源性病原体感染: string[]; +} + + +export interface IBloodBornePathogenReponse extends Omit { + list: IBloodBornePathogen[]; +} \ No newline at end of file diff --git a/src/api/patient_dialysis_info_event/types/report.type.ts b/src/api/patient_dialysis_info_event/types/report.type.ts new file mode 100644 index 0000000..83e3606 --- /dev/null +++ b/src/api/patient_dialysis_info_event/types/report.type.ts @@ -0,0 +1,34 @@ +import type { IPatInfoEventmonitoringAddDetail } from './monitoring.type'; + +export interface IGetPatInfoEventmonitoringlistConditionReportReponse { + accessParts: { + [key: string]: number; + }; + accessTypes: { + [key: string]: number; + }; + details: IGetPatInfoEventmonitoringlistConditionReportReponseDetail[]; +} + + +export interface IGetPatInfoEventmonitoringlistConditionReportReponseDetail { + accessPart: string; + accessType: string; + clientCode: string; + code: string; + createTime: string; + createUser: number; + deletedTime: any; + id: number; + isDeleted: number; + isEvent: string; + monitoringDetailCode: string; + monitoringTime: string; + patientCode: string; + patientDialysisInfectionEventMonitoringDetail: IPatInfoEventmonitoringAddDetail; + patientName: string; + patientNo: string; + remark: string; + updateTime: string; + updateUser: number | null; +} diff --git a/src/api/patient_evaluate_info/index.ts b/src/api/patient_evaluate_info/index.ts new file mode 100644 index 0000000..b4ef4e3 --- /dev/null +++ b/src/api/patient_evaluate_info/index.ts @@ -0,0 +1,72 @@ +import request from '/@/utils/request'; +import type { PatientEvaluateInfoListApiParams, PatientEvaluateInfoAddApiData } from './types'; + + +/** + * 获取评估历史记录数据 + * @param params + * @returns + */ +export function patientEvaluateInfoListApi (params: PatientEvaluateInfoListApiParams) { + return request({ + url: '/patient/evaluate/info/list', + method: 'post', + params + }) +} + +/** + * 新增评估历史记录数据 + * @param data + * @returns + */ +export function patientEvaluateInfoAddApi (data: PatientEvaluateInfoAddApiData) { + return request({ + url: '/patient/evaluate/info/add', + method: 'post', + data + }) +} + +/** + * 修改评估历史记录数据 + * @param data + * @returns + */ +export function patientEvaluateInfoUpdateApi (data: Partial) { + return request({ + url: '/patient/evaluate/info/update', + method: 'post', + data + }) +} + +/** + * 删除评估历史记录数据 + * @param data + * @returns + */ +export function patientEvaluateInfoDeleteApi (id: number) { + return request({ + url: '/patient/evaluate/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { id } + }) +} + + +/** + * 获取指定评估记录详情 + * @param id + * @returns + */ +export function patientEvaluateInfoDetailApi (id: number) { + return request({ + url: '/patient/evaluate/info/detail', + method: 'post', + params: { id } + }) +} \ No newline at end of file diff --git a/src/api/patient_evaluate_info/types.ts b/src/api/patient_evaluate_info/types.ts new file mode 100644 index 0000000..50d1188 --- /dev/null +++ b/src/api/patient_evaluate_info/types.ts @@ -0,0 +1,110 @@ +export interface PatientEvaluateInfoListApiParams { + page?: number; + size?: number; + wherecondition: string; + ordercondition: string; +} + + +export interface PatientEvaluateInfoAddApiData { + code: string; + id: number; + clientCode: string; // 客户编号 + patientCode: string; // 患者编号 + evaluateTime: string; // 评估时间 + evaluateOperatorName: string; // 评估人 + evaluateOperator2Name: string; // 评估人2 + remark: string; // 备注 + evaluationText: string; // 评估对象文本(JSON文本) + [key: string]: any; +} + +export interface EvaluationTextObj { + // 一般护理评估 + 一般护理评估_入室方式: string[]; + 一般护理评估_血压: string[]; + 一般护理评估_血压_偏高mmHg: string, + 一般护理评估_血压_偏低mmHg: string, + 一般护理评估_心率: string[]; + 一般护理评估_心率_偏快次分: string; + 一般护理评估_心率_偏慢次分: string; + 一般护理评估_呼吸: string[]; + 一般护理评估_体温: string[]; + 一般护理评估_体温_发热oC: ''; + 一般护理评估_生活自理能力: string[]; + 一般护理评估_体力: string[]; + 一般护理评估_卧位: string[]; + 一般护理评估_食欲: string[]; + 一般护理评估_饮水量控制: string[]; + 一般护理评估_睡眠: string[]; + 一般护理评估_尿量: string[]; + 一般护理评估_尿量_有mld: ''; + 一般护理评估_大便: string[]; + 一般护理评估_大便_次日: '', + 一般护理评估_大便_腹泻性状: '', + 一般护理评估_出血: string[]; + 一般护理评估_出血_有部位: string; + 一般护理评估_用药情况: string[]; + 一般护理评估_用药情况_其他药名: string; + // 前次治疗后专科评估 + 前次治疗后专科评估_前次透析后情况: string[]; + 前次治疗后专科评估_前次透析后情况_其他: string; + 前次治疗后专科评估_脱水情况: string[]; + 前次治疗后专科评估_脱水情况_少脱kg: string; + 前次治疗后专科评估_脱水情况_多脱kg: string; + 前次治疗后专科评估_内瘘穿刺点情况: string[]; + // 新患者情况 + 新患者情况_是否首次透析: string[]; + 新患者情况_是否首次透析_否_已运行透析天: string; + 新患者情况_是否首次透析_否_已运行透析月: string; + 新患者情况_是否首次透析_否_已运行透析年: string; + 新患者情况_外院透析处方: string[]; + 新患者情况_外院透析处方_次周: string; + 新患者情况_外院透析处方_小时次: string; + 新患者情况_外院透析处方_抗凝剂及用量: string; + 新患者情况_外院透析有无不适: string[]; + 新患者情况_外院透析有无不适_有: string; + // 单针双腔导管置管术后 + 单针双腔导管置管术后_位置: string[]; + // 单针双腔导管置管术后_位置_颈内静脉: string[]; + // 单针双腔导管置管术后_位置_股静脉: string[]; + 单针双腔导管置管术后_位置_颈内静脉_左: boolean, + 单针双腔导管置管术后_位置_颈内静脉_右: boolean, + 单针双腔导管置管术后_位置_股静脉_左: boolean, + 单针双腔导管置管术后_位置_股静脉_右: boolean, + 单针双腔导管置管术后_位置_股静脉_术后天: string; + 单针双腔导管置管术后_伤口外观: string[]; + 单针双腔导管置管术后_血肿大小cm: string; + 单针双腔导管置管术后_换药: string[]; + 单针双腔导管置管术后_导管流量: string[]; + 单针双腔导管置管术后_有无发热: string[]; + 单针双腔导管置管术后_有无发热_有oC: string; + // 动静脉内瘘吻合术后 + 动静脉内瘘吻合术后_位置: string[]; + // 动静脉内瘘吻合术后_位置_自体: string[]; + // 动静脉内瘘吻合术后_位置_人工血管: string[]; + 动静脉内瘘吻合术后_位置_自体_上: boolean, + 动静脉内瘘吻合术后_位置_自体_下: boolean, + 动静脉内瘘吻合术后_位置_自体_左: boolean, + 动静脉内瘘吻合术后_位置_自体_右: boolean, + 动静脉内瘘吻合术后_位置_人工血管_上: boolean, + 动静脉内瘘吻合术后_位置_人工血管_下: boolean, + 动静脉内瘘吻合术后_位置_人工血管_左: boolean, + 动静脉内瘘吻合术后_位置_人工血管_右: boolean, + 动静脉内瘘吻合术后_位置_人工血管_术后天: string; + 动静脉内瘘吻合术后_位置_人工血管_术后周: string; + 动静脉内瘘吻合术后_上次透析穿刺状况: string[]; + 动静脉内瘘吻合术后_触诊听诊血管杂音: string[]; + 动静脉内瘘吻合术后_内瘘成熟训练: string[]; + 动静脉内瘘吻合术后_内瘘成熟训练_有次日: string; + 动静脉内瘘吻合术后_内瘘使用年限: string[]; + // 健康教育指导 + 健康教育指导_健康教育方式: string[]; + 健康教育指导_饮食指导: string[]; + 健康教育指导_运动指导: string[]; + 健康教育指导_血管通路指导: string[]; + 健康教育指导_体重管理: string[]; + 健康教育指导_受教者: string[]; + 健康教育指导_受教者_照顾者其它: string; + 健康教育指导_受教者_其它: string; +} \ No newline at end of file diff --git a/src/api/patient_fall_evaluate/index.ts b/src/api/patient_fall_evaluate/index.ts new file mode 100644 index 0000000..9b395e3 --- /dev/null +++ b/src/api/patient_fall_evaluate/index.ts @@ -0,0 +1,139 @@ +import request from '/@/utils/request'; + +import type { AxiosPromise } from 'axios'; +import type { IPatientFailEvaluate, IPatientFailEvaluateReponse } from './types/index.type'; +import type { ICommonListParams } from '../common.type'; + + +/** + * 新增跌倒评估险api + * @param data + * @returns + */ +export function addPatientFallEvaluateApi(data: IPatientFailEvaluate) { + return request({ + url: '/patient/fall/evaluate/add', + method: 'post', + data + }) +} + + +/** + * 修改跌倒评估险api + * @param data + * @returns + */ +export function updatePatientFallEvaluateApi(data: IPatientFailEvaluate) { + return request({ + url: '/patient/fall/evaluate/update', + method: 'post', + data + }) +} + +/** + * 删除跌倒评估险api + * @param id + * @returns + */ +export function delPatientFallEvaluateApi(id: number) { + return request({ + url: '/patient/fall/evaluate/delete', + method: 'post', + params: { id } + }) +} + + +/** + * 根据code查询跌倒评估险api + * @param code + * @returns + */ +export function getPatientFallEvaluateDetailByCodeApi(code: string): AxiosPromise { + return request({ + url: '/patient/fall/evaluate/detail2', + method: 'post', + params: { code } + }) +} + +/** + * 查询跌倒评估险列表api + * @param params + * @returns + */ +export function getPatientFallEvaluateListApi(params: ICommonListParams): AxiosPromise { + return request({ + url: '/patient/fall/evaluate/list', + method: 'post', + params, + }) +} + +//滑脱风险评估 +/** + * 新增滑脱评估险api + * @param data + * @returns + */ +export function addPatientSlippageApi(data) { + return request({ + url: '/patient/assessment/of/catheter/dislocation/add', + method: 'post', + data + }) +} + +/** + * 修改滑脱评估险api + * @param data + * @returns + */ +export function editPatientSlippageApi(data) { + return request({ + url: '/patient/assessment/of/catheter/dislocation/update', + method: 'post', + data + }) +} + +/** + * 删除跌倒评估险api + * @param id + * @returns + */ +export function delPatientSlippageApi(id: number) { + return request({ + url: '/patient/assessment/of/catheter/dislocation/delete', + method: 'post', + params: { id } + }) +} + +/** + * 查询滑脱评估险列表api + * @param params + * @returns + */ +export function getPatientSlippageListApi(params: ICommonListParams): AxiosPromise { + return request({ + url: '/patient/assessment/of/catheter/dislocation/list', + method: 'post', + params, + }) +} + +/** + * 根据code查询滑脱评估险api + * @param code + * @returns + */ +export function getPatientSlippageDetailByCodeApi(id,code): AxiosPromise { + return request({ + url: `/patient/assessment/of/catheter/dislocation/detail2?id=${id}`, + method: 'post', + params: { code } + }) +} \ No newline at end of file diff --git a/src/api/patient_fall_evaluate/types/index.type.ts b/src/api/patient_fall_evaluate/types/index.type.ts new file mode 100644 index 0000000..facf8ab --- /dev/null +++ b/src/api/patient_fall_evaluate/types/index.type.ts @@ -0,0 +1,25 @@ +import type { IComminList } from '../../common.type'; + +export interface IPatientFailEvaluate { + code: string; + createTime: string; + createUser: number | null; + deletedTime: string | null; + formJsonBody: string; + formTime: string; + formUser: string; + formUserName: string; + id: number; + isDeleted: number; + patientCode: string; + remark: string; + totalScore: string; + updateTime: string; + updateUser: number | null; +} + + + +export interface IPatientFailEvaluateReponse extends Omit { + list: IPatientFailEvaluate[]; +} diff --git a/src/api/patient_foot_inspect/index.ts b/src/api/patient_foot_inspect/index.ts new file mode 100644 index 0000000..71a2290 --- /dev/null +++ b/src/api/patient_foot_inspect/index.ts @@ -0,0 +1,144 @@ +import request from '/@/utils/request'; +import type { AxiosPromise } from 'axios'; +import type { IPatFootInspeck, IPatFootInspeckList, IPatientFootInspectListPatGroupParams, IPatientFootInspectListPatGroup } from './types/index.type'; +import type { ICommonListParams } from '../common.type'; + + + +/** + * 新增足部管理记录 + * @param data + * @returns + */ +export function patientFootInspectAddApi(data: IPatFootInspeck) { + return request({ + url: '/patient/foot/inspect/add', + method: 'post', + data + }) +} + + +/** + * 批量新增足部管理记录 + * @param data + * @returns + */ +export function patientFootInspectAddListApi(data: IPatFootInspeck[]) { + return request({ + url: '/patient/foot/inspect/addList', + method: 'post', + data + }) +} + + +/** + * 删除足部管理记录 + * @param id + * @returns + */ +export function patientFootInspectDelApi(id: number) { + return request({ + url: '/patient/foot/inspect/delete', + method: 'post', + params: { id } + }) +} + + +/** + * 批量删除足部管理记录 + * @param ids + * @returns + */ +export function patientFootInspectDelAllApi(ids: string) { + return request({ + url: '/patient/foot/inspect/deleteAll', + method: 'post', + data: { ids } + }) +} + +/** + * 根据id获取足部管理记录详情 + * @param id + * @returns + */ +export function patientFootInspectDetailByIdApi(id: number): AxiosPromise { + return request({ + url: '/patient/foot/inspect/detail', + method: 'post', + data: { id } + }) +} + + +/** + * 根据code获取足部管理记录详情 + * @param code + * @returns + */ +export function patientFootInspectDetailByCodeApi(code: string): AxiosPromise { + return request({ + url: '/patient/foot/inspect/detail2', + method: 'post', + data: { code } + }) +} + + +/** + * 获取足部管理记录列表 + * @param params + * @returns + */ +export function patientFootInspectListApi(params: ICommonListParams): AxiosPromise { + return request({ + url: '/patient/foot/inspect/list', + method: 'post', + params + }) +} + + +/** + * 保存足部管理记录 + * @param data + * @returns + */ +export function patientFootInspectSaveApi(data: IPatFootInspeck) { + return request({ + url: '/patient/foot/inspect/save', + method: 'post', + data + }) +} + + +/** + * 更新足部管理记录 + * @param data + * @returns + */ +export function patientFootInspectUpdateApi(data: IPatFootInspeck) { + return request({ + url: '/patient/foot/inspect/update', + method: 'post', + data + }) +} + + +/** + * 获取患者足部管理记录检查未检查患者列表 + * @param data + * @returns + */ +export function patientFootInspectListPatGroupApi(params: IPatientFootInspectListPatGroupParams) :AxiosPromise { + return request({ + url: '/patient/foot/inspect/listPatGroup', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/patient_foot_inspect/patient_foot_base_info.ts b/src/api/patient_foot_inspect/patient_foot_base_info.ts new file mode 100644 index 0000000..a73ce47 --- /dev/null +++ b/src/api/patient_foot_inspect/patient_foot_base_info.ts @@ -0,0 +1,138 @@ +import request from '/@/utils/request'; +import type { AxiosPromise } from 'axios'; +import type { ICommonListParams } from '../common.type'; +import type { IPatFootBaaeInfo, IPatFootBaaeInfoRespData, IGetLatestDataParams, IGetLatestDataReponse, IGetLatestData } from './types/patient_foot_base_info.type'; + +/** + * 新增患者足部管理基础信息 + * @param data + * @returns + */ +export function patientFootBaseAddApi(data) { + return request({ + url: '/patient/foot/base/info/add', + method: 'post', + data + }) +} + + +/** + * 批量添加患者足部管理基础信息 + * @param data + * @returns + */ +export function patientFootBaseAddListApi(data: IPatFootBaaeInfo) { + return request({ + url: '/patient/foot/base/info/addList', + method: 'post', + data + }) +} + +/** + * 删除患者足部管理基础信息 + * @param id + * @returns + */ +export function patientFootBaseDelApi(id: number) { + return request({ + url: '/patient/foot/base/info/delete', + method: 'post', + params: { id } + }) +} + + +/** + * 批量删除患者足部管理基础信息 + * @param ids + * @returns + */ +export function patientFootBaseBratchDelApi(ids: string) { + return request({ + url: '/patient/foot/base/info/deleteAll', + method: 'post', + params: { ids } + }) +} + +/** + * 根据id获取患者足部管理基础信息 + * @param id + * @returns + */ +export function patientFootBaseDetaliByIdApi(id: number) { + return request({ + url: '/patient/foot/base/info/detail', + method: 'post', + params: { id } + }) +} + +/** + * 根据code获取患者足部管理基础信息 + * @param code + * @returns + */ +export function patientFootBaseDetaliByCodeApi(code: string) { + return request({ + url: '/patient/foot/base/info/detail2', + method: 'post', + params: { code } + }) +} + + +/** + * 获取患者足部管理基础信息列表 + * @param params + * @returns + */ +export function patientFootBaseListApi(params: ICommonListParams) :AxiosPromise { + return request({ + url: '/patient/foot/base/info/list', + method: 'post', + params, + }) +} + +/** + * 保存患者足部管理基础信息 + * @param data + * @returns + */ +export function patientFootBaseSaveApi(data: IPatFootBaaeInfo) { + return request({ + url: '/patient/foot/base/info/save', + method: 'post', + data, + }) +} + +/** + * 更新患者足部管理基础信息 + * @param data + * @returns + */ +export function patientFootBaseUpdateApi(data: Partial) { + return request({ + url: '/patient/foot/base/info/update', + method: 'post', + data, + }) +} + + +/** + * 根据患者编号/开始日期/结束日期获取患者最新一条ABI数据 + * @param params + * @returns + */ +export function getLatestDataApi(params: IGetLatestDataParams) : AxiosPromise { + return request({ + url: '/patient/result/from/doppler/blood/flow/device/getLatestData', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/patient_foot_inspect/types/index.type.ts b/src/api/patient_foot_inspect/types/index.type.ts new file mode 100644 index 0000000..96e594b --- /dev/null +++ b/src/api/patient_foot_inspect/types/index.type.ts @@ -0,0 +1,149 @@ +import type { IComminList } from '../../common.type'; + + +export type TRiskAssessmentType = '低' | '中' | '高'; + +export interface IPatFootInspeck { + clientCode: string; + code: string; + createTime: string; + createUser: number | null; + deleteTime: string; + id: number; + inspectJsonBody: string; + inspectPerson: string; + inspectPersonName: string; + inspectTime: string; + isDeleted: number; + patientCode: string; + patientName: string; + remark: string; + updateTime: string; + updateUser: number | null; +} + + +export interface IPatFootInspeckList extends Omit { + list: IPatFootInspeck[]; +} + + +export interface IFootInspectJsonBody { + // 以下是保留字段,暂时用不到先留着 + 姓名: string; + 性别: string; + 年龄: number | null; + PAD诊断_有无: string; + PAD诊断_年月日: string; + PAD诊断_具体: string; + DM诊断_有无: string; + DM诊断_年月日: string; + DM诊断_具体: string; + 下肢脚趾截至_有无: string; + 下肢脚趾截至_年月日: string; + 下肢脚趾截至_具体: string; + 移动: string[]; + // 以上是保留字段,暂时用不到先留着 + 左: IFootOne; + 右: IFootOne; + 足部分数: number; + 风险评估: TRiskAssessmentType; + 基础信息编号: string; + 患者是否拒绝检查: boolean; + 是否特殊关注: boolean; + 是否推送医生介入: boolean; +} + + +export interface IFootOne { + 循环_足背动脉: number | null; + 循环_踝动脉: number | null; + 循环_腘动脉: number | null; + 循环_浮肿: number | null; + 感觉_麻木: number | null; + 感觉_发凉: number | null; + 感觉_发热: number | null; + 感觉_疼痛: number | null; + 感觉_感觉迟钝: number | null; + 感觉_瘙痒: number | null; + 皮肤_干燥: number | null; + 皮肤_裂纹: number | null; + 皮肤_表皮剥脱: number | null; + 皮肤_外伤: number | null; + 皮肤_鸡眼: number | null; + 皮肤_颜色: number[]; + // 皮肤_颜色_正常: boolean; + 指甲_弯曲甲: number | null; + 指甲_厚甲: number | null; + // 其他: string; + 照片粘贴: string[]; + 病人自述: string; + 护士意见: string; + 医生意见: string; + 其它_ABI: number; +} + +export interface IFootOneV2 { + 其它_ABI: number | null; + 循环_足背动脉: number | null; + 循环_踝动脉: number | null; + 循环_腘动脉: number | null; + 循环_浮肿: number | null; + 感觉_麻木: number | null; + 感觉_发凉: number | null; + 感觉_发热: number | null; + 感觉_疼痛: number | null; + 感觉_感觉迟钝: number | null; + 感觉_瘙痒: number | null; + 皮肤_干燥: number | null; + 皮肤_裂纹: number | null; + 皮肤_表皮剥脱: number | null; + 皮肤_外伤: number | null; + 皮肤_鸡眼: number | null; + 皮肤_颜色: number[]; + 指甲_弯曲甲: number[]; + 指甲_厚甲: number[]; +} + +export interface IFootInspectJsonBodyV2 extends Omit { + 左: IFootOneV2; + 右: IFootOneV2; + version: number; // 版本号 + 左_右_照片粘贴: string[]; + 左_右_病人自述: string; + 左_右_护士意见: string; + 左_右_医生意见: string; + 移动: string; + PAD日期_类型: number; + DM日期_类型: number; + 下肢脚趾截至日期_类型: number; +} + + +export interface IFootFormData extends Omit { + inspectJsonBody: IFootInspectJsonBodyV2; +} + +export interface IPatientFootInspectListPatGroupParams { + clientCode: string; + year: number; + month: number; +} + + +export interface IPatientFootInspectListPatGroup { + 做过足部护理患者明细列表: IPatientFootInspectListPatGroupItem2[]; + 做过足部护理人数: number; + 没有做过足部护理患者明细列表:IPatientFootInspectListPatGroupItem[]; + 没有做过足部护理人数: number; +} + +export interface IPatientFootInspectListPatGroupItem { + patCode: string; + footInspectCode: string; + patName: string; +} + +export interface IPatientFootInspectListPatGroupItem2 extends IPatientFootInspectListPatGroupItem { + inspect_json_body: string; +} \ No newline at end of file diff --git a/src/api/patient_foot_inspect/types/patient_foot_base_info.type.ts b/src/api/patient_foot_inspect/types/patient_foot_base_info.type.ts new file mode 100644 index 0000000..dcc6cd5 --- /dev/null +++ b/src/api/patient_foot_inspect/types/patient_foot_base_info.type.ts @@ -0,0 +1,123 @@ +import type { IComminList } from '../../common.type'; + +export interface IPatFootBaaeInfo { + code: string; + createTime: string; + createUser: number | null; + deletedTime: string; + // dm + historyDmDateType: number; // 日期格式:0 = YYYY-MM-DD, 1 = YYYY-MM, 2 = YYYY, 默认为0 + historyDmDate: string; + historyDmType: string; + historyDmValue: string; + // pad + historyPadDateType: number; // 日期格式:0 = YYYY-MM-DD, 1 = YYYY-MM, 2 = YYYY, 默认为0 + historyPadDate: string; + historyPadType: string; + historyPadValue: string; + // 下肢 + historyDmFootDateType: number; // 日期格式:0 = YYYY-MM-DD, 1 = YYYY-MM, 2 = YYYY, 默认为0 + historyDmFootDesc: string; + historyDmFootDate: string; + hitoryDmFootType: string; + id: number | null; + infoIsIsenable: number; + isDeleted: number; + moveType: string; + patientCode: string; + remark: string; + updateTime: string; + updateUser: number | null; +} + +export interface IPatFootBaaeInfoRespData extends Omit { + list: IPatFootBaaeInfo[]; +} + + +export interface IGetLatestDataParams { + patCode: string; + date1: string; + date2: string; +} + + +export interface IGetLatestData { + abiAdvice: string; + abil: number; + abir: number; + bail: number; + bair: number; + checkDate: number + checkResult: string; + clientCode: string; + code: string; + createTime: null; + createUser: null; + dbpla: number; + dbplafa: number; + dbplapta: number; + dbplb: number; + dbpra: number; + dbprafa: number; + dbprapta: number; + dbprb: number; + deletedTime: null, + diagnosis: string; + diagnosticianDoctor: string; + examDepartment: string; + examDoctor: string; + examId: string; + examTypeId: number; + examTypeName: string; + id: number; + image: string; + imagePath: string; + imageType: any; + indexLafa: string; + indexLapta: string; + indexLb: number; + indexRafa: string; + indexRapta: number; + indexRb: number; + isDeleted: number; + mbpla: number; + mbplafa: number; + mbplapta: number; + mbplb: number; + mbpra: number; + mbprafa: number; + mbprapta: number; + mbprb: number; + operatorDoctor: number; + patientCode: string; + pplafa: number; + pplapta: number; + pplb: number; + pprafa: number; + pprapta: number; + pprb: number; + pwvResult: any; + pwvl: number; + pwvr: number; + remark: string; + requestDate: string; + requestDepartment: string; + requestDoctor: string; + sbpla: number; + sbplafa: number; + sbplapta: number; + sbplb: number; + sbpra: number; + sbprafa: number; + sbprapta: number; + sbprb: number; + tbil: number; + tbir: number; + updateTime: string; + updateUser: any; +} + +export interface IGetLatestDataReponse extends Omit { + list: IGetLatestData[]; +} diff --git a/src/api/patient_gwsb_assist_test/index.ts b/src/api/patient_gwsb_assist_test/index.ts new file mode 100644 index 0000000..a0a3fd5 --- /dev/null +++ b/src/api/patient_gwsb_assist_test/index.ts @@ -0,0 +1,120 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { IPatientGwsbAssistTestSave, IPatientGwsbAssistTest } from './types/index.type'; + +/** + * 新增患者辅助检查数据 + * @param data + * @returns + */ +export function patientGwsbAssistTestAddApi(data: IPatientGwsbAssistTestSave) { + return request({ + url: '/patient/gwsb/assist/test/add', + method: 'post', + data, + }); +} + +/** + * 批量新增患者辅助检查数据 + * @param data + * @returns + */ +export function patientGwsbAssistTestBatchAddApi(data: IPatientGwsbAssistTestSave[]) { + return request({ + url: '/patient/gwsb/assist/test/addList', + method: 'post', + data, + }); +} + +/** + * 删除患者辅助检查数据 + * @param data + * @returns + */ +export function patientGwsbAssistTestDelApi(id: number) { + return request({ + url: '/patient/gwsb/assist/test/delete', + method: 'post', + params: { id }, + }); +} + +/** + * 批量删除患者辅助检查数据 + * @param data + * @returns + */ +export function patientGwsbAssistTestBatchDelApi(ids: string) { + return request({ + url: '/patient/gwsb/assist/test/deleteAll', + method: 'post', + params: { ids }, + }); +} + +/** + * 根据id获取患者辅助检查数据 + * @param data + * @returns + */ +export function patientGwsbAssistTestDetailByIdApi(id: number): AxiosPromise { + return request({ + url: '/patient/gwsb/assist/test/detail', + method: 'post', + params: { id }, + }); +} + +/** + * 根据code获取患者辅助检查数据 + * @param data + * @returns + */ +export function patientGwsbAssistTestDetailByCodeApi(code: string): AxiosPromise { + return request({ + url: '/patient/gwsb/assist/test/detail2', + method: 'post', + params: { code }, + }); +} + +/** + * 获取患者辅助检查数据列表 + * @param params + * @returns + */ +export function patientGwsbAssistTestListeApi(params): AxiosPromise<{ list: IPatientGwsbAssistTest[]; total: number; [key: string]: any }> { + return request({ + url: '/patient/gwsb/assist/test/list', + method: 'post', + params, + }); +} + +/** + * 保存患者辅助检查数据 + * @param data + * @returns + */ +export function patientGwsbAssistTestSaveApi(data: IPatientGwsbAssistTestSave) { + return request({ + url: '/patient/gwsb/assist/test/save', + method: 'post', + data, + }); +} + +/** + * 保存患者辅助检查数据 + * @param data + * @returns + */ +export function patientGwsbAssistTestUpdateApi(data: IPatientGwsbAssistTestSave) { + return request({ + url: '/patient/gwsb/assist/test/update', + method: 'post', + data, + }); +} diff --git a/src/api/patient_gwsb_assist_test/types/index.type.ts b/src/api/patient_gwsb_assist_test/types/index.type.ts new file mode 100644 index 0000000..cda1a61 --- /dev/null +++ b/src/api/patient_gwsb_assist_test/types/index.type.ts @@ -0,0 +1,62 @@ +export enum EPatGwsbAssistTestType { + chestXRay = '胸部X线检查', + electrocardiogram = '心电图检查', + echocardiogram = '超声心动图检查', +} + +export interface IPatientGwsbAssistTest { + clientCode: string; + code: string; + createTime: string; + createUser: number | null; + deletedTime: string | null; + id: number | null; + isDeleted: number; + patientCode: string; + patientName: string; + remark: string; + testBody: string; + testDate: string; + testIsDone: 0 | 1; + testType: EPatGwsbAssistTestType; + updateTime: string; + updateUser: number | null; +} + +export interface IPatientGwsbAssistTestSave + extends Omit { + createTime?: string; + createUser?: number | null; + deletedTime?: string | null; + isDeleted?: number; + patientName?: string; + updateTime?: string; + updateUser?: number | null; +} + + +export interface IChestXRayTestBody { + 胸部X线_心胸比: number | null; + 胸部X线_诊断: string[]; +} + + +export interface IElectrocardiogramTestBody { + 心电图_诊断: string[]; +} + +export interface IEchocardiogramTestBody { + 超声心动图_射血分数: number | null; + 超声心动图_心包积液: string; + 超声心动图_左房扩大: string; + 超声心动图_右房扩大: string; + 超声心动图_左室扩大: string; + 超声心动图_右室扩大: string; + 超声心动图_左室增厚: string; + 超声心动图_室间隔增厚: string; + 超声心动图_左室舒张功能减低: string; + 超声心动图_二尖瓣钙化: string; + 超声心动图_二尖瓣反流: string; + 超声心动图_三尖瓣反流: string; + 超声心动图_主动脉瓣反流: string; +} diff --git a/src/api/patient_hemo_med_end/index.ts b/src/api/patient_hemo_med_end/index.ts new file mode 100644 index 0000000..e8f459e --- /dev/null +++ b/src/api/patient_hemo_med_end/index.ts @@ -0,0 +1,46 @@ +import request from '/@/utils/request'; + +export function Add(params: Object) { + return request({ + url: '/patient/hemo/med/end/add', + method: 'post', + data: params, + }); +} +export function update(params: Object) { + return request({ + url: '/patient/hemo/med/end/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/patient/hemo/med/end/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/patient/hemo/med/end/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function addDefaultRow(params: object) { + return request({ + url: '/patient/hemo/med/end/addDefaultRow', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} \ No newline at end of file diff --git a/src/api/patient_hemo_med_record/index.ts b/src/api/patient_hemo_med_record/index.ts new file mode 100644 index 0000000..58b4ae1 --- /dev/null +++ b/src/api/patient_hemo_med_record/index.ts @@ -0,0 +1,487 @@ +import request from '/@/utils/request'; +import type { PrinterSjcsParams, ListRecentSummaryListParams, ListRecordsByPatItem, AdvanceDeliveryParams, AdvanceDelivery } from './types' +import { AxiosPromise } from 'axios'; +import type { + IGetRecordsInTodayParams, + IRecordsInToday, + IListReadyRowsParams, + IListReadyRows, + IListStatInfoParams, + IListStatInfo, + IPrepareWorkParams, + IPrepareWork, + IPrepareWorkMedicineParams, + IPrepareWorkMedicine, + IPrepareWorkMedicineStatParams, + IPrepareWorkMedicineStat, + IFixedDrugStatisticsParams, + IFixedDrugStatistics, + IStatisticBothItemDrugsParams, + IStatisticBothItemDrugsItem, + IListRecordsByToolUsageDetailsParams, + IListRecordsByToolUsageDetailsReponse, +} from './types/index.type'; + + +export function Add(params: string) { + return request({ + url: '/patient/hemo/med/record/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/patient/hemo/med/record/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/patient/hemo/med/record/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/patient/hemo/med/record/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function syncClothesWeight(params: object) { + return request({ + url: '/patient/hemo/med/record/syncClothesWeight', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 获取透析单列表 + * @param params + * @returns + */ +export function getRecordsInToday(params: IGetRecordsInTodayParams): AxiosPromise { + return request({ + url: '/patient/hemo/med/record/getRecordsInToday2', + method: 'post', + data:params + }) +} + +/** + * 获取透析单详情 + * @param params + * @returns + */ +export function getRecordsDetail(params: string) { + return request({ + url: '/patient/hemo/med/record/detail2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }) +} + +/** + * 获取透析耗材准备Api + * @param params + * @returns + */ +export function listReadyRows(params: IListReadyRowsParams) :AxiosPromise { + return request({ + url: '/patient/hemo/med/record/listReadyRows', + method: 'post', + data:params + }) +} + +/** + * 获取透析耗材统计Api + * @param params + * @returns + */ +export function listStatInfo(params: IListStatInfoParams) :AxiosPromise { + return request({ + url: '/patient/hemo/med/record/listStatInfo', + method: 'post', + data:params + }) +} + +/** + * 获取上机参数Api + * @param params + * @returns + */ +export function prepareWork(params: IPrepareWorkParams) :AxiosPromise { + return request({ + url: '/patient/hemo/med/record/prepareWork', + method: 'post', + data:params + }) +} + +/** + * 获取药品准备Api + * @param params + * @returns + */ +export function prepareWorkMedicine(params: IPrepareWorkMedicineParams) :AxiosPromise { + return request({ + url: '/patient/hemo/med/record/prepareWorkMedicine', + method: 'post', + data:params + }) +} + +/** + * 获取药品统计Api + * @param params + * @returns + */ +export function prepareWorkMedicineStat(params: IPrepareWorkMedicineStatParams) :AxiosPromise { + return request({ + url: '/patient/hemo/med/record/prepareWorkMedicineStat', + method: 'post', + data:params + }) +} +export function batchPrint(params: object) { + return request({ + url: '/patient/hemo/med/record/batchPrint', + method: 'post', + data:params + }) +} +export function batchPrint2(params: object) { + return request({ + url: '/patient/hemo/med/record/batchPrint2', + method: 'post', + data:params + }) +} +export async function batchPrintAwait(params: object) { + return request({ + url: '/patient/hemo/med/record/batchPrint2', + method: 'post', + data:params + }) +} +export function doCheck(params: string) { + return request({ + url: '/patient/hemo/med/record/doCheck2', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }) +} +export function doArchive(params: string) { + return request({ + url: '/patient/hemo/med/record/doArchive', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }) +} +export function listMonitorDatas1(params: object) { + return request({ + url: '/patient/hemo/med/record/listMonitorDatas1', + method: 'post', + data:params + }) +} + +export function listMonitorDatas2(params: object) { + return request({ + url: '/patient/hemo/med/record/listMonitorDatas2', + method: 'post', + data:params + }) +} +export function listRecordCountByPat(params: object) { + return request({ + url: '/patient/hemo/med/record/listRecordCountByPat', + method: 'post', + data:params + }) +} + +export function updatePureWeight(params: object) { + return request({ + url: '/patient/hemo/med/record/updatePureWeight', + method: 'post', + data:params + }) +} +export function listRecordsByPat(params: object): AxiosPromise<{ list: ListRecordsByPatItem[]; total: number; [key: string]: any;}> { + return request({ + url: '/patient/hemo/med/record/listRecordsByPat', + method: 'post', + data:params + }) +} +export function printPrePaper(params: string) { + return request({ + url: '/patient/hemo/med/record/printPrePaper', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }) +} +export function getSummary(params: object) { + return request({ + url: '/patient/hemo/med/record/getSummary', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} +export function getAlertSet(params: object) { + return request({ + url: '/monitor/data/alert/getAlertSet', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} +export function saveAlertSet(params: object) { + return request({ + url: '/monitor/data/alert/saveAlertSet', + method: 'post', + data:params + }) +} +export function listWithCalendar(params: object) { + return request({ + url: '/patient/hemo/med/record/listWithCalendar', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function doUpdatePureState(params: object) { + return request({ + url: '/patient/hemo/med/record/doUpdatePureState', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} +export function listRecordsHistory(params: object) { + return request({ + url: '/patient/hemo/med/record/listRecordsHistory', + method: 'post', + data:params + }) +} + + + +/** + * 获取病区数据 + * @param data + * @returns + */ +export function apiGetDeviceGroups(params: object) { + return request({ + url: "/device/group/info/list", + method: "post", + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} + + +/** + * 获取固定药品统计数据 + * @param data + * @returns + */ +export function apiFixedDrugStatistics(data: IFixedDrugStatisticsParams) :AxiosPromise { + return request({ + url: "/patient/hemo/med/record/listHemoMedMedicineStat2", + method: "post", + headers: { + "Content-Type": "application/json" + }, + data + }); +} +export function sendQueueNotification(params: object) { + return request({ + url: '/patient/hemo/med/record/sendQueueNotification', + method: 'post', + params + }) +} + + +/** + * 获取上级参数a4值打印的图片 + * @param data + * @returns + */ +export function printerSjcsByA4Api(data: PrinterSjcsParams): AxiosPromise { + return request({ + url: '/patient/hemo/med/record/printUpParameters', + method: 'post', + data + }) +} + +/** + * 获取上级参数标签打印的图片 + * @param data + * @returns + */ +export function printerSjcsByLabelApi(data: PrinterSjcsParams): AxiosPromise { + return request({ + url: '/patient/hemo/med/record/printUpParametersBarcode', + method: 'post', + data + }) +} + +/** + * 手动his签到就诊 + * @param recordCode + * @returns + */ +export function hisManualVisitApi(recordCode: string): AxiosPromise { + return request({ + url: '/patient/hemo/med/record/doHisVisit', + method: 'post', + headers: { + "Content-Type": "application/x-www-form-urlencoded" + }, + params: { recordCode } + }) +} + +/** + * 列出最近的透析单列表数量, 默认为3 + * @param params + * @returns + */ +export function listRecentSummaryListApi(params: ListRecentSummaryListParams) { + return request({ + url: '/patient/hemo/med/record/listRecentSummaryList', + method: 'post', + headers: { + "Content-Type": "application/x-www-form-urlencoded" + }, + params + }) +} + +/** + * 打印透析器标签 + * @param data + * @returns + */ +export function printHemoMedReadyToolsApi(data: { clientCode: string; list: any[]; deviceName:string}) { + return request({ + url: '/patient/hemo/med/record/printHemoMedReadyTools', + method: 'post', + data + }) +} +/** + * 选择打印机返回 + * @param data + * @returns + */ +export function getAvailableDevicesByDeviceType(params) { + return request({ + url: '/comm/service/device/info/getAvailableDevicesByDeviceType', + method: 'post', + headers: { + "Content-Type": "application/x-www-form-urlencoded" + }, + params + }) +} + + + +/** + * 查询提前下机的患者 + * @param data + * @returns + */ +export function advanceDeliveryApi(data: AdvanceDeliveryParams) :AxiosPromise<{ list: AdvanceDelivery[]; total: number; [key: string]: any }> { + return request({ + url: '/patient/hemo/med/record/advanceDelivery', + method: 'post', + data + }) +} + + +export function batchPrintRecordsByPatientCodeCount(params: object) { + return request({ + url: '/patient/hemo/med/record/batchPrintRecordsByPatientCodeCount', + method: 'post', + params + }) +} + +/** + * 获取每日透析耗用明细表Api + * @param params + * @returns + */ +export function statisticBothItemDrugsApi(params: IStatisticBothItemDrugsParams) :AxiosPromise { + return request({ + url: '/patient/hemo/med/record/statisticBothItemDrugs', + method: 'post', + headers: { + "Content-Type": "application/x-www-form-urlencoded" + }, + params + }) +} + +/** + * 查看耗材详情接口API + * @param params + * @returns + */ +export function listRecordsByToolUsageDetailsApi(params: IListRecordsByToolUsageDetailsParams) :AxiosPromise { + return request({ + url: '/patient/hemo/med/record/listRecordsByToolUsageDetails', + method: 'post', + data: params, + }) +} \ No newline at end of file diff --git a/src/api/patient_hemo_med_record/types.ts b/src/api/patient_hemo_med_record/types.ts new file mode 100644 index 0000000..21b2d58 --- /dev/null +++ b/src/api/patient_hemo_med_record/types.ts @@ -0,0 +1,104 @@ +export interface SjcsType { + afterWeight: any; + ca: number; + chaoLvTotal: any; + chufangTSL: any; + deviceCode: string; + deviceGroupName: string; + deviceGroupSortOrder: number; + deviceName: string; + increaseWeight: any; + jiliang: string; + kangningJi: string; + knjCode: string; + medHour: number; + medMethod: string; + medMinutes: number; + medState: number; + medTool: string; + mubiaoTSL: any; + patAge: string; + patCode: string; + patGender: string; + patHemoCode: string; + patName: string; + preBP: string; + preWeight: any; + pureWeight: number; + recordCode: string; + schemeSj: number; + schemeTotal: number; + schemeWcj: any; + signSortIndex: any; + sortOrderByAll: any; + sortOrderByDeviceGroup: any; + timeslot: number; + txyFlow: number; + vascularAccessName: string; + vascularAccessPostion: string; + zhihuanzongliang: any; +} + +export interface PrinterSjcsParams { + clientCode: string; + hemoMedReadyWorkPrepareInfos: SjcsType[]; +} + +export interface ListRecentSummaryListParams { + patCode: string; + listCount?: number; +} + +export interface ListRecordsByPatItem { + afterBP: string; + afterWeight: string; + beginMedTime: string; + ca: string; + clzl: string; + deviceName: string; + endMedTime: string; + k: string; + knj: string; + medDate: string; + medDoctor: string; + medDrugs: string; + medNurse: string; + medPeriod: string; + medSchemeName: string; + medTimeSlot: string; + naCF: string; + naPF: string; + preBP: string; + preClothesWeight: string; + preWeight: string; + pureWeight: string; + recordCode: string; + sjclliang: string; + tsqg: string; + xgtl: string; + xll: string; + xtq: string; +} + + + +export interface AdvanceDeliveryParams { + clientCode: string; + startTime: string; + endTime: string; + state: string; + page: number; + pageSize: number; +} + +export interface AdvanceDelivery { + advancedMinute: string; //提前下机时长、延时下机时长 负数为延时/正数为提前 + endTime: string; //结束时间 + patientName: string; // 患者姓名 + realityMinute: string; // 患者实际透析时长 + scheduleDate: string; // 排班日期 + scheduleTimeSlot: string; // 排班班次 + standardMinutes: string; // 处方标准时长 + startTime: string; // 开始时间 + advancedCause: string; // 提前/延时下机原因 +} \ No newline at end of file diff --git a/src/api/patient_hemo_med_record/types/index.type.ts b/src/api/patient_hemo_med_record/types/index.type.ts new file mode 100644 index 0000000..1c6f6b9 --- /dev/null +++ b/src/api/patient_hemo_med_record/types/index.type.ts @@ -0,0 +1,554 @@ +import type { IDeviceInfo } from '/@/api/device/tyeps/index.type'; +import type { IUser } from '/@/api/user/types/index.type'; +import type { IPatientInfo } from '/@/api/HemodiPatients/types'; + +type TOrderCondition = -1 | 1 | 2 | 7 | 3; + +type TPatientFrom = -1 | 0 | 1; + +export type ItimeSolt = -1 | 0 | 1 | 2 | 3 | 4; + +export interface IGetRecordsInTodayParams { + clientCode: string; + dateBegin?: string; + dateEnd?: string; + nurseBelonged2?: string; + orderCondition?: TOrderCondition; + patientFrom?: TPatientFrom; + patientName?: string; + timeSlot?: ItimeSolt; + wards?: string[]; + recordCode?: string; +} + +export interface IRecordsInToday { + aI预测低血压结果: string; + age: number; + belongNurseCode: string; + cacheTime: string | null; + clientCode: string; + clzl: string; + crbText: string; + deviceCode: string; + deviceGroupCode: string; + deviceGroupName: string; + deviceGroupSortOrder: number; + deviceName: string; + deviceNo: string; + firstMonitorDataTime: string; + glq: string; + glqCode: string; + isContainKnj: number; + isDaoGuan: number; + isDoneCleanJob: number; + isNeiLou: number; + isOutStockOK: boolean; + isTodayAsMyBirthday: boolean; + lastClliang: string; + md5: string; + medCountInCurrentWeek: number; + medStartTime: null | string; + medState: number; + notExecutedDrugOrderCount: number; + patientAvatar: string; + patientCode: string; + patientFrom: number; + patientGender: number; + patientHemoCode: string; + patientId: number; + patientIsPostive: number; + patientName: string; + patientPreHemoWeight: number; + patientPyCode: string; + preClothesWeight: number; + pureWeight: number; + recordCode: string; + recordIsExecutedDrugOrder: boolean; + scheduleDate: string; + scheduleTimeSlot: number; + schemeConfirmed: boolean; + schemeIsConfirm: number; + schemeName: string; + schemeNamePlus: string; + signTime: string; + sortOrderByDeviceGroup: number; + xlq: string; + xlqCode: string; + xtq: string; + xtqCode: string; + 一次性管路名称: string; + 一次性管路编号: string; +} + + +/** 透析医生-类型 */ +export interface ISchemeDoctor extends Omit { + clientInfos: null; + clientVsUserList: null; + currentClientInfo: null; +} + +export interface ISchemeInfo { + clientCode: string; + clothesWeight: number; + code: string; + createTime: string; + createUser: null | number; + deletedTime: null | string; + id: number; + isAllowNullUpdate: any; + isDeleted: number; + isTemplate: number; + preAddTsl: null | any; + remark: string; + schemeCa: number; + schemeCxTime: null | string; + schemeCxl: null | string; + schemeExchangeType: string; + schemeExtendJson: string; + schemeFormula: number; + schemeGlTool: string; + schemeGlu: string; + schemeIsActive: number; + schemeIsPlus: number; + schemeIsSub: number; + schemeK: number; + schemeKnj: string; + schemeKnj2: string; + schemeKtv: string; + schemeNaCf: number; + schemeNaPf: number; + schemeName: string; + schemeNamePlus: string; + schemePlus: any; + schemePlusCondition: string; + schemeSj: number; + schemeSj2: any; + schemeTSQList: string[]; + schemeTotal: number; + schemeTotal2: any; + schemeTsqg: number; + schemeTsqgCaJiliang: string; + schemeTsqgCaName: string; + schemeTxPeriod: number; + schemeTxPeriodH: number; + schemeTxPeriodM: number; + schemeTxyFlow: number; + schemeWcj: any; + schemeWcj2: any; + schemeXlCount: string; + schemeXlTool: string; + schemeXtTool: string; + schemeZhyliang: number; + updateTime: string | null; + updateUser: null | number; + 抗凝剂国网上报信息: 抗凝剂国网上报信息; +} + +export interface 抗凝剂国网上报信息 { + 抗凝剂_低分子肝素单位: string; + 抗凝剂_低分子肝素总剂量: string; + 抗凝剂_低分子肝素类型: string; + 抗凝剂_低分子肝素追加剂量_IU: string; + 抗凝剂_低分子肝素追加剂量_mg: string; + 抗凝剂_低分子肝素追加时间: string; + 抗凝剂_低分子肝素首剂量_IU: string; + 抗凝剂_低分子肝素首剂量_mg: string; + 抗凝剂_其它抗凝剂: string; + 抗凝剂_备注: string; + 抗凝剂_总剂量: string; + 抗凝剂_是否使用华法林: string; + 抗凝剂_枸橼酸钠_使用时间分钟: string; + 抗凝剂_枸橼酸钠_使用时间小时: string; + 抗凝剂_枸橼酸钠浓度百分比: string; + 抗凝剂_枸橼酸钠速率每小时_ml: string; + 抗凝剂_种类: string; + 抗凝剂_肝素_追加时间分钟: string; + 抗凝剂_肝素_追加时间小时: string; + 抗凝剂_肝素单位: string; + 抗凝剂_肝素追加速率_IU每小时: string; + 抗凝剂_肝素追加速率_mg每小时: string; + 抗凝剂_肝素首剂量_IU: string; + 抗凝剂_肝素首剂量_mg: string; + 抗凝剂_追加剂量: string; + 抗凝剂_阿加曲班_追加时间分钟: string; + 抗凝剂_阿加曲班_追加时间小时: string; + 抗凝剂_阿加曲班单位: string; + 抗凝剂_阿加曲班追加速率_IU每小时: string; + 抗凝剂_阿加曲班追加速率_mg每小时: string; + 抗凝剂_阿加曲班首剂量_IU: string; + 抗凝剂_阿加曲班首剂量_mg: string; + 抗凝剂_首剂量: string; + 枸橼酸钠_其它钠浓度: string; +} + + + +/** 透析单详情-类型 */ +export interface IRecordDetail { + clientCode: string; + code: string; + createTime: string | null; + createUser: null | number; + deletedTime: null | string; + detailForPatientAfterBP: string; + detailForPatientAfterPulse: string; + detailForPatientAfterWeight: string; + detailForPatientClothesWeight: string; + detailForPatientKNJ: string; + detailForPatientMedCount: null | number; + detailForPatientMedEndTime: string; + detailForPatientMedStartTime: string; + detailForPatientPreBP: string; + detailForPatientPrePulse: string; + detailForPatientPreWeight: string; + deviceCode: string; // 设备code + deviceInfo: IDeviceInfo | null; // 设备实体 + deviceName: string; // 设备文本值 + diagnoseSnapshot: string; + glToolName: string; + glq: string; + hemoMedRecordConfirmInfo: { + confirmTime: null | string; + confirmUser: string | number | null; + confirmUserInfo: any; + isConfirm: number; + } | null; + historyCount: number; + huixue: string; + id: number; + isDeleted: number; + lastTimeRecordCode: string; // 上一次透析单编号 + lastTimeRecordDate: string; // 上一次透析单的日期 + medState: number; // 透析单状态 + nextRecordDate: string; // 下一次透析单的日期 + operator: string; + outstockConfirmOperator: string; + outstockIsConfirm: number; + patientCode: string; // 患者编号 + patientDiagnoseText: string; // 患者诊断 + patientHemoMedBodyStateAfterInfo: any; + patientHemoMedBodyStatePreInfo: any; + patientHemoMedDialysisScheme: any; + patientHemoMedDouleCheckInfo: any; + patientHemoMedFinishInfo: any; + patientHemoMedMonitorDatas: any; + patientHemoMedTempDrugOrders: any; + patientIncreaseWeight: string; + patientInfo: IPatientInfo | null; // 患者信息 + patientPreHemoWeight: null | number; + patientPureWeight: null | number; + patientSnapShotInfo: IPatientInfo | null; // 透析单快照上的患者信息 + patientSnapshot: string; + patientVsHemoMedSchemeInfo: { + code: string; + createTime: string; + createUser: null | number; + deletedTime: null | string; + id: number; + isDeleted: number; + patientCode: string; // 患者code + periodText: string; // 透析频率 + remark: string; + schemeCode: string; // 透析模式code + schemeCount: number; // 次数 + schemeDoctor: string; // 医生code + schemeDoctorInfo: ISchemeDoctor; + schemeFrequency: number; + schemeInfo: ISchemeInfo; + schemeIsEnable: number; + schemeIsSub: number; + schemeNamePlus: string; + schemePeriod: number; + schemeSortOrder: number; + updateTime: string | null; + updateUser: null | number; + } | null; + pureWeight: number; + remark: string; // 备注 + scheduleDate: string; + scheduleTimeSlot: number; + schemeConfirmed: boolean; + schemeIsConfirm: number; + schemeName: string; // 透析方案 + schemeNamePlus: string; + sortOrderByAll: any; + sortOrderByDeviceGroup: number; + updateTime: string; + updateUser: null | number; + xgtlSnapshot: string; + xlToolName: string; + xlq: string; + xtToolName: string; + xtq: string; + yinxue: string; + startCcZhenAName: string; + startCcZhenVName: string; + +} + +/** 透析单日期-类型 */ +export interface ICalendarRecord { + date: string; + day: number; + medState: number; + month: number; + patientCode: string; + recordCode: string; + schemeName: string; + schemePlusName: string; + timeSlot: number; + year: number; +} + + + +export interface IListReadyRowsParams { + clientCode: string; + queryDateBegin: string; + queryDateEnd: string; + timeSlot: number; + wards: string[]; + patientQueryCode: string; +} + +export interface IListReadyRows { + byg: string; + ca: string; + ccZhen: string; + ccZhenA: string; + ccZhenType: string; + ccZhenV: string; + deviceGroupName: string; + deviceGroupSortOrder: string; + deviceName: string; + deviceNo: string; + gl: string; + glToolName: string; + glu: string; + hlb: string; + k: string; + nsy: string; + patientCode: string; + patientName: string; + patientNo: string; + realTimeOutStockInfoResponses: any; + recordCode: string; + remark: string; + schemeName: string; + sortOrder: number | null; + timeSlot: number; + vaName: string; + xlToolName: string; + xtToolName: string; + 穿刺针A端: string; + 穿刺针V端: string; + 穿刺针A端规格: string; + 穿刺针V端规格: string; + xtToolSpec: string; + xlToolSpec: string; + glToolSpec: string; +} + + +export interface IListStatInfoParams { + clientCode: string; + patientQueryCode: string; + queryDateBegin: string; + queryDateEnd: string; + timeSlot: number; + wards: string[]; +} + +export interface IListStatInfo { + itemName: string; + itemType: string; + itemSpec: string; + sum: number; +} + +export interface IPrepareWorkParams { + clientCode: string; + patientQueryCode: string; + queryDateBegin: string; + queryDateEnd: string; + timeSlot: number; + wards: string[]; +} + +export interface IPrepareWork { + afterWeight: number | null; + ca: number | null; + chaoLvTotal: number | null; + chufangTSL: number | null; + deviceCode: string; + deviceGroupName: string; + deviceGroupSortOrder: string; + deviceName: string; + increaseWeight: number | null; + jiliang: string; + kangningJi: string; + knjCode: string; + medHour: number; + medMethod: string; + medMinutes: number | null; + medState: number; + medTool: string; + mubiaoTSL: string; + patAge: string; + patCode: string; + patGender: string; + patHemoCode: string; + patName: string; + patientNamePy: string; + preBP: string; + preWeight: number | null; + pureWeight: number | null; + recordCode: string; + schemeSj: number; + schemeTotal: number; + schemeWcj: number; + signSortIndexL: number | null; + sortOrderByAll: number | null; + sortOrderByDeviceGroup: number | null; + timeslot: number | null; + txyFlow: number | null; + vascularAccessName: string; + vascularAccessPostion: string; + zhihuanzongliang: number | null; +} + +export interface IPrepareWorkMedicineParams { + clientCode: string; + patientQueryCode: string; + queryDateBegin: string; + queryDateEnd: string; + timeSlot: number; + wards: string[]; +} + +export interface IPrepareWorkMedicine { + cuhongsu: string; + deviceGroupName: string; + deviceGroupSortOrder: string; + deviceName: string; + deviceNo: string; + drugCode: string; + drugName: string; + drugUnit: string; + guhuasanchun: string; + isConfirm: number; + isKnj: number; + jiliang: string; + knj: string; + medDate: string; + medUseCount: string; + packageUnit: string; + paliguhuachun: string; + patientAge: string; + patientGender: string; + patientHemoCode: string; + patientName: string; + recordCode: string; + singleUsage: string; + sortOrder: number | null; + timeSlot: number; + zhetangtie: string; + zuokaniding: string; +} + +export interface IPrepareWorkMedicineStatParams { + clientCode: string; + patientQueryCode: string; + queryDateBegin: string; + queryDateEnd: string; + timeSlot: number; + wards: string[]; +} + +export interface IPrepareWorkMedicineStat { + count: number; + deviceCode: string; + drugCode: string; + drugName: string; + drugNamePy: string; + drugSpec: string; + isKnj: number; + packageUnitName: string; + recordCode: string; +} + + +export interface IFixedDrugStatisticsParams { + clientCode: string; + deviceGroups: string[]; + isSchemeConfirmed: number | null; + patientQueryCode: string; + recordDate: string; + recordEndDate: string; + recordStartDate: string; + selectedItems: string[]; + timeSlots: number[]; +} + + +export interface IFixedDrugStatistics { + group: string; + patCode: string; + recordCode: string; + 姓名: string; + 是否确认处方: string; + 机号: string; + 透析号: string; + [key: string]: any; + 执行护士列表?: string; + 执行护士列表_签名: string; +} + + +export interface IStatisticBothItemDrugsParams { + clientCode: string; + date1: string; + date2: string; + timeslots: string; +} + +export interface IStatisticBothItemDrugsItem { + 分区: string; + 患者姓名: string; + 机号: string; + 分区排序号: number; + 床号排序号: number; + 治疗项目: { key: number }[]; + 透析用药: { key: number }[]; + 透析耗材: { key: number }[]; +} + + +export interface IListRecordsByToolUsageDetailsParams { + dateRange1: string; + dateRange2: string; + timeSlot: number; + itemName: string; + clientCode: string; +} + + +export interface IListRecordsByToolUsageDetailsReponse { + 使用数量: { [key: string]: number }; + 使用详情: { [key: string]: IListRecordsByToolUsageDetailsDetail[] } +} + +export interface IListRecordsByToolUsageDetailsDetail { + date: string; + itemCode: string; + itemName: string; + medDate: string; + medTimeSlot: number; + patientCode: string; + patientName: string; + rowCount: any; + schemeName: string; + timeRangeText: string; + type: any; +} \ No newline at end of file diff --git a/src/api/patient_hemo_med_start/index.ts b/src/api/patient_hemo_med_start/index.ts new file mode 100644 index 0000000..8088c73 --- /dev/null +++ b/src/api/patient_hemo_med_start/index.ts @@ -0,0 +1,46 @@ +import request from '/@/utils/request'; + +export function Add(params: Object) { + return request({ + url: '/patient/hemo/med/start/add', + method: 'post', + data: params, + }); +} +export function update(params: Object) { + return request({ + url: '/patient/hemo/med/start/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/patient/hemo/med/start/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/patient/hemo/med/start/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function addDefaultRow(params: object) { + return request({ + url: '/patient/hemo/med/start/addDefaultRow', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} \ No newline at end of file diff --git a/src/api/patient_operate_status_info/index.ts b/src/api/patient_operate_status_info/index.ts new file mode 100644 index 0000000..91bf858 --- /dev/null +++ b/src/api/patient_operate_status_info/index.ts @@ -0,0 +1,14 @@ +import { url } from 'inspector'; +import request from '/@/utils/request'; + + +/** + * 获取患者转归类型api(患者查询使用) + * @returns + */ +export function listOperateStatusTypesApi() { + return request({ + url: '/patient/operate/status/info/listAllOperateStatusTypes', + method: 'post' + }) +} \ No newline at end of file diff --git a/src/api/patient_pathology_diagnose/index.ts b/src/api/patient_pathology_diagnose/index.ts new file mode 100644 index 0000000..cbbbd88 --- /dev/null +++ b/src/api/patient_pathology_diagnose/index.ts @@ -0,0 +1,134 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { IPathologyDiagnoseListParams, IPathologyDiagnose, IPathologyDiagnoseAny } from './types/index.type'; + + +/** + * 添加患者病理诊断 + * @param data + * @returns + */ +export function pathologyDiagnoseAddApi(data: IPathologyDiagnoseAny) { + return request({ + url: '/patient/pathology/diagnose/add', + method: 'post', + data + }) +} + + +/** + * 批量添加患者病理诊断 + * @param data + * @returns + */ +export function pathologyDiagnoseAddListApi(data: IPathologyDiagnoseAny[]) { + return request({ + url: '/patient/pathology/diagnose/addList', + method: 'post', + data + }) +} + +/** + * 删除患者病理诊断 + * @param id + * @returns + */ +export function pathologyDiagnoseDelApi(id: number) { + return request({ + url: '/patient/pathology/diagnose/delete', + method: 'post', + params: { + id + } + }) +} + + +/** + * 批量删除患者病理诊断 + * @param ids + * @returns + */ +export function pathologyDiagnoseDelAllApi(ids: string) { + return request({ + url: '/patient/pathology/diagnose/deleteAll', + method: 'post', + data: { + ids + } + }) +} + +/** + * 根据id获取患者病理诊断详情 + * @param id + * @returns + */ +export function pathologyDiagnoseDetailByIdApi(id: number): AxiosPromise { + return request({ + url: '/patient/pathology/diagnose/detail', + method: 'post', + params: { + id + } + }) +} + +/** + * 根据code获取患者病理诊断详情 + * @param id + * @returns + */ +export function pathologyDiagnoseDetailByCodeApi(code: number): AxiosPromise { + return request({ + url: '/patient/pathology/diagnose/detail', + method: 'post', + params: { + code + } + }) +} + + +/** + * 获取患者病理诊断列表 + * @param params + * @returns + */ +export function pathologyDiagnoseListApi(params: IPathologyDiagnoseListParams): AxiosPromise<{ list: IPathologyDiagnose[]; total: number; [key: string]: any; }> { + return request({ + url: '/patient/pathology/diagnose/list', + method: 'post', + params + }) +} + + +/** + * 保存患者病理诊断 + * @param data + * @returns + */ +export function pathologyDiagnoseSaveApi(data: IPathologyDiagnoseAny) : AxiosPromise { + return request({ + url: '/patient/pathology/diagnose/save', + method: 'post', + data + }) +} + + +/** + * 更新患者病理诊断 + * @param data + * @returns + */ +export function pathologyDiagnoseUpdateApi(data: IPathologyDiagnoseAny) { + return request({ + url: '/patient/pathology/diagnose/update', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/src/api/patient_pathology_diagnose/types/index.type.ts b/src/api/patient_pathology_diagnose/types/index.type.ts new file mode 100644 index 0000000..caeaa3a --- /dev/null +++ b/src/api/patient_pathology_diagnose/types/index.type.ts @@ -0,0 +1,36 @@ +export interface IPathologyDiagnoseListParams { + page: number; + size: number; + wherecondition: string; + ordercondition: string; +} + +export interface IPathologyDiagnose { + clientCode: string; + code: string; + createTime: string | null; + createUser: number | null; + deletedTime: string | null; + id: number; + isDeleted: number; + patientCode: string; + patientName: string; + recordJsonBody: string; + recordTime: string; + remark: string; + updateTime: string | null; + updateUser: number | null; +} + + +export interface IPathologyDiagnoseAny extends Omit +{ + createTime?: string | null; + createUser?: number | null; + deletedTime?: string | null; + isDeleted?: number; + updateTime?: string | null; + updateUser?: number | null; + remark?: string; +} \ No newline at end of file diff --git a/src/api/patient_vascular_access_img/index.ts b/src/api/patient_vascular_access_img/index.ts new file mode 100644 index 0000000..4251980 --- /dev/null +++ b/src/api/patient_vascular_access_img/index.ts @@ -0,0 +1,26 @@ +import request from '/@/utils/request'; + +export function Add(params: string) { + return request({ + url: '/patient/vascular/access/img/add', + method: 'post', + data: params, + }); +} +export function update(params: object) { + return request({ + url: '/patient/vascular/access/img/update', + method: 'post', + data: params, + }); +} +export function getByPatient(params: object) { + return request({ + url: '/patient/vascular/access/img/getByPatient', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} \ No newline at end of file diff --git a/src/api/patient_vs_hemo_med_scheme/index.ts b/src/api/patient_vs_hemo_med_scheme/index.ts new file mode 100644 index 0000000..fd01b58 --- /dev/null +++ b/src/api/patient_vs_hemo_med_scheme/index.ts @@ -0,0 +1,84 @@ +import request from '/@/utils/request'; +import type { ICommonListParams } from '../common.type'; +import type { IPatientHemoMedSchemeListReponse } from './types/index.type'; +import { AxiosPromise } from 'axios'; + +export function savePatientScheme(params: string) { + return request({ + url: '/patient/vs/hemo/med/scheme/savePatientScheme', + method: 'post', + data: params, + }); +} +export function savePatientSchemeDetail(params: string) { + return request({ + url: '/patient/vs/hemo/med/scheme/savePatientSchemeDetail', + method: 'post', + data: params, + }); +} +export function listPatSchedulesInTemplate(params: object) { + return request({ + url: '/hemo/med/schedule/template/listPatSchedulesInTemplate', + method: 'post', + data: params, + }); +} + +/** + * 获取患者透析方案列表 + * @param params + * @returns + */ +export function list(params: ICommonListParams) :AxiosPromise { + return request({ + url: '/patient/vs/hemo/med/scheme/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function deleteId(params: string) { + return request({ + url: '/patient/vs/hemo/med/scheme/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + + +/** + * 透析处方修改记录查询 + * @param schemeCode + * @returns + */ +export function listBySchemeCodeApi (schemeCode: string) { + return request({ + url: '/adjust/scheme/history/listBySchemeCode', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params: { schemeCode } + }) +} + + +/** + * 修改透析处方修改记录 + * @param data + * @returns + */ +export function listBySchemeCodeUpdateApi(data: any) { + return request({ + url: '/adjust/scheme/history/update', + method: 'post', + data + }) +} + diff --git a/src/api/patient_vs_hemo_med_scheme/types/index.type.ts b/src/api/patient_vs_hemo_med_scheme/types/index.type.ts new file mode 100644 index 0000000..6f5859b --- /dev/null +++ b/src/api/patient_vs_hemo_med_scheme/types/index.type.ts @@ -0,0 +1,32 @@ +import type { IUser } from '../../user/types/index.type'; +import type { IComminList } from '../../common.type'; + +export interface IPatientHemoMedScheme { + code: string; + createTime: string; + createUser: null | number; + deletedTime: null | string; + id: number; + isDeleted: number; + patientCode: string; + periodText: string; + remark: string; + schemeCode: string; + schemeCount: number; + schemeDoctor: string; + schemeDoctorInfo: IUser; + schemeFrequency: number; + schemeInfo: any; + schemeIsEnable: number; + schemeIsSub: number; + schemeNamePlus: string; + schemePeriod: number; + schemeSortOrder: number; + updateTime: string; + updateUser: null | number; +} + + +export interface IPatientHemoMedSchemeListReponse extends Omit { + list: IPatientHemoMedScheme[]; +} \ No newline at end of file diff --git a/src/api/patient_yibao_limit_control/index.ts b/src/api/patient_yibao_limit_control/index.ts new file mode 100644 index 0000000..f314c91 --- /dev/null +++ b/src/api/patient_yibao_limit_control/index.ts @@ -0,0 +1,55 @@ +import request from '/@/utils/request'; +import type { IPatientYibaoLimitControlSaveConfigParams, IGetPatientYibaoLimitControlConfigParams, IPatientYibaoLimitControlConfig, IGetPatientYibaoLimitControlCalculateTheAmountParams } from './types/index.type'; +import type { AxiosPromise } from 'axios'; + +/** + * 保存患者医保限额设置API + * @param data + * @returns + */ +export function patientYibaoLimitControlSaveConfigApi(params: IPatientYibaoLimitControlSaveConfigParams) { + return request({ + url: '/patient/yibao/limit/control/saveConfig', + method: 'post', + params + }) +} + +/** + * 获取患者医保限额设置API + * @param params + * @returns + */ +export function getPatientYibaoLimitControlConfigApi(params: IGetPatientYibaoLimitControlConfigParams): AxiosPromise { + return request({ + url: '/patient/yibao/limit/control/getConfig', + method: 'post', + params + }) +} + +/** + * 删除患者医保限额设置API + * @param id + * @returns + */ +export function getPatientYibaoLimitControlConfigDelApi(id: number) { + return request({ + url: '/patient/yibao/limit/control/delete', + method: 'post', + params: { id } + }) +} + +/** + * 获取患者医保余额API + * @param params + * @returns + */ +export function getPatientYibaoLimitControlCalculateTheAmountApi(params: IGetPatientYibaoLimitControlCalculateTheAmountParams) :AxiosPromise<{[key: string]: any}> { + return request({ + url: '/patient/yibao/limit/control/calculateTheAmount', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/patient_yibao_limit_control/types/index.type.ts b/src/api/patient_yibao_limit_control/types/index.type.ts new file mode 100644 index 0000000..172b78b --- /dev/null +++ b/src/api/patient_yibao_limit_control/types/index.type.ts @@ -0,0 +1,44 @@ +export type TLimitControlType = '全部' | '非限制用药医嘱' | '限制用药医嘱' | '检验费' | '耗材费' | '无'; + + +export interface IPatientYibaoLimitControlSaveConfigParams { + patCode: string; + year: number; + month: number; + limitControlType: string; + limitAmount: number; +} + + +export interface IGetPatientYibaoLimitControlConfigParams { + patCode: string; + year: number; + month: number; + type: string; +} + + +export interface IPatientYibaoLimitControlConfig { + clientCode: string; + code: string; + controlFeeAmount: number; + controlFeeType: string; + controlMonth: number; + controlYear: number; + createTime: string; + createUser: number; + deletedTime: string; + id: number; + isDeleted: number; + patientCode: string; + remark: string; + updateTime: string; + updateUser: number; +} + +export interface IGetPatientYibaoLimitControlCalculateTheAmountParams { + patCode: string; + year: number; + month: number; + type: string; +} \ No newline at end of file diff --git a/src/api/report_template_info/index.ts b/src/api/report_template_info/index.ts new file mode 100644 index 0000000..04f8785 --- /dev/null +++ b/src/api/report_template_info/index.ts @@ -0,0 +1,58 @@ +import { AxiosPromise } from 'axios'; +import request from '/@/utils/request'; +import type { ReportTemplateListParams, TemplateItem } from './types'; + + +/** + * 获取后端模板列表 + * @param data + * @returns + */ +export function reportTemplateListApi (data: ReportTemplateListParams): AxiosPromise<{ list: TemplateItem[] }> { + return request({ + url: '/report/template/info/list', + method: 'post', + data + }) +} + + +/** + * 更新后端模板信息 + * @param data + * @returns + */ +export function reportTemplateUpdateApi (data: Partial) { + return request({ + url: '/report/template/info/update', + method: 'post', + data + }) +} + + +/** + * 删除模板 + * @param id + * @returns + */ +export function reportTemplateDeleteApi(id: number) { + return request({ + url: '/report/template/info/delete', + method: 'post', + params: { id } + }) +} + +/** + * 添加模板 + * @param data + * @returns + */ +export function reportTemplateAddApi(data: Partial) { + return request({ + url: '/report/template/info/add', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/src/api/report_template_info/types.ts b/src/api/report_template_info/types.ts new file mode 100644 index 0000000..3a308be --- /dev/null +++ b/src/api/report_template_info/types.ts @@ -0,0 +1,22 @@ +export interface ReportTemplateListParams { + page?: number; + size?: number; + wherecondition: string; + ordercondition: string; +} + +export interface TemplateItem { + code: string; + createTime: any; + createUser: any; + deletedTime: any; + id: number; + isDeleted: number; + remark: string; + reportName: string; + reportTplBody: string; + reportTplSetting: string; + reportTplVersion: number; + updateTime: any; + updateUser: any; +} diff --git a/src/api/role/index.ts b/src/api/role/index.ts new file mode 100644 index 0000000..61f927d --- /dev/null +++ b/src/api/role/index.ts @@ -0,0 +1,46 @@ +import request from '/@/utils/request'; + +export function Add(params: string) { + return request({ + url: '/role/info/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/role/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/role/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/role/info/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function rolevsresourcelist(params: object) { + return request({ + url: '/role/vs/resource/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} \ No newline at end of file diff --git a/src/api/role/types/index.type.ts b/src/api/role/types/index.type.ts new file mode 100644 index 0000000..8a80ff5 --- /dev/null +++ b/src/api/role/types/index.type.ts @@ -0,0 +1,62 @@ +/** 菜单权限-应该移到指定目录下的,但现在懒的动了 */ +export interface IResource { + ancestorResCode: string; + code: string; + createTime: string; + createUser: null | number; + deletedTime: null | number; + id: number; + isDeleted: number; + remark: string; + resourceComponent: string; + resourceLevel: number; + resourceMetaIcon: string; + resourceMetaIsaffix: number; + resourceMetaIshide: number; + resourceMetaIskeepalive: number; + resourceMetaIslframe: number; + resourceMetaIslink: string; + resourceMetaTitle: string; + resourceName: string; + resourcePath: string; + resourceRedirect: string; + resourceSortOrder: number; + resourceText: string; + updateTime: string | string; + updateUser: number | null; +} + + +export interface IRoleVsResource { + code: string; + createTime: string; + createUser: null | number; + deletedTime: null | string; + grantPrivilege: string; + id: number; + isDeleted: number; + remark: string; + resourceCode: string; + resourceName: string; + roleCode: string; + updateTime: string | null; + updateUser: null | number; +} + +/** 角色-类型 */ +export interface IRole { + code: string; + createTime: string; + createUser: number; + deletedTime: null | string; + id: number; + isDeleted: number; + remark: string; + resourceInfos: IResource[]; + roleName: string; + rolePermission: string; + roleText: string; + roleVsResourceList: IRoleVsResource[]; + updateTime: string; + updateUser: number | null; +} diff --git a/src/api/scheduling/HemoMedSchedule.ts b/src/api/scheduling/HemoMedSchedule.ts new file mode 100644 index 0000000..3a682ab --- /dev/null +++ b/src/api/scheduling/HemoMedSchedule.ts @@ -0,0 +1,194 @@ +import { AxiosPromise } from 'axios'; +import request from '/@/utils/request'; +import type { ILastYearWeeks, IGetLatestApplyParams, IGetLatestApply, IGetListMonthSchedulesParams } from './types/HemoMedSchedule.type'; + +export function Add(params: string) { + return request({ + url: '/hemo/med/schedule/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/hemo/med/schedule/update', + method: 'post', + data: params, + }); +} +export function save(params: string) { + return request({ + url: '/hemo/med/schedule/save', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/hemo/med/schedule/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/hemo/med/schedule/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function scheduleGetConfig(params: object) { + return request({ + url: '/hemo/med/schedule/config/getConfig', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +/** + * 列出今天所在周数的透析排班计划 + * @param params 客户编号 + * @returns + */ +export function listWeekSchedules(params: string) { + return request({ + url: '/hemo/med/schedule/listWeekSchedules', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data:params + }) +} +export function getLastYearWeeks() :AxiosPromise { + return request({ + url: '/hemo/med/schedule/getLastYearWeeks', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + }) +} + +export function getCurrentWeekNumber() { + return request({ + url: '/hemo/med/schedule/getCurrentWeekNumber', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + } + }) +} + +export function saveConfig(params: string) { + return request({ + url: '/hemo/med/schedule/config/save', + method: 'post', + data: params, + }); +} +export function exportToExcel(params: string) { + return request({ + url: '/hemo/med/schedule/exportToExcel', + method: 'post', + responseType: 'blob', + params, + }); +} +export function transfer(params: object) { + return request({ + url: '/hemo/med/schedule/transfer', + method: 'post', + data: params, + }); +} +export function listDeletedSchedules(params: object) { + return request({ + url: '/hemo/med/schedule/listDeletedSchedules', + method: 'post', + data:params + }) +} +export function listScheduleUpdateLogs(params: object) { + return request({ + url: '/hemo/med/schedule/listScheduleUpdateLogs', + method: 'post', + data:params + }) +} +export function listHemoMedScheduleChanges(params: object) { + return request({ + url: '/hemo/schedule/change/track/record/listHemoMedScheduleChanges', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} +export function restoreDeletedSchedule(params: object) { + return request({ + url: '/hemo/med/schedule/restoreDeletedSchedule', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 导出指定周的数据到指定周 + * @param params + * @returns + */ +export function scheduleExportApi(params: any) { + return request({ + url: '/hemo/med/schedule/export', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 获取客户排班模板导出日志 + * @param params + * @returns + */ +export function getLatestApplyApi(params: IGetLatestApplyParams): AxiosPromise { + return request({ + url: '/hemo/med/schedule/apply/getLatestApply', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 按月查询排班Api + * @param params + * @returns + */ +export function getListMonthSchedulesApi(params: IGetListMonthSchedulesParams) { + return request({ + url: '/hemo/med/schedule/listMonthSchedules', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} \ No newline at end of file diff --git a/src/api/scheduling/HemoMedScheduleTem.ts b/src/api/scheduling/HemoMedScheduleTem.ts new file mode 100644 index 0000000..cf913d7 --- /dev/null +++ b/src/api/scheduling/HemoMedScheduleTem.ts @@ -0,0 +1,137 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { IlistTemplateSchemesByPatient, ISaveTemplatesByPatParams, ICheckUpdateTemplatesParams, ICheckUpdateTemplates } from './types/HemoMedScheduleTem.type'; + + +export function save(params: string) { + return request({ + url: '/hemo/med/schedule/template/save', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/hemo/med/schedule/template/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function listTemplateByPatient (params: string) { + return request({ + url: '/hemo/med/schedule/template/listTemplateByPatient ', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +//导出模板至某周 +export function output(params:string){ + return request({ + url:"/hemo/med/schedule/template/output", + method:'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} +//导出模板至某周 +export function input(params:string){ + return request({ + url:"/hemo/med/schedule/template/input", + method:'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} +/** + * 列出今天所在周数的透析排班计划 + * @param params 客户编号 + * @returns + */ +export function getTemplate(params: string) { + return request({ + url: '/hemo/med/schedule/template/getTemplate', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data:params + }) +} +export function exportToExcel(params: string) { + return request({ + url: '/hemo/med/schedule/template/exportToExcel', + method: 'post', + responseType: 'blob', + params, + }); +} +export function templateTransfer(params: object) { + return request({ + url: '/hemo/med/schedule/template/transfer', + method: 'post', + data: params, + }); +} +export function getCurrentScheduleNo (params: string) { + return request({ + url: '/hemo/med/schedule/apply/getCurrentScheduleNo', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + +/** + * 获取患者透析频率和排班模板 + * @param params + * @returns + */ +export function listTemplateSchemesByPatient (params:{ patientCode: string }) :AxiosPromise { + return request({ + url: '/hemo/med/schedule/template/listTemplateSchemesByPatient', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} + +/** + * 保存患者排班 + * @param params + * @returns + */ +export function saveTemplatesByPat (params: ISaveTemplatesByPatParams) :AxiosPromise { + return request({ + url: '/hemo/med/schedule/template/saveTemplatesByPat', + method: 'post', + data:params, + }); +} + + +/** + * 获取未排班的设备 + * @param data + * @returns + */ +export function checkUpdateTemplatesApi(data: ICheckUpdateTemplatesParams) :AxiosPromise{ + return request({ + url: '/hemo/med/schedule/template/checkUpdateTemplates', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/src/api/scheduling/types/HemoMedSchedule.type.ts b/src/api/scheduling/types/HemoMedSchedule.type.ts new file mode 100644 index 0000000..7b0a0c9 --- /dev/null +++ b/src/api/scheduling/types/HemoMedSchedule.type.ts @@ -0,0 +1,43 @@ +export interface ILastYearWeeks { + clientCode: string; + currentAppliedTemplateNumber: number + fromDay: string; + operator: string; + relativeWeekFromToday: number; + scheduleTimeSlotInfos: any; + text: string; + toDay: string; + weekNumber: number; + year: number; +} + + +export interface IGetLatestApplyParams { + clientCode: string; +} + +export interface IGetLatestApply { + clientCode: string; + code: string; + createTime: string; + createUser: number | null; + deletedTime: string | null; + id: number; + isDeleted: number; + scheduleTplNo: number; + scheduleWeek: number; + scheduleYear: number; + taskId: string; + taskRemark: string; + updateTime: string; + updateUser: number | null; +} + + +export interface IGetListMonthSchedulesParams { + clientCode: string; // 客户编号 + year: number; // 年份 + month: number; // 月份 + day: number; // 日 + timeSlot: number; // 时段 +} \ No newline at end of file diff --git a/src/api/scheduling/types/HemoMedScheduleTem.type.ts b/src/api/scheduling/types/HemoMedScheduleTem.type.ts new file mode 100644 index 0000000..2299c6a --- /dev/null +++ b/src/api/scheduling/types/HemoMedScheduleTem.type.ts @@ -0,0 +1,50 @@ +export interface IlistTemplateSchemesByPatientSchemeInfo { + name: string; + periodText: string; +} + +export interface IlistTemplateSchemesByPatientTemplate { + deviceCode: string; + deviceNo: string; + schemeCode: string; + schemeName: string; + tplDay: number; + tplNumber: number; + tplTimeSlot: number; +} + +export interface IlistTemplateSchemesByPatient { + hemoCode: string; + patName: string; + schemeInfo: IlistTemplateSchemesByPatientSchemeInfo[]; + templeate: {tplNo: number; list: IlistTemplateSchemesByPatientTemplate[]}[]; +} + +export interface ISaveTemplatesByPatParamsDeatil { + deviceCode: string; + schemeCode: string; + timeSlot: number; + tplNo: number; + weekDay: number; +} + +export interface ISaveTemplatesByPatParams { + clientCode: string; + patientCode: string; + details: ISaveTemplatesByPatParamsDeatil[]; +} + +export interface ICheckUpdateTemplatesParams { + clientCode: string; + tplNo: number; + weekDay: number; + timeSlot: number; +} + + +export interface ICheckUpdateTemplates { + code: string; + deviceGroupCode: string; + deviceName: string; + deviceSn: string; +} \ No newline at end of file diff --git a/src/api/staff_schedule_config/index.ts b/src/api/staff_schedule_config/index.ts new file mode 100644 index 0000000..c6b54b3 --- /dev/null +++ b/src/api/staff_schedule_config/index.ts @@ -0,0 +1,144 @@ +import { AxiosPromise } from 'axios'; +import request from '/@/utils/request'; +import type { CopyToParams, GetRemarkParams, UpdateRemarkParams, ListConfigsByMonthParams } from './types' +export function AddPaiban(params: object) { + return request({ + url: '/staff/schedule/add', + method: 'post', + data: params, + }); +} +export function deleteIdPaiban(params: string) { + return request({ + url: '/staff/schedule/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + +export function Add(params: object) { + return request({ + url: '/staff/schedule/config/add', + method: 'post', + data: params, + }); +} +export function update(params: object) { + return request({ + url: '/staff/schedule/config/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/staff/schedule/config/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/staff/schedule/config/list', + method: 'post', + params + }) +} +export function listWeeksOfYear(params: object) { + return request({ + url: '/staff/schedule/listWeeksOfYear', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} +export function listConfigsByWeek(params: object) { + return request({ + url: '/staff/schedule/listConfigsByWeek', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} +export function saveUserRemark(params: object) { + return request({ + url: '/staff/schedule/remark/saveUserRemark', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} + + +/** + * 复制排班 + * @param params + * @returns + */ +export function copyPaiBanToApi(params: CopyToParams): AxiosPromise { + return request({ + url: '/staff/schedule/copyTo', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 获取排班备注 + * @param params + * @returns + */ +export function getRemarkApi(params: GetRemarkParams) { + return request({ + url: '/staff/schedule/getRemark', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + + +/** + * 更新排班备注 + * @param params + * @returns + */ +export function updateRemarkApi(params: UpdateRemarkParams) { + return request({ + url: '/staff/schedule/updateRemark', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +/** + * 获取医护月排班数据Api + */ +export function listConfigsByMonthApi(params: ListConfigsByMonthParams) { + return request({ + url: '/staff/schedule/listConfigsByMonth', + method: 'post', + params + }) +} \ No newline at end of file diff --git a/src/api/staff_schedule_config/types.ts b/src/api/staff_schedule_config/types.ts new file mode 100644 index 0000000..5fafdd7 --- /dev/null +++ b/src/api/staff_schedule_config/types.ts @@ -0,0 +1,30 @@ +export interface CopyToParams { + clientCode: string + sourceYear: number | string + sourceWeekNo: number | string + targetYear: number | string + targetWeekNo: number | string +} + + +export interface GetRemarkParams { + clientCode: string; + year: number | string; + weekNumber: number | string; +} + + +export interface UpdateRemarkParams { + clientCode: string; + year: number | string; + weekNumber: number | string; + remark: string; +} + +export interface ListConfigsByMonthParams { + userCode: string; + roleCode: string; + year: number; + month: number; + clientCode: string; +} \ No newline at end of file diff --git a/src/api/system_version_subscreen/index.ts b/src/api/system_version_subscreen/index.ts new file mode 100644 index 0000000..ba70bec --- /dev/null +++ b/src/api/system_version_subscreen/index.ts @@ -0,0 +1,39 @@ +import request from '/@/utils/request'; + +/** + * 查询副屏版本列表API + */ +export function getVersionSubscreenListApi(params: object) { + return request({ + url: '/system/version/subscreen/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params, + }); +} + +/** 保存副屏版本数据API */ +export function saveVersionSubscreenApi(params: object) { + return request({ + url: '/system/version/subscreen/save', + method: 'post', + headers: { + 'Content-Type': 'application/json', + }, + data: params, + }); +} + +/** 删除副屏版本Api */ +export function deleteVersionSubscreenIdApi(params: string) { + return request({ + url: '/system/version/subscreen/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + data: params, + }); +} diff --git a/src/api/upgrade/index.ts b/src/api/upgrade/index.ts new file mode 100644 index 0000000..f9b6dfa --- /dev/null +++ b/src/api/upgrade/index.ts @@ -0,0 +1,22 @@ +import request from '/@/utils/request'; + +export function getVersionAlert() { + return request({ + url: '/system/version/getVersionAlert', + headers: { + 'Content-Type': 'application/json' + }, + method: 'post', + }); +} + +export function updateVersion(code: string) { + return request({ + url: '/system/version/updateVersion', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: code, + }); +} \ No newline at end of file diff --git a/src/api/upload/index.ts b/src/api/upload/index.ts new file mode 100644 index 0000000..6cbd407 --- /dev/null +++ b/src/api/upload/index.ts @@ -0,0 +1,17 @@ + +import request from '/@/utils/request'; + +export function audioToText(params: object) { + return request({ + url: '/ai/audio-to-text', + method: 'post', + data: params, + }) +} +export function audioToDualText(params: object) { + return request({ + url: '/ai/audioToDualText', + method: 'post', + data: params, + }) +} \ No newline at end of file diff --git a/src/api/user/index.ts b/src/api/user/index.ts new file mode 100644 index 0000000..64fac6b --- /dev/null +++ b/src/api/user/index.ts @@ -0,0 +1,146 @@ +import request from '/@/utils/request'; +import { AxiosPromise } from 'axios'; +import type { IUser } from './types/index.type'; + +export interface UsersByROleGroupParams { + clientCode: string; + roleClasses: string[] + isFilterDisabledUser?: 0 | 1 // 0:不过滤 1:过滤 +} + +export function Add(params: string) { + return request({ + url: '/user/info/add', + method: 'post', + data: params, + }); +} +export function update(params: string) { + return request({ + url: '/user/info/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/user/info/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/user/info/list', + method: 'post', + params + }) +} +export function listUsersInClient(params: string) { + return request({ + url: '/user/info/listUsersInClient', + method: 'post', + data: params, + }); +} +export function getUsersByRoleCode(params: string) { + return request({ + url: '/user/info/getUsersByRoleCode', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} + +/** + * 根据角色获取用户列表 + * @param params + * @returns + */ +export function getUsersByRoleGroup(params: UsersByROleGroupParams) :AxiosPromise { + return request({ + url: '/user/info/getUsersByRoleGroup', + method: 'post', + data: params, + }); +} +export function sendValidateCode(params: string) { + return request({ + url: '/user/info/sendValidateCode', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function forgetPassword(params: Object) { + return request({ + url: '/user/info/forgetPassword', + method: 'post', + data: params, + }); +} +export function confirmClient(params: string) { + return request({ + url: '/user/info/confirmClient', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function passwordCheck(params: object) { + return request({ + url: '/user/info/passwordCheck', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function updateSortOrder(params: object) { + return request({ + url: '/user/info/updateSortOrder', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} +export function clearSchedulesByUser(params: object) { + return request({ + url: '/staff/schedule/clearSchedulesByUser', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }); +} + + + +/** + * 重置用户密码 + * @param userCode + * @returns + */ +export function apiResetPwd(userCode: string) { + return request({ + url: "/user/info/resetPassword", + method: "post", + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: `userCode=${userCode}` + }) +} \ No newline at end of file diff --git a/src/api/user/types/index.type.ts b/src/api/user/types/index.type.ts new file mode 100644 index 0000000..44e0fad --- /dev/null +++ b/src/api/user/types/index.type.ts @@ -0,0 +1,65 @@ +import type { ClientInfo } from '../../client/types'; +import type { IRole } from '../../role/types/index.type'; + +/** 用户-类型 */ +export interface IUser { + admin: boolean; // 是否超级管理员账号 + checkVersionCode: string; + clientCode: string; + clientInfos: ClientInfo[]; + clientVsUserList: any; + code: string; + createTime: string; + createUser: 0 | null; + currentClientInfo: ClientInfo; + deletedTime: null | string; + doctor: boolean; + hisCode: string; // his编号 + id: number; + isDeleted: number; + isRecvAlarm: any; + isRecvAlarmEmail: number; + isRecvAlarmWechat: number; + isShow: number; + isValid: number; + isValidForClient: number; + loginWechatMpId: string; + loginWechatUnionId: string; + nurse: boolean; + relatedClients: string; + remark: string; + roles: IRole[]; + selectFieldsInShangjiCanshuPage: string; + selectFieldsInTodayOrderPage: string; + selectedFieldsInCleanStatPage: string; + selectedFieldsInInventory2OutPage: string; + selectedFieldsInInventory2QueryPage: string; + selectedFieldsInMedStat2: string; + updateTime: string | number; + updateUser: number | null; + userAdmin: boolean; + userAvatar: string; + userCustomSetting: string; + userDegree: string; + userEmail: string; + userFromDepartment: string; + userGender: number; + userGoDate: null | string; + userGoDepartment: string; + userGraduateTime: null | string; + userIdentityCode: string; + userInDate: null | string; + userIsTongluDoctor: number; + userMobile: string; + userName: string; + userNo: string; + userPassword: string; + userPinyin: string; + userRfid: string; + userSignPicUrl: string; + userSortOrder: number; + userTitle: string; + userVsRoleList: any; + userWorkState: string; + userWorkTimeFrom: any; +} \ No newline at end of file diff --git a/src/api/user_ticket/index.ts b/src/api/user_ticket/index.ts new file mode 100644 index 0000000..77b8ccb --- /dev/null +++ b/src/api/user_ticket/index.ts @@ -0,0 +1,57 @@ +import request from '/@/utils/request'; +import type { AddTicketParams, TicketListParams } from './types'; + + +/** + * 添加工单 + * @param data + * @returns + */ +export function addTicketApi(data: AddTicketParams) { + return request({ + url: '/user/ticket/add', + method: 'post', + data + }) +} + +/** + * 获取用户工单列表 + * @param params + * @returns + */ +export function ticketListApi(params: TicketListParams) { + return request({ + url: '/user/ticket/list', + method: 'post', + params + }) +} + + +/** + * 获取工单详情 + * @param code + * @returns + */ +export function ticketInfoApi(code: string) { + return request({ + url: '/user/ticket/detail2', + method: 'post', + params: { code } + }) +} + + +/** + * 更新工单 + * @param data + * @returns + */ +export function updateTicketApi(data: any) { + return request({ + url: '/user/ticket/update', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/src/api/user_ticket/types.ts b/src/api/user_ticket/types.ts new file mode 100644 index 0000000..b5fcf51 --- /dev/null +++ b/src/api/user_ticket/types.ts @@ -0,0 +1,12 @@ +export interface AddTicketParams { + clientCode: string; + userCode: string; + ticketBody: string; +} + +export interface TicketListParams { + page: number; + size: number; + wherecondition: string; + ordercondition: string; +} \ No newline at end of file diff --git a/src/api/vascularAccess/index.ts b/src/api/vascularAccess/index.ts new file mode 100644 index 0000000..6163704 --- /dev/null +++ b/src/api/vascularAccess/index.ts @@ -0,0 +1,23 @@ +import request from '/@/utils/request'; +// import type { RequestQuery } from '/@/views/PatientManage/vascularAccess/component/SiteRecord/type'; +// RequestQuery type is commented out - file deleted +type RequestQuery = any; +export function listRequestData(params: RequestQuery) { + return request({ + url: '/patient/hemo/med/cc/positon/loadViewDataByPat', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + params, + }); +} + + +export function updateRequestDataApi(data: any) { + return request({ + url: '/patient/hemo/med/cc/positon/update', + method: 'post', + data, + }); +} diff --git a/src/api/wenjian/index.ts b/src/api/wenjian/index.ts new file mode 100644 index 0000000..3cf8343 --- /dev/null +++ b/src/api/wenjian/index.ts @@ -0,0 +1,44 @@ +import request from '/@/utils/request'; + +export function Add(params: object) { + return request({ + url: '/lcd/time/slots/add', + method: 'post', + data: params, + }); +} +export function update(params: object) { + return request({ + url: '/lcd/time/slots/update', + method: 'post', + data: params, + }); +} +export function deleteId(params: string) { + return request({ + url: '/lcd/time/slots/delete', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + data: params, + }); +} +export function list(params: object) { + return request({ + url: '/lcd/time/slots/list', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params + }) +} + +export function save(params: object) { + return request({ + url: '/lcd/time/slots/save', + method: 'post', + data: params, + }); +} \ No newline at end of file diff --git a/src/api/workdone_template/index.ts b/src/api/workdone_template/index.ts new file mode 100644 index 0000000..c700fea --- /dev/null +++ b/src/api/workdone_template/index.ts @@ -0,0 +1,45 @@ +import request from '/@/utils/request'; + +export function addWorkDoneTemplate(data: object) { + return request({ + url: '/med/workdone/template/add', + method: 'post', + data + }) +} +export function getWorkDoneTemplateList(data: object) { + data.ordercondition='sort_order' + return request({ + url: '/med/workdone/template/list', + method: 'post', + params:data + }) +} +export function addSmartFinishTemplate(params: object) { + return request({ + url: '/patient/hemo/med/record/addSmartFinishTemplate', + method: 'post', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + params, + }) +} +// 编辑医嘱 +export function updateWorkDoneTemplate(data: object) { + return request({ + url: '/med/workdone/template/update', + method: 'post', + data + }) +} +// 删除模板名称 +export function deleteWorkDoneTemplate(id: number) { + return request({ + url: '/med/workdone/template/delete', + method: 'post', + params: { + id + } + }) +} diff --git a/src/assets/button.scss b/src/assets/button.scss new file mode 100644 index 0000000..b7b6b77 --- /dev/null +++ b/src/assets/button.scss @@ -0,0 +1,56 @@ +.buttonCusromRound{ + color: #4194f6; + background: none; + // border-color:none !important; + // border-style: 0px !important; + float:right; + margin-left: 5px !important; + border-left-color: var(--el-color-white) !important; + border-right-color: var(--el-color-white) !important; + border-top-color: var(--el-color-white) !important; + border-bottom-color: var(--el-color-white) !important; + border-radius:0.5em !important; + font-size: 1.1em; + padding-top: 0px; + padding-bottom: 0px; + +} + +.buttonCusromRound:active{ + background: #f81202; + border-color:none !important; + color: #FFF; + border-style: 0px !important; + border-radius:0.5em; +} + +.buttonCusromRightLeft { + +} +// .buttonCusromRightLeft:active{ +// background: #f81202 !important; +// border-color: #3a8ee6; +// color: #FFF; +// border-style: 0px !important; +// } + +.buttonCusromLeft { + color: #ebf1f7; + background: #4194f6; + border-color:none ;//#4194f6; + border-style: 0px; + padding-left: 5px; + padding-right: 10px; + padding-top: 0px; + padding-bottom: 0px; + float:left; + margin-left: 1px !important; + border-radius:0.5em !important; + font-size: 1.1em; +} +.buttonCusromLeft:active{ + background: #f81202 !important; + border-color: #3a8ee6; + color: #FFF; + border-style: 0px !important; +} \ No newline at end of file diff --git a/src/assets/datestyle.scss b/src/assets/datestyle.scss new file mode 100644 index 0000000..740735a --- /dev/null +++ b/src/assets/datestyle.scss @@ -0,0 +1,164 @@ + + + +.datesPikerstyle { + // width: 500 !important; + // height: 235px !important; + + // .el-picker-panel { + line-height: 0px; + // } + // .el-picker-panel__content { + // width: 355px !important; + // height: 180px !important; + // } + // table { + // font-size: 21px; + // } + // .el-date-picker__header { + // margin: 5px; + // } + // .el-date-picker__header-label { + // font-size: 21px; + // } + // .el-date-picker__header el-date-picker__header-label { + // font-size: 21px; + // } + // .el-date-table td, .el-date-table td div { + // height: 22px; + // } + // .el-month-table td .cell, + // .el-year-table td .cell, + // .el-date-table td .cell { + // width: 100%; + // } + + + .el-picker-panel [slot=sidebar], .el-picker-panel__sidebar { + position: absolute; + top: 0; + bottom: 0; + width: 110px; + border-right: 1px solid var(--el-datepicker-inner-border-color); + box-sizing: border-box; + padding-top: 6px; + background-color: rgb(74, 166, 189); + overflow: auto; + } + + .el-date-range-picker__content.is-left { + // width: ; + border-right: 1px solid rgb(74, 166, 189);;//var(--el-datepicker-inner-border-color); + background-color: #95dbf7; + } + + .el-date-range-picker__content.is-right { + border-right: 1px solid rgb(141, 170, 36);;//var(--el-datepicker-inner-border-color); + background-color: #e4f5b4; + } + .el-date-table td .el-date-table-cell { + height: 30px; + padding: 3px 0; + box-sizing: border-box; + background-color: rgb(142, 243, 164); + } + + .el-date-table td.today .el-date-table-cell__text { + color: red;//var(--el-color-primary); + font-weight: 70; + } + .el-date-table td.end-date .el-date-table-cell__text, .el-date-table td.start-date .el-date-table-cell__text { + background-color: #a84605; + } + + .el-date-table td.in-range .el-date-table-cell { + background-color: #e9d417;//var(--el-datepicker-inrange-bg-color); + } + + + } + + + // 时间选择器 +.datestyle { + // top:-8px; + width: 200px !important; + padding-left: 100px; + background-color: transparent; + border: 1px solidvar(--el-datepicker-inrange-bg-color); + color: rgb(134, 15, 15); + height: 20px; + // box-shadow: 0 0 15px #95dbf7 inset; + margin-right: 30px; + } + + :v-deep .el-date-editor .el-range-input { + background-color: transparent; + color: rgb(63, 5, 5); + } + :v-deep .el-range-editor.el-input__inner { + padding: 0; + } + //去除icon + :v-deep .el-icon-time:before { + content: ""; + } + // 时间范围背景色 + :v-deep .el-date-table td.in-range div, + .el-date-table td.in-range div:hover, + .el-date-table.is-week-mode .el-date-table__row.current div, + .el-date-table.is-week-mode .el-date-table__row:hover div { + background-color: #d4e854; + } + +// .el-picker-panel [slot=sidebar], .el-picker-panel__sidebar { +// position: absolute; +// top: 0; +// bottom: 0; +// width: 110px; +// border-right: 1px solid var(--el-datepicker-inner-border-color); +// box-sizing: border-box; +// padding-top: 6px; +// background-color: rgb(74, 166, 189); +// overflow: auto; +// } + +// .el-date-range-picker__content.is-left { +// border-right: 1px solid rgb(74, 166, 189);;//var(--el-datepicker-inner-border-color); +// background-color: #95dbf7; +// } + +// .el-date-range-picker__content.is-right { +// border-right: 1px solid rgb(141, 170, 36);;//var(--el-datepicker-inner-border-color); +// background-color: #e4f5b4; +// } +// .el-date-table td .el-date-table-cell { +// height: 30px; +// padding: 3px 0; +// box-sizing: border-box; +// background-color: rgb(142, 243, 164); +// } + +// .el-date-table td.today .el-date-table-cell__text { +// color: red;//var(--el-color-primary); +// font-weight: 700; +// } +// .el-date-table td.end-date .el-date-table-cell__text, .el-date-table td.start-date .el-date-table-cell__text { +// background-color: #c3366d; +// } + +// .el-date-table td.in-range .el-date-table-cell { +// background-color: #e9d417;//var(--el-datepicker-inrange-bg-color); +// } +.tatlecss{ + .el-alert__icon{ + font-size: 20px; + } + .el-alert__title{ + font-size: 15px; + } + .el-alert--warning.is-light{ + color: #f56c6c; + background-color: #fef0f0; + } +} diff --git a/src/assets/dialog.scss b/src/assets/dialog.scss new file mode 100644 index 0000000..73ac9fa --- /dev/null +++ b/src/assets/dialog.scss @@ -0,0 +1,57 @@ + .patientDialog { + background-color:var(--el-dialog-bg-color); + + + .el-dialog { + --el-dialog-width: 50%; + --el-dialog-margin-top: 15vh; + --el-dialog-bg-color: var(--el-color-white); + --el-dialog-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + --el-dialog-title-font-size: var(--el-font-size-large); + --el-dialog-content-font-size: 14px; + --el-dialog-font-line-height: var(--el-font-line-height-primary); + --el-dialog-padding-primary: 20px; + position: relative; + margin: var(--el-dialog-margin-top,15vh) auto 50px; + background: var(--el-dialog-bg-color); + border-radius: var(--el-border-radius-small); + box-shadow: var(--el-dialog-box-shadow); + box-sizing: border-box; + width: var(--el-dialog-width,50%); + } + + .el-dialog__header { + padding: var(--el-dialog-padding-primary); + padding-top: 5px; + padding-bottom: 5px; + background-color: rgba(70, 150, 249, 0.8) !important; + color: white; + text-align: center; + } + .el-dialog__title { + line-height: var(--el-dialog-font-line-height); + font-size: var(--el-dialog-title-font-size); + color: white; + } + .el-dialog__headerbtn .el-dialog__close { + color: var(--el-color-info); + font-size: inherit; + padding-top: 0px; + margin-top: 1px; + top: -10px; + color: white; + } + .el-dialog__footer { + padding: var(--el-dialog-padding-primary); + padding-top: 10px; + padding-right: 60px; + text-align: center; + box-sizing: border-box; + } + + .el-button--danger { + color: var(--color-whites); + background: rgba(209, 91, 71, 1) !important; + border-color: var(--color-danger); + } +} \ No newline at end of file diff --git a/src/assets/etravel-qrcode.png b/src/assets/etravel-qrcode.png new file mode 100644 index 0000000..a9499f4 Binary files /dev/null and b/src/assets/etravel-qrcode.png differ diff --git a/src/assets/icons/lixian.png b/src/assets/icons/lixian.png new file mode 100644 index 0000000..5d394a3 Binary files /dev/null and b/src/assets/icons/lixian.png differ diff --git a/src/assets/icons/selfExamination.svg b/src/assets/icons/selfExamination.svg new file mode 100644 index 0000000..b07adf4 --- /dev/null +++ b/src/assets/icons/selfExamination.svg @@ -0,0 +1,15 @@ + + + 自查 + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/svg/addNew.svg b/src/assets/icons/svg/addNew.svg new file mode 100644 index 0000000..fc6c188 --- /dev/null +++ b/src/assets/icons/svg/addNew.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/alter.svg b/src/assets/icons/svg/alter.svg new file mode 100644 index 0000000..f3d9601 --- /dev/null +++ b/src/assets/icons/svg/alter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/batcmd.svg b/src/assets/icons/svg/batcmd.svg new file mode 100644 index 0000000..7ffadd4 --- /dev/null +++ b/src/assets/icons/svg/batcmd.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/export.svg b/src/assets/icons/svg/export.svg new file mode 100644 index 0000000..26659e2 --- /dev/null +++ b/src/assets/icons/svg/export.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/find.svg b/src/assets/icons/svg/find.svg new file mode 100644 index 0000000..50a9628 --- /dev/null +++ b/src/assets/icons/svg/find.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/qingchu.svg b/src/assets/icons/svg/qingchu.svg new file mode 100644 index 0000000..533321b --- /dev/null +++ b/src/assets/icons/svg/qingchu.svg @@ -0,0 +1,126 @@ + + + 扫把 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/svg/rectf.svg b/src/assets/icons/svg/rectf.svg new file mode 100644 index 0000000..e1924f1 --- /dev/null +++ b/src/assets/icons/svg/rectf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/search.svg b/src/assets/icons/svg/search.svg new file mode 100644 index 0000000..9237bd1 --- /dev/null +++ b/src/assets/icons/svg/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/top.svg b/src/assets/icons/svg/top.svg new file mode 100644 index 0000000..d0b7c71 --- /dev/null +++ b/src/assets/icons/svg/top.svg @@ -0,0 +1,12 @@ + + + 编组 8 + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/svg/tuichu.svg b/src/assets/icons/svg/tuichu.svg new file mode 100644 index 0000000..ac8ca77 --- /dev/null +++ b/src/assets/icons/svg/tuichu.svg @@ -0,0 +1,13 @@ + + + 退出 + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/svg/xia.svg b/src/assets/icons/svg/xia.svg new file mode 100644 index 0000000..8b16d9c --- /dev/null +++ b/src/assets/icons/svg/xia.svg @@ -0,0 +1,12 @@ + + + 编组 8备份 + + + + + + + + + \ No newline at end of file diff --git a/src/assets/icons/xuyabaoj.png b/src/assets/icons/xuyabaoj.png new file mode 100644 index 0000000..3b8d53c Binary files /dev/null and b/src/assets/icons/xuyabaoj.png differ diff --git a/src/assets/icons/xybj.png b/src/assets/icons/xybj.png new file mode 100644 index 0000000..cc2a71e Binary files /dev/null and b/src/assets/icons/xybj.png differ diff --git a/src/assets/icons/xyyashangsheng.png b/src/assets/icons/xyyashangsheng.png new file mode 100644 index 0000000..bac5609 Binary files /dev/null and b/src/assets/icons/xyyashangsheng.png differ diff --git a/src/assets/imgs/A4.png b/src/assets/imgs/A4.png new file mode 100644 index 0000000..aabd6b7 Binary files /dev/null and b/src/assets/imgs/A4.png differ diff --git a/src/assets/imgs/Ai/col1.png b/src/assets/imgs/Ai/col1.png new file mode 100644 index 0000000..8394a35 Binary files /dev/null and b/src/assets/imgs/Ai/col1.png differ diff --git a/src/assets/imgs/Ai/col2.png b/src/assets/imgs/Ai/col2.png new file mode 100644 index 0000000..1ceedc0 Binary files /dev/null and b/src/assets/imgs/Ai/col2.png differ diff --git a/src/assets/imgs/Ai/col3.png b/src/assets/imgs/Ai/col3.png new file mode 100644 index 0000000..612d17e Binary files /dev/null and b/src/assets/imgs/Ai/col3.png differ diff --git a/src/assets/imgs/Ai/col4.png b/src/assets/imgs/Ai/col4.png new file mode 100644 index 0000000..08dc606 Binary files /dev/null and b/src/assets/imgs/Ai/col4.png differ diff --git a/src/assets/imgs/Ai/col5.png b/src/assets/imgs/Ai/col5.png new file mode 100644 index 0000000..5ba3157 Binary files /dev/null and b/src/assets/imgs/Ai/col5.png differ diff --git a/src/assets/imgs/Ai/wifi.png b/src/assets/imgs/Ai/wifi.png new file mode 100644 index 0000000..d398727 Binary files /dev/null and b/src/assets/imgs/Ai/wifi.png differ diff --git a/src/assets/imgs/Ai/患者信息.xlsx b/src/assets/imgs/Ai/患者信息.xlsx new file mode 100644 index 0000000..ce2bc4e Binary files /dev/null and b/src/assets/imgs/Ai/患者信息.xlsx differ diff --git a/src/assets/imgs/LOGO.png b/src/assets/imgs/LOGO.png new file mode 100644 index 0000000..2b54285 Binary files /dev/null and b/src/assets/imgs/LOGO.png differ diff --git a/src/assets/imgs/bed/state0.png b/src/assets/imgs/bed/state0.png new file mode 100644 index 0000000..fa87d92 Binary files /dev/null and b/src/assets/imgs/bed/state0.png differ diff --git a/src/assets/imgs/bed/state1.png b/src/assets/imgs/bed/state1.png new file mode 100644 index 0000000..a555300 Binary files /dev/null and b/src/assets/imgs/bed/state1.png differ diff --git a/src/assets/imgs/bed/state2.png b/src/assets/imgs/bed/state2.png new file mode 100644 index 0000000..f13d655 Binary files /dev/null and b/src/assets/imgs/bed/state2.png differ diff --git a/src/assets/imgs/bed/state3.png b/src/assets/imgs/bed/state3.png new file mode 100644 index 0000000..76a662b Binary files /dev/null and b/src/assets/imgs/bed/state3.png differ diff --git a/src/assets/imgs/bed/state4.png b/src/assets/imgs/bed/state4.png new file mode 100644 index 0000000..759213d Binary files /dev/null and b/src/assets/imgs/bed/state4.png differ diff --git a/src/assets/imgs/caogao.png b/src/assets/imgs/caogao.png new file mode 100644 index 0000000..a049f46 Binary files /dev/null and b/src/assets/imgs/caogao.png differ diff --git a/src/assets/imgs/clientName.png b/src/assets/imgs/clientName.png new file mode 100644 index 0000000..a5cf4cc Binary files /dev/null and b/src/assets/imgs/clientName.png differ diff --git a/src/assets/imgs/dapingbgk.png b/src/assets/imgs/dapingbgk.png new file mode 100644 index 0000000..179eba3 Binary files /dev/null and b/src/assets/imgs/dapingbgk.png differ diff --git a/src/assets/imgs/develop.png b/src/assets/imgs/develop.png new file mode 100644 index 0000000..948aac9 Binary files /dev/null and b/src/assets/imgs/develop.png differ diff --git a/src/assets/imgs/develop.svg b/src/assets/imgs/develop.svg new file mode 100644 index 0000000..9917c8b --- /dev/null +++ b/src/assets/imgs/develop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/imgs/favicon.svg b/src/assets/imgs/favicon.svg new file mode 100644 index 0000000..f7d230a --- /dev/null +++ b/src/assets/imgs/favicon.svg @@ -0,0 +1,25 @@ +Created with Snap + + + + + Created with SnapCreated with Snap + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/imgs/guzhang.png b/src/assets/imgs/guzhang.png new file mode 100644 index 0000000..6324990 Binary files /dev/null and b/src/assets/imgs/guzhang.png differ diff --git a/src/assets/imgs/home/applyCount.png b/src/assets/imgs/home/applyCount.png new file mode 100644 index 0000000..afdd5de Binary files /dev/null and b/src/assets/imgs/home/applyCount.png differ diff --git a/src/assets/imgs/home/icon/icon1-1.png b/src/assets/imgs/home/icon/icon1-1.png new file mode 100644 index 0000000..3fd23ba Binary files /dev/null and b/src/assets/imgs/home/icon/icon1-1.png differ diff --git a/src/assets/imgs/home/icon/icon1.png b/src/assets/imgs/home/icon/icon1.png new file mode 100644 index 0000000..7bc4fee Binary files /dev/null and b/src/assets/imgs/home/icon/icon1.png differ diff --git a/src/assets/imgs/home/icon/icon2-2.png b/src/assets/imgs/home/icon/icon2-2.png new file mode 100644 index 0000000..70291e1 Binary files /dev/null and b/src/assets/imgs/home/icon/icon2-2.png differ diff --git a/src/assets/imgs/home/icon/icon2.png b/src/assets/imgs/home/icon/icon2.png new file mode 100644 index 0000000..22aef6b Binary files /dev/null and b/src/assets/imgs/home/icon/icon2.png differ diff --git a/src/assets/imgs/home/icon/icon3-3.png b/src/assets/imgs/home/icon/icon3-3.png new file mode 100644 index 0000000..ecd2c33 Binary files /dev/null and b/src/assets/imgs/home/icon/icon3-3.png differ diff --git a/src/assets/imgs/home/icon/icon3.png b/src/assets/imgs/home/icon/icon3.png new file mode 100644 index 0000000..901b536 Binary files /dev/null and b/src/assets/imgs/home/icon/icon3.png differ diff --git a/src/assets/imgs/home/icon/icon4-4.png b/src/assets/imgs/home/icon/icon4-4.png new file mode 100644 index 0000000..3bc735b Binary files /dev/null and b/src/assets/imgs/home/icon/icon4-4.png differ diff --git a/src/assets/imgs/home/icon/icon4.png b/src/assets/imgs/home/icon/icon4.png new file mode 100644 index 0000000..62c4607 Binary files /dev/null and b/src/assets/imgs/home/icon/icon4.png differ diff --git a/src/assets/imgs/home/laboratoryCount.png b/src/assets/imgs/home/laboratoryCount.png new file mode 100644 index 0000000..98d2739 Binary files /dev/null and b/src/assets/imgs/home/laboratoryCount.png differ diff --git a/src/assets/imgs/home/laboratoryCount2.png b/src/assets/imgs/home/laboratoryCount2.png new file mode 100644 index 0000000..d807aa1 Binary files /dev/null and b/src/assets/imgs/home/laboratoryCount2.png differ diff --git a/src/assets/imgs/home/logo.png b/src/assets/imgs/home/logo.png new file mode 100644 index 0000000..4a89034 Binary files /dev/null and b/src/assets/imgs/home/logo.png differ diff --git a/src/assets/imgs/home/viewCount.png b/src/assets/imgs/home/viewCount.png new file mode 100644 index 0000000..5065ad9 Binary files /dev/null and b/src/assets/imgs/home/viewCount.png differ diff --git a/src/assets/imgs/inventory/inventory-detail.png b/src/assets/imgs/inventory/inventory-detail.png new file mode 100644 index 0000000..1f285db Binary files /dev/null and b/src/assets/imgs/inventory/inventory-detail.png differ diff --git a/src/assets/imgs/login/login-background.jpg b/src/assets/imgs/login/login-background.jpg new file mode 100644 index 0000000..5290da2 Binary files /dev/null and b/src/assets/imgs/login/login-background.jpg differ diff --git a/src/assets/imgs/login/login-icon-logo.png b/src/assets/imgs/login/login-icon-logo.png new file mode 100644 index 0000000..3b66fe3 Binary files /dev/null and b/src/assets/imgs/login/login-icon-logo.png differ diff --git a/src/assets/imgs/login/login-icon-user.png b/src/assets/imgs/login/login-icon-user.png new file mode 100644 index 0000000..ffc4076 Binary files /dev/null and b/src/assets/imgs/login/login-icon-user.png differ diff --git a/src/assets/imgs/login/login.jpg b/src/assets/imgs/login/login.jpg new file mode 100644 index 0000000..292eac5 Binary files /dev/null and b/src/assets/imgs/login/login.jpg differ diff --git a/src/assets/imgs/meiMai.png b/src/assets/imgs/meiMai.png new file mode 100644 index 0000000..640ec4e Binary files /dev/null and b/src/assets/imgs/meiMai.png differ diff --git a/src/assets/imgs/nationalFlag/jp.png b/src/assets/imgs/nationalFlag/jp.png new file mode 100644 index 0000000..f18b561 Binary files /dev/null and b/src/assets/imgs/nationalFlag/jp.png differ diff --git a/src/assets/imgs/nationalFlag/ms.png b/src/assets/imgs/nationalFlag/ms.png new file mode 100644 index 0000000..633a44c Binary files /dev/null and b/src/assets/imgs/nationalFlag/ms.png differ diff --git a/src/assets/imgs/nationalFlag/us.png b/src/assets/imgs/nationalFlag/us.png new file mode 100644 index 0000000..bca62da Binary files /dev/null and b/src/assets/imgs/nationalFlag/us.png differ diff --git a/src/assets/imgs/nationalFlag/zh.png b/src/assets/imgs/nationalFlag/zh.png new file mode 100644 index 0000000..1b17aec Binary files /dev/null and b/src/assets/imgs/nationalFlag/zh.png differ diff --git a/src/assets/imgs/noQuanXian.png b/src/assets/imgs/noQuanXian.png new file mode 100644 index 0000000..6282a31 Binary files /dev/null and b/src/assets/imgs/noQuanXian.png differ diff --git a/src/assets/imgs/patient/vascular-delete.png b/src/assets/imgs/patient/vascular-delete.png new file mode 100644 index 0000000..5624360 Binary files /dev/null and b/src/assets/imgs/patient/vascular-delete.png differ diff --git a/src/assets/imgs/patient/vascular-edit.png b/src/assets/imgs/patient/vascular-edit.png new file mode 100644 index 0000000..0af1e69 Binary files /dev/null and b/src/assets/imgs/patient/vascular-edit.png differ diff --git a/src/assets/imgs/shipin.png b/src/assets/imgs/shipin.png new file mode 100644 index 0000000..5302ec2 Binary files /dev/null and b/src/assets/imgs/shipin.png differ diff --git a/src/assets/imgs/statistics_rule.png b/src/assets/imgs/statistics_rule.png new file mode 100644 index 0000000..4d2f815 Binary files /dev/null and b/src/assets/imgs/statistics_rule.png differ diff --git a/src/assets/imgs/tool-a.png b/src/assets/imgs/tool-a.png new file mode 100644 index 0000000..15ee45f Binary files /dev/null and b/src/assets/imgs/tool-a.png differ diff --git a/src/assets/imgs/tool-a1.png b/src/assets/imgs/tool-a1.png new file mode 100644 index 0000000..08762f0 Binary files /dev/null and b/src/assets/imgs/tool-a1.png differ diff --git a/src/assets/imgs/tool-v.png b/src/assets/imgs/tool-v.png new file mode 100644 index 0000000..15ee45f Binary files /dev/null and b/src/assets/imgs/tool-v.png differ diff --git a/src/assets/imgs/userSet/biaodan@2x.png b/src/assets/imgs/userSet/biaodan@2x.png new file mode 100644 index 0000000..27674ed Binary files /dev/null and b/src/assets/imgs/userSet/biaodan@2x.png differ diff --git a/src/assets/imgs/userSet/caigoufukuanguanli@2x.png b/src/assets/imgs/userSet/caigoufukuanguanli@2x.png new file mode 100644 index 0000000..96a4cb3 Binary files /dev/null and b/src/assets/imgs/userSet/caigoufukuanguanli@2x.png differ diff --git a/src/assets/imgs/userSet/cangkuchaxun@2x.png b/src/assets/imgs/userSet/cangkuchaxun@2x.png new file mode 100644 index 0000000..17bacaf Binary files /dev/null and b/src/assets/imgs/userSet/cangkuchaxun@2x.png differ diff --git a/src/assets/imgs/userSet/huiyuanluru@2x.png b/src/assets/imgs/userSet/huiyuanluru@2x.png new file mode 100644 index 0000000..1e65954 Binary files /dev/null and b/src/assets/imgs/userSet/huiyuanluru@2x.png differ diff --git a/src/assets/imgs/userSet/jindu@2x.png b/src/assets/imgs/userSet/jindu@2x.png new file mode 100644 index 0000000..ae9186f Binary files /dev/null and b/src/assets/imgs/userSet/jindu@2x.png differ diff --git a/src/assets/imgs/userSet/mendiankanban@2x.png b/src/assets/imgs/userSet/mendiankanban@2x.png new file mode 100644 index 0000000..88e01b4 Binary files /dev/null and b/src/assets/imgs/userSet/mendiankanban@2x.png differ diff --git a/src/assets/imgs/userSet/shangpinku@2x.png b/src/assets/imgs/userSet/shangpinku@2x.png new file mode 100644 index 0000000..662f319 Binary files /dev/null and b/src/assets/imgs/userSet/shangpinku@2x.png differ diff --git a/src/assets/imgs/userSet/tibaobiaodan@2x.png b/src/assets/imgs/userSet/tibaobiaodan@2x.png new file mode 100644 index 0000000..97a8e30 Binary files /dev/null and b/src/assets/imgs/userSet/tibaobiaodan@2x.png differ diff --git a/src/assets/imgs/userSet/tongji@2x.png b/src/assets/imgs/userSet/tongji@2x.png new file mode 100644 index 0000000..a645f33 Binary files /dev/null and b/src/assets/imgs/userSet/tongji@2x.png differ diff --git a/src/assets/imgs/xgtl-tool-tips.jpg b/src/assets/imgs/xgtl-tool-tips.jpg new file mode 100644 index 0000000..603f370 Binary files /dev/null and b/src/assets/imgs/xgtl-tool-tips.jpg differ diff --git a/src/assets/imgs/xgtlA.png b/src/assets/imgs/xgtlA.png new file mode 100644 index 0000000..d38a615 Binary files /dev/null and b/src/assets/imgs/xgtlA.png differ diff --git a/src/assets/imgs/xgtlV.png b/src/assets/imgs/xgtlV.png new file mode 100644 index 0000000..a9c39ef Binary files /dev/null and b/src/assets/imgs/xgtlV.png differ diff --git a/src/assets/imgs/xgtl_default.png b/src/assets/imgs/xgtl_default.png new file mode 100644 index 0000000..c430093 Binary files /dev/null and b/src/assets/imgs/xgtl_default.png differ diff --git a/src/assets/imgs/xytsm.png b/src/assets/imgs/xytsm.png new file mode 100644 index 0000000..b9f784a Binary files /dev/null and b/src/assets/imgs/xytsm.png differ diff --git a/src/assets/imgs/zc.png b/src/assets/imgs/zc.png new file mode 100644 index 0000000..20435db Binary files /dev/null and b/src/assets/imgs/zc.png differ diff --git a/src/assets/index.scss b/src/assets/index.scss new file mode 100644 index 0000000..6068549 --- /dev/null +++ b/src/assets/index.scss @@ -0,0 +1,27 @@ +@import './datestyle.scss'; +@import './selector.scss'; +@import './dialog.scss'; +@import './button.scss'; +@import './svgStyle.scss'; +.el-table th.el-table__cell { + background: #6BABFA ; + color: white; + font-size: 14px; + text-align: center; + } +.el-table td.el-table__cell { + text-align: center; + font-size: 14px; + // padding: 0px; + } + + .el-input.is-disabled .el-input__inner{ + color: #606266; + } + .el-form-item--small.el-form-item{ + margin-bottom: 2; + } + + + + diff --git a/src/assets/print0.png b/src/assets/print0.png new file mode 100644 index 0000000..8aa6839 Binary files /dev/null and b/src/assets/print0.png differ diff --git a/src/assets/print1.png b/src/assets/print1.png new file mode 100644 index 0000000..488d0e8 Binary files /dev/null and b/src/assets/print1.png differ diff --git a/src/assets/print2.png b/src/assets/print2.png new file mode 100644 index 0000000..6c82ec9 Binary files /dev/null and b/src/assets/print2.png differ diff --git a/src/assets/selector.scss b/src/assets/selector.scss new file mode 100644 index 0000000..31b4bf5 --- /dev/null +++ b/src/assets/selector.scss @@ -0,0 +1,196 @@ +.Conditions-date-select { + // vertical-align: middle; + top: -2px; + position: relative; + float: center; + width: 126px; + margin-left: 1px; + margin-top: 0; + margin-right: 0.36rem; + // padding-top: -10px; + ::v-deep .el-input__inner { + height: 30px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + border: 0.01rem solid rgba(213, 213, 213, 1); + overflow: hidden; + border-left-width: 1; + // background-color: rgba(67, 11, 99, 0.8); + font-family: AlibabaPuHuiTi-Medium, AlibabaPuHuiTi; + font-size: 0.28rem; + color: rgba(0, 0, 0, 0.6); + } +} + +.Conditions-date-select-down { + position: relative; + z-index: -1; + align-items: center; + text-align: center; + line-height: 10px; + letter-spacing: 0.875px; + white-space: nowrap; + display: block; + background-color: rgba(255, 255, 255, 1); //item 背景色 + + font-family: AlibabaPuHuiTi-Medium, AlibabaPuHuiTi; + top: -50%; + + box-shadow: inset 0 0 0 1px rgba(70, 150, 249, 0.4), inset 0 0 0 1px rgba(70, 150, 249, 0.4); + border-radius: 5px; + // border: 0.01rem solid rgba(70, 150, 249, 0.4); + border-top-color: transparent !important; + border-left-color: transparent !important; + border-right-color: transparent !important; + border-bottom-color: transparent !important; + + .el-select-dropdown__item.selected { + font-family: AlibabaPuHuiTi-Medium, AlibabaPuHuiTi; + // font-size: 0.28rem; + color: rgba(51, 51, 51, 1); //当前选中item的字体色 + } + li { + //item 没有被选中的字体 + color: #fff; + background: transparent; + color: rgba(51, 51, 51, 1); + // font-size: 0.28rem; + } + .el-select-dropdown__item:hover, + .el-select-dropdown__item.hover { + background-color: rgba(70, 150, 249, 0.1); //item 移动上去时的背景色 + margin-right: 0px; + } + + .el-select-dropdown__empty { + padding: 0.1rem; + // font-size: 0.28rem; + } + .el-popper__arrow { + position: absolute; + width: 10px; + height: 10px; + z-index: 100; + // border: 1px solid rgb(7, 61, 236); + // transform: rotate(45deg); + border-top-color: transparent !important; + border-left-color: transparent !important; + border-right-color: transparent !important; + border-bottom-color: transparent !important; + box-shadow: inset 0 0 0 1px rgba(70, 150, 249, 0.4), inset 0 0 0 1px rgba(70, 150, 249, 0.4)!important; + // transform:rotate(45deg); + + } + .el-popper[data-popper-placement^="bottom"] > .el-popper__arrow { + top: -5px; + box-shadow: inset 0 0 0 1px rgba(70, 150, 249, 0.4), inset 0 0 0 1px rgba(70, 150, 249, 0.4)!important; + } +} + + .colRightCbx{ + // vertical-align: middle; + top: 0px !important; + position: relative; + float: center; + width: 126px; + margin-left: 1px; + margin-top: 20x !important; + margin-right: 0.36rem; + // padding-top: -10px; + .el-input__inner { + + height: 30px !important; + + } +} +.colRightCbx-select-down{ + position: relative; + z-index: -1; + align-items: center; + text-align: center; + line-height: 10px; + letter-spacing: 0.875px; + white-space: nowrap; + display: block; + background-color: rgba(255, 255, 255, 1); //item 背景色 + + font-family: AlibabaPuHuiTi-Medium, AlibabaPuHuiTi; + top: -50%; + + box-shadow: inset 0 0 0 1px rgba(70, 150, 249, 0.4), inset 0 0 0 1px rgba(70, 150, 249, 0.4); + border-radius: 5px; + // border: 0.01rem solid rgba(70, 150, 249, 0.4); + border-top-color: transparent !important; + border-left-color: transparent !important; + border-right-color: transparent !important; + border-bottom-color: transparent !important; + + .el-select-dropdown__item.selected { + font-family: AlibabaPuHuiTi-Medium, AlibabaPuHuiTi; + // font-size: 0.28rem; + color: rgba(51, 51, 51, 1); //当前选中item的字体色 + } + li { + //item 没有被选中的字体 + color: #fff; + background: transparent; + color: rgba(51, 51, 51, 1); + // font-size: 0.28rem; + } + .el-select-dropdown__item:hover, + .el-select-dropdown__item.hover { + background-color: rgba(70, 150, 249, 0.1); //item 移动上去时的背景色 + margin-right: 0px; + } + + .el-select-dropdown__empty { + padding: 0.1rem; + // font-size: 0.28rem; + } + .el-popper__arrow { + z-index: -1; + position: absolute; + width: 10px; + height: 10px; + z-index: 100; + // border: 1px solid rgb(7, 61, 236); + // transform: rotate(45deg); + border-top-color: rgba(70, 150, 249, 0.4) !important; + border-left-color: rgba(70, 150, 249, 0.4) !important; + border-right-color: rgba(70, 150, 249, 0.4) !important; + border-bottom-color: rgba(70, 150, 249, 0.4) !important; + // box-shadow: inset 0 0 0 1px rgba(70, 150, 249, 0.4), inset 0 0 0 1px rgba(70, 150, 249, 0.4)!important; + // transform:rotate(45deg); + + } + .el-select__popper.el-popper[role=tooltip] .el-popper__arrow::before { + border: 1px solid rgba(70, 150, 249, 0.4) !important; + } + .el-popper.is-light .el-popper__arrow::before { + border: 1px solid var(--el-border-color-light); + background: var(--el-color-white); + border-top-color: rgba(70, 150, 249, 0.4) !important; + border-left-color: rgba(70, 150, 249, 0.4) !important; + border-right-color: rgba(70, 150, 249, 0.4) !important; + border-bottom-color: rgba(70, 150, 249, 0.4) !important; + right: 0; + } + .el-popper[data-popper-placement^="top"] > .el-popper__arrow { + z-index: -1 !important; + top: -5px !important; + border-top-color: rgba(70, 150, 249, 0.4) !important; + border-left-color: rgba(70, 150, 249, 0.4) !important; + border-right-color: rgba(70, 150, 249, 0.4) !important; + border-bottom-color: rgba(70, 150, 249, 0.4) !important; + // box-shadow: inset 0 0 0 0px rgba(70, 150, 249, 0.4), inset 0 0 0 1px rgba(70, 150, 249, 0.4)!important; + } + .el-popper[data-popper-placement^="bottom"] > .el-popper__arrow { + z-index: -1 !important; + top: -5px !important; + border-top-color: rgba(70, 150, 249, 0.4) !important; + border-left-color: rgba(70, 150, 249, 0.4) !important; + border-right-color: rgba(70, 150, 249, 0.4) !important; + border-bottom-color: rgba(70, 150, 249, 0.4) !important; + // box-shadow: inset 0 0 0 0px rgba(70, 150, 249, 0.4), inset 0 0 0 1px rgba(70, 150, 249, 0.4)!important; + } +} \ No newline at end of file diff --git a/src/assets/svgStyle.scss b/src/assets/svgStyle.scss new file mode 100644 index 0000000..833d231 --- /dev/null +++ b/src/assets/svgStyle.scss @@ -0,0 +1,6 @@ + + +.svgIcon20_5 { + width: 20px; + height: 5px; + } \ No newline at end of file diff --git a/src/assets/unit.ts b/src/assets/unit.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/components/Card/index.vue b/src/components/Card/index.vue new file mode 100644 index 0000000..9b4b8be --- /dev/null +++ b/src/components/Card/index.vue @@ -0,0 +1,27 @@ + + + + + \ No newline at end of file diff --git a/src/components/InventoryDictionarySelect/index.vue b/src/components/InventoryDictionarySelect/index.vue new file mode 100644 index 0000000..88589fb --- /dev/null +++ b/src/components/InventoryDictionarySelect/index.vue @@ -0,0 +1,207 @@ + + + + + \ No newline at end of file diff --git a/src/components/InventoryDictionarySelectByFormItem/index.vue b/src/components/InventoryDictionarySelectByFormItem/index.vue new file mode 100644 index 0000000..2b50fc6 --- /dev/null +++ b/src/components/InventoryDictionarySelectByFormItem/index.vue @@ -0,0 +1,224 @@ + + + + + \ No newline at end of file diff --git a/src/components/InventoryMonitoring/index.vue b/src/components/InventoryMonitoring/index.vue new file mode 100644 index 0000000..143175e --- /dev/null +++ b/src/components/InventoryMonitoring/index.vue @@ -0,0 +1,145 @@ + + + + + \ No newline at end of file diff --git a/src/components/allCheckbox/index.vue b/src/components/allCheckbox/index.vue new file mode 100644 index 0000000..9d20fb5 --- /dev/null +++ b/src/components/allCheckbox/index.vue @@ -0,0 +1,87 @@ + + + + + \ No newline at end of file diff --git a/src/components/auth/auth.vue b/src/components/auth/auth.vue new file mode 100644 index 0000000..a3b6528 --- /dev/null +++ b/src/components/auth/auth.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/auth/authAll.vue b/src/components/auth/authAll.vue new file mode 100644 index 0000000..cb0b814 --- /dev/null +++ b/src/components/auth/authAll.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/auth/auths.vue b/src/components/auth/auths.vue new file mode 100644 index 0000000..8c9087f --- /dev/null +++ b/src/components/auth/auths.vue @@ -0,0 +1,33 @@ + + + diff --git a/src/components/ccanvesEditor/illustrate.ts b/src/components/ccanvesEditor/illustrate.ts new file mode 100644 index 0000000..ac6761e --- /dev/null +++ b/src/components/ccanvesEditor/illustrate.ts @@ -0,0 +1,152 @@ +interface IElementIllustrate { + // 基础 + id?: string; + type?: { + // TEXT = 'text', // 文本类型 + // IMAGE = 'image', // 图片 + // TABLE = 'table', // 表格 + // HYPERLINK = 'hyperlink' , // 超链接 + // SUPERSCRIPT = 'superscript', // 脚本块 + // SUBSCRIPT = 'subscript', // 写在下面的 + // SEPARATOR = 'separator', // 分类器,不知道干嘛用的,加上去直接小时了 + // PAGE_BREAK = 'pageBreak', // 分页符 + // CONTROL = 'control', // 控件 + // CHECKBOX = 'checkbox', // 复选框 + // LATEX = 'latex', // 胶乳??? + // TAB = 'tab', // 表格 + // DATE = 'date', // 日期 + // BLOCK = 'block' // 快 + }; + // value: string; // 内容 + // valueList?: IElement[]; // 复合元素(超链接、标题、列表等)使用 + extension?: unknown; // 延伸??? + // 样式 + font?: string; // 字体 + size?: number; // 字体大小 + width?: number; // 宽 + height?: number; // 高 + bold?: boolean; // 加粗 + color?: string; // 颜色 + highlight?: string; // 行高 + italic?: boolean; // 斜体 + underline?: boolean; // 下划线 + strikeout?: boolean; // 删除线 + // rowFlex?: { + // LEFT = 'left', + // CENTER = 'center', + // RIGHT = 'right', + // ALIGNMENT = 'alignment' + // }; // 对齐方式 + rowMargin?: number; // 行边距 + letterSpacing?: number; // 字间距 + // textDecoration?: { + // style?: TextDecorationStyle; + // }; // 文本修饰 + // 组信息-可用于批注等其他成组使用场景 + // groupIds?: string[]; + // 表格 + // conceptId?: string; + // colgroup?: { + // width: number; + // }[]; + // trList?: { + // height: number; + // tdList: { + // colspan: number; + // rowspan: number; + // verticalAlign?: VerticalAlign; + // backgroundColor?: string; + // borderTypes?: TdBorder[]; + // slashTypes?: TdSlash[]; + // value: IElement[]; + // }[]; + // }[]; + // borderType?: TableBorder; // 表格边框样式 + // 超链接 + // url?: string; + // 上下标 + // actualSize?: number; + // 分割线 + // dashArray?: number[]; + // 控件 + // control?: { + // type: { + // TEXT = 'text', + // SELECT = 'select', + // CHECKBOX = 'checkbox' + // }; + // value: IElement[] | null; + // placeholder?: string; + // conceptId?: string; + // prefix?: string; + // postfix?: string; + // minWidth?: number; + // underline?: boolean; + // border?: boolean; + // extension?: unknown; + // indentation?: ControlIndentation; + // deletable?: boolean; + // disabled?: boolean; + // code: string | null; + // min?: number; + // max?: number; + // valueSets: { + // value: string; + // code: string; + // }[]; + // checkbox?: { + // value: boolean | null; + // code?: string; + // disabled?: boolean; + // }; + // font?: string; + // size?: number; + // bold?: boolean; + // color?: string; + // highlight?: string; + // italic?: boolean; + // strikeout?: boolean; + // }; + // controlComponent?: { + // PREFIX = 'prefix', + // POSTFIX = 'postfix', + // PLACEHOLDER = 'placeholder', + // VALUE = 'value', + // CHECKBOX = 'checkbox' + // }; + // 复选框 + // checkbox?: { + // value: boolean | null; + // code?: string; + // disabled?: boolean; + // }; + // // LaTeX + // laTexSVG?: string; + // // 日期 + // dateFormat?: string; + // // 图片 + // imgDisplay?: { + // INLINE = 'inline', + // BLOCK = 'block' + // } + // // 内容块 + // block?: { + // type: { + // IFRAME = 'iframe', + // VIDEO = 'video' + // }; + // iframeBlock?: { + // src?: string; + // srcdoc?: string; + // }; + // videoBlock?: { + // src: string; + // }; + // }; + // // 标题 + // level?: TitleLevel; + // // 列表 + // listType?: ListType; + // listStyle?: ListStyle; + // listWrap?: boolean; + } \ No newline at end of file diff --git a/src/components/ccanvesEditor/index.vue b/src/components/ccanvesEditor/index.vue new file mode 100644 index 0000000..55a1b76 --- /dev/null +++ b/src/components/ccanvesEditor/index.vue @@ -0,0 +1,1384 @@ + + + + + \ No newline at end of file diff --git a/src/components/cropper/index.vue b/src/components/cropper/index.vue new file mode 100644 index 0000000..176931d --- /dev/null +++ b/src/components/cropper/index.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/src/components/dragVerify/dragVerify.vue b/src/components/dragVerify/dragVerify.vue new file mode 100644 index 0000000..ec47407 --- /dev/null +++ b/src/components/dragVerify/dragVerify.vue @@ -0,0 +1,296 @@ + + + + diff --git a/src/components/dragVerify/dragVerifyImg.vue b/src/components/dragVerify/dragVerifyImg.vue new file mode 100644 index 0000000..8bc1f3d --- /dev/null +++ b/src/components/dragVerify/dragVerifyImg.vue @@ -0,0 +1,453 @@ + + + + diff --git a/src/components/dragVerify/dragVerifyImgChip.vue b/src/components/dragVerify/dragVerifyImgChip.vue new file mode 100644 index 0000000..d34fead --- /dev/null +++ b/src/components/dragVerify/dragVerifyImgChip.vue @@ -0,0 +1,473 @@ + + + + diff --git a/src/components/dragVerify/dragVerifyImgRotate.vue b/src/components/dragVerify/dragVerifyImgRotate.vue new file mode 100644 index 0000000..c3f7050 --- /dev/null +++ b/src/components/dragVerify/dragVerifyImgRotate.vue @@ -0,0 +1,434 @@ + + + + diff --git a/src/components/editor/index.vue b/src/components/editor/index.vue new file mode 100644 index 0000000..dc07e3c --- /dev/null +++ b/src/components/editor/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/components/editor2/index.vue b/src/components/editor2/index.vue new file mode 100644 index 0000000..7fcb4b3 --- /dev/null +++ b/src/components/editor2/index.vue @@ -0,0 +1,124 @@ + + \ No newline at end of file diff --git a/src/components/httpSse.vue b/src/components/httpSse.vue new file mode 100644 index 0000000..625c113 --- /dev/null +++ b/src/components/httpSse.vue @@ -0,0 +1,243 @@ + + + + \ No newline at end of file diff --git a/src/components/iconSelector/index.vue b/src/components/iconSelector/index.vue new file mode 100644 index 0000000..90fab43 --- /dev/null +++ b/src/components/iconSelector/index.vue @@ -0,0 +1,241 @@ + + + diff --git a/src/components/noticeBar/index.vue b/src/components/noticeBar/index.vue new file mode 100644 index 0000000..44e560b --- /dev/null +++ b/src/components/noticeBar/index.vue @@ -0,0 +1,194 @@ + + + + + diff --git a/src/components/printTable/index.vue b/src/components/printTable/index.vue new file mode 100644 index 0000000..9a0b8d8 --- /dev/null +++ b/src/components/printTable/index.vue @@ -0,0 +1,144 @@ + + + + + + \ No newline at end of file diff --git a/src/components/screenShort/index.vue b/src/components/screenShort/index.vue new file mode 100644 index 0000000..18cff47 --- /dev/null +++ b/src/components/screenShort/index.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/components/svgIcon/index.vue b/src/components/svgIcon/index.vue new file mode 100644 index 0000000..b3b6304 --- /dev/null +++ b/src/components/svgIcon/index.vue @@ -0,0 +1,28 @@ + diff --git a/src/components/svgIconTr.vue b/src/components/svgIconTr.vue new file mode 100644 index 0000000..2b1acf0 --- /dev/null +++ b/src/components/svgIconTr.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/src/components/titleLeft.vue b/src/components/titleLeft.vue new file mode 100644 index 0000000..2f418e1 --- /dev/null +++ b/src/components/titleLeft.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/src/directives/funPermission.ts b/src/directives/funPermission.ts new file mode 100644 index 0000000..d371c92 --- /dev/null +++ b/src/directives/funPermission.ts @@ -0,0 +1,39 @@ +import { store } from '../store/index'; + +function checkFunPermission(el, binding) { + try { + const { value } = binding; + + // 当为1时则标识是体验用户,拥有全部能力 + const userInfos = store.state.userInfos.userInfos; + const clientIsEnterpriseMode = userInfos.client.clientIsEnterpriseMode; + const clientCode = userInfos.client.code; + + if (clientIsEnterpriseMode !== 1) { + const permissions = store.state.funPerission[value]; + + if (!permissions || !Array.isArray(permissions)) { + throw new Error(`Invalid permissions for value: ${value}`); + } + + const hasPermission = permissions.includes(clientCode); + console.log(hasPermission) + if (!hasPermission) { + el.parentNode && el.parentNode.removeChild(el); + } + } + } catch (error) { + console.error('v-funperission error:', error); + } +} + +export default { + // 在绑定元素的父组件被挂载后调用 + mounted(el, binding) { + checkFunPermission(el, binding); + }, + // 在包含组件的 VNode 及其子组件的 VNode 更新后调用 + updated(el, binding) { + checkFunPermission(el, binding); + }, +}; diff --git a/src/directives/index.ts b/src/directives/index.ts new file mode 100644 index 0000000..ab59aee --- /dev/null +++ b/src/directives/index.ts @@ -0,0 +1,6 @@ +import permission from './permission' +import funPerission from './funPermission'; +export default app => { + app.directive('permission', permission) + app.directive('funPerission', funPerission) +} \ No newline at end of file diff --git a/src/directives/permission.ts b/src/directives/permission.ts new file mode 100644 index 0000000..5856e12 --- /dev/null +++ b/src/directives/permission.ts @@ -0,0 +1,38 @@ +import { store } from '../store/index'; + +// 这里是伪权限指令,只根据角色区分,不区分具体的按钮权限,也就是说所有统一角色的账号拥有的按钮权限都是相同的 +function checkPermission(el, binding) { + try { + // 获取绑定的值,此处为权限 + const { value } = binding; + + const roles = store.state.userInfos.userInfos.roles; + // 当传入的指令集为数组时 + if (value && value instanceof Array) { + // 匹配对应的指令 + const hasPermission = roles.some((point) => { + return value.includes(point); + }); + // 如果无法匹配,则表示当前用户无该指令,那么删除对应的功能按钮 + if (!hasPermission) { + el.parentNode && el.parentNode.removeChild(el); + } + } else { + // eslint-disabled-next-line + throw new Error('v-permission value is ["admin","editor"]'); + } + } catch (error) { + throw new Error('v-permission value is ' + error); + } +} + +export default { + // 在绑定元素的父组件被挂载后调用 + mounted(el, binding) { + checkPermission(el, binding); + }, + // 在包含组件的 VNode 及其子组件的 VNode 更新后调用 + update(el, binding) { + checkPermission(el, binding); + }, +}; diff --git a/src/hooks/useExportAll.ts b/src/hooks/useExportAll.ts new file mode 100644 index 0000000..0cc574d --- /dev/null +++ b/src/hooks/useExportAll.ts @@ -0,0 +1,98 @@ +import { ref, computed, onUnmounted, nextTick } from 'vue'; +import { exportJsonToExcel } from '../utils/Export2'; +import { ElMessage } from 'element-plus'; + +/** + * 导出全部数据为excel + * @param fetchPageData 获取数据方法 + * @param fetchTotl 获取总条数方法 + * @param excelName excel名称 + * @param comparison 键值对对照 + * @param pageSize 每页的条数 + * @returns + */ +export function useExportAll(fetchPageData: Function, fetchTotl: Function, excelName: string, comparison: Object, pageSize: number = 200) { + const exporting = ref(false); // 导出状态 + const abortController = ref(null); // 用于中止请求 + const total = ref(0); + const comparisonRef = ref(comparison); // 创建响应式引用 + + // 提供更新comparison的方法 + const updateComparison = (newComparison: Object) => { + comparisonRef.value = newComparison; + }; + + const exportAll = async () => { + if (exporting.value) return; + exporting.value = true; + const totalNum = await fetchTotl(); + total.value = totalNum; + if (total.value <= 0) { + exporting.value = false; + return ElMessage.warning('暂无可导出数据') + } + abortController.value = new AbortController(); + const signal = abortController.value.signal; + + const pages = Math.ceil(total.value / pageSize); + const allData: any[] = []; + + try { + for (let page = 1; page <= pages; page++) { + if (signal.aborted) break; + const pageData: any[] = await fetchPageData(page, pageSize); + // 只保留comparison中定义的字段 + const filteredData = pageData.map(item => { + const filteredItem: any = {}; + Object.keys(comparisonRef.value).forEach(key => { + if (item.hasOwnProperty(key)) { + filteredItem[key] = item[key]; + } + }); + return filteredItem; + }); + allData.push(...filteredData); + } + + if (!signal.aborted && allData.length > 0) { + // comparison 的 key 是字段名,value是标题 + const exportData = [comparisonRef.value, ...allData]; + const keys = Object.keys(comparisonRef.value).map((k) => k); + // 调用工具导出 + exportJsonToExcel({ + header: null, + data: exportData, + key: keys, + title: '', + filename: excelName, + autoWidth: false, + }); + ElMessage.success('导出成功') + } + } catch (err: any) { + console.error('导出全部数据失败:', err); + ElMessage.error('导出失败'); + } finally { + exporting.value = false; + abortController.value = null; + } + }; + + const abortExport = () => { + if (abortController.value) { + abortController.value.abort(); + exporting.value = false; + } + }; + + onUnmounted(() => { + abortExport(); + }); + + return { + exporting, + exportAll, + abortExport, + updateComparison, + }; +} diff --git a/src/hooks/useFfunPermission.ts b/src/hooks/useFfunPermission.ts new file mode 100644 index 0000000..5053d50 --- /dev/null +++ b/src/hooks/useFfunPermission.ts @@ -0,0 +1,31 @@ +import { store } from '../store/index'; + +/** + * 判断当前登录客户的功能权限 + * @param funKey + * @returns + */ +export function isHaveFunByClient(funKey: string) { + try { + // 当为1时则标识是体验用户,拥有全部能力 + const userInfos = store.state.userInfos.userInfos; + const clientIsEnterpriseMode = userInfos.client.clientIsEnterpriseMode; + const clientCode = userInfos.client.code; + if (clientIsEnterpriseMode !== 1) { + const permissions = store.state.funPerission[funKey]; + + if (!permissions || !Array.isArray(permissions)) { + throw new Error(`Invalid permissions for value: ${funKey}`); + } + + const hasPermission = permissions.includes(clientCode); + console.log(hasPermission); + if (!hasPermission) { + return false; + } + return true; + } + } catch (error) { + console.error('funperission error:', error); + } +} diff --git a/src/hooks/usePrescription.ts b/src/hooks/usePrescription.ts new file mode 100644 index 0000000..f46cf0b --- /dev/null +++ b/src/hooks/usePrescription.ts @@ -0,0 +1,369 @@ +import { ref, nextTick } from 'vue'; +import { ListReceipts1Params, DrugTypeEnum } from '../api/HemodiPatients/types'; +import { listReceipts1Api, listReceipts2Api, listReceipts3Api } from '../api/HemodiPatients/index'; +import { billInfoListReceipts1Api, billInfoListReceipts2Api, billInfoListReceipts3Api } from '../api/fee/index'; +import { ElMessage, ElLoading, ElMessageBox } from 'element-plus'; +import { formatDate } from '/@/utils/formatTime'; +import { useStore } from '/@/store/index'; +import { getMedHistoryList } from '/@/api/HemodiPatients/medHistory'; +import { getDefaultHisPharmacistApi } from '/@/api/fee/his_pharmacy'; +import { getUsersByRoleGroup } from '/@/api/user'; + +export default function usePrescriptionPrint() { + const prescriptionNotesRef = ref(); // 处方笺 + const injectionSheetRef = ref(); // 注射单 + const diagnosisAndTreatmentFormRef = ref(); // 诊疗单 + const applicationFormRef = ref(); // 申请单 + const prescriptionNotesByZqRef = ref(); // 肇庆单独的西药单 + const comprehensiveSingleRef = ref(); // 综合单 + + const store: any = useStore(); + + const prescriptionNotesToTwosClients = ['CLIENT9303194426563kPrK']; + + const printPrescriptionLoading = ref(false); + + /** + * 打印 + * @param drugType 药物类型 + * @param pbsCode 处方编号 + * @param patCode 患者编号 + * @param doctorOptions 药师列表 + */ + const prescriptionPrint = async (drugType: DrugTypeEnum, pbsCode: string, patCode: string, billSetDoctorSignPic: string, doctorOptions: any[]) => { + printPrescriptionLoading.value = true; + const loadingInstance = ElLoading.service({ + fullscreen: true, + text: '加载中...', + }); + try { + const query: ListReceipts1Params = { + drugType, + pbsCode, + }; + + let allDatas: any = {}; + + + // 获取默认药师 + let pharmacyOperator = ''; // 默认药师 + if (drugType === DrugTypeEnum.medicine) { + const pharmRes = await getDefaultHisPharmacistApi({ clientCode: store.state.userInfos.userInfos.client.code}); + const pharmacyOperatorItem = doctorOptions.find(e => e.code === pharmRes.data); + if (pharmacyOperatorItem) { + pharmacyOperator = pharmacyOperatorItem.userName; + } + } + + + if (drugType === DrugTypeEnum.medicine || drugType === DrugTypeEnum.injection) { + const { data } = await listReceipts1Api(query); + allDatas = data; + } else if (drugType === DrugTypeEnum.diagnosisTreatment) { + const { data } = await listReceipts2Api(pbsCode); + allDatas = data; + } else if (drugType === DrugTypeEnum.apply) { + const { data } = await listReceipts3Api(pbsCode); + allDatas = data; + } else if (drugType === DrugTypeEnum.comprehensive) { + const result = await Promise.all([listReceipts1Api(query), listReceipts2Api(pbsCode)]); + const res = result[0].data; + res.列表 = [...res.列表, ...result[1].data.列表]; + allDatas = res; + } + + // 如果是定制的西药单,需要再请求一下病史接口 + let patHistory = ''; + if (prescriptionNotesToTwosClients.includes(store.state.userInfos.userInfos.client.code) && drugType === DrugTypeEnum.medicine) { + const history = await getMedHistoryList({ page: 1, size: 1, wherecondition: `patient_code = '${patCode}'`, ordercondition: `med_date desc`}); + if (history.data.list.length > 0) { + patHistory = history.data.list[0].historyIsAllergy === 0 ? '无过敏史' : (history.data.list[0].historyIsAllergy === 2 ? '过敏史不详' : history.data.list[0].historyAllergyText || ''); + } + } + + console.log('allDatas: ', allDatas) + nextTick(() => { + loadingInstance.close(); + }); + // 判断处方类型是大于同步状态,只要有一个未同步的就不让打印 + const notAsyncHis = allDatas.列表.filter((e: any) => e.处方状态 === 0).map(e => e.药品名称 || e.名称 || e.检验项目); + if (notAsyncHis.length > 0 && store.state.userInfos.userInfos.isUseHisSyncMode) { + ElMessageBox.confirm(`还未同步至HIS,确认要打印吗?`, '提示', { + confirmButtonText: '确认', + cancelButtonText: '取消', + type: 'warning', + }) + .then(() => { + switch (drugType) { + case DrugTypeEnum.medicine: + if (prescriptionNotesToTwosClients.includes(store.state.userInfos.userInfos.client.code)) { + console.log('formatPrintFormData(allDatas): ', formatPrintFormData(allDatas)) + prescriptionNotesByZqRef.value && prescriptionNotesByZqRef.value.print([formatPrintFormData(allDatas)], patHistory, billSetDoctorSignPic, allDatas.HIS药师 || pharmacyOperator); + } else { + prescriptionNotesRef.value && prescriptionNotesRef.value.print([formatPrintFormData(allDatas)], allDatas.HIS药师 || pharmacyOperator); + } + break; + case DrugTypeEnum.injection: + injectionSheetRef.value && injectionSheetRef.value.print([formatPrintFormData(allDatas)]); + break; + case DrugTypeEnum.diagnosisTreatment: + diagnosisAndTreatmentFormRef.value && diagnosisAndTreatmentFormRef.value.print([formatPrintFormData2(allDatas)]); + break; + case DrugTypeEnum.apply: + applicationFormRef.value && applicationFormRef.value.print([formatPrintFormData3(allDatas)]); + break; + case DrugTypeEnum.comprehensive: + // 这里是综合单 + comprehensiveSingleRef.value && comprehensiveSingleRef.value.print([formatPrintFormData4(allDatas)], allDatas.HIS药师 || pharmacyOperator); + break; + } + }) + .catch(() => { + }); + } else { + switch (drugType) { + case DrugTypeEnum.medicine: + if (prescriptionNotesToTwosClients.includes(store.state.userInfos.userInfos.client.code)) { + prescriptionNotesByZqRef.value && prescriptionNotesByZqRef.value.print([formatPrintFormData(allDatas)], patHistory, billSetDoctorSignPic, allDatas.HIS药师 || pharmacyOperator); + } else { + prescriptionNotesRef.value && prescriptionNotesRef.value.print([formatPrintFormData(allDatas)], allDatas.HIS药师 || pharmacyOperator); + } + break; + case DrugTypeEnum.injection: + injectionSheetRef.value && injectionSheetRef.value.print([formatPrintFormData(allDatas)]); + break; + case DrugTypeEnum.diagnosisTreatment: + diagnosisAndTreatmentFormRef.value && diagnosisAndTreatmentFormRef.value.print([formatPrintFormData2(allDatas)]); + break; + case DrugTypeEnum.apply: + console.log('化验单的数据: ', [allDatas]); + applicationFormRef.value && applicationFormRef.value.print([formatPrintFormData3(allDatas)]); + break; + case DrugTypeEnum.comprehensive: + comprehensiveSingleRef.value && comprehensiveSingleRef.value.print([formatPrintFormData4(allDatas)], allDatas.HIS药师 || pharmacyOperator); + break; + } + } + } catch (error) { + ElMessage.error('处方打印失败:' + error?.message); + console.log(error) + } finally { + printPrescriptionLoading.value = false; + loadingInstance.close(); + } + }; + + const formatPrintFormData = (data) => { + const dataCopy = JSON.parse(JSON.stringify(data)); + + let 开方日期 = ''; + let 处方单号 = ''; + let 开方医生 = ''; + let 总金额: any = 0; + + if (dataCopy.列表 && dataCopy.列表.length > 0) { + 开方日期 = formatDate(new Date(dataCopy.列表[0].处方开立时间), 'YYYY-mm-dd'); + 处方单号 = dataCopy.列表[0].处方编号; + 开方医生 = dataCopy.列表[0].开单医生; + dataCopy.列表.forEach((e) => { + 总金额 += e.金额; + }); + } + + 总金额 = 总金额.toFixed(4); + return Object.assign(dataCopy, { 开方日期, 处方单号, 总金额, 开方医生 }); + }; + + const formatPrintFormData2 = (data) => { + const dataCopy = JSON.parse(JSON.stringify(data)); + + let 开方日期 = ''; + let 处方单号 = ''; + let 开方医生 = ''; + let 总金额: any = 0; + + if (dataCopy.列表 && dataCopy.列表.length > 0) { + 开方日期 = formatDate(new Date(dataCopy.列表[0].处方开立时间), 'YYYY-mm-dd'); + 处方单号 = dataCopy.列表[0].处方编号; + 开方医生 = dataCopy.列表[0].开单医生; + dataCopy.列表.forEach((e) => { + 总金额 += e.金额; + e.药品名称 = e.名称; + }); + } + 总金额 = 总金额.toFixed(4); + return Object.assign(dataCopy, { 开方日期, 处方单号, 总金额, 开方医生 }); + }; + + const formatPrintFormData3 = (data) => { + const dataCopy = JSON.parse(JSON.stringify(data)); + + let 开方日期 = ''; + let 处方单号 = ''; + let 开方医生 = ''; + let 总金额: any = 0; + + if (dataCopy.列表 && dataCopy.列表.length > 0) { + 开方日期 = formatDate(new Date(dataCopy.列表[0].送检日期), 'YYYY-mm-dd'); + 处方单号 = dataCopy.列表[0].处方编号; + 开方医生 = dataCopy.列表[0].开单医生; + dataCopy.列表.forEach((e) => { + 总金额 += e.价格; + e.单价 = e.价格; + e.药品名称 = e.检验项目; + }); + } + 总金额 = 总金额.toFixed(4); + return Object.assign(dataCopy, { 开方日期, 处方单号, 总金额, 开方医生 }); + }; + + const formatPrintFormData4 = (data) => { + const dataCopy = JSON.parse(JSON.stringify(data)); + + let 开方日期 = ''; + let 处方单号 = ''; + let 开方医生 = ''; + let 总金额: any = 0; + + if (dataCopy.列表 && dataCopy.列表.length > 0) { + 开方日期 = formatDate(new Date(dataCopy.列表[0].处方开立时间), 'YYYY-mm-dd'); + 处方单号 = dataCopy.列表[0].处方编号; + 开方医生 = dataCopy.列表[0].开单医生; + dataCopy.列表.forEach((e) => { + 总金额 += e.金额; + }); + } + if (Array.isArray(dataCopy.列表)) { + dataCopy.列表 = dataCopy.列表.map(v => { + const item = { + 药品名称: v?.药品名称 || v?.名称 || '', + 药品规格: v?.药品规格 || '', + 单价: v?.单价 || '', + 数量: v?.数量 || '', + 包装单位: v?.包装单位 || '', + 用药天数: v?.用药天数 || '', + 单次用量: v?.单次用量 || '', + 剂量单位: v?.剂量单位 || '', + 用药间隔: v?.用药间隔 || '', + 给药途径: v?.给药途径 || '', + 是否药品: !!v?.药品名称 + } + return item + }) + } + + 总金额 = 总金额.toFixed(4); + return Object.assign(dataCopy, { 开方日期, 处方单号, 总金额, 开方医生 }); + }; + + /** + * 收费清单的打印 + * @param patientCode + * @param date + * @param drugType + */ + const prescriptionPrintBySfqd = async (patientCodeLists: string[], date: string, drugType: number) => { + printPrescriptionLoading.value = true; + const loadingInstance = ElLoading.service({ + fullscreen: true, + text: '加载中...', + }); + + try { + const items = patientCodeLists.map((v) => { + const item = { + patientCode: v, + date, + drugType, + }; + return item; + }); + + console.log(items); + + let allDatas = []; + + // 获取默认药师 + let pharmacyOperator = ''; // 默认药师 + if (drugType === DrugTypeEnum.medicine) { + let doctorOptions = []; // 获取医生列表 + const params = { + clientCode: store.state.userInfos.userInfos.client.code, + isFilterDisabledUser: 0 as 0 | 1, + roleClasses: ['药师'], + } + const { data } = await getUsersByRoleGroup(params); + doctorOptions = data; + + const pharmRes = await getDefaultHisPharmacistApi({ clientCode: store.state.userInfos.userInfos.client.code}); + const pharmacyOperatorItem = doctorOptions.find(e => e.code === pharmRes.data); + if (pharmacyOperatorItem) { + pharmacyOperator = pharmacyOperatorItem.userName; + } + } + + await Promise.all( + items.map(async (v) => { + if (drugType === DrugTypeEnum.medicine || drugType === DrugTypeEnum.injection) { + // @ts-ignore + const { data } = await billInfoListReceipts1Api(v); + allDatas.push(formatPrintFormData(data)); + } else if (drugType === DrugTypeEnum.diagnosisTreatment) { + const { data } = await billInfoListReceipts2Api(v); + allDatas.push(formatPrintFormData2(data)); + } else if (drugType === DrugTypeEnum.apply) { + const { data } = await billInfoListReceipts3Api(v); + allDatas.push(formatPrintFormData3(data)); + } + }) + ); + + console.log('allData: ', allDatas); + + nextTick(() => { + loadingInstance.close(); + }); + console.log(drugType); + switch (drugType) { + case DrugTypeEnum.medicine: + allDatas = allDatas.map(v => { + if (!v?.HIS药师) { + v.HIS药师 = pharmacyOperator + } + return v + }) + console.log('============allDatas:', allDatas); + prescriptionNotesRef.value && prescriptionNotesRef.value.print(allDatas); + break; + case DrugTypeEnum.injection: + injectionSheetRef.value && injectionSheetRef.value.print(allDatas); + break; + case DrugTypeEnum.diagnosisTreatment: + diagnosisAndTreatmentFormRef.value && diagnosisAndTreatmentFormRef.value.print(allDatas); + break; + case DrugTypeEnum.apply: + applicationFormRef.value && applicationFormRef.value.print(allDatas); + break; + } + } catch (error) { + ElMessage.error('收费清单打印失败:' + error?.message); + } finally { + printPrescriptionLoading.value = false; + nextTick(() => { + loadingInstance.close(); + }); + } + }; + + return { + prescriptionNotesRef, + injectionSheetRef, + diagnosisAndTreatmentFormRef, + applicationFormRef, + prescriptionNotesByZqRef, + comprehensiveSingleRef, + printPrescriptionLoading, + prescriptionPrint, + prescriptionPrintBySfqd, + }; +} diff --git a/src/hooks/usePrintDialysisForm.ts b/src/hooks/usePrintDialysisForm.ts new file mode 100644 index 0000000..0123770 --- /dev/null +++ b/src/hooks/usePrintDialysisForm.ts @@ -0,0 +1,238 @@ +import { ref, computed, onUnmounted, nextTick } from 'vue'; +import { ElMessage } from 'element-plus'; +import { useStore } from '../store/index'; +import { batchPrint2, batchPrint } from '../api/patient_hemo_med_record/index'; // 打印模板2 +import { delay } from '../utils/utils'; + +interface BatchParams { + print2_dateBegin: string; // 开始时间 + print_dateEnd: string; // 结束时间 + print2_patientCode: ''; + isRebuild: number; +} +type CheckParams = string[]; + +type Params = CheckParams | BatchParams; + +interface CheckQuery { + mode: number; + print1_records: CheckParams; +} + +interface BatchQuery extends BatchParams { + mode: number; +} + +type Query = CheckQuery | BatchQuery; + +enum PrintModeType { + BATCH = 2, // 批量打印 + CHECK = 1, // 勾选打印 +} + +enum Template { + template1 = '/gettxform', + template2 = '/gettxform2', + template3 = '/backendReport', +} + +enum Type { + ONE = 1, // 直接打印 + TWO = 2, // 先预览再打印 +} + +export default function usePrintDialysisForm(mode: PrintModeType = PrintModeType.BATCH) { + const store = useStore(); + + const previewGettxdFormOneRef = ref(); // 前端模板1 + const previewGettxdFormTwoRef = ref(); // 前端模板2 + const previewGettxdFormThreeRef = ref(); // 后端模板1 + + const printLoading = ref(false); + const printLoading2 = ref(false); + + const printData = ref([]); + + // 当前客户所选择的打印模板 + const templateName = computed(():Template => { + // @ts-ignore + return store.state.userInfos.userInfos.client.recordPrintTemplate; + }); + + /** + * 获取透析单数据 + * @param params + * @returns + */ + async function getDialysData(params: Params) { + if (!params) return ElMessage.warning('打印透析单参数异常,请联系管理员'); + printData.value = []; + console.log(templateName.value) + if (templateName.value === Template.template3) { + await getRearEndData(params) + } else { + await getFrontEndData(params) + } + } + + /** + * 获取前端打印的数据 + * @param params + * @returns + */ + async function getFrontEndData(params: Params) { + let query: Query; + printLoading.value = true; + printData.value = []; + try { + if (Array.isArray(params)) { + // query = { + // mode, + // print1_records: params, + // }; + + const taskQueue = [...params]; // 复制任务队列 + + while(taskQueue.length > 0) { + const batch = taskQueue.splice(0, 10); // 取出一批任务 + const promises = batch.map((tast) => batchPrint({ + mode, + print1_records: tast, + })); + await delay(1000); + const results = await Promise.all(promises); + results.forEach(item => { + printData.value.push(...item.data); + }) + } + + } else { + query = { + mode, + print2_dateBegin: params.print2_dateBegin, // 开始时间 + print_dateEnd: params.print_dateEnd, // 结束时间 + print2_patientCode: params.print2_patientCode, + isRebuild: params.isRebuild + } + const { data } = await batchPrint(query); + printData.value = data; + } + + } catch (error) { + ElMessage.error('透析单数据获取失败:' + error); + } finally { + printLoading.value = false; + } + } + + /** + * 获取后端打印的数据 + * @param params + */ + async function getRearEndData(params: Params) { + let query: Query; + printLoading.value = true; + printData.value = []; + try { + if (Array.isArray(params)) { + query = { + mode, + print1_records: params, + }; + const taskQueue = [...params]; // 复制任务队列 + + while(taskQueue.length > 0) { + const batch = taskQueue.splice(0, 10); // 取出一批任务 + const promises = batch.map((tast) => batchPrint2({ + mode, + print1_records: tast, + })); + await delay(1000); + const results = await Promise.all(promises); + results.forEach(item => { + printData.value.push(...item.data); + }) + } + + } else { + query = { + mode, + print2_dateBegin: params.print2_dateBegin, // 开始时间 + print_dateEnd: params.print_dateEnd, // 结束时间 + print2_patientCode: params.print2_patientCode, + isRebuild: params.isRebuild + } + const { data } = await batchPrint2(query); + printData.value = data; + } + + } catch (error) { + ElMessage.error('透析单数据获取失败:' + error); + } finally { + printLoading.value = false; + } + } + + /** + * 打印,如果是直接打印需要传第二个参数,如果是预览打印则不需要 + * @param type 打印模式 + * @param params + */ + const printDialysis = async (type: Type = Type.TWO, params?: Params) => { + printLoading2.value = true; + try { + if(params){ + // 第二次 就不访问 + await getDialysData(params); + } + if (type === Type.ONE) { + + nextTick(() => { + if (printData.value.length <= 0) return ElMessage.warning('没有找到可以打印的透析单'); + domRefPrint() + }); + } else { + nextTick(() => { + if (printData.value.length <= 0) return ElMessage.warning('没有找到可以打印的透析单'); + domRefPrint() + }); + } + } catch (error) { + ElMessage.error('透析单打印失败' + error); + } finally { + printLoading2.value = false; + } + }; + + const domRefPrint = () => { + switch (templateName.value) { + case Template.template1: + previewGettxdFormOneRef.value && previewGettxdFormOneRef.value.print(); + break; + case Template.template2: + previewGettxdFormTwoRef.value && previewGettxdFormTwoRef.value.print(); + break; + case Template.template3: + previewGettxdFormThreeRef.value && previewGettxdFormThreeRef.value.print(); + break; + default: + previewGettxdFormOneRef.value && previewGettxdFormOneRef.value.print(); + break; + } + } + + onUnmounted(() => { + printLoading.value = false; + }) + + return { + printLoading, + printLoading2, + printData, + previewGettxdFormOneRef, + previewGettxdFormTwoRef, + previewGettxdFormThreeRef, + printDialysis, + getDialysData, + }; +} diff --git a/src/i18n/index.ts b/src/i18n/index.ts new file mode 100644 index 0000000..8743fd2 --- /dev/null +++ b/src/i18n/index.ts @@ -0,0 +1,144 @@ +import { createI18n } from 'vue-i18n'; +import zhcnLocale from 'element-plus/lib/locale/lang/zh-cn'; +import enLocale from 'element-plus/lib/locale/lang/en'; +import zhtwLocale from 'element-plus/lib/locale/lang/zh-tw'; +import jpLocale from 'element-plus/lib/locale/lang/ja' +// import myLocale from 'element-plus/lib/locale/lang/ms'; +import { store } from '/@/store/index'; + +import nextZhcn from '/@/i18n/lang/zh-cn'; +import nextEn from '/@/i18n/lang/en'; +import nextZhtw from '/@/i18n/lang/zh-tw'; +import nextJp from '/@/i18n/lang/jp'; +import nextMs from '/@/i18n/lang/ms'; + +import pagesHomeZhcn from '/@/i18n/pages/home/zh-cn'; +import pagesHomeEn from '/@/i18n/pages/home/en'; +import pagesHomeZhtw from '/@/i18n/pages/home/zh-tw'; +import pagesHomeJp from '/@/i18n/pages/home/jp'; +import pageHomeMs from '/@/i18n/pages/home/ms'; + +import pagesLoginZhcn from '/@/i18n/pages/login/zh-cn'; +import pagesLoginEn from '/@/i18n/pages/login/en'; +import pagesLoginZhtw from '/@/i18n/pages/login/zh-tw'; +import pagesLoginJp from '/@/i18n/pages/login/jp'; +import pagesLoginMs from '/@/i18n/pages/login/ms'; + + +import pagesFormI18nZhcn from '/@/i18n/pages/formI18n/zh-cn'; +import pagesFormI18nEn from './pages/formI18n/en'; +import pagesFormI18nZhtw from '/@/i18n/pages/formI18n/zh-tw'; +import pagesFormI18nJp from '/@/i18n/pages/formI18n/jp'; +import pagesFormI18nMs from '/@/i18n/pages/formI18n/ms'; + +// 患者管理 - 已注释(文件已删除) +// import hemodiPatientsI18n from '/@/i18n/pages/PatientManage/HemodiPatients'; +// import outComeRecordI18n from '/@/i18n/pages/PatientManage/outComeRecord'; +// import medicalHistoryI18n from '/@/i18n/pages/PatientManage/medicalHistory'; +// import physiqueCheckI18n from '/@/i18n/pages/PatientManage/physiqueCheck'; +// import courseRecordI18n from '/@/i18n/pages/PatientManage/courseRecord'; + + +// 患者排班 - 已注释(文件已删除) +// import schedulingI18n from '/@/i18n/pages/scheduling/index'; + +// 透析方案 - 已注释(文件已删除) +// import hemoMedSchemeI18n from '/@/i18n/pages/PatientManage/hemoMedScheme'; +// 干体重 - 已注释(文件已删除) +// import dryWeightI18n from '/@/i18n/pages/PatientManage/dryWeight'; +// 血管通路 - 已注释(文件已删除) +// import vascularAccessI18n from '/@/i18n/pages/PatientManage/vascularAccess'; + + +// 质控 - 已注释(文件已删除) +// import monthlyStatisticsOfDialysisFrequencyForPatientsI18n from '/@/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients'; +// 定义语言国际化内容 +/** + * 说明: + * /src/i18n/lang 下的 ts 为框架的国际化内容 + * /src/i18n/pages 下的 ts 为各界面的国际化内容 + */ +const messages = { + [zhcnLocale.name]: { + ...zhcnLocale, + message: { + ...nextZhcn, + homePage: { + ...pagesHomeZhcn + }, + loginPage: { + ...pagesLoginZhcn + }, + formPage: { + ...pagesFormI18nZhcn + }, + }, + }, + [enLocale.name]: { + ...enLocale, + message: { + ...nextEn, + homePage: { + ...pagesHomeEn, + }, + loginPage: { + ...pagesLoginEn, + }, + formPage: { + ...pagesFormI18nEn, + }, + }, + }, + [zhtwLocale.name]: { + ...zhtwLocale, + message: { + ...nextZhtw, + homePage: { + ...pagesHomeZhtw, + }, + loginPage: { + ...pagesLoginZhtw, + }, + formPage: { + ...pagesFormI18nZhtw, + }, + }, + }, + [jpLocale.name]: { + ...jpLocale, + message: { + ...nextJp, + homePage: { + ...pagesHomeJp, + }, + loginPage: { + ...pagesLoginJp, + }, + formPage: { + ...pagesFormI18nJp, + }, + }, + }, + ms: { + ...enLocale, + message: { + ...nextMs, + homePage: { + ...pageHomeMs + }, + formPage: { + ...pagesFormI18nMs + }, + loginPage: { + ...pagesLoginMs + }, + }, + } +}; + +// 导出语言国际化 +export const i18n = createI18n({ + locale: store.state.themeConfig.themeConfig.globalI18n, + fallbackLocale: zhcnLocale.name, + messages, +}); diff --git a/src/i18n/lang/en.ts b/src/i18n/lang/en.ts new file mode 100644 index 0000000..2d9f047 --- /dev/null +++ b/src/i18n/lang/en.ts @@ -0,0 +1,1215 @@ +// 定义内容 +export default { + router: { + xycskz:'Blood Pressure Control Rate per Instance', + zhibeiyao:'Patient-Provided Medication Management', + home: 'home', + lisApi:'LisApi', + patient:'Patient Management', + HemodiPatients:'First page of medical record', + PatientFormDetails:"Patient Information", + PatientList:'Patient List', + outComeRecord:'Conversion record', + wenshuguanli:'Document management', + hemoMed:'Dialysis management', + bedView:'Bed chart', + QC:'Quality control', + dataGlobalItem:'Shengtuo Item Basic Library', + weightRecord:'Weight Record', + xgtlQc:'Classification of vascular pathways', + yueXiaoJie:'Monthly Summary', + yihupaiban:'Medical scheduling', + yihuPaiban:'Scheduling', + paibanSet:'Scheduling settings', + jieduanxiaojie:'Stage Summary', + duibi:'Comparison of dialysis quality', + analyse:'Quality analysis', + statistics:'Inspection data statistics', + hemoMedScheme:'Dialysis plan', + gongyinglian:'Supply Chain', + datatongji:"Inspection data statistics", + canPingDuiZhao:'Maintain product comparison', + medicalHistory: 'Patient medical history', + personalInfo: 'Personal Information', + courseRecord: 'Progress Note', + physiqueCheck: 'Physical examination', + xiaodutongji:'Disinfection statistics', + kidneyTest: 'Kidney examination', + inspectors: 'Inspection and inspection', + banbenweihu:'Version maintenance', + dryWeight: 'Dry weight', + rentichengfenfenxiyi:'Component analyzer inspection', + vascularAccess: 'Vascular Access', + paibanTongji:'statistics query', + ChroDisePatients:'Chronic disease patients', + scheduling:'Workforce Management', + NurseRostering:'Nurse scheduling', + PatientsWithScheduling:'Patient scheduling', + scheduleTemplate:'Scheduling template', + DialysisRecord:'Dialysis records', + signIn: 'sign in', + erjichuku:'Secondary outbound', + erjiCheck:'Warehouse inventory', + fee:"charge", + feeOrder:"list of charges", + feeChufang:"outpatient prescription", + feeGroup:'Fee based package maintenance', + feeDict:'Maintenance of chargeable items', + erjikefangwf: 'Secondary Warehouse Maintenance', + erjikufang:'second-class warehouse', + inventory2Query:'Secondary Warehouse Query', + yiqikufang:'First level warehouse', + weigh:'Check in weighing', + hzZaiYao:'Monthly Summary', + signinJIlu:"Attendance Record", + xuedanbai:'Serum albumin control rate', + gai:'Calcium control rate', + jia:'Potassium control rate', + jzxjs:'Parathyroid hormone control rate', + xhdb:'Hemoglobin control rate', + ling:'Phosphorus control rate', + kfzdsz:'Warehouse dictionary settings', + dialysisForm:'Dialysis sheet', + KeshiQc:'Department quality control', + doctorsAdvice:'Today is order', + TestItem:'Inspection item maintenance', + prepare:'Dialysis preparation', + jianyanQc:'Inspection and inspection', + monitor:'Dialysis monitoring', + WorkStats:'Workload statistics', + Loglog:'Shift handover log', + stockControl:'Inventory management', + inventoryOperate: 'Warehousing management', + inventory2Operate:'Warehousing management', + outStock: 'Outbound management', + storage:'Warehousing management', + jymbdcl:'Inspection target achievement rate', + urrKzl:'URR control rate', + fromStorage:'Inventory management', + StockSearch:'Inventory Query', + inventoryQuery:'Inventory Query', + inventoryCheck:'Inventory count', + Stocktaking:'Inventory count', + InventoryDictionary:'Inventory dictionary', + touxiJilu:'Dialysis record sheet', + HaoCaiTongji:'Consumables statistics', + jianyanDatatongji:"Inspection data statistics", + zkpzfx:"Quality control quality analysis", + IDCzkpztj:"Analysis and comparison of IDC dialysis quality", + yaoPingTongJi:'Drug Statistics', + NurseWorkStats:'Nurse workload', + DealerDictionary:'Dealer dictionary', + ManufacturerDic:'Manufacturer dictionary', + AiMenu:'Ai', + xinSuai:'Heart failure warning AI', + xinSuaiTu:'Heart failure warning trend', + xinshuaiAi:'Heart failure warning', + jiFengGuiZhe:'Integral rule', + patientAdmin:'Patient Management', + MedicalAdvice:'doctor is advice', + diseaseDiagnosis:'Patient diagnosis', + diseaseDiagnosis2:'病情诊断', + DictDiagnose:'Diagnostic dictionary', + SchemeDic:'Dialysis regimen', + device:'device', + deviceAdmin:'equipment management', + signMachine:'Self service check-in terminal', + commServiceDevice:'Self service terminal hardware status', + deviceInfo:'Basic information', + deviceList:'', + DisinfectionPlan:'Disinfection plan', + xiaodujilu:'Disinfection Records', + xiaoduzidian:'Disinfection Dictionary Management', + deviceXiaodu:'Disinfect', + useRegistration:'Use registration', + qc:'quality control', + Work:'workload', + Maintenance:'Repair and maintenance', + deviceGroup:'Equipment partition', + system: 'system', + systemSet: 'System settings', + reportShow: 'Report query', + checkout: 'inspect', + feeitem:'Charge item maintenance', + jianchaxiangmu:'Inspection item maintenance', + lisBarcode:"Outpatient sampling", + class:'Inspection classification', + lisOorder:'Inspection application', + feeitemVsClass:'Inspection classification charge item comparison', + basicsDic:'Basic dictionary', + dialysisSet:'Dialysis setting management', + userSet:'Customer custom settings', + systemMenu: 'menu management', + systemRole: 'Roles', + systemUser: 'USER', + systemDept: 'Department', + systemDic: 'dictionary managed', + drugDic: 'Drug dictionary', + medicalOrderDrugTemplate: 'Medication order template', + diseaseCourseTemplate: 'Course template', + workDoneTemplate: 'Summary of dialysis', + healthEducation: 'Health Education', + customDic:'custom dictionary', + clientsAdmin:'customer management', + limits: 'Rights Management', + limitsFrontEnd: 'front control', + limitsFrontEndPage: 'Page permissions', + limitsFrontEndBtn: 'Button permissions', + limitsBackEnd: 'Back end control', + limitsBackEndEndPage: 'Page permissions', + menu: 'Menu nesting', + menu1: 'Menu 1', + menu11: 'Menu 11', + menu12: 'Menu 12', + menu121: 'Menu 121', + menu122: 'Menu 122', + menu13: 'Menu 13', + menu2: 'Menu 2', + funIndex: 'function', + funTagsView: 'tagsView operate', + funCountup: 'countup Number scrolling', + funEchartsTree: 'echartsTree tree graph', + funSelector: 'Icon selector', + funNoticeBar: 'Scroll notification bar', + funWangEditor: 'wangEditor EDITOR', + funCropper: 'cropper KJNova Clipper', + funQrcode: 'qrcode QR code generation', + funEchartsMap: 'Geographic coordinates / maps', + funPrintJs: 'Page printing', + baogaochaxun:'Inspection item report', + funClipboard: 'Copy cut', + funScreenShort: 'Customized screen capture on the web', + funGridLayout: 'Drag layout', + funSplitpanes: 'Pane splitter', + funDragVerify: 'Validator', + pagesIndex: 'page', + pagesFiltering: 'Filter filter component', + pagesFilteringDetails: 'Filter filter component details', + pagesFilteringDetails1: 'Filter filter component details 111', + pagesIocnfont: 'iconfont Font Icon', + pagesElement: 'element Font Icon', + pagesAwesome: 'awesome Font Icon', + pagesCityLinkage: 'Urban multi-level linkage', + pagesFormAdapt: 'Form adaptation', + pagesFormI18n: 'Form internationalization', + pagesFormRules: 'Multi form validation', + pagesDynamicForm: 'Dynamic complex form', + pagesWorkflow: 'Workflow', + pagesListAdapt: 'List adaptation', + pagesWaterfall: 'Waterfall screen', + pagesSteps: 'Step bar', + pagesPreview: 'Large preview', + pagesWaves: 'Wave effect', + pagesTree: 'Tree change table', + pagesDrag: 'Drag command', + pagesLazyImg: 'Image lazy loading', + paramsIndex: 'Routing parameters', + paramsCommon: 'General routing', + paramsDynamic: 'Dynamic Routing', + paramsCommonDetails: 'General routing details', + paramsDynamicDetails: 'Dynamic routing details', + chartIndex: 'Big data chart', + visualizingIndex: 'Data visualization', + visualizingLinkDemo1: 'Data visualization demo 1', + visualizingLinkDemo2: 'Data visualization demo 2', + personal: 'Personal Center', + tools: 'Tool class collection', + layoutLinkView: 'Outside the chain', + layoutIfameView: 'embedded iframe', + images: "image", + imagesIndex: "image", + disinfection: "disinfect", + disinfectionIndex: "disinfect", + patientTestingTrend: "Trends in patient testing", + bloodProteinTrend: "Albumin trends", + hemoglobin: "Hemoglobin trends", + urr: "URR trend", + ktv: "Kt/V trend", + statistics2: "statistics", + inspect: "inspect", + inspectionControlRate: "Inspection control rate", + inspectionTrend: "Inspection trend", + analysisDialysisQuality: "Dialysis quality analysis", + dataConversion: "data conversion", + groupCustomerComparison: "Group customer comparison", + hisSetUp: 'His settings', + barcodePrintingSettings: "Barcode printing settings", + backendReportManagement: 'Back end report management', + outpatientRecords: 'Outpatient records', + inventoryMonitoring: 'Inventory monitoring', + inventoryPurchaseAndSales: 'Inventory purchase and sales', + checkData: 'Check data', + barcodePrinting: 'Barcode printing', + secondaryOutboundStatistics: "Secondary issue statistics", + automaticOutboundManagement: 'Automatic outbound management', + inspectionReport: "inspection Report", + "inspectionOutsourcing": "Ext Lab", + "tdbkzl": "Serum Ferritin Ctrl Rate", + "zdykzl": "Custom Lab Items", + "ticket": "Support Ticket", + "maintenanceDialysate": "Dialysate Maintenance", + "ktvkzl": "Kt/V Ctrl Rate", + "tzkzl": "Weight Gain Ctrl Rate", + "xykz": "BP Ctrl Rate", + "ztdbbhdkzl": "TSAT Ctrl Rate", + "p2wqdbkzl": "β2-Microglobulin Ctrl Rate", + "patientAssessment": "Pt Assessment", + slippage: 'Pipe slippage assessment', + "djmnlsclKzl": "AV Fistula Survival Ctrl Rate", + "patientsNumTongJi": "Inpatient Count Stats", + "dialysisQualityStatistics": "Dialysis Quality Metrics", + "prescriptionInquiry": "Prescription Search", + "inspectionDataStatistics": "Lab Data Stats", + "annualIndicatorControlRate": "Annual KPI Ctrl Rate", + "weightGainControlDuringDialysis": "Weight Gain Ctrl Rate", + "dialyzerStatistics": "Dialysis Age Stats", + "earlyShutdownStatistics": "Early Termination Stats", + "patientBirthdayCalendar": "Pt Birthday Calendar", + "stageSummary": "Stage Summary", + "patientPathologicalDiagnosis": "Pt Pathology Dx", + "cReactiveProteinControlRate": "CRP Ctrl Rate", + "infectiousDiseaseControlRate": "Infection Ctrl Rate", + "patientVascularAccessStatistics": "Pt Vascular Access Stats", + "ktvQuery": "Kt/V Query", + "urrQuery": "URR Query", + "supplementaryExamination": "Auxiliary Tests", + "biochemicalTestReport": "Biochem Lab Report", + "qualityControlReport": "QC Report", + "footCare": "Foot Care Mgmt", + "totalProtein": "Total Protein Ctrl Rate", + "Prealbumin": "Prealbumin Ctrl Rate", + "uricAcid": "UA Ctrl Rate", + "ureaNitrogen": "BUN Ctrl Rate", + "monthlyStatisticsOfDialysisFrequencyForPatients": "Monthly Tx Freq Stats", + "dailyDialysisConsumptionDetails": "Daily Consumables Detail", + "averageAgeAndAgeDistribution": "Average Age and Age Distribution", + "hospitalInfectionClinic": "Hospital Infection Outpatient Clinic", + "infectionEvent": "Infection Event", + "monthlyReportOnInfectionEvents": "Monthly Report on Infection Events", + "bloodBornePathogenMonitoring": "Bloodborne Pathogen Monitoring", + "infectionControlRate": "Infection Control Rate", + infectionControlEarlyWarning: 'Infection Control Early Warning', + CACertification: 'CA Certification', + 医院报表管理: "Report Management", + 压力性损伤评估: 'Pressure Injury Assessment', + 跌倒评估: 'Fall Risk Assessment', + 院感门诊: 'Infection Control Outpatient Clinic', + secondaryCcreenVersionControl: 'secondary CcreenVersion Control', + }, + staticRoutes: { + signIn: 'signIn', + notFound: 'notFound', + noPower: 'noPower', + }, + user: { + title0: 'Component size', + title1: 'Language switching', + title2: 'Menu search', + title3: 'Layout configuration', + title4: 'news', + title5: 'Full screen on', + title6: 'Full screen off', + dropdownDefault: 'default', + dropdownMedium: 'medium', + dropdownSmall: 'small', + dropdownMini: 'mini', + dropdown1: 'home page', + dropdown2: 'Personal Center', + dropdown3: '404', + dropdown4: '401', + dropdown5: 'Log out', + dropdown6: 'Code warehouse', + searchPlaceholder: 'Menu search: support Chinese, routing path', + newTitle: 'notice', + newBtn: 'All read', + newGo: 'Go to the notification center', + newDesc: 'No notice', + logOutTitle: 'Tips', + logOutMessage: 'This operation will log out. Do you want to continue?', + logOutConfirm: 'determine', + logOutCancel: 'cancel', + logOutExit: 'Exiting', + logOutSuccess: 'Exit successfully!', + "测试环境哦": "Test Environment!!!!", + "工单": "Work Order", + "请输入关键字": "Please Enter Keywords", + "关于": "About", + "帮助": "Help", + "取消": "Cancel", + "确认": "Confirm", + "我的工单": "My Work Orders", + "添加工单": "Add Work Order", + "提交日期": "Submission Date", + "工单内容": "Work Order Details", + "状态": "Status", + "已办结": "Completed", + "已提交": "Submitted", + "回复时间": "Response Time", + "回复内容": "Response Details", + "操作": "Actions", + "查看": "View", + "暂不不支持全屏": "Fullscreen Not Supported Yet", + "完整版本": "Full Version", + "发布版本": "Release Version", + "当前患者信息": "Current Patient Information", + "姓名": "Name", + "透析号": "Dialysis ID", + "暂无": "None" + }, + tagsView: { + refresh: 'refresh', + close: 'close', + closeOther: 'closeOther', + closeAll: 'closeAll', + fullscreen: 'fullscreen', + closeFullscreen: 'closeFullscreen', + }, + notFound: { + foundTitle: 'Wrong address input, please re-enter the address~', + foundMsg: 'You can check the web address first, and then re-enter or give us feedback.', + foundBtn: 'Back to home page', + notFoundTitle: '暂无权限或地址不存在' + }, + noAccess: { + accessTitle: 'You are not authorized to operate~', + accessMsg: 'Contact information: add QQ group discussion 665452019', + accessBtn: 'Reauthorization', + }, + layout: { + configTitle: 'Layout configuration', + oneTitle: 'Global Themes', + twoTitle: 'Menu / top bar', + twoTopBar: 'Top bar background', + twoMenuBar: 'Menu background', + twoColumnsMenuBar: 'Column menu background', + twoTopBarColor: 'Top bar default font color', + twoMenuBarColor: 'Menu default font color', + twoColumnsMenuBarColor: 'Default font color bar menu', + twoIsTopBarColorGradual: 'Top bar gradient', + twoIsMenuBarColorGradual: 'Menu gradient', + twoIsColumnsMenuBarColorGradual: 'Column gradient', + twoIsMenuBarColorHighlight: 'Menu font highlight', + threeTitle: 'Interface settings', + threeIsCollapse: 'Menu horizontal collapse', + threeIsUniqueOpened: 'Menu accordion', + threeIsFixedHeader: 'Fixed header', + threeIsClassicSplitMenu: 'Classic layout split menu', + threeIsLockScreen: 'Open the lock screen', + threeLockScreenTime: 'screen locking(s/s)', + fourTitle: 'Interface display', + fourIsShowLogo: 'Sidebar logo', + fourIsBreadcrumb: 'Open breadcrumb', + fourIsBreadcrumbIcon: 'Open breadcrumb icon', + fourIsTagsview: 'Open tagsview', + fourIsTagsviewIcon: 'Open tagsview Icon', + fourIsCacheTagsView: 'Enable tagsview cache', + fourIsSortableTagsView: 'Enable tagsview drag', + fourIsShareTagsView: 'Enable tagsview sharing', + fourIsFooter: 'Open footer', + fourIsGrayscale: 'Grey model', + fourIsInvert: 'Color weak mode', + fourIsDark: 'Dark Mode', + fourIsWartermark: 'Turn on watermark', + fourWartermarkText: 'Watermark copy', + fiveTitle: 'Other settings', + fiveTagsStyle: 'Tagsview style', + fiveAnimation: 'page animation', + fiveColumnsAsideStyle: 'Column style', + fiveColumnsAsideLayout: 'Column layout', + sixTitle: 'Layout switch', + sixDefaults: 'One', + sixClassic: 'Two', + sixTransverse: 'Three', + sixColumns: 'Four', + tipText: 'Click the button below to copy the layout configuration to `/src/store/modules/themeConfig.ts` It has been modified in.', + copyText: 'replication configuration', + resetText: 'restore default', + copyTextSuccess: 'Copy succeeded!', + copyTextError: 'Copy failed!', + title: 'Hemodialysis management platform', + "全部": "All", + "留治": "Inpatient Treatment", + "转出": "Transferred Out", + "选择机号": "Select Machine Number", + "选择患者": "Select Patient" + }, + 透析单:{ + 处方还没确认你确定要双人核对: "The prescription hasn't been confirmed yet. Are you sure you want two people to check it", + 血温: 'Blood temperature', + "全天": "All Day", + "上午": "Morning", + "下午": "Afternoon", + "晚上": "Evening", + "刷新": "Refresh", + "姓名": "Patient Name", + "状态": "Status", + "班次": "Shift", + "排班": "Shift", + 批量打印: 'Batch Print Dialysis sheet', + 请选择您需要打印的患者: 'Please select the patients you want to print', + 变更记录: 'Change Record', + 批量打印组件: { + 批量打印: 'Batch Print', + 患者姓名: 'Patient Name', + 请选择: 'Please Select', + 透析号: 'Dialysis Number', + 透析日期: 'Dialysis Date', + 开始时间: 'Start Time', + 结束时间: 'End Time', + 是否重新生成报表: 'Regenerate Report?', + 取消: 'Cancel', + 打印: 'Print', + 血液净化治疗记录单预览: 'Blood Purification Treatment Record Preview', + 请耐心等待正在加载: 'Please wait, loading...', + 第: 'Page', + 页: '', + 预计: 'Estimated', + 共: 'Total', + 透析单日期不能为空: 'Dialysis date cannot be empty', + 没有可以打印的透析单: 'No dialysis records available for printing', + }, + 患者信息组件: { + 治疗病区: 'Treatment ward', + 住院病区: 'Inpatient ward', + 病区: 'Ward', + 住院门诊: 'Inpatient/Outpatient', + 的: 'of', + 上机单已经打印了: 'The machine order has been printed', + 你确定还要重新打印: 'Are you sure you want to reprint?', + 男: 'Male', + 女: 'Female', + 门诊: 'Outpatient', + 住院: 'Hospitalization', + 号: 'Number', + 门诊号: 'Outpatient number', + 住院号: 'admission number', + 没有找到选中日期的透析单: 'No dialysis sheet found for the selected date', + 上午: 'Morning', + 下午: 'Afternoon', + 晚上: 'Evening', + 透析单编号为空请刷新后重试: 'Dialysis order number is empty, please refresh and retry', + 此操作将对: 'This operation will affect', + 进行手动HIS签到就诊操作是否确定: 'Are you sure to perform manual HIS check-in for medical treatment?', + 提示: 'Tip', + 确定: 'Confirm', + 取消: 'Cancel', + 操作成功: 'Operation successful', + 开始叫号: 'Start calling', + 结束叫号: 'End call', + 下机: 'Offline', + 此操作将会同步修改患者快照是否确认: 'This operation will synchronize the modification of patient snapshots. Are you sure?', + 是否要删除: 'Do you want to delete', + 的透析单: 'Dialysis sheet', + 警告: 'Warning', + 删除成功: 'Deletion successful', + 已发送打印上机单任务: 'Sent printing machine order task', + 自查成功: 'Self inspection successful', + 归档后透析单将无法修改您确定要归档: 'After archiving, the dialysis form cannot be modified. Are you sure you want to archive it? ', + 归档成功: 'Archived successfully', + }, + 透析处方组件: { + 透析机: 'Dialysis Machine', + }, + 临时医嘱组件: { + 添加: 'Add', + 执行: 'Execute', + }, + 监测记录组件: { + 获取联机数据: 'Fetch Online Data', + 症状: 'Symptoms', + 处理: 'Treatment', + 结果: 'Result', + }, + 透后小结组件: { + AI生成小结: 'AI-Generated Summary', + }, + 打印模板组件: { + 模板设置: 'Template Settings', + 设为默认样式: 'Set as Default Style', + 默认模板: 'Default Template', + 公共模板: 'Public Template', + }, + 修改透析单状态组件: { + 修改透析单状态: 'Modify Dialysis Status', + 姓名: 'Name', + 状态: 'Status', + 取消: 'Cancel', + 确认: 'Confirm', + 未签到: 'Not Checked In', + 已签到: 'Checked In', + 透析中: 'Dialyzing', + 已结束: 'Finished', + 已检查: 'Reviewed', + 已归档: 'Archived', + 操作成功: 'Operation Successful', + }, + 透析记录日历视图组件: { + 透析记录日历视图: 'Dialysis Record Calendar View', + 姓名: 'Name', + 透析号: 'Dialysis number', + 性别: 'Gender', + 男: 'Male', + 女: 'Female', + 年龄: 'Age', + 未找到对应透析单: 'No corresponding dialysis form found', + 今天: 'Today', + 月视图: 'Monthly view', + 周视图: 'Weekly view', + 天视图: 'Sky View', + 列表: 'List', + 上午: 'Morning', + 下午: 'Afternoon', + 晚上: 'Evening', + }, + 透析单打印组件: { + 请耐心等待: 'Please be patient', + 正在加载: 'Loading', + 第: 'Number', + 页: 'Page', + 共: 'Co', + 血液净化治疗记录单预览: 'Preview of Blood Purification Treatment Record', + 请勾选您需要打印的患者: 'Please check the patients you need to print', + 没有找到可以打印的透析单: 'No printable dialysis sheet found', + }, + IOT联机数据组件: { + IOT联机数据: 'IOT online data', + 时间: 'Time', + 超滤量: 'Ultrafiltration capacity', + 置换量: 'Replacement amount', + 血流量: 'Blood flow', + 静脉压: 'Venous pressure', + 跨膜压: 'Transmembrane pressure', + 脱水率: 'Dehydration rate', + 透析液流速: 'Dialysis fluid flow rate', + 透析液温度: 'Dialysis fluid temperature', + 置换率: 'Replacement rate', + 动脉压: 'Arterial pressure', + 电导度: 'Conductivity', + 取消: 'Cancel', + 导出为EXCEL: 'Export to Excel', + 导出成功: 'Export successful', + }, + 自查组件: { + 自查提示: 'Self inspection prompt', + 模块: 'Module', + 自查描述: 'Self inspection description', + 操作: 'Operation', + 查看: 'View', + 取消: 'Cancel', + 确认: 'Confirm', + 临时医嘱: 'Temporary medical orders', + 透前评估: 'Pre penetration assessment', + 透后小结: 'Post transparency summary', + 双人核对: 'Double check', + 透后评估: 'Post penetration evaluation', + 透析监测: 'Dialysis monitoring', + 透析单: 'Dialysis form', + }, + 患者最近检验结果组件: { + 患者最近检验结果: "Patient's recent test result", + 匹配失败请联系管理员: 'Matching failed, please contact the administrator', + 趋势: 'Trend', + 标准值上限: 'Standard value upper limit', + 标准值下限: 'Standard value lower limit', + 系统异常请刷新后重试: 'System exception, please refresh and retry', + 请输入有效的日期: 'Please enter a valid date', + 年: 'Year', + 月: 'Month', + }, + 修改记录组件: { + 修改记录: 'Modification record', + 序号: 'Number', + 日期: 'Date', + 修改字段: 'Modify Field', + 旧值: 'Old value', + 新值: 'New value', + 操作人: 'Operator', + }, + 物品名称: 'Product Name', + 编辑血温: 'Edit Blood Temperature', + "签到": "Check-In", + "溶栓":'Thrombolysis', + "开始溶栓":'Initiate thrombolysis', + "确认溶栓":'This operation will disable all operation permissions except for medical orders. Do you agree?', + "未签到": "Not Checked", + "已签到": "Checked", + "透析中": "In Dialysis", + "已结束": "Ended", + "已下机": "Off-Machine", + "治疗中": "Under Tx", + "已检查": "Checked", + "已归档": "Archived", + "已自查": "Self-Check", + "患者信息": "Pt Info", + "保存": "Save", + "干体重": "DW", + "衣物重": "Cloth Wt", + "称重方式": "Weigh Method", + "透前称重": "Pre-Weigh", + "透前体重": "Pre-Wt", + "目标脱水": "Target UF", + "脱水百分比": "UF Rate", + "温度": "Temp", + "呼吸": "Resp Rate", + "脉搏": "Pulse", + "透后称重方式": "Post-Weigh", + "透后称重": "Post-Weigh", + "查询日期": "Search Date", + "排班时段": "Shift Time", + "选择患者": "Select Pt", + "医嘱名称": "Order", + "是否核对": "Verify?", + "已核对": "Verified", + "未核对": "Unverified", + "给药途径": "Route", + "是否只统计已签到的透析单": "Count Checked Sessions", + "是否显隐藏患者自备药": "Hide Pt Meds", + "病区选择": "Ward Sel", + "医嘱": "Orders", + "统计": "Stats", + "查询": "Search", + "医嘱确认": "Order Conf", + "自定义打印": "Custom Print", + "自定义打印列": "Custom Col", + "医嘱自定义打印列设置": "Order Col Settings", + "分区": "Zone", + "年龄": "Age", + "执行时间": "Exec Time", + "备注": "Notes", + "床号": "Bed #", + "时段": "Time Slot", + "时段2": "Time Slot", + "性别": "Gender", + "透析方式": "Modality", + "开嘱医生": "Ordered By", + "核对人员": "Verifier", + "执行人员": "Executor", + "取消": "Cancel", + "确定": "Confirm", + "打印勾选": "Print Sel", + "打印": "Print", + "表单打印":'Form Printing', + "打印标签": "Label Print", + "导出": "Export", + "选择打印机": "Printer Sel", + "合计": "Total", + "请选择排班患者": "Select Pt", + "全部": "All", + "全选": "Select All", + "请选择": "Select", + "开始日期": "Start Date", + "结束日期": "End Date", + "是": "Yes", + "否": "No", + "NO": "N/A", + "统计自定义打印列设置": "Stats Col Settings", + "当天": "Today", + "七天": "7 Days", + "本月": "This Month", + "三个月": "3 Months", + "该功能仅针对医嘱生效": "Applies to Orders", + "请至少选择一个您要打印的列": "Select Print Col", + "操作成功": "Success", + "没有查询到数据": "No Data", + "请先选择你要打印的医": "Select Orders", + "医嘱打印成功": "Orders Printed", + "打印失败": "Failed", + "请先选择你要操作的患者": "Select Pt First!", + "没有勾选项": "No Sel", + "没有选择的医嘱项": "No Orders Sel", + "确认成功": "Confirmed", + "选择排班日期": "Select Date", + "查询时段": "Search Period", + "请选择查询时段": "Select Period", + "统计方式": "Stats Type", + "请选择统计方式": "Select Stats Type", + "请选择处方状态": "Select Rx Status", + "处方状态": "Rx Status", + "患者查询": "Pt Search", + "关键字查询": "Keyword Search", + "按物品类型统计": "Item Type Stats", + "按物品规格统计": "Spec Stats", + "未确认": "Unconfirmed", + "已确认": "Confirmed", + "病区": "Ward", + "若需查询已删除全部病区数据请将该选项置于全未选状态": "Include Deleted Wards", + "透析耗材准备打印设置": "Supplies Prep Print", + "打印透析器标签": "Dialyzer Labels", + "打印治疗单": "Tx Sheet", + "透析耗材统计打印设置": "Supplies Stats", + "上机参数打印设置": "Machine Setup Print", + "A4打印": "A4 Print", + "标签打印": "Label Print", + "药品准备打印设置": "Drug Prep Print", + "药品统计打印设置": "Drug Stats", + "药品统计2打印设置": "Drug Stats 2", + "请选择您要使用的打印机": "Select Printer", + "请选择查询日期": "Select Date", + "暂无可打印数据": "No Data", + "请选择您要打印的数据": "Select Data", + "透析耗材准备": "Supplies Prep", + "透析耗材统计": "Supplies Stats", + "上机参数": "Machine Params", + "药品准备": "Drug Prep", + "药品统计": "Drug Stats", + "药品统计2": "Drug Stats 2", + "页面显示字段": "Fields", + "人工肾": "Art Kidney", + "透析液流量": "Dialysate Flow", + "钙": "Ca", + "葡萄糖": "Glucose", + "血管通路": "Access", + "穿刺针": "Needle", + "穿刺针型号": "Needle Type", + "一次性使用管路": "Single Tubing", + "护理包": "Care Kit", + "浓缩液": "Concentrate", + "补液管": "IV Tubing", + "穿刺方式": "Needle Access", + "穿刺针A": "Needle A", + "穿刺针V": "Needle V", + "日期": "Date", + "配药人": "Pharmacist", + "核对人": "Checker", + "物品类型": "Item Type", + "物品规格": "Spec", + "数量": "Qty", + "透析器": "Dialyzer", + "透析时长": "Tx Time", + "剂量": "Dose", + "超滤总量": "Total UF", + "透析号": "Session #", + "目标脱水量": "Target UF", + "处方脱水量": "Rx UF", + "透前血压": "Pre-BP", + "抗凝剂": "Anticoag", + "开药数量": "Rx Qty", + "单次剂量": "Single Dose", + "药品名称": "Drug Name", + "药品分类": "Drug Class", + "药品规格": "Drug Spec", + "是否确认处方": "Confirm Rx?", + "葡萄糖酸钙": "Calcium Gluconate", + 肝素钠注射液: "Heparin Sodium Injection", + "骨化三醇": "Calcitriol", + "帕立骨化醇": "Paricalcitol", + "尿激酶": "Urokinase", + "庆大霉素": "Gentamicin", + "蔗糖铁": "Iron Sucrose", + "左卡尼汀": "L-Carnitine", + "促红": "Epoetin", + "执行人": "Executor", + "患者来源": "Pt Type", + "勾选打印": "Print Sel Dialysis sheet", + "批量归档": "Batch Archive", + "模板设置": "Template", + "开始透析": "Start Tx", + "结束透析": "End Tx", + "门诊": "Outpatient", + "住院": "Inpatient", + "转出患者": "Discharged", + "全部患者": "All Pts", + "我负责的患者": "My Pts", + "打印模板设置": "Print Temp", + "选择": "Select", + "预览": "Preview", + "透析护理包": "Dialysis Kit", + "透析浓缩液": "Dialyzer Concentrate", + "血滤管": "Hemo Tubing", + "入科方式": "Admission Method", + "入科时间": "Admission Time", + "出科方式": "Discharge Method", + "出科时间": "Discharge Time", + "步行": "Walking", + "扶行": "Assist", + "轮椅": "Wheelchair", + "平床": "Stretcher", + "床旁": "Bedside", + "助行器": "Walker", + "引血": "Blood Access", + "透析器编号": "Dialyzer ID", + "穿刺护士": "Needle Nurse", + "换药护士": "Med Nurse", + "穿刺": "Needle Insert", + "换药": "Med Change", + "预充管路": "Prefilled Tubing", + "上机护士": "Setup Nurse", + "治疗护士": "Tx Nurse", + "开始时间": "Start Time", + "正常": "Normal", + "卧床": "Bedridden", + "拒测": "Declined", + "找到指定透析单": "Found", + "未匹配到指定透析单患者": "Not Found", + "请勾选您需要打印的患者": "Select Pts", + "请勾选您需要归档的患者": "Select Pts", + "归档后透析范将无法修改": "Archive Confirm", + "没有选中行": "No Sel", + "处方还没确认你确定要开始透析": "Unconfirmed Rx", + "时间": "Time", + "下机护士": "Off-Nurse", + "提示": "Note", + "回血": "Blood Return", + "手动HIS签到就诊": "Manual HIS", + "叫号": "Call #", + "结束叫号": "End Call", + "确认": "Verify", + "确认至患者信息": "Update Info", + "删除": "Delete", + "打印上机单": "Setup Sheet", + "打印透析单": "Tx Sheet", + "自查": "Self-Check", + "归档": "Archive", + "修改透析单状态": "Update Status", + "诊断": "Diagnosis", + "透析日期": "Tx Date", + "传染病": "Infectious", + "首次透析日期": "First Tx Date", + "透析次数": "Session Count", + "入院时间": "Admit Date", + "透析床号": "Tx Bed #", + "透析大区": "Zone", + "门诊号": "Out ID", + "住院号": "In ID", + "重新打印": "Reprint", + "透析处方": "Dialysis Rx", + "机型": "Machine Model", + "抗凝剂公式": "Anticoag Formula", + "自定义维持时长": "Custom Time", + "首剂": "Initial", + "维持": "Maintenance", + "总量": "Total", + "钙名称": "Ca Type", + "钙剂量": "Ca Dose", + "请输入时机": "Enter Timing", + "追加": "Additional", + "冲洗时间": "Rinse Time", + "冲洗量": "Rinse Vol", + "碳酸氢根": "Bicarb (HCO3-)", + "处方钠": "Rx Sodium", + "配方钠": "Formula Na", + "调整": "Adjust", + "血滤器": "Hemofilter", + "血透器": "Hemodialyzer", + "通路类型": "Access Type", + "置换总量": "Total Replacement", + "修改记录": "Edit Log", + "同步至透析方案": "Sync Tx Sheet", + "修改确认时间": "Update Time", + "置换方式": "Replacement Mode", + "血流量": "Blood Flow", + "时长": "Duration", + "钾": "K", + "灌流器": "Perfusion Device", + "处方脱水量格式错误": "Invalid UF Format", + "处方已经确认了你确定要重新确认": "Rx Confirmed", + "同步成功": "Sync OK", + "同步失败": "Sync Failed", + "没有选择透析单": "No Tx Sheet Sel", + "调整成功": "Adjusted", + "确认要调整床号吗": "Confirm Bed #", + "警告": "Warning", + "确认要修改透析方案": "Confirm Tx Plan", + "请选中透析单后再进行查询": "Select Sheet First", + "最近检验结果": "Latest Labs", + "上次透后体重": "Last Post-Wt", + "上次透后称重": "Last Post-Weigh", + "血压": "BP", + "尿量": "Urinary", + 疼痛: 'pain', + "体温": "Temp", + "预增脱水": "Pred UF", + "体重增加": "Weight Gain", + "同步": "Sync", + "收缩压": "Systolic", + "舒张压": "Diastolic", + "上肢": "Upper Limb", + "下肢": "Lower Limb", + "测不出": "Unmeasurable", + "未测":'Not tested', + "前次透析后": "Post-Last", + "导管": "Catheter", + "合并症": "Comorbidities", + "内瘘": "AV Fistula", + "透前症状": "Pre-Symptoms", + "签到时间": "Check-In Time", + "修改签到时间": "Update Time", + "请输入透前称重": "Enter Pre-Weigh", + "请选择透前称重方式": "Select Method", + "请输入干体重": "Enter DW", + "请输入体温": "Enter Temp", + "不详": "N/A", + "请先签到后才能确认": "Check-In First", + "患者尚未签到是否继续确认保存": "Pt Not Checked", + "表单明细没有验证通过": "Validation Failed", + "签到时间修改成功": "Time Updated", + "确认要将此衣物重同步至该患者的所有透析方案下吗": "Confirm whether to resynchronize this clothing to all dialysis plans and unsigned dialysis orders of the patient?", + "衣物重为空不能同步": "Empty Wt", + "透前评估自定义内容格式化出错了": "Format Error", + "系统异常请刷新后重试": "Error: Refresh", + "透前评估": "Pre-Eval", + "取消自定义": "Cancel", + "自定义": "Custom", + "临时医嘱": "Temp Orders", + "医嘱模板": "Order Temp", + "添加医嘱": "Add Order", + "修改医嘱": "Edit Order", + "执行医嘱": "Exec Order", + "修改": "Modify", + "医嘱内容": "Order Details", + "没有选中要执行的医嘱": "No Orders Sel", + "请勾选您需要批量执行的医嘱": "Select Batch Orders", + "请勾选您要修改的医嘱": "Select Orders", + "仅支持单例修改请确保勾选的医嘱数量为1": "Single Sel Only", + "医嘱添加成功": "Order Added", + "执行医嘱成功": "Exec Success", + "批量执行医嘱成功": "Batch Done", + "请勾选您要删除的医嘱": "Select Orders", + "请勾选您要打印的医嘱": "Select Orders", + "是否删除医嘱": "Delete Order?", + "是否继续": "Continue?", + "医嘱删除成功": "Deleted", + "当前操作的是": "Current: ", + "是否确认": "Confirm?", + "透析单": "Tx Sheet", + "长期医嘱": "Standing Orders", + "医嘱类型": "Order Type", + "医嘱日期": "Order Date", + "开单医生": "Ordered By", + "医嘱开始时间": "Start Time", + "选择日期": "Select Date", + "请选择开单医生": "Select Doctor", + "请选择医嘱名称": "Select Order", + "请输入单次用量": "Enter Dose", + "请输入开药数量": "Enter Qty", + "请选择给药途径": "Select Route", + "请选择执行频率": "Select Freq", + "请输入备注": "Enter Notes", + "执行频率": "Freq", + "子药": "Subdrug", + "单独保存子药内容需要点击该按钮": "Save Subdrug", + "子药内容": "Subdrug", + "选择的医嘱项目": "Selected", + "医嘱项目": "Orders", + "模板名称": "Template", + "添加": "Add", + "没有选择项": "No Sel", + "已经选择了当前项目": "Already Sel", + "执行": "Exec", + "请选择核对人员": "Select Checker", + "请选择执行医生": "Select Doctor", + "未选中批量执行医嘱": "No Batch Sel", + "护士": "Nurse", + "医生": "Doctor", + "请选择开始时间": "Select Time", + "收起": "Collapse", + "展开": "Expand", + "添加子药": "Add Subdrug", + "请选择输入医嘱名称": "Enter Order", + "暂无子药": "No Subdrugs", + "删除子药": "Del Subdrug", + "透析物品检查": "Supplies Check", + "正确": "OK", + "差错": "Error", + "双人核对": "Dual Check", + "透析器及管路无破损和过期": "Dialyzer/Tubing OK", + "一次性透析管路": "Single Tubing", + "回血用NS": "NS for Return", + "请输入核对人密码验证": "Enter Password", + "请输入密码": "Enter Pass", + "核对时间": "Check Time", + "肝素补液口未双保险夹闭": "Heparin Port Clamped", + "管路有打折": "Tubing Folded", + "接口连接松动": "Loose Conn", + "压力传感器管夹未打开": "Sensor Open", + "静脉管路未卡入保护夹": "Venous Clamped", + "动静脉壶液面不标准": "Bubbler Level", + "透析液连接错误": "Dialysate Error", + "肝素管夹未开启": "Heparin Clamp Open", + "泵前补液侧管未夹": "Pre-Pump Clamped", + "管道连接核查": "Tubing Check", + "动静脉接错": "AV Crossed", + "渗血": "Bleeding", + "压迫": "Compression", + "折叠": "Folded", + "滑脱": "Dislodged", + "处方血流量": "Rx Blood Flow", + "方案备注": "Plan Notes", + "透析参数核查": "Tx Param Check", + "血管通路核查": "Access Check", + "确认人不能为空": "Checker Required", + "核对人密码验证识别": "Invalid Pass", + "监测记录": "Monitor Log", + "导出IOT联机数据": "Export IoT", + "iot消息": "IoT Note", + "上": "Up", + "下": "Down", + "在线": "Online", + "置换量": "Replacement", + "置换率": "Replacement Rate", + "透析液温度": "Dialysate Temp", + "电导度": "Conductivity", + "钠浓度": "Na Concentration", + "超滤量": "UF", + "超滤率": "UF Rate", + "跨膜压": "TMP", + "动脉压": "Arterial", + "静脉压": "Venous", + "添加监测记录": "Add Log", + "编辑监测记录": "Edit Log", + "监测记录确认成功": "Log Confirmed", + "请选择您要删除的监测记录": "Select Logs", + "该患者暂无监测记录或监测记录小于两条": "No Logs", + "删除成功": "Deleted", + "上次监测": "Last Log", + "请选择监测护士": "Select Nurse", + "联机数据获取成功": "IoT Data", + "超滤量类型应为数字": "UF Must Be Numeric", + "超滤率类型应为数字": "UF Rate Numeric", + "距上次时间差为负数不能计算": "Negative Time", + "置换液量类型应为数字": "Replacement Numeric", + "置换率类型应为数字": "Replacement Rate Numeric", + "上次置换量无法取值不能计算": "Prev Replacement N/A", + "请检查收缩压舒张压是否正确": "Check BP", + "请选择监测记录所属日期": "Select Date", + "所属日期": "Date", + "监测时间": "Monitor Time", + "症状选项": "Symptoms", + "结果描述": "Result", + "结果选项": "Results", + "处理描述": "Action", + "处理选项": "Actions", + "症状描述": "Symptoms", + "在线尿素": "Online Urea", + "血容量": "Blood Vol", + "监测护士": "Monitor Nurse", + "设置": "Settings", + "置换液速率": "Replacement Rate", + "置换液量": "Replacement", + "是否忽略必填校验": "Skip Required?", + "透后宣教": "Post-Education", + "宣教人": "Educator", + "透析小结": "Tx Summary", + "小结签名": "Summary Sig", + "签名": "Sig", + "导出病程": "Export Course", + "自动生成小结": "Auto-Summary", + "穿刺位点": "Needle Site", + "穿刺方向": "Needle Angle", + "关闭": "Close", + "应用到小结": "Apply", + "重新生成": "Regen", + "请求中": "Processing", + "透后小结": "Post-Summary", + "治疗医生": "Treating MD", + "智能推荐模版": "AI Temp", + "智能推荐模板取消勾选已有选项": "Uncheck Existing", + "结束透析时间": "End Time", + "凝血": "Clotting", + "实际透析时长": "Actual Time", + "提前下机": "Early Termination", + "症状处理结果": "Symptom Resolved", + "透后血压": "Post-BP", + "体重减少": "Weight Loss", + "干体重达标": "DW Achieved", + "干体重是否调整": "DW Adjusted?", + "实际脱水量": "Actual UF", + "透后体重": "Post-Wt", + "透后评估": "Post-Eval", + "实际超滤量": "Actual UF", + "实际置换量": "Actual Replacement", + "透析中进食": "Eating During Tx", + "透析中输液": "IV During Tx", + "透析中输血": "Blood Tx During", + "透析中冲管": "Tubing Flush", + "透后症状": "Post-Symptoms", + "并发症": "Complications", + "透后衣物重": "Post-Cloth Wt", + "实际治疗时长": "Actual Duration", + "请输入": "Enter", + "校验不通过": "Validation Failed", + "透后评估数据存在多项请联系管理员删除": "Contact Admin", + "透析单确认透后评估异常": "Tx Sheet Error", + "医生治疗小结": "MD Summary", + "请输入医生治疗小结": "Enter MD Notes", + " 自动生成完成": "Auto-Generated", + "是否需要系统辅助生成小结": "AI Summary?", + "导出成功": "Exported", + "透析单code异常": "Invalid Code", + "当前医生治疗小结存在多条数据": "Multiple Summaries", + "保存子药": "Save Subdrug", + "结束时间": "End Time", + "保存成功": "Saved", + "提醒": "Alert", + "联机获取": "IoT Fetch", + "计算": "Calc", + "总": "Total", + "是否只展示最后一次结果": "Show Last Only", + "默认查询全部": "All Results", + "转归状态": "Outcome", + "不限": "All", + "在院": "In Hospital", + "转出": "Discharged", + "未检测人员": "Not Tested", + "检验日期": "Test Date", + "患者姓名": "Pt Name", + "不达标": "Not Met", + "达标": "Met", + "标准值": "Std", + "标准值设定": "Set Std", + "控制率": "Control Rate", + "未检测人数": "Not Tested", + "不达标的患者人数": "Not Met", + "达标患者人数": "Met", + "铁蛋白": "Ferritin", + "血清铁蛋白": "Serum Ferritin", + "超敏C反应蛋白": "hs-CRP", + "C反应蛋白": "CRP", + "动静脉内瘘生存率": "AV Survival", + "甘油三酯": "Triglycerides", + "甲状旁腺激素": "iPTH", + "Kt/V": "Kt/V", + "URR": "URR", + "β2微球蛋白": "β2-Microglobulin", + "前白蛋白": "Prealbumin", + "总蛋白": "Total Protein", + "体重增长": "Weight Gain", + "尿素氮": "BUN", + "尿酸": "UA", + "白蛋白": "Albumin", + "血红蛋白": "Hb", + "中性粒细胞百分比": "Neutrophils %", + "血压控制": "BP Control", + "转铁蛋白饱和度": "TSAT", + "透析龄": "Dialysis Age", + "主治医师": "Attending", + "BNP": "BNP", + 症状:'Symptoms', + 处理:'Treatment', + 结果:"Results", + 打印设置:'Print Settings', + "收缩压标准值设定": "Systolic Blood Pressure Standard Value Setting", + "舒张压标准值设定": "Diastolic Blood Pressure Standard Value Setting", + "年龄标准值设定": "Age Standard Value Setting", + "标准值仅可为大于等于0的数值": "The standard value must be a number greater than or equal to 0", + "标准值不能小于0": "The standard value cannot be less than 0", + 最近平均脱水量: 'Recent average dehydration rate', + 最近最大脱水量: 'Recent maximum dehydration volume', + 最近最大脱水量日期: 'Latest maximum dehydration date', + 单项合计: 'Single item total', + '透前体重(kg)': 'Pre dialysis weight (kg)', + '干体重(kg)': 'Dry weight (kg)', + '透前血压(mmHg)': 'Pre dialysis blood pressure (mmHg)', + '处方脱水量(L)': 'Prescription dehydration volume (L)', + '目标脱水量(L)': 'Target dehydration volume (L)', + '超滤总量(L)': 'Total ultrafiltration volume (L)', + '剂量(首剂)(维持/追加)(总量)': 'Dose (first dose) (maintenance/addition) (total amount)', + '透析时长(H)': 'Dialysis duration (H)', + 磷: 'phosphorus', + 床位排序: 'Bed sorting', + 签到排序: 'Check in sorting', + 透析号排序: 'Dialysis number sorting', + 我的患者: 'My patient', + 责护患者: 'Responsible for protecting patients', + } +}; diff --git a/src/i18n/lang/jp.ts b/src/i18n/lang/jp.ts new file mode 100644 index 0000000..8b4d276 --- /dev/null +++ b/src/i18n/lang/jp.ts @@ -0,0 +1,1218 @@ +export default { + router: { + zhibeiyao:'持参薬管理', + xycskz:'それぞれの例について', + home: 'ホームページ', + patient: '患者管理', + HemodiPatients: '患者概要', + PatientFormDetails: "患者情報", + PatientList: '患者リスト', + outComeRecord: '転帰記録', + wenshuguanli: '文書管理', + hemoMed: '透析管理', + bedView: 'ベッドビュー', + QC: '品質管理', + postQc: '品質管理レポート', + dataGlobalItem: '勝透物品基礎データベース', + weightRecord: '体重記録', + xgtlQc: '血管アクセス分類', + yueXiaoJie: '月次まとめ', + yihupaiban: '医療スタッフのシフト管理', + yihuPaiban: 'シフト', + paibanSet: 'シフト設定', + duibi: '透析品質比較', + analyse: '品質分析', + statistics: '検査データ統計', + hemoMedScheme: '透析スキーム', + gongyinglian: 'サプライチェーン', + datatongji: "検査データ統計", + canPingDuiZhao: '製品対応の維持', + medicalHistory: '患者病歴', + personalInfo: '個人情報', + courseRecord: '病程記録', + physiqueCheck: '身体検査', + xiaodutongji: '消毒統計', + kidneyTest: '腎臓検査', + inspectors: '検査・検査担当者', + banbenweihu: 'バージョン管理', + dryWeight: '乾体重', + vascularAccess: '血管アクセス', + paibanTongji: '統計検索', + ChroDisePatients: '慢性疾患患者', + scheduling: 'シフト管理', + jieduanxiaojie: 'ステージサマリー', + NurseRostering: '看護師シフト', + PatientsWithScheduling: '患者シフト', + scheduleTemplate: 'シフトテンプレート', + DialysisRecord: '透析記録', + signIn: 'サインイン', + erjichuku: '二次出庫', + erjiCheck: '倉庫棚卸', + fee: "料金", + feeOrder: "料金リスト", + feeChufang: "外来処方箋", + feeGroup: '料金パッケージ管理', + feeDict: '料金項目管理', + erjikefangwf: '二次倉庫管理', + erjikufang: '二次倉庫', + inventory2Query: '二次倉庫クエリ', + yiqikufang: '一次倉庫', + weigh: 'サインインの体重測定', + hzZaiYao: '月次まとめ', + signinJIlu: "サインイン記録", + zxlbfb: '中性白血球制御率', + xuedanbai: '血清アルブミン制御率', + gai: 'カルシウム制御率', + jia: 'カリウム制御率', + jzxjs: '副甲状腺ホルモン制御率', + xhdb: 'ヘモグロビン制御率', + ling: 'リン制御率', + kfzdsz: '倉庫辞書設定', + dialysisForm: '透析表', + KeshiQc: '科室品質管理', + doctorsAdvice: '今日の医師の指示', + TestItem: '検査項目の維持', + prepare: '透析準備', + jianyanQc: '検査と検査', + monitor: '透析モニタリング', + WorkStats: '業務量統計', + Loglog: '引き継ぎログ', + stockControl: '在庫管理', + inventoryOperate: '入庫管理', + inventory2Operate: '入庫管理', + outStock: '出庫管理', + storage: '入庫管理', + jymbdcl: '検査目標達成率', + urrKzl: 'URR制御率', + fromStorage: '在庫管理', + StockSearch: '在庫クエリ', + inventoryQuery: '一次在庫クエリ', + inventoryCheck: '在庫棚卸', + Stocktaking: '在庫棚卸', + InventoryDictionary: '在庫辞書', + touxiJilu: '透析記録表', + HaoCaiTongji: '消耗品統計', + jianyanDatatongji: "検査データ統計", + zkpzfx: "品質管理品質分析", + IDCzkpztj: "IDC透析品質分析と比較", + yaoPingTongJi: '薬剤統計', + NurseWorkStats: '看護師業務量', + DealerDictionary: '販売業者辞書', + ManufacturerDic: 'メーカー辞書', + AiMenu: 'Ai', + xinSuai: '心不全予測AI', + xinSuaiTu: '心不全予測トレンド', + xinshuaiAi: '心不全予測', + jiFengGuiZhe: 'ポイントルール', + patientAdmin: '患者管理', + MedicalAdvice: '医師の指示', + diseaseDiagnosis: '患者診断', + diseaseDiagnosis2:'病情诊断', + DictDiagnose: '診断辞書', + SchemeDic: '透析スキーム', + device: 'デバイス', + deviceAdmin: 'デバイス管理', + signMachine: '自動サインイン端末', + commServiceDevice: '自助端末ハードウェアステータス', + deviceInfo: '基本情報', + deviceList: 'デバイスリスト', + DisinfectionPlan: '消毒計画', + xiaodujilu:'消毒記録', + xiaoduzidian:'消毒字典管理', + deviceXiaodu:'装置の消毒', + useRegistration: '使用登録', + qc: '品質管理', + Work: '業務量', + Maintenance: 'メンテナンス', + deviceGroup: 'デバイスグループ', + system: 'システム', + systemSet: 'システム設定', + reportShow: 'レポート検索', + checkout: '検査', + feeitem: '料金項目管理', + jianchaxiangmu: '検査項目管理', + lisBarcode: "外来サンプリング", + class: '検査分類', + lisOorder: '検査申請', + feeitemVsClass: '検査分類料金項目対応', + basicsDic: '基本辞書', + dialysisSet: '透析設定管理', + userSet: '顧客のカスタム設定', + systemMenu: 'メニュー管理', + systemRole: 'ロール管理', + systemUser: 'ユーザー管理', + systemDept: '部門管理', + systemDic: '辞書管理', + drugDic: '薬剤辞書', + medicalOrderDrugTemplate: '薬剤医師の指示テンプレート', + diseaseCourseTemplate: '病程テンプレート', + workDoneTemplate: '透析サマリー', + healthEducation: '健康教育', + customDic: 'カスタム辞書', + clientsAdmin: 'クライアント管理', + limits: '権限管理', + limitsFrontEnd: 'フロントエンド制御', + limitsFrontEndPage: 'ページ権限', + limitsFrontEndBtn: 'ボタン権限', + limitsBackEnd: 'バックエンド制御', + limitsBackEndEndPage: 'ページ権限', + menu: 'メニューのネスト', + menu1: 'メニュー1', + menu11: 'メニュー11', + menu12: 'メニュー12', + menu121: 'メニュー121', + menu122: 'メニュー122', + menu13: 'メニュー13', + menu2: 'メニュー2', + funIndex: '機能', + funTagsView: 'tagsView 操作', + funCountup: 'countup 数字スクロール', + funEchartsTree: 'echartsTree ツリー図', + funSelector: 'アイコンセレクター', + funNoticeBar: 'スクロール通知バー', + funWangEditor: 'wangEditor エディター', + funCropper: 'cropper 画像トリミング', + funQrcode: 'qrcode QRコード生成', + funEchartsMap: '地理座標/地図', + funPrintJs: 'ページ印刷', + baogaochaxun: '検査項目レポート', + funClipboard: 'コピー・カット', + funScreenShort: 'ウェブカスタムスクリーンショット', + funGridLayout: 'ドラッグレイアウト', + funSplitpanes: 'ウィンドウ分割器', + funDragVerify: '検証器', + pagesIndex: 'ページ', + pagesFiltering: 'フィルタリングコンポーネント', + pagesFilteringDetails: 'フィルタリングコンポーネントの詳細', + pagesFilteringDetails1: 'フィルタリングコンポーネントの詳細111', + pagesIocnfont: 'iconfont フォントアイコン', + pagesElement: 'element フォントアイコン', + pagesAwesome: 'awesome フォントアイコン', + pagesCityLinkage: '都市多階層連動', + pagesFormAdapt: 'フォーム自動適応', + pagesFormI18n: 'フォーム国際化', + pagesFormRules: '多フォーム検証', + pagesDynamicForm: '動的複雑フォーム', + pagesWorkflow: 'ワークフロー', + pagesListAdapt: 'リスト自動適応', + pagesWaterfall: 'ウォーターフォール', + pagesSteps: 'ステップバー', + pagesPreview: '大きな画像プレビュー', + pagesWaves: '波エフェクト', + pagesTree: 'ツリーテーブル', + pagesDrag: 'ドラッグディレクティブ', + pagesLazyImg: '画像遅延読み込み', + paramsIndex: 'ルートパラメータ', + paramsCommon: '通常ルート', + paramsDynamic: '動的ルート', + paramsCommonDetails: '通常ルートの詳細', + paramsDynamicDetails: '動的ルートの詳細', + chartIndex: 'ビッグデータチャート', + visualizingIndex: 'データビジュアライゼーション', + visualizingLinkDemo1: 'データビジュアライゼーションデモ1', + visualizingLinkDemo2: 'データビジュアライゼーションデモ2', + personal: '個人センター', + tools: 'ツールコレクション', + layoutLinkView: '外部リンク', + layoutIfameView: '埋め込み iframe', + images: "画像", + imagesIndex: "画像", + disinfection: "消毒", + disinfectionIndex: "消毒", + patientTestingTrend: "患者検査トレンド", + bloodProteinTrend: "アルブミントレンド", + hemoglobin: "ヘモグロビントレンド", + urr: "URRトレンド", + BNP: "BNP制御率", + ktv: "Kt/Vトレンド", + statistics2: "統計", + inspect: "検査", + inspectionControlRate: "検査制御率", + inspectionTrend: "検査トレンド", + analysisDialysisQuality: "透析品質分析", + dataConversion: "データ変換", + groupCustomerComparison: "グループ顧客比較", + hisSetUp: 'HIS設定', + barcodePrintingSettings: "バーコード印刷設定", + backendReportManagement: 'バックエンドレポート管理', + outpatientRecords: '外来記録', + inventoryMonitoring: '在庫モニタリング', + inventoryPurchaseAndSales: '在庫の売買', + checkData: '検査データ', + barcodePrinting: 'バーコード印刷', + secondaryOutboundStatistics: "二次出庫統計", + automaticOutboundManagement: '自動出庫管理', + inspectionOutsourcing: '検査外送', + tdbkzl: '血清フェリチン制御率', + cmcfybdb: '高感度C反応蛋白', + gysz: 'トリグリセリド制御率', + tdb: 'フェリチン制御率', + ticket: '工単', + maintenanceDialysate: "透析液メンテナンス", + ktvkzl: 'KT/V制御率', + tzkzl: '体重増加制御率', + xykz: '血圧制御率', + ztdbbhdkzl: 'トランスフェリン飽和度制御率', + p2wqdbkzl: 'β2ミクログロブリン制御率', + patientAssessment: '患者評価', + slippage: 'パイプ滑脱評価', + djmnlsclKzl: '動静脈瘻生存率制御率', + patientsNumTongJi: '患者在院数統計', + dialysisQualityStatistics: '透析品質統計', + prescriptionInquiry: '処方箋検索', + inspectionDataStatistics: '検査データ統計', + annualIndicatorControlRate: '年間指標制御率', + weightGainControlDuringDialysis: '透析中の体重増加制御率', + dialyzerStatistics: '透析年齢統計', + earlyShutdownStatistics: '早期下機統計', + patientBirthdayCalendar: '患者誕生日カレンダー', + stageSummary: 'ステージサマリー', + patientPathologicalDiagnosis: '患者病理診断', + cReactiveProteinControlRate: 'C反応蛋白制御率', + ktvQuery: 'Kt/V検索', + urrQuery: 'URR検索', + patientVascularAccessStatistics: '患者血管アクセス統計', + supplementaryExamination: '補助検査', + infectiousDiseaseControlRate: '感染症制御率', + hypertensionControlRate: '高血圧制御率', + qualityControlReport: '品質管理レポート', + footCare: '足部管理', + totalProtein: '総蛋白', + Prealbumin: 'プレアルブミン', + uricAcid: '尿酸', + ureaNitrogen: '尿素窒素', + "monthlyStatisticsOfDialysisFrequencyForPatients": "月次透析回数統計", + "dailyDialysisConsumptionDetails": "日次消耗品明細", + "averageAgeAndAgeDistribution": "平均年齢と年齢分布", + "hospitalInfectionClinic": "院内感染外来", + "infectionEvent": "感染事象", + "monthlyReportOnInfectionEvents": "感染事象月次報告", + "bloodBornePathogenMonitoring": "血液媒介病原体監視", + "infectionControlRate": "感染事象制御率", + inspectionReport: "検査報告書", + infectionControlEarlyWarning: '院内感染早期警戒', + CACertification: 'CA認証', + 医院报表管理: "レポート管理", + 压力性损伤评估: '圧迫損傷評価', + 跌倒评估: '転倒リスク評価', + 院感门诊: '院内感染外来クリニック', + secondaryCcreenVersionControl: 'サブスクリーンバージョン制御', + }, + staticRoutes: { + signIn: 'ログイン', + notFound: 'このページが見つかりません', + noPower: '権限がありません', + }, + user: { + title0: 'コンポーネントのサイズ', + title1: '言語切り替え', + title2: 'メニュー検索', + title3: 'レイアウト設定', + title4: 'メッセージ', + title5: '全画面表示', + title6: '全画面表示を終了', + dropdownDefault: 'デフォルト', + dropdownMedium: '中', + dropdownSmall: '小', + dropdownMini: 'ミニ', + dropdown1: 'ホームページ', + dropdown2: '個人センター', + dropdown3: '404', + dropdown4: '401', + dropdown5: 'ログアウト', + dropdown6: 'コードリポジトリ', + searchPlaceholder: 'メニュー検索:中文、ルートパス対応', + newTitle: '通知', + newBtn: '全て既読にする', + newGo: '通知センターに進む', + newDesc: '通知はありません', + logOutTitle: 'ヒント', + logOutMessage: 'この操作によりログアウトします。続行しますか?', + logOutConfirm: '確認', + logOutCancel: 'キャンセル', + logOutExit: 'ログアウト中', + logOutSuccess: '安全にログアウトしました!', + "测试环境哦": "テスト環境!!!!", + "工单": "作業指示", + "请输入关键字": "キーワードを入力してください", + "关于": "について", + "帮助": "ヘルプ", + "取消": "キャンセル", + "确认": "確認", + "我的工单": "私の作業指示", + "添加工单": "作業指示を追加", + "提交日期": "提出日", + "工单内容": "作業指示の内容", + "状态": "ステータス", + "已办结": "完了", + "已提交": "提出済み", + "回复时间": "返信時間", + "回复内容": "返信内容", + "操作": "操作", + "查看": "表示", + "暂不不支持全屏": "全画面表示は現在サポートされていません", + "完整版本": "フルバージョン", + "发布版本": "リリースバージョン", + "当前患者信息": "現在の患者情報", + "姓名": "氏名", + "透析号": "透析ID", + "暂无": "なし" + }, + tagsView: { + refresh: 'リフレッシュ', + close: '閉じる', + closeOther: 'その他を閉じる', + closeAll: 'すべて閉じる', + fullscreen: '現在のページを全画面表示', + closeFullscreen: '全画面表示を終了', + }, + notFound: { + foundTitle: 'アドレス入力ミスです。アドレスを再入力してください~', + foundMsg: 'まずURLを確認し、再入力するか、問題を報告してください。', + foundBtn: 'ホームページに戻る', + notFoundTitle: '権限がないか、アドレスが存在しません', + }, + noAccess: { + accessTitle: '許可されていないため、操作権限がありません~', + accessMsg: '連絡方法:QQグループに参加して探討 665452019', + accessBtn: '再承認', + }, + layout: { + configTitle: 'レイアウト設定', + oneTitle: '全体テーマ', + twoTitle: 'メニュー / トップバー', + twoTopBar: 'トップバー背景', + twoMenuBar: 'メニューバー背景', + twoColumnsMenuBar: '列メニューバー背景', + twoTopBarColor: 'トップバーのデフォルトフォントカラー', + twoMenuBarColor: 'メニューバーのデフォルトフォントカラー', + twoColumnsMenuBarColor: '列メニューバーのデフォルトフォントカラー', + twoIsTopBarColorGradual: 'トップバー背景のグラデーション', + twoIsMenuBarColorGradual: 'メニューバー背景のグラデーション', + twoIsColumnsMenuBarColorGradual: '列メニューバー背景のグラデーション', + twoIsMenuBarColorHighlight: 'メニューフォント背景のハイライト', + threeTitle: 'インターフェース設定', + threeIsCollapse: 'メニュー水平折りたたみ', + threeIsUniqueOpened: 'メニューアコーディオン', + threeIsFixedHeader: '固定ヘッダー', + threeIsClassicSplitMenu: 'クラシックレイアウト分割メニュー', + threeIsLockScreen: 'ロック画面を有効にする', + threeLockScreenTime: '自動ロック画面(s/秒)', + fourTitle: 'インターフェース表示', + fourIsShowLogo: 'サイドバーのロゴを表示', + fourIsBreadcrumb: 'パンくずリストを有効にする', + fourIsBreadcrumbIcon: 'パンくずリストアイコンを有効にする', + fourIsTagsview: 'Tagsviewを有効にする', + fourIsTagsviewIcon: 'Tagsviewアイコンを有効にする', + fourIsCacheTagsView: 'TagsViewのキャッシュを有効にする', + fourIsSortableTagsView: 'TagsViewのドラッグを有効にする', + fourIsShareTagsView: 'TagsViewの共有を有効にする', + fourIsFooter: 'フッターを有効にする', + fourIsGrayscale: 'グレースケールモード', + fourIsInvert: '色覚異常モード', + fourIsDark: 'ダークモード', + fourIsWartermark: '透かしを有効にする', + fourWartermarkText: '透かしテキスト', + fiveTitle: 'その他の設定', + fiveTagsStyle: 'Tagsviewスタイル', + fiveAnimation: 'メインページの切り替えアニメーション', + fiveColumnsAsideStyle: '列ハイライトスタイル', + fiveColumnsAsideLayout: '列レイアウトスタイル', + sixTitle: 'レイアウト切り替え', + sixDefaults: 'デフォルト', + sixClassic: 'クラシック', + sixTransverse: '横向き', + sixColumns: '列', + tipText: '下のボタンをクリックして、レイアウト設定をコピーし、 `src/store/modules/themeConfig.ts` に貼り付けて変更します。', + copyText: '設定をコピー', + resetText: 'デフォルトにリセット', + copyTextSuccess: 'コピー成功!', + copyTextError: 'コピー失敗!', + title: '血液透析管理プラットフォーム', + "全部": "すべて", + "留治": "入院治療", + "转出": "転院", + "选择机号": "機器番号を選択", + "选择患者": "患者を選択" + }, + 透析单:{ + 处方还没确认你确定要双人核对: '処方箋はまだ確認されていません。二人でチェックしてください', + 血温: '血温', + "全天": "全日", + "上午": "午前", + "下午": "午後", + "晚上": "夜間", + "刷新": "更新", + "姓名": "氏名", + "状态": "状態", + "班次": "シフト", + "排班": "シフト設定", + 批量打印: '一括印刷透析シート', + 请选择您需要打印的患者: '印刷する患者を選択してください', + 变更记录: '変更記録', + 批量打印组件: { + 批量打印: '一括印刷', + 患者姓名: '患者氏名', + 请选择: '選択してください', + 透析号: '透析番号', + 透析日期: '透析日', + 开始时间: '開始時間', + 结束时间: '終了時間', + 是否重新生成报表: 'レポートを再生成しますか', + 取消: 'キャンセル', + 打印: '印刷', + 血液净化治疗记录单预览: '血液浄化治療記録のプレビュー', + 请耐心等待正在加载: '読み込み中です。しばらくお待ちください', + 第: '第', + 页: 'ページ', + 预计: '予想', + 共: '合計', + 透析单日期不能为空: '透析日の入力は必須です', + 没有可以打印的透析单: '印刷可能な透析データがありません', + }, + 患者信息组件: { + 治疗病区: '病域を治療する.', + 住院病区: '入院病棟', + 病区: '病棟', + 住院门诊: '入院/外来', + 的: 'の', + 上机单已经打印了: 'オンラインリストは印刷されました', + 你确定还要重新打印: '本当に再印刷しますか?', + 男: '男', + 女: '女', + 门诊: '外来', + 住院: '入院', + 号: '号', + 门诊号: '外来番号', + 住院号: '入院番号', + 没有找到选中日期的透析单: '選択日が見つからない透析書', + 上午: '午前', + 下午: '午後', + 晚上: '夜', + 透析单编号为空请刷新后重试: '透析単番号が空である場合はリフレッシュ後再試行してください', + 此操作将对: 'この操作は', + 进行手动HIS签到就诊操作是否确定: '手動HIS署名受診操作を行うことは確定しますか?', + 提示: 'ヒント', + 确定: 'OK', + 取消: 'キャンセル', + 操作成功: '操作成功', + 开始叫号: 'スタートコール', + 结束叫号: '終了コール', + 下机: 'ダウン', + 此操作将会同步修改患者快照是否确认: 'この操作により、患者スナップショットの変更が同期されます。確認しますか?', + 是否要删除: '削除するかどうか', + 的透析单: 'の透析単', + 警告: '警告', + 删除成功: '削除に成功しました', + 已发送打印上机单任务: '送信印刷済発注タスク', + 自查成功: '自己検査成功', + 归档后透析单将无法修改您确定要归档: 'アーカイブ後に透析シートは修正できません。アーカイブしますか?', + 归档成功: 'アーカイブ成功', + }, + 透析处方组件: { + 透析机: '透析装置', + }, + 临时医嘱组件: { + 添加: '追加', + 执行: '実行', + }, + 监测记录组件: { + 获取联机数据: 'オンラインデータ取得', + 症状: '症状', + 处理: '処置', + 结果: '結果', + }, + 透后小结组件: { + AI生成小结: 'AIによる要約生成', + }, + 打印模板组件: { + 模板设置: 'テンプレート設定', + 设为默认样式: 'デフォルトスタイルに設定', + 默认模板: 'デフォルトテンプレート', + 公共模板: '共通テンプレート', + }, + 修改透析单状态组件: { + 修改透析单状态: '透析ステータスを変更', + 姓名: '氏名', + 状态: 'ステータス', + 取消: 'キャンセル', + 确认: '確認', + 未签到: '未チェックイン', + 已签到: 'チェックイン済み', + 透析中: '透析中', + 已结束: '終了済み', + 已检查: '確認済み', + 已归档: 'アーカイブ済み', + 操作成功: '操作成功', + }, + 透析记录日历视图组件: { + 透析记录日历视图: '透析記録カレンダービュー', + 姓名: '名前', + 透析号: '透析番号', + 性别: '性別', + 男: '男', + 女: '女', + 年龄: '年齢', + 未找到对应透析单: '対応透析単が見つからない', + 今天: '今日', + 月视图: '月ビュー', + 周视图: '週間ビュー', + 天视图: '日ビュー', + 列表: 'リスト', + 上午: '午前', + 下午: '午後', + 晚上: '夜', + }, + 透析单打印组件: { + 请耐心等待: 'お待ちください', + 正在加载: 'ロード中', + 第: '第', + 页: 'ページ', + 共: '共', + 血液净化治疗记录单预览: '血液浄化治療記録のプレビュー', + 请勾选您需要打印的患者: '印刷が必要な患者をチェックしてください', + 没有找到可以打印的透析单: '印刷可能な透析シートが見つかりませんでした', + }, + IOT联机数据组件: { + IOT联机数据: 'IOTオンラインデータ', + 时间: '時間', + 超滤量: '限外濾過量', + 置换量: '置換量', + 血流量: '血流量', + 静脉压: '静脈圧', + 跨膜压: '膜間圧', + 脱水率: '脱水率', + 透析液流速: '透析液の流速', + 透析液温度: '透析液温度', + 置换率: '置換率', + 动脉压: '動脈圧', + 电导度: 'コンダクタンス', + 取消: 'キャンセル', + 导出为EXCEL: "EXCEL'としてエクスポート", + 导出成功: 'エクスポート成功', + }, + 自查组件: { + 自查提示: '自己調査のヒント', + 模块: 'Modモジュール', + 自查描述: '自己調査の説明', + 操作: '操作', + 查看: '表示', + 取消: 'キャンセル', + 确认: '確認', + 临时医嘱: '臨時医師の指示', + 透前评估: '透前評価', + 透后小结: '透後小結', + 双人核对: 'ペアチェック', + 透后评估: '透後評価', + 透析监测: '透析モニタリング', + 透析单: '透析単', + }, + 患者最近检验结果组件: { + 患者最近检验结果: '患者の最近の検査結果', + 匹配失败请联系管理员: '一致に失敗しました。管理者に連絡してください', + 趋势: 'トレンド', + 标准值上限: '基準値上限', + 标准值下限: '基準値下限', + 系统异常请刷新后重试: 'システム異常、リフレッシュ後に再試行してください', + 请输入有效的日期: '有効な日付を入力してください', + 年: '年', + 月: '月', + }, + 修改记录组件: { + 修改记录: '変更レコード', + 序号: 'シーケンス番号', + 日期: '日付', + 修改字段: '変更フィールド', + 旧值: '古い値', + 新值: '新しい値', + 操作人: '操作者', + }, + 物品名称: '製品名', + 编辑血温: '血液温度の編集', + "签到": "チェックイン", + "溶栓":'溶血栓療法', + "开始溶栓":'溶血栓療法を開始する', + "确认溶栓":'この操作により、医師の指示以外のすべての操作権限が無効になります。同意いただけますか?', + "未签到": "未チェックイン", + "已签到": "チェックイン済", + "透析中": "透析中", + "已结束": "終了済", + "已下机": "機器離脱済", + "治疗中": "治療中", + "已检查": "検査済", + "已归档": "アーカイブ済", + "已自查": "自己確認済", + "患者信息": "患者情報", + "保存": "保存", + "干体重": "DW", + "衣物重": "衣類重量", + "称重方式": "測定方法", + "透前称重": "透析前測定", + "透前体重": "透析前体重", + "目标脱水": "目標脱水量", + "脱水百分比": "脱水率%", + "温度": "体温", + "呼吸": "呼吸数", + "脉搏": "脈拍", + "透后称重方式": "透析後測定方法", + "透后称重": "透析後測定", + "查询日期": "検索日", + "排班时段": "シフト時間帯", + "选择患者": "患者選択", + "医嘱名称": "医嘱名", + "是否核对": "確認有無", + "已核对": "確認済", + "未核对": "未確認", + "给药途径": "投与経路", + "是否只统计已签到的透析单": "チェックイン済みのみ集計", + "是否显隐藏患者自备药": "患者持参薬非表示", + "病区选择": "病棟選択", + "医嘱": "医嘱", + "统计": "集計", + "查询": "検索", + "医嘱确认": "医嘱確認", + "自定义打印": "カスタム印刷", + "自定义打印列": "印刷列設定", + "医嘱自定义打印列设置": "医嘱印刷列設定", + "分区": "ゾーン", + "年龄": "年齢", + "执行时间": "実施時間", + "备注": "備考", + "床号": "ベッド番号", + "时段": "期間", + 时段2: 'Masa', + "性别": "性別", + "透析方式": "透析方式", + "开嘱医生": "医嘱発行医", + "核对人员": "確認者", + "执行人员": "実施者", + "取消": "キャンセル", + "确定": "確定", + "打印勾选": "印刷選択", + "打印": "印刷", + "表单打印":'フォーム印刷', + "打印标签": "ラベル印刷", + "导出": "エクスポート", + "选择打印机": "プリンタ選択", + "合计": "合計", + "请选择排班患者": "シフト患者を選択", + "全部": "全て", + "全选": "全選択", + "请选择": "選択してください", + "开始日期": "開始日", + "结束日期": "終了日", + "是": "はい", + "否": "いいえ", + "NO": "NO", + "统计自定义打印列设置": "集計印刷列設定", + "当天": "当日", + "七天": "7日間", + "本月": "今月", + "三个月": "3ヶ月", + "该功能仅针对医嘱生效": "この機能は「医嘱」のみに適用されます", + "请至少选择一个您要打印的列": "印刷する列を選択してください", + "操作成功": "操作成功", + "没有查询到数据": "データなし", + "请先选择你要打印的医": "印刷する医嘱を選択してください", + "医嘱打印成功": "医嘱印刷完了", + "打印失败": "印刷失敗", + "请先选择你要操作的患者": "患者を選択してください!", + "没有勾选项": "選択なし", + "没有选择的医嘱项": "選択された医嘱なし", + "确认成功": "確認完了", + "选择排班日期": "シフト日を選択", + "查询时段": "検索時間帯", + "请选择查询时段": "時間帯を選択", + "统计方式": "集計方法", + "请选择统计方式": "集計方法を選択", + "请选择处方状态": "処方状態を選択", + "处方状态": "処方状態", + "患者查询": "患者検索", + "关键字查询": "患者名/拼音/キーワード", + "按物品类型统计": "物品タイプ集計", + "按物品规格统计": "仕様別集計", + "未确认": "未確認", + "已确认": "確認済", + "病区": "病棟", + "若需查询已删除全部病区数据请将该选项置于全未选状态": "削除済/全病棟検索時は全て未選択に", + "透析耗材准备打印设置": "透析消耗品準備印刷設定", + "打印透析器标签": "透析器ラベル印刷", + "打印治疗单": "治療シート印刷", + "透析耗材统计打印设置": "透析消耗品統計印刷設定", + "上机参数打印设置": "機器設定印刷設定", + "A4打印": "A4印刷", + "标签打印": "ラベル印刷", + "药品准备打印设置": "薬品準備印刷設定", + "药品统计打印设置": "薬品統計印刷設定", + "药品统计2打印设置": "薬品統計2印刷設定", + "请选择您要使用的打印机": "使用プリンタを選択", + "请选择查询日期": "検索日を選択", + "暂无可打印数据": "印刷データなし", + "请选择您要打印的数据": "印刷データを選択", + "透析耗材准备": "透析消耗品準備", + "透析耗材统计": "透析消耗品統計", + "上机参数": "機器設定", + "药品准备": "薬品準備", + "药品统计": "薬品統計", + "药品统计2": "薬品統計2", + "页面显示字段": "表示項目", + "人工肾": "人工腎", + "透析液流量": "透析液流量", + "钙": "カルシウム", + "葡萄糖": "ブドウ糖", + "血管通路": "血管路", + "穿刺针": "穿刺針", + "穿刺针型号": "穿刺針型番", + "一次性使用管路": "単回路チューブ", + "护理包": "ケアパック", + "浓缩液": "濃縮液", + "补液管": "補液チューブ", + "穿刺方式": "穿刺方法", + "穿刺针A": "穿刺針A", + "穿刺针V": "穿刺針V", + "日期": "日付", + "配药人": "調剤者", + "核对人": "確認者", + "物品类型": "物品タイプ", + "物品规格": "仕様", + "数量": "数量", + "透析器": "透析器", + "透析时长": "透析時間", + "剂量": "投与量(初回/追加/合計)", + "超滤总量": "総脱水量", + "透析号": "透析回数", + "目标脱水量": "目標脱水量", + "处方脱水量": "処方脱水量", + "透前血压": "透析前血圧", + "抗凝剂": "抗凝固剤", + "开药数量": "調剤数量", + "单次剂量": "単回量", + "药品名称": "薬品名", + "药品分类": "薬品分類", + "药品规格": "薬品仕様", + "是否确认处方": "処方確認有無", + "葡萄糖酸钙": "カルシウムグルコン酸", + 肝素钠注射液: "ヘパリンナトリウム注射液", + "骨化三醇": "骨化三醇", + "帕立骨化醇": "パリティアカルシトール", + "尿激酶": "尿キナーゼ", + "庆大霉素": "ゲンタマイシン", + "蔗糖铁": "サクシロサムフェロス", + "左卡尼汀": "左旋カルニチン", + "促红": "エポエチン", + "执行人": "実施者", + "患者来源": "患者属性", + "勾选打印": "選択印刷透析シート", + "批量归档": "一括アーカイブ", + "模板设置": "テンプレート設定", + "开始透析": "透析開始", + "结束透析": "透析終了", + "门诊": "外来", + "住院": "入院", + "转出患者": "転出患者", + "全部患者": "全患者", + "我负责的患者": "担当患者", + "打印模板设置": "印刷テンプレート", + "选择": "選択", + "预览": "プレビュー", + "透析护理包": "透析ケアパック", + "透析浓缩液": "透析濃縮液", + "血滤管": "血濾過チューブ", + "入科方式": "にゅうかほうほう", + "入科时间": "にゅうかじかん", + "出科方式": "しゅっかほうほう", + "出科时间": "しゅっかじかん", + "步行": "徒歩", + "扶行": "介助歩行", + "轮椅": "車いす", + "平床": "ベッド", + "床旁": "ベッドサイド", + "助行器": "歩行補助器", + "引血": "血液吸引", + "透析器编号": "透析器番号", + "穿刺护士": "穿刺ナース", + "换药护士": "処置ナース", + "穿刺": "穿刺", + "换药": "処置", + "预充管路": "予備充填チューブ", + "上机护士": "機器セットナース", + "治疗护士": "治療ナース", + "开始时间": "開始時間", + "正常": "正常", + "卧床": "ベッド", + "拒测": "測定拒否", + "找到指定透析单": "該当透析シートを検出,該当透析シート未検出時は選択をリセット", + "未匹配到指定透析单患者": "該当患者未検出時は選択をリセット", + "请勾选您需要打印的患者": "印刷する患者を選択", + "请勾选您需要归档的患者": "アーカイブする患者を選択", + "归档后透析范将无法修改": "アーカイブ後は変更不可です。実行しますか?", + "没有选中行": "選択されていません!", + "处方还没确认你确定要开始透析": "処方未確認ですが透析を開始しますか?", + "时间": "時間", + "下机护士": "機器離脱ナース", + "提示": "注意", + "回血": "血液戻し", + "手动HIS签到就诊": "手動HISチェックイン", + "叫号": "呼び出し", + "结束叫号": "呼び出し終了", + "确认": "確認", + "确认至患者信息": "患者情報に反映", + "删除": "削除", + "打印上机单": "機器設定シート印刷", + "打印透析单": "透析シート印刷", + "自查": "自己確認", + "归档": "アーカイブ", + "修改透析单状态": "透析シート状態変更", + "诊断": "診断", + "透析日期": "透析日", + "传染病": "感染症", + "首次透析日期": "初回透析日", + "透析次数": "透析回数", + "入院时间": "入院日", + "透析床号": "透析ベッド", + "透析大区": "ゾーン", + "门诊号": "外来番号", + "住院号": "入院番号", + "重新打印": "再印刷", + "透析处方": "透析処方", + "机型": "機器型", + "抗凝剂公式": "抗凝固剤式", + "自定义维持时长": "維持時間カスタム", + "首剂": "初回", + "维持": "維持", + "总量": "合計", + "钙名称": "カルシウム名称", + "钙剂量": '钙剂量', + "请输入时机": "タイミングを入力", + "追加": "追加", + "冲洗时间": "洗浄時間", + "冲洗量": "洗浄量", + "碳酸氢根": "重炭酸", + "处方钠": "処方ナトリウム", + "配方钠": "配合ナトリウム", + "调整": "調整", + "血滤器": "血濾過器", + "血透器": "血液透析器", + "通路类型": "血管路タイプ", + "置换总量": "置換総量", + "修改记录": "変更履歴", + "同步至透析方案": "透析シート同期", + "修改确认时间": "確認時間変更", + "置换方式": "置換方法", + "血流量": "血流速度", + "时长": "時間", + "钾": "カリウム", + "灌流器": "灌流器", + "处方脱水量格式错误": "脱水量形式エラー", + "处方已经确认了你确定要重新确认": "処方確認済みですが再確認しますか?", + "同步成功": "同期完了", + "同步失败": "同期失敗", + "没有选择透析单": "透析シート未選択", + "调整成功": "調整完了", + "确认要调整床号吗": "ベッド番号を変更しますか?", + "警告": "警告", + "确认要修改透析方案": "透析プランを変更しますか?", + "请选中透析单后再进行查询": "透析シートを選択してください", + "最近检验结果": "最新検査結果", + "上次透后体重": "前回透析後体重", + "上次透后称重": "前回透析後測定", + "血压": "血圧", + "尿量": "尿量", + 疼痛: '痛み', + "体温": "体温", + "预增脱水": "予測脱水", + "体重增加": "体重増加", + "同步": "同期", + "收缩压": "収縮期血圧", + "舒张压": "拡張期血圧", + "上肢": "上肢", + "下肢": "下肢", + "测不出": "測定不可", + "未测":'未テスト', + "前次透析后": "前回透析後", + "导管": "カテーテル", + "合并症": "合併症", + "内瘘": "動静脈瘻", + "透前症状": "透析前症状", + "签到时间": "チェックイン時間", + "修改签到时间": "チェックイン時間変更", + "请输入透前称重": "透析前体重を入力", + "请选择透前称重方式": "透析前測定方法を選択", + "请输入干体重": "乾燥体重を入力", + "请输入体温": "体温を入力", + "不详": "不明", + "请先签到后才能确认": "チェックイン後に確認できます", + "患者尚未签到是否继续确认保存": "患者未チェックインですが保存しますか?", + "表单明细没有验证通过": "項目検証エラー", + "签到时间修改成功": "チェックイン時間変更完了", + "确认要将此衣物重同步至该患者的所有透析方案下吗": "この衣類を当該患者のすべての透析計画及び未署名の透析票に再同期化するかどうかを確認しますか?", + "衣物重为空不能同步": "衣類重量未入力のため同期不可", + "透前评估自定义内容格式化出错了": "透析前評価フォーマットエラー", + "系统异常请刷新后重试": "システムエラー。再読み込み後再度実行", + "透前评估": "透析前評価", + "取消自定义": "カスタム解除", + "自定义": "カスタム設定", + "临时医嘱": "臨時医嘱", + "医嘱模板": "医嘱テンプレート", + "添加医嘱": "医嘱追加", + "修改医嘱": "医嘱変更", + "执行医嘱": "医嘱実施", + "修改": "変更", + "医嘱内容": "医嘱内容", + "没有选中要执行的医嘱": "実施する医嘱未選択", + "请勾选您需要批量执行的医嘱": "一括実施する医嘱を選択", + "请勾选您要修改的医嘱": "変更する医嘱を選択", + "仅支持单例修改请确保勾选的医嘱数量为1": "一括変更は1件のみ可能です", + "医嘱添加成功": "医嘱追加完了", + "执行医嘱成功": "医嘱実施完了", + "批量执行医嘱成功": "一括実施完了", + "请勾选您要删除的医嘱": "削除する医嘱を選択", + "请勾选您要打印的医嘱": "印刷する医嘱を選択", + "是否删除医嘱": "医嘱を削除しますか?", + "是否继续": "、続行しますか?", + "医嘱删除成功": "医嘱削除完了", + "当前操作的是": "現在操作中の", + "是否确认": "を確認しますか?", + "透析单": "透析シート", + "长期医嘱": "定期医嘱", + "医嘱类型": "医嘱タイプ", + "医嘱日期": "医嘱日", + "开单医生": "発行医", + "医嘱开始时间": "医嘱開始時間", + "选择日期": "日付選択", + "请选择开单医生": "発行医を選択", + "请选择医嘱名称": "医嘱名を選択", + "请输入单次用量": "単回量を入力", + "请输入开药数量": "調剤数量を入力", + "请选择给药途径": "投与経路を選択", + "请选择执行频率": "実施頻度を選択", + "请输入备注": "備考を入力", + "执行频率": "実施頻度", + "单次用量": "単回量", + "子药": "子薬", + "单独保存子药内容需要点击该按钮": "子薬のみ保存する場合はクリック", + "子药内容": "子薬内容", + "选择的医嘱项目": "選択された医嘱項目", + "医嘱项目": "医嘱項目", + "模板名称": "テンプレート名", + "添加": "追加", + "没有选择项": "選択されていません!", + "已经选择了当前项目": "既に選択されています!", + "执行": "実施", + "请选择核对人员": "確認者を選択", + "请选择执行医生": "実施医を選択", + "未选中批量执行医嘱": "一括実施未選択", + "护士": "ナース", + "医生": "医師", + "请选择开始时间": "開始時間を選択", + "收起": "閉じる", + "展开": "展開", + "添加子药": "子薬追加", + "请选择输入医嘱名称": "医嘱名を選択/入力", + "暂无子药": "子薬なし", + "删除子药": "子薬削除", + "透析物品检查": "透析物品検査", + "正确": "正常", + "差错": "異常", + "双人核对": "二人確認", + "透析器及管路无破损和过期": "透析器/チューブは未損傷/未期限", + "一次性透析管路": "単回路チューブ", + "回血用NS": "血液戻し用NS", + "请输入核对人密码验证": "確認者パスワードを入力", + "请输入密码": "パスワードを入力", + "核对时间": "確認時間", + "肝素补液口未双保险夹闭": "肝素補液口の二重固定未実施", + "管路有打折": "チューブの折れ曲がり有り", + "接口连接松动": "接続部緩み有り", + "压力传感器管夹未打开": "圧力センサー管の固定未解除", + "静脉管路未卡入保护夹": "静脈チューブ保護夹未装着", + "动静脉壶液面不标准": "動静脈ホルダー液面不適切", + "透析液连接错误": "透析液接続エラー", + "肝素管夹未开启": "肝素チューブ固定未解除", + "泵前补液侧管未夹": "ポンプ前補液側管未固定", + "管道连接核查": "チューブ接続検査", + "动静脉接错": "動静脈接続逆", + "渗血": "出血", + "压迫": "圧迫", + "折叠": "折り畳み", + "滑脱": "脱着", + "处方血流量": "処方血流速度", + "方案备注": "プラン備考", + "透析参数核查": "透析パラメータ検査", + "血管通路核查": "血管路検査", + "确认人不能为空": "確認者未入力不可", + "核对人密码验证识别": "確認者パスワード認証失敗", + "监测记录": "監視記録", + "导出IOT联机数据": "IoT接続データエクスポート", + "iot消息": "全ての機器がIoT対応ではありません. 接続中の機器のみエクスポート可能で、5分間隔のデータです", + "上": "上", + "下": "下", + "在线": "接続中", + "置换量": "置換量", + "置换率": "置換率", + "透析液温度": "透析液温度", + "电导度": "電導度", + "钠浓度": "ナトリウム濃度", + "超滤量": "脱水量", + "超滤率": "脱水率", + "跨膜压": "跨膜圧", + "动脉压": "動脈圧", + "静脉压": "静脈圧", + "添加监测记录": "監視記録追加", + "编辑监测记录": "監視記録編集", + "监测记录确认成功": "監視記録確認完了", + "请选择您要删除的监测记录": "削除する監視記録を選択", + "该患者暂无监测记录或监测记录小于两条": "患者の監視記録が不足しています", + "删除成功": "削除完了", + "上次监测": "前回監視", + "请选择监测护士": "監視ナースを選択", + "联机数据获取成功": "接続データ取得完了", + "超滤量类型应为数字": "脱水量は数値形式", + "超滤率类型应为数字": "脱水率は数値形式", + "距上次时间差为负数不能计算": "前回との時間差が負数不可", + "置换液量类型应为数字": "置換液量は数値形式", + "置换率类型应为数字": "置換率は数値形式", + "上次置换量无法取值不能计算": "前回置換量未取得不可", + "请检查收缩压舒张压是否正确": "収縮期/拡張期血圧を確認", + "请选择监测记录所属日期": "監視記録日を選択", + "所属日期": "記録日", + "监测时间": "監視時間", + "症状选项": "症状選択", + "结果描述": "結果説明", + "结果选项": "結果選択", + "处理描述": "処置説明", + "处理选项": "処置選択", + "症状描述": "症状説明", + "在线尿素": "オンライン尿素", + "血容量": "血容量", + "监测护士": "監視ナース", + "设置": "設定", + "置换液速率": "置換液速度", + "置换液量": "置換液量", + "是否忽略必填校验": "必須項目を無視", + "透后宣教": "透析後指導", + "宣教人": "指導者", + "透析小结": "透析要約", + "小结签名": "要約署名", + "签名": "署名", + "导出病程": "病程エクスポート", + " 自动生成小结": "要約自動生成", + "穿刺位点": "穿刺部位", + "穿刺方向": "穿刺方向", + "关闭": "閉じる", + "应用到小结": "要約に適用", + "重新生成": "再生成", + "请求中": "処理中", + "透后小结": "透析後要約", + "治疗医生": "担当医", + "智能推荐模版": "AI推奨テンプレート", + "智能推荐模板取消勾选已有选项": "既存選択を解除してAI推奨テンプレート", + "结束透析时间": "透析終了時間", + "凝血": "凝固", + "实际透析时长": "実際透析時間", + "提前下机": "早期機器離脱", + "症状处理结果": "症状処理結果", + "透后血压": "透析後血圧", + "体重减少": "体重減少", + "干体重达标": "乾燥体重達成", + "干体重是否调整": "乾燥体重調整有無", + "实际脱水量": "実際脱水量", + "透后体重": "透析後体重", + "透后评估": "透析後評価", + "实际超滤量": "実際脱水量", + "实际置换量": "実際置換量", + "透析中进食": "透析中食事", + "透析中输液": "透析中点滴", + "透析中输血": "透析中輸血", + "透析中冲管": "透析中チューブ洗浄", + "透后症状": "透析後症状", + "并发症": "併発症", + "透后衣物重": "透析後衣類重量", + "实际治疗时长": "実際治療時間", + "请输入": "を入力", + "校验不通过": "検証エラー", + "透后评估数据存在多项请联系管理员删除": "複数透析後評価データがあります。管理者に削除を依頼", + "透析单确认透后评估异常": "透析シート確認エラー", + "医生治疗小结": "医師治療要約", + "请输入医生治疗小结": "医師治療要約を入力", + " 自动生成完成": "自動生成完了", + "是否需要系统辅助生成小结": "要約をシステム生成しますか?", + "导出成功": "エクスポート完了", + "透析单code异常": "透析シートコードエラー", + "当前医生治疗小结存在多条数据": "複数医師要約データがあります。管理者に削除を依頼", + "保存子药": "子薬保存", + "结束时间": "終了時間", + "保存成功": "保存完了", + "提醒": "アラート", + "联机获取": "接続取得", + "计算": "計算", + "总": "合計", + "是否只展示最后一次结果": "最終結果のみ表示", + "默认查询全部": "全件表示", + "转归状态": "転帰状態", + "不限": "全て", + "在院": "在院", + "转出": "転出", + "未检测人员": "未検査者", + "检验日期": "検査日", + "患者姓名": "患者名", + "不达标": "未達", + "达标": "達成", + "标准值": "基準値", + "标准值设定": "基準値設定", + "控制率": "管理率", + "未检测人数": "未検査人数", + "不达标的患者人数": "未達患者数", + "达标患者人数": "達成患者数", + "铁蛋白": "フェリチン", + "血清铁蛋白": "血清フェリチン", + "超敏C反应蛋白": "超敏CRP", + "C反应蛋白": "CRP", + "动静脉内瘘生存率": "動静脈瘻存続率", + "甘油三酯": "トリグリセライド", + "甲状旁腺激素": "PTH", + "Kt/V": "Kt/V", + "URR": "URR", + "β2微球蛋白": "β2マクログロブリン", + "前白蛋白": "前アルブミン", + "总蛋白": "総蛋白", + "体重增长": "体重増加", + "尿素氮": "尿素窒素", + "尿酸": "尿酸", + "白蛋白": "アルブミン", + "血红蛋白": "ヘモグロビン", + "中性粒细胞百分比": "好中球百分率", + "血压控制": "血圧管理", + "转铁蛋白饱和度": "トランスフェリン飽和度", + "透析龄": "透析年数", + "主治医师": "担当医", + "BNP": "BNP", + 症状:'しょうじょう ', + 处理:'しょり ', + 结果:"けっか ", + 打印设置:'印刷設定', + "收缩压标准值设定": "収縮期血圧の基準値設定", + "舒张压标准值设定": "拡張期血圧の基準値設定", + "年龄标准值设定": "年齢の基準値設定", + "标准值仅可为大于等于0的数值": "基準値は0以上の数値のみ設定可能", + "标准值不能小于0": "基準値は0未満に設定できません", + 最近平均脱水量: '最近の平均脱水量', + 最近最大脱水量: '最近の最大脱水量', + 最近最大脱水量日期: '最終最大脱水量日付', + 单项合计: '単項合計', + '透前体重(kg)': '透過前体重(kg)', + '干体重(kg)': '乾体重(kg)', + '透前血压(mmHg)': '透前血圧(mmHg)', + '处方脱水量(L)': '処方脱水量(L)', + '目标脱水量(L)': '目標脱水量(L)', + '超滤总量(L)': '限外濾過総量(L)', + '剂量(首剂)(维持/追加)(总量)': '用量(首剤)(維持/追加)(総量)', + '透析时长(H)': '透析時間(H)', + 磷: 'りん', + 床位排序: 'ベッドのソート', + 签到排序: 'サインオンソート', + 透析号排序: '透析番号順', + 我的患者: '私の患者は', + 责护患者: '患者を看護する', + } +}; diff --git a/src/i18n/lang/ms.ts b/src/i18n/lang/ms.ts new file mode 100644 index 0000000..68f6685 --- /dev/null +++ b/src/i18n/lang/ms.ts @@ -0,0 +1,1212 @@ +export default { + router: { + xycskz:' Kadar Kawalan Tekanan Darah per Kejadian', + yaowuyonglaingtongji: 'Statistik Penggunaan Ubat', + Documentation: 'Bantuan Dalam Talian', + weinjianguanli:'文件管理', + home: 'Laman Utama', + lisApi: 'Antara Muka Lis', + patient: 'Pengurusan Pesakit', + HemodiPatients: 'Ringkasan Rekod Pesakit', + PatientFormDetails: 'Maklumat Pesakit', + PatientList: 'Senarai Pesakit', + outComeRecord: 'Rekod Keputusan', + wenshuguanli: 'Pengurusan Dokumen', + hemoMed: 'Pengurusan Dialisis', + bedView: 'Peta Katil', + QC: 'Kawalan Kualiti', + postQc: 'Laporan Kawalan Kualiti', + dataGlobalItem: 'Pangkalan Data Barang Dialisis', + weightRecord: 'Rekod Berat Badan', + xgtlQc: 'Klasifikasi Akses Vaskular', + yueXiaoJie: 'Ringkasan Bulanan', + yihupaiban: 'Penjadualan Perubatan & Jururawat', + yihuPaiban: 'Penjadualan', + paibanSet: 'Tetapan Penjadualan', + duibi: 'Perbandingan Kualiti Dialisis', + analyse: 'Analisis Kualiti', + statistics: 'Statistik Data Ujian', + hemoMedScheme: 'Skim Dialisis', + gongyinglian: 'Rantaian Bekalan', + datatongji: 'Statistik Data Ujian', + canPingDuiZhao: 'Penyelenggaraan Perbandingan Produk', + medicalHistory: 'Sejarah Perubatan Pesakit', + personalInfo: 'Maklumat Peribadi', + courseRecord: 'Rekod Perjalanan Penyakit', + physiqueCheck: 'Pemeriksaan Fizikal', + xiaodutongji: 'Statistik Pensterilan', + kidneyTest: 'Ujian Ginjal', + inspectors: 'Pemeriksaan & Ujian', + banbenweihu: 'Penyelenggaraan Versi', + dryWeight: 'Berat Kering', + rentichengfenfenxiyi: 'Penganalisis Komposisi Badan', + vascularAccess: 'Akses Vaskular', + paibanTongji: 'Penyiasatan Statistik', + ChroDisePatients: 'Pesakit Penyakit Kronik', + scheduling: 'Pengurusan Penjadualan', + jieduanxiaojie: 'Ringkasan Tahap', + NurseRostering: 'Penjadualan Jururawat', + PatientsWithScheduling: 'Penjadualan Pesakit', + scheduleTemplate: 'Templat Jadual', + DialysisRecord: 'Rekod Dialisis', + signIn: 'Daftar Masuk', + erjichuku: 'Pelepasan Gudang Tahap 2', + erjiCheck: 'Pemeriksaan Gudang', + fee: 'Bayaran', + feeOrder: 'Senarai Caj', + feeChufang: 'Preskripsi Pesakit Luar', + feeGroup: 'Penyelenggaraan Pakej Caj', + feeDict: 'Penyelenggaraan Item Caj', + erjikefangwf: 'Penyelenggaraan Gudang Tahap 2', + erjikufang: 'Gudang Tahap 2', + inventory2Query: 'Penyiasatan Gudang Tahap 2', + yiqikufang: 'Gudang Tahap 1', + weigh: 'Penimbangan Pendaftaran', + hzZaiYao: 'Ringkasan Bulanan', + signinJIlu: 'Rekod Pendaftaran', + zxlbfb: 'Kadar Kawalan Neutrofil', + xuedanbai: 'Kadar Kawalan Albumin Serum', + bingqingjilu: 'Rekod Status Penyakit', + zdykzl: 'Item Ujian Tersuai', + gai: 'Kadar Kawalan Kalsium', + jia: 'Kadar Kawalan Kalium', + jzxjs: 'Kadar Kawalan Hormon Paratiroid', + xhdb: 'Kadar Kawalan Hemoglobin', + ling: 'Kadar Kawalan Fosforus', + kfzdsz: 'Tetapan Kamus Gudang', + dialysisForm: 'Borang Dialisis', + KeshiQc: 'Kawalan Kualiti Jabatan', + doctorsAdvice: 'Arahan Perubatan Hari Ini', + TestItem: 'Penyelenggaraan Item Pemeriksaan', + prepare: 'Persediaan Dialisis', + jianyanQc: 'Pemeriksaan & Ujian', + monitor: 'Pemantauan Dialisis', + WorkStats: 'Statistik Beban Kerja', + Loglog: 'Log Penyerahan Tugas', + stockControl: 'Pengurusan Stok', + inventoryOperate: 'Pengurusan Inventori Masuk', + inventory2Operate: 'Pengurusan Inventori Masuk', + outStock: 'Pengurusan Pelepasan Stok', + storage: 'Pengurusan Inventori Masuk', + jymbdcl: 'Kadar Pencapaian Sasaran Ujian', + urrKzl: 'Kadar Kawalan URR', + fromStorage: 'Pengurusan Inventori', + StockSearch: 'Carian Inventori', + inventoryQuery: 'Carian Inventori Tahap 1', + inventoryCheck: 'Pemeriksaan Inventori', + Stocktaking: 'Pemeriksaan Inventori', + InventoryDictionary: 'Kamus Inventori', + touxiJilu: 'Rekod Dialisis', + HaoCaiTongji: 'Statistik Penggunaan Bahan', + jianyanDatatongji: 'Statistik Data Ujian', + zkpzfx: 'Analisis Kualiti Kawalan', + IDCzkpztj: 'Perbandingan Analisis Kualiti Dialisis IDC', + yaoPingTongJi: 'Statistik Ubat', + NurseWorkStats: 'Statistik Beban Kerja Jururawat', + DealerDictionary: 'Kamus Pengedar', + ManufacturerDic: 'Kamus Pengilang', + AiMenu: 'AI', + xinSuai: 'AI Ramalan Kegagalan Jantung', + xinSuaiTu: 'Trend Ramalan Kegagalan Jantung', + xinshuaiAi: 'Ramalan Kegagalan Jantung', + jiFengGuiZhe: 'Peraturan Mata Ganjaran', + patientAdmin: 'Pengurusan Pesakit', + MedicalAdvice: 'Arahan Perubatan', + diseaseDiagnosis: 'Diagnosis Pesakit', + diseaseDiagnosis2: 'Diagnosis Penyakit', + DictDiagnose: 'Kamus Diagnosis', + SchemeDic: 'Pelan Dialisis', + device: 'Peranti', + deviceAdmin: 'Pengurusan Peranti', + signMachine: 'Terminal Pendaftaran Layan Diri', + commServiceDevice: 'Status Perkakasan Terminal Layan Diri', + deviceInfo: 'Maklumat Asas', + deviceList: 'Senarai Peranti', + DisinfectionPlan: 'Pelan Pensterilan', + xiaodujilu:'Rekod Pensterilan', + xiaoduzidian:'Disinfection Dictionary Management', + deviceXiaodu:'Disinfeksi Peralatan', + useRegistration: 'Pendaftaran Penggunaan', + qc: 'Kawalan Kualiti', + pinggu: 'Penilaian Kateter Vena', + Work: 'Beban Kerja', + Maintenance: 'Penyelenggaraan & Pembaikan', + deviceGroup: 'Zon Peranti', + system: 'Sistem', + systemSet: 'Tetapan Sistem', + reportShow: 'Carian Laporan', + checkout: 'Pemeriksaan', + feeitem: 'Penyelenggaraan Item Caj', + jianchaxiangmu: 'Penyelenggaraan Item Ujian', + lisBarcode: 'Persampelan Pesakit Luar', + class: 'Klasifikasi Ujian', + lisOorder: 'Permohonan Ujian', + feeitemVsClass: 'Perbandingan Caj Klasifikasi Ujian', + basicsDic: 'Kamus Asas', + dialysisSet: 'Pengurusan Tetapan Dialisis', + userSet: 'Tetapan Tersuai Pengguna', + systemMenu: 'Pengurusan Menu', + systemRole: 'Pengurusan Peranan', + systemUser: 'Pengurusan Pengguna', + systemDept: 'Pengurusan Jabatan', + systemDic: 'Pengurusan Kamus', + drugDic: 'Kamus Ubat', + xgtlsj: 'Pendaftaran Insiden Akses Vaskular', + medicalOrderDrugTemplate: 'Templat Arahan Perubatan Ubat', + diseaseCourseTemplate: 'Templat Perjalanan Penyakit', + workDoneTemplate: 'Ringkasan Dialisis', + healthEducation: 'Pendidikan Kesihatan', + customDic: 'Kamus Tersuai', + clientsAdmin: 'Pengurusan Pelanggan', + limits: 'Pengurusan Kebenaran', + limitsFrontEnd: 'Kawalan Had Hadapan', + limitsFrontEndPage: 'Kebenaran Halaman', + limitsFrontEndBtn: 'Kebenaran Butang', + limitsBackEnd: 'Kawalan Had Belakang', + limitsBackEndEndPage: 'Kebenaran Halaman', + menu: 'Sarang Menu', + menu1: 'Menu 1', + menu11: 'Menu 11', + menu12: 'Menu 12', + menu121: 'Menu 121', + menu122: 'Menu 122', + menu13: 'Menu 13', + menu2: 'Menu 2', + funIndex: 'Fungsi', + funTagsView: 'Operasi tagsView', + funCountup: 'Penggulungan Nombor countup', + funEchartsTree: 'Carta Pokok echartsTree', + funSelector: 'Pemilih Ikon', + funNoticeBar: 'Bar Pemberitahuan Bergulir', + funWangEditor: 'Penyunting wangEditor', + funCropper: 'Pangkas Gambar cropper', + funQrcode: 'Penjanaan Kod QR', + funEchartsMap: 'Koordinat Geografi/Peta', + funPrintJs: 'Cetakan Halaman', + baogaochaxun: 'Laporan Item Ujian', + funClipboard: 'Salin & Tampal', + funScreenShort: 'Tangkapan Skrin Web Tersuai', + funGridLayout: 'Tata Letak Seret', + funSplitpanes: 'Pemisah Panel', + funDragVerify: 'Pengesah Seret', + pagesIndex: 'Halaman', + pagesFiltering: 'Komponen Penapisan', + pagesFilteringDetails: 'Butiran Komponen Penapisan', + pagesFilteringDetails1: 'Butiran Komponen Penapisan 111', + pagesIocnfont: 'Ikon Font iconfont', + pagesElement: 'Ikon Font Element', + pagesAwesome: 'Ikon Font Awesome', + pagesCityLinkage: 'Pautan Berbilang Tahap Bandar', + pagesFormAdapt: 'Borang Penyesuaian', + pagesFormI18n: 'Borang Antarabangsa', + pagesFormRules: 'Pengesahan Pelbagai Borang', + pagesDynamicForm: 'Borang Kompleks Dinamik', + pagesWorkflow: 'Aliran Kerja', + pagesListAdapt: 'Senarai Penyesuaian', + pagesWaterfall: 'Paparan Air Terjun', + pagesSteps: 'Bar Langkah', + pagesPreview: 'Pratonton Imej Besar', + pagesWaves: 'Kesan Gelombang', + pagesTree: 'Jadual Pokok', + pagesDrag: 'Arahan Seret', + pagesLazyImg: 'Pemalasan Muat Imej', + paramsIndex: 'Parameter Laluan', + paramsCommon: 'Laluan Biasa', + paramsDynamic: 'Laluan Dinamik', + paramsCommonDetails: 'Butiran Laluan Biasa', + paramsDynamicDetails: 'Butiran Laluan Dinamik', + chartIndex: 'Carta Data Besar', + visualizingIndex: 'Visualisasi Data', + visualizingLinkDemo1: 'Demonstrasi Visualisasi Data 1', + visualizingLinkDemo2: 'Demonstrasi Visualisasi Data 2', + personal: 'Pusat Peribadi', + tools: 'Koleksi Alat', + layoutLinkView: 'Pautan Luar', + layoutIfameView: 'Terbenam iframe', + images: 'Pengimejan', + imagesIndex: 'Pengimejan', + disinfection: 'Disinfeksi', + disinfectionIndex: 'Disinfeksi', + patientTestingTrend: 'Trend Ujian Pesakit', + bloodProteinTrend: 'Trend Albumin', + hemoglobin: 'Trend Hemoglobin', + urr: 'Trend URR', + BNP: 'Kadar Kawalan BNP', + ktv: 'Trend Kt/V', + statistics2: 'Statistik', + inspect: 'Pemeriksaan', + inspectionControlRate: 'Kadar Kawalan Pemeriksaan', + inspectionTrend: 'Trend Pemeriksaan', + analysisDialysisQuality: 'Analisis Kualiti Dialisis', + dataConversion: 'Penukaran Data', + groupCustomerComparison: 'Perbandingan Pelanggan Kumpulan', + hisSetUp: 'Tetapan HIS', + barcodePrintingSettings: 'Tetapan Cetakan Kod Bar', + backendReportManagement: 'Pengurusan Laporan Backend', + outpatientRecords: 'Rekod Pesakit Luar', + inventoryMonitoring: 'Pemantauan Inventori', + inventoryPurchaseAndSales: 'Pembelian dan Penjualan Inventori', + checkData: 'Pemeriksaan Data', + barcodePrinting: 'Cetakan Kod Bar', + secondaryOutboundStatistics: 'Statistik Pengeluaran Sekunder', + automaticOutboundManagement: 'Pengurusan Pengeluaran Automatik', + inspectionOutsourcing: 'Pemeriksaan Outsourcing', + tdbkzl: 'Kadar Kawalan Ferritin Serum', + cmcfybdb: 'Protein C-reaktif Ultrasensitif', + gysz: 'Kadar Kawalan Trigliserida', + tdb: 'Kadar Kawalan Ferritin', + ticket: 'Tiket Kerja', + maintenanceDialysate: 'Penyelenggaraan Cecair Dialisis', + ktvkzl: 'Kadar Kawalan Kt/V', + tzkzl: 'Kadar Kawalan Pertambahan Berat Badan', + xykz: 'Kadar Kawalan Tekanan Darah', + ztdbbhdkzl: 'Kadar Kawalan Ketepuan Transferrin', + p2wqdbkzl: 'Kadar Kawalan Beta-2 Mikroglobulin', + patientAssessment: 'Penilaian Pesakit', + slippage: 'Penilaian peralihan paip', + djmnlsclKzl: 'Kadar Kawalan Kemandirian Fistula Arteriovenous', + patientsNumTongJi: 'Statistik Bilangan Pesakit di Hospital', + dialysisQualityStatistics: 'Statistik Kualiti Dialisis', + prescriptionInquiry: 'Pertanyaan Preskripsi', + inspectionDataStatistics: 'Statistik Data Pemeriksaan', + annualIndicatorControlRate: 'Kadar Kawalan Penunjuk Tahunan', + weightGainControlDuringDialysis: 'Kadar Kawalan Pertambahan Berat Badan Semasa Dialisis', + dialyzerStatistics: 'Statistik Umur Dialisis', + earlyShutdownStatistics: 'Statistik Penamatan Awal', + patientBirthdayCalendar: 'Kalendar Hari Lahir Pesakit', + stageSummary: 'Ringkasan Peringkat', + patientPathologicalDiagnosis: 'Diagnosis Patologi Pesakit', + cReactiveProteinControlRate: 'Kadar Kawalan Protein C-reaktif', + ktvQuery: 'Pertanyaan Kt/V', + urrQuery: 'Pertanyaan URR', + patientVascularAccessStatistics: 'Statistik Akses Vaskular Pesakit', + supplementaryExamination: 'Pemeriksaan Tambahan', + qualityControlReport: 'Laporan Kawalan Kualiti', + infectiousDiseaseControlRate: 'Kadar Kawalan Penyakit Berjangkit', + hypertensionControlRate: 'Kadar Kawalan Hipertensi', + // qualityControlReport: '质控报表', + footCare: 'Pengurusan Penjagaan Kaki', + totalProtein: 'Kadar Kawalan Protein Total', + Prealbumin: 'Kadar Kawalan Prealbumin', + uricAcid: 'Kadar Kawalan Asid Urik', + ureaNitrogen: 'Kadar Kawalan Nitrogen Urea', + monthlyStatisticsOfDialysisFrequencyForPatients: 'Statistik Bulanan Kekerapan Dialisis Pesakit', + dailyDialysisConsumptionDetails: 'Perincian Penggunaan Harian Dialisis', + inspectionReport: "Laporan pemeriksaan", + infectionControlEarlyWarning: 'Amaran Awal Kawalan Jangkitan Hospital', + CACertification: 'CA Pengesahan', + 医院报表管理: "Pengurusan Laporan", + 压力性损伤评估: 'Penilaian Kecederaan Tekanan', + 跌倒评估: 'Penilaian Risiko Jatuh', + 院感门诊: 'Klinik Luar Hospital untuk Kawalan Jangkitan', + secondaryCcreenVersionControl: 'Kawalan versi skrin sampingan', + }, + staticRoutes: { + signIn: 'Log Masuk', + notFound: 'Halaman Tidak Dijumpai', + noPower: 'Tiada Kebenaran', + }, + user: { + title0: 'Saiz Komponen', + title1: 'Tukar Bahasa', + title2: 'Carian Menu', + title3: 'Konfigurasi Layout', + title4: 'Mesej', + title5: 'Aktifkan Skrin Penuh', + title6: 'Matikan Skrin Penuh', + dropdownDefault: 'Lalai', + dropdownMedium: 'Sederhana', + dropdownSmall: 'Kecil', + dropdownMini: 'Super Kecil', + dropdown1: 'Halaman Utama', + dropdown2: 'Pusat Peribadi', + dropdown3: '404', + dropdown4: '401', + dropdown5: 'Log Keluar', + dropdown6: 'Repositori Kod', + searchPlaceholder: 'Carian Menu: Menyokong Bahasa Cina, Laluan Router', + newTitle: 'Notifikasi', + newBtn: 'Semua Telah Dibaca', + newGo: 'Pergi ke Pusat Notifikasi', + newDesc: 'Tiada Notifikasi', + logOutTitle: 'Pemberitahuan', + logOutMessage: 'Tindakan ini akan mengeluarkan anda, adakah anda pasti ingin meneruskan?', + logOutConfirm: 'Sahkan', + logOutCancel: 'Batal', + logOutExit: 'Keluar', + logOutSuccess: 'Keluar dengan selamat!', + 测试环境哦: 'Persekitaran Ujian!', + 工单: 'Tiket Kerja', + 请输入关键字: 'Sila masukkan kata kunci', + 关于: 'Tentang', + 帮助: 'Bantuan', + 取消: 'Batal', + 确认: 'Sahkan', + 我的工单: 'Tiket Kerja Saya', + 添加工单: 'Tambah Tiket Kerja', + 提交日期: 'Tarikh Hantar', + 工单内容: 'Kandungan Tiket', + 状态: 'Status', + 已办结: 'Selesai', + 已提交: 'Dihantar', + 回复时间: 'Masa Balasan', + 回复内容: 'Kandungan Balasan', + 操作: 'Tindakan', + 查看: 'Lihat', + 暂不不支持全屏: 'Skrin Penuh Tidak Disokong Buat Masa Ini', + 完整版本: 'Versi Lengkap', + 发布版本: 'Versi Diterbitkan', + 当前患者信息: 'Maklumat Pesakit Semasa', + 姓名: 'Nama', + 透析号: 'Nombor Dialisis', + 暂无: 'Tiada', + }, + tagsView: { + refresh: 'Segarkan', + close: 'Tutup', + closeOther: 'Tutup Lain-lain', + closeAll: 'Tutup Semua', + fullscreen: 'Skrin Penuh Halaman Semasa', + closeFullscreen: 'Tutup Skrin Penuh', + }, + notFound: { + foundTitle: 'Alamat dimasukkan salah, sila masukkan alamat semula~', + foundMsg: 'Anda boleh semak URL terlebih dahulu, kemudian masukkan semula atau berikan maklum balas kepada kami.', + foundBtn: 'Kembali ke Halaman Utama', + notFoundTitle: 'Tiada kebenaran atau alamat tidak wujud', + }, + noAccess: { + accessTitle: 'Anda tidak diberi kebenaran, tiada hak untuk melakukan operasi~', + accessMsg: 'Maklumat hubungan: Sertai kumpulan QQ untuk perbincangan 665452019', + accessBtn: 'Beri Kebenaran Semula', + }, + layout: { + configTitle: 'Konfigurasi Susun Atur', + oneTitle: 'Tema Global', + twoTitle: 'Menu / Bar Atas', + twoTopBar: 'Latar Belakang Bar Atas', + twoMenuBar: 'Latar Belakang Menu', + twoColumnsMenuBar: 'Latar Belakang Menu Kolumn', + twoTopBarColor: 'Warna Fon Default Bar Atas', + twoMenuBarColor: 'Warna Fon Default Menu', + twoColumnsMenuBarColor: 'Warna Fon Default Menu Kolumn', + twoIsTopBarColorGradual: 'Gradien Latar Belakang Bar Atas', + twoIsMenuBarColorGradual: 'Gradien Latar Belakang Menu', + twoIsColumnsMenuBarColorGradual: 'Gradien Latar Belakang Menu Kolumn', + twoIsMenuBarColorHighlight: 'Sorotan Latar Belakang Fon Menu', + threeTitle: 'Tetapan Antaramuka', + threeIsCollapse: 'Susut Menu Secara Mendatar', + threeIsUniqueOpened: 'Menu Akordion', + threeIsFixedHeader: 'Header Tetap', + threeIsClassicSplitMenu: 'Menu Split Susun Atur Klasik', + threeIsLockScreen: 'Aktifkan Kunci Skrin', + threeLockScreenTime: 'Masa Kunci Skrin Automatik(s/saat)', + fourTitle: 'Paparan Antaramuka', + fourIsShowLogo: 'Logo Bar Sisi', + fourIsBreadcrumb: 'Aktifkan Breadcrumb', + fourIsBreadcrumbIcon: 'Aktifkan Ikon Breadcrumb', + fourIsTagsview: 'Aktifkan Tagsview', + fourIsTagsviewIcon: 'Aktifkan Ikon Tagsview', + fourIsCacheTagsView: 'Aktifkan Cache TagsView', + fourIsSortableTagsView: 'Aktifkan Seret TagsView', + fourIsShareTagsView: 'Aktifkan Kongsi TagsView', + fourIsFooter: 'Aktifkan Footer', + fourIsGrayscale: 'Mod Kelabu', + fourIsInvert: 'Mod Kelemahan Warna', + fourIsDark: 'Mod Gelap', + fourIsWartermark: 'Aktifkan Tanda Air', + fourWartermarkText: 'Teks Tanda Air', + fiveTitle: 'Tetapan Lain', + fiveTagsStyle: 'Gaya Tagsview', + fiveAnimation: 'Animasi Penukaran Laman Utama', + fiveColumnsAsideStyle: 'Gaya Sorotan Kolumn', + fiveColumnsAsideLayout: 'Gaya Susun Atur Kolumn', + sixTitle: 'Tukar Susun Atur', + sixDefaults: 'Default', + sixClassic: 'Klasik', + sixTransverse: 'Mendatar', + sixColumns: 'Kolumn', + tipText: 'Klik butang di bawah untuk menyalin konfigurasi susun atur ke dalam `src/store/modules/themeConfig.ts` untuk diubah.', + copyText: 'Salin Konfigurasi Dengan Satu Klik', + resetText: 'Pulihkan Default Dengan Satu Klik', + copyTextSuccess: 'Salinan Berjaya!', + copyTextError: 'Salinan Gagal!', + title: 'Platform Pengurusan Hemodialisis', + "全部": "Semua", + "留治": "Rawatan Dalaman", + "转出": "Dirujuk Keluar", + "选择机号": "Pilih Nombor Mesin", + "选择患者": "Pilih Pesakit" + }, + 透析单: { + 处方还没确认你确定要双人核对: 'Preskripsi belum mengesahkan bahawa anda pasti memeriksa dua orang', + 血温: 'Suhu darah', + 全天: 'Sepanjang Hari', + 上午: 'Pagi', + 下午: 'Petang', + 晚上: 'Malam', + 刷新: 'Segarkan', + 姓名: 'Nama', + 状态: 'Status', + 班次: 'Sesi', + 排班: 'Jadual', + 批量打印: 'Cetak Secara Pukal Satuan dialisis', + 请选择您需要打印的患者: 'Sila pilih pesakit yang ingin dicetak', + 变更记录: 'Rekod Perubahan', + 批量打印组件: { + '批量打印': 'Cetak Secara Pukal', + 患者姓名: 'Nama Pesakit', + 请选择: 'Sila Pilih', + 透析号: 'Nombor Dialisis', + 透析日期: 'Tarikh Dialisis', + 开始时间: 'Masa Mula', + 结束时间: 'Masa Tamat', + 是否重新生成报表: 'Adakah anda mahu jana semula laporan?', + 取消: 'Batal', + 打印: 'Cetak', + 血液净化治疗记录单预览: 'Pratonton Rekod Rawatan Pembersihan Darah', + 请耐心等待正在加载: 'Sila tunggu sebentar, sedang dimuatkan', + 第: 'Halaman', + 页: '', + 预计: 'Anggaran', + 共: 'Jumlah', + 透析单日期不能为空: 'Tarikh dialisis tidak boleh kosong', + 没有可以打印的透析单: 'Tiada rekod dialisis untuk dicetak', + }, + 患者信息组件: { + 治疗病区: 'Kawasan rawatan', + 住院病区: 'Kawasan hospital', + 病区: 'Wad', + 住院门诊: 'Pesakit Dalam / Luar', + 的: 'yang', + 上机单已经打印了: 'Penerbangan sudah dicetak', + 你确定还要重新打印: 'Adakah anda pasti mahu mencetak semula?', + 男: 'lelaki', + 女: 'perempuan', + 门诊: 'Klinik luar', + 住院: 'Rumah Sakit', + 号: 'No', + 门诊号: 'nombor klinik', + 住院号: 'Nombor Rumah Sakit', + 没有找到选中日期的透析单: 'Tiada dialis untuk tarikh yang dipilih ditemui', + 上午: 'pagi', + 下午: 'petang', + 晚上: 'Malam hari', + 透析单编号为空请刷新后重试: 'Nombor dialisis kosong, sila segerakan dan cuba semula', + 此操作将对: 'Tindakan ini akan betul', + 进行手动HIS签到就诊操作是否确定: 'Adakah ia pasti untuk menjalankan operasi tanda tangan HIS ke kunjungan?', + 提示: 'Petua', + 确定: 'pasti', + 取消: 'Batalkan', + 操作成功: 'Operasi berjaya', + 开始叫号: 'Mulakan panggilan', + 结束叫号: 'Akhir panggilan', + 下机: 'Keluar', + 此操作将会同步修改患者快照是否确认: 'Tindakan ini akan disegerakkan untuk mengubah suai gambar pesakit, disahkan? ', + 是否要删除: 'sama ada untuk memadamkan', + 的透析单: 'unit dialisis', + 警告: 'Amaran', + 删除成功: 'Pemadaman berjaya', + 已发送打印上机单任务: 'Tugas satu cetak dihantar', + 自查成功: 'Penyelidikan Kejayaan', + 归档后透析单将无法修改您确定要归档: 'Dialis selepas diarkib tidak akan dapat diubah suai, anda pasti ingin diarkib? ', + 归档成功: 'Arkib berjaya', + }, + 透析处方组件: { + 透析机: 'Mesin Dialisis', + }, + 临时医嘱组件: { + 添加: 'Tambah', + 执行: 'Laksana', + }, + 监测记录组件: { + 获取联机数据: 'Dapatkan Data Dalam Talian', + 症状: 'Gejala', + 处理: 'Rawatan', + 结果: 'Keputusan', + }, + 透后小结组件: { + AI生成小结: 'Ringkasan Dihasilkan oleh AI', + }, + 打印模板组件: { + 模板设置: 'Tetapan Templat', + 设为默认样式: 'Tetapkan sebagai Gaya Lalai', + 默认模板: 'Templat Lalai', + 公共模板: 'Templat Awam', + }, + 修改透析单状态组件: { + 修改透析单状态: 'Ubah Status Dialisis', + 姓名: 'Nama', + 状态: 'Status', + 取消: 'Batal', + 确认: 'Sahkan', + 未签到: 'Belum Daftar', + 已签到: 'Telah Daftar', + 透析中: 'Sedang Dialisis', + 已结束: 'Telah Selesai', + 已检查: 'Telah Semak', + 已归档: 'Telah Arkib', + 操作成功: 'Operasi Berjaya', + }, + 透析记录日历视图组件: { + 透析记录日历视图: 'Pandangan kalendar rekod dialisis', + 姓名: 'Nama', + 透析号: 'nombor dialisis', + 性别: 'Seks', + 男: 'lelaki', + 女: 'perempuan', + 年龄: 'Umur', + 未找到对应透析单: 'Tiada dialisis yang sepadan ditemui', + 今天: 'Hari ini', + 月视图: 'Pandangan Bulan', + 周视图: 'pandangan minggu', + 天视图: 'pandangan hari', + 列表: 'senarai', + 上午: 'pagi', + 下午: 'petang', + 晚上: 'Malam hari', + }, + 透析单打印组件: { + 请耐心等待: 'Sila bersabar', + 正在加载: 'Memuatkan', + 第: 'Keputusan', + 页: 'halaman', + 共: 'keseluruhan', + 血液净化治疗记录单预览: 'Pratinjauan rekod rawatan pembersihan darah', + 请勾选您需要打印的患者: 'Tanda pesakit yang anda perlu cetak', + 没有找到可以打印的透析单: 'Tiada talian dijumpai untuk dicetak', + }, + IOT联机数据组件: { + IOT联机数据: 'Data dalam talian IOT', + 时间: 'masa', + 超滤量: 'Penapisan Ekstra', + 置换量: 'jumlah penggantian', + 血流量: 'aliran darah', + 静脉压: 'tekanan vena', + 跨膜压: 'tekanan transmembran', + 脱水率: 'kadar dehidrasi', + 透析液流速: 'kelajuan aliran cairan dialisis', + 透析液温度: 'suhu cairan dialisis', + 置换率: 'Kadar penggantian', + 动脉压: 'tekanan arteri', + 电导度: 'Penganduran elektrik', + 取消: 'Batalkan', + 导出为EXCEL: 'Eksport sebagai Excel', + 导出成功: 'Eksport berjaya', + }, + 自查组件: { + 自查提示: 'Petua Periksa Diri', + 模块: 'Modul', + 自查描述: 'Penerangan Periksaan Diri', + 操作: 'Operas', + 查看: 'Lihat', + 取消: 'Batalkan', + 确认: 'mengesahkan', + 临时医嘱: 'Surat Doktor Sementara', + 透前评估: 'Penilaian sebelum penelusuran', + 透后小结: 'Penyusunan belakang', + 双人核对: 'pengesahan ganda', + 透后评估: 'Penilaian selepas', + 透析监测: 'Pemantauan dialisis', + 透析单: 'unit dialisis', + }, + 患者最近检验结果组件: { + 患者最近检验结果: 'Hasil Ujian Terbaru-baru ini Pesakit', + 匹配失败请联系管理员: 'Perpadanan gagal, sila hubungi pentadbir', + 趋势: 'Trend', + 标准值上限: 'Had atas nilai standard', + 标准值下限: 'Had bawah nilai standard', + 系统异常请刷新后重试: 'Sistem tidak normal, sila segerakan dan cuba semula', + 请输入有效的日期: 'Sila masukkan tarikh yang sah', + 年: 'tahun', + 月: 'bulan', + }, + 修改记录组件: { + 修改记录: 'mengubah suai rekod', + 序号: 'nombor siri', + 日期: 'Tarikh', + 修改字段: 'ubah ubah medan', + 旧值: 'nilai lama', + 新值: 'nilai baru', + 操作人: 'Pengendali', + }, + 物品名称: 'Nama Barang', + 编辑血温: 'Edit Suhu Darah', + 签到: 'Daftar Masuk', + 溶栓: 'Terapi trombolisis', + 开始溶栓: 'Mulai terapi trombolisis', + 确认溶栓: 'Operasi ini akan menonaktifkan semua izin operasi kecuali perintah medis. Apakah Anda setuju?', + 未签到: 'Belum Daftar Masuk', + 已签到: 'Sudah Daftar Masuk', + 透析中: 'Sedang Dialisis', + 已结束: 'Selesai', + 已下机: 'Telah Menamatkan Rawatan', + 治疗中: 'Sedang Rawatan', + 已检查: 'Telah Diperiksa', + 已归档: 'Telah Diarkibkan', + 已自查: 'Telah Memeriksa Sendiri', + 患者信息: 'Maklumat Pesakit', + 保存: 'Simpan', + 干体重: 'Berat Kering', + 衣物重: 'Berat Pakaian', + 称重方式: 'Kaedah Penimbangan', + 透前称重: 'Berat Sebelum Dialisis', + 透前体重: 'Berat Sebelum Dialisis', + 目标脱水: 'Sasaran Dehidrasi', + 脱水百分比: 'Peratus Dehidrasi', + 温度: 'Suhu', + 呼吸: 'Pernafasan', + 脉搏: 'Nadi', + 透后称重方式: 'Kaedah Penimbangan Selepas Dialisis', + 透后称重: 'Berat Selepas Dialisis', + 查询日期: 'Tarikh Carian', + 排班时段: 'Tempoh Jadual', + 选择患者: 'Pilih Pesakit', + 医嘱名称: 'Nama Arahan Perubatan', + 是否核对: 'Adakah Semakan Dilakukan', + 已核对: 'Sudah Disemak', + 未核对: 'Belum Disemak', + 给药途径: 'Kaedah Pemberian Ubat', + 是否只统计已签到的透析单: 'Adakah Hanya Menyusun Data Dialisis Pesakit Yang Sudah Daftar Masuk', + 是否显隐藏患者自备药: 'Adakah Memaparkan Ubat Pesakit Sendiri', + 病区选择: 'Pemilihan Wad', + 医嘱: 'Arahan Perubatan', + 统计: 'Statistik', + 查询: 'Cari', + 医嘱确认: 'Sahkan Arahan Perubatan', + 自定义打印: 'Cetakan Disesuaikan', + 自定义打印列: 'Laen Cetakan Disesuaikan', + 医嘱自定义打印列设置: 'Tetapan Cetakan Disesuaikan untuk Arahan Perubatan', + 分区: 'Bahagian', + 年龄: 'Umur', + 执行时间: 'Masa Pelaksanaan', + 备注: 'Nota', + 床号: 'Nombor Katil', + 时段: 'Tempoh', + 时段2: 'Masa', + 性别: 'Jantina', + 透析方式: 'Kaedah Dialisis', + 开嘱医生: 'Doktor Pengarah Arahan', + 核对人员: 'Personel Semakan', + 执行人员: 'Personel Pelaksanaan', + 取消: 'Batal', + 确定: 'Sahkan', + 打印勾选: 'Cetak Pilihan', + 打印: 'Cetak', + 表单打印:'Cetak formulir', + 打印标签: 'Cetak Label', + 导出: 'Eksport', + 选择打印机: 'Pilih Pencetak', + 合计: 'Jumlah', + 请选择排班患者: 'Sila Pilih Pesakit untuk Jadual', + 全部: 'Semua', + 全选: 'Pilih Semua', + 请选择: 'Sila Pilih', + 开始日期: 'Tarikh Mula', + 结束日期: 'Tarikh Tamat', + 是: 'Ya', + 否: 'Tidak', + NO: 'TIDAK', + 统计自定义打印列设置: 'Tetapan Cetakan Disesuaikan Statistik', + 当天: 'Hari Ini', + 七天: '7 Hari', + 本月: 'Bulan Ini', + 三个月: 'Tiga Bulan', + 该功能仅针对医嘱生效: 'Fungsi Ini Hanya Berkesan untuk Arahan Perubatan', + 请至少选择一个您要打印的列: 'Sila Pilih Sekurang-kurangnya Satu Laen untuk Dicetak', + 操作成功: 'Tindakan Berjaya', + 没有查询到数据: 'Tiada Data Ditemui', + 请先选择你要打印的医: 'Sila Pilih Arahan Perubatan untuk Dicetak', + 医嘱打印成功: 'Cetakan Arahan Perubatan Berjaya', + 打印失败: 'Cetakan Gagal', + '请先选择你要操作的患者!': 'Sila Pilih Pesakit untuk Tindakan Anda!', + 没有勾选项: 'Tiada Pilihan yang Dicentang', + 没有选择的医嘱项: 'Tiada Arahan Perubatan Yang Dipilih', + 确认成功: 'Pengesahan Berjaya', + 选择排班日期: 'Pilih Tarikh Jadual', + 查询时段: 'Tempoh Carian', + 请选择查询时段: 'Sila Pilih Tempoh Carian', + 统计方式: 'Kaedah Statistik', + 请选择统计方式: 'Sila Pilih Kaedah Statistik', + 请选择处方状态: 'Sila Pilih Status Preskripsi', + 处方状态: 'Status Preskripsi', + 患者查询: 'Carian Pesakit', + 关键字查询: 'Nama Pesakit / Kod Pinyin / Kata Kunci', + 按物品类型统计: 'Statistik Mengikut Jenis Barangan', + 按物品规格统计: 'Statistik Mengikut Spesifikasi Barangan', + 未确认: 'Belum Disahkan', + 已确认: 'Sudah Disahkan', + 病区: 'Wad', + 若需查询已删除全部病区数据请将该选项置于全未选状态: 'Jika Anda perlu mencari data wad yang telah dipadam, sila nyahpilih semua pilihan ini', + 透析耗材准备打印设置: 'Tetapan Cetakan Bahan Dialisis', + 打印透析器标签: 'Cetak Label Dialiser', + 打印治疗单: 'Cetak Dokumen Rawatan', + 透析耗材统计打印设置: 'Tetapan Cetakan Statistik Bahan Dialisis', + 上机参数打印设置: 'Tetapan Cetakan Parameter Mesin Dialisis', + A4打印: 'Cetak A4', + 标签打印: 'Cetak Label', + 药品准备打印设置: 'Tetapan Cetakan Persediaan Ubat', + 药品统计打印设置: 'Tetapan Cetakan Statistik Ubat', + 药品统计2打印设置: 'Tetapan Cetakan Statistik Ubat 2', + 请选择您要使用的打印机: 'Sila Pilih Pencetak Yang Ingin Digunakan', + 请选择查询日期: 'Sila Pilih Tarikh Carian', + 暂无可打印数据: 'Tiada Data Yang Boleh Dicetak', + 请选择您要打印的数据: 'Sila Pilih Data Yang Ingin Dicetak', + 透析耗材准备: 'Persediaan Bahan Dialisis', + 透析耗材统计: 'Statistik Bahan Dialisis', + 上机参数: 'Parameter Mesin Dialisis', + 药品准备: 'Persediaan Ubat', + 药品统计: 'Statistik Ubat', + 药品统计2: 'Statistik Ubat 2', + 页面显示字段: 'Medan Paparan Laman', + 人工肾: 'Ginjal Buatan', + 透析液流量: 'Aliran Cairan Dialisis', + 钙: 'Kalsium', + 葡萄糖: 'Glukosa', + 血管通路: 'Akses Vaskular', + 穿刺针: 'Jarum Biopsi', + 穿刺针型号: 'Model Jarum Biopsi', + 一次性使用管路: 'Saluran Pakai Buang', + 护理包: 'Pakej Penjagaan', + 浓缩液: 'Cecair Pekat', + 补液管: 'Saluran Cairan', + 穿刺方式: 'Kaedah Biopsi', + 穿刺针A: 'Jarum Biopsi A', + 穿刺针V: 'Jarum Biopsi V', + 日期: 'Tarikh', + 配药人: 'Pembekal Ubat', + 核对人: 'Penyemak', + 物品类型: 'Jenis Barangan', + 物品规格: 'Spesifikasi Barangan', + 数量: 'Bilangan', + 透析器: 'Dialiser', + 透析时长: 'Tempoh Dialisis', + 剂量: 'Dos (Dos Awal) (Penyelenggaraan / Tambahan) (Jumlah)', + 超滤总量: 'Jumlah Ultrafiltrasi', + 透析号: 'Nombor Dialisis', + 目标脱水量: 'Jumlah Dehidrasi Sasaran', + 处方脱水量: 'Jumlah Dehidrasi Preskripsi', + 透前血压: 'Tekanan Darah Sebelum Dialisis', + 抗凝剂: 'Antikoagulan', + 开药数量: 'Bilangan Ubat', + 单次剂量: 'Dos Sekali', + 药品名称: 'Nama Ubat', + 药品分类: 'Kategori Ubat', + 药品规格: 'Spesifikasi Ubat', + 是否确认处方: 'Adakah Preskripsi Disahkan', + 葡萄糖酸钙: 'Kalsium Glukonat', + 肝素钠注射液: "Injeksi Heparin Natrium", + 骨化三醇: 'Calcitriol', + 帕立骨化醇: 'Paricalcitol', + 尿激酶: 'Urokinase', + 庆大霉素: 'Gentamicin', + 蔗糖铁: 'Sukrosa Besi', + 左卡尼汀: 'L-Carnitine', + 促红: 'Erythropoiesis Stimulant', + 执行人: 'Pelaksana', + 患者来源: 'Sumber Pesakit', + 勾选打印: 'Pilih Cetakan Satuan dialisis', + 批量归档: 'Pengarkiban Berkelompok', + 模板设置: 'Tetapan Templet', + 开始透析: 'Mula Dialisis', + 结束透析: 'Tamat Dialisis', + 门诊: 'Klinik Pesakit Luar', + 住院: 'Pesakit Dalam', + 转出患者: 'Pesakit Dipindahkan', + 全部患者: 'Semua Pesakit', + 我负责的患者: 'Pesakit Saya Bertanggungjawab', + 打印模板设置: 'Tetapan Templet Cetakan', + 选择: 'Pilih', + 预览: 'Pratonton', + 透析护理包: 'Pakej Penjagaan Dialisis', + 透析浓缩液: 'Cecair Pekat Dialisis', + 血滤管: 'Tiub Penapis Darah', + 入科方式: 'Kaedah Masuk', + 入科时间: "Masa Masuk", + "出科方式": "Kaedah Keluar", + "出科时间": "Masa Keluar", + 步行: 'Berjalan', + 扶行: 'Berdiri Dibantu', + 轮椅: 'Kursi Roda', + 平床: 'Katil Rata', + 床旁: 'Di Sisi Katil', + 助行器: 'Alat Bantuan Berjalan', + 引血: 'Pengambilan Darah', + 透析器编号: 'Nombor Dialiser', + 穿刺护士: 'Jururawat Biopsi', + 换药护士: 'Jururawat Penukaran Pembalut', + 穿刺: 'Biopsi', + 换药: 'Penukaran Pembalut', + 预充管路: 'Pra-pengisian Tiub', + 上机护士: 'Jururawat Permulaan Mesin', + 治疗护士: 'Jururawat Rawatan', + 开始时间: 'Masa Mula', + 正常: 'Normal', + 卧床: 'Berbaring di Katil', + 拒测: 'Menolak Ujian', + 找到指定透析单: 'Ditemui Dialisis Ditentukan, Jika Tidak Ditemui, Sistem Akan Menetapkan Semula Data Yang Dipilih', + 未匹配到指定透析单患者: 'Tiada Padanan Dengan Pesakit Dialisis Ditentukan, Sistem Akan Menetapkan Semula Data Yang Dipilih', + 请勾选您需要打印的患者: 'Sila Pilih Pesakit Yang Anda Perlukan Untuk Dicetak', + 请勾选您需要归档的患者: 'Sila Pilih Pesakit Yang Anda Perlukan Untuk Diarkibkan', + 归档后透析范将无法修改: 'Setelah Diarkibkan, Maklumat Dialisis Tidak Boleh Diubah, Adakah Anda Pasti Ingin Mengarkibkan?', + 没有选中行: 'Tiada Baris Yang Dipilih!', + 处方还没确认你确定要开始透析: 'Preskripsi Belum Disahkan, Adakah Anda Pasti Ingin Mula Dialisis?', + 时间: 'Masa', + 下机护士: 'Jururawat Penamatan Mesin', + 提示: 'Petunjuk', + 回血: 'Pemulihan Darah', + 手动HIS签到就诊: 'Daftar Secara Manual Menggunakan HIS', + 叫号: 'Panggilan Nombor', + 结束叫号: 'Tamat Panggilan Nombor', + 确认: 'Sahkan', + 确认至患者信息: 'Sahkan Maklumat Pesakit', + 删除: 'Padam', + 打印上机单: 'Cetak Dokumen Permulaan Mesin', + 打印透析单: 'Cetak Dokumen Dialisis', + 自查: 'Pemeriksaan Diri', + 归档: 'Arkibkan', + 修改透析单状态: 'Ubah Status Dokumen Dialisis', + 诊断: 'Diagnosis', + 透析日期: 'Tarikh Dialisis', + 传染病: 'Penyakit Berjangkit', + 首次透析日期: 'Tarikh Dialisis Pertama', + 透析次数: 'Bilangan Dialisis', + 入院时间: 'Masa Masuk Wad', + 透析床号: 'Nombor Katil Dialisis', + 透析大区: 'Wilayah Dialisis', + 门诊号: 'Nombor Klinik Pesakit Luar', + 住院号: 'Nombor Pesakit Dalam', + 重新打印: 'Cetak Semula', + 透析处方: 'Preskripsi Dialisis', + 机型: 'Jenis Mesin', + 抗凝剂公式: 'Formula Antikoagulan', + 自定义维持时长: 'Penetapan Tempoh Penyelenggaraan Tersuai', + 首剂: 'Dos Pertama', + 维持: 'Penjagaan Berterusan', + 总量: 'Jumlah Keseluruhan', + 钙名称: 'Nama Kalsium', + "钙剂量": '钙剂量', + 请输入时机: 'Sila Masukkan Masa', + 追加: 'Tambah', + 冲洗时间: 'Masa Pencucian', + 冲洗量: 'Jumlah Pencucian', + 碳酸氢根: 'Bikarbonat', + 处方钠: 'Natrium Preskripsi', + 配方钠: 'Natrium Formula', + 调整: 'Laraskan', + 血滤器: 'Penapis Darah', + 血透器: 'Dialiser Hemodialisis', + 通路类型: 'Jenis Laluan', + 置换总量: 'Jumlah Pertukaran', + 修改记录: 'Rekod Ubah', + 同步至透析方案: 'Sinkronkan Dokumen Dialisis', + 修改确认时间: 'Ubah Masa Pengesahan', + 置换方式: 'Kaedah Pertukaran', + 血流量: 'Aliran Darah', + 时长: 'Tempoh Masa', + 钾: 'Potasium', + 灌流器: 'Penyalur Cecair', + 处方脱水量格式错误: 'Format Jumlah Dehidrasi Preskripsi Salah', + 处方已经确认了你确定要重新确认: 'Preskripsi Telah Disahkan, Adakah Anda Pasti Ingin Mengesahkan Semula?', + 同步成功: 'Sinkronisasi Berjaya', + 同步失败: 'Sinkronisasi Gagal', + 没有选择透析单: 'Tiada Pilihan Dokumen Dialisis', + 调整成功: 'Penyesuaian Berjaya', + 确认要调整床号吗: 'Adakah Anda Pasti Ingin Menyesuaikan Nombor Katil?', + 警告: 'Amaran', + 确认要修改透析方案: 'Adakah Anda Pasti Ingin Mengubah Rancangan Dialisis?', + 请选中透析单后再进行查询: 'Sila Pilih Dokumen Dialisis Sebelum Mencari', + 最近检验结果: 'Keputusan Ujian Terkini', + 上次透后体重: 'Berat Selepas Dialisis Terkini', + 上次透后称重: 'Berat Selepas Dialisis Terkini', + 血压: 'Tekanan Darah', + 尿量: 'Jumlah Urin', + 疼痛: 'kesakitan', + 体温: 'Suhu Badan', + 预增脱水: 'Dehidrasi Yang Dirancang', + 体重增加: 'Penambahan Berat', + 同步: 'Sinkronisasi', + 收缩压: 'Tekanan Sistolik', + 舒张压: 'Tekanan Diastolik', + 上肢: 'Lengan Atas', + 下肢: 'Lengan Bawah', + 测不出: 'Tidak Dapat Diukur', + "未测":'Tidak diuji', + 前次透析后: 'Selepas Dialisis Sebelumnya', + 导管: 'Kateter', + 合并症: 'Komplikasi', + 内瘘: 'Fistula Dalaman', + 透前症状: 'Gejala Sebelum Dialisis', + 签到时间: 'Masa Daftar Masuk', + 修改签到时间: 'Ubah Masa Daftar Masuk', + 请输入透前称重: 'Sila Masukkan Berat Sebelum Dialisis', + 请选择透前称重方式: 'Sila Pilih Kaedah Penimbangan Sebelum Dialisis', + 请输入干体重: 'Sila Masukkan Berat Kering', + 请输入体温: 'Sila Masukkan Suhu Badan', + 不详: 'Tidak Terperinci', + 请先签到后才能确认: 'Sila Daftar Masuk Terlebih Dahulu Sebelum Mengesahkan', + 患者尚未签到是否继续确认保存: 'Pesakit Belum Daftar Masuk, Adakah Anda Pasti Ingin Menyimpan?', + 表单明细没有验证通过: 'Butiran Borang Tidak Lulus Pengesahan', + 签到时间修改成功: 'Pengesahan Masa Daftar Masuk Berjaya', + 确认要将此衣物重同步至该患者的所有透析方案下吗: 'Adakah anda pasti ingin menyegerakkan semula pakaian ini ke semua rancangan dialisis dan borang dialisis yang belum ditandatangani pesakit ini?', + 衣物重为空不能同步: 'Berat Pakaian Kosong, Tidak Dapat Menyelaraskan', + 透前评估自定义内容格式化出错了: 'Format Kandungan Penilaian Sebelum Dialisis Tersuai Tidak Betul', + 系统异常请刷新后重试: 'Ralat Sistem, Sila Segar Semula dan Cuba Lagi', + 透前评估: 'Penilaian Sebelum Dialisis', + 取消自定义: 'Batalkan Penyesuaian', + 自定义: 'Penyesuaian', + 临时医嘱: 'Arahan Perubatan Sementara', + 医嘱模板: 'Templat Arahan Perubatan', + 添加医嘱: 'Tambah Arahan Perubatan', + 修改医嘱: 'Ubah Arahan Perubatan', + 执行医嘱: 'Laksanakan Arahan Perubatan', + 修改: 'Ubah', + 医嘱内容: 'Kandungan Arahan Perubatan', + 没有选中要执行的医嘱: 'Tiada Arahan Perubatan Yang Dipilih Untuk Dilaksanakan', + 请勾选您需要批量执行的医嘱: 'Sila Pilih Arahan Perubatan Yang Anda Perlukan Untuk Dilaksanakan Secara Berkelompok', + 请勾选您要修改的医嘱: 'Sila Pilih Arahan Perubatan Yang Anda Ingin Ubah', + 仅支持单例修改请确保勾选的医嘱数量为1: 'Hanya Satu Arahan Perubatan Boleh Diubah, Sila Pastikan Jumlah Arahan Yang Dipilih Adalah 1', + 医嘱添加成功: 'Arahan Perubatan Ditambah Berjaya', + 执行医嘱成功: 'Arahan Perubatan Dilaksanakan Berjaya', + 批量执行医嘱成功: 'Arahan Perubatan Dilaksanakan Secara Berkelompok Berjaya', + 请勾选您要删除的医嘱: 'Sila Pilih Arahan Perubatan Yang Anda Ingin Padam', + 请勾选您要打印的医嘱: 'Sila Pilih Arahan Perubatan Yang Anda Ingin Cetak', + 是否删除医嘱: 'Adakah Anda Pasti Ingin Memadam Arahan Perubatan?', + 是否继续: 'Adakah Anda Pasti Ingin Meneruskan?', + 医嘱删除成功: 'Arahan Perubatan Berjaya Dipadam', + 当前操作的是: 'Tindakan Semasa Adalah', + 是否确认: 'Adakah Anda Pasti?', + 透析单: 'Dokumen Dialisis', + 长期医嘱: 'Arahan Perubatan Jangka Panjang', + 医嘱类型: 'Jenis Arahan Perubatan', + 医嘱日期: 'Tarikh Arahan Perubatan', + 开单医生: 'Doktor Yang Menyusun', + 医嘱开始时间: 'Masa Mula Arahan Perubatan', + 选择日期: 'Pilih Tarikh', + 请选择开单医生: 'Sila Pilih Doktor Yang Menyusun', + 请选择医嘱名称: 'Sila Pilih Nama Arahan Perubatan', + 请输入单次用量: 'Sila Masukkan Dos Sekali', + 请输入开药数量: 'Sila Masukkan Jumlah Ubat', + 请选择给药途径: 'Sila Pilih Laluan Pemberian Ubat', + 请选择执行频率: 'Sila Pilih Kekerapan Pelaksanaan', + 请输入备注: 'Sila Masukkan Nota', + 执行频率: 'Kekerapan Pelaksanaan', + 单次用量: 'Dos Sekali', + 子药: 'Sub Ubat', + 单独保存子药内容需要点击该按钮: 'Klik Butang Ini Untuk Menyimpan Kandungan Sub Ubat Secara Terpisah', + 子药内容: 'Kandungan Sub Ubat', + 选择的医嘱项目: 'Item Arahan Perubatan Yang Dipilih', + 医嘱项目: 'Item Arahan Perubatan', + 模板名称: 'Nama Templat', + 添加: 'Tambah', + 没有选择项: 'Tiada Pilihan Yang Dipilih!', + 已经选择了当前项目: 'Item Ini Telah Dipilih!', + 执行: 'Laksanakan', + 请选择核对人员: 'Sila Pilih Orang Yang Akan Menyemak', + 请选择执行医生: 'Sila Pilih Doktor Yang Akan Melaksanakan', + 未选中批量执行医嘱: 'Tiada Arahan Perubatan Yang Dipilih Untuk Dilaksanakan Secara Berkelompok', + 护士: 'Jururawat', + 医生: 'Doktor', + 请选择开始时间: 'Sila Pilih Masa Mula', + 收起: 'Tutup', + 展开: 'Buka', + 添加子药: 'Tambah Sub Ubat', + 请选择输入医嘱名称: 'Sila Pilih/Masukkan Nama Arahan Perubatan', + 暂无子药: 'Tiada Sub Ubat Tersedia', + 删除子药: 'Padam Sub Ubat', + 透析物品检查: 'Pemeriksaan Barang Dialisis', + 正确: 'Betul', + 差错: 'Ralat', + 双人核对: 'Pemeriksaan Berpasangan', + 透析器及管路无破损和过期: 'Tiada Kerosakan atau Tamat Tempoh Pada Dializer dan Paip', + 一次性透析管路: 'Paip Dialisis Sekali Guna', + 回血用NS: 'Salin Semula Dengan NS', + 请输入核对人密码验证: 'Sila Masukkan Kata Laluan Pemeriksa Untuk Pengesahan', + 请输入密码: 'Sila Masukkan Kata Laluan', + 核对时间: 'Masa Pemeriksaan', + 肝素补液口未双保险夹闭: 'Pintu Cairan Heparin Tidak Ditutup Dengan Dwi-Insurans', + 管路有打折: 'Paip Mengalami Lipatan', + 接口连接松动: 'Sambungan Antara Paip Longgar', + 压力传感器管夹未打开: 'Penjepit Sensor Tekanan Tidak Dibuka', + 静脉管路未卡入保护夹: 'Paip Vena Tidak Dimasukkan Ke Dalam Penjepit Perlindungan', + 动静脉壶液面不标准: 'Tahap Cecair Dalam Saluran Vena dan Arteri Tidak Standard', + 透析液连接错误: 'Sambungan Cecair Dialisis Salah', + 肝素管夹未开启: 'Penjepit Heparin Tidak Dibuka', + 泵前补液侧管未夹: 'Paip Sampingan Cairan Sebelum Pam Tidak Disemat', + 管道连接核查: 'Semakan Sambungan Paip', + 动静脉接错: 'Sambungan Arteri dan Vena Salah', + 渗血: 'Pendarahan', + 压迫: 'Penekanan', + 折叠: 'Lipatan', + 滑脱: 'Tergelincir', + 处方血流量: 'Aliran Darah Preskripsi', + 方案备注: 'Catatan Rancangan', + 透析参数核查: 'Semakan Parameter Dialisis', + 血管通路核查: 'Semakan Laluan Vaskular', + 确认人不能为空: 'Pengesah Tidak Boleh Kosong', + 核对人密码验证识别: 'Pengesahan Kata Laluan Pemeriksa, Sila Coba Lagi', + 监测记录: 'Rekod Pemantauan', + 导出IOT联机数据: 'Eksport Data IOT Secara Dalam Talian', + iot消息: 'Tidak Semua Peranti Menyokong Eksport IOT. Hanya Peranti Yang Terkoneksi Yang Boleh Mengeksport, Interval Eksport Adalah 5 Minit', + 上: 'Atas', + 下: 'Bawah', + 在线: 'Dalam Talian', + 置换量: 'Jumlah Pertukaran', + 置换率: 'Kadar Pertukaran', + 透析液温度: 'Suhu Cecair Dialisis', + 电导度: 'Kefahaman Listrik', + 钠浓度: 'Konsentrasi Natrium', + 超滤量: 'Jumlah Ultrafilter', + 超滤率: 'Kadar Ultrafilter', + 跨膜压: 'Tekanan Membran', + 动脉压: 'Tekanan Arteri', + 静脉压: 'Tekanan Vena', + 添加监测记录: 'Tambah Rekod Pemantauan', + 编辑监测记录: 'Sunting Rekod Pemantauan', + 监测记录确认成功: 'Pengesahan Rekod Pemantauan Berjaya', + 请选择您要删除的监测记录: 'Sila Pilih Rekod Pemantauan Yang Anda Ingin Padam', + 该患者暂无监测记录或监测记录小于两条: 'Pesakit Tiada Rekod Pemantauan atau Rekod Pemantauan Kurang Dari Dua', + 删除成功: 'Padam Berjaya', + 上次监测: 'Pemantauan Sebelumnya', + 请选择监测护士: 'Sila Pilih Jururawat Pemantauan', + 联机数据获取成功: 'Data Dalam Talian Berjaya Diperoleh', + 超滤量类型应为数字: 'Jenis Jumlah Ultrafilter Harus Dalam Bentuk Nombor', + 超滤率类型应为数字: 'Jenis Kadar Ultrafilter Harus Dalam Bentuk Nombor', + 距上次时间差为负数不能计算: 'Perbezaan Masa Dari Pemantauan Sebelumnya Tidak Boleh Digunakan Untuk Pengiraan', + 置换液量类型应为数字: 'Jenis Jumlah Cecair Pertukaran Harus Dalam Bentuk Nombor', + 置换率类型应为数字: 'Jenis Kadar Cecair Pertukaran Harus Dalam Bentuk Nombor', + 上次置换量无法取值不能计算: 'Jumlah Cecair Pertukaran Sebelumnya Tidak Boleh Diperoleh Untuk Pengiraan', + 请检查收缩压舒张压是否正确: 'Sila Semak Tekanan Sistolik/Diastolik Adakah Betul', + 请选择监测记录所属日期: 'Sila Pilih Tarikh Rekod Pemantauan', + 所属日期: 'Tarikh Berkaitan', + 监测时间: 'Masa Pemantauan', + 症状选项: 'Pilihan Gejala', + 结果描述: 'Penerangan Keputusan', + 结果选项: 'Pilihan Keputusan', + 处理描述: 'Penerangan Proses', + 处理选项: 'Pilihan Proses', + 症状描述: 'Penerangan Gejala', + 在线尿素: 'Urea Dalam Talian', + 血容量: 'Jumlah Darah', + 监测护士: 'Jururawat Pemantauan', + 设置: 'Tetapan', + 置换液速率: 'Kadar Cecair Pertukaran', + 置换液量: 'Jumlah Cecair Pertukaran', + 是否忽略必填校验: 'Adakah Anda Pasti Ingin Mengabaikan Pemeriksaan Wajib?', + 透后宣教: 'Pendidikan Selepas Dialisis', + 宣教人: 'Pendidik', + 透析小结: 'Ringkasan Dialisis', + 小结签名: 'Tandatangan Ringkasan', + 签名: 'Tandatangan', + 导出病程: 'Eksport Perjalanan Penyakit', + 自动生成小结: 'Ringkasan Automatik', + 穿刺位点: 'Titik Tusukan', + 穿刺方向: 'Arah Tusukan', + 关闭: 'Tutup', + 应用到小结: 'Gunakan Pada Ringkasan', + 重新生成: 'Hasilkan Semula', + 请求中: 'Sedang Meminta', + 透后小结: 'Ringkasan Selepas Dialisis', + 治疗医生: 'Doktor Rawatan', + 智能推荐模版: 'Templat Cadangan Pintar', + 智能推荐模板取消勾选已有选项: 'Batal Pilihan Templat Cadangan Pintar', + 结束透析时间: 'Masa Tamat Dialisis', + 凝血: 'Pembekuan Darah', + 实际透析时长: 'Tempoh Dialisis Sebenar', + 提前下机: 'Turun Dari Mesin Awal', + 症状处理结果: 'Keputusan Penanganan Gejala', + 透后血压: 'Tekanan Darah Selepas Dialisis', + 体重减少: 'Pengurangan Berat Badan', + 干体重达标: 'Berat Kering Mencapai Standard', + 干体重是否调整: 'Adakah Berat Kering Diselaraskan?', + 实际脱水量: 'Jumlah Dehidrasi Sebenar', + 透后体重: 'Berat Selepas Dialisis', + 透后评估: 'Penilaian Selepas Dialisis', + 实际超滤量: 'Jumlah Ultra-filtrasi Sebenar', + 实际置换量: 'Jumlah Pertukaran Sebenar', + 透析中进食: 'Makan Semasa Dialisis', + 透析中输液: 'Pemberian Cecair Semasa Dialisis', + 透析中输血: 'Pemberian Darah Semasa Dialisis', + 透析中冲管: 'Pembersihan Paip Semasa Dialisis', + 透后症状: 'Gejala Selepas Dialisis', + 并发症: 'Komplikasi', + 透后衣物重: 'Berat Pakaian Selepas Dialisis', + 实际治疗时长: 'Tempoh Rawatan Sebenar', + 请输入: 'Sila Masukkan', + 校验不通过: 'Pengesahan Gagal', + 透后评估数据存在多项请联系管理员删除: 'Terdapat Beberapa Data Penilaian Selepas Dialisis, Sila Hubungi Pentadbir Untuk Memadam', + 透析单确认透后评估异常: 'Sahkan Anomali Penilaian Selepas Dialisis Pada Kad Dialisis', + 医生治疗小结: 'Ringkasan Rawatan Doktor', + 请输入医生治疗小结: 'Sila Masukkan Ringkasan Rawatan Doktor', + 自动生成完成: 'Generasi Automatik Selesai', + 是否需要系统辅助生成小结: 'Adakah Anda Perlukan Bantuan Sistem Untuk Menjana Ringkasan?', + 导出成功: 'Eksport Berjaya', + 透析单code异常: 'Kod Kad Dialisis Tidak Sah', + 当前医生治疗小结存在多条数据: 'Terdapat Beberapa Data Ringkasan Rawatan Doktor, Sila Hubungi Pentadbir Untuk Memadam', + 保存子药: 'Simpan Sub Ubat', + 结束时间: 'Masa Tamat', + 保存成功: 'Penyimpanan Berjaya', + 提醒: 'Peringatan', + 联机获取: 'Perolehan Secara Dalam Talian', + 计算: 'Kira', + 总: 'Jumlah', + 是否只展示最后一次结果: 'Adakah Hanya Menunjukkan Keputusan Terakhir', + 默认查询全部: 'Cari Semua Secara Lalai', + 转归状态: 'Status Pengakhiran', + 不限: 'Tiada Had', + 在院: 'Di Hospital', + 转出: 'Dipindahkan', + 未检测人员: 'Orang Yang Belum Diuji', + 检验日期: 'Tarikh Ujian', + 患者姓名: 'Nama Pesakit', + 不达标: 'Tidak Memenuhi Standard', + 达标: 'Memenuhi Standard', + 标准值: 'Nilai Piawai', + 标准值设定: 'Penetapan Nilai Piawai', + 控制率: 'Kadar Kawalan', + 未检测人数: 'Jumlah Orang Belum Diuji', + 不达标的患者人数: 'Jumlah Pesakit Yang Tidak Memenuhi Standard', + 达标患者人数: 'Jumlah Pesakit Yang Memenuhi Standard', + 铁蛋白: 'Ferritin', + 血清铁蛋白: 'Ferritin Serum', + 超敏C反应蛋白: 'Protein C Reaktif Hipersensitif', + C反应蛋白: 'Protein C Reaktif', + 动静脉内瘘生存率: 'Kadar Kelangsungan Fistula Arteriovenous', + 甘油三酯: 'Trigliserida', + 甲状旁腺激素: 'Hormon Paratiroid', + 'Kt/V': 'Kt/V', + URR: 'URR', + β2微球蛋白: 'β2-Mikroglobulin', + 前白蛋白: 'Prealbumin', + 总蛋白: 'Jumlah Protein', + 体重增长: 'Peningkatan Berat Badan', + '透析前尿素氮,透析后尿素氮,尿素氮,尿素': 'Nitrogen Urea', + 尿酸: 'Asid Urik', + 白蛋白: 'Albumin', + 血红蛋白: 'Hemoglobin', + 中性粒细胞百分比: 'Peratusan Neutrofil', + 血压控制: 'Kawalan Tekanan Darah', + 转铁蛋白饱和度: 'Kepuasan Transferrin', + 透析龄: 'Usia Dialisis', + 主治医师: 'Doktor Utama', + BNP: 'BNP', + 最近平均脱水量: 'Kadar dehidrasi rata-rata baru-baru ini', + 最近最大脱水量: 'Volum penuh dehidrasi baru-baru ini', + 最近最大脱水量日期: 'Tarikh pencuci maksimum terakhir', + 单项合计: 'Jumlah item tunggal', + '透前体重(kg)': 'berat badan (kg)', + '干体重(kg)': 'berat badan kering (kg)', + '透前血压(mmHg)': 'tekanan darah (mmHg)', + '处方脱水量(L)': 'Pengdehidrasi preskripsi (L)', + '目标脱水量(L)': 'Desidrasi sasaran (L)', + '超滤总量(L)': 'Jumlah Penapisan Ultra (L)', + '剂量(首剂)(维持/追加)(总量)': 'Dos (dos pertama) (mengekalkan/tambahan) (jumlah keseluruhan)', + '透析时长(H)': 'Masa dialisis (H)', + 磷: 'fosfor', + 床位排序: 'Urutan katil', + 签到排序: 'Tanda tangan untuk menyusun', + 透析号排序: 'Pengusihan Dialisis', + 我的患者: 'Pesakit saya.', + 责护患者: 'Melindungi pesakit', + }, +}; diff --git a/src/i18n/lang/zh-cn.ts b/src/i18n/lang/zh-cn.ts new file mode 100644 index 0000000..d9ba242 --- /dev/null +++ b/src/i18n/lang/zh-cn.ts @@ -0,0 +1,1276 @@ +// 定义内容 +export default { + router: { + xycskz:'血压例次控制率', + zhibeiyao:'自备药管理', + yaowuyonglaingtongji:'药物用量统计', + Documentation:'联机帮助', + weinjianguanli:'文件管理', + home: '首页', + lisApi: 'Lis接口', + patient: '患者管理', + HemodiPatients: '病案首页', + PatientFormDetails: '患者信息', + PatientList: '患者列表', + outComeRecord: '转归记录', + wenshuguanli: '文书管理', + hemoMed: '透析管理', + bedView: '床位图', + QC: '质控', + postQc: '质控上报', + dataGlobalItem: '胜透物品基础库', + weightRecord: '体重记录', + xgtlQc: '血管通路分类', + yueXiaoJie: '月小结', + yihupaiban: '医护排班', + yihuPaiban: '排班', + paibanSet: '排班设置', + duibi: '透析品质对比', + analyse: '品质分析', + statistics: '检验数据统计', + hemoMedScheme: '透析方案', + gongyinglian: '供应链', + datatongji: '检验数据统计', + canPingDuiZhao: '维护产品对照', + medicalHistory: '患者病史', + personalInfo: '个人信息', + courseRecord: '病程记录', + physiqueCheck: '体格检查', + xiaodutongji: '消毒统计', + kidneyTest: '肾脏检验', + inspectors: '检验检查', + banbenweihu: '版本维护', + dryWeight: '干体重', + rentichengfenfenxiyi: '成分分析仪检验', + vascularAccess: '血管通路', + paibanTongji: '统计查询', + ChroDisePatients: '慢病患者', + scheduling: '排班管理', + jieduanxiaojie: '阶段小结', + NurseRostering: '护士排班', + PatientsWithScheduling: '患者排班', + scheduleTemplate: '排班模板', + DialysisRecord: '透析记录', + signIn: '签到', + erjichuku: '二级出库', + erjiCheck: '库房盘点', + fee: '收费', + feeOrder: '收费清单', + feeChufang: '门诊处方', + feeGroup: '收费套餐维护', + feeDict: '收费项目维护', + erjikefangwf: '二级库房维护', + erjikufang: '二级库房', + inventory2Query: '二级库房查询', + yiqikufang: '一级库房', + weigh: '签到称重', + hzZaiYao: '月度小结', + signinJIlu: '签到记录', + zxlbfb: '中性粒细胞控制率', + xuedanbai: '血清白蛋白控制率', + bingqingjilu: '病情记录', + zdykzl: '自定义检验项目', + gai: '钙控制率', + jia: '钾控制率', + jzxjs: '甲状旁腺激素控制率', + xhdb: '血红蛋白控制率', + ling: '磷控制率', + kfzdsz: '库房字典设置', + dialysisForm: '透析单', + KeshiQc: '科室质控', + doctorsAdvice: '今日医嘱', + TestItem: '检查项目维护', + prepare: '透析准备', + jianyanQc: '检验检查', + monitor: '透析监测', + WorkStats: '工作量统计', + Loglog: '交班日志', + stockControl: '库存管理', + inventoryOperate: '入库管理', + inventory2Operate: '入库管理', + outStock: '出库管理', + storage: '入库管理', + jymbdcl: '检验目标达成率', + urrKzl: 'URR控制率', + fromStorage: '库存管理', + StockSearch: '库存查询', + inventoryQuery: '一级库存查询', + inventoryCheck: '库存盘点', + Stocktaking: '库存盘点', + InventoryDictionary: '库存字典', + touxiJilu: '透析记录单', + HaoCaiTongji: '耗材统计', + jianyanDatatongji: '检验数据统计', + zkpzfx: '质控品质分析', + IDCzkpztj: 'IDC透析品质分析对比', + yaoPingTongJi: '药品统计', + NurseWorkStats: '护士工作量', + DealerDictionary: '经销商字典', + ManufacturerDic: '厂家字典', + AiMenu: 'Ai', + xinSuai: '心衰预警AI', + xinSuaiTu: '心衰预警趋势', + xinshuaiAi: '心衰预警', + jiFengGuiZhe: '积分规则', + patientAdmin: '患者管理', + MedicalAdvice: '医嘱', + diseaseDiagnosis: '患者诊断', + diseaseDiagnosis2: '病情诊断', + DictDiagnose: '诊断字典', + SchemeDic: '透析方案', + device: '设备', + deviceAdmin: '设备管理', + signMachine: '自助签到终端', + commServiceDevice: '自助终端硬件状态', + deviceInfo: '基本信息', + deviceList: '设备列表', + DisinfectionPlan: '消毒计划', + xiaodujilu:'消毒记录', + xiaoduzidian:'消毒字典管理', + deviceXiaodu:'设备消毒', + useRegistration: '使用登记', + qc: '质量控制', + pinggu: '静脉导管评估', + Work: '工作量', + Maintenance: '维修维护', + deviceGroup: '设备分区', + system: '系统', + systemSet: '系统设置', + reportShow: '报告查询', + checkout: '检验', + feeitem: '收费项目维护', + jianchaxiangmu: '检验项目维护', + lisBarcode: '门诊采样', + class: '检验分类', + lisOorder: '检验申请', + feeitemVsClass: '检验分类收费项目对照', + basicsDic: '基础字典', + dialysisSet: '透析设定管理', + userSet: '客户自定义设置', + systemMenu: '菜单管理', + systemRole: '角色管理', + systemUser: '用户管理', + systemDept: '部门管理', + systemDic: '字典管理', + drugDic: '药物字典', + xgtlsj: '血管通路事件登记', + medicalOrderDrugTemplate: '药物医嘱模板', + diseaseCourseTemplate: '病程模板', + workDoneTemplate: '透析小结', + healthEducation: '健康宣教', + customDic: '自定义字典', + clientsAdmin: '客户管理', + limits: '权限管理', + limitsFrontEnd: '前端控制', + limitsFrontEndPage: '页面权限', + limitsFrontEndBtn: '按钮权限', + limitsBackEnd: '后端控制', + limitsBackEndEndPage: '页面权限', + menu: '菜单嵌套', + menu1: '菜单1', + menu11: '菜单11', + menu12: '菜单12', + menu121: '菜单121', + menu122: '菜单122', + menu13: '菜单13', + menu2: '菜单2', + funIndex: '功能', + funTagsView: 'tagsView 操作', + funCountup: 'countup 数字滚动', + funEchartsTree: 'echartsTree 树图', + funSelector: '图标选择器', + funNoticeBar: '滚动通知栏', + funWangEditor: 'wangEditor 编辑器', + funCropper: 'cropper 图片裁剪', + funQrcode: 'qrcode 二维码生成', + funEchartsMap: '地理坐标/地图', + funPrintJs: '页面打印', + baogaochaxun: '检验项目报告', + funClipboard: '复制剪切', + funScreenShort: 'web端自定义截屏', + funGridLayout: '拖拽布局', + funSplitpanes: '窗格拆分器', + funDragVerify: '验证器', + pagesIndex: '页面', + pagesFiltering: '过滤筛选组件', + pagesFilteringDetails: '过滤筛选组件详情', + pagesFilteringDetails1: '过滤筛选组件详情111', + pagesIocnfont: 'iconfont 字体图标', + pagesElement: 'element 字体图标', + pagesAwesome: 'awesome 字体图标', + pagesCityLinkage: '城市多级联动', + pagesFormAdapt: '表单自适应', + pagesFormI18n: '表单国际化', + pagesFormRules: '多表单验证', + pagesDynamicForm: '动态复杂表单', + pagesWorkflow: '工作流', + pagesListAdapt: '列表自适应', + pagesWaterfall: '瀑布屏', + pagesSteps: '步骤条', + pagesPreview: '大图预览', + pagesWaves: '波浪效果', + pagesTree: '树形改表格', + pagesDrag: '拖动指令', + pagesLazyImg: '图片懒加载', + paramsIndex: '路由参数', + paramsCommon: '普通路由', + paramsDynamic: '动态路由', + paramsCommonDetails: '普通路由详情', + paramsDynamicDetails: '动态路由详情', + chartIndex: '大数据图表', + visualizingIndex: '数据可视化', + visualizingLinkDemo1: '数据可视化演示1', + visualizingLinkDemo2: '数据可视化演示2', + personal: '个人中心', + tools: '工具类集合', + layoutLinkView: '外链', + layoutIfameView: '内嵌 iframe', + images: '影像', + imagesIndex: '影像', + disinfection: '消毒', + disinfectionIndex: '消毒', + patientTestingTrend: '患者检验趋势', + bloodProteinTrend: '白蛋白趋势', + hemoglobin: '血红蛋白趋势', + urr: 'URR趋势', + BNP: 'BNP控制率', + ktv: 'Kt/V趋势', + statistics2: '统计', + inspect: '检验', + inspectionControlRate: '检验控制率', + inspectionTrend: '检验趋势', + analysisDialysisQuality: '透析品质分析', + dataConversion: '数据转换', + groupCustomerComparison: '集团客户对照', + hisSetUp: 'HIS设置', + barcodePrintingSettings: '条码打印设置', + backendReportManagement: '后端报表管理', + reportManagement: '后端报表配置', + outpatientRecords: '门诊记录', + inventoryMonitoring: '库存监测', + inventoryPurchaseAndSales: '库存进销', + checkData: '检查数据', + barcodePrinting: '条码打印', + secondaryOutboundStatistics: '二级出库统计', + automaticOutboundManagement: '自动出库管理', + inspectionOutsourcing: '检验外送', + tdbkzl: '血清铁蛋白控制率', + cmcfybdb: '超敏C反应蛋白', + gysz: '甘油三酯控制率', + tdb: '铁蛋白控制率', + ticket: '工单', + maintenanceDialysate: '透析液维护', + ktvkzl: 'Kt/V控制率', + tzkzl: '体重增长控制率', + xykz: '血压控制控制率', + ztdbbhdkzl: '转铁蛋白饱和度控制率', + p2wqdbkzl: 'β2微球蛋白控制率', + patientAssessment: '患者评估', + slippage: '管道滑脱评估', + djmnlsclKzl: '动静脉内瘘生存率控制率', + patientsNumTongJi: '患者在院数量统计', + dialysisQualityStatistics: '透析品质统计', + prescriptionInquiry: '处方查询', + inspectionDataStatistics: '检验数据统计', + annualIndicatorControlRate: '年度指标控制率', + weightGainControlDuringDialysis: '体重增长控制率', + dialyzerStatistics: '透析龄统计', + earlyShutdownStatistics: '提前下机统计', + patientBirthdayCalendar: '患者生日日历', + stageSummary: '阶段小结', + patientPathologicalDiagnosis: '患者病理诊断', + cReactiveProteinControlRate: 'C反应蛋白控制率', + ktvQuery: 'Kt/V查询', + urrQuery: 'URR查询', + patientVascularAccessStatistics: '患者血管通路统计', + supplementaryExamination: '辅助检查', + infectiousDiseaseControlRate: '传染病控制率', + hypertensionControlRate: '高血压控制率', + qualityControlReport: '质控报表', + footCare: '足部管理', + totalProtein: '总蛋白控制率', + Prealbumin: '前白蛋白控制率', + uricAcid: '尿酸控制率', + ureaNitrogen: '尿素氮控制率', + monthlyStatisticsOfDialysisFrequencyForPatients: '月度患者透析次数统计', + dailyDialysisConsumptionDetails: '每日透析耗用明细', + averageAgeAndAgeDistribution: '平均年龄和年龄分布', + hospitalInfectionClinic: '院感门诊', + infectionEvent: '感染事件', + monthlyReportOnInfectionEvents: '感染事件月度报告', + bloodBornePathogenMonitoring: '血源性病原体监测', + infectionControlRate: '感染事件控制率', + inspectionReport: "检验提醒", + infectionControlEarlyWarning: '院感预警', + evaluation: "综合评估", + evaluationCategories: "分类维护", + evaluationItems: "检查项目维护", + wenjianguanli: "文件管理", + CACertification: 'CA认证', + 医院报表管理: "医院报表管理", + 压力性损伤评估: '压力性损伤评估', + 跌倒评估: '跌倒评估', + 院感门诊: '院感门诊', + secondaryCcreenVersionControl: '副屏版本维护', + }, + staticRoutes: { + signIn: '登录', + notFound: '找不到此页面', + noPower: '没有权限', + }, + user: { + title0: '组件大小', + title1: '语言切换', + title2: '菜单搜索', + title3: '布局配置', + title4: '消息', + title5: '开全屏', + title6: '关全屏', + dropdownDefault: '默认', + dropdownMedium: '中等', + dropdownSmall: '小型', + dropdownMini: '超小', + dropdown1: '首页', + dropdown2: '个人中心', + dropdown3: '404', + dropdown4: '401', + dropdown5: '退出登录', + dropdown6: '代码仓库', + searchPlaceholder: '菜单搜索:支持中文、路由路径', + newTitle: '通知', + newBtn: '全部已读', + newGo: '前往通知中心', + newDesc: '暂无通知', + logOutTitle: '提示', + logOutMessage: '此操作将退出登录, 是否继续?', + logOutConfirm: '确定', + logOutCancel: '取消', + logOutExit: '退出中', + logOutSuccess: '安全退出成功!', + 测试环境哦: '测试环境哦!!!!', + 工单: '工单', + 请输入关键字: '请输入关键字', + 关于: '关于', + 帮助: '帮助', + 取消: '取消', + 确认: '确认', + 我的工单: '我的工单', + 添加工单: '添加工单', + 提交日期: '提交日期', + 工单内容: '工单内容', + 状态: '状态', + 已办结: '已办结', + 已提交: '已提交', + 回复时间: '回复时间', + 回复内容: '回复内容', + 操作: '操作', + 查看: '查看', + 暂不不支持全屏: '暂不不支持全屏', + 完整版本: '完整版本', + 发布版本: '发布版本', + 当前患者信息: '当前患者信息', + 姓名: '姓名', + 透析号: '透析号', + 暂无: '暂无', + }, + tagsView: { + refresh: '刷新', + close: '关闭', + closeOther: '关闭其它', + closeAll: '全部关闭', + fullscreen: '当前页全屏', + closeFullscreen: '关闭全屏', + }, + notFound: { + foundTitle: '地址输入错误,请重新输入地址~', + foundMsg: '您可以先检查网址,然后重新输入或给我们反馈问题。', + foundBtn: '返回首页', + notFoundTitle: '暂无权限或地址不存在', + }, + noAccess: { + accessTitle: '您未被授权,没有操作权限~', + accessMsg: '联系方式:加QQ群探讨 665452019', + accessBtn: '重新授权', + }, + layout: { + configTitle: '布局配置', + oneTitle: '全局主题', + twoTitle: '菜单 / 顶栏', + twoTopBar: '顶栏背景', + twoMenuBar: '菜单背景', + twoColumnsMenuBar: '分栏菜单背景', + twoTopBarColor: '顶栏默认字体颜色', + twoMenuBarColor: '菜单默认字体颜色', + twoColumnsMenuBarColor: '分栏菜单默认字体颜色', + twoIsTopBarColorGradual: '顶栏背景渐变', + twoIsMenuBarColorGradual: '菜单背景渐变', + twoIsColumnsMenuBarColorGradual: '分栏菜单背景渐变', + twoIsMenuBarColorHighlight: '菜单字体背景高亮', + threeTitle: '界面设置', + threeIsCollapse: '菜单水平折叠', + threeIsUniqueOpened: '菜单手风琴', + threeIsFixedHeader: '固定 Header', + threeIsClassicSplitMenu: '经典布局分割菜单', + threeIsLockScreen: '开启锁屏', + threeLockScreenTime: '自动锁屏(s/秒)', + fourTitle: '界面显示', + fourIsShowLogo: '侧边栏 Logo', + fourIsBreadcrumb: '开启 Breadcrumb', + fourIsBreadcrumbIcon: '开启 Breadcrumb 图标', + fourIsTagsview: '开启 Tagsview', + fourIsTagsviewIcon: '开启 Tagsview 图标', + fourIsCacheTagsView: '开启 TagsView 缓存', + fourIsSortableTagsView: '开启 TagsView 拖拽', + fourIsShareTagsView: '开启 TagsView 共用', + fourIsFooter: '开启 Footer', + fourIsGrayscale: '灰色模式', + fourIsInvert: '色弱模式', + fourIsDark: '深色模式', + fourIsWartermark: '开启水印', + fourWartermarkText: '水印文案', + fiveTitle: '其它设置', + fiveTagsStyle: 'Tagsview 风格', + fiveAnimation: '主页面切换动画', + fiveColumnsAsideStyle: '分栏高亮风格', + fiveColumnsAsideLayout: '分栏布局风格', + sixTitle: '布局切换', + sixDefaults: '默认', + sixClassic: '经典', + sixTransverse: '横向', + sixColumns: '分栏', + tipText: '点击下方按钮,复制布局配置去 `src/store/modules/themeConfig.ts` 中修改。', + copyText: '一键复制配置', + resetText: '一键恢复默认', + copyTextSuccess: '复制成功!', + copyTextError: '复制失败!', + title: '血液透析管理平台', + 全部: '全部', + 留治: '留治', + 转出: '转出', + 选择机号: '选择机号', + 选择患者: '选择患者', + }, + 透析单:{ + 处方还没确认你确定要双人核对: '处方还没确认你确定要双人核对', + 血温: '血温', + 全天:'全天', + 上午:'上午', + 下午:'下午', + 晚上:'晚上', + 刷新:'刷新', + 姓名:'姓名', + 状态:'状态', + 班次:'班次', + 排班:'排班', + 批量打印: '批量打印透析单', + 请选择您需要打印的患者: '请选择您需要打印的患者', + 变更记录: '变更记录', + 批量打印组件: { + 批量打印: '批量打印', + 患者姓名: '患者姓名', + 请选择: '请选择', + 透析号: '透析号', + 透析日期: '透析日期', + 开始时间: '开始时间', + 结束时间: '结束时间', + 是否重新生成报表: '是否重新生成报表', + 取消: '取消', + 打印: '打印', + 血液净化治疗记录单预览: '血液净化治疗记录单预览', + 请耐心等待正在加载: '请耐心等待,正在加载', + 第: '第', + 页: '页', + 预计: '预计', + 共: '共', + 透析单日期不能为空: '透析单日期不能为空', + 没有可以打印的透析单: '没有可以打印的透析单', + }, + 患者信息组件: { + 治疗病区: '治疗病区', + 住院病区: '住院病区', + 病区: '病区', + 住院门诊: '住院门诊', + 的: '的', + 上机单已经打印了: '上机单已经打印了', + 你确定还要重新打印: '你确定还要重新打印?', + 男: '男', + 女: '女', + 门诊: '门诊', + 住院: '住院', + 号: '号', + 门诊号: '门诊号', + 住院号: '住院号', + 没有找到选中日期的透析单: '没有找到选中日期的透析单', + 上午: '上午', + 下午: '下午', + 晚上: '晚上', + 透析单编号为空请刷新后重试: '透析单编号为空,请刷新后重试', + 此操作将对: '此操作将对', + 进行手动HIS签到就诊操作是否确定: '进行手动HIS签到就诊操作,是否确定?', + 提示: '提示', + 确定: '确定', + 取消: '取消', + 操作成功: '操作成功', + 开始叫号: '开始叫号', + 结束叫号: '结束叫号', + 下机: '下机', + 此操作将会同步修改患者快照是否确认: '此操作将会同步修改患者快照,是否确认?', + 是否要删除: '是否要删除', + 的透析单: '的透析单', + 警告: '警告', + 删除成功: '删除成功', + 已发送打印上机单任务: '已发送打印上机单任务', + 自查成功: '自查成功', + 归档后透析单将无法修改您确定要归档: '归档后透析单将无法修改,您确定要归档?', + 归档成功: '归档成功', + }, + 透析处方组件: { + 透析机: '透析机', + }, + 临时医嘱组件: { + 添加: '添加', + 执行: '执行', + }, + 监测记录组件: { + 获取联机数据: '获取联机数据', + 症状: '症状', + 处理: '处理', + 结果: '结果', + }, + 透后小结组件: { + AI生成小结: 'AI生成小结', + }, + 打印模板组件: { + 模板设置: '模板设置', + 设为默认样式: '设为默认样式', + 默认模板: '默认模板', + 公共模板: '公共模板', + }, + 修改透析单状态组件: { + 修改透析单状态: '修改透析单状态', + 姓名: '姓名', + 状态: '状态', + 取消: '取消', + 确认: '确认', + 未签到: '未签到', + 已签到: '已签到', + 透析中: '透析中', + 已结束: '已结束', + 已检查: '已检查', + 已归档: '已归档', + 操作成功: '操作成功', + }, + 透析记录日历视图组件: { + 透析记录日历视图: '透析记录日历视图', + 姓名: '姓名', + 透析号: '透析号', + 性别: '性别', + 男: '男', + 女: '女', + 年龄: '年龄', + 未找到对应透析单: '未找到对应透析单', + 今天: '今天', + 月视图: '月视图', + 周视图: '周视图', + 天视图: '天视图', + 列表: '列表', + 上午: '上午', + 下午: '下午', + 晚上: '晚上', + }, + 透析单打印组件: { + 请耐心等待: '请耐心等待', + 正在加载: '正在加载', + 第: '第', + 页: '页', + 共: '共', + 血液净化治疗记录单预览: '血液净化治疗记录单预览', + 请勾选您需要打印的患者: '请勾选您需要打印的患者', + 没有找到可以打印的透析单: '没有找到可以打印的透析单', + }, + IOT联机数据组件: { + IOT联机数据: 'IOT联机数据', + 时间: '时间', + 超滤量: '超滤量', + 置换量: '置换量', + 血流量: '血流量', + 静脉压: '静脉压', + 跨膜压: '跨膜压', + 脱水率: '脱水率', + 透析液流速: '透析液流速', + 透析液温度: '透析液温度', + 置换率: '置换率', + 动脉压: '动脉压', + 电导度: '电导度', + 取消: '取消', + 导出为EXCEL: '导出为EXCEL', + 导出成功: '导出成功', + }, + 自查组件: { + 自查提示: '自查提示', + 模块: '模块', + 自查描述: '自查描述', + 操作: '操作', + 查看: '查看', + 取消: '取消', + 确认: '确认', + 临时医嘱: '临时医嘱', + 透前评估: '透前评估', + 透后小结: '透后小结', + 双人核对: '双人核对', + 透后评估: '透后评估', + 透析监测: '透析监测', + 透析单: '透析单', + }, + 患者最近检验结果组件: { + 患者最近检验结果: '患者最近检验结果', + 匹配失败请联系管理员: '匹配失败,请联系管理员', + 趋势: '趋势', + 标准值上限: '标准值上限', + 标准值下限: '标准值下限', + 系统异常请刷新后重试: '系统异常,请刷新后重试', + 请输入有效的日期: '请输入有效的日期', + 年: '年', + 月: '月', + }, + 修改记录组件: { + 修改记录: '修改记录', + 序号: '序号', + 日期: '日期', + 修改字段: '修改字段', + 旧值: '旧值', + 新值: '新值', + 操作人: '操作人', + }, + 物品名称: '物品名称', + 编辑血温: '编辑血温', + 签到:'签到', + 溶栓:'溶栓', + 开始溶栓:'开始溶栓', + 确认溶栓:'该操作将禁用除医嘱以外的所有操作权限,是否同意?', + 未签到:'未签到', + 已签到:'已签到', + 透析中:'透析中', + 已结束:'已结束', + 已下机:'已下机', + 治疗中:'治疗中', + 已检查:'已检查', + 已归档:'已归档', + 已自查:'已自查', + 患者信息:'患者信息', + 保存:'保存', + 干体重:'干体重', + 衣物重:'衣物重', + 称重方式:'称重方式', + 透前称重:'透前称重', + 透前体重:'透前体重', + 目标脱水:'目标脱水', + 脱水百分比:'脱水百分比', + 温度:'温度', + 呼吸:'呼吸', + 脉搏:'脉搏', + 透后称重方式:'透后称重方式', + 透后称重:'透后称重', + 查询日期:'查询日期', + 排班时段:'排班时段', + 选择患者:'选择患者', + 医嘱名称:'医嘱名称', + 是否核对:'是否核对', + 已核对:'已核对', + 未核对:'未核对', + 给药途径:'给药途径', + 是否只统计已签到的透析单:'是否只统计已签到的透析单', + 是否显隐藏患者自备药:'是否显隐藏患者自备药', + 病区选择:'病区选择', + 医嘱:'医嘱', + 统计:'统计', + 查询:'查询', + 医嘱确认:'医嘱确认', + 自定义打印:'自定义打印', + 自定义打印列:'自定义打印列', + 医嘱自定义打印列设置:'医嘱自定义打印列设置', + 分区:'分区', + 年龄:'年龄', + 执行时间:'执行时间', + 备注:'备注', + 床号:'床号', + 时段:'性别', + 时段2: '时段', + 性别:'性别', + 透析方式:'透析方式', + 开嘱医生:'开嘱医生', + 核对人员:'核对人员', + 执行人员:'执行人员', + 取消:'取消', + 确定:'确定', + 打印勾选:'打印勾选', + 打印: '打印', + 表单打印:'表单打印', + 打印标签:'打印标签', + 导出:'导出', + 选择打印机:'选择打印机', + 合计:'合计', + 请选择排班患者:'请选择排班患者', + 全部:'全部', + 全选:'全选', + 请选择:'请选择', + 开始日期:'开始日期', + 结束日期:'结束日期', + 是:'是', + 否:'否', + NO:'NO', + 统计自定义打印列设置:'统计自定义打印列设置', + 当天:'当天', + 七天:'7天', + 本月:'本月', + 三个月:'三个月', + 该功能仅针对医嘱生效:'该功能仅针对【医嘱】生效', + 请至少选择一个您要打印的列:'请至少选择一个您要打印的列', + 操作成功:'操作成功', + 没有查询到数据:'没有查询到数据', + 请先选择你要打印的医:'请先选择你要打印的医', + 医嘱打印成功:'医嘱打印成功', + 打印失败:'打印失败', + 请先选择你要操作的患者:'请先选择你要操作的患者!', + 没有勾选项:'没有勾选项', + 没有选择的医嘱项:'没有选择的医嘱项', + 确认成功:'确认成功', + 选择排班日期:'选择排班日期', + 查询时段:'查询时段', + 请选择查询时段:'请选择查询时段', + 统计方式:'统计方式', + 请选择统计方式:'请选择统计方式', + 请选择处方状态:'请选择处方状态', + 处方状态:'处方状态', + 患者查询:'患者查询', + 关键字查询:'透析号/姓名/首拼', + 按物品类型统计:'按物品类型统计', + 按物品规格统计:'按物品规格统计', + 未确认:'未确认', + 已确认:'已确认', + 病区:'病区', + 若需查询已删除全部病区数据请将该选项置于全未选状态:'若需查询已删除/全部病区数据,请将该选项置于全未选状态', + 透析耗材准备打印设置:'透析耗材准备打印设置', + 打印透析器标签:'打印透析器标签', + 打印治疗单:'打印治疗单', + 透析耗材统计打印设置:'透析耗材统计打印设置', + 上机参数打印设置:'上机参数打印设置', + A4打印:'A4打印', + 标签打印:'标签打印', + 药品准备打印设置:'药品准备打印设置', + 药品统计打印设置:'药品统计打印设置', + 药品统计2打印设置:'药品统计2打印设置', + 请选择您要使用的打印机:'请选择您要使用的打印机', + 请选择查询日期:'请选择查询日期', + 暂无可打印数据:'暂无可打印数据', + 请选择您要打印的数据:'请选择您要打印的数据', + 透析耗材准备:'透析耗材准备', + 透析耗材统计:'透析耗材统计', + 上机参数:'上机参数', + 药品准备:'药品准备', + 药品统计:'药品统计', + 药品统计2:'药品统计2', + 页面显示字段:'页面显示字段', + 人工肾:'人工肾', + 透析液流量:'透析液流量', + 钙:"钙", + 葡萄糖:'葡萄糖', + 血管通路:'血管通路', + 穿刺针:'穿刺针', + 穿刺针型号:'穿刺针型号', + 一次性使用管路:'一次性使用管路', + 护理包:'护理包', + 浓缩液:'浓缩液', + 补液管:'补液管', + 穿刺方式:'穿刺方式', + 穿刺针A:'穿刺针A', + 穿刺针V:'穿刺针V', + 日期:'日期', + 配药人:'配药人', + 核对人:'核对人', + 物品类型:'物品类型', + 物品规格:'物品规格', + 数量:'数量', + 透析器:'透析器', + 透析时长:'透析时长', + 剂量:'剂量(首剂)(维持/追加)(总量)', + 超滤总量:'超滤总量', + 透析号:'透析号', + 目标脱水量:'目标脱水量', + 处方脱水量:"处方脱水量", + 透前血压:'透前血压', + 抗凝剂:'抗凝剂', + 开药数量:'开药数量', + 单次剂量:'单次剂量', + 药品名称:'药品名称', + 药品分类:'药品分类', + 药品规格:'药品规格', + 是否确认处方:'是否确认处方', + 葡萄糖酸钙: '葡萄糖酸钙', + 肝素钠注射液: "肝素钠注射液", + 骨化三醇:'骨化三醇', + 帕立骨化醇:'帕立骨化醇', + 尿激酶:'尿激酶', + 庆大霉素:'庆大霉素', + 蔗糖铁:'蔗糖铁', + 左卡尼汀:'左卡尼汀', + 促红:'促红', + 执行人:'执行人', + 患者来源:'患者来源', + 勾选打印:'勾选打印透析单', + 批量归档:'批量归档', + 模板设置:'模板设置', + 开始透析:'开始透析', + 结束透析:'结束透析', + 门诊:'门诊', + 住院:'住院', + 转出患者:'转出患者', + 全部患者:'全部患者', + 我负责的患者:'我负责的患者', + 打印模板设置:'打印模板设置', + 选择:'选择', + 预览:'预览', + 透析护理包:'透析护理包', + 透析浓缩液:'透析浓缩液', + 血滤管:'血滤管', + 入科方式:'入科方式', + 入科时间:'入科时间', + "出科方式": "出科方式", + "出科时间": "出科时间", + 步行:'步行', + 扶行:'扶行', + 轮椅:'轮椅', + 平床:'平床', + 床旁:'床旁', + 助行器:'助行器', + 引血:'引血', + 透析器编号:'透析器编号', + 穿刺护士:'穿刺护士', + 换药护士:'换药护士', + 穿刺:'穿刺', + 换药:'换药', + 预充管路:'预充管路', + 上机护士:'上机护士', + 治疗护士:'治疗护士', + 开始时间:'开始时间', + 正常:'正常', + 卧床:'卧床', + 拒测:'拒测', + 找到指定透析单:'找到指定透析单,未找到指定透析单,系统将重置选中数据', + 未匹配到指定透析单患者:'未匹配到指定透析单患者,系统将重置选中数据', + 请勾选您需要打印的患者:'请勾选您需要打印的患者', + 请勾选您需要归档的患者:'请勾选您需要归档的患者', + 归档后透析范将无法修改:'归档后透析范将无法修改,您确定要归档?', + 没有选中行:'没有选中行!', + 处方还没确认你确定要开始透析:'处方还没确认你确定要开始透析?', + 时间:'时间', + 下机护士:'下机护士', + 提示:'提示', + 回血:'回血', + 手动HIS签到就诊:'手动HIS签到就诊', + 叫号:'叫号', + 结束叫号:'结束叫号', + 确认:'确认', + 确认至患者信息:'确认至患者信息', + 删除:'删除', + 打印上机单:'打印上机单', + 打印透析单:'打印透析单', + 自查:'自查', + 归档:'归档', + 修改透析单状态:'修改透析单状态', + 诊断:'诊断', + 透析日期:'透析日期', + 传染病:'传染病', + 首次透析日期:'首次透析日期', + 透析次数:'透析次数', + 入院时间:'入院时间', + 透析床号:'透析床号', + 透析大区:'透析大区', + 门诊号:'门诊号', + 住院号:'住院号', + 重新打印:'重新打印', + 透析处方:'透析处方', + 机型:'机型', + 抗凝剂公式:'抗凝剂公式', + 自定义维持时长:'自定义维持时长', + 首剂:'首剂', + 维持:'维持', + 总量:'总量', + 钙名称:'钙名称', + 钙剂量:'钙剂量', + 请输入时机:'请输入时机', + 追加:'追加', + 冲洗时间:'冲洗时间', + 冲洗量:'冲洗量', + 碳酸氢根:'碳酸氢根', + 处方钠:'处方钠', + 配方钠:'配方钠', + 调整:'调整', + 血滤器:'血滤器', + 血透器:'血透器', + 通路类型:'通路类型', + 置换总量:'置换总量', + 修改记录:'修改记录', + 同步至透析方案:'同步至透析方案', + 修改确认时间:'修改确认时间', + 置换方式:'置换方式', + 血流量:'血流量', + 时长:'时长', + 钾:'钾', + 灌流器:'灌流器', + 处方脱水量格式错误:'处方脱水量格式错误', + 处方已经确认了你确定要重新确认:'处方已经确认了,你确定要重新确认?', + 同步成功:'同步成功', + 同步失败:'同步失败', + 没有选择透析单:'没有选择透析单', + 调整成功:'调整成功', + 确认要调整床号吗:'确认要调整床号吗?', + 警告:'警告', + 确认要修改透析方案:'确认要修改透析方案', + 请选中透析单后再进行查询:'请选中透析单后再进行查询', + 最近检验结果:'最近检验结果', + 上次透后体重:'上次透后体重', + 上次透后称重:'上次透后称重', + 血压:'血压', + 尿量:'尿量', + 疼痛: '疼痛', + 体温:'体温', + 预增脱水:'预增脱水', + 体重增加:'体重增加', + 同步:'同步', + 收缩压:'收缩压', + 舒张压:'舒张压', + 上肢:'上肢', + 下肢:'下肢', + 测不出:'测不出', + "未测":'未测', + 前次透析后:'前次透析后', + 导管:'导管', + 合并症:'合并症', + 内瘘:'内瘘', + 透前症状:'透前症状', + 签到时间:'签到时间', + 修改签到时间:'修改确认时间', + 请输入透前称重:'请输入透前称重', + 请选择透前称重方式:'请选择透前称重方式', + 请输入干体重:'请输入干体重', + 请输入体温:'请输入体温', + 不详:'不详', + 请先签到后才能确认:'请先签到后才能确认', + 患者尚未签到是否继续确认保存:'患者尚未签到是否继续确认保存', + 表单明细没有验证通过:'表单明细没有验证通过', + 签到时间修改成功:'签到时间修改成功', + 确认要将此衣物重同步至该患者的所有透析方案下吗:'确认要将此衣物重同步至该患者的所有透析方案及未签到透析单吗?', + 衣物重为空不能同步:'衣物重为空不能同步', + 透前评估自定义内容格式化出错了:'透前评估自定义内容格式化出错了', + 系统异常请刷新后重试:'系统异常,请刷新后重试', + 透前评估:'透前评估', + 取消自定义:'取消自定义', + 自定义:'自定义', + 临时医嘱:'临时医嘱', + 医嘱模板:'医嘱模板', + 添加医嘱:'添加医嘱', + 修改医嘱:"修改医嘱", + 执行医嘱:'执行医嘱', + 修改:'修改', + 医嘱内容:'医嘱内容', + 没有选中要执行的医嘱:'没有选中要执行的医嘱', + 请勾选您需要批量执行的医嘱:'请勾选您需要批量执行的医嘱', + 请勾选您要修改的医嘱:'请勾选您要修改的医嘱', + 仅支持单例修改请确保勾选的医嘱数量为1:'仅支持单例修改,请确保勾选的医嘱数量为1', + 医嘱添加成功:'医嘱添加成功', + 执行医嘱成功:'执行医嘱成功', + 批量执行医嘱成功:'批量执行医嘱成功', + 请勾选您要删除的医嘱:'请勾选您要删除的医嘱', + 请勾选您要打印的医嘱:'请勾选您要打印的医嘱', + 是否删除医嘱:'是否删除医嘱', + 是否继续:',是否继续?', + 医嘱删除成功:'医嘱删除成功', + 当前操作的是:'当前操作的是', + 是否确认:'是否确认', + 透析单:'透析单', + 长期医嘱:'长期医嘱', + 医嘱类型:'医嘱类型', + 医嘱日期:'医嘱日期', + 开单医生:'开单医生', + 医嘱开始时间:'医嘱开始时间', + 选择日期:'选择日期', + 请选择开单医生:'请选择开单医生', + 请选择医嘱名称:'请选择医嘱名称', + 请输入单次用量:'请输入单次用量', + 请输入开药数量:'请输入开药数量', + 请选择给药途径:'请选择给药途径', + 请选择执行频率:'请选择执行频率', + 请输入备注:'请输入备注', + 执行频率:'执行频率', + 单次用量:'单次用量', + 子药:'子药', + 单独保存子药内容需要点击该按钮:'单独保存子药内容需要点击该按钮-------------->>>>', + 子药内容:'子药内容', + 选择的医嘱项目:'选择的医嘱项目', + 医嘱项目:'医嘱项目', + 模板名称:'模板名称', + 添加:'添加', + 没有选择项:'没有选择项!', + 已经选择了当前项目:'已经选择了当前项目!', + 执行:"执行", + 请选择核对人员:'请选择核对人员', + 请选择执行医生:'请选择执行医生', + 未选中批量执行医嘱:'未选中批量执行医嘱', + 护士:'护士', + 医生:'医生', + 请选择开始时间:'请选择开始时间', + 收起:'收起', + 展开:'展开', + 添加子药:'添加子药', + 请选择输入医嘱名称:"请选择/输入医嘱名称", + 暂无子药:'暂无子药', + 删除子药:'删除子药', + 透析物品检查:"透析物品检查", + 正确:"正确", + 差错:'差错', + 双人核对:'双人核对', + 透析器及管路无破损和过期:'透析器及管路无破损和过期', + 一次性透析管路:'一次性透析管路', + 回血用NS:'回血用NS', + 请输入核对人密码验证:"请输入核对人密码验证", + 请输入密码:'请输入密码', + 核对时间:'核对时间', + 肝素补液口未双保险夹闭:"肝素补液口未双保险夹闭", + 管路有打折:'管路有打折', + 接口连接松动:'接口连接松动', + 压力传感器管夹未打开:'压力传感器管夹未打开', + 静脉管路未卡入保护夹:'静脉管路未卡入保护夹', + 动静脉壶液面不标准:'动静脉壶液面不标准', + 透析液连接错误:'透析液连接错误', + 肝素管夹未开启:'肝素管夹未开启', + 泵前补液侧管未夹:'泵前补液侧管未夹', + 管道连接核查:'管道连接核查', + 动静脉接错:'动静脉接错', + 渗血:'渗血', + 压迫:'压迫', + 折叠:'折叠', + 滑脱:'滑脱', + 处方血流量:'处方血流量', + 方案备注:'方案备注', + 透析参数核查:'透析参数核查', + 血管通路核查:'血管通路核查', + 确认人不能为空:'确认人不能为空', + 核对人密码验证识别:'核对人密码验证识别,请重新验证', + 监测记录:'监测记录', + 导出IOT联机数据:'导出IOT联机数据', + iot消息:"并不是每台设备都支持IOT导出. 只有联机的设备才能导出,导出的间隔为5分钟", + 上:"上", + 下:'下', + 在线:"在线", + 置换量:'置换量', + 置换率:'置换率', + 透析液温度:'透析液温度', + 电导度:'电导度', + 钠浓度:'钠浓度', + 超滤量:'超滤量', + 超滤率:'超滤率', + 跨膜压:'跨膜压', + 动脉压:'动脉压', + 静脉压:'静脉压', + 添加监测记录:'添加监测记录', + 编辑监测记录:'编辑监测记录', + 监测记录确认成功:'监测记录确认成功', + 请选择您要删除的监测记录:"请选择您要删除的监测记录", + 该患者暂无监测记录或监测记录小于两条:'该患者暂无监测记录或监测记录小于两条', + 删除成功:"删除成功", + 上次监测:'上次监测', + 请选择监测护士:"请选择监测护士", + 联机数据获取成功:'联机数据获取成功', + 超滤量类型应为数字:'超滤量类型应为数字', + 超滤率类型应为数字:'超滤率类型应为数字', + 距上次时间差为负数不能计算:'距上次时间差为负数不能计算', + 置换液量类型应为数字:'置换液量类型应为数字', + 置换率类型应为数字:'置换率类型应为数字', + 上次置换量无法取值不能计算:'上次置换量无法取值,不能计算', + 请检查收缩压舒张压是否正确:'请检查收缩压/舒张压是否正确', + 请选择监测记录所属日期:'请选择监测记录所属日期', + 所属日期:'所属日期', + 监测时间:"监测时间", + 症状选项:'症状选项', + 结果描述:'结果描述', + 结果选项:'结果选项', + 处理描述:"处理描述", + 处理选项:'处理选项', + 症状描述:'症状描述', + 在线尿素:'在线尿素', + 血容量:'血容量', + 监测护士:'监测护士', + 设置:'设置', + 置换液速率:'置换液速率', + 置换液量:'置换液量', + 是否忽略必填校验:'是否忽略必填校验', + 透后宣教:'透后宣教', + 宣教人:'宣教人', + 透析小结:'透析小结', + 小结签名:'小结签名', + 签名:'签名', + 导出病程:'导出病程', + 自动生成小结:'自动生成小结', + 穿刺位点:'穿刺位点', + 穿刺方向:'穿刺方向', + 关闭:"关闭", + 应用到小结:'应用到小结', + 重新生成:'重新生成', + 请求中:'请求中', + 透后小结:'透后小结', + 治疗医生:"治疗医生", + 智能推荐模版:"智能推荐模版", + 智能推荐模板取消勾选已有选项:'智能推荐模板取消勾选已有选项', + 结束透析时间:"结束透析时间", + 凝血:'凝血', + 实际透析时长:"实际透析时长", + 提前下机:"提前下机", + 症状处理结果:'症状处理结果', + 透后血压:'透后血压', + 体重减少:'体重减少', + 干体重达标:'干体重达标', + 干体重是否调整:'干体重是否调整', + 实际脱水量:'实际脱水量', + 透后体重:'透后体重', + 透后评估:'透后评估', + 实际超滤量:'实际超滤量', + 实际置换量:'实际置换量', + 透析中进食:'透析中进食', + 透析中输液:'透析中输液', + 透析中输血:"透析中输血", + 透析中冲管:'透析中冲管', + 透后症状:'透后症状', + 并发症:'并发症', + 透后衣物重:'透后衣物重', + 实际治疗时长:'实际治疗时长', + 请输入:'请输入', + 校验不通过:'校验不通过', + 透后评估数据存在多项请联系管理员删除:'透后评估数据存在多项请联系管理员删除', + 透析单确认透后评估异常:'透析单确认透后评估异常', + 医生治疗小结:'医生治疗小结', + 请输入医生治疗小结:'请输入医生治疗小结', + 自动生成完成:'自动生成完成', + 是否需要系统辅助生成小结:'是否需要系统辅助生成小结?', + 导出成功:'导出成功', + 透析单code异常:'透析单code异常', + 当前医生治疗小结存在多条数据:'当前医生治疗小结存在多条数据,请联系管理员删除', + 保存子药:"保存子药", + 结束时间:"结束时间", + 保存成功:'保存成功', + 提醒:'提醒', + 联机获取:'联机获取', + 计算:'计算', + 总:'总', + 是否只展示最后一次结果:"是否只展示最后一次结果", + 默认查询全部:'默认查询全部', + 转归状态:'转归状态', + 不限:'不限', + 在院:'在院', + 转出:'转出', + 未检测人员:'未检测人员', + 检验日期:"检验日期", + 患者姓名:'患者姓名', + 不达标:'不达标', + 达标:"达标", + 标准值:"标准值", + 标准值设定:'标准值设定', + 控制率:'控制率', + 未检测人数:'未检测人数', + 不达标的患者人数:'不达标的患者人数', + 达标患者人数:'达标患者人数', + 铁蛋白:'铁蛋白', + 血清铁蛋白:'血清铁蛋白', + 超敏C反应蛋白:'超敏C反应蛋白', + C反应蛋白:'C反应蛋白', + 动静脉内瘘生存率:"动静脉内瘘生存率", + 甘油三酯:'甘油三酯', + 甲状旁腺激素:'甲状旁腺激素', + "Kt/V":'Kt/V', + URR:'URR', + β2微球蛋白:'β2微球蛋白', + 前白蛋白:'前白蛋白', + 总蛋白:'总蛋白', + 体重增长:'体重增长', + '透析前尿素氮,透析后尿素氮,尿素氮,尿素':"尿素氮", + 尿酸:"尿酸", + 白蛋白:"血清白蛋白", + 血红蛋白:'血红蛋白', + 中性粒细胞百分比:"中性粒细胞百分比", + 血压控制:'血压控制', + 转铁蛋白饱和度:'转铁蛋白饱和度', + 透析龄:"透析龄", + 主治医师:"主治医师", + BNP:'BNP', + 规格:"规格", + 单位:'单位', + 自备量:'自备量', + 已使用:'已使用', + 剩余:'剩余', + 操作:'操作', + 新增:'新增', + 明细表单:"明细表单", + 选择药品:'选择药品', + 你确定要删除改记录:'你确定要删除改记录?', + 症状:'症状', + 处理:'处理', + 结果:"结果", + 打印设置:'打印设置', + 收缩压标准值设定: '收缩压标准值设定', + 舒张压标准值设定: '舒张压标准值设定', + 年龄标准值设定: '年龄标准值设定', + 标准值仅可为大于等于0的数值: '标准值仅可为大于等于0的数值', + 标准值不能小于0: '标准值不能小于0', + 最近平均脱水量: '最近平均脱水量', + 最近最大脱水量: '最近最大脱水量', + 最近最大脱水量日期: '最近最大脱水量日期', + 单项合计: '单项合计', + 磷: '磷', + 床位排序: '床位排序', + 签到排序: '签到排序', + 透析号排序: '透析号排序', + 我的患者: '我的患者', + 责护患者: '责护患者', + }, + 今日医嘱: { + 请输入药品名称: '请输入药品名称', + 请选择: '请选择', + 查询日期: '查询日期', + 开始日期: '开始日期', + 结束日期: '结束日期', + 给药途径: '给药途径', + 时段: '时段', + 患者姓名: '患者姓名', + 患者病区: '患者病区', + 透析方式: '透析方式', + 是否核对: '是否核对', + 统计已签到的透析单: '统计已签到的透析单', + 是否显隐藏患者自备药: '是否显隐藏患者自备药', + 查询: '查询', + 医嘱确认: '医嘱确认', + 自定义打印项: '自定义打印项', + 打印: '打印', + 打印标签: '打印标签', + 勾选打印: '勾选打印', + 表单打印: '表单打印', + 导出: '导出', + 上午: '上午', + 下午: '下午', + 晚上: '晚上', + 全部: '全部', + 是: '是', + 否: '否', + 医嘱信息: '医嘱信息', + 药剂统计: '药剂统计', + 已核对: '已核对', + 未核对: '未核对', + '透前体重(kg)': '透前体重(kg)', + '干体重(kg)': '干体重(kg)', + '透前血压(mmHg)': '透前血压(mmHg)', + '处方脱水量(L)': '处方脱水量(L)', + '目标脱水量(L)': '目标脱水量(L)', + '超滤总量(L)': '超滤总量(L)', + '剂量(首剂)(维持/追加)(总量)': '剂量(首剂)(维持/追加)(总量)', + '透析时长(H)': '透析时长(H)', + } +}; diff --git a/src/i18n/lang/zh-tw.ts b/src/i18n/lang/zh-tw.ts new file mode 100644 index 0000000..9fcc185 --- /dev/null +++ b/src/i18n/lang/zh-tw.ts @@ -0,0 +1,1214 @@ +// 定义内容 +export default { + router: { + xycskz:'血壓例次控制率', + zhibeiyao:'自備藥管理', + home: '首頁', + patient:'患者管理', + HemodiPatients:'病案首頁', + PatientFormDetails:"患者資訊", + PatientList:'患者清單', + outComeRecord:'轉歸記錄', + wenshuguanli:'文書管理', + hemoMed:'透析管理', + bedView:'床位圖', + QC:'質控', + lisApi:'LisApi', + dataGlobalItem:'勝透物品基礎庫', + weightRecord:'體重記錄', + xgtlQc:'血管通路分類', + yueXiaoJie:'月小結', + yihupaiban:'醫護排班', + yihuPaiban:'排班', + paibanSet:'排班設定', + duibi:'透析品質對比', + analyse:'品質分析', + statistics:'檢驗資料統計', + hemoMedScheme:'透析方案', + gongyinglian:'供應鏈', + datatongji:"檢驗資料統計", + canPingDuiZhao:'維護產品對照', + medicalHistory: '患者病史', + personalInfo: '個人資訊', + courseRecord: '病程記錄', + physiqueCheck: '體格檢查', + xiaodutongji:'消毒統計', + kidneyTest: '腎臟檢驗', + inspectors: '檢驗檢查', + banbenweihu:'版本維護', + dryWeight: '幹體重', + rentichengfenfenxiyi:'成分分析仪检验', + vascularAccess: '血管通路', + paibanTongji:'統計査詢', + ChroDisePatients:'慢病患者', + scheduling:'排班管理', + NurseRostering:'護士排班', + PatientsWithScheduling:'患者排班', + scheduleTemplate:'排班範本', + DialysisRecord:'透析記錄', + signIn: '簽到', + erjichuku:'二級出庫', + erjiCheck:'庫房盤點', + fee:"收費", + feeOrder:"收費清單", + feeChufang:"門診處方", + feeGroup:'收費套餐維護', + feeDict:'收費項目維護', + erjikefangwf: '二級庫房維護', + erjikufang:'二級庫房', + inventory2Query:'二級庫房査詢', + yiqikufang:'一級庫房', + weigh:'簽到稱重', + hzZaiYao:'月度小結', + signinJIlu:"簽到記錄", + xuedanbai:'血清白蛋白控制率', + gai:'鈣控制率', + jia:'鉀控制率', + jzxjs:'甲狀旁腺激素控制率', + xhdb:'血紅蛋白控制率', + ling:'磷控制率', + kfzdsz:'庫房字典設定', + dialysisForm:'透析單', + KeshiQc:'科室質控', + doctorsAdvice:'今日醫囑', + TestItem:'檢查項目維護', + prepare:'透析準備', + jianyanQc:'檢驗檢查', + monitor:'透析監測', + WorkStats:'工作量統計', + Loglog:'交班日誌', + stockControl:'庫存管理', + inventoryOperate: '入庫管理', + inventory2Operate:'入庫管理', + outStock: '出庫管理', + storage:'入庫管理', + jymbdcl:'檢驗目標達成率', + urrKzl:'URR控制率', + fromStorage:'庫存管理', + StockSearch:'庫存査詢', + inventoryQuery:'一级庫存査詢', + inventoryCheck:'庫存盤點', + Stocktaking:'庫存盤點', + InventoryDictionary:'庫存字典', + touxiJilu:'透析記錄單', + HaoCaiTongji:'耗材統計', + jianyanDatatongji:"檢驗資料統計", + zkpzfx:"質控品質分析", + IDCzkpztj:"IDC透析品質分析對比", + yaoPingTongJi:'藥品統計', + NurseWorkStats:'護士工作量', + DealerDictionary:'經銷商字典', + ManufacturerDic:'廠家字典', + AiMenu:'Ai', + xinSuai:'心衰預警AI', + xinSuaiTu:'心衰預警趨勢', + xinshuaiAi:'心衰預警', + jiFengGuiZhe:'積分規則', + patientAdmin:'患者管理', + MedicalAdvice:'醫囑', + diseaseDiagnosis:'患者診斷', + DictDiagnose:'診斷字典', + SchemeDic:'透析方案', + device:'設備', + deviceAdmin:'設備管理', + signMachine:'自助簽到終端', + commServiceDevice:'自助終端硬體狀態', + deviceInfo:'基本資訊', + deviceList:'設備清單', + DisinfectionPlan:'消毒計畫', + xiaodujilu:'消毒記錄', + xiaoduzidian:'消毒字典管理', + deviceXiaodu:'設備消毒', + useRegistration:'使用登記', + qc:'品質控制', + Work:'工作量', + Maintenance:'維修維護', + deviceGroup:'設備分區', + system: '系統', + systemSet: '系統設置', + reportShow: '報告査詢', + checkout: '檢驗', + feeitem:'收費項目維護', + jianchaxiangmu:'檢驗項目維護', + lisBarcode:"門診採樣", + class:'檢驗分類', + lisOorder:'檢驗申請', + feeitemVsClass:'檢驗分類收費項目對照', + basicsDic:'基礎字典', + dialysisSet:'透析設定管理', + userSet:'客戶自定義設定', + systemMenu: '選單管理', + systemRole: '角色管理', + systemUser: '用戶管理', + systemDept: '部門管理', + systemDic: '字典管理', + drugDic: '藥物字典', + medicalOrderDrugTemplate: '藥物醫囑範本', + diseaseCourseTemplate: '病程範本', + workDoneTemplate: '透析小結', + healthEducation: '健康宣教', + customDic:'自定義字典', + clientsAdmin:'客戶管理', + limits: '許可權管理', + limitsFrontEnd: '前端控制', + limitsFrontEndPage: '頁面許可權', + limitsFrontEndBtn: '按鈕許可權', + limitsBackEnd: '後端控制', + limitsBackEndEndPage: '頁面許可權', + menu: '菜单嵌套', + menu1: '菜单1', + menu11: '菜单11', + menu12: '菜单12', + menu121: '菜单121', + menu122: '菜单122', + menu13: '菜单13', + menu2: '菜单2', + funIndex: '功能', + funTagsView: 'tagsView 操作', + funCountup: 'countup 数字滚动', + funEchartsTree: 'echartsTree 树图', + funSelector: '图标选择器', + funNoticeBar: '滚动通知栏', + funWangEditor: 'wangEditor 编辑器', + funCropper: 'cropper 图片裁剪', + funQrcode: 'qrcode 二维码生成', + funEchartsMap: '地理坐标/地图', + funPrintJs: '页面打印', + baogaochaxun:'检验项目报告', + funClipboard: '复制剪切', + funScreenShort: 'web端自定义截屏', + funGridLayout: '拖拽布局', + funSplitpanes: '窗格拆分器', + funDragVerify: '验证器', + pagesIndex: '页面', + pagesFiltering: '过滤筛选组件', + pagesFilteringDetails: '过滤筛选组件详情', + pagesFilteringDetails1: '过滤筛选组件详情111', + pagesIocnfont: 'iconfont 字体图标', + pagesElement: 'element 字体图标', + pagesAwesome: 'awesome 字体图标', + pagesCityLinkage: '城市多级联动', + pagesFormAdapt: '表单自适应', + pagesFormI18n: '表单国际化', + pagesFormRules: '多表单验证', + pagesDynamicForm: '动态复杂表单', + pagesWorkflow: '工作流', + pagesListAdapt: '列表自适应', + pagesWaterfall: '瀑布屏', + pagesSteps: '步骤条', + pagesPreview: '大图预览', + pagesWaves: '波浪效果', + pagesTree: '树形改表格', + pagesDrag: '拖动指令', + pagesLazyImg: '图片懒加载', + paramsIndex: '路由参数', + paramsCommon: '普通路由', + paramsDynamic: '动态路由', + paramsCommonDetails: '普通路由详情', + paramsDynamicDetails: '动态路由详情', + chartIndex: '大数据图表', + visualizingIndex: '数据可视化', + visualizingLinkDemo1: '数据可视化演示1', + visualizingLinkDemo2: '数据可视化演示2', + personal: '个人中心', + tools: '工具类集合', + layoutLinkView: '外链', + layoutIfameView: '内嵌 iframe', + images: "影像", + imagesIndex: "影像", + disinfection: "消毒", + disinfectionIndex: "消毒", + patientTestingTrend: "患者檢驗趨勢", + bloodProteinTrend: "白蛋白趨勢", + hemoglobin: "血紅蛋白趨勢", + urr: "URR趨勢", + ktv: "Kt/V趨勢", + statistics2: "統計", + inspect: "檢驗", + inspectionControlRate: "檢驗控制率", + inspectionTrend: "檢驗趨勢", + analysisDialysisQuality: "透析品質分析", + dataConversion: "資料轉換", + groupCustomerComparison: "集團客戶對照", + hisSetUp: 'HIS設定', + barcodePrintingSettings: "條碼列印設定", + backendReportManagement: '後端報表管理', + outpatientRecords: '門診記錄', + inventoryMonitoring: '庫存監測', + inventoryPurchaseAndSales: '庫存進銷', + checkData: '檢查數據', + barcodePrinting: '條碼列印', + secondaryOutboundStatistics: "二級出庫統計", + automaticOutboundManagement: '自動出庫管理', + "inspectionOutsourcing": "外部檢查", + "tdbkzl": "血清鐵蛋白控制率", + "zdykzl": "自定義檢驗項目", + "ticket": "支援票", + "maintenanceDialysate": "透析液維護", + "ktvkzl": "Kt/V控制率", + "tzkzl": "體重增加控制率", + "xykz": "血壓控制率", + "ztdbbhdkzl": "TSAT控制率", + "p2wqdbkzl": "β2微球蛋白控制率", + "patientAssessment": "患者評估", + slippage: '管道滑脫評估', + "djmnlsclKzl": "動靜脈瘻存續率控制率", + "patientsNumTongJi": "住院患者數統計", + "dialysisQualityStatistics": "透析品質統計", + "prescriptionInquiry": "處方查詢", + "inspectionDataStatistics": "檢驗數據統計", + "annualIndicatorControlRate": "年度指標控制率", + "weightGainControlDuringDialysis": "透析中體重增加控制率", + "dialyzerStatistics": "透析年數統計", + "earlyShutdownStatistics": "早期終止統計", + "patientBirthdayCalendar": "患者生日日曆", + "stageSummary": "階段摘要", + "patientPathologicalDiagnosis": "患者病理診斷", + "cReactiveProteinControlRate": "CRP控制率", + "infectiousDiseaseControlRate": "傳染病控制率", + "patientVascularAccessStatistics": "患者血管通路統計", + "ktvQuery": "Kt/V查詢", + "urrQuery": "URR查詢", + "supplementaryExamination": "輔助檢查", + "biochemicalTestReport": "生化檢驗報表", + "qualityControlReport": "品管報表", + "footCare": "足部管理", + "totalProtein": "總蛋白控制率", + "Prealbumin": "前白蛋白控制率", + "uricAcid": "尿酸控制率", + "ureaNitrogen": "BUN控制率", + "monthlyStatisticsOfDialysisFrequencyForPatients": "月次透析次數統計", + "dailyDialysisConsumptionDetails": "每日透析耗用明細", + "averageAgeAndAgeDistribution": "平均年齡和年齡分布", + "hospitalInfectionClinic": "院內感染門診", + "infectionEvent": "感染事件", + "monthlyReportOnInfectionEvents": "感染事件月度報告", + "bloodBornePathogenMonitoring": "血源性病原體監測", + "infectionControlRate": "感染事件控制率", + inspectionReport: "檢驗報告", + infectionControlEarlyWarning: '院感預警', + CACertification: 'CA認證', + 医院报表管理: "報表管理", + 压力性损伤评估: '壓力性損傷評估', + 跌倒评估: '跌倒評估', + 院感门诊: '院感門診', + secondaryCcreenVersionControl: '副屏版本维护', + }, + staticRoutes: { + signIn: '登入', + notFound: '找不到此頁面', + noPower: '沒有許可權', + }, + user: { + title0: '組件大小', + title1: '語言切換', + title2: '選單蒐索', + title3: '佈局配寘', + title4: '消息', + title5: '開全屏', + title6: '關全屏', + dropdownDefault: '默認', + dropdownMedium: '中等', + dropdownSmall: '小型', + dropdownMini: '超小', + dropdown1: '首頁', + dropdown2: '個人中心', + dropdown3: '404', + dropdown4: '401', + dropdown5: '登出', + dropdown6: '程式碼倉庫', + searchPlaceholder: '選單蒐索:支援中文、路由路徑', + newTitle: '通知', + newBtn: '全部已讀', + newGo: '前往通知中心', + newDesc: '暫無通知', + logOutTitle: '提示', + logOutMessage: '此操作將登出,是否繼續?', + logOutConfirm: '確定', + logOutCancel: '取消', + logOutExit: '退出中', + logOutSuccess: '安全退出成功!', + "测试环境哦": "測試環境哦!!!!", + "工单": "工單", + "请输入关键字": "請輸入關鍵字", + "关于": "關於", + "帮助": "幫助", + "取消": "取消", + "确认": "確認", + "我的工单": "我的工單", + "添加工单": "添加工單", + "提交日期": "提交日期", + "工单内容": "工單內容", + "状态": "狀態", + "已办结": "已辦結", + "已提交": "已提交", + "回复时间": "回覆時間", + "回复内容": "回覆內容", + "操作": "操作", + "查看": "查看", + "暂不不支持全屏": "暫不支持全屏", + "完整版本": "完整版本", + "发布版本": "發佈版本", + "当前患者信息": "當前患者資訊", + "姓名": "姓名", + "透析号": "透析號", + "暂无": "暫無" + }, + tagsView: { + refresh: '重繪', + close: '關閉', + closeOther: '關閉其它', + closeAll: '全部關閉', + fullscreen: '當前頁全屏', + closeFullscreen: '關閉全屏', + }, + notFound: { + foundTitle: '地址輸入錯誤,請重新輸入地址~', + foundMsg: '您可以先檢查網址,然後重新輸入或給我們迴響問題。', + foundBtn: '返回首頁', + notFoundTitle: '暂无权限或地址不存在' + }, + noAccess: { + accessTitle: '您未被授權,沒有操作許可權~', + accessMsg: '聯繫方式:加QQ群探討665452019', + accessBtn: '重新授權', + }, + layout: { + configTitle: '佈局配寘', + oneTitle: '全域主題', + twoTitle: '選單 / 頂欄', + twoTopBar: '頂欄背景', + twoMenuBar: '選單背景', + twoColumnsMenuBar: '分欄選單背景', + twoTopBarColor: '頂欄默認字體顏色', + twoMenuBarColor: '選單默認字體顏色', + twoColumnsMenuBarColor: '分欄選單默認字體顏色', + twoIsTopBarColorGradual: '頂欄背景漸變', + twoIsMenuBarColorGradual: '選單背景漸變', + twoIsColumnsMenuBarColorGradual: '分欄選單背景漸變', + twoIsMenuBarColorHighlight: '選單字體背景高亮', + threeTitle: '介面設定', + threeIsCollapse: '選單水准折疊', + threeIsUniqueOpened: '選單手風琴', + threeIsFixedHeader: '固定 Header', + threeIsClassicSplitMenu: '經典佈局分割選單', + threeIsLockScreen: '開啟鎖屏', + threeLockScreenTime: '自動鎖屏(s/秒)', + fourTitle: '介面顯示', + fourIsShowLogo: '側邊欄 Logo', + fourIsBreadcrumb: '開啟 Breadcrumb', + fourIsBreadcrumbIcon: '開啟 Breadcrumb 圖標', + fourIsTagsview: '開啟 Tagsview', + fourIsTagsviewIcon: '開啟 Tagsview 圖標', + fourIsCacheTagsView: '開啟 TagsView 緩存', + fourIsSortableTagsView: '開啟 TagsView 拖拽', + fourIsShareTagsView: '開啟 TagsView 共用', + fourIsFooter: '開啟 Footer', + fourIsGrayscale: '灰色模式', + fourIsInvert: '色弱模式', + fourIsDark: '深色模式', + fourIsWartermark: '開啟浮水印', + fourWartermarkText: '浮水印文案', + fiveTitle: '其它設定', + fiveTagsStyle: 'Tagsview 風格', + fiveAnimation: '主頁面切換動畫', + fiveColumnsAsideStyle: '分欄高亮風格', + fiveColumnsAsideLayout: '分欄佈局風格', + sixTitle: '佈局切換', + sixDefaults: '默認', + sixClassic: '經典', + sixTransverse: '橫向', + sixColumns: '分欄', + tipText: '點擊下方按鈕,複製佈局配寘去`src/store/modules/themeConfig.ts`中修改。', + copyText: '一鍵複製配寘', + resetText: '一鍵恢復默認', + copyTextSuccess: '複製成功!', + copyTextError: '複製失敗!', + title: '血液透析管理平臺', + "全部": "全部", + "留治": "留院治療", + "转出": "轉出", + "选择机号": "選擇機器編號", + "选择患者": "選擇病患" + }, + 透析单:{ + 处方还没确认你确定要双人核对: '處方還沒確認你確定要雙人核對', + 血温: '血溫', + "全天": "全天", + "上午": "上午", + "下午": "下午", + "晚上": "晚上", + "刷新": "重新整理", + "姓名": "姓名", + "状态": "狀態", + "班次": "班次", + "排班": "排班", + 批量打印: '批次列印透析單', + 请选择您需要打印的患者: '請選擇您需要列印的病患', + 变更记录: '變更紀錄', + 批量打印组件: { + 批量打印: '批次列印', + 患者姓名: '病患姓名', + 请选择: '請選擇', + 透析号: '透析號', + 透析日期: '透析日期', + 开始时间: '開始時間', + 结束时间: '結束時間', + 是否重新生成报表: '是否重新產生報表', + 取消: '取消', + 打印: '列印', + 血液净化治疗记录单预览: '血液淨化治療紀錄單預覽', + 请耐心等待正在加载: '請耐心等候,正在載入', + 第: '第', + 页: '頁', + 预计: '預計', + 共: '共', + 透析单日期不能为空: '透析單日期不能為空', + 没有可以打印的透析单: '沒有可列印的透析單', + }, + 患者信息组件: { + 治疗病区: '治療病區', + 住院病区: '住院病區', + 病区: '病房區域', + 住院门诊: '住院/門診', + 的: '的', + 上机单已经打印了: '上機單已經列印了', + 你确定还要重新打印: '你確定還要重新列印?', + 男: '男', + 女: '女', + 门诊: '門診', + 住院: '住院', + 号: '號', + 门诊号: '門診號', + 住院号: '住院號', + 没有找到选中日期的透析单: '沒有找到選中日期的透析單', + 上午: '上午', + 下午: '下午', + 晚上: '晚上', + 透析单编号为空请刷新后重试: '透析單編號為空,請重繪後重試', + 此操作将对: '此操作將對', + 进行手动HIS签到就诊操作是否确定: '進行手動HIS簽到就診操作,是否確定?', + 提示: '提示', + 确定: '確定', + 取消: '取消', + 操作成功: '操作成功', + 开始叫号: '開始叫號', + 结束叫号: '結束叫號', + 下机: '下機', + 此操作将会同步修改患者快照是否确认: '此操作將會同步修改患者快照,是否確認?', + 是否要删除: '是否要删除', + 的透析单: '的透析單', + 警告: '警告', + 删除成功: '删除成功', + 已发送打印上机单任务: '已發送列印上機單任務', + 自查成功: '自查成功', + 归档后透析单将无法修改您确定要归档: '歸檔後透析單將無法修改,您確定要歸檔?', + 归档成功: '歸檔成功', + }, + 透析处方组件: { + 透析机: '透析機', + }, + 临时医嘱组件: { + 添加: '新增', + 执行: '執行', + }, + 监测记录组件: { + 获取联机数据: '獲取連線資料', + 症状: '症狀', + 处理: '處理', + 结果: '結果', + }, + 透后小结组件: { + AI生成小结: 'AI 產生小結', + }, + 打印模板组件: { + 模板设置: '模板設定', + 设为默认样式: '設為預設樣式', + 默认模板: '預設模板', + 公共模板: '共用模板', + }, + 修改透析单状态组件: { + 修改透析单状态: '修改透析單狀態', + 姓名: '姓名', + 状态: '狀態', + 取消: '取消', + 确认: '確認', + 未签到: '未簽到', + 已签到: '已簽到', + 透析中: '透析中', + 已结束: '已結束', + 已检查: '已檢查', + 已归档: '已歸檔', + 操作成功: '操作成功', + }, + 透析记录日历视图组件: { + 透析记录日历视图: '透析記錄行事曆視圖', + 姓名: '姓名', + 透析号: '透析號', + 性别: '性別', + 男: '男', + 女: '女', + 年龄: '年齡', + 未找到对应透析单: '未找到對應透析單', + 今天: '今天', + 月视图: '月視圖', + 周视图: '周視圖', + 天视图: '天視圖', + 列表: '清單', + 上午: '上午', + 下午: '下午', + 晚上: '晚上', + }, + 透析单打印组件: { + 请耐心等待: '請耐心等待', + 正在加载: '正在加載', + 第: '第', + 页: '頁', + 共: '共', + 血液净化治疗记录单预览: '血液淨化治療記錄單預覽', + 请勾选您需要打印的患者: '請勾選您需要列印的患者', + 没有找到可以打印的透析单: '沒有找到可以列印的透析單', + }, + IOT联机数据组件: { + IOT联机数据: 'IOT聯機數據', + 时间: '時間', + 超滤量: '超濾量', + 置换量: '置換量', + 血流量: '血流量', + 静脉压: '靜脈壓', + 跨膜压: '跨膜壓', + 脱水率: '脫水率', + 透析液流速: '透析液流速', + 透析液温度: '透析液溫度', + 置换率: '置換率', + 动脉压: '動脈壓', + 电导度: '電導度', + 取消: '取消', + 导出为EXCEL: '匯出為EXCEL', + 导出成功: '匯出成功', + }, + 自查组件: { + 自查提示: '自查提示', + 模块: '模塊', + 自查描述: '自查描述', + 操作: '操作', + 查看: '查看', + 取消: '取消', + 确认: '確認', + 临时医嘱: '臨時醫囑', + 透前评估: '透前評估', + 透后小结: '透後小結', + 双人核对: '雙人核對', + 透后评估: '透後評估', + 透析监测: '透析監測', + 透析单: '透析單', + }, + 患者最近检验结果组件: { + 患者最近检验结果: '患者最近檢驗結果', + 匹配失败请联系管理员: '匹配失敗,請聯系管理員', + 趋势: '趨勢', + 标准值上限: '標準值上限', + 标准值下限: '標準值下限', + 系统异常请刷新后重试: '系統异常,請重繪後重試', + 请输入有效的日期: '請輸入有效的日期', + 年: '年', + 月: '月', + }, + 修改记录组件: { + 修改记录: '修改記錄', + 序号: '序號', + 日期: '日期', + 修改字段: '修改欄位', + 旧值: '舊值', + 新值: '新值', + 操作人: '操作人', + }, + 物品名称: '物品名稱', + 编辑血温: '編輯血溫', + "签到": "簽到", + "溶栓":'溶栓', + "开始溶栓":'開始溶栓', + "确认溶栓":'此操作將禁用除醫囑以外的所有操作權限,是否同意?', + "未签到": "未簽到", + "已签到": "已簽到", + "透析中": "透析中", + "已结束": "已結束", + "已下机": "已下機", + "治疗中": "治療中", + "已检查": "已檢查", + "已归档": "已歸檔", + "已自查": "已自查", + "患者信息": "患者資訊", + "保存": "保存", + "干体重": "乾體重", + "衣物重": "衣物重", + "称重方式": "稱重方式", + "透前称重": "透析前稱重", + "透前体重": "透析前體重", + "目标脱水": "目標脫水量", + "脱水百分比": "脫水百分比", + "温度": "體溫", + "呼吸": "呼吸", + "脉搏": "脈搏", + "透后称重方式": "透析後稱重方式", + "透后称重": "透析後稱重", + "查询日期": "查詢日期", + "排班时段": "排班時段", + "选择患者": "選擇患者", + "医嘱名称": "醫囑名稱", + "是否核对": "是否核對", + "已核对": "已核對", + "未核对": "未核對", + "给药途径": "給藥途徑", + "是否只统计已签到的透析单": "是否僅統計已簽到的透析單", + "是否显隐藏患者自备药": "是否顯示隱藏患者自備藥", + "病区选择": "病區選擇", + "医嘱": "醫囑", + "统计": "統計", + "查询": "查詢", + "医嘱确认": "醫囑確認", + "自定义打印": "自訂列印", + "自定义打印列": "自訂列印欄位", + "医嘱自定义打印列设置": "醫囑自訂列印欄位設定", + "分区": "分區", + "年龄": "年齡", + "执行时间": "執行時間", + "备注": "備註", + "床号": "床號", + "时段": "時段", + 时段2: '時段', + "性别": "性別", + "透析方式": "透析方式", + "开嘱医生": "開立醫師", + "核对人员": "核對人員", + "执行人员": "執行人員", + "取消": "取消", + "确定": "確定", + "打印勾选": "列印勾選", + "打印": "列印", + "表单打印":'表單列印', + "打印标签": "列印標籤", + "导出": "匯出", + "选择打印机": "選擇印表機", + "合计": "合計", + "请选择排班患者": "請選擇排班患者", + "全部": "全部", + "全选": "全選", + "请选择": "請選擇", + "开始日期": "開始日期", + "结束日期": "結束日期", + "是": "是", + "否": "否", + "NO": "NO", + "统计自定义打印列设置": "統計自訂列印欄位設定", + "当天": "當天", + "七天": "7天", + "本月": "本月", + "三个月": "三個月", + "该功能仅针对医嘱生效": "該功能僅針對【醫囑】生效", + "请至少选择一个您要打印的列": "請至少選擇一個您要列印的欄位", + "操作成功": "操作成功", + "没有查询到数据": "沒有查詢到資料", + "请先选择你要打印的医": "請先選擇你要列印的醫", + "医嘱打印成功": "醫囑列印成功", + "打印失败": "列印失敗", + "请先选择你要操作的患者": "請先選擇你要操作的患者!", + "没有勾选项": "沒有勾選項", + "没有选择的医嘱项": "沒有選擇的醫囑項目", + "确认成功": "確認成功", + "选择排班日期": "選擇排班日期", + "查询时段": "查詢時段", + "请选择查询时段": "請選擇查詢時段", + "统计方式": "統計方式", + "请选择统计方式": "請選擇統計方式", + "请选择处方状态": "請選擇處方狀態", + "处方状态": "處方狀態", + "患者查询": "患者查詢", + "关键字查询": "患者姓名/拼音碼/關鍵字", + "按物品类型统计": "按物品類型統計", + "按物品规格统计": "按物品規格統計", + "未确认": "未確認", + "已确认": "已確認", + "病区": "病區", + "若需查询已删除全部病区数据请将该选项置于全未选状态": "若需查詢已刪除/全部病區資料,請將該選項置於全未選狀態", + "透析耗材准备打印设置": "透析耗材準備列印設定", + "打印透析器标签": "列印透析器標籤", + "打印治疗单": "列印治療單", + "透析耗材统计打印设置": "透析耗材統計列印設定", + "上机参数打印设置": "上機參數列印設定", + "A4打印": "A4列印", + "标签打印": "標籤列印", + "药品准备打印设置": "藥品準備列印設定", + "药品统计打印设置": "藥品統計列印設定", + "药品统计2打印设置": "藥品統計2列印設定", + "请选择您要使用的打印机": "請選擇您要使用的印表機", + "请选择查询日期": "請選擇查詢日期", + "暂无可打印数据": "暫無可列印資料", + "请选择您要打印的数据": "請選擇您要列印的資料", + "透析耗材准备": "透析耗材準備", + "透析耗材统计": "透析耗材統計", + "上机参数": "上機參數", + "药品准备": "藥品準備", + "药品统计": "藥品統計", + "药品统计2": "藥品統計2", + "页面显示字段": "頁面顯示欄位", + "人工肾": "人工腎", + "透析液流量": "透析液流量", + "钙": "鈣", + "葡萄糖": "葡萄糖", + "血管通路": "血管通路", + "穿刺针": "穿刺針", + "穿刺针型号": "穿刺針型號", + "一次性使用管路": "一次性使用管路", + "护理包": "護理包", + "浓缩液": "濃縮液", + "补液管": "補液管", + "穿刺方式": "穿刺方式", + "穿刺针A": "穿刺針A", + "穿刺针V": "穿刺針V", + "日期": "日期", + "配药人": "配藥人", + "核对人": "核對人", + "物品类型": "物品類型", + "物品规格": "物品規格", + "数量": "數量", + "透析器": "透析器", + "透析时长": "透析時長", + "剂量": "劑量(首劑)(維持/追加)(總量)", + "超滤总量": "超濾總量", + "透析号": "透析編號", + "目标脱水量": "目標脫水量", + "处方脱水量": "處方脫水量", + "透前血压": "透析前血壓", + "抗凝剂": "抗凝劑", + "开药数量": "開藥數量", + "单次剂量": "單次劑量", + "药品名称": "藥品名稱", + "药品分类": "藥品分類", + "药品规格": "藥品規格", + "是否确认处方": "是否確認處方", + "葡萄糖酸钙": "葡萄糖酸鈣", + 肝素钠注射液: "肝素鈉注射液", + "骨化三醇": "骨化三醇", + "帕立骨化醇": "帕立骨化醇", + "尿激酶": "尿激酶", + "庆大霉素": "慶大黴素", + "蔗糖铁": "蔗糖鐵", + "左卡尼汀": "左卡尼汀", + "促红": "促紅素", + "执行人": "執行人", + "患者来源": "患者來源", + "勾选打印": "勾選列印透析單", + "批量归档": "批次歸檔", + "模板设置": "模板設定", + "开始透析": "開始透析", + "结束透析": "結束透析", + "门诊": "門診", + "住院": "住院", + "转出患者": "轉出患者", + "全部患者": "全部患者", + "我负责的患者": "我負責的患者", + "打印模板设置": "列印模板設定", + "选择": "選擇", + "预览": "預覽", + "透析护理包": "透析護理包", + "透析浓缩液": "透析濃縮液", + "血滤管": "血液濾過管", + "入科方式": "入科方式", + 入科时间:'入科時間', + "出科方式": "出科方式", + "出科时间": "出科時間", + "步行": "步行", + "扶行": "扶行", + "轮椅": "輪椅", + "平床": "平車", + "床旁": "床邊", + "助行器": "助行器", + "引血": "引血", + "透析器编号": "透析器編號", + "穿刺护士": "穿刺護士", + "换药护士": "換藥護士", + "穿刺": "穿刺", + "换药": "換藥", + "预充管路": "預充管路", + "上机护士": "上機護士", + "治疗护士": "治療護士", + "开始时间": "開始時間", + "正常": "正常", + "卧床": "臥床", + "拒测": "拒測", + "找到指定透析单": "找到指定透析單,未找到指定透析單,系統將重置選中資料", + "未匹配到指定透析单患者": "未匹配到指定透析單患者,系統將重置選中資料", + "请勾选您需要打印的患者": "請勾選您需要列印的患者", + "请勾选您需要归档的患者": "請勾選您需要歸檔的患者", + "归档后透析范将无法修改": "歸檔後透析方案將無法修改,您確定要歸檔?", + "没有选中行": "沒有選中行!", + "处方还没确认你确定要开始透析": "處方還未確認您確定要開始透析?", + "时间": "時間", + "下机护士": "下機護士", + "提示": "提示", + "回血": "回血", + "手动HIS签到就诊": "手動HIS簽到就診", + "叫号": "叫號", + "结束叫号": "結束叫號", + "确认": "確認", + "确认至患者信息": "確認至患者資訊", + "删除": "刪除", + "打印上机单": "列印上機單", + "打印透析单": "列印透析單", + "自查": "自查", + "归档": "歸檔", + "修改透析单状态": "修改透析單狀態", + "诊断": "診斷", + "透析日期": "透析日期", + "传染病": "傳染病", + "首次透析日期": "首次透析日期", + "透析次数": "透析次數", + "入院时间": "入院時間", + "透析床号": "透析床號", + "透析大区": "透析大區", + "门诊号": "門診號", + "住院号": "住院號", + "重新打印": "重新列印", + "透析处方": "透析處方", + "机型": "機型", + "抗凝剂公式": "抗凝劑公式", + "自定义维持时长": "自訂維持時長", + "首剂": "首劑", + "维持": "維持", + "总量": "總量", + "钙名称": "鈣名稱", + "钙剂量": '钙剂量', + "请输入时机": "請輸入時機", + "追加": "追加", + "冲洗时间": "沖洗時間", + "冲洗量": "沖洗量", + "碳酸氢根": "碳酸氫根", + "处方钠": "處方鈉", + "配方钠": "配方鈉", + "调整": "調整", + "血滤器": "血液濾過器", + "血透器": "血液透析器", + "通路类型": "通路類型", + "置换总量": "置換總量", + "修改记录": "修改記錄", + "同步至透析方案": "同步至透析方案", + "修改确认时间": "修改確認時間", + "置换方式": "置換方式", + "血流量": "血流量", + "时长": "時長", + "钾": "鉀", + "灌流器": "灌流器", + "处方脱水量格式错误": "處方脫水量格式錯誤", + "处方已经确认了你确定要重新确认": "處方已經確認,您確定要重新確認?", + "同步成功": "同步成功", + "同步失败": "同步失敗", + "没有选择透析单": "沒有選擇透析單", + "调整成功": "調整成功", + "确认要调整床号吗": "確認要調整床號嗎?", + "警告": "警告", + "确认要修改透析方案": "確認要修改透析方案", + "请选中透析单后再进行查询": "請選中透析單後再進行查詢", + "最近检验结果": "最近檢驗結果", + "上次透后体重": "上次透析後體重", + "上次透后称重": "上次透析後稱重", + "血压": "血壓", + "尿量": "尿量", + 疼痛: '疼痛', + "体温": "體溫", + "预增脱水": "預增脫水", + "体重增加": "體重增加", + "同步": "同步", + "收缩压": "收縮壓", + "舒张压": "舒張壓", + "上肢": "上肢", + "下肢": "下肢", + "测不出": "測不出", + "未测":'未测', + "前次透析后": "前次透析後", + "导管": "導管", + "合并症": "併發症", + "内瘘": "動靜脈內瘘", + "透前症状": "透析前症狀", + "签到时间": "簽到時間", + "修改签到时间": "修改確認時間", + "请输入透前称重": "請輸入透析前稱重", + "请选择透前称重方式": "請選擇透析前稱重方式", + "请输入干体重": "請輸入乾體重", + "请输入体温": "請輸入體溫", + "不详": "不詳", + "请先签到后才能确认": "請先簽到後才能確認", + "患者尚未签到是否继续确认保存": "患者尚未簽到是否繼續確認保存", + "表单明细没有验证通过": "表單明細未通過驗證", + "签到时间修改成功": "簽到時間修改成功", + "确认要将此衣物重同步至该患者的所有透析方案下吗": "確認是否要將此衣物重新同步至該患者的所有透析方案及未簽到的透析單嗎?", + "衣物重为空不能同步": "衣物重為空不能同步", + "透前评估自定义内容格式化出错了": "透析前評估自訂內容格式化失敗", + "系统异常请刷新后重试": "系統異常,請重新整理後重試", + "透前评估": "透析前評估", + "取消自定义": "取消自訂", + "自定义": "自訂", + "临时医嘱": "臨時醫囑", + "医嘱模板": "醫囑模板", + "添加医嘱": "新增醫囑", + "修改医嘱": "修改醫囑", + "执行医嘱": "執行醫囑", + "修改": "修改", + "医嘱内容": "醫囑內容", + "没有选中要执行的医嘱": "沒有選中要執行的醫囑", + "请勾选您需要批量执行的医嘱": "請勾選您需要批次執行的醫囑", + "请勾选您要修改的医嘱": "請勾選您要修改的醫囑", + "仅支持单例修改请确保勾选的医嘱数量为1": "僅支援單筆修改,請確保勾選的醫囑數量為1", + "医嘱添加成功": "醫囑新增成功", + "执行医嘱成功": "執行醫囑成功", + "批量执行医嘱成功": "批次執行醫囑成功", + "请勾选您要删除的医嘱": "請勾選您要刪除的醫囑", + "请勾选您要打印的医嘱": "請勾選您要列印的醫囑", + "是否删除医嘱": "是否刪除醫囑", + "是否继续": ",是否繼續?", + "医嘱删除成功": "醫囑刪除成功", + "当前操作的是": "目前操作的是", + "是否确认": "是否確認", + "透析单": "透析單", + "长期医嘱": "長期醫囑", + "医嘱类型": "醫囑類型", + "医嘱日期": "醫囑日期", + "开单医生": "開單醫師", + "医嘱开始时间": "醫囑開始時間", + "选择日期": "選擇日期", + "请选择开单医生": "請選擇開單醫師", + "请选择医嘱名称": "請選擇醫囑名稱", + "请输入单次用量": "請輸入單次用藥量", + "请输入开药数量": "請輸入開藥數量", + "请选择给药途径": "請選擇給藥途徑", + "请选择执行频率": "請選擇執行頻率", + "请输入备注": "請輸入備註", + "执行频率": "執行頻率", + "单次用量": "單次用藥量", + "子药": "子藥", + "单独保存子药内容需要点击该按钮": "單獨保存子藥內容需要點擊該按鈕-------------->>>>", + "子药内容": "子藥內容", + "选择的医嘱项目": "選擇的醫囑項目", + "医嘱项目": "醫囑項目", + "模板名称": "模板名稱", + "添加": "新增", + "没有选择项": "沒有選擇項!", + "已经选择了当前项目": "已經選擇了當前項目!", + "执行": "執行", + "请选择核对人员": "請選擇核對人員", + "请选择执行医生": "請選擇執行醫師", + "未选中批量执行医嘱": "未選中批次執行醫囑", + "护士": "護士", + "医生": "醫師", + "请选择开始时间": "請選擇開始時間", + "收起": "收起", + "展开": "展開", + "添加子药": "新增子藥", + "请选择输入医嘱名称": "請選擇/輸入醫囑名稱", + "暂无子药": "暫無子藥", + "删除子药": "刪除子藥", + "透析物品检查": "透析物品檢查", + "正确": "正確", + "差错": "差錯", + "双人核对": "雙人核對", + "透析器及管路无破损和过期": "透析器及管路無損壞及過期", + "一次性透析管路": "一次性透析管路", + "回血用NS": "回血用NS", + "请输入核对人密码验证": "請輸入核對人密碼驗證", + "请输入密码": "請輸入密碼", + "核对时间": "核對時間", + "肝素补液口未双保险夹闭": "肝素補液口未雙保險夾閉", + "管路有打折": "管路有打折", + "接口连接松动": "介面連接鬆動", + "压力传感器管夹未打开": "壓力傳感器管夾未打開", + "静脉管路未卡入保护夹": "靜脈管路未卡入保護夾", + "动静脉壶液面不标准": "動靜脈壺液面不標準", + "透析液连接错误": "透析液連接錯誤", + "肝素管夹未开启": "肝素管夾未開啟", + "泵前补液侧管未夹": "泵前補液側管未夾", + "管道连接核查": "管路連接核查", + "动静脉接错": "動靜脈接錯", + "渗血": "滲血", + "压迫": "壓迫", + "折叠": "摺疊", + "滑脱": "滑脫", + "处方血流量": "處方血流量", + "方案备注": "方案備註", + "透析参数核查": "透析參數核查", + "血管通路核查": "血管通路核查", + "确认人不能为空": "確認人不得為空", + "核对人密码验证识别": "核對人密碼驗證失敗,請重新驗證", + "监测记录": "監測紀錄", + "导出IOT联机数据": "匯出IOT聯機資料", + "iot消息": "並非每台設備都支援IOT匯出。只有聯機的設備才能匯出,匯出的間隔為5分鐘", + "上": "上", + "下": "下", + "在线": "在線", + "置换量": "置換量", + "置换率": "置換率", + "透析液温度": "透析液溫度", + "电导度": "電導度", + "钠浓度": "鈉濃度", + "超滤量": "超濾量", + "超滤率": "超濾率", + "跨膜压": "跨膜壓", + "动脉压": "動脈壓", + "静脉压": "靜脈壓", + "添加监测记录": "新增監測紀錄", + "编辑监测记录": "編輯監測紀錄", + "监测记录确认成功": "監測紀錄確認成功", + "请选择您要删除的监测记录": "請選擇您要刪除的監測紀錄", + "该患者暂无监测记录或监测记录小于两条": "該患者暫無監測紀錄或監測紀錄小於兩條", + "删除成功": "刪除成功", + "上次监测": "上次監測", + "请选择监测护士": "請選擇監測護士", + "联机数据获取成功": "聯機資料取得成功", + "超滤量类型应为数字": "超濾量類型應為數字", + "超滤率类型应为数字": "超濾率類型應為數字", + "距上次时间差为负数不能计算": "距上次時間差為負數不能計算", + "置换液量类型应为数字": "置換液量類型應為數字", + "置换率类型应为数字": "置換率類型應為數字", + "上次置换量无法取值不能计算": "上次置換量無法取值,不能計算", + "请检查收缩压舒张压是否正确": "請檢查收縮壓/舒張壓是否正確", + "请选择监测记录所属日期": "請選擇監測紀錄所属日期", + "所属日期": "所属日期", + "监测时间": "監測時間", + "症状选项": "症狀選項", + "结果描述": "結果描述", + "结果选项": "結果選項", + "处理描述": "處理描述", + "处理选项": "處理選項", + "症状描述": "症狀描述", + "在线尿素": "在線尿素", + "血容量": "血容量", + "监测护士": "監測護士", + "设置": "設定", + "置换液速率": "置換液速率", + "置换液量": "置換液量", + "是否忽略必填校验": "是否忽略必填校驗", + "透后宣教": "透析後宣導", + "宣教人": "宣導人", + "透析小结": "透析小結", + "小结签名": "小結簽名", + "签名": "簽名", + "导出病程": "匯出病程", + "自动生成小结": "自動生成小結", + "穿刺位点": "穿刺部位", + "穿刺方向": "穿刺方向", + "关闭": "關閉", + "应用到小结": "套用至小結", + "重新生成": "重新生成", + "请求中": "處理中", + "透后小结": "透析後小結", + "治疗医生": "治療醫師", + "智能推荐模版": "智能推薦模板", + "智能推荐模板取消勾选已有选项": "智能推薦模板取消勾選已選選項", + "结束透析时间": "結束透析時間", + "凝血": "凝血", + "实际透析时长": "實際透析時長", + "提前下机": "提前下機", + "症状处理结果": "症狀處理結果", + "透后血压": "透析後血壓", + "体重减少": "體重減少", + "干体重达标": "乾體重達標", + "干体重是否调整": "乾體重是否調整", + "实际脱水量": "實際脫水量", + "透后体重": "透析後體重", + "透后评估": "透析後評估", + "实际超滤量": "實際超濾量", + "实际置换量": "實際置換量", + "透析中进食": "透析中進食", + "透析中输液": "透析中輸液", + "透析中输血": "透析中輸血", + "透析中冲管": "透析中沖管", + "透后症状": "透析後症狀", + "并发症": "併發症", + "透后衣物重": "透析後衣物重", + "实际治疗时长": "實際治療時長", + "请输入": "請輸入", + "校验不通过": "校驗未通過", + "透后评估数据存在多项请联系管理员删除": "透析後評估資料存在多筆,請聯繫管理員刪除", + "透析单确认透后评估异常": "透析單確認透析後評估異常", + "医生治疗小结": "醫師治療小結", + "请输入医生治疗小结": "請輸入醫師治療小結", + "自动生成完成": "自動生成完成", + "是否需要系统辅助生成小结": "是否需要系統輔助生成小結?", + "导出成功": "匯出成功", + "透析单code异常": "透析單代碼異常", + "当前医生治疗小结存在多条数据": "當前醫師治療小結存在多筆資料,請聯繫管理員刪除", + "保存子药": "保存子藥", + "结束时间": "結束時間", + "保存成功": "保存成功", + "提醒": "提醒", + "联机获取": "聯機取得", + "计算": "計算", + "总": "總", + "是否只展示最后一次结果": "是否僅顯示最後一次結果", + "默认查询全部": "預設查詢全部", + "转归状态": "轉歸狀態", + "不限": "不限", + "在院": "在院", + "转出": "轉出", + "未检测人员": "未檢測人員", + "检验日期": "檢驗日期", + "患者姓名": "患者姓名", + "不达标": "未達標", + "达标": "達標", + "标准值": "標準值", + "标准值设定": "標準值設定", + "控制率": "控制率", + "未检测人数": "未檢測人數", + "不达标的患者人数": "未達標的患者人數", + "达标患者人数": "達標患者人數", + "铁蛋白": "鐵蛋白", + "血清铁蛋白": "血清鐵蛋白", + "超敏C反应蛋白": "超敏C反應蛋白", + "C反应蛋白": "C反應蛋白", + "动静脉内瘘生存率": "動靜脈內瘘存活率", + "甘油三酯": "甘油三酯", + "甲状旁腺激素": "甲狀旁腺激素", + "Kt/V": "Kt/V", + "URR": "URR", + "β2微球蛋白": "β2微球蛋白", + "前白蛋白": "前白蛋白", + "总蛋白": "總蛋白", + "体重增长": "體重增長", + "透析前尿素氮,透析后尿素氮,尿素氮,尿素": "尿素氮", + "尿酸": "尿酸", + "白蛋白": "白蛋白", + "血红蛋白": "血紅蛋白", + "中性粒细胞百分比": "中性粒細胞百分比", + "血压控制": "血壓控制", + "转铁蛋白饱和度": "轉鐵蛋白飽和度", + "透析龄": "透析年齡", + "主治医师": "主治醫師", + "BNP": "BNP", + 症状:'症状', + 处理:'處理', + 结果:"結果", + 打印设置:'列印設定', + "收缩压标准值设定": "收縮壓標準值設定", + "舒张压标准值设定": "舒張壓標準值設定", + "年龄标准值设定": "年齡標準值設定", + "标准值仅可为大于等于0的数值": "標準值僅可為大於等於0的數值", + "标准值不能小于0": "標準值不能小於0", + 最近平均脱水量: '最近平均脫水量', + 最近最大脱水量: '最近最大脱水量', + 最近最大脱水量日期: '最近最大脱水量日期', + 单项合计: '單項合計', + '透前体重(kg)': '透前體重(kg)', + '干体重(kg)': '幹體重(kg)', + '透前血压(mmHg)': '透前血壓(mmHg)', + '处方脱水量(L)': '處方脫水量(L)', + '目标脱水量(L)': '目標脫水量(L)', + '超滤总量(L)': '超濾總量(L)', + '剂量(首剂)(维持/追加)(总量)': '劑量(首劑)(維持/追加)(總量)', + '透析时长(H)': '透析時長(H)', + 磷: '磷', + 床位排序: '床位排序', + 签到排序: '簽到排序', + 透析号排序: '透析號排序', + 我的患者: '我的患者', + 责护患者: '責護患者', + } +}; diff --git a/src/i18n/pages/PatientManage/HemodiPatients/index.ts b/src/i18n/pages/PatientManage/HemodiPatients/index.ts new file mode 100644 index 0000000..d937034 --- /dev/null +++ b/src/i18n/pages/PatientManage/HemodiPatients/index.ts @@ -0,0 +1,26 @@ +import hemodiPatients from './module'; + + + +export default { + zhCn: { + infoPage: hemodiPatients.infoZhCn, + listPage: hemodiPatients.listZhCn + }, + en: { + infoPage: hemodiPatients.infoEn, + listPage: hemodiPatients.listEn + }, + zhTw: { + infoPage: hemodiPatients.infoZhTw, + listPage: hemodiPatients.listZhTw + }, + jp: { + infoPage: hemodiPatients.infoJp, + listPage: hemodiPatients.listJp + }, + ms: { + infoPage: hemodiPatients.infoMs, + listPage: hemodiPatients.listMs + } +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/HemodiPatients/module/index.ts b/src/i18n/pages/PatientManage/HemodiPatients/module/index.ts new file mode 100644 index 0000000..0f138df --- /dev/null +++ b/src/i18n/pages/PatientManage/HemodiPatients/module/index.ts @@ -0,0 +1,31 @@ +import infoZhCn from './info/zh-cn'; +import infoEn from './info/en'; +import infoZhTw from './info/zh-tw'; +import infoJp from './info/jp'; +import infoMs from './info/ms'; +import listZhCn from './list/zh-cn'; +import listEn from './list/en'; +import listZhTw from './list/zh-tw'; +import listJp from './list/jp'; +import listMs from './list/ms'; + + + +// info -- 患者信息 +// list -- 患者列表 + +export default { + infoZhCn, + infoEn, + infoZhTw, + infoJp, + listZhCn, + listEn, + listZhTw, + listJp, + infoMs, + listMs, +} + + + diff --git a/src/i18n/pages/PatientManage/HemodiPatients/module/info/en.ts b/src/i18n/pages/PatientManage/HemodiPatients/module/info/en.ts new file mode 100644 index 0000000..68f5f18 --- /dev/null +++ b/src/i18n/pages/PatientManage/HemodiPatients/module/info/en.ts @@ -0,0 +1,228 @@ +export default { + personalData: 'personal data', + del: 'delete', + exit: 'quit', + save: 'preserve', + printQRCode: 'Print QR code', + printElectronicMedicalRecords: 'Print electronic medical records', + printer: 'Printing', + patientType: 'Patient type', + placeholderSelect: 'Please select', + patientSource: 'Patient source', + outpatientService: 'outpatient service', + beInHospital: 'Hospitalization', + qutpatientNum: 'Outpatient number', + admissionNum: 'Admission number', + dialysisNumber: 'Dialysis number', + ward: 'Ward', + bed: 'Beds', + hsiCode: 'HIS number', + name: 'name', + idType: 'Document type ', + residentIDCard: 'Resident ID card', + passportNumber: 'Passport number', + hkAmTw: 'Hong Kong, Macao, and Taiwan Passport Number', + idNumber: 'Identification Number ', + dateOfBirth: 'Date of Birth:', + age: 'Age', + gender: 'Gender', + male: 'male', + female: 'female', + maritalStatus: 'Marital status', + patpentCardNumber: 'Patient card number', + reimbursementMethod: 'Reimbursement method', + medicalInsuranceNumber: 'Medical insurance number', + medicalInsuranceDate: 'Medical insurance expiration date', + medicalInsuranceDateTips: 'Medical insurance expiration reminder', + selectDate: 'Select date', + weight: 'weight', + bloodType: 'blood group', + educationalLevel: 'Educational level', + career: 'occupation', + religiousBelief: 'religious belief', + have: 'have', + noHave: 'no', + visualImpairment: 'Visual impairment', + drink: 'drink', + nation: 'nation', + patientHeight: 'Patient height', + pyCode: 'Pinyin code', + nativePlace: 'Hometown', + contactInformation: 'Contact information', + myPhoneNumber: 'My phone number', + patientRelativeName:'Name of relative', + patientRelativeDesc:'relationship', + familyPhoneNumber: 'Family phone number', + workUnit: 'Work unit', + homeAddress: 'Home address', + therapyInformation: 'Treatment information', + receivedOn: 'Received on', + dirstDialysisDate: 'First dialysis date', + firstPassMethod: '首透方式', + firstPassMethodOption1: '血透', + firstPassMethodOption2: '腹透', + firstPassMethodOption3: '腹水回收', + dialysisAge: 'Dialysis age (months)', + inductionPeriod: 'induction period', + initialDialysisFrequency: 'Initial dialysis frequency', + totalDialysisTimes: 'Total dialysis times', + infectiousDiseases: 'communicable disease', + positiveInfectiousDiseases: 'Positive infectious diseases', + attendingPhysician: 'Attending physician', + attendingNurse: 'Attending nurse', + currentPoints: 'Current points', + notes: 'Remarks', + patientQRCode: 'Patient QR code', + cancellation: 'cancel', + idCardErr: 'ID card number error', + rules1: 'Please select the patient type', + rules2: 'Please select the attending physician', + rules3: 'Please select the attending nurse', + rules4: "Please enter the patient's name", + rules5: 'Please enter your identification number', + yes2: 'yes', + actOwn: 'autonomously', + passive: 'passive', + force: 'force', + noHave2: 'nothing', + mild: 'mild', + moderate: 'moderate ', + severe: 'severe', + doNotKnow: "I don't know", + normal: 'normal', + poor: 'Defective', + good: 'good', + medium: 'secondary', + cachexia: 'Cachexia', + clear: 'clear', + vague: 'vague', + coma: 'coma', + other: 'other', + gloomy: 'Gray and dark', + pale: 'pale', + jaundice: 'Yellow staining', + pigmentation: 'Pigmentation', + cold: 'cold', + shield: 'dry', + wet: 'wet', + edema: 'edema', + filling: 'Filling', + angryZhang: 'Angry Zhang', + left: 'Left', + right: 'right', + bilateral: 'bilateral ', + overSized: 'Over sized', + size: 'Slightly small', + neat: 'Qi', + irregularity: 'Uneven', + negative: 'negative', + positive: 'positive', + warning1: 'Please select a patient before proceeding with the electronic medical record printing operation', + error1: 'Click on medical record printing failed. Please contact the administrator', + elMessageBox1: 'This operation will delete this patient', + elMessageBox2: 'Do you want to continue', + elMessageBox3: 'prompt', + elMessageBox4: 'delete', + elMessageBox5: 'cancel', + elMessageBox6: "Continuing the operation will clear the patient's scheduling and scheduling template. Do you want to continue", + elMessageBox7: 'prompt', + elMessageBox8: 'yes', + elMessageBox9: 'no', + success1: 'Delete successful', + warning2: 'Please swipe to the bottom to select the attending doctor', + success2: 'Save successful', + warning3: "Please enter the patient's name", + warning4: "Please enter the patient's identification number", + warning5: "Please select the patient's attending physician", + patientHistory1: "Patient's past history", + patientHistory2: 'The following fields are used for national online reporting', + patientHistory3: 'Is there a past history', + patientHistory4: 'Historical diseases', + patientHistory5: 'Is there a history of renal replacement therapy in the past', + patientHistory6: 'Details of Previous Replacement Therapy History', + "zjtxjlzy": "Recent Dialysis Record Summary", + "cbdybqh": "Insured Location Medical Insurance Plan", + "bzba": "Disease Record Filing", + 姓名2: 'Alias', + "姓名拼音":'namePY', + 导出电子病历: 'Export Electronic Medical Records', + 当患者存在姓名重复问题导致无法添加时该字段用于保存患者原始姓名: "When a patient has a duplicate name issue preventing addition, this field is used to store the patient's original name", + "国网上报信息": "National Online Reporting Information", + "首次透析时采用的通路类型": "Type of Access Used for Initial Dialysis", + "首次透析时采取的方式": "Method Used for Initial Dialysis", + "请选择首次透析日期": "Please Select Initial Dialysis Date", + "神经系统": "Nervous System", + "心血管系统": "Cardiovascular System", + "呼吸系统": "Respiratory System", + "消化系统": "Digestive System", + "泌尿系统": "Urinary System", + "内分泌系统": "Endocrine System", + "血液系统": "Hematologic System", + "免疫系统": "Immune System", + "五官科": "Otorhinolaryngology", + "肌肉骨骼": "Musculoskeletal System", + "皮肤": "Skin", + "精神病": "Psychiatric Disorders", + "肾移植": "Kidney Transplant", + "临时中心静脉置管": "Temporary Central Venous Catheter", + "长期中心静脉置管": "Long-term Central Venous Catheter", + "自体内瘘": "Autogenous Arteriovenous Fistula", + "移植血管": "Graft Vessel", + "动静脉直接穿刺": "Direct Arteriovenous Puncture", + "腹膜透析": "Peritoneal Dialysis", + "其它": "Other", + "透析室常规门诊诱导透析": "Routine Outpatient Induction Dialysis in Dialysis Unit", + "急诊室紧急透析或CRRT": "Emergency Dialysis or CRRT in Emergency Room", + "住院期间透析室诱导透析": "Induction Dialysis in Dialysis Unit During Hospitalization", + "住院期间紧急透析或CRRT": "Emergency Dialysis or CRRT During Hospitalization", + "无过敏史": "No Allergy History", + "过敏史不详": "Unknown Allergy History", + "次": "Times", + "分": "Minutes", + "体位": "Posture", + "浮肿": "Edema", + "出血点": "Bleeding Points", + "发育": "Development", + "营养": "Nutrition", + "神志": "Consciousness", + "皮肤粘膜": "Skin and Mucosa", + "部位": "Location", + "程度": "Severity", + "皮下出血": "Subcutaneous Hemorrhage", + "紫癜": "Purpura", + "皮肤湿度": "Skin Moisture", + "浅表淋巴肿大": "Superficial Lymphadenopathy", + "眼脸": "Eyelid", + "左": "Left", + "右": "Right", + "对光反射": "Light Reflex", + "扁桃体": "Tonsils", + "咽部": "Pharynx", + "瞳孔等大等圆": "Pupils (Equal in Size and Round)", + "颈静脉": "Jugular Vein", + "甲状腺": "Thyroid", + "呼吸音": "Breath Sounds", + "胸膜摩擦音": "Pleural Friction Rub", + "啰音": "Rales", + "心脏大小": "Heart Size", + "心律": "Heart Rhythm", + "心包摩擦声": "Pericardial Friction Rub", + "杂音": "Murmur", + "附加音": "Additional Sounds", + "腹水征": "Ascites Signs", + "肝颈静脉返流征": "Hepatojugular Reflux", + "肝脏压痛": "Liver Tenderness", + "肝脏叩痛": "Liver Percussion Pain", + "脾脏压痛": "Spleen Tenderness", + "脾脏叩痛": "Spleen Percussion Pain", + "肾脏压痛": "Renal Tenderness", + "叩痛压痛": "Percussion and Tenderness", + "患者": "Patient", + "皮下粘膜": "Subcutaneous Mucosa", + "淋巴结": "Lymph Nodes", + "头部": "Head", + "颈部": "Neck", + "肺脏": "Lungs", + "心脏": "Heart", + "腹部": "Abdomen" +}; diff --git a/src/i18n/pages/PatientManage/HemodiPatients/module/info/jp.ts b/src/i18n/pages/PatientManage/HemodiPatients/module/info/jp.ts new file mode 100644 index 0000000..7500ca3 --- /dev/null +++ b/src/i18n/pages/PatientManage/HemodiPatients/module/info/jp.ts @@ -0,0 +1,228 @@ +export default { + personalData: '個人資料', + del: '削除', + exit: '退出', + save: '保存', + printQRCode: 'QRコードを印刷', + printElectronicMedicalRecords: '電子病歴を印刷', + printer: '印刷', + patientType: '患者タイプ', + placeholderSelect: '選択してください', + patientSource: '患者の出所', + outpatientService: '外来', + beInHospital: '入院', + qutpatientNum: '外来番号', + admissionNum: '入院番号', + dialysisNumber: '透析番号', + ward: '病棟', + bed: 'ベッド番号', + hsiCode: 'HIS番号', + name: '氏名', + idType: '証明書の種類', + residentIDCard: '住民身分証', + passportNumber: 'パスポート番号', + hkAmTw: '香港・マカオ・台湾通行証番号', + idNumber: '証明書番号', + dateOfBirth: '生年月日', + age: '年齢', + gender: '性別', + male: '男性', + female: '女性', + maritalStatus: '婚姻状況', + patpentCardNumber: '患者カード番号', + reimbursementMethod: '払い戻し方法', + medicalInsuranceNumber: '医療保険番号', + medicalInsuranceDate: '医療保険の有効期限', + medicalInsuranceDateTips: '医療保険有効期限の通知', + selectDate: '日付を選択', + weight: '体重', + bloodType: '血液型', + educationalLevel: '学歴', + career: '職業', + religiousBelief: '宗教信仰', + have: 'あり', + noHave: 'なし', + visualImpairment: '視力障害', + drink: '飲酒', + nation: '民族', + patientHeight: '患者の身長', + pyCode: 'ピンインコード', + nativePlace: '出身地', + contactInformation: '連絡先', + myPhoneNumber: '本人電話番号', + patientRelativeName:'親族名', + patientRelativeDesc:'親族関係', + familyPhoneNumber: '家族電話番号', + workUnit: '勤務先', + homeAddress: '自宅住所', + therapyInformation: '治療情報', + receivedOn: '受診日', + dirstDialysisDate: '初回透析日', + firstPassMethod: '初透方式', + firstPassMethodOption1: '血液透析', + firstPassMethodOption2: '腹膜透析', + firstPassMethodOption3: '腹水回収', + dialysisAge: '透析期間(月)', + inductionPeriod: '導入期', + initialDialysisFrequency: '初回透析回数', + totalDialysisTimes: '透析総回数', + infectiousDiseases: '感染症', + positiveInfectiousDiseases: '陽性感染症', + attendingPhysician: '主治医', + attendingNurse: '主治看護師', + currentPoints: '現在のポイント', + notes: '備考', + patientQRCode: '患者QRコード', + cancellation: 'キャンセル', + idCardErr: '身分証番号が間違っています', + rules1: '患者タイプを選択してください', + rules2: '主治医を選択してください', + rules3: '主治看護師を選択してください', + rules4: '患者の氏名を入力してください', + rules5: '証明書番号を入力してください', + yes2: 'はい', + actOwn: '自発', + passive: '受動', + force: '強制', + noHave2: 'なし', + mild: '軽度', + moderate: '中等度', + severe: '重度', + doNotKnow: '不明', + normal: '正常', + poor: '不良', + good: '良好', + medium: '中等', + cachexia: '悪病質', + clear: '明瞭', + vague: '不明瞭', + coma: '昏睡', + other: 'その他', + gloomy: '暗い', + pale: '青白い', + jaundice: '黄疸', + pigmentation: '色素沈着', + cold: '冷たい', + shield: '乾燥', + wet: '湿潤', + edema: '浮腫', + filling: '充満', + angryZhang: '怒張', + left: '左', + right: '右', + bilateral: '両側', + overSized: '大きすぎる', + size: '小さい', + neat: '整っている', + irregularity: '不整', + negative: '陰性', + positive: '陽性', + warning1: '患者を選択してから電子病歴の印刷操作を行ってください', + error1: '病歴印刷のクリックに失敗しました。管理者に連絡してください', + elMessageBox1: 'この操作で患者が削除されます', + elMessageBox2: '続行しますか', + elMessageBox3: 'ヒント', + elMessageBox4: '削除', + elMessageBox5: 'キャンセル', + elMessageBox6: '続行すると、この患者のシフトおよびシフトテンプレートがリセットされます。続行しますか?', + elMessageBox7: 'ヒント', + elMessageBox8: 'はい', + elMessageBox9: 'いいえ', + success1: '削除成功', + warning2: '主治医を選択するには、ページの最下部までスクロールしてください', + success2: '保存成功', + warning3: '患者の名前を入力してください', + warning4: '患者の証明書番号を入力してください', + warning5: '患者の主治医を選択してください', + patientHistory1: '患者の既往歴', + patientHistory2: '以下のフィールドは国の報告に使用されます', + patientHistory3: '既往歴が存在しますか', + patientHistory4: '過去の病歴', + patientHistory5: '過去に腎代替療法歴がありますか', + patientHistory6: '過去の代替療法の詳細', + zjtxjlzy: '最新の透析記録の概要', + cbdybqh: '保険地の医療保険計画', + bzba: '疾患登録', + 姓名2: '别名', + "姓名拼音":'氏名读', + 导出电子病历: '電子カルテをエクスポート', + 当患者存在姓名重复问题导致无法添加时该字段用于保存患者原始姓名: "患者の名前が重複して追加できない場合、このフィールドは患者の元の名前を保存するために使用されます", + "国网上报信息": "国網報告情報", + "首次透析时采用的通路类型": "初回透析時のアクセス種類", + "首次透析时采取的方式": "初回透析時の方法", + "请选择首次透析日期": "初回透析日を選択してください", + "神经系统": "神経系", + "心血管系统": "心血管系", + "呼吸系统": "呼吸器系", + "消化系统": "消化器系", + "泌尿系统": "泌尿器系", + "内分泌系统": "内分泌系", + "血液系统": "血液系", + "免疫系统": "免疫系", + "五官科": "耳鼻咽喉科", + "肌肉骨骼": "筋骨格系", + "皮肤": "皮膚", + "精神病": "精神疾患", + "肾移植": "腎移植", + "临时中心静脉置管": "一時的中心静脈カテーテル", + "长期中心静脉置管": "長期中心静脈カテーテル", + "自体内瘘": "自己血管内シャント", + "移植血管": "移植血管", + "动静脉直接穿刺": "動静脈直接穿刺", + "腹膜透析": "腹膜透析", + "其它": "その他", + "透析室常规门诊诱导透析": "透析室通常外来導入透析", + "急诊室紧急透析或CRRT": "救急室緊急透析またはCRRT", + "住院期间透析室诱导透析": "入院中透析室導入透析", + "住院期间紧急透析或CRRT": "入院中緊急透析またはCRRT", + "无过敏史": "アレルギー歴なし", + "过敏史不详": "アレルギー歴不明", + "次": "回", + "分": "分", + "体位": "体位", + "浮肿": "浮腫", + "出血点": "出血点", + "发育": "発育", + "营养": "栄養", + "神志": "意識", + "皮肤粘膜": "皮膚粘膜", + "部位": "部位", + "程度": "程度", + "皮下出血": "皮下出血", + "紫癜": "紫斑", + "皮肤湿度": "皮膚湿潤度", + "浅表淋巴肿大": "浅表リンパ節腫脹", + "眼脸": "眼瞼", + "左": "左", + "右": "右", + "对光反射": "対光反射", + "扁桃体": "扁桃体", + "咽部": "咽部", + "瞳孔等大等圆": "瞳孔(等大等円)", + "颈静脉": "頸静脈", + "甲状腺": "甲状腺", + "呼吸音": "呼吸音", + "胸膜摩擦音": "胸膜摩擦音", + "啰音": "ラ音", + "心脏大小": "心臓の大きさ", + "心律": "心拍リズム", + "心包摩擦声": "心膜摩擦音", + "杂音": "雑音", + "附加音": "付加音", + "腹水征": "腹水徴候", + "肝颈静脉返流征": "肝頸静脈逆流徴候", + "肝脏压痛": "肝臓圧痛", + "肝脏叩痛": "肝臓叩打痛", + "脾脏压痛": "脾臓圧痛", + "脾脏叩痛": "脾臓叩打痛", + "肾脏压痛": "腎臓圧痛", + "叩痛压痛": "叩打痛・圧痛", + "患者": "患者", + "皮下粘膜": "皮下粘膜", + "淋巴结": "リンパ節", + "头部": "頭部", + "颈部": "頸部", + "肺脏": "肺", + "心脏": "心臓", + "腹部": "腹部" +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/HemodiPatients/module/info/ms.ts b/src/i18n/pages/PatientManage/HemodiPatients/module/info/ms.ts new file mode 100644 index 0000000..344b81d --- /dev/null +++ b/src/i18n/pages/PatientManage/HemodiPatients/module/info/ms.ts @@ -0,0 +1,228 @@ +export default { + personalData: 'Data Peribadi', + del: 'Padam', + exit: 'Keluar', + save: 'Simpan', + printQRCode: 'Cetak Kod QR', + printElectronicMedicalRecords: 'Cetak Rekod Perubatan Elektronik', + printer: 'Pencetak', + patientType: 'Jenis Pesakit', + placeholderSelect: 'Sila pilih', + patientSource: 'Sumber Pesakit', + outpatientService: 'Poliklinik', + beInHospital: 'Pemasukan Wad', + qutpatientNum: 'No. Poliklinik', + admissionNum: 'No. Pemasukan Wad', + dialysisNumber: 'No. Dialisis', + ward: 'Kawasan Wad', + bed: 'Katil', + hsiCode: 'Kod HIS', + name: 'Nama', + idType: 'Jenis Dokumen', + residentIDCard: 'Kad Pengenalan Penduduk', + passportNumber: 'No. Pasport', + hkAmTw: 'No. Kad Perjalanan HK, Macau, Taiwan', + idNumber: 'No. Dokumen', + dateOfBirth: 'Tarikh Lahir', + age: 'Umur', + gender: 'Jantina', + male: 'Lelaki', + female: 'Perempuan', + maritalStatus: 'Status Perkahwinan', + patpentCardNumber: 'No. Kad Pesakit', + reimbursementMethod: 'Kaedah Penebusan', + medicalInsuranceNumber: 'No. Insurans Perubatan', + medicalInsuranceDate: 'Tarikh Luput Insurans Perubatan', + medicalInsuranceDateTips: 'Peringatan Luput Insurans Perubatan', + selectDate: 'Pilih Tarikh', + weight: 'Berat Badan', + bloodType: 'Jenis Darah', + educationalLevel: 'Tahap Pendidikan', + career: 'Kerjaya', + religiousBelief: 'Kepercayaan Agama', + have: 'Ada', + noHave: 'Tiada', + visualImpairment: 'Kecacatan Penglihatan', + drink: 'Minum Alkohol', + nation: 'Bangsa', + patientHeight: 'Ketinggian Pesakit', + pyCode: 'Kod Pinyin', + nativePlace: 'Tempat Asal', + contactInformation: 'Maklumat Perhubungan', + myPhoneNumber: 'Nombor Telefon Saya', + patientRelativeName: 'Nama Saudara Mara Pesakit', + patientRelativeDesc: 'Hubungan Saudara Mara', + familyPhoneNumber: 'Nombor Telefon Keluarga', + workUnit: 'Unit Kerja', + homeAddress: 'Alamat Rumah', + therapyInformation: 'Maklumat Rawatan', + receivedOn: 'Tarikh Terima', + dirstDialysisDate: 'Tarikh Dialisis Pertama', + firstPassMethod: 'Kaedah Dialisis Pertama', + firstPassMethodOption1: 'Hemodialisis', + firstPassMethodOption2: 'Peritoneal Dialysis', + firstPassMethodOption3: 'Pemulihan Cecair Peritoneal', + dialysisAge: 'Umur Dialisis (Bulan)', + inductionPeriod: 'Tempoh Induksi', + initialDialysisFrequency: 'Kekerapan Dialisis Permulaan', + totalDialysisTimes: 'Jumlah Dialisis', + infectiousDiseases: 'Penyakit Berjangkit', + positiveInfectiousDiseases: 'Penyakit Berjangkit Positif', + attendingPhysician: 'Doktor Utama', + attendingNurse: 'Jururawat Utama', + currentPoints: 'Markah Semasa', + notes: 'Nota', + patientQRCode: 'Kod QR Pesakit', + cancellation: 'Batal', + idCardErr: 'Ralat Nombor Kad Pengenalan', + rules1: 'Sila pilih jenis pesakit', + rules2: 'Sila pilih doktor utama', + rules3: 'Sila pilih jururawat utama', + rules4: 'Sila masukkan nama pesakit', + rules5: 'Sila masukkan nombor dokumen', + yes2: 'Ya', + actOwn: 'Bebas', + passive: 'Pasif', + force: 'Paksaan', + noHave2: 'Tiada', + mild: 'Ringan', + moderate: 'Sederhana', + severe: 'Teruk', + doNotKnow: 'Tidak Tahu', + normal: 'Normal', + poor: 'Lemah', + good: 'Baik', + medium: 'Sederhana', + cachexia: 'Kekurangan Berat Badan', + clear: 'Jelas', + vague: 'Kabur', + coma: 'Koma', + other: 'Lain-lain', + gloomy: 'Kelam', + pale: 'Pucat', + jaundice: 'Kuning', + pigmentation: 'Pelepasan Pigmen', + cold: 'Dingin', + shield: 'Kering', + wet: 'Basah', + edema: 'Bengkak', + filling: 'Kekenyalan', + angryZhang: 'Marah Keras', + left: 'Kiri', + right: 'Kanan', + bilateral: 'Bilateral', + overSized: 'Terlebih Besar', + size: 'Kecil', + neat: 'Kemaskan', + irregularity: 'Tidak Teratur', + negative: 'Negatif', + positive: 'Positif', + warning1: 'Sila pilih pesakit terlebih dahulu sebelum mencetak rekod perubatan elektronik', + error1: 'Gagal mencetak rekod perubatan, sila hubungi pentadbir', + elMessageBox1: 'Tindakan ini akan memadam pesakit ini', + elMessageBox2: 'Adakah anda mahu teruskan?', + elMessageBox3: 'Peringatan', + elMessageBox4: 'Padam', + elMessageBox5: 'Batal', + elMessageBox6: 'Tindakan ini akan mengosongkan jadual dan template jadual pesakit ini, adakah anda mahu teruskan?', + elMessageBox7: 'Peringatan', + elMessageBox8: 'Ya', + elMessageBox9: 'Tidak', + success1: 'Padam Berjaya', + warning2: 'Sila tatal ke bawah untuk memilih doktor utama', + success2: 'Simpan Berjaya', + warning3: 'Sila masukkan nama pesakit', + warning4: 'Sila masukkan nombor dokumen pesakit', + warning5: 'Sila pilih doktor utama pesakit', + patientHistory1: 'Sejarah Pesakit', + patientHistory2: 'Maklumat untuk pelaporan nasional', + patientHistory3: 'Adakah terdapat sejarah pesakit?', + patientHistory4: 'Penyakit Sejarah', + patientHistory5: 'Adakah pesakit mempunyai sejarah rawatan pengganti buah pinggang?', + patientHistory6: 'Butiran Sejarah Rawatan Pengganti', + zjtxjlzy: 'Ringkasan Rekod Dialisis Terkini', + cbdybqh: 'Perancangan Insurans Tempat Perlindungan', + bzba: 'Pendaftaran Penyakit', + 姓名2: 'Nama lain', + "姓名拼音":'Nama PY', + 导出电子病历: 'Eksport Rekod Perubatan Elektronik', + 当患者存在姓名重复问题导致无法添加时该字段用于保存患者原始姓名: 'Apabila terdapat masalah nama pesakit yang berulang dan tidak dapat ditambahkan, medan ini digunakan untuk menyimpan nama asal pesakit', + "国网上报信息": "Maklumat Laporan Nasional", + "首次透析时采用的通路类型": "Jenis akses yang digunakan semasa dialisis pertama", + "首次透析时采取的方式": "Kaedah yang digunakan semasa dialisis pertama", + "请选择首次透析日期": "Sila pilih tarikh dialisis pertama", + "神经系统": "Sistem saraf", + "心血管系统": "Sistem kardiovaskular", + "呼吸系统": "Sistem pernafasan", + "消化系统": "Sistem pencernaan", + "泌尿系统": "Sistem urinari", + "内分泌系统": "Sistem endokrin", + "血液系统": "Sistem hematologi", + "免疫系统": "Sistem imun", + "五官科": "Otorinolaringologi", + "肌肉骨骼": "Sistem muskuloskeletal", + "皮肤": "Kulit", + "精神病": "Penyakit mental", + "肾移植": "Pemindahan buah pinggang", + "临时中心静脉置管": "Kateter vena pusat sementara", + "长期中心静脉置管": "Kateter vena pusat jangka panjang", + "自体内瘘": "Fistula arteriovenous autologous", + "移植血管": "Graft vaskular", + "动静脉直接穿刺": "Tusukan terus arteriovenous", + "腹膜透析": "Dialisis peritoneal", + "其它": "Lain-lain", + "透析室常规门诊诱导透析": "Induksi dialisis pesakit luar biasa di bilik dialisis", + "急诊室紧急透析或CRRT": "Dialisis kecemasan atau CRRT di jabatan kecemasan", + "住院期间透析室诱导透析": "Induksi dialisis di bilik dialisis semasa kemasukan ke hospital", + "住院期间紧急透析或CRRT": "Dialisis kecemasan atau CRRT semasa kemasukan ke hospital", + "无过敏史": "Tiada sejarah alahan", + "过敏史不详": "Sejarah alahan tidak diketahui", + "次": "Kali", + "分": "Minit", + "体位": "Kedudukan badan", + "浮肿": "Edema", + "出血点": "Titik pendarahan", + "发育": "Perkembangan", + "营养": "Nutrisi", + "神志": "Kesedaran", + "皮肤粘膜": "Kulit dan membran mukus", + "部位": "Lokasi", + "程度": "Tahap", + "皮下出血": "Pendarahan subkutan", + "紫癜": "Purpura", + "皮肤湿度": "Kelembapan kulit", + "浅表淋巴肿大": "Pembesaran kelenjar limfa superfisial", + "眼脸": "Kelopak mata", + "左": "Kiri", + "右": "Kanan", + "对光反射": "Refleks kepada cahaya", + "扁桃体": "Tonsil", + "咽部": "Faring", + "瞳孔等大等圆": "Pupil (sama saiz dan bulat)", + "颈静脉": "Vena jugular", + "甲状腺": "Kelenjar tiroid", + "呼吸音": "Bunyi pernafasan", + "胸膜摩擦音": "Bunyi geseran pleura", + "啰音": "Ronkus", + "心脏大小": "Saiz jantung", + "心律": "Ritma jantung", + "心包摩擦声": "Bunyi geseran perikardium", + "杂音": "Bunyi murmur", + "附加音": "Bunyi tambahan", + "腹水征": "Tanda asites", + "肝颈静脉返流征": "Tanda refluks hepatojugular", + "肝脏压痛": "Kesakitan tekan pada hati", + "肝脏叩痛": "Kesakitan perkusi pada hati", + "脾脏压痛": "Kesakitan tekan pada limpa", + "脾脏叩痛": "Kesakitan perkusi pada limpa", + "肾脏压痛": "Kesakitan tekan pada buah pinggang", + "叩痛压痛": "Kesakitan perkusi dan tekanan", + "患者": "Pesakit", + "皮下粘膜": "Membran mukus subkutan", + "淋巴结": "Kelenjar limfa", + "头部": "Kepala", + "颈部": "Leher", + "肺脏": "Paru-paru", + "心脏": "Jantung", + "腹部": "Abdomen" +}; diff --git a/src/i18n/pages/PatientManage/HemodiPatients/module/info/zh-cn.ts b/src/i18n/pages/PatientManage/HemodiPatients/module/info/zh-cn.ts new file mode 100644 index 0000000..915e7bf --- /dev/null +++ b/src/i18n/pages/PatientManage/HemodiPatients/module/info/zh-cn.ts @@ -0,0 +1,228 @@ +export default { + personalData: '个人资料', + del: '删除', + exit: '退出', + save: '保存', + printQRCode: '打印二维码', + printElectronicMedicalRecords: '打印电子病历', + printer: '打印', + patientType: '患者类型', + placeholderSelect: '请选择', + patientSource: '患者来源', + outpatientService: '门诊', + beInHospital: '住院', + qutpatientNum: '门诊号', + admissionNum: '住院号', + dialysisNumber: '透析号', + ward: '住院病区', + bed: '住院床号', + hsiCode: 'HIS编号', + name: '姓名', + idType: '证件类型', + residentIDCard: '居民身份证', + passportNumber: '护照号', + hkAmTw: '港澳台通行证号', + idNumber: '证件号码', + dateOfBirth: '出生日期', + age: '年龄', + gender: '性别', + male: '男', + female: '女', + maritalStatus: '婚姻状态', + patpentCardNumber: '患者卡号', + reimbursementMethod: '报销方式', + medicalInsuranceNumber: '医保号', + medicalInsuranceDate: '医保到期时间', + medicalInsuranceDateTips: '医保到期提醒', + selectDate: '选择日期', + weight: '体重', + bloodType: '血型', + educationalLevel: '文化程度', + career: '职业', + religiousBelief: '宗教信仰', + have: '有', + noHave: '否', + visualImpairment: '视力障碍', + drink: '饮酒', + nation: '民族', + patientHeight: '患者身高', + pyCode: '拼音码', + nativePlace: '籍贯', + contactInformation: '联系方式', + myPhoneNumber: '本人电话', + patientRelativeName:'亲属姓名', + patientRelativeDesc:'亲属关系', + familyPhoneNumber: '家属电话', + workUnit: '工作单位', + homeAddress: '家庭地址', + therapyInformation: '治疗信息', + receivedOn: '接收日期', + dirstDialysisDate: '首次透析日期', + firstPassMethod: '首透方式', + firstPassMethodOption1: '血透', + firstPassMethodOption2: '腹透', + firstPassMethodOption3: '腹水回收', + dialysisAge: '透析龄(月)', + inductionPeriod: '诱导期', + initialDialysisFrequency: '初始透析次数', + totalDialysisTimes: '透析总次数', + infectiousDiseases: '传染病', + positiveInfectiousDiseases: '阳性传染病', + attendingPhysician: '主治医生', + attendingNurse: '主治护士', + currentPoints: '当前积分', + notes: '备注', + patientQRCode: '患者二维码', + cancellation: '取消', + idCardErr: '身份证号码错误', + rules1: '请选择患者类型', + rules2: '请选择主治医生', + rules3: '请选择主治护士', + rules4: '请输入患者姓名', + rules5: '请输入证件号码', + yes2: '是', + actOwn: '自主', + passive: '被动', + force: '强迫', + noHave2: '无', + mild: '轻度', + moderate: '中度', + severe: '重度', + doNotKnow: '不知道', + normal: '正常', + poor: '不良', + good: '良好', + medium: '中等', + cachexia: '恶病质', + clear: '清楚', + vague: '模糊', + coma: '昏迷', + other: '其他', + gloomy: '灰暗', + pale: '苍白', + jaundice: '黄染', + pigmentation: '色素沉着', + cold: '冷', + shield: '干', + wet: '湿', + edema: '水肿', + filling: '充盈', + angryZhang: '怒张', + left: '左', + right: '右', + bilateral: '双侧', + overSized: '偏大', + size: '偏小', + neat: '齐', + irregularity: '不齐', + negative: '阴性', + positive: '阳性', + warning1: '请选择患者后再进行电子病历打印操作', + error1: '点击病历打印失败,请联系管理员', + elMessageBox1: '此操作将删除此患者', + elMessageBox2: '是否继续', + elMessageBox3: '提示', + elMessageBox4: '删除', + elMessageBox5: '取消', + elMessageBox6: '继续操作将清空该患者的排班及排班模板, 是否继续', + elMessageBox7: '提示', + elMessageBox8: '是', + elMessageBox9: '否', + success1: '删除成功', + warning2: '请滑动到底部选择主治医生', + success2: '保存成功', + warning3: '请输入患者的姓名', + warning4: '请输入患者的证件号码', + warning5: '请选择患者的主治医生', + patientHistory1: '患者既往史', + patientHistory2: '以下字段用于国网上报', + patientHistory3: '是否存在既往史', + patientHistory4: '历史疾病', + patientHistory5: '是否存在既往肾脏替代治疗史', + patientHistory6: '既往替代治疗史详情', + zjtxjlzy: '最近透析记录摘要', + cbdybqh: '参保地医保企划', + bzba: '病种备案', + 姓名2: '别名', + "姓名拼音":'姓名拼音', + 导出电子病历: '导出电子病历', + 当患者存在姓名重复问题导致无法添加时该字段用于保存患者原始姓名: '当患者存在姓名重复问题导致无法添加时,该字段用于保存患者原始姓名', + 国网上报信息: '国网上报信息', + 首次透析时采用的通路类型: '首次透析时采用的通路类型', + 首次透析时采取的方式: '首次透析时采取的方式', + 请选择首次透析日期: '请选择首次透析日期', + 神经系统: '神经系统', + 心血管系统: '心血管系统', + 呼吸系统: '呼吸系统', + 消化系统: '消化系统', + 泌尿系统: '泌尿系统', + 内分泌系统: '内分泌系统', + 血液系统: '血液系统', + 免疫系统: '免疫系统', + 五官科: '五官科', + 肌肉骨骼: '肌肉骨骼', + 皮肤: '皮肤', + 精神病: '精神病', + 肾移植: '肾移植', + 临时中心静脉置管: '临时中心静脉置管', + 长期中心静脉置管: '长期中心静脉置管', + 自体内瘘: '自体内瘘', + 移植血管: '移植血管', + 动静脉直接穿刺: '动静脉直接穿刺', + 腹膜透析: '腹膜透析', + 其它: '其它', + 透析室常规门诊诱导透析: '透析室常规门诊诱导透析', + 急诊室紧急透析或CRRT: '急诊室紧急透析或CRRT', + 住院期间透析室诱导透析: '住院期间透析室诱导透析', + 住院期间紧急透析或CRRT: '住院期间紧急透析或CRRT', + 无过敏史: '无过敏史', + 过敏史不详: '过敏史不详', + 次: '次', + 分: '分', + 体位: '体位', + 浮肿: '浮肿', + 出血点: '出血点', + 发育: '发育', + 营养: '营养', + 神志: '神志', + 皮肤粘膜: '皮肤粘膜', + 部位: '部位', + 程度: '程度', + 皮下出血: '皮下出血', + 紫癜: '紫癜', + 皮肤湿度: '皮肤湿度', + 浅表淋巴肿大: '浅表淋巴肿大', + 眼脸: '眼脸', + 左: '左', + 右: '右', + 对光反射: '对光反射', + 扁桃体: '扁桃体', + 咽部: '咽部', + 瞳孔等大等圆: '瞳孔(等大等圆)', + 颈静脉: '颈静脉', + 甲状腺: '甲状腺', + 呼吸音: '呼吸音', + 胸膜摩擦音: '胸膜摩擦音', + 啰音: '啰音', + 心脏大小: '心脏大小', + 心律: '心律', + 心包摩擦声: '心包摩擦声', + 杂音: '杂音', + 附加音: '附加音', + 腹水征: '腹水征', + 肝颈静脉返流征: '肝颈静脉返流征', + 肝脏压痛: '肝脏压痛', + 肝脏叩痛: '肝脏叩痛', + 脾脏压痛: '脾脏压痛', + 脾脏叩痛: '脾脏叩痛', + 肾脏压痛: '肾脏压痛', + 叩痛压痛: '叩痛压痛', + 患者: '患者', + 皮下粘膜: '皮下粘膜', + 淋巴结: '淋巴结', + 头部: '头部', + 颈部: '颈部', + 肺脏: '肺脏', + 心脏: '心脏', + 腹部: '腹部', +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/HemodiPatients/module/info/zh-tw.ts b/src/i18n/pages/PatientManage/HemodiPatients/module/info/zh-tw.ts new file mode 100644 index 0000000..c4c941e --- /dev/null +++ b/src/i18n/pages/PatientManage/HemodiPatients/module/info/zh-tw.ts @@ -0,0 +1,228 @@ +export default { + personalData: '個人資料', + del: '删除', + exit: '退出', + save: '保存', + printQRCode: '列印二維碼', + printElectronicMedicalRecords: '列印電子病歷', + printer: '列印', + patientType: '患者類型', + placeholderSelect: '請選擇', + patientSource: '患者來源', + outpatientService: '門診', + beInHospital: '住院', + qutpatientNum: '門診號', + admissionNum: '住院號', + dialysisNumber: '透析號', + ward: '病區', + bed: '床位', + hsiCode: 'HIS編號', + name: '姓名', + idType: '證件類型', + residentIDCard: '居民身份證', + passportNumber: '護照號', + hkAmTw: '港澳臺通行證號', + idNumber: '證件號碼', + dateOfBirth: '出生日期', + age: '年齡', + gender: '性別', + male: '男', + female: '女', + maritalStatus: '婚姻狀態', + patpentCardNumber: '患者卡號', + reimbursementMethod: '報帳管道', + medicalInsuranceNumber: '醫保號', + medicalInsuranceDate: '醫保到期時間', + medicalInsuranceDateTips: '醫保到期提醒', + selectDate: '選擇日期', + weight: '體重', + bloodType: '血型', + educationalLevel: '教育程度', + career: '職業', + religiousBelief: '宗教信仰', + have: '有', + noHave: '否', + visualImpairment: '視力障礙', + drink: '飲酒', + nation: '民族', + patientHeight: '患者身高', + pyCode: '拼音碼', + nativePlace: '籍貫', + contactInformation: '聯繫方式', + myPhoneNumber: '本人電話', + patientRelativeName:'亲属姓名', + patientRelativeDesc:'亲属关系', + familyPhoneNumber: '家屬電話', + workUnit: '工作單位', + homeAddress: '家庭地址', + therapyInformation: '治療資訊', + receivedOn: '接收日期', + dirstDialysisDate: '首次透析日期', + firstPassMethod: '首透方式', + firstPassMethodOption1: '血透', + firstPassMethodOption2: '腹透', + firstPassMethodOption3: '腹水回收', + dialysisAge: '透析齡(月)', + inductionPeriod: '誘導期', + initialDialysisFrequency: '初始透析次數', + totalDialysisTimes: '透析總次數', + infectiousDiseases: '傳染病', + positiveInfectiousDiseases: '陽性傳染病', + attendingPhysician: '主治醫生', + attendingNurse: '主治護士', + currentPoints: '當前積分', + notes: '備註', + patientQRCode: '患者二維碼', + cancellation: '取消', + idCardErr: '身份證號碼錯誤', + rules1: '請選擇患者類型', + rules2: '請選擇主治醫生', + rules3: '請選擇主治護士', + rules4: '請輸入患者姓名', + rules5: '請輸入證件號碼', + yes2: '是', + actOwn: '自主', + passive: '被動', + force: '強迫', + noHave2: '無', + mild: '輕度', + moderate: '中度', + severe: '重度', + doNotKnow: '不知道', + normal: '正常', + poor: '不良', + good: '良好', + medium: '中等', + cachexia: '惡病質', + clear: '清楚', + vague: '模糊', + coma: '昏迷', + other: '其他', + gloomy: '灰暗', + pale: '蒼白', + jaundice: '黃染', + pigmentation: '色素沉著', + cold: '冷', + shield: '幹', + wet: '濕', + edema: '水腫', + filling: '充盈', + angryZhang: '怒張', + left: '左', + right: '右', + bilateral: '雙側', + overSized: '偏大', + size: '偏小', + neat: '齊', + irregularity: '不齊', + negative: '陰性', + positive: '陽性', + warning1: '請選擇患者後再進行電子病歷列印操作', + error1: '點擊病歷列印失敗,請聯系管理員', + elMessageBox1: '此操作將删除此患者', + elMessageBox2: '是否繼續', + elMessageBox3: '提示', + elMessageBox4: '删除', + elMessageBox5: '取消', + elMessageBox6: '繼續操作將清空該患者的排班及排班範本,是否繼續', + elMessageBox7: '提示', + elMessageBox8: '是', + elMessageBox9: '否', + success1: '删除成功', + warning2: '請滑動到底部選擇主治醫生', + success2: '保存成功', + warning3: '請輸入患者的姓名', + warning4: '請輸入患者的證件號碼', + warning5: '請選擇患者的主治醫生', + patientHistory1: '患者既往史', + patientHistory2: '以下欄位用於國網上報', + patientHistory3: '是否存在既往史', + patientHistory4: '歷史疾病', + patientHistory5: '是否存在既往腎臟替代治療史', + patientHistory6: '既往替代治療史詳情', + "zjtxjlzy": "最近透析記錄摘要", + "cbdybqh": "參保地醫保企劃", + "bzba": "病種備案", + 姓名2: '別名', + "姓名拼音":'姓名拼音', + 导出电子病历: '匯出電子病歷', + 当患者存在姓名重复问题导致无法添加时该字段用于保存患者原始姓名: '當患者存在姓名重複問題導致無法添加時,此欄位用於保存患者原始姓名', + "国网上报信息": "國網上報信息", + "首次透析时采用的通路类型": "首次透析時採用的通路類型", + "首次透析时采取的方式": "首次透析時採取的方式", + "请选择首次透析日期": "請選擇首次透析日期", + "神经系统": "神經系統", + "心血管系统": "心血管系統", + "呼吸系统": "呼吸系統", + "消化系统": "消化系統", + "泌尿系统": "泌尿系統", + "内分泌系统": "內分泌系統", + "血液系统": "血液系統", + "免疫系统": "免疫系統", + "五官科": "五官科", + "肌肉骨骼": "肌肉骨骼", + "皮肤": "皮膚", + "精神病": "精神病", + "肾移植": "腎移植", + "临时中心静脉置管": "臨時中心靜脈置管", + "长期中心静脉置管": "長期中心靜脈置管", + "自体内瘘": "自體內瘘", + "移植血管": "移植血管", + "动静脉直接穿刺": "動靜脈直接穿刺", + "腹膜透析": "腹膜透析", + "其它": "其它", + "透析室常规门诊诱导透析": "透析室常規門診誘導透析", + "急诊室紧急透析或CRRT": "急診室緊急透析或CRRT", + "住院期间透析室诱导透析": "住院期間透析室誘導透析", + "住院期间紧急透析或CRRT": "住院期間緊急透析或CRRT", + "无过敏史": "無過敏史", + "过敏史不详": "過敏史不詳", + "次": "次", + "分": "分", + "体位": "體位", + "浮肿": "浮腫", + "出血点": "出血點", + "发育": "發育", + "营养": "營養", + "神志": "神志", + "皮肤粘膜": "皮膚黏膜", + "部位": "部位", + "程度": "程度", + "皮下出血": "皮下出血", + "紫癜": "紫癜", + "皮肤湿度": "皮膚濕度", + "浅表淋巴肿大": "淺表淋巴腫大", + "眼脸": "眼臉", + "左": "左", + "右": "右", + "对光反射": "對光反射", + "扁桃体": "扁桃體", + "咽部": "咽部", + "瞳孔等大等圆": "瞳孔(等大等圓)", + "颈静脉": "頸靜脈", + "甲状腺": "甲狀腺", + "呼吸音": "呼吸音", + "胸膜摩擦音": "胸膜摩擦音", + "啰音": "囉音", + "心脏大小": "心臟大小", + "心律": "心律", + "心包摩擦声": "心包摩擦聲", + "杂音": "雜音", + "附加音": "附加音", + "腹水征": "腹水徵", + "肝颈静脉返流征": "肝頸靜脈返流徵", + "肝脏压痛": "肝臟壓痛", + "肝脏叩痛": "肝臟叩痛", + "脾脏压痛": "脾臟壓痛", + "脾脏叩痛": "脾臟叩痛", + "肾脏压痛": "腎臟壓痛", + "叩痛压痛": "叩痛壓痛", + "患者": "患者", + "皮下粘膜": "皮下黏膜", + "淋巴结": "淋巴結", + "头部": "頭部", + "颈部": "頸部", + "肺脏": "肺臟", + "心脏": "心臟", + "腹部": "腹部" +}; diff --git a/src/i18n/pages/PatientManage/HemodiPatients/module/list/en.ts b/src/i18n/pages/PatientManage/HemodiPatients/module/list/en.ts new file mode 100644 index 0000000..0ea8649 --- /dev/null +++ b/src/i18n/pages/PatientManage/HemodiPatients/module/list/en.ts @@ -0,0 +1,179 @@ +export default { + printPatientCardNumberBarcode: 'Print patient card number barcode', + synchronizeHISNumber: 'Synchronize HIS number', + export: 'Export', + newlyAddedPatients: 'Newly added patients', + conditionalQuery: 'Conditional Query', + SerialNumber: 'Number', + dialysisNumber: 'Dialysis number', + hisCode: 'HIS number', + name: 'Patient Name', + gender: 'Gender', + female: 'female', + male: 'male', + patientSource: 'Patient source', + outpatientService: 'outpatient service', + beInHospital: 'Hospitalization', + inpatientNumber: 'Inpatient (outpatient) number', + dialysisFrequency: 'Dialysis frequency', + ward: 'Ward', + patientCardNumber: 'Patient card number', + currentPoints: 'Current points', + telephone: 'Contact phone number', + notes: 'Remarks', + patientList: 'Patient List', + elMessageBox1: 'This operation will permanently delete the account name', + elMessageBox2: 'Do you want to continue', + tips: 'prompt', + success1: 'Delete successful', + success2: 'Sync successful', + patientTable: 'Patient table', + idCode: 'ID number', + age: 'Age', + dialysisAge: 'Dialysis age', + determine: 'confirm', + cancellation: 'cancel', + conditionalQuery2: { + conditionalQuery: 'Conditional Query', + queryDate: 'Query date', + to: 'to', + startDate: 'Start date', + endDate: 'End date', + year: 'year', + moon: 'month', + day: 'day', + ward: 'Ward', + all: 'whole', + patientCondition: 'Patient situation', + pleaseSelect: 'Please select', + patientType: 'Patient type', + transferOutSituation: 'Transfer out situation', + gender: 'Gender', + female: 'female', + male: 'male', + dialysisNumber: 'Dialysis number', + inpatientNumber: 'Outpatient number', + name: 'Patient Name', + cancellation: 'cancel', + search: 'Query', + theSameDay: 'On the same day', + thisWeek: 'This week', + thisMonth: 'This month', + custom: 'custom', + transferredIn: 'Transferred in', + transferredOut: 'Transferred out', + negative: 'negative', + positive: 'positive', + lastDay: 'Last day', + lastWeek: 'Last week', + lastThreeMonths: 'Last three months', + placeholder1: 'Please enter the outpatient number', + placeholder2: 'Please enter the dialysis number', + placeholder3: "Please enter the patient's name", + }, + "日期": "Date", + "通路部位": "Vascular Access Site", + "通路类型": "Vascular Access Type", + "转入": "Transfer In", + "转出": "Transfer Out", + "接收日期": "Admission Date", + "首次透析日期": "First Dialysis Date", + "转入转出日期": "Transfer In/Out Date", + "转入转出原因": "Reason for Transfer In/Out", + "系统正在处理患者同步中请耐心等待待会将同步完成": "The system is processing patient synchronization. Please wait patiently; it will be completed soon.", + "addPatient": { + "新增": "Add New", + "账户名称": "Account Name", + "请输入账户名称": "Please Enter Account Name", + "用户昵称": "User Nickname", + "请输入用户昵称": "Please Enter User Nickname", + "关联角色": "Associated Role", + "请选择": "Please Select", + "超级管理员": "Super Administrator", + "普通用户": "Regular User", + "部门": "Department", + "请选择部门": "Please Select Department", + "手机号": "Phone Number", + "请输入手机号": "Please Enter Phone Number", + "邮箱": "Email", + "性别": "Gender", + "男": "Male", + "女": "Female", + "账户密码": "Account Password", + "账户过期": "Account Expiry", + "用户状态": "User Status", + "启": "Active", + "禁": "Inactive", + "用户描述": "User Description", + "请输入用户描述": "Please Enter User Description", + "取消": "Cancel", + "顶级部门": "Top-Level Department", + "IT外包服务": "IT Outsourcing Service", + "总部": "Headquarters", + "资本控股": "Capital Holdings", + "分部": "Branch" + }, + "commCode": { + "打印患者卡号条码": "Print Patient Card Barcode", + "设备名": "Device Name", + "患者": "Patient", + "请选择患者": "Please Select Patient", + "取消": "Cancel", + "打印": "Print", + "请选设备名称": "Please Select Device Name", + "请选择透析患者": "Please Select Dialysis Patient", + "打印患者卡号成功": "Patient Card Barcode Printed Successfully" + }, + "ConditionsFilters": { + "条件查询": "Condition Query", + "查询日期": "Query Date", + "至": "To", + "开始时间": "Start Time", + "结束时间": "End Time", + "病区": "Ward", + "全部": "All", + "患者情况": "Patient Condition", + "患者类型": "Patient Type", + "转归类型": "Outcome Type", + "性别": "Gender", + "门诊住院号": "Outpatient/Inpatient Number", + "透析号": "Dialysis Number", + "患者姓名": "Patient Name", + "主管护士": "Primary Nurse", + 主治医生: 'attending physician', + "取消": "Cancel", + "确认": "Confirm", + "最近一天": "Last 1 Day", + "最近一周": "Last 1 Week", + "最近三个月": "Last 3 Months", + "阳性": "Positive", + "阴性": "Negative", + "男": "Male", + "女": "Female", + "全天": "All Day", + "本周": "This Week", + "本月": "This Month", + "自定义": "Custom", + 身份证号: "Identity Card Number" + }, + "patQrCode": { + "患者二维码": "Patient QR Code", + "取消": "Cancel", + "打印": "Print", + "姓名": "Name" + }, + "SummaryDialysisRecordsDialog": { + "最近透析记录摘要": "Recent Dialysis Record Summary", + "上机": "Start Dialysis", + "下机": "End Dialysis", + "抗凝剂类型": "Anticoagulant Type", + "首剂": "Initial Dose", + "维持": "Maintenance Dose", + "治疗时长": "Treatment Duration", + "体重信息": "Weight Information", + "脱水设置": "Ultrafiltration Setting", + "抗凝剂设置": "Anticoagulant Setting", + "血压记录": "Blood Pressure Records", + "治疗小结": "Treatment Summary" + } +}; diff --git a/src/i18n/pages/PatientManage/HemodiPatients/module/list/jp.ts b/src/i18n/pages/PatientManage/HemodiPatients/module/list/jp.ts new file mode 100644 index 0000000..51d3a14 --- /dev/null +++ b/src/i18n/pages/PatientManage/HemodiPatients/module/list/jp.ts @@ -0,0 +1,179 @@ +export default { + printPatientCardNumberBarcode: '患者カード番号バーコードを印刷', + synchronizeHISNumber: 'HIS番号を同期', + export: 'エクスポート', + newlyAddedPatients: '新規患者', + conditionalQuery: '条件検索', + SerialNumber: 'シリアル番号', + dialysisNumber: '透析番号', + hisCode: 'HIS番号', + name: '患者氏名', + gender: '性別', + female: '女性', + male: '男性', + patientSource: '患者の出所', + outpatientService: '外来', + beInHospital: '入院', + inpatientNumber: '入院(外来)番号', + dialysisFrequency: '透析回数', + ward: '病棟', + patientCardNumber: '患者カード番号', + currentPoints: '現在のポイント', + telephone: '連絡先電話番号', + notes: '備考', + patientList: '患者リスト', + elMessageBox1: 'この操作はアカウント名を永久に削除します', + elMessageBox2: '続行しますか?', + tips: 'ヒント', + success1: '削除に成功しました', + success2: '同期に成功しました', + patientTable: '患者表', + idCode: '身分証番号', + age: '年齢', + dialysisAge: '透析年齢', + determine: '確認', + cancellation: 'キャンセル', + conditionalQuery2: { + conditionalQuery: '条件検索', + queryDate: '検索日', + to: 'から', + startDate: '開始日', + endDate: '終了日', + year: '年', + moon: '月', + day: '日', + ward: '病棟', + all: '全て', + patientCondition: '患者の状態', + pleaseSelect: '選択してください', + patientType: '患者タイプ', + transferOutSituation: '転出状況', + gender: '性別', + female: '女性', + male: '男性', + dialysisNumber: '透析番号', + inpatientNumber: '外来番号', + name: '患者氏名', + cancellation: 'キャンセル', + search: '検索', + theSameDay: '当日', + thisWeek: '今週', + thisMonth: '今月', + custom: 'カスタム', + transferredIn: '転入済み', + transferredOut: '転出済み', + negative: '陰性', + positive: '陽性', + lastDay: '最近1日', + lastWeek: '最近1週間', + lastThreeMonths: '最近3ヶ月', + placeholder1: '外来番号を入力してください', + placeholder2: '透析番号を入力してください', + placeholder3: '患者氏名を入力してください' + }, + "日期": "日付", + "通路部位": "アクセス部位", + "通路类型": "アクセス種類", + "转入": "転入", + "转出": "転出", + "接收日期": "受入日", + "首次透析日期": "初回透析日", + "转入转出日期": "転入・転出日", + "转入转出原因": "転入・転出理由", + "系统正在处理患者同步中请耐心等待待会将同步完成": "システムが患者の同期処理中です。しばらくお待ちください。", + "addPatient": { + "新增": "新規追加", + "账户名称": "アカウント名", + "请输入账户名称": "アカウント名を入力してください", + "用户昵称": "ユーザー名", + "请输入用户昵称": "ユーザー名を入力してください", + "关联角色": "関連ロール", + "请选择": "選択してください", + "超级管理员": "スーパー管理者", + "普通用户": "一般ユーザー", + "部门": "部署", + "请选择部门": "部署を選択してください", + "手机号": "携帯番号", + "请输入手机号": "携帯番号を入力してください", + "邮箱": "メールアドレス", + "性别": "性別", + "男": "男性", + "女": "女性", + "账户密码": "アカウントパスワード", + "账户过期": "アカウント有効期限切れ", + "用户状态": "ユーザー状態", + "启": "有効", + "禁": "無効", + "用户描述": "ユーザー説明", + "请输入用户描述": "ユーザー説明を入力してください", + "取消": "キャンセル", + "顶级部门": "トップレベル部署", + "IT外包服务": "ITアウトソーシングサービス", + "总部": "本社", + "资本控股": "資本管理", + "分部": "支社" + }, + "commCode": { + "打印患者卡号条码": "患者カードバーコードを印刷", + "设备名": "デバイス名", + "患者": "患者", + "请选择患者": "患者を選択してください", + "取消": "キャンセル", + "打印": "印刷", + "请选设备名称": "デバイス名を選択してください", + "请选择透析患者": "透析患者を選択してください", + "打印患者卡号成功": "患者カードバーコード印刷成功" + }, + "ConditionsFilters": { + "条件查询": "条件検索", + "查询日期": "検索日付", + "至": "から", + "开始时间": "開始時間", + "结束时间": "終了時間", + "病区": "病棟", + "全部": "すべて", + "患者情况": "患者状況", + "患者类型": "患者タイプ", + "转归类型": "転帰タイプ", + "性别": "性別", + "门诊住院号": "外来/入院番号", + "透析号": "透析番号", + "患者姓名": "患者名", + "主管护士": "担当看護師", + 主治医生: '主治医', + "取消": "キャンセル", + "确认": "確認", + "最近一天": "直近1日", + "最近一周": "直近1週間", + "最近三个月": "直近3ヶ月", + "阳性": "陽性", + "阴性": "陰性", + "男": "男性", + "女": "女性", + "全天": "終日", + "本周": "今週", + "本月": "今月", + "自定义": "カスタム", + 身份证号: "個人番号" + }, + "patQrCode": { + "患者二维码": "患者QRコード", + "取消": "キャンセル", + "打印": "印刷", + "姓名": "名前" + }, + "SummaryDialysisRecordsDialog": { + "最近透析记录摘要": "最近の透析記録概要", + "上机": "透析開始", + "下机": "透析終了", + "抗凝剂类型": "抗凝血剤種類", + "首剂": "初回投与", + "维持": "維持投与", + "治疗时长": "治療時間", + "体重信息": "体重情報", + "脱水设置": "除水設定", + "抗凝剂设置": "抗凝血剤設定", + "血压记录": "血圧記録", + "治疗小结": "治療サマリー" + } +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/HemodiPatients/module/list/ms.ts b/src/i18n/pages/PatientManage/HemodiPatients/module/list/ms.ts new file mode 100644 index 0000000..0d46e22 --- /dev/null +++ b/src/i18n/pages/PatientManage/HemodiPatients/module/list/ms.ts @@ -0,0 +1,179 @@ +export default { + "printPatientCardNumberBarcode": "Cetak Kod Bar Nombor Kad Pesakit", + "synchronizeHISNumber": "Segerakkan Nombor HIS", + "export": "Eksport", + "newlyAddedPatients": "Pesakit Baru Ditambah", + "conditionalQuery": "Carian Mengikut Syarat", + "SerialNumber": "Nombor Siri", + "dialysisNumber": "Nombor Dialisis", + "hisCode": "Nombor HIS", + "name": "Nama Pesakit", + "gender": "Jantina", + "female": "Perempuan", + "male": "Lelaki", + "patientSource": "Sumber Pesakit", + "outpatientService": "Pesakit Luar", + "beInHospital": "Pesakit Dalam", + "inpatientNumber": "Nombor Pesakit Dalam (Luar)", + "dialysisFrequency": "Kekerapan Dialisis", + "ward": "Zon Rawatan", + "patientCardNumber": "Nombor Kad Pesakit", + "currentPoints": "Mata Semasa", + "telephone": "Nombor Telefon", + "notes": "Catatan", + "patientList": "Senarai Pesakit", + "elMessageBox1": "Tindakan ini akan memadam nama akaun secara kekal", + "elMessageBox2": "Adakah anda ingin meneruskan?", + "tips": "Petua", + "success1": "Berjaya dipadam", + "success2": "Berjaya disegerakkan", + "patientTable": "Jadual Pesakit", + "idCode": "Nombor Kad Pengenalan", + "age": "Umur", + "dialysisAge": "Tempoh Dialisis", + "determine": "Sahkan", + "cancellation": "Batal", + "conditionalQuery2": { + "conditionalQuery": "Carian Mengikut Syarat", + "queryDate": "Tarikh Carian", + "to": "hingga", + "startDate": "Tarikh Mula", + "endDate": "Tarikh Tamat", + "year": "Tahun", + "moon": "Bulan", + "day": "Hari", + "ward": "Zon Rawatan", + "all": "Semua", + "patientCondition": "Keadaan Pesakit", + "pleaseSelect": "Sila Pilih", + "patientType": "Jenis Pesakit", + "transferOutSituation": "Keadaan Pemindahan Keluar", + "gender": "Jantina", + "female": "Perempuan", + "male": "Lelaki", + "dialysisNumber": "Nombor Dialisis", + "inpatientNumber": "Nombor Pesakit Luar", + "name": "Nama Pesakit", + "cancellation": "Batal", + "search": "Cari", + "theSameDay": "Hari Ini", + "thisWeek": "Minggu Ini", + "thisMonth": "Bulan Ini", + "custom": "Tersuai", + "transferredIn": "Dipindahkan Masuk", + "transferredOut": "Dipindahkan Keluar", + "negative": "Negatif", + "positive": "Positif", + "lastDay": "Sehari Terakhir", + "lastWeek": "Seminggu Terakhir", + "lastThreeMonths": "Tiga Bulan Terakhir", + "placeholder1": "Sila masukkan nombor pesakit luar", + "placeholder2": "Sila masukkan nombor dialisis", + "placeholder3": "Sila masukkan nama pesakit" + }, + "日期": "Tarikh", + "通路部位": "Lokasi Akses", + "通路类型": "Jenis Akses", + "转入": "Dipindahkan Masuk", + "转出": "Dipindahkan Keluar", + "接收日期": "Tarikh Penerimaan", + "首次透析日期": "Tarikh Dialisis Pertama", + "转入转出日期": "Tarikh Pemindahan Masuk/Keluar", + "转入转出原因": "Sebab Pemindahan Masuk/Keluar", + "系统正在处理患者同步中请耐心等待待会将同步完成": "Sistem sedang menyegerakkan data pesakit, sila tunggu sebentar.", + "addPatient": { + "新增": "Tambah Baru", + "账户名称": "Nama Akaun", + "请输入账户名称": "Sila masukkan nama akaun", + "用户昵称": "Nama Pengguna", + "请输入用户昵称": "Sila masukkan nama pengguna", + "关联角色": "Peranan Berkaitan", + "请选择": "Sila pilih", + "超级管理员": "Pentadbir Utama", + "普通用户": "Pengguna Biasa", + "部门": "Jabatan", + "请选择部门": "Sila pilih jabatan", + "手机号": "Nombor Telefon", + "请输入手机号": "Sila masukkan nombor telefon", + "邮箱": "E-mel", + "性别": "Jantina", + "男": "Lelaki", + "女": "Perempuan", + "账户密码": "Kata Laluan Akaun", + "账户过期": "Akaun Tamat Tempoh", + "用户状态": "Status Pengguna", + "启": "Aktif", + "禁": "Tidak Aktif", + "用户描述": "Penerangan Pengguna", + "请输入用户描述": "Sila masukkan penerangan pengguna", + "取消": "Batal", + "顶级部门": "Jabatan Tertinggi", + "IT外包服务": "Perkhidmatan IT Outsourcing", + "总部": "Ibu Pejabat", + "资本控股": "Pegangan Modal", + "分部": "Cawangan" + }, + "commCode": { + "打印患者卡号条码": "Cetak Kod Bar Kad Pesakit", + "设备名": "Nama Peranti", + "患者": "Pesakit", + "请选择患者": "Sila pilih pesakit", + "取消": "Batal", + "打印": "Cetak", + "请选设备名称": "Sila pilih nama peranti", + "请选择透析患者": "Sila pilih pesakit dialisis", + "打印患者卡号成功": "Berjaya mencetak kod bar kad pesakit" + }, + "ConditionsFilters": { + "条件查询": "Carian Mengikut Syarat", + "查询日期": "Tarikh Carian", + "至": "hingga", + "开始时间": "Masa Mula", + "结束时间": "Masa Tamat", + "病区": "Zon Rawatan", + "全部": "Semua", + "患者情况": "Keadaan Pesakit", + "患者类型": "Jenis Pesakit", + "转归类型": "Jenis Pemindahan", + "性别": "Jantina", + "门诊住院号": "Nombor Pesakit Luar/Inap", + "透析号": "Nombor Dialisis", + "患者姓名": "Nama Pesakit", + "主管护士": "Jururawat Bertanggungjawab", + 主治医生: 'Doktor Utama', + "取消": "Batal", + "确认": "Sahkan", + "最近一天": "Sehari Terakhir", + "最近一周": "Seminggu Terakhir", + "最近三个月": "Tiga Bulan Terakhir", + "阳性": "Positif", + "阴性": "Negatif", + "男": "Lelaki", + "女": "Perempuan", + "全天": "Sepanjang Hari", + "本周": "Minggu Ini", + "本月": "Bulan Ini", + "自定义": "Tersuai", + 身份证号: "Nombor Kad Pengenalan" + }, + "patQrCode": { + "患者二维码": "Kod QR Pesakit", + "取消": "Batal", + "打印": "Cetak", + "姓名": "Nama" + }, + "SummaryDialysisRecordsDialog": { + "最近透析记录摘要": "Ringkasan Rekod Dialisis Terkini", + "上机": "Mula Dialisis", + "下机": "Tamat Dialisis", + "抗凝剂类型": "Jenis Antikoagulan", + "首剂": "Dos Pertama", + "维持": "Penyelenggaraan", + "治疗时长": "Tempoh Rawatan", + "体重信息": "Maklumat Berat Badan", + "脱水设置": "Tetapan Penyingkiran Cecair", + "抗凝剂设置": "Tetapan Antikoagulan", + "血压记录": "Rekod Tekanan Darah", + "治疗小结": "Ringkasan Rawatan" + } +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/HemodiPatients/module/list/zh-cn.ts b/src/i18n/pages/PatientManage/HemodiPatients/module/list/zh-cn.ts new file mode 100644 index 0000000..1bde058 --- /dev/null +++ b/src/i18n/pages/PatientManage/HemodiPatients/module/list/zh-cn.ts @@ -0,0 +1,179 @@ +export default { + printPatientCardNumberBarcode: '打印患者卡号条码', + synchronizeHISNumber: '同步HIS编号', + export: '导 出', + newlyAddedPatients: '新增患者', + conditionalQuery: '条件查询', + SerialNumber: '序号', + dialysisNumber: '透析号', + hisCode: 'HIS编号', + name: '患者姓名', + gender: '性别', + female: '女', + male: '男', + patientSource: '患者来源', + outpatientService: '门诊', + beInHospital: '住院', + inpatientNumber: '住院(门诊)号', + dialysisFrequency: '透析次数', + ward: '病区', + patientCardNumber: '患者卡号', + currentPoints: '当前积分', + telephone: '联系电话', + notes: '备注', + patientList: '患者列表', + elMessageBox1: '此操作将永久删除账户名称', + elMessageBox2: '是否继续', + tips: '提示', + success1: '删除成功', + success2: '同步成功', + patientTable: '患者表格', + idCode: '身份证号', + age: '年龄', + dialysisAge: '透析龄', + determine: '确认', + cancellation: '取消', + conditionalQuery2: { + conditionalQuery: '条件查询', + queryDate: '查询日期', + to: '至', + startDate: '开始日期', + endDate: '结束日期', + year: '年', + moon: '月', + day: '日', + ward: '病区', + all: '全部', + patientCondition: '患者情况', + pleaseSelect: '请选择', + patientType: '患者类型', + transferOutSituation: '转出情况', + gender: '性别', + female: '女', + male: '男', + dialysisNumber: '透析号', + inpatientNumber: '门诊号', + name: '患者姓名', + cancellation: '取消', + search: '查 询', + theSameDay: '当天', + thisWeek: '本周', + thisMonth: '本月', + custom: '自定义', + transferredIn: '已转入', + transferredOut: '已转出', + negative: '阴性', + positive: '阳性', + lastDay: '最近一天', + lastWeek: '最近一周', + lastThreeMonths: '最近三个月', + placeholder1: '请输入门诊号', + placeholder2: '请输入透析号', + placeholder3: '请输入患者姓名' + }, + 日期: '日期', + 通路部位: '通路部位', + 通路类型: '通路类型', + 转入: '转入', + 转出: '转出', + 接收日期: '接收日期', + 首次透析日期: '首次透析日期', + 转入转出日期: '转入转出日期', + 转入转出原因: '转入转出原因', + 系统正在处理患者同步中请耐心等待待会将同步完成: '系统正在处理患者同步中,请耐心等待,待会将同步完成', + addPatient: { + 新增: '新增', + 账户名称: '账户名称', + 请输入账户名称: '请输入账户名称', + 用户昵称: '用户昵称', + 请输入用户昵称: '请输入用户昵称', + 关联角色: '关联角色', + 请选择: '请选择', + 超级管理员: '超级管理员', + 普通用户: '普通用户', + 部门: '部门', + 请选择部门: '请选择部门', + 手机号: '手机号', + 请输入手机号: '请输入手机号', + 邮箱: '邮箱', + 性别: '性别', + 男: '男', + 女: '女', + 账户密码: '账户密码', + 账户过期: '账户过期', + 用户状态: '用户状态', + 启: '启', + 禁: '禁', + 用户描述: '用户描述', + 请输入用户描述: '请输入用户描述', + 取消: '取消', + 顶级部门: '顶级部门', + IT外包服务: 'IT外包服务', + 总部: '总部', + 资本控股: '资本控股', + 分部: '分部', + }, + commCode: { + 打印患者卡号条码: '打印患者卡号条码', + 设备名: '设备名', + 患者: '患者', + 请选择患者: '请选择患者', + 取消: '取消', + 打印: '打印', + 请选设备名称: '请选设备名称', + 请选择透析患者: '请选择透析患者', + 打印患者卡号成功: '打印患者卡号成功', + }, + ConditionsFilters: { + 条件查询: '条件查询', + 查询日期: '查询日期', + 至: '至', + 开始时间: '开始时间', + 结束时间: '结束时间', + 病区: '病区', + 全部: '全部', + 患者情况: '患者情况', + 患者类型: '患者类型', + 转归类型: '转归类型', + 性别: '性别', + 门诊住院号: '门诊/住院号', + 透析号: '透析号', + 患者姓名: '患者姓名', + 主管护士: '主管护士', + 主治医生: '主治医生', + 取消: '取消', + 确认: '确认', + 最近一天: '最近一天', + 最近一周: '最近一周', + 最近三个月: '最近三个月', + 阳性: '阳性', + 阴性: '阴性', + 男: '男', + 女: '女', + 全天: '全天', + 本周: '本周', + 本月: '本月', + 自定义: '自定义', + 身份证号: "身份证号" + }, + patQrCode: { + 患者二维码: '患者二维码', + 取消: '取消', + 打印: '打印', + 姓名: '姓名', + }, + SummaryDialysisRecordsDialog: { + 最近透析记录摘要: '最近透析记录摘要', + 上机: '上机', + 下机: '下机', + 抗凝剂类型: '抗凝剂类型', + 首剂: '首剂', + 维持: '维持', + 治疗时长: '治疗时长', + 体重信息: '体重信息', + 脱水设置: '脱水设置', + 抗凝剂设置: '抗凝剂设置', + 血压记录: '血压记录', + 治疗小结: '治疗小结', + } +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/HemodiPatients/module/list/zh-tw.ts b/src/i18n/pages/PatientManage/HemodiPatients/module/list/zh-tw.ts new file mode 100644 index 0000000..248d4a8 --- /dev/null +++ b/src/i18n/pages/PatientManage/HemodiPatients/module/list/zh-tw.ts @@ -0,0 +1,179 @@ +export default { + printPatientCardNumberBarcode: '列印患者卡號條碼', + synchronizeHISNumber: '同步HIS編號', + export: '匯出', + newlyAddedPatients: '新增患者', + conditionalQuery: '條件査詢', + SerialNumber: '序號', + dialysisNumber: '透析號', + hisCode: 'HIS編號', + name: '患者姓名', + gender: '性別', + female: '女', + male: '男', + patientSource: '患者來源', + outpatientService: '門診', + beInHospital: '住院', + inpatientNumber: '住院(門診)號', + dialysisFrequency: '透析次數', + ward: '病區', + patientCardNumber: '患者卡號', + currentPoints: '當前積分', + telephone: '聯繫電話', + notes: '備註', + patientList: '患者清單', + elMessageBox1: '此操作將永久删除帳戶名稱', + elMessageBox2: '是否繼續', + tips: '提示', + success1: '删除成功', + success2: '同步成功', + patientTable: '患者表格', + idCode: '身份證號', + age: '年齡', + dialysisAge: '透析齡', + determine: '確認', + cancellation: '取消', + conditionalQuery2: { + conditionalQuery: '條件査詢', + queryDate: '査詢日期', + to: '至', + startDate: '開始日期', + endDate: '結束日期', + year: '年', + moon: '月', + day: '日', + ward: '病區', + all: '全部', + patientCondition: '患者情况', + pleaseSelect: '請選擇', + patientType: '患者類型', + transferOutSituation: '轉出情况', + gender: '性別', + female: '女', + male: '男', + dialysisNumber: '透析號', + inpatientNumber: '門診號', + name: '患者姓名', + cancellation: '取消', + search: '査詢', + theSameDay: '當天', + thisWeek: '本周', + thisMonth: '本月', + custom: '自定義', + transferredIn: '已轉入', + transferredOut: '已轉出', + negative: '陰性', + positive: '陽性', + lastDay: '最近一天', + lastWeek: '最近一周', + lastThreeMonths: '最近三個月', + placeholder1: '請輸入門診號', + placeholder2: '請輸入透析號', + placeholder3: '請輸入患者姓名', + }, + "日期": "日期", + "通路部位": "通路部位", + "通路类型": "通路類型", + "转入": "轉入", + "转出": "轉出", + "接收日期": "接收日期", + "首次透析日期": "首次透析日期", + "转入转出日期": "轉入轉出日期", + "转入转出原因": "轉入轉出原因", + "系统正在处理患者同步中请耐心等待待会将同步完成": "系統正在處理患者同步中,請耐心等待,待會將同步完成。", + "addPatient": { + "新增": "新增", + "账户名称": "帳戶名稱", + "请输入账户名称": "請輸入帳戶名稱", + "用户昵称": "使用者暱稱", + "请输入用户昵称": "請輸入使用者暱稱", + "关联角色": "關聯角色", + "请选择": "請選擇", + "超级管理员": "超級管理員", + "普通用户": "普通使用者", + "部门": "部門", + "请选择部门": "請選擇部門", + "手机号": "手機號", + "请输入手机号": "請輸入手機號", + "邮箱": "郵箱", + "性别": "性別", + "男": "男", + "女": "女", + "账户密码": "帳戶密碼", + "账户过期": "帳戶過期", + "用户状态": "使用者狀態", + "启": "啟用", + "禁": "禁用", + "用户描述": "使用者描述", + "请输入用户描述": "請輸入使用者描述", + "取消": "取消", + "顶级部门": "頂級部門", + "IT外包服务": "IT外包服務", + "总部": "總部", + "资本控股": "資本控股", + "分部": "分部" + }, + "commCode": { + "打印患者卡号条码": "列印患者卡號條碼", + "设备名": "設備名稱", + "患者": "患者", + "请选择患者": "請選擇患者", + "取消": "取消", + "打印": "列印", + "请选设备名称": "請選擇設備名稱", + "请选择透析患者": "請選擇透析患者", + "打印患者卡号成功": "列印患者卡號成功" + }, + "ConditionsFilters": { + "条件查询": "條件查詢", + "查询日期": "查詢日期", + "至": "至", + "开始时间": "開始時間", + "结束时间": "結束時間", + "病区": "病區", + "全部": "全部", + "患者情况": "患者情況", + "患者类型": "患者類型", + "转归类型": "轉歸類型", + "性别": "性別", + "门诊住院号": "門診/住院號", + "透析号": "透析號", + "患者姓名": "患者姓名", + "主管护士": "主管護理師", + 主治医生: '主治醫生', + "取消": "取消", + "确认": "確認", + "最近一天": "最近一天", + "最近一周": "最近一週", + "最近三个月": "最近三個月", + "阳性": "陽性", + "阴性": "陰性", + "男": "男", + "女": "女", + "全天": "全天", + "本周": "本週", + "本月": "本月", + "自定义": "自定義", + 身份证号: "身分證字號" + }, + "patQrCode": { + "患者二维码": "患者二維碼", + "取消": "取消", + "打印": "列印", + "姓名": "姓名" + }, + "SummaryDialysisRecordsDialog": { + "最近透析记录摘要": "最近透析記錄摘要", + "上机": "上機", + "下机": "下機", + "抗凝剂类型": "抗凝劑類型", + "首剂": "首劑", + "维持": "維持", + "治疗时长": "治療時長", + "体重信息": "體重資訊", + "脱水设置": "脫水設置", + "抗凝剂设置": "抗凝劑設置", + "血压记录": "血壓記錄", + "治疗小结": "治療小結" + } +}; diff --git a/src/i18n/pages/PatientManage/courseRecord/en.ts b/src/i18n/pages/PatientManage/courseRecord/en.ts new file mode 100644 index 0000000..d76822e --- /dev/null +++ b/src/i18n/pages/PatientManage/courseRecord/en.ts @@ -0,0 +1,88 @@ +export default { + cxrq: 'Query date', + z: 'to', + ksrq: 'Start date', + jsrq: 'End date', + cx: 'query', + tj: 'Add', + xg: 'modify', + sc: 'delete', + dy: 'Printing', + jlsj: 'Record time', + bcys: 'Disease course doctor', + bcmc: 'Disease course name', + bcnr: 'Disease course content', + xm: 'name', + nl: 'Age', + xb: 'Gender', + zyh: 'Inpatient (outpatient) number', + bq: 'Ward', + ch: 'Bed number', + txh: 'Dialysis number', + tsqm: "Physician's signature", + qx: 'cancel', + bcjl: 'Disease course record', + warning1: 'Please check the medical record that needs to be printed!', + elMessageBox1: 'This operation will permanently delete the disease course record. Do you want to continue?', + elMessageBox2: 'prompt', + elMessageBox3: 'confirm', + elMessageBox4: 'cancel', + success1: 'Delete successful', + warning2: 'No patient selected!', + editorPlaceholder: 'Please enter your text!', + tjbcnr: 'Add disease course content', + qxz: 'Please select', + jcbg: 'Inspection report', + mbk: 'Template Library', + yz: 'Medical advice', + editor1: 'Currently inputted', + editor2: 'Characters', + editor3: 'You can also enter', + editor4: 'Word count exceeds the maximum allowed value, the server may refuse to save!', + bc: 'preserve', + success2: 'Operation successful', + warning3: 'The content of the disease course text cannot be empty', + yzlx: 'Type of medical order', + yzzt: 'Medical order status', + xh: 'Number', + kssj: 'start time', + yzmc: 'Medical order name', + gg: 'specifications', + dcyl: 'Single dose', + gytj: 'Administration route', + zxpl: 'Execution frequency', + bz: 'Remarks', + tzsj: 'Stop time', + tzyy: 'Reason for stopping', + tzys: 'Stop instructing the doctor', + qr: 'confirm', + cqyz: 'Long term medical advice', + lsyz: 'STAT order ', + bx: 'Unlimited', + wtz: 'unabated', + ytz: 'Stopped', + warning4: 'Patient number cannot be empty, please refresh and try again', + warning5: 'Please select the order you want to insert', + ls: 'temporary', + cq: 'long-term', + success3: 'Insert successful', + xgbcnr: 'Modify the content of the disease course', + jybg: 'Inspection report', + jyxm: 'Inspection items', + all: 'Select All', + other: 'other', + yy: 'application', + hyhb: 'Laboratory report', + qxzcxrq: 'Please select the query date', + qxzhz: 'Please select a patient', + mbmc: 'Template Name', + swmb: 'Set as template', + dybcjl: 'Print medical course records', + bcmbsz: 'Course template settings', + tips1: 'Note: This operation is only for adding and will not perform duplicate content verification. Please do not set the same 【 disease course 】 repeatedly to avoid homogenization of template content', + mbmc2: 'Template Name', + mbmc2Placeholder: 'Please enter the template name', + mbmc2Placeholder2: 'Please enter the template name!', + addTempSuccess: 'Added successfully!', + txd: '透析单' +}; diff --git a/src/i18n/pages/PatientManage/courseRecord/index.ts b/src/i18n/pages/PatientManage/courseRecord/index.ts new file mode 100644 index 0000000..31b3166 --- /dev/null +++ b/src/i18n/pages/PatientManage/courseRecord/index.ts @@ -0,0 +1,24 @@ +import courseRecordZhCn from './zh-cn'; +import courseRecordEn from './en'; +import courseRecordZhTw from './zh-tw'; +import courseRecordJp from './jp'; +import courseRecordMs from './ms'; + + +export default { + zhCn: { + ...courseRecordZhCn + }, + en: { + ...courseRecordEn + }, + zhTw: { + ...courseRecordZhTw + }, + jp: { + ...courseRecordJp + }, + ms: { + ...courseRecordMs, + } +} diff --git a/src/i18n/pages/PatientManage/courseRecord/jp.ts b/src/i18n/pages/PatientManage/courseRecord/jp.ts new file mode 100644 index 0000000..bdc55e7 --- /dev/null +++ b/src/i18n/pages/PatientManage/courseRecord/jp.ts @@ -0,0 +1,88 @@ +export default { + cxrq: '検索日付', + z: 'から', + ksrq: '開始日付', + jsrq: '終了日付', + cx: '検索', + tj: '追加', + xg: '修正', + sc: '削除', + dy: '印刷', + jlsj: '記録時間', + bcys: '経過記録医師', + bcmc: '経過記録名称', + bcnr: '経過記録内容', + xm: '氏名', + nl: '年齢', + xb: '性別', + zyh: '入院(外来)番号', + bq: '病棟', + ch: 'ベッド番号', + txh: '透析番号', + tsqm: '医師署名', + qx: 'キャンセル', + bcjl: '経過記録', + warning1: '印刷する経過記録を選択してください!', + elMessageBox1: 'この操作は経過記録を永久に削除します。続行しますか?', + elMessageBox2: 'ヒント', + elMessageBox3: '確認', + elMessageBox4: 'キャンセル', + success1: '削除成功', + warning2: '患者が選択されていません!', + editorPlaceholder: 'テキストを入力してください!', + tjbcnr: '経過記録内容を追加', + qxz: '選択してください', + jcbg: '検査報告', + mbk: 'テンプレートライブラリ', + yz: '医師の指示', + editor1: '現在入力済み', + editor2: '文字', + editor3: 'まだ入力できます', + editor4: '文字数が最大許可値を超えています。サーバーが保存を拒否する可能性があります!', + bc: '保存', + success2: '操作成功', + warning3: '経過記録のテキスト内容は空にできません', + yzlx: '医師の指示タイプ', + yzzt: '医師の指示の状態', + xh: 'シリアル番号', + kssj: '開始時間', + yzmc: '指示名称', + gg: '規格', + dcyl: '単回用量', + gytj: '投与経路', + zxpl: '実施頻度', + bz: '備考', + tzsj: '停止時間', + tzyy: '停止理由', + tzys: '指示停止医師', + qr: '確認', + cqyz: '長期指示', + lsyz: '一時指示', + bx: '制限なし', + wtz: '停止していない', + ytz: '停止済み', + warning4: '患者番号が空です。リフレッシュ後に再試行してください', + warning5: '挿入する医師の指示を選択してください', + ls: '一時', + cq: '長期', + success3: '挿入成功', + xgbcnr: '経過記録内容を修正', + jybg: '検査報告', + jyxm: '検査項目', + all: '全選択', + other: 'その他', + yy: '適用', + hyhb: '化学検査報告', + qxzcxrq: '検索日付を選択してください', + qxzhz: '患者を選択してください', + mbmc: 'テンプレート名称', + swmb: 'テンプレートとして設定', + dybcjl: '経過記録を印刷', + bcmbsz: '経過記録テンプレート設定', + tips1: '注意:この操作は追加のみを目的としており、重複内容の検証は行いません。同じ【経過記録】を重複設定しないようにご注意ください。テンプレート内容が同質化される可能性があります。', + mbmc2: 'テンプレート名称', + mbmc2Placeholder: 'テンプレート名称を入力してください', + mbmc2Placeholder2: 'テンプレート名称を入力してください!', + addTempSuccess: '追加成功!', + txd: '透析単' +}; diff --git a/src/i18n/pages/PatientManage/courseRecord/ms.ts b/src/i18n/pages/PatientManage/courseRecord/ms.ts new file mode 100644 index 0000000..416a763 --- /dev/null +++ b/src/i18n/pages/PatientManage/courseRecord/ms.ts @@ -0,0 +1,96 @@ +export default { + cxrq: 'Tarikh Semakan', + z: 'hingga', + ksrq: 'Tarikh Mula', + jsrq: 'Tarikh Tamat', + cx: 'Semak', + tj: 'Tambah', + xg: 'Kemaskini', + sc: 'Padam', + dy: 'Cetak', + jlsj: 'Masa Rekod', + bcys: 'Doktor Kursus Penyakit', + bcmc: 'Nama Kursus Penyakit', + bcnr: 'Kandungan Kursus Penyakit', + xm: 'Nama', + nl: 'Umur', + xb: 'Jantina', + zyh: 'No. Wad (Poliklinik)', + bq: 'Kawasan Wad', + ch: 'No. Katil', + txh: 'No. Dialisis', + tsqm: 'Tandatangan Doktor', + qx: 'Batal', + bcjl: 'Rekod Kursus Penyakit', + warning1: 'Sila pilih rekod kursus penyakit yang perlu dicetak!', + elMessageBox1: 'Tindakan ini akan memadamkan rekod kursus penyakit secara kekal, adakah anda ingin meneruskan?', + elMessageBox2: 'Peringatan', + elMessageBox3: 'Sahkan', + elMessageBox4: 'Batal', + success1: 'Padam Berjaya', + warning2: 'Pelanggan tidak dipilih!', + editorPlaceholder: 'Sila masukkan teks anda!', + tjbcnr: 'Tambah Kandungan Kursus Penyakit', + qxz: 'Sila pilih', + jcbg: 'Laporan Pemeriksaan', + mbk: 'Pangkalan Template', + yz: 'Arahan Perubatan', + editor1: 'Jumlah yang telah dimasukkan', + editor2: 'Karakter', + editor3: 'Anda masih boleh memasukkan', + editor4: 'Jumlah karakter melebihi nilai maksimum yang dibenarkan, server mungkin menolak untuk menyimpan!', + bc: 'Simpan', + success2: 'Tindakan Berjaya', + warning3: 'Kandungan teks kursus penyakit tidak boleh kosong', + yzlx: 'Jenis Arahan Perubatan', + yzzt: 'Status Arahan Perubatan', + xh: 'No. Urutan', + kssj: 'Masa Mula', + yzmc: 'Nama Arahan Perubatan', + gg: 'Spesifikasi', + dcyl: 'Dos Sekali Penggunaan', + gytj: 'Saluran Pemberian Ubat', + zxpl: 'Frekuensi Pelaksanaan', + bz: 'Catatan', + tzsj: 'Masa Berhenti', + tzyy: 'Sebab Berhenti', + tzys: 'Doktor Berhenti Arahan', + qr: 'Sahkan', + cqyz: 'Arahan Perubatan Jangka Panjang', + lsyz: 'Arahan Perubatan Sementara', + bx: 'Tiada Had', + wtz: 'Tidak Berhenti', + ytz: 'Sudah Berhenti', + warning4: 'Nombor pesakit tidak boleh kosong, sila segarkan dan cuba lagi', + warning5: 'Sila pilih arahan perubatan yang ingin dimasukkan', + ls: 'Sementara', + cq: 'Jangka Panjang', + success3: 'Sisipan Berjaya', + xgbcnr: 'Kemaskini Kandungan Kursus Penyakit', + jybg: 'Laporan Ujian', + jyxm: 'Item Ujian', + all: 'Pilih Semua', + other: 'Lain-lain', + yy: 'Aplikasi', + hyhb: 'Maklum Balas Ujian', + qxzcxrq: 'Sila pilih tarikh semakan', + qxzhz: 'Sila pilih pesakit', + mbmc: 'Nama Template', + swmb: 'Tetapkan Sebagai Template', + dybcjl: 'Cetak Rekod Kursus Penyakit', + bcmbsz: 'Tetapan Template Kursus Penyakit', + tips1: + 'Perhatian: Tindakan ini hanya untuk menambah, tindakan ini tidak akan memeriksa kandungan yang berulang, sila elakkan menetapkan template dengan kandungan kursus yang sama untuk mengelakkan homogenisasi', + mbmc2: 'Nama Template', + mbmc2Placeholder: 'Sila masukkan nama template', + mbmc2Placeholder2: 'Sila masukkan nama template!', + addTempSuccess: 'Tambah Berjaya!', + txd: 'Borang Dialisis', + dialysisSummary: { + 透析小结: 'Ringkasan Dialisis', + 智能推荐模版: 'Template Cadangan Pintar', + 近三十天内该患者无透析记录: 'Pesakit ini tiada rekod dialisis dalam 30 hari lepas', + 取消: 'Batal', + 应用: 'Aplikasi', + }, +}; diff --git a/src/i18n/pages/PatientManage/courseRecord/zh-cn.ts b/src/i18n/pages/PatientManage/courseRecord/zh-cn.ts new file mode 100644 index 0000000..beb0fc1 --- /dev/null +++ b/src/i18n/pages/PatientManage/courseRecord/zh-cn.ts @@ -0,0 +1,95 @@ +export default { + cxrq: '查询日期', + z: '至', + ksrq: '开始日期', + jsrq: '结束日期', + cx: '查询', + tj: '添加', + xg: '修改', + sc: '删除', + dy: '打印', + jlsj: '记录时间', + bcys: '病程医生', + bcmc: '病程名称', + bcnr: '病程内容', + xm: '姓名', + nl: '年龄', + xb: '性别', + zyh: '住院(门诊)号', + bq: '病区', + ch: '床号', + txh: '透析号', + tsqm: '医师签名', + qx: '取消', + bcjl: '病程记录', + warning1: '请勾选需要打印的病程记录!', + elMessageBox1: '此操作将永久删除该病程记录,是否继续?', + elMessageBox2: '提示', + elMessageBox3: '确认', + elMessageBox4: '取消', + success1: '删除成功', + warning2: '未选择患者!', + editorPlaceholder: '请输入您的文字!', + tjbcnr: '添加病程内容', + qxz: '请选择', + jcbg: '检查报告', + mbk: '模板库', + yz: '医嘱', + editor1: '当前已输入', + editor2: '个字符', + editor3: '您还可以输入', + editor4: '字数超出最大允许值,服务器可能拒绝保存!', + bc: '保存', + success2: '操作成功', + warning3: '病程文本内容不能为空', + yzlx: '医嘱类型', + yzzt: '医嘱状态', + xh: '序号', + kssj: '开始时间', + yzmc: '医嘱名称', + gg: '规格', + dcyl: '单次用量', + gytj: '给药途径', + zxpl: '执行频率', + bz: '备注', + tzsj: '停止时间', + tzyy: '停止原因', + tzys: '停嘱医生', + qr: '确认', + cqyz: '长期医嘱', + lsyz: '临时医嘱', + bx: '不限', + wtz: '未停止', + ytz: '已停止', + warning4: '患者编号不能为空,请刷新后重试', + warning5: '请选择您要插入的医嘱', + ls: '临时', + cq: '长期', + success3: '插入成功', + xgbcnr: '修改病程内容', + jybg: '检验报告', + jyxm: '检验项目', + all: '全选', + other: '其它', + yy: '应用', + hyhb: '化验回报', + qxzcxrq: '请选择查询日期', + qxzhz: '请选择患者', + mbmc: '模板名称', + swmb: '设为模板', + dybcjl: '打印病程记录', + bcmbsz: '病程模板设置', + tips1: '注意:该操作仅为添加操作,执行操作将不执行重复内容校验,请勿将同一【病程】重复设置,以免造成模板内容的同质化', + mbmc2: '模板名称', + mbmc2Placeholder: '请输入模板名称', + mbmc2Placeholder2: '请输入模板名称!', + addTempSuccess: '添加成功!', + txd: '透析单', + dialysisSummary: { + 透析小结: '透析小结', + 智能推荐模版: '智能推荐模版', + 近三十天内该患者无透析记录: '近三十天内该患者无透析记录', + 取消: '取消', + 应用: '应用', + } +}; diff --git a/src/i18n/pages/PatientManage/courseRecord/zh-tw.ts b/src/i18n/pages/PatientManage/courseRecord/zh-tw.ts new file mode 100644 index 0000000..c1975c4 --- /dev/null +++ b/src/i18n/pages/PatientManage/courseRecord/zh-tw.ts @@ -0,0 +1,88 @@ +export default { + cxrq: '査詢日期', + z: '至', + ksrq: '開始日期', + jsrq: '結束日期', + cx: '査詢', + tj: '添加', + xg: '修改', + sc: '删除', + dy: '列印', + jlsj: '記錄時間', + bcys: '病程醫生', + bcmc: '病程名稱', + bcnr: '病程內容', + xm: '姓名', + nl: '年齡', + xb: '性別', + zyh: '住院(門診)號', + bq: '病區', + ch: '床號', + txh: '透析號', + tsqm: '醫師簽名', + qx: '取消', + bcjl: '病程記錄', + warning1: '請勾選需要列印的病程記錄!', + elMessageBox1: '此操作將永久删除該病程記錄,是否繼續?', + elMessageBox2: '提示', + elMessageBox3: '確認', + elMessageBox4: '取消', + success1: '删除成功', + warning2: '未選擇患者!', + editorPlaceholder: '請輸入您的文字!', + tjbcnr: '添加病程內容', + qxz: '請選擇', + jcbg: '檢查報告', + mbk: '範本庫', + yz: '醫囑', + editor1: '當前已輸入', + editor2: '個字元', + editor3: '您還可以輸入', + editor4: '字數超出最大允許值,服務器可能拒絕保存!', + bc: '保存', + success2: '操作成功', + warning3: '病程文字內容不能為空', + yzlx: '醫囑類型', + yzzt: '醫囑狀態', + xh: '序號', + kssj: '開始時間', + yzmc: '醫囑名稱', + gg: '規格', + dcyl: '單次用量', + gytj: '給藥途徑', + zxpl: '執行頻率', + bz: '備註', + tzsj: '停止時間', + tzyy: '停止原因', + tzys: '停囑醫生', + qr: '確認', + cqyz: '長期醫囑', + lsyz: '臨時醫囑', + bx: '不限', + wtz: '未停止', + ytz: '已停止', + warning4: '患者編號不能為空,請重繪後重試', + warning5: '請選擇您要插入的醫囑', + ls: '臨時', + cq: '長期', + success3: '插入成功', + xgbcnr: '修改病程內容', + jybg: '檢驗報告', + jyxm: '檢驗項目', + all: '全選', + other: '其它', + yy: '應用', + hyhb: '化驗回報', + qxzcxrq: '請選擇査詢日期', + qxzhz: '請選擇患者', + mbmc: '範本名稱', + swmb: '设为模板', + dybcjl: '打印病程记录', + bcmbsz: '病程模板设置', + tips1: '注意:该操作仅为添加操作,执行操作将不执行重复内容校验,请勿将同一【病程】重复设置,以免造成模板内容的同质化', + mbmc2: '模板名称', + mbmc2Placeholder: '请输入模板名称', + mbmc2Placeholder2: '请输入模板名称!', + addTempSuccess: '添加成功!', + txd: '透析单' +}; diff --git a/src/i18n/pages/PatientManage/dryWeight/en.ts b/src/i18n/pages/PatientManage/dryWeight/en.ts new file mode 100644 index 0000000..b99d25d --- /dev/null +++ b/src/i18n/pages/PatientManage/dryWeight/en.ts @@ -0,0 +1,32 @@ +export default { + "干体重调整记录": "Dry Weight Adjustment Record", + "当前时间": "Current Time:", + "干体重": "Dry Weight:", + "调整": "Adjustment", + "调整值": "Adjustment Value", + "时间": "Time", + "测量类型": "Measurement Type", + "默认": "Default", + "待定": "Pending", + "卧床": "Bedridden", + "医生": "Doctor", + "启用时间": "Activation Time", + "备注": "Remarks", + "操作": "Action", + "删除": "Delete", + "编辑备注": "Edit Remarks", + "该页面调整对当前透析单不生效": "This adjustment does not affect the current dialysis order", + "请选择": "Please Select", + "取消": "Cancel", + "确定": "Confirm", + "确认": "Confirm", + "请选择医生": "Please Select Doctor", + "上调": "Increase", + "下调": "Decrease", + "未选择患者": "No patient selected", + "操作成功": "Operation Successful", + "修改备注成功": "Remarks updated successfully", + "此操作将删除该条干体重记录是否确认": "This action will delete the dry weight record. Are you sure?", + "提示": "Tip", + "删除成功": "Deletion Successful" +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/dryWeight/index.ts b/src/i18n/pages/PatientManage/dryWeight/index.ts new file mode 100644 index 0000000..8aa479c --- /dev/null +++ b/src/i18n/pages/PatientManage/dryWeight/index.ts @@ -0,0 +1,24 @@ +import zhCn from './zh-cn'; +import en from './en'; +import zhTw from './zh-tw'; +import jp from './jp'; +import ms from './ms'; + + +export default { + zhCn: { + ...zhCn + }, + en: { + ...en + }, + zhTw: { + ...zhTw + }, + jp: { + ...jp + }, + ms: { + ...ms, + } +} diff --git a/src/i18n/pages/PatientManage/dryWeight/jp.ts b/src/i18n/pages/PatientManage/dryWeight/jp.ts new file mode 100644 index 0000000..09e1b51 --- /dev/null +++ b/src/i18n/pages/PatientManage/dryWeight/jp.ts @@ -0,0 +1,32 @@ +export default { + "干体重调整记录": "乾体重調整記録", + "当前时间": "現在の時刻:", + "干体重": "乾体重:", + "调整": "調整", + "调整值": "調整値", + "时间": "時間", + "测量类型": "測定タイプ", + "默认": "デフォルト", + "待定": "未定", + "卧床": "床に臥す", + "医生": "医師", + "启用时间": "有効時間", + "备注": "備考", + "操作": "操作", + "删除": "削除", + "编辑备注": "備考編集", + "该页面调整对当前透析单不生效": "このページの調整は現在の透析オーダーには反映されません", + "请选择": "選択してください", + "取消": "キャンセル", + "确定": "確定", + "确认": "確認", + "请选择医生": "医師を選択してください", + "上调": "引き上げ", + "下调": "引き下げ", + "未选择患者": "患者が選択されていません", + "操作成功": "操作が成功しました", + "修改备注成功": "備考の変更が成功しました", + "此操作将删除该条干体重记录是否确认": "この操作は乾体重記録を削除します。確認しますか?", + "提示": "ヒント", + "删除成功": "削除成功" +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/dryWeight/ms.ts b/src/i18n/pages/PatientManage/dryWeight/ms.ts new file mode 100644 index 0000000..50ad8a8 --- /dev/null +++ b/src/i18n/pages/PatientManage/dryWeight/ms.ts @@ -0,0 +1,32 @@ +export default { + "干体重调整记录": "Rekod Penyesuaian Berat Kering", + "当前时间": "Masa Semasa:", + "干体重": "Berat Kering:", + "调整": "Penyesuaian", + "调整值": "Nilai Penyesuaian", + "时间": "Masa", + "测量类型": "Jenis Pengukuran", + "默认": "Sedia Ada", + "待定": "Tunggu", + "卧床": "Terbaring", + "医生": "Doktor", + "启用时间": "Masa Pengaktifan", + "备注": "Nota", + "操作": "Tindakan", + "删除": "Padam", + "编辑备注": "Edit Nota", + "该页面调整对当前透析单不生效": "Penyesuaian pada halaman ini tidak memberi kesan kepada pesanan dialisis semasa", + "请选择": "Sila Pilih", + "取消": "Batal", + "确定": "Sahkan", + "确认": "Sahkan", + "请选择医生": "Sila Pilih Doktor", + "上调": "Naikkan", + "下调": "Turunkan", + "未选择患者": "Pesakit Tidak Dipilih", + "操作成功": "Tindakan Berjaya", + "修改备注成功": "Nota Berjaya Dikemaskini", + "此操作将删除该条干体重记录是否确认": "Tindakan ini akan memadam rekod berat kering ini. Adakah anda pasti?", + "提示": "Petua", + "删除成功": "Padam Berjaya" +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/dryWeight/zh-cn.ts b/src/i18n/pages/PatientManage/dryWeight/zh-cn.ts new file mode 100644 index 0000000..fde36fe --- /dev/null +++ b/src/i18n/pages/PatientManage/dryWeight/zh-cn.ts @@ -0,0 +1,32 @@ +export default { + 干体重调整记录: '干体重调整记录', + 当前时间: '当前时间:', + 干体重: '干体重:', + 调整: '调整', + 调整值: '调整值', + 时间: '时间', + 测量类型: '测量类型', + 默认: '默认', + 待定: '待定', + 卧床: '卧床', + 医生: '医生', + 启用时间: '启用时间', + 备注: '备注', + 操作: '操作', + 删除: '删除', + 编辑备注: '编辑备注', + 该页面调整对当前透析单不生效: '该页面调整对当前透析单不生效', + 请选择: '请选择', + 取消: '取消', + 确定: '确定', + 确认: '确认', + 请选择医生: '请选择医生', + 上调: '上调', + 下调: '下调', + 未选择患者: '未选择患者', + 操作成功: '操作成功', + 修改备注成功: '修改备注成功', + 此操作将删除该条干体重记录是否确认: '此操作将删除该条干体重记录,是否确认?', + 提示: '提示', + 删除成功: '删除成功', +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/dryWeight/zh-tw.ts b/src/i18n/pages/PatientManage/dryWeight/zh-tw.ts new file mode 100644 index 0000000..102696c --- /dev/null +++ b/src/i18n/pages/PatientManage/dryWeight/zh-tw.ts @@ -0,0 +1,32 @@ +export default { + "干体重调整记录": "乾體重調整記錄", + "当前时间": "當前時間:", + "干体重": "乾體重:", + "调整": "調整", + "调整值": "調整值", + "时间": "時間", + "测量类型": "測量類型", + "默认": "預設", + "待定": "待定", + "卧床": "臥床", + "医生": "醫生", + "启用时间": "啟用時間", + "备注": "備註", + "操作": "操作", + "删除": "刪除", + "编辑备注": "編輯備註", + "该页面调整对当前透析单不生效": "該頁面調整對當前透析單不生效", + "请选择": "請選擇", + "取消": "取消", + "确定": "確定", + "确认": "確認", + "请选择医生": "請選擇醫生", + "上调": "上調", + "下调": "下調", + "未选择患者": "未選擇患者", + "操作成功": "操作成功", + "修改备注成功": "修改備註成功", + "此操作将删除该条干体重记录是否确认": "此操作將刪除該條乾體重記錄,是否確認?", + "提示": "提示", + "删除成功": "刪除成功" +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/hemoMedScheme/en.ts b/src/i18n/pages/PatientManage/hemoMedScheme/en.ts new file mode 100644 index 0000000..0db3be1 --- /dev/null +++ b/src/i18n/pages/PatientManage/hemoMedScheme/en.ts @@ -0,0 +1,189 @@ +export default { + "透析总频率": "Total Dialysis Frequency", + "添加计划": "Add Plan", + "透析方案替换": "Dialysis Plan Replacement", + "透析模式": "Dialysis Mode", + "序号": "Serial Number", + "子处方名": "Sub-Prescription Name", + "频率": "Frequency", + "周选项": { + "每周": "Weekly", + "二周": "Biweekly", + "三周": "Every Three Weeks", + "四周": "Every Four Weeks", + "八周": "Every Eight Weeks", + "九周": "Every Nine Weeks", + "十周": "Every Ten Weeks", + "十二周": "Every Twelve Weeks", + "十六周": "Every Sixteen Weeks", + "二十四周": "Every Twenty-Four Weeks", + "每天": "Daily", + "2天": "Every 2 Days", + "3天": "Every 3 Days", + "4天": "Every 4 Days", + "5天": "Every 5 Days", + "10天": "Every 10 Days", + "15天": "Every 15 Days", + "30天": "Every 30 Days", + "60天": "Every 60 Days", + "90天": "Every 90 Days", + "180天": "Every 180 Days", + "每月": "Monthly", + "两月": "Every Two Months", + "三月": "Every Three Months", + "四月": "Every Four Months", + "五月": "Every Five Months", + "六月": "Every Six Months", + "七月": "Every Seven Months", + "八月": "Every Eight Months", + "九月": "Every Nine Months", + "十月": "Every Ten Months", + "十一月": "Every Eleven Months", + "十二月": "Every Twelve Months" + }, + "次": "Times", + "医生": "Doctor", + "更新日期": "Update Date", + "是否启用": "Enable?", + "启用": "Enable", + "不启用": "Disable", + "操作": "Action", + "透析处方": "Dialysis Prescription", + "透析处方修改记录查询": "Dialysis Prescription Modification Record Query", + "确认": "Confirm", + "透析时长": "Dialysis Duration", + "置换方式": "Replacement Method", + "选择置换方式": "Select Replacement Method", + "置换总量": "Total Replacement Volume", + "血透器": "Hemodialyzer", + "选择血透器": "Select Hemodialyzer", + "血滤器": "Hemofilter", + "选择血滤器": "Select Hemofilter", + "灌流器": "Hemoperfuser", + "选择灌流器": "Select Hemoperfuser", + "血流量": "Blood Flow Rate", + "衣物重": "Clothing Weight", + "预增脱水量": "Predicted Ultrafiltration Volume", + "透析液流量": "Dialysate Flow Rate", + "钾": "Potassium", + "配方钠": "Formulated Sodium", + "处方钠": "Prescribed Sodium", + "钙": "Calcium", + "碳酸氢根": "Bicarbonate", + "葡萄糖": "Glucose", + "抗凝剂": "Anticoagulant", + "抗凝剂2": "Anticoagulant 2", + "无肝素": "Heparin-Free", + "冲洗时间": "Flush Time", + "冲洗量": "Flush Volume", + "枸橼酸钠": "Sodium Citrate", + "首剂": "Initial Dose", + "维持": "Maintenance", + "追加": "Supplementary Dose", + "请输入时机": "Please Enter Timing", + "总量": "Total Dose", + "钙名称": "Calcium Name", + "钙剂量": "Calcium Dose", + "抗凝剂2选择": "Select Anticoagulant 2", + "首剂2": "Initial Dose 2", + "维持2": "Maintenance 2", + "总量2": "Total Dose 2", + "备注": "Remarks", + "请输入备注": "Please Enter Remarks", + "抗凝剂公式": "Anticoagulant Formula", + "抗凝剂公式一": "Initial Dose + (Duration - 0.5) × Maintenance = Total Dose", + "抗凝剂公式二": "Initial Dose + (Duration - 1) × Maintenance = Total Dose", + "自定义维持时长": "Custom Maintenance Duration", + "抗凝剂国网上报信息": "Anticoagulant National Report Information", + "是否使用华法林": "Is Warfarin Used?", + "请选择": "Please Select", + "其它": "Other", + "其它抗凝剂": "Other Anticoagulants", + "请输入": "Please Enter", + "普通肝素": "Unfractionated Heparin", + "肝素单位": "Heparin Unit", + "肝素首剂量": "Initial Heparin Dose", + "肝素追加速率": "Heparin Supplement Rate", + "追加时间小时": "Supplement Time (Hours)", + "低分子肝素单位": "Low-Molecular-Weight Heparin Unit", + "低分子肝素": "Low-Molecular-Weight Heparin", + "低分子肝素总剂量": "Total Low-Molecular-Weight Heparin Dose", + "枸橼酸钠浓度": "Sodium Citrate Concentration", + "其它浓度": "Other Concentration", + "枸橼酸钠速率": "Sodium Citrate Infusion Rate", + "枸橼酸钠使用时间小时": "Sodium Citrate Use Time (Hours)", + "枸橼酸钠使用时间分钟": "Sodium Citrate Use Time (Minutes)", + "阿加曲班": "Argatroban", + "阿加曲班单位": "Argatroban Unit", + "阿加曲班首剂量": "Initial Argatroban Dose", + "阿加曲班首追加速率": "Initial Argatroban Supplement Rate", + "阿加曲班追加时间小时": "Argatroban Supplement Time (Hours)", + "阿加曲班追加时间分钟": "Argatroban Supplement Time (Minutes)", + "替换类型": "Replacement Type", + "旧": "Old", + "请选择要替换的旧数据源": "Please Select Old Data Source to Replace", + "新": "New", + "请选择要替换的新数据源": "Please Select New Data Source to Replace", + "此操作将会替换该医院内所有已选旧选项是否继续": "This operation will replace all selected old options in this hospital. Do you wish to continue?", + "取消": "Cancel", + "透析处方修改记录": "Dialysis Prescription Modification Record", + "修改时间": "Modification Time", + "修改人": "Modified By", + "修改类型": "Modification Type", + "旧值": "Old Value", + "新值": "New Value", + "编辑备注": "Edit Remarks", + "暂无处方修改记录": "No Prescription Modification Records", + "修改备注": "Modify Remarks", + "确定": "Confirm", + "选项组": { + "是": "Yes", + "否": "No", + "无抗凝剂": "No Anticoagulant", + "普通肝素": "Unfractionated Heparin", + "低分子肝素": "Low-Molecular-Weight Heparin", + "枸橼酸钠": "Sodium Citrate", + "阿加曲班": "Argatroban", + "其它": "Other", + "低分子肝素钠": "Low-Molecular-Weight Heparin Sodium", + "低分子肝素钙": "Low-Molecular-Weight Heparin Calcium", + "血透器": "Hemodialyzer", + "血滤器": "Hemofilter", + "灌流器": "Hemoperfuser", + "抗凝剂": "Anticoagulant" + }, + "操作成功": "Operation Successful", + "请先选择患者": "Please Select a Patient First!", + "此操作将删除当前透析计划": "This Operation Will Delete the Current Dialysis Plan:", + "是否继续": "Do You Want to Continue?", + "提示": "Notice", + "删除": "Delete", + "删除成功": "Deletion Successful", + "保存成功": "Save Successful", + "透析处方编号异常请联系管理员": "Dialysis Prescription ID Abnormal, Please Contact Administrator", + "抗凝剂药物": "Anticoagulant Medication", + "抗凝剂首剂": "Initial Anticoagulant Dose", + "透析器": "Dialyzer", + "未知类型": "Unknown Type", + "MedScheme": { + "透析计划": "Dialysis Plan", + "透析模式": "Dialysis Mode", + "请选择透析模式": "Please Select Dialysis Mode", + "频率": "Frequency", + "请选择频率": "Please Select Frequency", + "按周": "Weekly", + "按日": "Daily", + "按月": "Monthly", + "透析周期": "Dialysis Cycle:", + "请选择透析周期": "Please Select Dialysis Cycle", + "次数": "Number of Sessions", + "请输入次数": "Please Enter Number of Sessions", + "医生": "Doctor", + "请选择医生": "Please Select a Doctor", + "是否启用": "Enable?", + "子处方": "Sub-Prescription", + "子处方名称": "Sub-Prescription Name", + "请输入子处方名称": "Please Enter Sub-Prescription Name", + "请选择开方医生": "Please Select Prescribing Doctor" + } +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/hemoMedScheme/index.ts b/src/i18n/pages/PatientManage/hemoMedScheme/index.ts new file mode 100644 index 0000000..8aa479c --- /dev/null +++ b/src/i18n/pages/PatientManage/hemoMedScheme/index.ts @@ -0,0 +1,24 @@ +import zhCn from './zh-cn'; +import en from './en'; +import zhTw from './zh-tw'; +import jp from './jp'; +import ms from './ms'; + + +export default { + zhCn: { + ...zhCn + }, + en: { + ...en + }, + zhTw: { + ...zhTw + }, + jp: { + ...jp + }, + ms: { + ...ms, + } +} diff --git a/src/i18n/pages/PatientManage/hemoMedScheme/jp.ts b/src/i18n/pages/PatientManage/hemoMedScheme/jp.ts new file mode 100644 index 0000000..613d9ef --- /dev/null +++ b/src/i18n/pages/PatientManage/hemoMedScheme/jp.ts @@ -0,0 +1,189 @@ +export default { + "透析总频率": "透析総頻度", + "添加计划": "計画を追加", + "透析方案替换": "透析プランの置換", + "透析模式": "透析モード", + "序号": "番号", + "子处方名": "サブ処方名", + "频率": "頻度", + "周选项": { + "每周": "毎週", + "二周": "2週間", + "三周": "3週間", + "四周": "4週間", + "八周": "8週間", + "九周": "9週間", + "十周": "10週間", + "十二周": "12週間", + "十六周": "16週間", + "二十四周": "24週間", + "每天": "毎日", + "2天": "2日", + "3天": "3日", + "4天": "4日", + "5天": "5日", + "10天": "10日", + "15天": "15日", + "30天": "30日", + "60天": "60日", + "90天": "90日", + "180天": "180日", + "每月": "毎月", + "两月": "2か月", + "三月": "3か月", + "四月": "4か月", + "五月": "5か月", + "六月": "6か月", + "七月": "7か月", + "八月": "8か月", + "九月": "9か月", + "十月": "10か月", + "十一月": "11か月", + "十二月": "12か月" + }, + "次": "回", + "医生": "医師", + "更新日期": "更新日", + "是否启用": "有効化しますか?", + "启用": "有効", + "不启用": "無効", + "操作": "操作", + "透析处方": "透析処方", + "透析处方修改记录查询": "透析処方変更履歴照会", + "确认": "確認", + "透析时长": "透析時間", + "置换方式": "置換方式", + "选择置换方式": "置換方式を選択", + "置换总量": "総置換量", + "血透器": "血液透析器", + "选择血透器": "血液透析器を選択", + "血滤器": "血液濾過器", + "选择血滤器": "血液濾過器を選択", + "灌流器": "血液灌流器", + "选择灌流器": "血液灌流器を選択", + "血流量": "血流量", + "衣物重": "衣類重量", + "预增脱水量": "予定脱水量", + "透析液流量": "透析液流量", + "钾": "カリウム", + "配方钠": "処方ナトリウム", + "处方钠": "処方ナトリウム", + "钙": "カルシウム", + "碳酸氢根": "重炭酸塩", + "葡萄糖": "ブドウ糖", + "抗凝剂": "抗凝固剤", + "抗凝剂2": "抗凝固剤2", + "无肝素": "ヘパリンなし", + "冲洗时间": "洗浄時間", + "冲洗量": "洗浄量", + "枸橼酸钠": "クエン酸ナトリウム", + "首剂": "初回投与量", + "维持": "維持量", + "追加": "追加", + "请输入时机": "投与タイミングを入力", + "总量": "総量", + "钙名称": "カルシウム名称", + "钙剂量": "カルシウム投与量", + "抗凝剂2选择": "抗凝固剤2の選択", + "首剂2": "初回投与量2", + "维持2": "維持量2", + "总量2": "総量2", + "备注": "備考", + "请输入备注": "備考を入力してください", + "抗凝剂公式": "抗凝固剤計算式", + "抗凝剂公式一": "初回投与量 +(時間 - 0.5)× 維持量 = 総量", + "抗凝剂公式二": "初回投与量 +(時間 - 1)× 維持量 = 総量", + "自定义维持时长": "維持時間をカスタマイズ", + "抗凝剂国网上报信息": "抗凝固剤の国ネット報告情報", + "是否使用华法林": "ワルファリンを使用しますか?", + "请选择": "選択してください", + "其它": "その他", + "其它抗凝剂": "その他の抗凝固剤", + "请输入": "入力してください", + "普通肝素": "未分画ヘパリン", + "肝素单位": "ヘパリン単位", + "肝素首剂量": "ヘパリン初回投与量", + "肝素追加速率": "ヘパリン追加速度", + "追加时间小时": "追加時間(時間)", + "低分子肝素单位": "低分子ヘパリン単位", + "低分子肝素": "低分子ヘパリン", + "低分子肝素总剂量": "低分子ヘパリン総投与量", + "枸橼酸钠浓度": "クエン酸ナトリウム濃度", + "其它浓度": "その他の濃度", + "枸橼酸钠速率": "クエン酸ナトリウム投与速度", + "枸橼酸钠使用时间小时": "クエン酸ナトリウム使用時間(時間)", + "枸橼酸钠使用时间分钟": "クエン酸ナトリウム使用時間(分)", + "阿加曲班": "アルガトロバン", + "阿加曲班单位": "アルガトロバン単位", + "阿加曲班首剂量": "アルガトロバン初回投与量", + "阿加曲班首追加速率": "アルガトロバン初回追加速度", + "阿加曲班追加时间小时": "アルガトロバン追加時間(時間)", + "阿加曲班追加时间分钟": "アルガトロバン追加時間(分)", + "替换类型": "置換タイプ", + "旧": "旧", + "请选择要替换的旧数据源": "置換する旧データソースを選択してください", + "新": "新", + "请选择要替换的新数据源": "置換する新データソースを選択してください", + "此操作将会替换该医院内所有已选旧选项是否继续": "この操作は、病院内のすべての選択済み旧データを置換します。続行しますか?", + "取消": "キャンセル", + "透析处方修改记录": "透析処方変更履歴", + "修改时间": "変更時間", + "修改人": "変更者", + "修改类型": "変更タイプ", + "旧值": "旧値", + "新值": "新値", + "编辑备注": "備考を編集", + "暂无处方修改记录": "処方変更履歴はありません", + "修改备注": "備考を変更", + "确定": "確定", + 选项组: { + 是: 'はい', + 否: 'いいえ', + 无抗凝剂: '抗凝剤なし', + 普通肝素: '未分画ヘパリン', + 低分子肝素: '低分子ヘパリン', + 枸橼酸钠: 'クエン酸ナトリウム', + 阿加曲班: 'アルガトロバン', + 其它: 'その他', + 低分子肝素钠: '低分子ヘパリンナトリウム', + 低分子肝素钙: '低分子ヘパリンカルシウム', + 血透器: '血液透析器', + 血滤器: '血液濾過器', + 灌流器: '吸着型血液浄化器', + 抗凝剂: '抗凝剤', + }, + 操作成功: '操作が成功しました', + 请先选择患者: 'まず患者を選択してください!', + 此操作将删除当前透析计划: 'この操作により、現在の透析計画が削除されます:', + 是否继续: '続行しますか?', + 提示: '通知', + 删除: '削除', + 删除成功: '削除が成功しました', + 保存成功: '保存が成功しました', + 透析处方编号异常请联系管理员: '透析処方番号に異常があります。管理者に連絡してください', + 抗凝剂药物: '抗凝剤薬剤', + 抗凝剂首剂: '抗凝剤初回投与量', + 透析器: '透析器', + 未知类型: '不明な種類', + MedScheme: { + 透析计划: '透析計画', + 透析模式: '透析モード', + 请选择透析模式: '透析モードを選択してください', + 频率: '頻度', + 请选择频率: '頻度を選択してください', + 按周: '週単位', + 按日: '日単位', + 按月: '月単位', + 透析周期: '透析周期:', + 请选择透析周期: '透析周期を選択してください', + 次数: '回数', + 请输入次数: '回数を入力してください', + 医生: '医師', + 请选择医生: '医師を選択してください', + 是否启用: '有効にしますか', + 子处方: 'サブ処方', + 子处方名称: 'サブ処方名', + 请输入子处方名称: 'サブ処方名を入力してください', + 请选择开方医生: '処方医を選択してください', + } +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/hemoMedScheme/ms.ts b/src/i18n/pages/PatientManage/hemoMedScheme/ms.ts new file mode 100644 index 0000000..a3e728e --- /dev/null +++ b/src/i18n/pages/PatientManage/hemoMedScheme/ms.ts @@ -0,0 +1,189 @@ +export default { + 透析总频率: 'Jumlah frekuensi dialisis', + 添加计划: 'Tambah rancangan', + 透析方案替换: 'Gantikan rancangan dialisis', + 透析模式: 'Modus dialisis', + 序号: 'Nombor siri', + 子处方名: 'Nama sub-preskripsi', + 频率: 'Frekuensi', + 周选项: { + 每周: 'Setiap minggu', + 二周: 'Setiap dua minggu', + 三周: 'Setiap tiga minggu', + 四周: 'Setiap empat minggu', + 八周: 'Setiap lapan minggu', + 九周: 'Setiap sembilan minggu', + 十周: 'Setiap sepuluh minggu', + 十二周: 'Setiap dua belas minggu', + 十六周: 'Setiap enam belas minggu', + 二十四周: 'Setiap dua puluh empat minggu', + 每天: 'Setiap hari', + '2天': 'Setiap 2 hari', + '3天': 'Setiap 3 hari', + '4天': 'Setiap 4 hari', + '5天': 'Setiap 5 hari', + '10天': 'Setiap 10 hari', + '15天': 'Setiap 15 hari', + '30天': 'Setiap 30 hari', + '60天': 'Setiap 60 hari', + '90天': 'Setiap 90 hari', + '180天': 'Setiap 180 hari', + 每月: 'Setiap bulan', + 两月: 'Setiap dua bulan', + 三月: 'Setiap tiga bulan', + 四月: 'Setiap empat bulan', + 五月: 'Setiap lima bulan', + 六月: 'Setiap enam bulan', + 七月: 'Setiap tujuh bulan', + 八月: 'Setiap lapan bulan', + 九月: 'Setiap sembilan bulan', + 十月: 'Setiap sepuluh bulan', + 十一月: 'Setiap sebelas bulan', + 十二月: 'Setiap dua belas bulan', + }, + 次: 'Kali', + 医生: 'Doktor', + 更新日期: 'Tarikh kemas kini', + 是否启用: 'Adakah untuk diaktifkan', + 启用: 'Diaktifkan', + 不启用: 'Tidak diaktifkan', + 操作: 'Tindakan', + 透析处方: 'Preskripsi dialisis', + 透析处方修改记录查询: 'Pencarian rekod pengubahsuaian preskripsi dialisis', + 确认: 'Sahkan', + 透析时长: 'Tempoh dialisis', + 置换方式: 'Kaedah pertukaran', + 选择置换方式: 'Pilih kaedah pertukaran', + 置换总量: 'Jumlah pertukaran', + 血透器: 'Peranti hemodialisis', + 选择血透器: 'Pilih peranti hemodialisis', + 血滤器: 'Penapis darah', + 选择血滤器: 'Pilih penapis darah', + 灌流器: 'Peranti perfusi', + 选择灌流器: 'Pilih peranti perfusi', + 血流量: 'Kadar aliran darah', + 衣物重: 'Berat pakaian', + 预增脱水量: 'Jumlah dehidrasi yang dijangka', + 透析液流量: 'Kadar aliran cecair dialisis', + 钾: 'Kalium', + 配方钠: 'Natrium formula', + 处方钠: 'Natrium preskripsi', + 钙: 'Kalsium', + 碳酸氢根: 'Bikarbonat', + 葡萄糖: 'Glukosa', + 抗凝剂: 'Antikoagulan', + 抗凝剂2: 'Antikoagulan 2', + 无肝素: 'Tanpa heparin', + 冲洗时间: 'Masa pencucian', + 冲洗量: 'Jumlah pencucian', + 枸橼酸钠: 'Natrium sitrat', + 首剂: 'Dos pertama', + 维持: 'Pemeliharaan', + 追加: 'Penambahan', + 请输入时机: 'Sila masukkan masa', + 总量: 'Jumlah keseluruhan', + 钙名称: 'Nama kalsium', + 钙剂量: 'Dos kalsium', + 抗凝剂2选择: 'Pilih antikoagulan 2', + 首剂2: 'Dos pertama 2', + 维持2: 'Pemeliharaan 2', + 总量2: 'Jumlah keseluruhan 2', + 备注: 'Nota', + 请输入备注: 'Sila masukkan nota', + 抗凝剂公式: 'Formula antikoagulan', + 抗凝剂公式一: 'Dos pertama + (Tempoh - 0.5) × Pemeliharaan = Jumlah keseluruhan', + 抗凝剂公式二: 'Dos pertama + (Tempoh - 1) × Pemeliharaan = Jumlah keseluruhan', + 自定义维持时长: 'Tempoh pemeliharaan yang disesuaikan', + 抗凝剂国网上报信息: 'Maklumat pelaporan antikoagulan dalam talian negara', + 是否使用华法林: 'Adakah untuk menggunakan warfarin', + 请选择: 'Sila pilih', + 其它: 'Lain-lain', + 其它抗凝剂: 'Antikoagulan lain', + 请输入: 'Sila masukkan', + 普通肝素: 'Heparin biasa', + 肝素单位: 'Unit heparin', + 肝素首剂量: 'Dos pertama heparin', + 肝素追加速率: 'Kadar penambahan heparin', + 追加时间小时: 'Masa penambahan (jam)', + 低分子肝素单位: 'Unit heparin berat molekul rendah', + 低分子肝素: 'Heparin berat molekul rendah', + 低分子肝素总剂量: 'Jumlah keseluruhan heparin berat molekul rendah', + 枸橼酸钠浓度: 'Konsentrasi natrium sitrat', + 其它浓度: 'Konsentrasi lain', + 枸橼酸钠速率: 'Kadar natrium sitrat', + 枸橼酸钠使用时间小时: 'Masa penggunaan natrium sitrat (jam)', + 枸橼酸钠使用时间分钟: 'Masa penggunaan natrium sitrat (minit)', + 阿加曲班: 'Argatroban', + 阿加曲班单位: 'Unit argatroban', + 阿加曲班首剂量: 'Dos pertama argatroban', + 阿加曲班首追加速率: 'Kadar penambahan pertama argatroban', + 阿加曲班追加时间小时: 'Masa penambahan argatroban (jam)', + 阿加曲班追加时间分钟: 'Masa penambahan argatroban (minit)', + 替换类型: 'Jenis penggantian', + 旧: 'Lama', + 请选择要替换的旧数据源: 'Sila pilih sumber data lama untuk digantikan', + 新: 'Baru', + 请选择要替换的新数据源: 'Sila pilih sumber data baru untuk digantikan', + 此操作将会替换该医院内所有已选旧选项是否继续: 'Tindakan ini akan menggantikan semua pilihan lama yang dipilih dalam hospital ini. Adakah anda ingin meneruskan?', + 取消: 'Batal', + 透析处方修改记录: 'Rekod pengubahsuaian preskripsi dialisis', + 修改时间: 'Masa pengubahsuaian', + 修改人: 'Pengubahsuaian oleh', + 修改类型: 'Jenis pengubahsuaian', + 旧值: 'Nilai lama', + 新值: 'Nilai baru', + 编辑备注: 'Edit nota', + 暂无处方修改记录: 'Tiada rekod pengubahsuaian preskripsi', + 修改备注: 'Sunting nota', + 确定: 'Sahkan', + 选项组: { + 是: 'Ya', + 否: 'Tidak', + 无抗凝剂: 'Tiada antikoagulan', + 普通肝素: 'Heparin biasa', + 低分子肝素: 'Heparin berat molekul rendah', + 枸橼酸钠: 'Sitrik natrium', + 阿加曲班: 'Argatroban', + 其它: 'Lain-lain', + 低分子肝素钠: 'Heparin berat molekul rendah natrium', + 低分子肝素钙: 'Heparin berat molekul rendah kalsium', + 血透器: 'Peranti hemodialisis', + 血滤器: 'Penapis darah', + 灌流器: 'Peranti perfusi', + 抗凝剂: 'Antikoagulan', + }, + 操作成功: 'Tindakan berjaya', + 请先选择患者: 'Sila pilih pesakit terlebih dahulu!', + 此操作将删除当前透析计划: 'Tindakan ini akan memadamkan rancangan dialisis semasa:', + 是否继续: 'Adakah anda ingin meneruskan?', + 提示: 'Peringatan', + 删除: 'Padam', + 删除成功: 'Padam berjaya', + 保存成功: 'Simpan berjaya', + 透析处方编号异常请联系管理员: 'No. preskripsi dialisis tidak sah, sila hubungi pentadbir', + 抗凝剂药物: 'Ubat antikoagulan', + 抗凝剂首剂: 'Dos pertama antikoagulan', + 透析器: 'Peranti dialisis', + 未知类型: 'Jenis tidak diketahui', + MedScheme: { + 透析计划: 'Rancangan dialisis', + 透析模式: 'Modus dialisis', + 请选择透析模式: 'Sila pilih modus dialisis', + 频率: 'Frekuensi', + 请选择频率: 'Sila pilih frekuensi', + 按周: 'Mengikut minggu', + 按日: 'Mengikut hari', + 按月: 'Mengikut bulan', + 透析周期: 'Kitaran dialisis:', + 请选择透析周期: 'Sila pilih kitaran dialisis', + 次数: 'Bilangan', + 请输入次数: 'Sila masukkan bilangan', + 医生: 'Doktor', + 请选择医生: 'Sila pilih doktor', + 是否启用: 'Adakah untuk diaktifkan', + 子处方: 'Sub-preskripsi', + 子处方名称: 'Nama sub-preskripsi', + 请输入子处方名称: 'Sila masukkan nama sub-preskripsi', + 请选择开方医生: 'Sila pilih doktor yang memberi preskripsi', + }, +}; diff --git a/src/i18n/pages/PatientManage/hemoMedScheme/zh-cn.ts b/src/i18n/pages/PatientManage/hemoMedScheme/zh-cn.ts new file mode 100644 index 0000000..abfc4a7 --- /dev/null +++ b/src/i18n/pages/PatientManage/hemoMedScheme/zh-cn.ts @@ -0,0 +1,189 @@ +export default { + 透析总频率: '透析总频率', + 添加计划: '添加计划', + 透析方案替换: '透析方案替换', + 透析模式: '透析模式', + 序号: '序号', + 子处方名: '子处方名', + 频率: '频率', + 周选项: { + 每周: '每周', + 二周: '二周', + 三周: '三周', + 四周: '四周', + 八周: '八周', + 九周: '九周', + 十周: '十周', + 十二周: '十二周', + 十六周: '十六周', + 二十四周: '二十四周', + 每天: '每天', + '2天': '2天', + '3天': '3天', + '4天': '4天', + '5天': '5天', + '10天': '10天', + '15天': '15天', + '30天': '30天', + '60天': '60天', + '90天': '90天', + '180天': '180天', + '每月': '每月', + '两月': '两个月', + '三月': '三个月', + '四月': '四个月', + '五月': '五个月', + '六月': '六个月', + '七月': '七个月', + '八月': '八个月', + '九月': '九个月', + '十月': '十个月', + '十一月': '十一个月', + '十二月': '十二个月', + }, + 次: '次', + 医生: '医生', + 更新日期: '更新日期', + 是否启用: '是否启用', + 启用: '启用', + 不启用: '不启用', + 操作: '操作', + 透析处方: '透析处方', + 透析处方修改记录查询: '透析处方修改记录查询', + 确认: '确认', + 透析时长: '透析时长', + 置换方式: '置换方式', + 选择置换方式: '选择置换方式', + 置换总量: '置换总量', + 血透器: '血透器', + 选择血透器: '选择血透器', + 血滤器: '血滤器', + 选择血滤器: '选择血滤器', + 灌流器: '灌流器', + 选择灌流器: '选择灌流器', + 血流量: '血流量', + 衣物重: '衣物重', + 预增脱水量: '预增脱水量', + 透析液流量: '透析液流量', + 钾: '钾', + 配方钠: '配方钠', + 处方钠: '处方钠', + 钙: '钙', + 碳酸氢根: '碳酸氢根', + 葡萄糖: '葡萄糖', + 抗凝剂: '抗凝剂', + 抗凝剂2: '抗凝剂2', + 无肝素: '无肝素', + 冲洗时间: '冲洗时间', + 冲洗量: '冲洗量', + 枸橼酸钠: '枸橼酸钠', + 首剂: '首剂', + 维持: '维持', + 追加: '追加', + 请输入时机: '请输入时机', + 总量: '总量', + 钙名称: '钙名称', + 钙剂量: '钙剂量', + 抗凝剂2选择: '抗凝剂2选择', + 首剂2: '首剂2', + 维持2: '维持2', + 总量2: '总量2', + 备注: '备注', + 请输入备注: '请输入备注', + 抗凝剂公式: '抗凝剂公式', + 抗凝剂公式一: '首剂 + (时长 - 0.5)× 维持 = 总量', + 抗凝剂公式二: '首剂 + (时长 - 1)× 维持 = 总量', + 自定义维持时长: '自定义维持时长', + 抗凝剂国网上报信息: '抗凝剂国网上报信息', + 是否使用华法林: '是否使用华法林', + 请选择: '请选择', + 其它: '其它', + 其它抗凝剂: '其它抗凝剂', + 请输入: '请输入', + 普通肝素: '普通肝素', + 肝素单位: '肝素单位', + 肝素首剂量: '肝素首剂量', + 肝素追加速率: '肝素追加速率', + 追加时间小时: '追加时间(小时)', + 低分子肝素单位: '低分子肝素单位', + 低分子肝素: '低分子肝素', + 低分子肝素总剂量: '低分子肝素总剂量', + 枸橼酸钠浓度: '枸橼酸钠浓度', + 其它浓度: '其它浓度', + 枸橼酸钠速率: '枸橼酸钠速率', + 枸橼酸钠使用时间小时: '枸橼酸钠使用时间(小时)', + 枸橼酸钠使用时间分钟: '枸橼酸钠使用时间(分钟)', + 阿加曲班: '阿加曲班', + 阿加曲班单位: '阿加曲班单位', + 阿加曲班首剂量: '阿加曲班首剂量', + 阿加曲班首追加速率: '阿加曲班首追加速率', + 阿加曲班追加时间小时: '阿加曲班追加时间(小时)', + 阿加曲班追加时间分钟: '阿加曲班追加时间(分钟)', + 替换类型: '替换类型', + 旧: '旧', + 请选择要替换的旧数据源: '请选择要替换的旧数据源', + 新: '新', + 请选择要替换的新数据源: '请选择要替换的新数据源', + 此操作将会替换该医院内所有已选旧选项是否继续: '此操作将会替换该医院内所有已选旧选项,是否继续?', + 取消: '取消', + 透析处方修改记录: '透析处方修改记录', + 修改时间: '修改时间', + 修改人: '修改人', + 修改类型: '修改类型', + 旧值: '旧值', + 新值: '新值', + 编辑备注: '编辑备注', + 暂无处方修改记录: '暂无处方修改记录', + 修改备注: '修改备注', + 确定: '确定', + 选项组: { + 是: '是', + 否: '否', + 无抗凝剂: '无抗凝剂', + 普通肝素: '普通肝素', + 低分子肝素: '低分子肝素', + 枸橼酸钠: '枸橼酸钠', + 阿加曲班: '阿加曲班', + 其它: '其它', + 低分子肝素钠: '低分子肝素钠', + 低分子肝素钙: '低分子肝素钙', + 血透器: '血透器', + 血滤器:' 血滤器', + 灌流器: '灌流器', + 抗凝剂: '抗凝剂', + }, + 操作成功: '操作成功', + 请先选择患者: '请先选择患者!', + 此操作将删除当前透析计划: '此操作将删除当前透析计划:', + 是否继续: ' 是否继续?', + 提示: '提示', + 删除: '删除', + 删除成功: '删除成功', + 保存成功: '保存成功', + 透析处方编号异常请联系管理员: '透析处方编号异常,请联系管理员', + 抗凝剂药物: '抗凝剂药物', + 抗凝剂首剂: '抗凝剂首剂', + 透析器: '透析器', + 未知类型: '未知类型', + MedScheme: { + 透析计划: '透析计划', + 透析模式: '透析模式', + 请选择透析模式: '请选择透析模式', + 频率: '频率', + 请选择频率: '请选择频率', + 按周: '按周', + 按日: '按日', + 按月: '按月', + 透析周期: '透析周期:', + 请选择透析周期: '请选择透析周期', + 次数: '次数', + 请输入次数: '请输入次数', + 医生: '医 生', + 请选择医生: '请选择医生', + 是否启用: '是否启用', + 子处方: '子处方', + 子处方名称: '子处方名称', + 请输入子处方名称: '请输入子处方名称', + 请选择开方医生: '请选择开方医生', + } +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/hemoMedScheme/zh-tw.ts b/src/i18n/pages/PatientManage/hemoMedScheme/zh-tw.ts new file mode 100644 index 0000000..ccd91de --- /dev/null +++ b/src/i18n/pages/PatientManage/hemoMedScheme/zh-tw.ts @@ -0,0 +1,189 @@ +export default { + "透析总频率": "透析總頻率", + "添加计划": "添加計劃", + "透析方案替换": "透析方案替換", + "透析模式": "透析模式", + "序号": "序號", + "子处方名": "子處方名", + "频率": "頻率", + "周选项": { + "每周": "每週", + "二周": "二週", + "三周": "三週", + "四周": "四週", + "八周": "八週", + "九周": "九週", + "十周": "十週", + "十二周": "十二週", + "十六周": "十六週", + "二十四周": "二十四週", + "每天": "每天", + "2天": "2天", + "3天": "3天", + "4天": "4天", + "5天": "5天", + "10天": "10天", + "15天": "15天", + "30天": "30天", + "60天": "60天", + "90天": "90天", + "180天": "180天", + "每月": "每月", + "两月": "兩個月", + "三月": "三個月", + "四月": "四個月", + "五月": "五個月", + "六月": "六個月", + "七月": "七個月", + "八月": "八個月", + "九月": "九個月", + "十月": "十個月", + "十一月": "十一个月", + "十二月": "十二個月" + }, + "次": "次", + "医生": "醫生", + "更新日期": "更新日期", + "是否启用": "是否啟用", + "启用": "啟用", + "不启用": "不啟用", + "操作": "操作", + "透析处方": "透析處方", + "透析处方修改记录查询": "透析處方修改記錄查詢", + "确认": "確認", + "透析时长": "透析時長", + "置换方式": "置換方式", + "选择置换方式": "選擇置換方式", + "置换总量": "置換總量", + "血透器": "血透器", + "选择血透器": "選擇血透器", + "血滤器": "血濾器", + "选择血滤器": "選擇血濾器", + "灌流器": "灌流器", + "选择灌流器": "選擇灌流器", + "血流量": "血流量", + "衣物重": "衣物重", + "预增脱水量": "預增脫水量", + "透析液流量": "透析液流量", + "钾": "鉀", + "配方钠": "配方鈉", + "处方钠": "處方鈉", + "钙": "鈣", + "碳酸氢根": "碳酸氫根", + "葡萄糖": "葡萄糖", + "抗凝剂": "抗凝劑", + "抗凝剂2": "抗凝劑2", + "无肝素": "無肝素", + "冲洗时间": "沖洗時間", + "冲洗量": "沖洗量", + "枸橼酸钠": "枸櫞酸鈉", + "首剂": "首劑", + "维持": "維持", + "追加": "追加", + "请输入时机": "請輸入時機", + "总量": "總量", + "钙名称": "鈣名稱", + "钙剂量": "鈣劑量", + "抗凝剂2选择": "抗凝劑2選擇", + "首剂2": "首劑2", + "维持2": "維持2", + "总量2": "總量2", + "备注": "備註", + "请输入备注": "請輸入備註", + "抗凝剂公式": "抗凝劑公式", + "抗凝剂公式一": "首劑 + (時長 - 0.5)× 維持 = 總量", + "抗凝剂公式二": "首劑 + (時長 - 1)× 維持 = 總量", + "自定义维持时长": "自定義維持時長", + "抗凝剂国网上报信息": "抗凝劑國網上報信息", + "是否使用华法林": "是否使用華法林", + "请选择": "請選擇", + "其它": "其它", + "其它抗凝剂": "其它抗凝劑", + "请输入": "請輸入", + "普通肝素": "普通肝素", + "肝素单位": "肝素單位", + "肝素首剂量": "肝素首劑量", + "肝素追加速率": "肝素追加速率", + "追加时间小时": "追加時間(小時)", + "低分子肝素单位": "低分子肝素單位", + "低分子肝素": "低分子肝素", + "低分子肝素总剂量": "低分子肝素總劑量", + "枸橼酸钠浓度": "枸櫞酸鈉濃度", + "其它浓度": "其它濃度", + "枸橼酸钠速率": "枸櫞酸鈉速率", + "枸橼酸钠使用时间小时": "枸櫞酸鈉使用時間(小時)", + "枸橼酸钠使用时间分钟": "枸櫞酸鈉使用時間(分鐘)", + "阿加曲班": "阿加曲班", + "阿加曲班单位": "阿加曲班單位", + "阿加曲班首剂量": "阿加曲班首劑量", + "阿加曲班首追加速率": "阿加曲班首追加速率", + "阿加曲班追加时间小时": "阿加曲班追加時間(小時)", + "阿加曲班追加时间分钟": "阿加曲班追加時間(分鐘)", + "替换类型": "替換類型", + "旧": "舊", + "请选择要替换的旧数据源": "請選擇要替換的舊數據源", + "新": "新", + "请选择要替换的新数据源": "請選擇要替換的新數據源", + "此操作将会替换该医院内所有已选旧选项是否继续": "此操作將會替換該醫院內所有已選舊選項,是否繼續?", + "取消": "取消", + "透析处方修改记录": "透析處方修改記錄", + "修改时间": "修改時間", + "修改人": "修改人", + "修改类型": "修改類型", + "旧值": "舊值", + "新值": "新值", + "编辑备注": "編輯備註", + "暂无处方修改记录": "暫無處方修改記錄", + "修改备注": "修改備註", + "确定": "確定", + "选项组": { + "是": "是", + "否": "否", + "无抗凝剂": "無抗凝劑", + "普通肝素": "普通肝素", + "低分子肝素": "低分子肝素", + "枸橼酸钠": "枸櫞酸鈉", + "阿加曲班": "阿加曲班", + "其它": "其它", + "低分子肝素钠": "低分子肝素鈉", + "低分子肝素钙": "低分子肝素鈣", + "血透器": "血透器", + "血滤器": "血濾器", + "灌流器": "灌流器", + "抗凝剂": "抗凝劑" + }, + "操作成功": "操作成功", + "请先选择患者": "請先選擇患者!", + "此操作将删除当前透析计划": "此操作將刪除當前透析計劃:", + "是否继续": "是否繼續?", + "提示": "提示", + "删除": "刪除", + "删除成功": "刪除成功", + "保存成功": "保存成功", + "透析处方编号异常请联系管理员": "透析處方編號異常,請聯繫管理員", + "抗凝剂药物": "抗凝劑藥物", + "抗凝剂首剂": "抗凝劑首劑", + "透析器": "透析器", + "未知类型": "未知類型", + "MedScheme": { + "透析计划": "透析計劃", + "透析模式": "透析模式", + "请选择透析模式": "請選擇透析模式", + "频率": "頻率", + "请选择频率": "請選擇頻率", + "按周": "按週", + "按日": "按日", + "按月": "按月", + "透析周期": "透析週期:", + "请选择透析周期": "請選擇透析週期", + "次数": "次數", + "请输入次数": "請輸入次數", + "医生": "醫生", + "请选择医生": "請選擇醫生", + "是否启用": "是否啟用", + "子处方": "子處方", + "子处方名称": "子處方名稱", + "请输入子处方名称": "請輸入子處方名稱", + "请选择开方医生": "請選擇開方醫生" + } +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/hzZaiYao/en.ts b/src/i18n/pages/PatientManage/hzZaiYao/en.ts new file mode 100644 index 0000000..7c645e4 --- /dev/null +++ b/src/i18n/pages/PatientManage/hzZaiYao/en.ts @@ -0,0 +1 @@ +export default {}; \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/hzZaiYao/index.ts b/src/i18n/pages/PatientManage/hzZaiYao/index.ts new file mode 100644 index 0000000..010f7b2 --- /dev/null +++ b/src/i18n/pages/PatientManage/hzZaiYao/index.ts @@ -0,0 +1,24 @@ +import hzZaiYaodZhCn from './zh-cn'; +import hzZaiYaoEn from './en'; +import hzZaiYaoZhTw from './zh-tw'; +import hzZaiYaoJp from './jp'; +import hzZaiYaoMs from './ms'; + + +export default { + zhCn: { + ...hzZaiYaodZhCn + }, + en: { + ...hzZaiYaoEn + }, + zhTw: { + ...hzZaiYaoZhTw + }, + jp: { + ...hzZaiYaoJp + }, + ms: { + ...hzZaiYaoMs + } +} diff --git a/src/i18n/pages/PatientManage/hzZaiYao/jp.ts b/src/i18n/pages/PatientManage/hzZaiYao/jp.ts new file mode 100644 index 0000000..5202943 --- /dev/null +++ b/src/i18n/pages/PatientManage/hzZaiYao/jp.ts @@ -0,0 +1,36 @@ +export default { + cxrq: '検索日', + cx: '検索', + dc: 'エクスポート', + z: 'から', + ksrq: '開始日', + jsrq: '終了日', + jbxx: '基本情報', + xm: '氏名', + nl: '年齢', + xb: '性別', + sctxsj: '初回透析時間', + zd: '診断', + txfa: '透析プラン', + xgtl: '血管アクセス', + txjl: '透析記録', + rq: '日付', + sjzlsc: '実際治療時間', + mbtsl: '目標除水量', + sjcll: '実際超濾量', + gtz: '乾体重', + tz: '体重', + tqTh: '(透析前/透析後)', + mb: '脈拍', + tqxy: '透析前血圧', + thxy: '透析後血圧', + tzzdy: '透析中最低血圧', + tzzgy: '透析中最高血圧', + zz: '症状', + cz: '操作', + dy: '印刷', + jyxx: '検査情報', + jcrq: '検査日', + jyxm: '検査項目', + +}; diff --git a/src/i18n/pages/PatientManage/hzZaiYao/ms.ts b/src/i18n/pages/PatientManage/hzZaiYao/ms.ts new file mode 100644 index 0000000..793b400 --- /dev/null +++ b/src/i18n/pages/PatientManage/hzZaiYao/ms.ts @@ -0,0 +1,35 @@ +export default { + cxrq: 'Tarikh Carian', + cx: 'Cari', + dc: 'Eksport', + z: 'hingga', + ksrq: 'Tarikh Mula', + jsrq: 'Tarikh Tamat', + jbxx: 'Maklumat Asas', + xm: 'Nama', + nl: 'Umur', + xb: 'Jantina', + sctxsj: 'Masa Dialisis Pertama', + zd: 'Diagnosa', + txfa: 'Pelan Dialisis', + xgtl: 'Saluran Vaskular', + txjl: 'Rekod Dialisis', + rq: 'Tarikh', + sjzlsc: 'Tempoh Rawatan Sebenar', + mbtsl: 'Sasaran Penyingkiran Cecair', + sjcll: 'Penyingkiran Cecair Sebenar', + gtz: 'Berat Kering', + tz: 'Berat Badan', + tqTh: '(Sebelum/Selepas Dialisis)', + mb: 'Nadi', + tqxy: 'Tekanan Darah Sebelum Dialisis', + thxy: 'Tekanan Darah Selepas Dialisis', + tzzdy: 'Tekanan Terendah Semasa Dialisis', + tzzgy: 'Tekanan Tertinggi Semasa Dialisis', + zz: 'Gejala', + cz: 'Tindakan', + dy: 'Cetak', + jyxx: 'Maklumat Ujian', + jcrq: 'Tarikh Pemeriksaan', + jyxm: 'Item Ujian', +}; diff --git a/src/i18n/pages/PatientManage/hzZaiYao/zh-cn.ts b/src/i18n/pages/PatientManage/hzZaiYao/zh-cn.ts new file mode 100644 index 0000000..1b9719c --- /dev/null +++ b/src/i18n/pages/PatientManage/hzZaiYao/zh-cn.ts @@ -0,0 +1,36 @@ +export default { + cxrq: '查询日期', + cx: '查询', + dc: '导出', + z: '至', + ksrq: '开始日期', + jsrq: '结束日期', + jbxx: '基本信息', + xm: '姓名', + nl: '年龄', + xb: '性别', + sctxsj: '首次透析时间', + zd: '诊断', + txfa: '透析方案', + xgtl: '血管通路', + txjl: '透析记录', + rq: '日期', + sjzlsc: '实际治疗时长', + mbtsl: '目标脱水量', + sjcll: '实际超滤量', + gtz: '干体重', + tz: '体重', + tqTh: '(透前/透后)', + mb: '脉搏', + tqxy: '透前血压', + thxy: '透后血压', + tzzdy: '透中最低压', + tzzgy: '透中最高压', + zz: '症状', + cz: '操作', + dy: '打印', + jyxx: '检验信息', + jcrq: '检查日期', + jyxm: '检验项目', + +}; diff --git a/src/i18n/pages/PatientManage/hzZaiYao/zh-tw.ts b/src/i18n/pages/PatientManage/hzZaiYao/zh-tw.ts new file mode 100644 index 0000000..ff8b4c5 --- /dev/null +++ b/src/i18n/pages/PatientManage/hzZaiYao/zh-tw.ts @@ -0,0 +1 @@ +export default {}; diff --git a/src/i18n/pages/PatientManage/medicalHistory/en.ts b/src/i18n/pages/PatientManage/medicalHistory/en.ts new file mode 100644 index 0000000..ac73dad --- /dev/null +++ b/src/i18n/pages/PatientManage/medicalHistory/en.ts @@ -0,0 +1,85 @@ +export default { + addBtnText: 'Add', + updateBtnText: 'modify', + delBtnText: 'delete', + saveBtnText: 'preserve', + cancel: 'cancel', + dates: 'date', + docter: 'doctor', + info: 'details', + recordDate: 'Record date', + recordDoctor: 'Record Doctor', + placeholderSelect: 'Please select', + historyKidneyTransplantation: 'History of kidney transplantation', + historyPeritonealDialysis: 'History of peritoneal dialysis', + allergyHistory: 'Allergy history', + placeholderGmyw: 'Please input allergy medication/food and other allergy items', + chiefComplaint: 'Chief complaint', + placeholderChiefComplaint: "Please enter the patient's chief complaint", + medicalHistoryContent: 'Medical history content', + jwsHistoryContent: '既往史', + grsHistoryContent: '个人史', + jzsHistoryContent: '家族史', + fzjcHistoryContent: '辅助检查', + editor1: 'Currently inputted', + editor2: 'Characters', + editor3: 'You can also enter', + editor4: 'Word count exceeds the maximum allowed value, the server may refuse to save', + temolateKu: 'Template Library', + msg1: 'Please select the recording time', + msg2: 'Please select if you have a history of kidney transplantation', + msg3: 'Please select', + msg4: 'Please select a recording doctor', + have: 'have', + noHave: 'nothing', + notQuiteClear: 'Unknown', + elMessageBox1: "This operation will permanently delete the patient's medical history. Do you want to continue?", + elMessageBox2: 'prompt', + elMessageBox3: 'confirm', + elMessageBox4: 'cancel', + success1: 'Delete successful', + success2: 'Operation successful', + warning6: '请选择记录日期', + warning1: + 'The current record date already has a medical history record. Please choose another date or modify the existing record on the current date', + warning2: 'No patient selected!', + editorPlaceholder: 'Please enter your text!', + templateName: 'Template Name', + application: 'application', + setTemplate: 'Set as Template', + setTempTit: 'Template settings', + tips1: 'Attention: This operation is only for adding and will not perform duplicate content verification. Please do not set the same [medical history] repeatedly to avoid homogenization of template content', + "打印": "Print", + "全部设成模板": "Set All as Template", + "模板库": "Template Library", + "数据异常请刷新后重试": "Data error, please refresh and retry", + "模板应用错误": "Template application error", + "男": "Male", + "女": "Female", + "printMedHistory": { + "患者姓名": "Patient Name", + "年龄": "Age", + "性别": "Gender", + "记录日期": "Record Date", + "记录医生": "Recording Physician", + "肾移植历史": "Kidney Transplant History", + "腹膜透析史": "Peritoneal Dialysis History", + "过敏史": "Allergy History", + "主诉": "Chief Complaint", + "现病史": "Current Medical History", + "既往史": "Past Medical History", + "个人史": "Personal History", + "家族史": "Family History", + "辅助检查": "Auxiliary Examinations", + "医生签名": "Physician Signature", + "病史": "Medical History" + }, + "template": { + "病史完整模板": "Complete Medical History Template", + "现病史模板内容": "Current Medical History Template Content", + "个人史": "Personal History", + "既往史": "Past Medical History", + "家族史": "Family History", + "辅助检查": "Auxiliary Examinations" + } +}; diff --git a/src/i18n/pages/PatientManage/medicalHistory/index.ts b/src/i18n/pages/PatientManage/medicalHistory/index.ts new file mode 100644 index 0000000..d993545 --- /dev/null +++ b/src/i18n/pages/PatientManage/medicalHistory/index.ts @@ -0,0 +1,19 @@ +import medicalHistoryZhCn from './zh-cn'; +import medicalHistoryEn from './en'; +import medicalHistoryZhTw from './zh-tw'; +import medicalHistoryJp from './jp'; + +export default { + zhCn: { + ...medicalHistoryZhCn + }, + en: { + ...medicalHistoryEn + }, + zhTw: { + ...medicalHistoryZhTw + }, + jp: { + ...medicalHistoryJp + } +} diff --git a/src/i18n/pages/PatientManage/medicalHistory/jp.ts b/src/i18n/pages/PatientManage/medicalHistory/jp.ts new file mode 100644 index 0000000..7f84877 --- /dev/null +++ b/src/i18n/pages/PatientManage/medicalHistory/jp.ts @@ -0,0 +1,84 @@ +export default { + addBtnText: '追加', + updateBtnText: '修正', + delBtnText: '削除', + saveBtnText: '保存', + cancel: 'キャンセル', + dates: '日付', + docter: '医師', + info: '詳細', + recordDate: '記録日', + recordDoctor: '記録医師', + placeholderSelect: '選択してください', + historyKidneyTransplantation: '腎移植歴', + historyPeritonealDialysis: '腹膜透析歴', + allergyHistory: 'アレルギー歴', + placeholderGmyw: 'アレルギーの薬物/食品等を入力してください', + chiefComplaint: '主訴', + placeholderChiefComplaint: '患者の主訴を入力してください', + medicalHistoryContent: '現病歴', + jwsHistoryContent: '既往歴', + grsHistoryContent: '個人歴', + jzsHistoryContent: '家族歴', + fzjcHistoryContent: '補助検査', + editor1: '現在入力済み', + editor2: '文字', + editor3: 'まだ入力できます', + editor4: '文字数が最大許可値を超えています。サーバーが保存を拒否する可能性があります', + temolateKu: 'テンプレートライブラリ', + msg1: '記録時間を選択してください', + msg2: '腎移植歴の有無を選択してください', + msg3: '選択してください', + msg4: '記録医師を選択してください', + have: 'あり', + noHave: 'なし', + notQuiteClear: '不明', + elMessageBox1: 'この操作は患者の病歴を永久に削除します。続行しますか?', + elMessageBox2: 'ヒント', + elMessageBox3: '確認', + elMessageBox4: 'キャンセル', + success1: '削除に成功しました', + success2: '操作に成功しました', + warning1: '選択された日付にはすでに病歴の記録があります。他の日付を選択するか、現在の記録を修正してください', + warning2: '患者が選択されていません!', + warning6: '記録日を選択してください', + editorPlaceholder: 'テキストを入力してください!', + templateName: 'テンプレート名', + application: '適用', + setTemplate: 'テンプレートとして設定', + setTempTit: 'テンプレート設定', + tips1: '注意:この操作は追加操作のみを目的としており、重複する内容の検証は行われません。同じ【病歴】を重複設定しないようご注意ください。テンプレート内容が同質化する可能性があります', + "打印": "印刷", + "全部设成模板": "すべてテンプレートに設定", + "模板库": "テンプレートライブラリ", + "数据异常请刷新后重试": "データ異常です。ページを更新して再試行してください", + "模板应用错误": "テンプレート適用エラー", + "男": "男性", + "女": "女性", + "printMedHistory": { + "患者姓名": "患者名", + "年龄": "年齢", + "性别": "性別", + "记录日期": "記録日", + "记录医生": "記録医師", + "肾移植历史": "腎移植歴", + "腹膜透析史": "腹膜透析歴", + "过敏史": "アレルギー歴", + "主诉": "主訴", + "现病史": "現病歴", + "既往史": "既往歴", + "个人史": "個人歴", + "家族史": "家族歴", + "辅助检查": "補助検査", + "医生签名": "医師署名", + "病史": "病歴" + }, + "template": { + "病史完整模板": "病歴完全テンプレート", + "现病史模板内容": "現病歴テンプレート内容", + "个人史": "個人歴", + "既往史": "既往歴", + "家族史": "家族歴", + "辅助检查": "補助検査" + } +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/medicalHistory/ms.ts b/src/i18n/pages/PatientManage/medicalHistory/ms.ts new file mode 100644 index 0000000..58650e6 --- /dev/null +++ b/src/i18n/pages/PatientManage/medicalHistory/ms.ts @@ -0,0 +1,84 @@ +export default { + "addBtnText": "Tambah", + "updateBtnText": "Kemaskini", + "delBtnText": "Padam", + "saveBtnText": "Simpan", + "cancel": "Batal", + "dates": "Tarikh", + "docter": "Doktor", + "info": "Butiran", + "recordDate": "Tarikh Rekod", + "recordDoctor": "Doktor Perekod", + "placeholderSelect": "Sila Pilih", + "historyKidneyTransplantation": "Sejarah Pemindahan Buah Pinggang", + "historyPeritonealDialysis": "Sejarah Dialisis Peritoneal", + "allergyHistory": "Sejarah Alergi", + "placeholderGmyw": "Sila masukkan ubat/makanan atau item alergi lain", + "chiefComplaint": "Aduan Utama", + "placeholderChiefComplaint": "Sila masukkan aduan utama pesakit", + "medicalHistoryContent": "Sejarah Penyakit Semasa", + "jwsHistoryContent": "Sejarah Perubatan Lalu", + "grsHistoryContent": "Sejarah Peribadi", + "jzsHistoryContent": "Sejarah Keluarga", + "fzjcHistoryContent": "Pemeriksaan Sokongan", + "editor1": "Jumlah yang telah dimasukkan", + "editor2": "watak", + "editor3": "Anda boleh memasukkan lagi", + "editor4": "Bilangan watak melebihi had maksimum, pelayan mungkin menolak untuk menyimpan", + "temolateKu": "Perpustakaan Templat", + "msg1": "Sila pilih masa rekod", + "msg2": "Sila pilih sama ada terdapat sejarah pemindahan buah pinggang", + "msg3": "Sila pilih", + "msg4": "Sila pilih doktor perekod", + "have": "Ada", + "noHave": "Tiada", + "notQuiteClear": "Tidak Jelas", + "elMessageBox1": "Tindakan ini akan memadam sejarah penyakit pesakit ini secara kekal, adakah anda pasti untuk teruskan?", + "elMessageBox2": "Pemberitahuan", + "elMessageBox3": "Sahkan", + "elMessageBox4": "Batal", + "success1": "Padam berjaya", + "success2": "Tindakan berjaya", + "warning1": "Tarikh rekod semasa sudah wujud dalam sejarah penyakit, sila pilih tarikh lain atau ubah rekod yang sedia ada", + "warning2": "Pesakit tidak dipilih!", + "warning6": "Sila pilih tarikh rekod", + "editorPlaceholder": "Sila masukkan teks anda!", + "templateName": "Nama Templat", + "application": "Gunakan", + "setTemplate": "Tetapkan Sebagai Templat", + "setTempTit": "Tetapan Templat", + "tips1": "Perhatian: Tindakan ini hanya untuk menambah, pelaksanaan ini tidak akan melakukan semakan kandungan duplikasi, sila elakkan menetapkan sejarah yang sama berulang kali untuk mengelakkan pengulangan kandungan templat", + "打印": "Cetak", + "全部设成模板": "Tetapkan Semua Sebagai Templat", + "模板库": "Perpustakaan Templat", + "数据异常请刷新后重试": "Ralat Data, sila segarkan dan cuba semula", + "模板应用错误": "Ralat Aplikasi Templat", + "男": "Lelaki", + "女": "Perempuan", + "printMedHistory": { + "患者姓名": "Nama Pesakit", + "年龄": "Umur", + "性别": "Jantina", + "记录日期": "Tarikh Rekod", + "记录医生": "Doktor Perekod", + "肾移植历史": "Sejarah Transplantasi Buah Pinggang", + "腹膜透析史": "Sejarah Dialisis Peritoneal", + "过敏史": "Sejarah Alergi", + "主诉": "Aduan Utama", + "现病史": "Sejarah Penyakit Semasa", + "既往史": "Sejarah Perubatan Lalu", + "个人史": "Sejarah Peribadi", + "家族史": "Sejarah Keluarga", + "辅助检查": "Pemeriksaan Sokongan", + "医生签名": "Tandatangan Doktor", + "病史": "Sejarah Penyakit" + }, + "template": { + "病史完整模板": "Templat Sejarah Penyakit Lengkap", + "现病史模板内容": "Kandungan Templat Sejarah Penyakit Semasa", + "个人史": "Sejarah Peribadi", + "既往史": "Sejarah Perubatan Lalu", + "家族史": "Sejarah Keluarga", + "辅助检查": "Pemeriksaan Sokongan" + } +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/medicalHistory/zh-cn.ts b/src/i18n/pages/PatientManage/medicalHistory/zh-cn.ts new file mode 100644 index 0000000..bef1c0a --- /dev/null +++ b/src/i18n/pages/PatientManage/medicalHistory/zh-cn.ts @@ -0,0 +1,84 @@ +export default { + addBtnText: '添加', + updateBtnText: '修改', + delBtnText: '删除', + saveBtnText: '保存', + cancel: '取消', + dates: '日期', + docter: '医生', + info: '详情', + recordDate: '记录日期', + recordDoctor: '记录医生', + placeholderSelect: '请选择', + historyKidneyTransplantation: '肾移植历史', + historyPeritonealDialysis: '腹膜透析史', + allergyHistory: '过敏史', + placeholderGmyw: '请输入过敏药物/食物等过敏项', + chiefComplaint: '主诉', + placeholderChiefComplaint: '请输入患者主诉', + medicalHistoryContent: '现病史', + jwsHistoryContent: '既往史', + grsHistoryContent: '个人史', + jzsHistoryContent: '家族史', + fzjcHistoryContent: '辅助检查', + editor1: '当前已输入', + editor2: '个字符', + editor3: '您还可以输入', + editor4: '字数超出最大允许值,服务器可能拒绝保存', + temolateKu: '模板库', + msg1: '请选择记录时间', + msg2: '请选择是否有肾移植史', + msg3: '请选择', + msg4: '请选择记录医生', + have:'有', + noHave: '无', + notQuiteClear: '不详', + elMessageBox1: '此操作将永久删除该患者病史,是否继续?', + elMessageBox2: '提示', + elMessageBox3: '确认', + elMessageBox4: '取消', + success1: '删除成功', + success2: '操作成功', + warning1: '当前记录日期已存在病史记录,请选择其它日期或对当前日期已有记录进行修改', + warning2: '未选择患者!', + warning6: '请选择记录日期', + editorPlaceholder: '请输入您的文字!', + templateName: '模板名称', + application: '应用', + setTemplate: '设为模板', + setTempTit: '模板设置', + tips1: '注意:该操作仅为添加操作,执行操作将不执行重复内容校验,请勿将同一【病史】重复设置,以免造成模板内容的同质化', + 打印: '打印', + 全部设成模板: '全部设成模板', + 模板库: '模板库', + 数据异常请刷新后重试: '数据异常,请刷新后重试', + 模板应用错误: '模板应用错误', + 男: '男', + 女: '女', + printMedHistory: { + 患者姓名: '患者姓名', + 年龄: '年龄', + 性别: '性别', + 记录日期: '记录日期', + 记录医生: '记录医生', + 肾移植历史: '肾移植历史', + 腹膜透析史: '腹膜透析史', + 过敏史: '过敏史', + 主诉: '主诉', + 现病史: '现病史', + 既往史: '既往史', + 个人史: '个人史', + 家族史: '家族史', + 辅助检查: '辅助检查', + 医生签名: '医生签名', + 病史: '病史', + }, + template: { + 病史完整模板: '病史完整模板', + 现病史模板内容: '现病史模板内容', + 个人史: '个人史', + 既往史: '既往史', + 家族史: '家族史', + 辅助检查: '辅助检查', + } +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/medicalHistory/zh-tw.ts b/src/i18n/pages/PatientManage/medicalHistory/zh-tw.ts new file mode 100644 index 0000000..1c3d1a6 --- /dev/null +++ b/src/i18n/pages/PatientManage/medicalHistory/zh-tw.ts @@ -0,0 +1,84 @@ +export default { + addBtnText: '添加', + updateBtnText: '修改', + delBtnText: '删除', + saveBtnText: '保存', + cancel: '取消', + dates: '日期', + docter: '醫生', + info: '詳情', + recordDate: '記錄日期', + recordDoctor: '記錄醫生', + placeholderSelect: '請選擇', + historyKidneyTransplantation: '腎移植歷史', + historyPeritonealDialysis: '腹膜透析史', + allergyHistory: '過敏史', + placeholderGmyw: '請輸入過敏藥物/食物等過敏項', + chiefComplaint: '主訴', + placeholderChiefComplaint: '請輸入患者主訴', + medicalHistoryContent: '现病史', + jwsHistoryContent: '既往史', + grsHistoryContent: '个人史', + jzsHistoryContent: '家族史', + fzjcHistoryContent: '辅助检查', + editor1: '當前已輸入', + editor2: '個字元', + editor3: '您還可以輸入', + editor4: '字數超出最大允許值,服務器可能拒絕保存', + temolateKu: '範本庫', + msg1: '請選擇記錄時間', + msg2: '請選擇是否有腎移植史', + msg3: '請選擇', + msg4: '請選擇記錄醫生', + have: '有', + noHave: '無', + notQuiteClear: '不詳', + elMessageBox1: '此操作將永久删除該患者病史,是否繼續?', + elMessageBox2: '提示', + elMessageBox3: '確認', + elMessageBox4: '取消', + success1: '删除成功', + success2: '操作成功', + warning1: '當前記錄日期已存在病史記錄,請選擇其它日期或對當前日期已有記錄進行修改', + warning2: '未選擇患者!', + warning6: '请选择记录日期', + editorPlaceholder: '請輸入您的文字!', + templateName: '範本名稱', + application: '應用', + setTemplate: '设为模板', + setTempTit: '模板设置', + tips1: '注意:该操作仅为添加操作,执行操作将不执行重复内容校验,请勿将同一【病史】重复设置,以免造成模板内容的同质化', + "打印": "列印", + "全部设成模板": "全部設成模板", + "模板库": "模板庫", + "数据异常请刷新后重试": "數據異常,請刷新後重試", + "模板应用错误": "模板應用錯誤", + "男": "男", + "女": "女", + "printMedHistory": { + "患者姓名": "患者姓名", + "年龄": "年齡", + "性别": "性別", + "记录日期": "記錄日期", + "记录医生": "記錄醫生", + "肾移植历史": "腎移植歷史", + "腹膜透析史": "腹膜透析史", + "过敏史": "過敏史", + "主诉": "主訴", + "现病史": "現病史", + "既往史": "既往史", + "个人史": "個人史", + "家族史": "家族史", + "辅助检查": "輔助檢查", + "医生签名": "醫生簽名", + "病史": "病史" + }, + "template": { + "病史完整模板": "病史完整模板", + "现病史模板内容": "現病史模板內容", + "个人史": "個人史", + "既往史": "既往史", + "家族史": "家族史", + "辅助检查": "輔助檢查" + } +}; diff --git a/src/i18n/pages/PatientManage/outComeRecord/en.ts b/src/i18n/pages/PatientManage/outComeRecord/en.ts new file mode 100644 index 0000000..68b45b3 --- /dev/null +++ b/src/i18n/pages/PatientManage/outComeRecord/en.ts @@ -0,0 +1,45 @@ +export default { + conversionRecord: 'Conversion record', + newTransfer: 'New transfer', + dateOfVesting: 'Transfer date', + conversionType: 'Conversion type', + conversionClassification: 'Conversion classification', + reasonForConversion: 'Reason for conversion', + transferType: 'Transfer type', + outpatientService: 'outpatient service', + beInHospital: 'Hospitalization', + transferToWard: 'Transfer to ward', + transferToBedNumber: 'Transfer to bed number', + translationExplanation: 'Translation explanation', + notes: 'Remarks', + operator: 'Operator', + operate: 'operation', + noPatientSelected: 'No patient selected', + addAndEdit: { + addTitle: 'Add transfer record', + editTitle: 'Edit transfer records', + patientName: 'Patient Name', + transferType: 'Conversion type', + transferType2: 'Transfer type', + outpatientService: 'outpatient service', + beInHospital: 'Hospitalization', + transferToWard: 'Transfer to ward', + transferredBedNumber: 'Transfer to bed number', + dateOfVesting: 'Transfer date', + pleaseSelect: 'Please select', + translationExplanation: 'Translation explanation', + remark: 'Remarks', + operateOperator: 'Operator', + placeholder1: 'Please enter a transfer description', + placeholder2: 'Please enter a note', + placeholder3: 'Please select the operator', + cancellation: 'cancel', + save: 'preserve', + message1: 'Please select the type of transfer', + elMessageBox1: "Continuing the operation will clear the patient's scheduling and scheduling template. Do you want to continue?", + tips: 'prompt', + yes: 'yes', + no: 'no', + operationSuccessful: 'Operation successful', + }, +}; diff --git a/src/i18n/pages/PatientManage/outComeRecord/index.ts b/src/i18n/pages/PatientManage/outComeRecord/index.ts new file mode 100644 index 0000000..96ffec5 --- /dev/null +++ b/src/i18n/pages/PatientManage/outComeRecord/index.ts @@ -0,0 +1,23 @@ +import outComeRecordZhCn from './zh-cn'; +import outComeRecordEn from './en'; +import outComeRecordZhTw from './zh-tw'; +import outComeRecordJp from './jp'; +import outComeRecordMs from './ms'; + +export default { + zhCn: { + ...outComeRecordZhCn + }, + en: { + ...outComeRecordEn + }, + zhTw: { + ...outComeRecordZhTw + }, + jp: { + ...outComeRecordJp + }, + ms: { + ...outComeRecordMs, + } +} diff --git a/src/i18n/pages/PatientManage/outComeRecord/jp.ts b/src/i18n/pages/PatientManage/outComeRecord/jp.ts new file mode 100644 index 0000000..8f6513e --- /dev/null +++ b/src/i18n/pages/PatientManage/outComeRecord/jp.ts @@ -0,0 +1,47 @@ +export default { + conversionRecord: '転帰記録', + newTransfer: '新規転帰', + dateOfVesting: '転帰日', + conversionType: '転帰タイプ', + conversionClassification: '転帰分類', + reasonForConversion: '転帰理由', + transferType: '転入タイプ', + outpatientService: '外来', + beInHospital: '入院', + transferToWard: '転入病棟', + transferToBedNumber: '転入ベッド番号', + translationExplanation: '転帰説明', + notes: '備考', + operator: '操作者', + operate: '操作', + noPatientSelected: '患者が選択されていません', + addAndEdit: { + addTitle: '転帰記録を追加', + editTitle: '転帰記録を編集', + patientName: '患者名', + transferType: '転帰タイプ', + swyy: '死亡原因', + transferType2: '転入タイプ', + outpatientService: '外来', + beInHospital: '入院', + transferToWard: '転入病棟', + transferredBedNumber: '転入ベッド番号', + dateOfVesting: '転帰日', + pleaseSelect: '選択してください', + translationExplanation: '転帰説明', + remark: '備考', + operateOperator: '操作者', + placeholder1: '転帰説明を入力してください', + placeholder2: '備考を入力してください', + placeholder3: '操作者を選択してください', + cancellation: 'キャンセル', + save: '保存', + message1: '転帰タイプを選択してください', + message2: '死亡原因を選択または入力してください', + elMessageBox1: 'この操作を続行すると、患者のシフトおよびシフトテンプレートがリセットされます。続行しますか?', + tips: 'ヒント', + yes: 'はい', + no: 'いいえ', + operationSuccessful: '操作成功' + } +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/outComeRecord/ms.ts b/src/i18n/pages/PatientManage/outComeRecord/ms.ts new file mode 100644 index 0000000..a4f0d95 --- /dev/null +++ b/src/i18n/pages/PatientManage/outComeRecord/ms.ts @@ -0,0 +1,47 @@ +export default { + conversionRecord: 'Rekod Peralihan', + newTransfer: 'Buat Peralihan Baru', + dateOfVesting: 'Tarikh Peralihan', + conversionType: 'Jenis Peralihan', + conversionClassification: 'Klasifikasi Peralihan', + reasonForConversion: 'Sebab Peralihan', + transferType: 'Jenis Pemindahan', + outpatientService: 'Perkhidmatan Pesakit Luar', + beInHospital: 'Pesakit Dalam', + transferToWard: 'Pindah ke Wad', + transferToBedNumber: 'Pindah ke No. Katil', + translationExplanation: 'Penjelasan Peralihan', + notes: 'Nota', + operator: 'Pengendali', + operate: 'Tindakan', + noPatientSelected: 'Tiada Pesakit Yang Dipilih', + addAndEdit: { + addTitle: 'Tambah Rekod Peralihan', + editTitle: 'Edit Rekod Peralihan', + patientName: 'Nama Pesakit', + transferType: 'Jenis Peralihan', + swyy: 'Sebab Kematian', + transferType2: 'Jenis Pemindahan', + outpatientService: 'Perkhidmatan Pesakit Luar', + beInHospital: 'Pesakit Dalam', + transferToWard: 'Pindah ke Wad', + transferredBedNumber: 'Pindah ke No. Katil', + dateOfVesting: 'Tarikh Peralihan', + pleaseSelect: 'Sila Pilih', + translationExplanation: 'Penjelasan Peralihan', + remark: 'Nota', + operateOperator: 'Pengendali Tindakan', + placeholder1: 'Sila Masukkan Penjelasan Peralihan', + placeholder2: 'Sila Masukkan Nota', + placeholder3: 'Sila Pilih Pengendali Tindakan', + cancellation: 'Batal', + save: 'Simpan', + message1: 'Sila Pilih Jenis Peralihan', + message2: 'Sila Pilih atau Masukkan Sebab Kematian', + elMessageBox1: 'Tindakan Seterusnya Akan Mengosongkan Jadual dan Template Jadual Pesakit Ini, Adakah Anda Ingin Meneruskan?', + tips: 'Petua', + yes: 'Ya', + no: 'Tidak', + operationSuccessful: 'Tindakan Berjaya', + }, +}; diff --git a/src/i18n/pages/PatientManage/outComeRecord/zh-cn.ts b/src/i18n/pages/PatientManage/outComeRecord/zh-cn.ts new file mode 100644 index 0000000..254fd1a --- /dev/null +++ b/src/i18n/pages/PatientManage/outComeRecord/zh-cn.ts @@ -0,0 +1,47 @@ +export default { + conversionRecord: '转归记录', + newTransfer: '新建转归', + dateOfVesting: '转归日期', + conversionType: '转归类型', + conversionClassification: '转归分类', + reasonForConversion: '转归原因', + transferType: '转入类型', + outpatientService: '门诊', + beInHospital: '住院', + transferToWard: '转入病区', + transferToBedNumber: '转入床号', + translationExplanation: '转归说明', + notes: '备注', + operator: '操作人', + operate: '操作', + noPatientSelected: '未选择患者', + addAndEdit: { + addTitle: '添加转归记录', + editTitle: '编辑转归记录', + patientName: '病人姓名', + transferType: '转归类型', + swyy: '死亡原因', + transferType2: '转入类型', + outpatientService: '门诊', + beInHospital: '住院', + transferToWard: '转入病区', + transferredBedNumber: '转入床号', + dateOfVesting: '转归日期', + pleaseSelect: '请选择', + translationExplanation: '转归说明', + remark: '备注', + operateOperator: '操作人', + placeholder1: '请输入转归说明', + placeholder2: '请输入备注', + placeholder3: '请选择操作人', + cancellation: '取消', + save: '保存', + message1: '请选择转归类型', + message2: '请选择或输入死亡原因', + elMessageBox1: '继续操作将清空该患者的排班及排班模板, 是否继续?', + tips: '提示', + yes: '是', + no: '否', + operationSuccessful: '操作成功' + } +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/outComeRecord/zh-tw.ts b/src/i18n/pages/PatientManage/outComeRecord/zh-tw.ts new file mode 100644 index 0000000..37e6ddc --- /dev/null +++ b/src/i18n/pages/PatientManage/outComeRecord/zh-tw.ts @@ -0,0 +1,45 @@ +export default { + conversionRecord: '轉歸記錄', + newTransfer: '新建轉歸', + dateOfVesting: '轉歸日期', + conversionType: '轉歸類型', + conversionClassification: '轉歸分類', + reasonForConversion: '轉歸原因', + transferType: '轉入類型', + outpatientService: '門診', + beInHospital: '住院', + transferToWard: '轉入病區', + transferToBedNumber: '轉入床號', + translationExplanation: '轉歸說明', + notes: '備註', + operator: '操作人', + operate: '操作', + noPatientSelected: '未選擇患者', + addAndEdit: { + addTitle: '添加轉歸記錄', + editTitle: '編輯轉歸記錄', + patientName: '病人姓名', + transferType: '轉歸類型', + transferType2: '轉入類型', + outpatientService: '門診', + beInHospital: '住院', + transferToWard: '轉入病區', + transferredBedNumber: '轉入床號', + dateOfVesting: '轉歸日期', + pleaseSelect: '請選擇', + translationExplanation: '轉歸說明', + remark: '備註', + operateOperator: '操作人', + placeholder1: '請輸入轉歸說明', + placeholder2: '請輸入備註', + placeholder3: '請選擇操作人', + cancellation: '取消', + save: '保存', + message1: '請選擇轉歸類型', + elMessageBox1: '繼續操作將清空該患者的排班及排班範本,是否繼續?', + tips: '提示', + yes: '是', + no: '否', + operationSuccessful: '操作成功', + }, +}; diff --git a/src/i18n/pages/PatientManage/physiqueCheck/en.ts b/src/i18n/pages/PatientManage/physiqueCheck/en.ts new file mode 100644 index 0000000..ac452ba --- /dev/null +++ b/src/i18n/pages/PatientManage/physiqueCheck/en.ts @@ -0,0 +1,111 @@ +export default { + addBtnText: 'Add', + editBtnText: 'modify', + delBtnText: 'delete', + saveBtnText: 'preserve', + cancelBtnText: 'cancel', + checkDate: 'date', + doctor: 'doctor', + info: 'details', + placeholderSelect: 'Please select', + placeholderInp: 'Please enter', + timesMinute: 'Times/minute', + anemicAppearance: 'Anemic appearance', + position: 'position', + edema: 'Edema', + bleedingPoint: 'Bleeding point', + develop: 'development', + nutrition: 'nutrition', + mind: 'Spirituality', + mucocutaneous: 'Skin and mucous membranes', + position2: 'part', + degree: 'degree', + subcutaneousHemorrhage: 'Subcutaneous bleeding', + purpura: 'Purpura', + moisture: 'Skin humidity', + other: 'other', + lymphNode: 'Lymph nodes', + superficialLymphadenopathy: 'Superficial lymphadenopathy', + header: 'head', + eyelid: 'eyelid', + left: 'Left', + right: 'right', + reflectionLight: 'Reflection of light', + tonsil: 'tonsil', + pharyngeal: 'Pharynx', + tkdddy: 'Pupils (equal in size and circle)', + neck: 'neck', + jugularVein: 'jugular vein', + thyroid: 'thyroid', + lungs: 'lung', + breathing: 'Respiratory sound', + pleuralFrictionRub: 'Pleural friction sound', + rale: 'noise', + describe: 'describe', + heart: 'heart', + heartSize: 'Heart size', + rhythm: 'Rhythm', + pericardialFrictionSound: 'Pericardial friction sound', + noise: 'Noise', + adventitiousSound: 'Additional sound', + abdomen: 'abdomen', + ascitesSign: 'Ascites sign', + hepatojugularRefluxSyndrome: 'Hepatojugular reflux syndrome', + liverTenderness: 'Liver tenderness', + liverPercussionPain: 'Liver percussion pain', + splenicTenderness: 'Splenic tenderness', + spleenPercussionPain: 'Spleen percussion pain', + kidneyTenderness: 'Kidney tenderness', + percussionPainAndTenderness: 'Percussion pain and tenderness', + no: 'no', + yes: 'yes', + zj: 'autonomously', + bd: 'passive', + qp: 'force', + noHave: 'nothing', + qd: 'mild', + zd: 'moderate ', + zzd: 'severe', + bzd: "I don't know", + have: 'have', + zc: 'normal', + bl: 'Defective', + lh: 'good', + zddd: 'secondary', + ebz: 'Cachexia', + qc: 'clear', + mh: 'vague', + hm: 'coma', + qt: 'other', + ha: 'Gray and dark', + cb: 'pale', + hr: 'Yellow staining', + sscz: 'Pigmentation', + l: 'cold', + g: 'dry', + s: 'wet', + sz: 'edema', + cy: 'Filling', + nz: 'Angry Zhang', + z: 'Left', + y: 'right', + sc: 'bilateral ', + pd: 'Over sized', + px: 'Slightly small', + q: 'Qi', + bq: 'Uneven', + yx: 'negative', + yxx: 'positive', + elMessageBox1: 'This operation will permanently delete the medical history template. Do you want to continue?', + elMessageBox2: 'prompt', + elMessageBox3: 'cancel', + elMessageBox4: 'confirm', + success1: 'Delete successful', + warning1: 'No patient selected', + success2: 'Operation successful', + mbk: 'Template Library', + xh: 'Number', + mbmc: 'Template Name', + yy: 'application', + qx: 'cancel', +}; diff --git a/src/i18n/pages/PatientManage/physiqueCheck/index.ts b/src/i18n/pages/PatientManage/physiqueCheck/index.ts new file mode 100644 index 0000000..9985be5 --- /dev/null +++ b/src/i18n/pages/PatientManage/physiqueCheck/index.ts @@ -0,0 +1,20 @@ +import physiqueCheckZhCn from './zh-cn'; +import physiqueCheckEn from './en'; +import physiqueCheckZhTw from './zh-tw'; +import physiqueCheckJp from './jp'; + + +export default { + zhCn: { + ...physiqueCheckZhCn + }, + en: { + ...physiqueCheckEn + }, + zhTw: { + ...physiqueCheckZhTw + }, + jp: { + ...physiqueCheckJp + } +} diff --git a/src/i18n/pages/PatientManage/physiqueCheck/jp.ts b/src/i18n/pages/PatientManage/physiqueCheck/jp.ts new file mode 100644 index 0000000..a05934e --- /dev/null +++ b/src/i18n/pages/PatientManage/physiqueCheck/jp.ts @@ -0,0 +1,111 @@ +export default { + addBtnText: '追加', + editBtnText: '修正', + delBtnText: '削除', + saveBtnText: '保存', + cancelBtnText: 'キャンセル', + checkDate: '日付', + doctor: '医師', + info: '詳細', + placeholderSelect: '選択してください', + placeholderInp: '入力してください', + timesMinute: '回/分', + anemicAppearance: '貧血の様子', + position: '体位', + edema: '浮腫', + bleedingPoint: '出血点', + develop: '発育', + nutrition: '栄養', + mind: '意識', + mucocutaneous: '皮膚・粘膜', + position2: '部位', + degree: '程度', + subcutaneousHemorrhage: '皮下出血', + purpura: '紫斑', + moisture: '皮膚湿度', + other: 'その他', + lymphNode: 'リンパ節', + superficialLymphadenopathy: '浅表リンパ腫大', + header: '頭部', + eyelid: 'まぶた', + left: '左', + right: '右', + reflectionLight: '対光反射', + tonsil: '扁桃', + pharyngeal: '咽頭', + tkdddy: '瞳孔(等大等円)', + neck: '頸部', + jugularVein: '頸静脈', + thyroid: '甲状腺', + lungs: '肺', + breathing: '呼吸音', + pleuralFrictionRub: '胸膜摩擦音', + rale: 'ラーレ', + describe: '説明', + heart: '心臓', + heartSize: '心臓の大きさ', + rhythm: '心拍律', + pericardialFrictionSound: '心膜摩擦音', + noise: '雑音', + adventitiousSound: '付加音', + abdomen: '腹部', + ascitesSign: '腹水徴候', + hepatojugularRefluxSyndrome: '肝頸静脈逆流症候群', + liverTenderness: '肝の圧痛', + liverPercussionPain: '肝の打診痛', + splenicTenderness: '脾の圧痛', + spleenPercussionPain: '脾の打診痛', + kidneyTenderness: '腎の圧痛', + percussionPainAndTenderness: '打診痛・圧痛', + no: 'いいえ', + yes: 'はい', + zj: '自発', + bd: '受動', + qp: '強制', + noHave: 'なし', + qd: '軽度', + zd: '中度', + zzd: '重度', + bzd: '不明', + have: 'あり', + zc: '正常', + bl: '不良', + lh: '良好', + zddd: '中等', + ebz: '悪病質', + qc: '明瞭', + mh: '不明瞭', + hm: '昏睡', + qt: 'その他', + ha: '灰色', + cb: '青白い', + hr: '黄染', + sscz: '色素沈着', + l: '冷たい', + g: '乾燥', + s: '湿潤', + sz: '浮腫', + cy: '充満', + nz: '怒張', + z: '左', + y: '右', + sc: '両側', + pd: '大きめ', + px: '小さめ', + q: '揃っている', + bq: '不揃い', + yx: '陰性', + yxx: '陽性', + elMessageBox1: 'この操作は病歴テンプレートを永久に削除します。続行しますか?', + elMessageBox2: 'ヒント', + elMessageBox3: 'キャンセル', + elMessageBox4: '確認', + success1: '削除に成功しました', + warning1: '患者が選択されていません', + success2: '操作成功', + mbk: 'テンプレートライブラリ', + xh: 'シリアル番号', + mbmc: 'テンプレート名', + yy: '適用', + qx: 'キャンセル', +}; \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/physiqueCheck/ms.ts b/src/i18n/pages/PatientManage/physiqueCheck/ms.ts new file mode 100644 index 0000000..e4a4a59 --- /dev/null +++ b/src/i18n/pages/PatientManage/physiqueCheck/ms.ts @@ -0,0 +1,111 @@ +export default { + "addBtnText": "Tambah", + "editBtnText": "Sunting", + "delBtnText": "Padam", + "saveBtnText": "Simpan", + "cancelBtnText": "Batal", + "checkDate": "Tarikh", + "doctor": "Doktor", + "info": "Butiran", + "placeholderSelect": "Sila Pilih", + "placeholderInp": "Sila Masukkan", + "timesMinute": "Kali/Minit", + "anemicAppearance": "Penampilan Anemia", + "position": "Posisi", + "edema": "Edema", + "bleedingPoint": "Titik Pendarahan", + "develop": "Perkembangan", + "nutrition": "Pemakanan", + "mind": "Kesedaran", + "mucocutaneous": "Kulit dan Mukosa", + "position2": "Lokasi", + "degree": "Tahap", + "subcutaneousHemorrhage": "Pendahulukan Subkutaneus", + "purpura": "Purpura", + "moisture": "Kelembapan Kulit", + "other": "Lain-lain", + "lymphNode": "Kelenjar Getah Bening", + "superficialLymphadenopathy": "Limfadenopati Superficial", + "header": "Kepala", + "eyelid": "Kelopak Mata", + "left": "Kiri", + "right": "Kanan", + "reflectionLight": "Refleksi Cahaya", + "tonsil": "Amigdala", + "pharyngeal": "Faring", + "tkdddy": "Pupul (Sama besar dan bulat)", + "neck": "Leher", + "jugularVein": "Vena Jugular", + "thyroid": "Tiroid", + "lungs": "Paru-paru", + "breathing": "Pernafasan", + "pleuralFrictionRub": "Geseran Pleuritik", + "rale": "Nadanya", + "describe": "Deskripsi", + "heart": "Jantung", + "heartSize": "Saiz Jantung", + "rhythm": "Irama", + "pericardialFrictionSound": "Bunyi Geseran Perikardial", + "noise": "Bunyi Bising", + "adventitiousSound": "Bunyi Lain", + "abdomen": "Perut", + "ascitesSign": "Tanda Ascites", + "hepatojugularRefluxSyndrome": "Sindrom Refluks Hati-Jugular", + "liverTenderness": "Kesakitan Hati", + "liverPercussionPain": "Sakit Ketukan Hati", + "splenicTenderness": "Kesakitan Limpa", + "spleenPercussionPain": "Sakit Ketukan Limpa", + "kidneyTenderness": "Kesakitan Ginjal", + "percussionPainAndTenderness": "Sakit dan Ketukan Kesakitan", + "no": "Tidak", + "yes": "Ya", + "zj": "Mandiri", + "bd": "Pasif", + "qp": "Paksaan", + "noHave": "Tiada", + "qd": "Ringan", + "zd": "Sederhana", + "zzd": "Berat", + "bzd": "Tidak Diketahui", + "have": "Ada", + "zc": "Normal", + "bl": "Tidak Baik", + "lh": "Baik", + "zddd": "Sederhana", + "ebz": "Malnutrisi", + "qc": "Jelas", + "mh": "Kabur", + "hm": "Koma", + "qt": "Lain-lain", + "ha": "Kelabu", + "cb": "Pucat", + "hr": "Kuning", + "sscz": "Pelepasan Pigmen", + "l": "Sejuk", + "g": "Kering", + "s": "Basah", + "sz": "Edema", + "cy": "Penuh", + "nz": "Tegangan", + "z": "Kiri", + "y": "Kanan", + "sc": "Kedua-dua", + "pd": "Lebih Besar", + "px": "Lebih Kecil", + "q": "Sama", + "bq": "Tidak Sama", + "yx": "Negatif", + "yxx": "Positif", + "elMessageBox1": "Tindakan ini akan menghapuskan templat sejarah penyakit ini secara kekal, adakah anda pasti ingin meneruskan?", + "elMessageBox2": "Pemberitahuan", + "elMessageBox3": "Batal", + "elMessageBox4": "Sahkan", + "success1": "Padam Berjaya", + "warning1": "Pesakit tidak dipilih", + "success2": "Tindakan Berjaya", + "mbk": "Perpustakaan Templat", + "xh": "Nombor Siri", + "mbmc": "Nama Templat", + "yy": "Gunakan", + "qx": "Batal" +} \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/physiqueCheck/zh-cn.ts b/src/i18n/pages/PatientManage/physiqueCheck/zh-cn.ts new file mode 100644 index 0000000..d16c87b --- /dev/null +++ b/src/i18n/pages/PatientManage/physiqueCheck/zh-cn.ts @@ -0,0 +1,111 @@ +export default { + addBtnText: '添加', + editBtnText: '修改', + delBtnText: '删除', + saveBtnText: '保存', + cancelBtnText: '取消', + checkDate: '日期', + doctor: '医生', + info: '详情', + placeholderSelect: '请选择', + placeholderInp: '请输入', + timesMinute: '次/分', + anemicAppearance: '贫血容貌', + position: '体位', + edema: '浮肿', + bleedingPoint: '出血点', + develop: '发育', + nutrition: '营养', + mind: '神志', + mucocutaneous: '皮肤粘膜', + position2: '部位', + degree: '程度', + subcutaneousHemorrhage: '皮下出血', + purpura: '紫癜', + moisture: '皮肤湿度', + other: '其它', + lymphNode: '淋巴结', + superficialLymphadenopathy: '浅表淋巴肿大', + header: '头部', + eyelid: '眼睑', + left: '左', + right: '右', + reflectionLight: '对光反射', + tonsil: '扁桃体', + pharyngeal: '咽部', + tkdddy: '瞳孔(等大等圆)', + neck: '颈部', + jugularVein: '颈静脉', + thyroid: '甲状腺', + lungs: '肺脏', + breathing: '呼吸音', + pleuralFrictionRub: '胸膜摩擦音', + rale: '噪音', + describe: '描述', + heart: '心脏', + heartSize: '心脏大小', + rhythm: '心 律', + pericardialFrictionSound: '心包摩擦声', + noise: '杂 音', + adventitiousSound: '附加音', + abdomen: '腹部', + ascitesSign: '腹水征', + hepatojugularRefluxSyndrome: '肝颈静脉返流征', + liverTenderness: '肝脏压痛', + liverPercussionPain: '肝脏叩痛', + splenicTenderness: '脾脏压痛', + spleenPercussionPain: '脾脏叩痛', + kidneyTenderness: '肾脏压痛', + percussionPainAndTenderness: '叩痛压痛', + no: '否', + yes: '是', + zj: '自主', + bd: '被动', + qp: '强迫', + noHave: '无', + qd: '轻度', + zd: '中度', + zzd: '重度', + bzd: '不知道', + have: '有', + zc: '正常', + bl: '不良', + lh: '良好', + zddd: '中等', + ebz: '恶病质', + qc: '清楚', + mh: '模糊', + hm: '昏迷', + qt: '其他', + ha: '灰暗', + cb: '苍白', + hr: '黄染', + sscz: '色素沉着', + l: '冷', + g: '干', + s: '湿', + sz: '水肿', + cy: '充盈', + nz: '怒张', + z: '左', + y: '右', + sc: '双侧', + pd: '偏大', + px: '偏小', + q: '齐', + bq: '不齐', + yx: '阴性', + yxx: '阳性', + elMessageBox1: '此操作将永久删除该病史模板,是否继续?', + elMessageBox2: '提示', + elMessageBox3: '取消', + elMessageBox4: '确认', + success1: '删除成功', + warning1: '未选择患者', + success2: '操作成功', + mbk: '模板库', + xh: '序号', + mbmc: '模板名称', + yy: '应用', + qx: '取消', +}; \ No newline at end of file diff --git a/src/i18n/pages/PatientManage/physiqueCheck/zh-tw.ts b/src/i18n/pages/PatientManage/physiqueCheck/zh-tw.ts new file mode 100644 index 0000000..f34a224 --- /dev/null +++ b/src/i18n/pages/PatientManage/physiqueCheck/zh-tw.ts @@ -0,0 +1,111 @@ +export default { + addBtnText: '添加', + editBtnText: '修改', + delBtnText: '删除', + saveBtnText: '保存', + cancelBtnText: '取消', + checkDate: '日期', + doctor: '醫生', + info: '詳情', + placeholderSelect: '請選擇', + placeholderInp: '請輸入', + timesMinute: '次/分', + anemicAppearance: '貧血容貌', + position: '體位', + edema: '浮腫', + bleedingPoint: '出血點', + develop: '發育', + nutrition: '營養', + mind: '神志', + mucocutaneous: '皮膚粘膜', + position2: '部位', + degree: '程度', + subcutaneousHemorrhage: '皮下出血', + purpura: '紫癜', + moisture: '皮膚濕度', + other: '其它', + lymphNode: '淋巴結', + superficialLymphadenopathy: '淺錶淋巴腫大', + header: '頭部', + eyelid: '眼瞼', + left: '左', + right: '右', + reflectionLight: '對光反射', + tonsil: '扁桃體', + pharyngeal: '咽部', + tkdddy: '瞳孔(等大等圓)', + neck: '頸部', + jugularVein: '頸靜脈', + thyroid: '甲狀腺', + lungs: '肺臟', + breathing: '呼吸音', + pleuralFrictionRub: '胸膜摩擦音', + rale: '譟音', + describe: '描述', + heart: '心臟', + heartSize: '心臟大小', + rhythm: '心律', + pericardialFrictionSound: '心包摩擦聲', + noise: '雜音', + adventitiousSound: '附加音', + abdomen: '腹部', + ascitesSign: '腹水征', + hepatojugularRefluxSyndrome: '肝頸靜脈返流征', + liverTenderness: '肝臟壓痛', + liverPercussionPain: '肝臟叩痛', + splenicTenderness: '脾臟壓痛', + spleenPercussionPain: '脾臟叩痛', + kidneyTenderness: '腎臟壓痛', + percussionPainAndTenderness: '叩痛壓痛', + no: '否', + yes: '是', + zj: '自主', + bd: '被動', + qp: '強迫', + noHave: '無', + qd: '輕度', + zd: '中度', + zzd: '重度', + bzd: '不知道', + have: '有', + zc: '正常', + bl: '不良', + lh: '良好', + zddd: '中等', + ebz: '惡病質', + qc: '清楚', + mh: '模糊', + hm: '昏迷', + qt: '其他', + ha: '灰暗', + cb: '蒼白', + hr: '黃染', + sscz: '色素沉著', + l: '冷', + g: '幹', + s: '濕', + sz: '水腫', + cy: '充盈', + nz: '怒張', + z: '左', + y: '右', + sc: '雙側', + pd: '偏大', + px: '偏小', + q: '齊', + bq: '不齊', + yx: '陰性', + yxx: '陽性', + elMessageBox1: '此操作將永久删除該病史範本,是否繼續?', + elMessageBox2: '提示', + elMessageBox3: '取消', + elMessageBox4: '確認', + success1: '删除成功', + warning1: '未選擇患者', + success2: '操作成功', + mbk: '範本庫', + xh: '序號', + mbmc: '範本名稱', + yy: '應用', + qx: '取消', +}; diff --git a/src/i18n/pages/PatientManage/vascularAccess/en.ts b/src/i18n/pages/PatientManage/vascularAccess/en.ts new file mode 100644 index 0000000..c953857 --- /dev/null +++ b/src/i18n/pages/PatientManage/vascularAccess/en.ts @@ -0,0 +1,828 @@ +export default { + 血管通路列表: 'Vascular Access List', + 新建通路: 'Create Access', + 建立日期: 'Establishment Date', + 通路部位: 'Access Site', + 通路类型: 'Access Type', + 流入流出道: 'Inflow-Outflow Pathway', + 首次启用日期: 'First Use Date', + 默认到处方: 'Default to Prescription', + 医生: 'Doctor', + 停用日期: 'Discontinuation Date', + 停用原因: 'Reason for Discontinuation', + 备注: 'Remarks', + 操作: 'Actions', + 添加此项: 'Add Item', + 操作记录: 'Operation record', + 超声检查: 'Ultrasound Examination', + 通路评估: 'Access Assessment', + 穿刺信息: 'Puncture Information', + 导管信息: 'Catheter Information', + 并发症及处理: 'Complications and Management', + 维护记录: 'Maintenance records', + 拔出记录: 'Extraction records', + 内瘘围手术期评估表: 'Perioperative AVF Assessment Form', + 内瘘成熟评估表: 'AVF Maturation Assessment Form', + 内瘘日常评估检查表: 'Routine AVF Assessment Checklist', + 内瘘功能障碍狭隘评估表: 'AVF Dysfunction (Stenosis) Assessment Form', + 动静脉内瘘闭塞高危因素评估表: 'AVF Occlusion High-Risk Factors Assessment Form', + 整体评估: 'Overall Assessment', + 未选择患者: 'No Patient Selected!', + 此操作将永久删除该数据是否继续: 'This action will permanently delete the data. Do you want to continue?', + 提示: 'Notice', + 确认: 'Confirm', + 取消: 'Cancel', + 删除成功: 'Deletion Successful!', + 未选择血管通路: 'No Vascular Access Selected!', + 本院启用日期: 'Hospital Activation Date', + access: { + DJMNLBSGWYSPGB: { + 添加动静脉内瘘闭塞高危因素评估表: 'Add AVF Occlusion High-Risk Factors Assessment Form', + 修改动静脉内瘘闭塞高危因素评估表: 'Revise the assessment form for high-risk factors of arteriovenous fistula occlusion', + 评估日期: 'Assessment Date:', + 请选择: 'Please Select', + 评估人: 'Assessor:', + 项目: 'Item', + 选择: 'Select', + 危险因素: 'Risk Factors', + 标准分: 'Standard Score', + 血管护理计划: 'Vascular Care Plan', + 一般危险人群: 'General Risk Group', + 评估表得分总分: 'Assessment Score: Total Score', + '10分': '10 Points', + 护理计划: 'Care Plan', + message1: + '1. Develop a vascular care plan (provide AVF daily care and vascular function health education sheet); determine grip exercise frequency based on vascular function (0-1 time/day), apply heat at least once daily for 15 minutes per session.', + message2: + '2. If vascular dysfunction occurs during dialysis (high venous pressure, difficulty in hemostasis, Qb < 200 ml/min) for three consecutive sessions, discuss whether PTA (Percutaneous Transluminal Angioplasty) is needed.', + 中危险群符合以上任一选项条件者勾选此项: 'Moderate Risk Group (Check if any of the above conditions apply)', + message3: '1. Over 60 years old, vascular type: Graft', + message4: '2. Vascular condition score: 6 points', + message5: '3. Two abnormalities in dialysis status assessment', + message6: '4. Assessment total score: 11–20 points', + message7: + '1. Develop a vascular care plan (provide AVF daily care and vascular function health education sheet); perform grip exercises (including Graft) at least twice daily (morning and evening), at least 50 grips per session, and twice daily for 15 minutes each time.', + message8: '2. If dialysis status assessment is abnormal, implement a care plan based on patient issues (execute and evaluate the care plan).', + message9: '*Vascular dysfunction during dialysis (high venous pressure, difficulty in hemostasis, Qb', + message10: 'If three consecutive abnormalities occur, discuss whether PTA should be arranged.', + 高危险群符合以下任一选项条件者勾选此项: 'High-Risk Group (Check if any of the following conditions apply)', + message11: '1. Male, over 60 years old, vascular type: Transplant', + message12: '2. Vascular condition score: 8 points', + message13: '3. Three or more abnormalities in dialysis status assessment', + message14: '4. Assessment total score: 21 points or higher', + message15: + '1. Develop a vascular care plan (provide AVF daily care and vascular function health education sheet); perform grip exercises (including Graft) at least twice daily (morning and evening), at least 50 grips per session, and twice daily for 15 minutes each time.', + message16: '2. Implement a care plan for dialysis status abnormalities (execute and evaluate the care plan).', + message17: '*Excess fluid leading to hypotension during dialysis', + message18: '*Fluid increase >5%', + message19: '*Hypotension during dialysis', + message20: '*Vascular dysfunction during dialysis (high venous pressure, difficulty in hemostasis, Qb', + message21: 'If an abnormality occurs once, discuss whether PTA should be arranged.', + 总分: 'Total Score', + 取消: 'Cancel', + 保存: 'Save', + 性别: 'Gender', + 男性: 'Male', + 年龄: 'Age', + '60岁以上': 'Over 60 Years Old', + 并发症: 'Complications', + 糖尿病: '*Diabetes', + 高血压: '*Hypertension', + 低血压: 'Hypotension (Pre-dialysis BP < 90/60 mmHg, occurring more than 3 times/month)', + 抽烟史: 'Smoking History', + 血管硬化: 'Vascular Sclerosis', + 血管感染史: 'History of Vascular Infection', + 心脑血管意外: 'Cardiovascular and Cerebrovascular Events', + 冠心病: 'Coronary Heart Disease', + 血管条件: 'Vascular Condition', + 细: '*Thin', + 不明显: '*Not Prominent', + 弹性差: '*Poor Elasticity', + 有血管阻塞史: '*History of Vascular Occlusion', + 血管使用年限小于1年: '*Vascular Usage < 1 Year', + 药物使用: 'Medication Usage', + 降压药: '*Antihypertensive Drugs', + 无肝素透析: 'Heparin-Free Dialysis', + 口服抗凝剂: 'Oral Anticoagulants', + 血管护理: 'Vascular Care', + 未规则握球运动: '*Irregular Grip Exercise', + 未规则局部热敷: '*Irregular Local Heat Application', + 穿刺前未习惯洗手: 'Not in the Habit of Handwashing Before Puncture', + 每日未检查血管通畅情况: 'No Daily Check of Vascular Patency', + 血管通路: 'Vascular Access', + 移植: 'Transplant*', + 穿刺方法: 'Puncture Method', + 重复穿刺: 'Repeated Puncture', + 不规则纽扣式: 'Irregular Buttonhole Technique', + 蚂蚁式: 'Ant-Style Puncture', + 透析状况: 'Dialysis Status', + 水多导致透析低血压: '*Excess Fluid Leading to Hypotension During Dialysis (1/4 of Monthly Dialysis Sessions)', + 水分增加5: '*Fluid Increase 5% (More than 1/2 of Monthly Dialysis Sessions)', + 止血不易: '*Difficulty in Hemostasis (Compression Hemostasis >15 Minutes)', + 内瘘感染: 'AVF Infection', + 穿刺困难导致血肿: 'Puncture Difficulty Leading to Hematoma', + 透析中无法维持: 'Qb < 200 ml/min (Unable to Maintain During Dialysis)', + 静脉压高ob200: 'High Venous Pressure (Qb = 200 ml/min, Venous Pressure >150 mmHg)', + 请选择评估时间: 'Please Select Assessment Time', + 请选择评估人: 'Please Select Assessor', + 女性: 'Female', + 中危险群: 'Moderate Risk Group', + 高危险群: 'High-Risk Group', + 操作成功: 'Operation Successful!', + }, + BLCSPGB: { + 添加内瘘成熟评估表: 'Add AVF Maturity Assessment Form', + 修改内瘘成熟评估表: 'Edit AVF Maturity Assessment Form', + 评估日期: 'Assessment Date', + 请选择: 'Please Select', + 评估人: 'Assessor', + 血流量: 'Blood Flow Rate', + 参考值: 'Reference Value', + 血管直径: 'Vessel Diameter', + 血管距皮距离: 'Vessel-to-Skin Distance', + 可穿刺血管分支: 'Puncturable Vessel Branches (Count)', + 主干血管可穿刺长度: 'Puncturable Length of Main Vessel', + AVG血清肿是否消退: 'AVG Seroma Resolution', + 是否成熟: 'Maturity Status', + 取消: 'Cancel', + 保存: 'Save', + 否: 'No', + 是: 'Yes', + 请选择评估时间: 'Please Select Assessment Time', + 请选择评估人: 'Please Select Assessor', + 请输入血流量: 'Please Enter Blood Flow Rate', + 请输入血管直径: 'Please Enter Vessel Diameter', + 请输入血管距皮距离: 'Please Enter Vessel-to-Skin Distance', + 请输入可穿刺血管分支: 'Please Enter Puncturable Vessel Branches', + 请输入主干血管可穿刺长度: 'Please Enter Puncturable Length of Main Vessel', + 请选择AVG血清肿是否消退: 'Please Select AVG Seroma Resolution', + 请选择是否成熟: 'Please Select Maturity Status', + 操作成功: 'Operation Successful!', + }, + NLGNZAPGB: { + 添加内瘘功能障碍评估表: 'Add AVF Dysfunction Assessment Form', + 修改内瘘功能障碍评估表: 'Edit AVF Dysfunction Assessment Form', + 评估日期: 'Assessment Date:', + 请选择: 'Please Select', + 评估人: 'Assessor:', + 评估信息: 'Assessment Information', + 评估标准: 'Assessment Criteria', + 总分: 'Total Score:', + 备注三分或以上需要报告通路医生进行干预: 'Note: A score of 3 or higher requires reporting to a vascular access physician for intervention', + 取消: 'Cancel', + 保存: 'Save', + 无任何表现: 'No Symptoms', + 听及狭窄在狭窄区域听到高调音: 'Auscultated Stenosis: High-pitched sound detected in the stenotic area', + 静脉压增高大于160: 'Increased Venous Pressure >160 mmHg', + 可视或扪及明显的狭窄区域: 'Visible or Palpable Stenotic Area', + 止血时间延长: 'Prolonged Hemostasis', + 血流量不足朝向吻合口的穿刺: 'Insufficient Blood Flow (Puncture Toward the Anastomosis)', + 动静脉下降小于负250: 'Arteriovenous Drop < -250 mmHg', + 震颤明显减弱: 'Significantly Weakened Thrill', + 内瘘侧肿胀: 'AVF-Side Swelling', + 请选择评估时间: 'Please Select Assessment Time', + 请选择评估人: 'Please Select Assessor', + 操作成功: 'Operation Successful!', + 项目: 'Item', + 选择: 'Select', + 危险因素: 'Risk Factors', + 标准分: 'Standard Score', + 血管护理计划: 'Vascular Care Plan', + 一般危险人群: 'General Risk Group', + 评估表得分: '*Assessment Form Score', + 分: 'Points', + 护理计划: 'Care Plan', + message1: + '1. Develop a vascular care plan (provide AVF daily care and vascular health education). Determine ball squeezing frequency based on vascular function (0-1 times/day), apply warm compress at least once/day for 15 minutes per session.', + message2: '2. Vascular dysfunction during dialysis (high venous pressure, difficult hemostasis, Qb', + message3: '200 ml/min) If abnormalities occur 3 consecutive times, discuss the need for PTA (Percutaneous Transluminal Angioplasty).', + message4: 'Moderate Risk Group (Select this option if any of the above conditions apply)', + message5: '1. Age over 60, vascular type is Graft', + message6: '2. Vascular condition score is 6', + message7: '3. Two abnormal findings in dialysis status assessment', + message8: '4. Total assessment score between 11-20 points', + message9: + '1. Develop a vascular care plan (provide AVF daily care and vascular health education). Ball squeezing (including Graft) at least twice/day (morning and evening), at least 50 times per session, and twice/day for 15 minutes per session.', + message10: '2. Address dialysis status abnormalities based on patient-specific nursing plan (execute and evaluate care plan).', + message11: '*Vascular dysfunction during dialysis (high venous pressure, difficult hemostasis, Qb', + message12: 'If abnormalities occur 3 consecutive times, discuss whether PTA is necessary.', + 高危险群符合以下任一选项条件者勾选此项: 'High-Risk Group (Select this option if any of the following conditions apply)', + message13: '1. Male, over 60 years old, vascular type is Transplant', + message14: '2. Vascular condition score is 8', + message15: '3. Three or more abnormal findings in dialysis status assessment', + message16: '4. Total assessment score over 21 points', + message17: + '1. Develop a vascular care plan (provide AVF daily care and vascular health education). Ball squeezing (including Graft) at least twice/day (morning and evening), at least 50 times per session, and twice/day for 15 minutes per session.', + message18: '2. Address dialysis status abnormalities based on the nursing plan (execute and evaluate care plan).', + message19: '*Excessive fluid leading to dialysis hypotension', + message20: '*Fluid gain >5%', + message21: '*Intradialytic Hypotension', + message22: '*Vascular dysfunction during dialysis (high venous pressure, difficult hemostasis, Qb', + message23: 'If an abnormality occurs once, discuss whether PTA should be arranged.', + 性别: 'Gender', + 男性: 'Male', + 年龄: 'Age', + '60岁以上': 'Over 60 Years Old', + 并发症: 'Complications', + 糖尿病: '*Diabetes', + 高血压: '*Hypertension', + 低血压透析前: 'Hypotension (Pre-dialysis BP <90/60 mmHg, occurring more than 3 times per month)', + 抽烟史: 'Smoking History', + 血管硬化: 'Vascular Sclerosis', + 血管感染史: 'History of Vascular Infection', + 心脑血管意外: 'Cardiovascular and Cerebrovascular Events', + 冠心病: 'Coronary Artery Disease', + 血管条件: 'Vascular Condition', + 细: '*Thin', + 不明显: '*Not Obvious', + 弹性差: '*Poor Elasticity', + 有血管阻塞史: '*History of Vascular Occlusion', + 血管使用年限小于1年: '*Vascular Usage <1 Year', + 药物使用: 'Medication Usage', + 降压药: '*Antihypertensive Drugs', + 无肝素透析: 'Heparin-Free Dialysis', + 口服抗凝剂: 'Oral Anticoagulants', + 血管护理: 'Vascular Care', + 未规则握球运动: '*Irregular Ball Squeezing Exercise', + 未规则局部热敷: '*Irregular Local Warm Compress', + 穿刺前未习惯洗手: 'Not in the Habit of Washing Hands Before Puncture', + 每日未检查血管通畅情况: 'Failure to Check Vascular Patency Daily', + 血管通路: 'Vascular Access', + 移植: '*Transplant', + 穿刺方法: 'Puncture Method', + 重复穿刺: '*Repeated Puncture', + 不规则纽扣式: 'Irregular Buttonhole Technique', + 蚂蚁式: 'Ant-Style Puncture', + 透析状况: 'Dialysis Status', + 水多导致透析低血压当月透析次数: '*Excessive Fluid Leading to Dialysis Hypotension (1/4 of Monthly Dialysis Sessions)', + 水分增加5: '*Fluid Gain 5% (More than 1/2 of Monthly Dialysis Sessions)', + 止血不易: '*Difficult Hemostasis (Compression Hemostasis >15 min)', + 内瘘感染: 'AVF Infection', + 穿刺困难导致血肿: 'Difficult Puncture Leading to Hematoma', + 透析中无法维持: 'Qb <200 ml/min (Unable to Maintain During Dialysis)', + 静脉压高: 'High Venous Pressure (Qb=200 ml/min, Venous Pressure >150 mmHg)', + 中危险群: 'Moderate Risk Group', + 高危险群: 'High-Risk Group', + 女性: 'Female', + }, + NLRCPGJCB: { + 添加内瘘日常评估检查表: 'Add AVF Daily Assessment Checklist', + 修改内瘘日常评估检查表: 'Edit AVF Daily Assessment Checklist', + 评估日期: 'Assessment Date', + 请选择: 'Please Select', + 评估人: 'Assessor', + 肢体肿胀: 'Limb Swelling', + 穿刺困难: 'Difficult Cannulation', + 拔针后出血时间延长: 'Prolonged Bleeding After Needle Removal', + ktv在线或urr下降: 'Kt/V (Online) or URR (Monthly) Decrease', + 达到处方血流量: 'Achieved Prescribed Blood Flow Rate', + 血管窃血症或疼痛: 'Vascular Steal Syndrome or Pain', + 感染征红肿痛脓点发热: 'Signs of Infection: Redness, Swelling, Pain, Pus, Fever', + 透析中渗血: 'Oozing During Dialysis', + 动脉瘤形成: 'Aneurysm Formation', + 抬臂试验正常: 'Arm Elevation Test Normal', + 其他: 'Other:', + 请输入: 'Please Enter', + 汇报医生或通路组员: 'Report to Physician or Vascular Access Team', + 取消: 'Cancel', + 保存: 'Save', + 否: 'No', + 是: 'Yes', + 操作成功: 'Operation Successful!', + }, + NLWSSQPGB: { + 添加内瘘围手术期评估表: 'Add Perioperative AVF Assessment Form', + 修改内瘘围手术期评估表: 'Edit Perioperative AVF Assessment Form', + 评估日期: 'Assessment Date:', + 请选择: 'Please Select', + 评估人: 'Assessor', + 动脉: 'Artery', + 搏动: 'Pulsation', + 掌深弓通畅: 'Palmar Deep Arch Patency', + 掌浅弓通畅: 'Palmar Superficial Arch Patency', + 血压测量差异: 'Blood Pressure Measurement Difference:', + 内径值远心端: 'Internal Diameter (Distal End) (mm)', + 内径值近心端: 'Internal Diameter (Proximal End) (mm)', + 参考值: 'Reference Value', + 静脉: 'Vein', + 与中心静脉是否连续: 'Continuity with Central Vein', + 是否狭窄: 'Stenosis Present', + 是否堵塞: 'Obstruction Present', + 内径值: 'Internal Diameter', + allen实验: 'Allen Test', + 术后评估: 'Postoperative Assessment', + 手掌肿胀: 'Palmar Swelling', + 伤口渗血: 'Wound Oozing', + 取消: 'Cancel', + 保存: 'Save', + 强: 'Strong', + 弱: 'Weak', + 否: 'No', + 是: 'Yes', + 高于对侧: 'Higher than Opposite Side', + 低于对侧: 'Lower than Opposite Side', + 阳性五秒内恢复颜色: 'Positive (Color Restores Within 5 Seconds)', + 阴性颜色恢复延迟: 'Negative (Delayed Color Restoration)', + 请选择评估时间: 'Please Select Assessment Time', + 请选择评估人: 'Please Select Assessor', + 请选择搏动: 'Please Select Pulsation', + 请选择掌深弓通畅: 'Please Select Palmar Deep Arch Patency', + 请选择掌浅弓通畅: 'Please Select Palmar Superficial Arch Patency', + 请选择血压测量差异: 'Please Select Blood Pressure Measurement Difference', + 请输入内径值远心端: 'Please Enter Internal Diameter (Distal End)', + 请输入内径值近心端: 'Please Enter Internal Diameter (Proximal End)', + 请选择与中心静脉是否连续: 'Please Select Continuity with Central Vein', + 请选择是否狭窄: 'Please Select Stenosis Presence', + 请选择是否堵塞: 'Please Select Obstruction Presence', + 请输入内径值: 'Please Enter Internal Diameter', + 请选择allen实验: 'Please Select Allen Test', + 请选择手掌肿胀: 'Please Select Palmar Swelling', + 请选择伤口渗血: 'Please Select Wound Oozing', + 请选择内瘘通畅: 'Please Select AVF Patency', + 操作成功: 'Operation Successful!', + }, + ZTPGB: { + 添加整体评估表: 'Add Comprehensive Assessment Form', + 修改整体评估表: 'Edit Comprehensive Assessment Form', + 评估日期: 'Assessment Date:', + 请选择: 'Please Select', + 评估人: 'Assessor:', + 项目: 'Item:', + 请输入: 'Please Enter', + 结果: 'Result:', + 处理: 'Action:', + 取消: 'Cancel', + 保存: 'Save', + 否: 'No', + 是: 'Yes', + 请选择评估时间: 'Please Select Assessment Time', + 请选择评估人: 'Please Select Assessor', + 操作成功: 'Operation Successful!', + }, + NLBSGWYSPGBIndex: { + 评估时间: 'Assessment Time', + 评估人: 'Assessor', + 性别: 'Gender', + 年龄: 'Age', + 并发症: 'Complications', + 血管条件: 'Vascular Condition', + 药物使用: 'Medication Usage', + 血管护理: 'Vascular Care', + 血管通路: 'Vascular Access', + 穿刺方法: 'Puncture Method', + 透析状况评估: 'Dialysis Condition Assessment', + 总分: 'Total Score', + 血管护理计划与措施: 'Vascular Care Plan and Measures', + 操作: 'Action', + 确认要删除当前信息: 'Confirm to delete current information?', + 警告: 'Warning', + 确定: 'Confirm', + 取消: 'Cancel', + 删除成功: 'Deletion Successful!', + 取消删除: 'Deletion Canceled!', + }, + NLCSPGBIndex: { + 评估时间: 'Assessment Time', + 评估人: 'Assessor', + 血流量: 'Blood Flow Rate', + 血管直径: 'Vessel Diameter', + 血管距皮距离: 'Distance from Vessel to Skin', + 可穿刺血管分支: 'Puncturable Vessel Branches (Count)', + 主干血管可穿刺长度: 'Puncturable Length of Main Vessel (cm)', + AVG血清肿是否消退: 'Has AVG Seroma Resolved?', + 是: 'Yes', + 否: 'No', + 是否成熟: 'Maturity Status', + 操作: 'Action', + 确认要删除当前信息: 'Confirm to delete current information?', + 警告: 'Warning', + 确定: 'Confirm', + 取消: 'Cancel', + 删除成功: 'Deletion Successful!', + 取消删除: 'Deletion Canceled!', + }, + NLGNZAPGBIndex: { + 评估时间: 'Assessment Time', + 评估人: 'Assessor', + 无任何表现: 'No Symptoms', + 听及狭窄在狭窄区域听到高调音: 'Audible Stenosis: High-Pitched Sound Heard in Stenotic Area', + 静脉压增高大于170: 'Increased Venous Pressure >170 mmHg', + 可视或扪及明显的狭窄区域: 'Visible or Palpable Significant Stenotic Area', + 止血时间延长: 'Prolonged Hemostasis Time', + 血流量不足朝向吻合口的穿刺: 'Insufficient Blood Flow (Puncture Toward Anastomosis)', + 动静脉下降250: 'Arteriovenous Pressure Drop <-250 mmHg', + 震颤明显减弱: 'Significantly Weakened Thrill', + 内瘘侧肿胀: 'Swelling on Fistula Side', + 总分: 'Total Score', + 操作: 'Action', + 确认要删除当前信息: 'Confirm to delete current information?', + 警告: 'Warning', + 确定: 'Confirm', + 取消: 'Cancel', + 删除成功: 'Deletion Successful!', + 取消删除: 'Deletion Canceled', + }, + NLRCPGJCBIndex: { + 评估时间: 'Assessment Time', + 评估人: 'Assessor', + 肢体肿胀: 'Limb Swelling', + 是: 'Yes', + 否: 'No', + 穿刺困难: 'Puncture Difficulty', + 拔针后出血时间延长: 'Prolonged Bleeding Time After Needle Removal', + ktv在线URR下降: 'Kt/v (Online) or URR (Monthly) Decrease', + 达到处方血流量: 'Achieved Prescribed Blood Flow', + 血管窃血症或疼痛: 'Vascular Steal Syndrome or Pain', + 感染征红肿痛脓点发热: 'Signs of Infection: Redness, Swelling, Pain, Pustules, Fever', + 透析中渗血: 'Infiltration During Dialysis', + 动脉瘤形成: 'Aneurysm Formation', + 抬臂试验正常: 'Normal Arm Elevation Test', + 其他: 'Other', + 汇报医生或通路组员: 'Report to Physician or Access Team Member', + 操作: 'Action', + 确认要删除当前信息: 'Confirm to delete current information?', + 警告: 'Warning', + 确定: 'Confirm', + 取消: 'Cancel', + 删除成功: 'Deletion Successful!', + 取消删除: 'Cancel Deletion!', + }, + NLWSSQPGBIndex: { + 评估时间: 'Assessment Time', + 评估人: 'Assessor', + 搏动: 'Pulsation', + 强: 'Strong', + 弱: 'Weak', + 掌深弓通畅: 'Deep Palmar Arch Patency', + 是: 'Yes', + 否: 'No', + 掌浅弓通畅: 'Superficial Palmar Arch Patency', + 血压测量差异: 'Blood Pressure Measurement Difference', + 高与对侧: 'Higher than contralateral side', + 低于对侧: 'Lower than contralateral side', + 内径值远心端: 'Inner Diameter (Distal End)', + 内径值近心端: 'Inner Diameter (Proximal End)', + 与中心静脉是否连续: 'Continuity with Central Vein', + 是否狭窄: 'Is it narrowed?', + 是否堵塞: 'Is it blocked?', + 内径值: 'Inner Diameter', + allen实验: 'Allen Test', + 阳性五秒内恢复颜色: 'Positive (Color Returns within 5 Seconds)', + 阴性颜色恢复延迟: 'Negative (Delayed Color Recovery)', + 手掌肿胀: 'Palm Swelling', + 伤口渗血: 'Wound Oozing', + 内瘘通畅: 'Fistula Patency', + 操作: 'Action', + 确认要删除当前信息: 'Are you sure you want to delete the current information?', + 警告: 'Warning', + 确定: 'Confirm', + 取消: 'Cancel', + 删除成功: 'Deletion Successful!', + 取消删除: 'Cancel Deletion!', + }, + ZTPGIndex: { + 评估时间: 'Assessment Time', + 评估人: 'Assessor', + 项目: 'Item', + 结果: 'Result', + 处理: 'Action', + 操作: 'Action', + 确认要删除当前信息: 'Are you sure you want to delete the current information?', + 警告: 'Warning', + 确定: 'Confirm', + 取消: 'Cancel', + 删除成功: 'Deletion Successful!', + 取消删除: 'Cancel Deletion!', + }, + }, + complication: { + 添加并发症: 'Add Complication', + 添加日期: 'Add Date:', + 请选择: 'Please Select', + 并发症: 'Complication:', + 并发症症状: 'Complication Symptoms:', + 请输入并发症症状: 'Please Enter Complication Symptoms', + 并发症处理: 'Complication Management:', + 请输入并发症处理: 'Please Enter Complication Management', + 取消: 'Cancel', + 保存: 'Save', + 请选择添加日期: 'Please Select Add Date', + 请选择并发症: 'Please Select Complication', + 操作成功: 'Operation Successful!', + 修改并发症: 'Edit Complication', + 确认要删除当前信息: 'Are you sure you want to delete the current information?', + 警告: 'Warning', + 确定: 'Confirm', + 删除成功: 'Deletion Successful!', + 取消删除: 'Cancel Deletion!', + 操作: 'Action', + }, + pipe: { + 添加导管信息: 'Add Catheter Information', + 导管日期: 'Catheter Date:', + 请选择: 'Please Select', + 卡夫距导管出口距离: 'Catheter Tip to Exit Distance', + 导管体外段靠近中线: 'Catheter External Segment Near Midline', + 渗血: 'Hemorrhage', + 渗液: 'Leakage', + 导管周围脓红肿: 'Catheter Surrounding Pus/Redness/Swelling', + A端功能: 'A-End Function', + V端功能: 'V-End Function', + 通路连接: 'Access Connection', + 血流量: 'Blood Flow Rate', + A端导管容量: 'A-End Catheter Capacity', + V端导管容量: 'V-End Catheter Capacity', + 护士: 'Nurse', + 取消: 'Cancel', + 保存: 'Save', + A端: 'A-End', + V端: 'V-End', + 否: 'No', + 陈旧性渗血: 'Chronic Hemorrhage', + 压迫止血: 'Compression Hemostasis', + 缝合止血: 'Suture Hemostasis', + 是: 'Yes', + 畅通: 'Patency', + 出畅进不畅: 'Flow Out Patency, Inflow Obstruction', + 进畅出不畅: 'Flow In Patency, Outflow Obstruction', + 不畅通: 'Impeded', + 正接: 'Correct Connection', + 反接: 'Incorrect Connection', + 请选择导管时间: 'Please Select Catheter Time', + 请输入卡夫距导管出口距离: 'Please Enter Catheter Tip to Exit Distance', + 请选择导管体外段靠近中线: 'Please Select Catheter External Segment Near Midline', + 请选择渗血: 'Please Select Hemorrhage', + 请选择渗液: 'Please Select Leakage', + 请选择导管周围脓红肿: 'Please Select Catheter Surrounding Pus/Redness/Swelling', + 请选择A端功能: 'Please Select A-End Function', + 请选择V端功能: 'Please Select V-End Function', + 请选择通路连接: 'Please Select Access Connection', + 请输入血流量: 'Please Enter Blood Flow Rate', + 请输入A端导管容量: 'Please Enter A-End Catheter Capacity', + 请输入V端导管容量: 'Please Enter V-End Catheter Capacity', + 请选择护士: 'Please Select Nurse', + 操作成功: 'Operation Successful!', + 修改导管信息: 'Edit Catheter Information', + AV导管容量: 'A/V Catheter Capacity', + 操作: 'Action', + 确认要删除当前信息: 'Are you sure you want to delete the current information?', + }, + puncture: { + 添加穿刺信息: 'Add Puncture Information', + 穿刺信息: 'Puncture Information', + 穿刺日期: 'Puncture Date:', + 请选择: 'Please Select', + A端穿刺方法: 'A-End Puncture Method', + V端穿刺方法: 'V-End Puncture Method', + A端穿刺类型: 'A-End Puncture Type', + V端穿刺类型: 'V-End Puncture Type', + A端穿刺针型号: 'A-End Puncture Needle Model', + V端穿刺针型号: 'V-End Puncture Needle Model', + A端穿刺点距吻合口距离: 'A-End Puncture Point to Anastomosis Distance', + AtV端穿刺点距吻合口距离: 'AtV-End Puncture Point to Anastomosis Distance', + V端位于分支管: 'V-End Located at Branch Vessel', + 一次成功: 'First Attempt Success', + 静脉压: 'Venous Pressure', + 血流量: 'Blood Flow Rate', + 穿刺护士: 'Puncture Nurse', + 穿刺护士职称: 'Puncture Nurse Title', + 压迫止血记录: 'Compression Hemostasis Record', + 压迫止血时间: 'Compression Hemostasis Time', + 红色A端绑带长度: 'Red (A-End) Strap Length', + 蓝色V端绑带长度: 'Blue (V-End) Strap Length', + 手腕周长: 'Wrist Circumference', + 红色棉球起点: 'Red Cotton Ball Start Point', + 蓝色棉球起点: 'Blue Cotton Ball Start Point', + 红色止血时间: 'Red Hemostasis Time', + 蓝色止血时间: 'Blue Hemostasis Time', + 红色止血刻度: 'Red Hemostasis Scale', + 蓝色止血刻度: 'Blue Hemostasis Scale', + 红色调整刻度: 'Red Adjustment Scale', + 蓝色调整刻度: 'Blue Adjustment Scale', + 取消: 'Cancel', + 保存: 'Save', + 扣眼法: 'Buttonhole Method', + 绳梯法: 'Rope Ladder Method', + 区域法: 'Area Method', + 中心v导管: 'Central V Catheter', + 钝针: 'Blunt Needle', + 锐针: 'Sharp Needle', + 套管针: 'Cannula Needle', + 十七号: '17 Gauge', + 十六号: '16 Gauge', + 十五号: '15 Gauge', + 是: 'Yes', + 否: 'No', + 白: 'White', + 黄: 'Yellow', + 请选择穿刺日期: 'Please Select Puncture Date', + 请选择A端穿刺方法: 'Please Select A-End Puncture Method', + 请选择V端穿刺方法: 'Please Select V-End Puncture Method', + 请选择A端穿刺类型: 'Please Select A-End Puncture Type', + 请选择V端穿刺类型: 'Please Select V-End Puncture Type', + 请选择A端穿刺针型号: 'Please Select A-End Puncture Needle Model', + 请选择V端穿刺针型号: 'Please Select V-End Puncture Needle Model', + 请输入A端穿刺点距吻合口距离: 'Please Enter A-End Puncture Point to Anastomosis Distance', + 请输入AtV端两穿刺点间距离: 'Please Enter AtV-End Puncture Point Distance', + 请选择V端是否位于分支血管: 'Please Select if V-End is Located at Branch Vessel', + 请选择是否一次成功: 'Please Select First Attempt Success', + 请输入静脉压: 'Please Enter Venous Pressure', + 请输入血流量: 'Please Enter Blood Flow Rate', + 请选择穿刺护士: 'Please Select Puncture Nurse', + 请选择穿刺护士职称: 'Please Select Puncture Nurse Title', + 请选择压迫止血时间: 'Please Select Compression Hemostasis Time', + 请输入红色A端绑带长度: 'Please Enter Red (A-End) Strap Length', + 请输入蓝色V端绑带长度: 'Please Enter Blue (V-End) Strap Length', + 请输入手腕周长: 'Please Enter Wrist Circumference (cm)', + 请选择红色棉球起点: 'Please Select Red Cotton Ball Start Point', + 请选择蓝色棉球起点: 'Please Select Blue Cotton Ball Start Point', + 请输入红色止血时间: 'Please Enter Red Hemostasis Time (min)', + 请输入蓝色止血时间: 'Please Enter Blue Hemostasis Time (min)', + 请输入红色止血刻度: 'Please Enter Red Hemostasis Scale', + 请输入蓝色止血刻度: 'Please Enter Blue Hemostasis Scale', + 请输入红色调整刻度: 'Please Enter Red Adjustment Scale', + 请输入蓝色调整刻度: 'Please Enter Blue Adjustment Scale', + 操作成功: 'Operation Successful!', + 修改穿刺信息: 'Edit Puncture Information', + 压迫止血记录表: 'Compression Hemostasis Record Form', + 穿刺方法A端V端: 'Puncture Method (A-End/V-End)', + 穿刺类型A端V端: 'Puncture Type (A-End/V-End)', + 穿刺针型号A端V端: 'Puncture Needle Model (A-End/V-End)', + 查看表单: 'View Form', + 操作: 'Action', + 确认要删除当前信息: 'Are you sure you want to delete the current information?', + 警告: 'Warning', + 确定: 'Confirm', + 删除成功: 'Deletion Successful!', + 取消删除: 'Cancel Deletion!', + }, + SiteRecord: { + 位点记录列表: 'Site Record List', + 查询日期: 'Query Date', + 至: 'To', + 开始时间: 'Start Time', + 结束时间: 'End Time', + 打印: 'Print', + 导出: 'Export', + 序号: 'Serial Number', + 透析单日期: 'Dialysis Order Date', + 患者姓名: 'Patient Name', + A端位点: 'A-End Site', + V端位点: 'V-End Site', + 透前内瘘: 'Pre-dialysis Arteriovenous Fistula', + 透后内瘘: 'Post-dialysis Arteriovenous Fistula', + 穿刺护士: 'Puncture Nurse', + 操作: 'Action', + 修改: 'Edit', + 修改点位: 'Edit Site', + 请选择: 'Please Select', + 取消: 'Cancel', + 确定: 'Confirm', + 血透中心位点记录单: 'Hemodialysis Center Site Record Form', + 修改成功: 'Edit Successful', + 患者位点记录表: 'Patient Site Record Form', + 该日期透析单已归档禁止修改: 'Dialysis order for this date has been archived and cannot be modified', + }, + ultrasonography: { + 添加超声检查: 'Add Ultrasound Examination', + 添加维护记录: 'Add Maintenance Record', + 添加拔出记录: 'Add Removal Record', + 检查日期: 'Examination Date', + 请选择日期: 'Please Select Date', + 检查部位: 'Examination Site', + 请输入: 'Please Enter', + 检查所见: 'Examination Findings', + 维护项目: "Maintenance items (such as dressing change, tube flushing, tube sealing, etc.)", + 维护时间: "Maintenance Time", + 维护人员: "Maintenance Staff", + 拔出人员: "Extract Staff", + 维护实图: "Actual photos of maintenance on the same day", + 拔出日期: "Extraction date", + 拔出原因: "Reasons for extraction (e.g., end of treatment, difficulty in managing catheter-related complications, etc.)", + 导管完整性检查情况: "Inspection status of catheter integrity", + 患者反应: "Patient's response (presence of discomfort, bleeding, etc.)", + 医生签字: "Doctor's signature", + 请输入检查所见: 'Please Enter Examination Findings', + 备注: 'Remarks', + 上传图片: 'Upload Image', + 上传: 'Upload', + 大小不能超过: 'Size Cannot Exceed', + 取消: 'Cancel', + 保存: 'Save', + 请选择检查日期: 'Please Select Examination Date', + 请输入检查部位: 'Please Enter Examination Site', + 当前限制选择10个文件: 'Current limit is 10 files!', + 图片必须是jpgpng格式: 'Image must be in jpg/png format!', + 图片大小不能超过2MB: 'Image size cannot exceed 2MB!', + 操作成功: 'Operation Successful!', + 超声检查详情: 'Ultrasound Examination Details', + 修改超声检查: 'Edit Ultrasound Examination', + 操作: 'Action', + 确认要删除当前信息: 'Are you sure you want to delete the current information?', + 警告: 'Warning', + 确定: 'Confirm', + 删除成功: 'Deletion Successful!', + 取消删除: 'Cancel Deletion!', + }, + vascularAccessList: { + 血管通路: 'Vascular Access', + 建立日期: 'Establishment Date', + 请选择: 'Please Select', + 通路部位: 'Access Site', + 通路类型: 'Access Type', + 首次启用日期: 'First Use Date', + 流入流出道: 'Inflow-Outflow Path', + 请输入选择: 'Please Enter/Select', + 默认到处方: 'Default to Prescription', + 医生: 'Doctor', + 使用状态: 'Usage Status', + 停用日期: 'Deactivation Date', + 停用原因: 'Deactivation Reason', + 请输入: 'Please Enter', + 备注: 'Remarks', + 以下信息用于国网上报: 'The following information is for national online reporting', + 血管通路位置左右: 'Vascular Access Location (Left-Right)', + 血管通路类型: 'Vascular Access Type', + 其它: 'Other', + 描述: 'Description', + 自体内瘘: 'Autogenous Fistula', + 移植血管: 'Graft', + 血管通路位置: 'Vascular Access Location', + 临时中心静脉置管: 'Temporary Central Venous Catheter', + 长期中心静脉置管: 'Permanent Central Venous Catheter', + 中心静脉置管方法: 'Central Venous Catheterization Method', + 取消: 'Cancel', + 确定: 'Confirm', + 颈V: 'Jugular Vein', + 股V: 'Femoral Vein', + 肱A肱V: 'Brachial Artery-Brachial Vein', + 股A大隐V: 'Femoral Artery-Great Saphenous Vein', + 上臂肱A贵要V: 'Upper Arm Brachial Artery-Prominent Vein', + 肱A上臂头V: 'Brachial Artery-Upper Arm Head Vein', + 桡A贵要V: 'Radial Artery-Prominent Vein', + 尺A贵要V: 'Ulnar Artery-Prominent Vein', + 桡A头V: 'Radial Artery-Head Vein', + 肱动脉穿静脉: 'Brachial Artery-Penetrating Vein', + 肱A肘正中V: 'Brachial Artery-Central Elbow Vein', + 左: 'Left', + 右: 'Right', + 前臂: 'Forearm', + 上臂: 'Upper Arm', + 下肢: 'Lower Limb', + 颈内静脉: 'Internal Jugular Vein', + 股静脉: 'Femoral Vein', + 锁骨下静脉: 'Subclavian Vein', + 颈外静脉: 'External Jugular Vein', + 超声介入: 'Ultrasound Intervention', + X线介入: 'X-ray Intervention', + 盲穿: 'Blind Puncture', + 请选择首次启用日期: 'Please Select First Use Date', + 请选择建立日期: 'Please Select Establishment Date', + 请选择通路部位: 'Please Select Access Site', + 请选择通路类型: 'Please Select Access Type', + 请输入流入流出道: 'Please Enter Inflow-Outflow Path', + 请选择手术医生: 'Please Select Surgeon', + 请选择使用状态: 'Please Select Usage Status', + 请选择停用日期: 'Please Select Deactivation Date', + 请先取消默认到处方: 'Please Cancel Default to Prescription First', + 操作成功: 'Operation Successful', + }, + xgtlTool: { + 血管通路图: 'Vascular Access Diagram', + 更换图片: 'Change Image', + 编辑: 'Edit', + 打印: 'Print', + 保存: 'Save', + 取消: 'Cancel', + 添加说明: 'Add Description', + A端: 'A End', + 点击添加标记: 'Click to Add Marker', + V端: 'V End', + 穿刺角度: 'Puncture Angle', + 卡夫距导管出口距离cm: 'Distance from Cuff to Catheter Exit (cm)', + 动脉端向心穿刺: 'Arterial End Centripetal Puncture', + 动脉端离心穿刺: 'Arterial End Centrifugal Puncture', + 静脉端向心穿刺: 'Venous End Centripetal Puncture', + 手背朝上: 'Dorsum of Hand Up', + 手掌朝上: 'Palm Up', + 虎口朝上: 'Thenar Eminence Up', + 自定义: 'Custom', + 进针方位: 'Needle Insertion Direction', + 辅助工具: 'Auxiliary Tools', + 说明中心点对准穿刺点直线与血管平行时钟刻度为进针方位用A端V端进针方位的箭头指示: + 'Description: Align the center point with the puncture site, the line parallel to the vessel, and the clock scale as the needle insertion direction, indicated by arrows for A End/V End needle insertion directions.', + 查看示意图: 'View Diagram', + 添加文本标记: 'Add Text Marker', + 示意图: 'Diagram', + 图片修改成功: 'Image Successfully Modified', + 你确定要放弃这次编辑的血管通路图: 'Are you sure you want to discard the changes made to the vascular access diagram?', + 提示: 'Reminder', + 确认: 'Confirm', + 你确定要保存这次编辑的血管通路图: 'Are you sure you want to save the changes made to the vascular access diagram?', + 打印日期: 'Print Date', + 肾透血液管理软件血管通路图: 'Dialysis Blood Management Software Vascular Access Diagram', + 患者姓名: 'Patient Name', + 没有启用编辑: 'Editing Not Enabled', + 没有开启编辑状态: 'Editing Status Not Enabled', + }, +}; diff --git a/src/i18n/pages/PatientManage/vascularAccess/index.ts b/src/i18n/pages/PatientManage/vascularAccess/index.ts new file mode 100644 index 0000000..8aa479c --- /dev/null +++ b/src/i18n/pages/PatientManage/vascularAccess/index.ts @@ -0,0 +1,24 @@ +import zhCn from './zh-cn'; +import en from './en'; +import zhTw from './zh-tw'; +import jp from './jp'; +import ms from './ms'; + + +export default { + zhCn: { + ...zhCn + }, + en: { + ...en + }, + zhTw: { + ...zhTw + }, + jp: { + ...jp + }, + ms: { + ...ms, + } +} diff --git a/src/i18n/pages/PatientManage/vascularAccess/jp.ts b/src/i18n/pages/PatientManage/vascularAccess/jp.ts new file mode 100644 index 0000000..9c7a6a5 --- /dev/null +++ b/src/i18n/pages/PatientManage/vascularAccess/jp.ts @@ -0,0 +1,827 @@ +export default { + 血管通路列表: '血管アクセスリスト', + 新建通路: '新しいアクセス作成', + 建立日期: '作成日', + 通路部位: 'アクセス部位', + 通路类型: 'アクセスタイプ', + 流入流出道: '流入-流出経路', + 首次启用日期: '初回使用日', + 默认到处方: '処方へのデフォルト', + 医生: '医師', + 停用日期: '無効日', + 停用原因: '無効理由', + 备注: '備考', + 操作: '操作', + 添加此项: 'この項目を追加', + 操作记录: '操作記録', + 超声检查: '超音波検査', + 通路评估: 'アクセス評価', + 穿刺信息: '穿刺情報', + 导管信息: 'カテーテル情報', + 并发症及处理: '合併症とその処理', + 维护记录: '保守記録', + 拔出记录: '抜去記録', + 内瘘围手术期评估表: '内シャント周術期評価表', + 内瘘成熟评估表: '内シャント成熟評価表', + 内瘘日常评估检查表: '内シャント日常評価チェックリスト', + 内瘘功能障碍狭隘评估表: '内シャント機能障害(狭窄)評価表', + 动静脉内瘘闭塞高危因素评估表: '動静脈シャント閉塞高リスク評価表', + 整体评估: '全体評価', + 未选择患者: '患者が選択されていません!', + 此操作将永久删除该数据是否继续: 'この操作はデータを永久に削除します。続けますか?', + 提示: 'ヒント', + 确认: '確認', + 取消: 'キャンセル', + 删除成功: '削除成功!', + 未选择血管通路: '血管アクセスが選択されていません!', + 本院启用日期: '当院稼働日', + access: { + DJMNLBSGWYSPGB: { + 添加动静脉内瘘闭塞高危因素评估表: '動静脈シャント閉塞高リスク評価表を追加', + 修改动静脉内瘘闭塞高危因素评估表: '動静脈内瘻閉塞ハイリスク因子評価表の修正', + 评估日期: '評価日:', + 请选择: '選択してください', + 评估人: '評価者:', + 项目: '項目', + 选择: '選択', + 危险因素: 'リスク因子', + 标准分: '標準得点', + 血管护理计划: '血管ケア計画', + 一般危险人群: '一般リスク群', + 评估表得分总分: '評価表得点:総得点', + '10分': '10 点', + 护理计划: 'ケア計画', + message1: + '1.血管ケア計画を作成する(内シャントの日常ケア及び血管機能促進の健康教育用紙);患者の血管機能に基づき、握球回数(0-1回/日)、温湿布を1日1回、15分/回実施する。', + message2: '2.透析中に血管機能異常(静脈圧の上昇、止血困難、Qb<200 ml/min)が3回連続で発生した場合、PTA(経皮血管形成術)の実施を検討する。', + 中危险群符合以上任一选项条件者勾选此项: '中リスク群(上記のいずれかの条件に該当する場合にチェック)', + message3: '1.60歳以上、血管の性質がグラフト', + message4: '2.血管条件のスコアが6点', + message5: '3.透析状態の評価に2項目の異常がある', + message6: '4.評価表の総得点が11~20点', + message7: + '1.血管ケア計画を作成する(内シャントの日常ケア及び血管機能促進の健康教育用紙);握球(グラフトを含む)運動を1日2回(朝・晩)、1回50回以上、2回(朝・晩)各15分。', + message8: '2.透析状態の評価異常に基づいて、患者の問題に応じたケア計画(ケア計画書の実施と評価)を行う。', + message9: '*透析中に血管機能異常(静脈圧上昇、止血困難、Qb', + message10: 'が3回連続で異常が発生した場合、PTAの実施を検討する。', + 高危险群符合以下任一选项条件者勾选此项: '高リスク群(以下のいずれかの条件に該当する場合にチェック)', + message11: '1.男性、60歳以上、血管の性質が移植', + message12: '2.血管条件のスコアが8点', + message13: '3.透析状態の評価に3項目以上の異常がある', + message14: '4.評価表の総得点が21点以上', + message15: + '1.血管ケア計画を作成する(内シャントの日常ケア及び血管機能促進の健康教育用紙);握球(グラフトを含む)運動を1日2回(朝・晩)、1回50回以上、2回(朝・晩)各15分。', + message16: '2.透析状態の評価異常に基づいてケア計画(ケア計画書の実施と評価)を行う。', + message17: '*水分過多による透析中低血圧', + message18: '*水分増加>5%', + message19: '*透析中低血圧', + message20: '*透析中血管機能異常(静脈圧上昇、止血困難、Qb', + message21: 'が発生した場合、1回異常が発生するとPTAの実施を検討する。', + 总分: '総得点', + 取消: 'キャンセル', + 保存: '保存', + 性别: '性別', + 男性: '男性', + 年龄: '年齢', + '60岁以上': '60歳以上', + 并发症: '合併症', + 糖尿病: '*糖尿病', + 高血压: '*高血圧', + 低血压: '低血圧(透析前BP<90/60mmHg、月に3回以上)', + 抽烟史: '喫煙歴', + 血管硬化: '血管硬化', + 血管感染史: '血管感染歴', + 心脑血管意外: '心脳血管事故', + 冠心病: '冠動脈疾患', + 血管条件: '血管条件', + 细: '*細い', + 不明显: '*不明確', + 弹性差: '*弾力が悪い', + 有血管阻塞史: '*血管閉塞歴あり', + 血管使用年限小于1年: '*血管使用年数<1年', + 药物使用: '薬物使用', + 降压药: '*降圧薬', + 无肝素透析: '無ヘパリン透析', + 口服抗凝剂: '経口抗凝薬', + 血管护理: '血管ケア', + 未规则握球运动: '*不規則な握球運動', + 未规则局部热敷: '*不規則な局所温熱', + 穿刺前未习惯洗手: '穿刺前に手洗いを習慣としていない', + 每日未检查血管通畅情况: '毎日血管の通過確認を行っていない', + 血管通路: '血管アクセス', + 移植: '移植*', + 穿刺方法: '穿刺方法', + 重复穿刺: '再穿刺', + 不规则纽扣式: '不規則ボタン型', + 蚂蚁式: 'アリ型', + 透析状况: '透析状態', + 水多导致透析低血压: '*水分過多による透析中低血圧(今月透析回数1/4)', + 水分增加5: '*水分増加5%(今月透析回数>1/2)', + 止血不易: '*止血困難(圧迫止血15分以上)', + 内瘘感染: '内シャント感染', + 穿刺困难导致血肿: '穿刺困難による血腫', + 透析中无法维持: 'Qb<200ml/min(透析中維持できない)', + 静脉压高ob200: '静脈圧上昇(Qb=200ml/min、静脈圧>150mmHg)', + 请选择评估时间: '評価日時を選択してください', + 请选择评估人: '評価者を選択してください', + 女性: '女性', + 中危险群: '中リスク群', + 高危险群: '高リスク群', + 操作成功: '操作成功!', + }, + BLCSPGB: { + 添加内瘘成熟评估表: '内シャント成熟評価表を追加', + 修改内瘘成熟评估表: '内シャント成熟評価表を修正', + 评估日期: '評価日', + 请选择: '選択してください', + 评估人: '評価者', + 血流量: '血流量', + 参考值: '参考値', + 血管直径: '血管直径', + 血管距皮距离: '血管皮膚間距離', + 可穿刺血管分支: '穿刺可能な血管分岐(本)', + 主干血管可穿刺长度: '主血管の穿刺可能な長さ', + AVG血清肿是否消退: 'AVG血清腫の消退の有無', + 是否成熟: '成熟しているか', + 取消: 'キャンセル', + 保存: '保存', + 否: 'いいえ', + 是: 'はい', + 请选择评估时间: '評価日時を選択してください', + 请选择评估人: '評価者を選択してください', + 请输入血流量: '血流量を入力してください', + 请输入血管直径: '血管直径を入力してください', + 请输入血管距皮距离: '血管皮膚間距離を入力してください', + 请输入可穿刺血管分支: '穿刺可能な血管分岐を入力してください', + 请输入主干血管可穿刺长度: '主血管の穿刺可能な長さを入力してください', + 请选择AVG血清肿是否消退: 'AVG血清腫の消退の有無を選択してください', + 请选择是否成熟: '成熟しているかを選択してください', + 操作成功: '操作成功!', + }, + NLGNZAPGB: { + 添加内瘘功能障碍评估表: '内シャント機能障害評価表を追加', + 修改内瘘功能障碍评估表: '内シャント機能障害評価表を修正', + 评估日期: '評価日', + 请选择: '選択してください', + 评估人: '評価者', + 评估信息: '評価情報', + 评估标准: '評価基準', + 总分: '総得点', + 备注三分或以上需要报告通路医生进行干预: '備考:3点以上の場合、シャント医師に報告して介入を行う必要があります', + 取消: 'キャンセル', + 保存: '保存', + 无任何表现: '特に症状なし', + 听及狭窄在狭窄区域听到高调音: '狭窄部位で高音が聞こえる', + 静脉压增高大于160: '静脈圧が160mmHg以上', + 可视或扪及明显的狭窄区域: '視認または触診で明らかな狭窄部位がある', + 止血时间延长: '止血時間の延長', + 血流量不足朝向吻合口的穿刺: '吻合口方向で血流量が不足している(穿刺)', + 动静脉下降小于负250: '動静脈圧が-250mmHg未満', + 震颤明显减弱: '震顫が明らかに弱まる', + 内瘘侧肿胀: '内シャント側の腫れ', + 请选择评估时间: '評価時間を選択してください', + 请选择评估人: '評価者を選択してください', + 操作成功: '操作成功!', + 项目: '項目', + 选择: '選択', + 危险因素: '危険因子', + 标准分: '基準点', + 血管护理计划: '血管ケア計画', + 一般危险人群: '一般的な危険群', + 评估表得分: '評価表得点', + 分: '点', + 护理计划: 'ケア計画', + message1: + '1. 血管ケア計画を策定する(内シャントの日常ケアおよび血管機能を促進する健康教育資料);患者の血管機能に基づいて握球回数(0-1回/日)、熱敷は最低1回/日、15分/回を実施する。', + message2: + '2. 透析中の血管機能異常(静脈圧高、止血困難、Qb<200 ml/min)は連続して3回異常が発生した場合、PTA(経皮的血管形成術)の排除について議論する必要がある。', + message3: '中危険群(上記いずれかの条件に該当する場合、チェックを入れてください)', + message4: '1. 60歳以上、血管がGraftである', + message5: '2. 血管の状態得点が6点', + message6: '3. 透析状態評価に2項目の異常がある', + message7: '4. 評価表の得点総合が11〜20点', + message8: + '1. 血管ケア計画を策定する(内シャントの日常ケアおよび血管機能を促進する健康教育資料);握球(Graftを含む)運動は最低2回/日(朝晩)、最低50回/回、2回(朝晩)毎回15分実施する。', + message9: '2. 透析状態評価異常に基づき、患者の問題に対するケア計画(ケア計画書の実施および評価)', + message10: '透析中の血管機能異常(静脈圧高、止血困難、Qb)連続して3回異常が発生した場合、PTAの排除について議論する必要がある。', + 高危险群符合以下任一选项条件者勾选此项: '高危険群(以下のいずれかの条件に該当する場合、チェックを入れてください)', + message11: '1. 男性、60歳以上、血管が移植である', + message12: '2. 血管の状態得点が8点', + message13: '3. 透析状態評価に3項目以上の異常がある', + message14: '4. 評価表の得点総合が21点以上', + message15: + '1. 血管ケア計画を策定する(内シャントの日常ケアおよび血管機能を促進する健康教育資料);握球(Graftを含む)運動は最低2回/日(朝晩)、最低50回/回、2回(朝晩)毎回15分実施する。', + message16: '2. 透析状態評価異常に基づき、ケア計画(ケア計画書の実施および評価)', + message17: '*透析中の血管機能異常(静脈圧高、止血困難、Qb)', + message18: '*水分過剰で透析低血圧', + message19: '*水分増加>5%', + message20: '*透析中の低血圧', + message21: '*透析中の血管機能異常(静脈圧高、止血困難、Qb)', + message22: '異常が1回発生した場合、PTAを実施するかどうかを議論する必要がある。', + 性别: '性別', + 男性: '男性', + 年龄: '年齢', + '60岁以上': '60歳以上', + 并发症: '合併症', + 糖尿病: '糖尿病', + 高血压: '高血圧', + 低血压透析前: '低血圧(透析前BP<90/60mmHg、月3回以上)', + 抽烟史: '喫煙歴', + 血管硬化: '血管硬化', + 血管感染史: '血管感染歴', + 心脑血管意外: '心血管および脳血管の事故', + 冠心病: '冠状動脈疾患', + 血管条件: '血管条件', + 细: '細い', + 不明显: '明確でない', + 弹性差: '弾力性が低い', + 有血管阻塞史: '血管閉塞歴がある', + 血管使用年限小于1年: '血管使用期間<1年', + 药物使用: '薬物使用', + 降压药: '降圧薬', + 无肝素透析: '非ヘパリン透析', + 口服抗凝剂: '経口抗凝固薬', + 血管护理: '血管ケア', + 未规则握球运动: '不規則な握球運動', + 未规则局部热敷: '不規則な局所熱療', + 穿刺前未习惯洗手: '穿刺前に手洗いを習慣化していない', + 每日未检查血管通畅情况: '毎日血管の通過性をチェックしていない', + 血管通路: '血管通路', + 移植: '移植', + 穿刺方法: '穿刺方法', + 重复穿刺: '再穿刺', + 不规则纽扣式: '不規則なボタン式', + 蚂蚁式: '蟻式', + 透析状况: '透析状態', + 水多导致透析低血压当月透析次数: '水分過剰による透析低血圧(今月の透析回数1/4)', + 水分增加5: '水分増加5%(今月の透析回数>1/2)', + 止血不易: '止血が困難(圧迫止血15分以上)', + 内瘘感染: '内シャント感染', + 穿刺困难导致血肿: '穿刺困難による血腫', + 透析中无法维持: '透析中に維持できない(Qb<200ml/min)', + 静脉压高: '静脈圧高(Qb=200ml/min、静脈圧>150mmHg)', + 中危险群: '中危険群', + 高危险群: '高危険群', + 女性: '女性', + }, + NLRCPGJCB: { + 添加内瘘日常评估检查表: '内シャント日常評価チェックリストを追加', + 修改内瘘日常评估检查表: '内シャント日常評価チェックリストを修正', + 评估日期: '評価日', + 请选择: '選択してください', + 评估人: '評価者', + 肢体肿胀: '肢体の腫れ', + 穿刺困难: '穿刺困難', + 拔针后出血时间延长: '抜針後の出血時間延長', + ktv在线或urr下降: 'Kt/v(オンライン)またはURR(毎月)の低下', + 达到处方血流量: '処方血流量の達成', + 血管窃血症或疼痛: '血管盗血症または痛み', + 感染征红肿痛脓点发热: '感染徴候:発赤、腫れ、痛み、膿点、発熱', + 透析中渗血: '透析中の漏血', + 动脉瘤形成: '動脈瘤形成', + 抬臂试验正常: '腕挙上テスト正常', + 其他: 'その他', + 请输入: '入力してください', + 汇报医生或通路组员: '報告する医師またはアクセスチームメンバー', + 取消: 'キャンセル', + 保存: '保存', + 否: 'いいえ', + 是: 'はい', + 操作成功: '操作成功!', + }, + NLWSSQPGB: { + 添加内瘘围手术期评估表: '内シャント術前後評価表を追加', + 修改内瘘围手术期评估表: '内シャント術前後評価表を修正', + 评估日期: '評価日:', + 请选择: '選択してください', + 评估人: '評価者', + 动脉: '動脈', + 搏动: '拍動', + 掌深弓通畅: '掌深弓の通暢', + 掌浅弓通畅: '掌浅弓の通暢', + 血压测量差异: '血圧測定差異:', + 内径值远心端: '内径値(遠心端)(mm)', + 内径值近心端: '内径値(近心端)(mm)', + 参考值: '参考値', + 静脉: '静脈', + 与中心静脉是否连续: '中心静脈と連続しているか', + 是否狭窄: '狭窄しているか', + 是否堵塞: '閉塞しているか', + 内径值: '内径値', + allen实验: 'アレンテスト', + 术后评估: '術後評価', + 手掌肿胀: '手掌の腫れ', + 伤口渗血: '創部の漏血', + 取消: 'キャンセル', + 保存: '保存', + 强: '強', + 弱: '弱', + 否: 'いいえ', + 是: 'はい', + 高于对侧: '対側より高い', + 低于对侧: '対側より低い', + 阳性五秒内恢复颜色: '陽性(5秒以内に色が回復)', + 阴性颜色恢复延迟: '陰性(色が回復するのが遅い)', + 请选择评估时间: '評価時間を選択してください', + 请选择评估人: '評価者を選択してください', + 请选择搏动: '拍動を選択してください', + 请选择掌深弓通畅: '掌深弓の通暢を選択してください', + 请选择掌浅弓通畅: '掌浅弓の通暢を選択してください', + 请选择血压测量差异: '血圧測定差異を選択してください', + 请输入内径值远心端: '内径値(遠心端)を入力してください', + 请输入内径值近心端: '内径値(近心端)を入力してください', + 请选择与中心静脉是否连续: '中心静脈と連続しているかを選択してください', + 请选择是否狭窄: '狭窄しているかを選択してください', + 请选择是否堵塞: '閉塞しているかを選択してください', + 请输入内径值: '内径値を入力してください', + 请选择allen实验: 'アレンテストを選択してください', + 请选择手掌肿胀: '手掌の腫れを選択してください', + 请选择伤口渗血: '創部の漏血を選択してください', + 请选择内瘘通畅: '内シャントの通暢を選択してください', + 操作成功: '操作成功!', + }, + ZTPGB: { + 添加整体评估表: '全体評価表を追加', + 修改整体评估表: '全体評価表を修正', + 评估日期: '評価日:', + 请选择: '選択してください', + 评估人: '評価者:', + 项目: '項目:', + 请输入: '入力してください', + 结果: '結果:', + 处理: '処置:', + 取消: 'キャンセル', + 保存: '保存', + 否: 'いいえ', + 是: 'はい', + 请选择评估时间: '評価時間を選択してください', + 请选择评估人: '評価者を選択してください', + 操作成功: '操作成功!', + }, + NLBSGWYSPGBIndex: { + 评估时间: '評価時間', + 评估人: '評価者', + 性别: '性別', + 年龄: '年齢', + 并发症: '合併症', + 血管条件: '血管状態', + 药物使用: '薬物使用', + 血管护理: '血管ケア', + 血管通路: '血管アクセス', + 穿刺方法: '穿刺方法', + 透析状况评估: '透析状態評価', + 总分: '総得点', + 血管护理计划与措施: '血管ケア計画と措置', + 操作: '操作', + 确认要删除当前信息: '現在の情報を削除してもよろしいですか?', + 警告: '警告', + 确定: '確認', + 取消: 'キャンセル', + 删除成功: '削除成功!', + 取消删除: '削除キャンセル!', + }, + NLCSPGBIndex: { + 评估时间: '評価時間', + 评估人: '評価者', + 血流量: '血流量', + 血管直径: '血管径', + 血管距皮距离: '血管皮膚距離', + 可穿刺血管分支: '穿刺可能な血管分岐(本)', + 主干血管可穿刺长度: '主血管の穿刺可能長さ(cm)', + AVG血清肿是否消退: 'AVG血清腫の退縮の有無', + 是: 'はい', + 否: 'いいえ', + 是否成熟: '成熟しているか', + 操作: '操作', + 确认要删除当前信息: '現在の情報を削除してもよろしいですか?', + 警告: '警告', + 确定: '確認', + 取消: 'キャンセル', + 删除成功: '削除成功!', + 取消删除: '削除キャンセル!', + }, + NLGNZAPGBIndex: { + 评估时间: '評価時間', + 评估人: '評価者', + 无任何表现: '特に異常なし', + 听及狭窄在狭窄区域听到高调音: '狭窄音:狭窄部位で高音を聞く', + 静脉压增高大于170: '静脈圧増加>170mmHg', + 可视或扪及明显的狭窄区域: '視認または触診で明らかな狭窄部位', + 止血时间延长: '止血時間延長', + 血流量不足朝向吻合口的穿刺: '血流量不足(吻合口に向かう穿刺)', + 动静脉下降250: '動静脈圧下降<-250mmHg', + 震颤明显减弱: '震動の顕著な減弱', + 内瘘侧肿胀: '内瘘側の腫れ', + 总分: '総得点', + 操作: '操作', + 确认要删除当前信息: '現在の情報を削除してもよろしいですか?', + 警告: '警告', + 确定: '確認', + 取消: 'キャンセル', + 删除成功: '削除成功!', + 取消删除: '削除キャンセル', + }, + NLRCPGJCBIndex: { + 评估时间: '評価時間', + 评估人: '評価者', + 肢体肿胀: '肢体の腫れ', + 是: 'はい', + 否: 'いいえ', + 穿刺困难: '穿刺困難', + 拔针后出血时间延长: '抜針後の出血時間延長', + ktv在线URR下降: 'Kt/v(オンライン)またはURR(毎月)の低下', + 达到处方血流量: '処方された血流量に到達', + 血管窃血症或疼痛: '血管窃血症または痛み', + 感染征红肿痛脓点发热: '感染の兆候: 赤み、腫れ、痛み、膿点、発熱', + 透析中渗血: '透析中の浸出血', + 动脉瘤形成: '動脈瘤の形成', + 抬臂试验正常: '腕挙上試験正常', + 其他: 'その他', + 汇报医生或通路组员: '担当医師またはアクセスチームに報告', + 操作: '操作', + 确认要删除当前信息: '現在の情報を削除してもよろしいですか?', + 警告: '警告', + 确定: '確認', + 取消: 'キャンセル', + 删除成功: '削除成功!', + 取消删除: '削除キャンセル', + }, + NLWSSQPGBIndex: { + 评估时间: '評価時間', + 评估人: '評価者', + 搏动: '脈拍', + 强: '強い', + 弱: '弱い', + 掌深弓通畅: '掌深弓の通暢', + 是: 'はい', + 否: 'いいえ', + 掌浅弓通畅: '掌浅弓の通暢', + 血压测量差异: '血圧測定の差異', + 高与对侧: '対側より高い', + 低于对侧: '対側より低い', + 内径值远心端: '内径値(遠心端)', + 内径值近心端: '内径値(近心端)', + 与中心静脉是否连续: '中心静脈と連続しているか', + 是否狭窄: '狭窄があるか', + 是否堵塞: '閉塞があるか', + 内径值: '内径値', + allen实验: 'アレンテスト', + 阳性五秒内恢复颜色: '陽性(5秒以内に色が回復)', + 阴性颜色恢复延迟: '陰性(色が回復するのが遅い)', + 手掌肿胀: '手のひらの腫れ', + 伤口渗血: '傷口からの浸出血', + 内瘘通畅: '内瘘の通暢', + 操作: '操作', + 确认要删除当前信息: '現在の情報を削除してもよろしいですか?', + 警告: '警告', + 确定: '確認', + 取消: 'キャンセル', + 删除成功: '削除成功!', + 取消删除: '削除キャンセル!', + }, + ZTPGIndex: { + 评估时间: '評価時間', + 评估人: '評価者', + 项目: 'プロジェクト', + 结果: '結果', + 处理: '処理', + 操作: '操作', + 确认要删除当前信息: '現在の情報を削除してもよろしいですか?', + 警告: '警告', + 确定: '確認', + 取消: 'キャンセル', + 删除成功: '削除成功!', + 取消删除: '削除キャンセル!', + }, + }, + complication: { + 添加并发症: '合併症の追加', + 添加日期: '追加日:', + 请选择: '選択してください', + 并发症: '合併症:', + 并发症症状: '合併症の症状:', + 请输入并发症症状: '合併症の症状を入力してください', + 并发症处理: '合併症の処置:', + 请输入并发症处理: '合併症の処置を入力してください', + 取消: 'キャンセル', + 保存: '保存', + 请选择添加日期: '追加日を選択してください', + 请选择并发症: '合併症を選択してください', + 操作成功: '操作が成功しました!', + 修改并发症: '合併症の変更', + 确认要删除当前信息: '現在の情報を削除してもよろしいですか?', + 警告: '警告', + 确定: '確認', + 删除成功: '削除成功!', + 取消删除: '削除キャンセル!', + 操作: '操作', + }, + pipe: { + 添加导管信息: 'カテーテル情報の追加', + 导管日期: 'カテーテル日付:', + 请选择: '選択してください', + 卡夫距导管出口距离: 'カフとカテーテル出口の距離', + 导管体外段靠近中线: 'カテーテル外部部分が中心線に近い', + 渗血: '血液漏れ', + 渗液: '液体漏れ', + 导管周围脓红肿: 'カテーテル周囲の膿/発赤腫れ', + A端功能: 'A端機能', + V端功能: 'V端機能', + 通路连接: '通路接続', + 血流量: '血流量', + A端导管容量: 'A端カテーテル容量', + V端导管容量: 'V端カテーテル容量', + 护士: '看護師', + 取消: 'キャンセル', + 保存: '保存', + A端: 'A端', + V端: 'V端', + 否: 'いいえ', + 陈旧性渗血: '古い血液漏れ', + 压迫止血: '圧迫止血', + 缝合止血: '縫合止血', + 是: 'はい', + 畅通: '通畅', + 出畅进不畅: '出通畅進不通畅', + 进畅出不畅: '進通畅出不通畅', + 不畅通: '通畅しない', + 正接: '正接続', + 反接: '逆接続', + 请选择导管时间: 'カテーテル時間を選択してください', + 请输入卡夫距导管出口距离: 'カフとカテーテル出口の距離を入力してください', + 请选择导管体外段靠近中线: 'カテーテル外部部分が中心線に近いか選択してください', + 请选择渗血: '血液漏れを選択してください', + 请选择渗液: '液体漏れを選択してください', + 请选择导管周围脓红肿: 'カテーテル周囲の膿/発赤腫れを選択してください', + 请选择A端功能: 'A端機能を選択してください', + 请选择V端功能: 'V端機能を選択してください', + 请选择通路连接: '通路接続を選択してください', + 请输入血流量: '血流量を入力してください', + 请输入A端导管容量: 'A端カテーテル容量を入力してください', + 请输入V端导管容量: 'V端カテーテル容量を入力してください', + 请选择护士: '看護師を選択してください', + 操作成功: '操作が成功しました!', + 修改导管信息: 'カテーテル情報の変更', + AV导管容量: 'A/Vカテーテル容量', + 操作: '操作', + 确认要删除当前信息: '現在の情報を削除してもよろしいですか?', + }, + puncture: { + 添加穿刺信息: '穿刺情報の追加', + 穿刺信息: '穿刺情報', + 穿刺日期: '穿刺日付:', + 请选择: '選択してください', + A端穿刺方法: 'A端穿刺方法', + V端穿刺方法: 'V端穿刺方法', + A端穿刺类型: 'A端穿刺タイプ', + V端穿刺类型: 'V端穿刺タイプ', + A端穿刺针型号: 'A端穿刺針型番', + V端穿刺针型号: 'V端穿刺針型番', + A端穿刺点距吻合口距离: 'A端穿刺点から吻合部までの距離', + AtV端穿刺点距吻合口距离: 'AtV端穿刺点から吻合部までの距離', + V端位于分支管: 'V端が分岐血管に位置', + 一次成功: '一回で成功', + 静脉压: '静脈圧', + 血流量: '血流量', + 穿刺护士: '穿刺看護師', + 穿刺护士职称: '穿刺看護師職位', + 压迫止血记录: '圧迫止血記録', + 压迫止血时间: '圧迫止血時間', + 红色A端绑带长度: '赤色(A端)バンド長', + 蓝色V端绑带长度: '青色(V端)バンド長', + 手腕周长: '手首周囲長', + 红色棉球起点: '赤色綿球起点', + 蓝色棉球起点: '青色綿球起点', + 红色止血时间: '赤色止血時間', + 蓝色止血时间: '青色止血時間', + 红色止血刻度: '赤色止血スケール', + 蓝色止血刻度: '青色止血スケール', + 红色调整刻度: '赤色調整スケール', + 蓝色调整刻度: '青色調整スケール', + 取消: 'キャンセル', + 保存: '保存', + 扣眼法: 'ボタンホール法', + 绳梯法: 'ロープラダー法', + 区域法: 'ゾーン法', + 中心v导管: '中心静脈カテーテル', + 钝针: '鈍針', + 锐针: '鋭針', + 套管针: 'カニューレ針', + 十七号: '17G', + 十六号: '16G', + 十五号: '15G', + 是: 'はい', + 否: 'いいえ', + 白: '白', + 黄: '黄', + 请选择穿刺日期: '穿刺日付を選択してください', + 请选择A端穿刺方法: 'A端穿刺方法を選択してください', + 请选择V端穿刺方法: 'V端穿刺方法を選択してください', + 请选择A端穿刺类型: 'A端穿刺タイプを選択してください', + 请选择V端穿刺类型: 'V端穿刺タイプを選択してください', + 请选择A端穿刺针型号: 'A端穿刺針型番を選択してください', + 请选择V端穿刺针型号: 'V端穿刺針型番を選択してください', + 请输入A端穿刺点距吻合口距离: 'A端穿刺点から吻合部までの距離を入力してください', + 请输入AtV端两穿刺点间距离: 'AtV端の2つの穿刺点間の距離を入力してください', + 请选择V端是否位于分支血管: 'V端が分岐血管に位置するか選択してください', + 请选择是否一次成功: '一回で成功したか選択してください', + 请输入静脉压: '静脈圧を入力してください', + 请输入血流量: '血流量を入力してください', + 请选择穿刺护士: '穿刺看護師を選択してください', + 请选择穿刺护士职称: '穿刺看護師職位を選択してください', + 请选择压迫止血时间: '圧迫止血時間を選択してください', + 请输入红色A端绑带长度: '赤色(A端)バンド長を入力してください', + 请输入蓝色V端绑带长度: '青色(V端)バンド長を入力してください', + 请输入手腕周长: '手首周囲長(cm)を入力してください', + 请选择红色棉球起点: '赤色綿球起点を選択してください', + 请选择蓝色棉球起点: '青色綿球起点を選択してください', + 请输入红色止血时间: '赤色止血時間(min)を入力してください', + 请输入蓝色止血时间: '青色止血時間(min)を入力してください', + 请输入红色止血刻度: '赤色止血スケールを入力してください', + 请输入蓝色止血刻度: '青色止血スケールを入力してください', + 请输入红色调整刻度: '赤色調整スケールを入力してください', + 请输入蓝色调整刻度: '青色調整スケールを入力してください', + 操作成功: '操作が成功しました!', + 修改穿刺信息: '穿刺情報の変更', + 压迫止血记录表: '圧迫止血記録表', + 穿刺方法A端V端: '穿刺方法(A端/V端)', + 穿刺类型A端V端: '穿刺タイプ(A端/V端)', + 穿刺针型号A端V端: '穿刺針型番(A端/V端)', + 查看表单: 'フォームを確認', + 操作: '操作', + 确认要删除当前信息: '現在の情報を削除してもよろしいですか?', + 警告: '警告', + 确定: '確定', + 删除成功: '削除が成功しました!', + 取消删除: '削除をキャンセルしました!', + }, + SiteRecord: { + 位点记录列表: '部位記録リスト', + 查询日期: '検索日', + 至: '~', + 开始时间: '開始時間', + 结束时间: '終了時間', + 打印: '印刷', + 导出: 'エクスポート', + 序号: '番号', + 透析单日期: '透析記録日', + 患者姓名: '患者氏名', + A端位点: 'A端部位', + V端位点: 'V端部位', + 透前内瘘: '透析前内シャント', + 透后内瘘: '透析後内シャント', + 穿刺护士: '穿刺看護師', + 操作: '操作', + 修改: '編集', + 修改点位: '部位の編集', + 请选择: '選択してください', + 取消: 'キャンセル', + 确定: '確定', + 血透中心位点记录单: '血液透析センター部位記録表', + 修改成功: '編集成功', + 患者位点记录表: '患者部位記録表', + 该日期透析单已归档禁止修改: '該当日の透析記録はアーカイブされ、編集禁止', + }, + ultrasonography: { + 添加超声检查: '超音波検査を追加', + 添加维护记录: 'メンテナンス記録を追加する', + 添加拔出记录: '抜取り記録を追加する', + 检查日期: '検査日', + 请选择日期: '日付を選択してください', + 检查部位: '検査部位', + 请输入: '入力してください', + 检查所见: '検査所見', + 维护项目: "保守項目(換薬、チューブ洗浄、チューブ封鎖など)", + 维护时间: "保守時間", + 维护人员: "保守要員", + 拔出人员: "抜く要員", + 维护实图: "当日の保守実写", + 拔出日期: "抜去日", + 拔出原因: "抜去理由(治療終了、カテーテル関連合併症の処理困難など)", + 导管完整性检查情况: "カテーテルの完全性検査状況", + 患者反应: "患者の反応(不快感、出血の有無など)", + 医生签字: "医師の署名", + 请输入检查所见: '検査所見を入力してください', + 备注: '備考', + 上传图片: '画像をアップロード', + 上传: 'アップロード', + 大小不能超过: 'サイズ制限', + 取消: 'キャンセル', + 保存: '保存', + 请选择检查日期: '検査日を選択してください', + 请输入检查部位: '検査部位を入力してください', + 当前限制选择10个文件: '現在、最大10ファイルまで選択可能!', + 图片必须是jpgpng格式: '画像は JPG または PNG 形式のみ対応!', + 图片大小不能超过2MB: '画像サイズは 2MB 以下にしてください!', + 操作成功: '操作成功!', + 超声检查详情: '超音波検査詳細', + 修改超声检查: '超音波検査を編集', + 操作: '操作', + 确认要删除当前信息: '現在の情報を削除してもよろしいですか?', + 警告: '警告', + 确定: '確定', + 删除成功: '削除成功!', + 取消删除: '削除をキャンセル!', + }, + vascularAccessList: { + 血管通路: '血管アクセス', + 建立日期: '作成日', + 请选择: '選択してください', + 通路部位: 'アクセス部位', + 通路类型: 'アクセス種類', + 首次启用日期: '初回使用日', + 流入流出道: '流入-流出路', + 请输入选择: '入力/選択してください', + 默认到处方: 'デフォルト処方', + 医生: '医師', + 使用状态: '使用状態', + 停用日期: '使用停止日', + 停用原因: '使用停止理由', + 请输入: '入力してください', + 备注: '備考', + 以下信息用于国网上报: '以下の情報は国への報告に使用されます', + 血管通路位置左右: '血管アクセス位置 (左-右)', + 血管通路类型: '血管アクセス種類', + 其它: 'その他', + 描述: '説明', + 自体内瘘: '自家内シャント', + 移植血管: '移植血管', + 血管通路位置: '血管アクセス位置', + 临时中心静脉置管: '一時的中心静脉カテーテル', + 长期中心静脉置管: '長期中心静脉カテーテル', + 中心静脉置管方法: '中心静脉カテーテル挿入方法', + 取消: 'キャンセル', + 确定: '確定', + 颈V: '頸静脈', + 股V: '大腿静脈', + 肱A肱V: '上腕動脈-上腕静脈', + 股A大隐V: '大腿動脈-大伏在静脈', + 上臂肱A贵要V: '上腕動脈-尺側皮静脈', + 肱A上臂头V: '上腕動脈-橈側皮静脈', + 桡A贵要V: '橈骨動脈-尺側皮静脈', + 尺A贵要V: '尺骨動脈-尺側皮静脈', + 桡A头V: '橈骨動脈-橈側皮静脈', + 肱动脉穿静脉: '上腕動脈-穿通静脈', + 肱A肘正中V: '上腕動脈-肘正中静脈', + 左: '左', + 右: '右', + 前臂: '前腕', + 上臂: '上腕', + 下肢: '下肢', + 颈内静脉: '内頸静脈', + 股静脉: '大腿静脈', + 锁骨下静脉: '鎖骨下静脈', + 颈外静脉: '外頸静脈', + 超声介入: '超音波ガイド下介入', + X线介入: 'X線ガイド下介入', + 盲穿: 'ブラインド穿刺', + 请选择首次启用日期: '初回使用日を選択してください', + 请选择建立日期: '作成日を選択してください', + 请选择通路部位: 'アクセス部位を選択してください', + 请选择通路类型: 'アクセス種類を選択してください', + 请输入流入流出道: '流入-流出路を入力してください', + 请选择手术医生: '執刀医を選択してください', + 请选择使用状态: '使用状態を選択してください', + 请选择停用日期: '使用停止日を選択してください', + 请先取消默认到处方: 'デフォルト処方を先に解除してください', + 操作成功: '操作成功', + }, + xgtlTool: { + 血管通路图: '血管アクセス図', + 更换图片: '画像を変更', + 编辑: '編集', + 打印: '印刷', + 保存: '保存', + 取消: 'キャンセル', + 添加说明: '説明を追加', + A端: 'A端', + 点击添加标记: 'クリックしてマークを追加', + V端: 'V端', + 穿刺角度: '穿刺角度', + 卡夫距导管出口距离cm: 'カフからカテーテル出口までの距離(cm)', + 动脉端向心穿刺: '動脈端 向心穿刺', + 动脉端离心穿刺: '動脈端 遠心穿刺', + 静脉端向心穿刺: '静脈端 向心穿刺', + 手背朝上: '手の甲を上に', + 手掌朝上: '手のひらを上に', + 虎口朝上: '親指と人差し指の間を上に', + 自定义: 'カスタム', + 进针方位: '穿刺方向', + 辅助工具: '補助ツール', + 说明中心点对准穿刺点直线与血管平行时钟刻度为进针方位用A端V端进针方位的箭头指示: + '説明: 中心点を穿刺点に合わせ、直線を血管と平行にし、時計の目盛りを穿刺方向としてA端/V端の矢印で指示。', + 查看示意图: '示意図を見る', + 添加文本标记: 'テキストマークを追加', + 示意图: '示意図', + 图片修改成功: '画像の変更が成功しました', + 你确定要放弃这次编辑的血管通路图: '今回の血管アクセス図の編集を放棄してもよろしいですか?', + 提示: 'ヒント', + 确认: '確認', + 你确定要保存这次编辑的血管通路图: '今回の血管アクセス図の編集を保存してもよろしいですか?', + 打印日期: '印刷日', + 肾透血液管理软件血管通路图: '腎透析血液管理ソフトウェア 血管アクセス図', + 患者姓名: '患者名', + 没有启用编辑: '編集が有効になっていません', + 没有开启编辑状态: '編集モードが有効になっていません', + }, +}; diff --git a/src/i18n/pages/PatientManage/vascularAccess/ms.ts b/src/i18n/pages/PatientManage/vascularAccess/ms.ts new file mode 100644 index 0000000..afa93fb --- /dev/null +++ b/src/i18n/pages/PatientManage/vascularAccess/ms.ts @@ -0,0 +1,822 @@ +export default { + 血管通路列表: 'Senarai Akses Vaskular', + 新建通路: 'Cipta Akses Baharu', + 建立日期: 'Tarikh Penubuhan', + 通路部位: 'Lokasi Akses', + 通路类型: 'Jenis Akses', + 流入流出道: 'Saluran Masuk-Keluar', + 首次启用日期: 'Tarikh Penggunaan Pertama', + 默认到处方: 'Tetapan Lalai ke Preskripsi', + 医生: 'Doktor', + 停用日期: 'Tarikh Penamatan', + 停用原因: 'Sebab Penamatan', + 备注: 'Catatan', + 操作: 'Operasi', + 添加此项: 'Tambah Item Ini', + 操作记录: 'Rekod operasi', + 超声检查: 'Pemeriksaan Ultrasonografi', + 通路评估: 'Penilaian Akses', + 穿刺信息: 'Maklumat Tusukan', + 导管信息: 'Maklumat Kateter', + 并发症及处理: 'Komplikasi dan Pengurusan', + 维护记录: 'Rekod penyelenggaraan', + 拔出记录: 'Rekod penarikan', + 内瘘围手术期评估表: 'Borang Penilaian Pra-Pasca Pembedahan Fistula AV', + 内瘘成熟评估表: 'Borang Penilaian Kematangan Fistula AV', + 内瘘日常评估检查表: 'Borang Pemeriksaan Harian Fistula AV', + 内瘘功能障碍狭隘评估表: 'Borang Penilaian Disfungsi (Stenosis) Fistula AV', + 动静脉内瘘闭塞高危因素评估表: 'Borang Penilaian Faktor Risiko Oklusi Fistula AV', + 整体评估: 'Penilaian Keseluruhan', + 未选择患者: 'Tiada Pesakit Dipilih!', + 此操作将永久删除该数据是否继续: 'Tindakan ini akan memadamkan data secara kekal. Teruskan?', + 提示: 'Peringatan', + 确认: 'Sahkan', + 取消: 'Batal', + 删除成功: 'Berjaya Dipadam!', + 未选择血管通路: 'Tiada Akses Vaskular Dipilih!', + 本院启用日期: 'Tarikh Pengaktifan Hospital', + access: { + DJMNLBSGWYSPGB: { + 添加动静脉内瘘闭塞高危因素评估表: 'Tambah Borang Penilaian Faktor Risiko Oklusi Fistula AV', + 修改动静脉内瘘闭塞高危因素评估表: 'Mengubah semula jadual penilaian faktor risiko tinggi obstruksi fistula intravena', + 评估日期: 'Tarikh Penilaian:', + 请选择: 'Sila Pilih', + 评估人: 'Penilai:', + 项目: 'Item', + 选择: 'Pilih', + 危险因素: 'Faktor Risiko', + 标准分: 'Skor Piawai', + 血管护理计划: 'Pelan Penjagaan Vaskular', + 一般危险人群: 'Kumpulan Berisiko Umum', + 评估表得分总分: 'Skor Borang Penilaian: Jumlah Skor', + '10分': '10 Mata', + 护理计划: 'Pelan Penjagaan', + message1: + '1. Menyediakan pelan penjagaan vaskular (pendidikan kesihatan mengenai penjagaan harian fistula AV dan cara meningkatkan fungsi vaskular); menentukan kekerapan genggaman bola berdasarkan keadaan vaskular pesakit (0-1 kali/hari), rawatan haba sekurang-kurangnya sekali/hari selama 15 minit setiap sesi.', + message2: + '2. Jika terdapat gangguan fungsi vaskular semasa dialisis (tekanan vena tinggi, sukar menghentikan pendarahan, Qb<200 ml/min) dan berlaku secara berterusan sebanyak 3 kali, perlu mempertimbangkan sama ada untuk melakukan PTA (Angioplasti Transluminal Perkutan).', + 中危险群符合以上任一选项条件者勾选此项: 'Kumpulan Berisiko Sederhana (Tandakan jika memenuhi mana-mana kriteria di atas)', + message3: '1. Berumur 60 tahun ke atas, jenis vaskular Graft', + message4: '2. Skor keadaan vaskular adalah 6 mata', + message5: '3. Penilaian status dialisis menunjukkan 2 ketidaknormalan', + message6: '4. Jumlah skor borang penilaian adalah 11-20 mata', + message7: + '1. Menyediakan pelan penjagaan vaskular (pendidikan kesihatan mengenai penjagaan harian fistula AV dan cara meningkatkan fungsi vaskular); senaman genggaman bola (termasuk Graft) sekurang-kurangnya 2 kali/hari (pagi dan malam), sekurang-kurangnya 50 kali/sesi dengan 2 sesi (pagi dan malam), setiap sesi selama 15 minit.', + message8: + '2. Jika status dialisis menunjukkan ketidaknormalan, rancangkan penjagaan berdasarkan masalah pesakit (laksanakan dan nilai pelan penjagaan).', + message9: '*Gangguan fungsi vaskular semasa dialisis (tekanan vena tinggi, sukar menghentikan pendarahan, Qb', + message10: 'Jika berlaku gangguan sebanyak 3 kali berturut-turut, perlu mempertimbangkan sama ada untuk melakukan PTA.', + 高危险群符合以下任一选项条件者勾选此项: 'Kumpulan Berisiko Tinggi (Tandakan jika memenuhi mana-mana kriteria berikut)', + message11: '1. Lelaki, berumur 60 tahun ke atas, jenis vaskular transplantasi', + message12: '2. Skor keadaan vaskular adalah 8 mata', + message13: '3. Penilaian status dialisis menunjukkan lebih daripada 3 ketidaknormalan', + message14: '4. Jumlah skor borang penilaian adalah lebih daripada 21 mata', + message15: + '1. Menyediakan pelan penjagaan vaskular (pendidikan kesihatan mengenai penjagaan harian fistula AV dan cara meningkatkan fungsi vaskular); senaman genggaman bola (termasuk Graft) sekurang-kurangnya 2 kali/hari (pagi dan malam), sekurang-kurangnya 50 kali/sesi dengan 2 sesi (pagi dan malam), setiap sesi selama 15 minit.', + message16: '2. Jika status dialisis menunjukkan ketidaknormalan, laksanakan dan nilai pelan penjagaan.', + message17: '*Pengambilan cecair berlebihan menyebabkan hipotensi semasa dialisis', + message18: '*Peningkatan cecair badan >5%', + message19: '*Hipotensi semasa dialisis', + message20: '*Gangguan fungsi vaskular semasa dialisis (tekanan vena tinggi, sukar menghentikan pendarahan, Qb', + message21: 'Jika berlaku satu gangguan sahaja, perlu mempertimbangkan sama ada untuk melakukan PTA.', + 总分: 'Jumlah Skor', + 取消: 'Batal', + 保存: 'Simpan', + 性别: 'Jantina', + 男性: 'Lelaki', + 年龄: 'Umur', + '60岁以上': '60 Tahun Ke Atas', + 并发症: 'Komplikasi', + 糖尿病: '*Diabetes', + 高血压: '*Hipertensi', + 低血压: 'Hipotensi (BP pra-dialisis <90/60mmHg, lebih daripada 3 kali/bulan)', + 抽烟史: 'Sejarah Merokok', + 血管硬化: 'Aterosklerosis', + 血管感染史: 'Sejarah Jangkitan Vaskular', + 心脑血管意外: 'Kejadian Kardiovaskular dan Serebrovaskular', + 冠心病: 'Penyakit Jantung Koronari', + 血管条件: 'Keadaan Vaskular', + 细: '*Halus', + 不明显: '*Tidak Jelas', + 弹性差: '*Kurang Elastik', + 有血管阻塞史: '*Sejarah Oklusi Vaskular', + 血管使用年限小于1年: '*Penggunaan Vaskular <1 Tahun', + 药物使用: 'Penggunaan Ubat', + 降压药: '*Ubat Hipertensi', + 无肝素透析: 'Dialisis Tanpa Heparin', + 口服抗凝剂: 'Antikoagulan Oral', + 血管护理: 'Penjagaan Vaskular', + 未规则握球运动: '*Senaman Genggaman Bola Tidak Teratur', + 未规则局部热敷: '*Rawatan Haba Tempatan Tidak Teratur', + 穿刺前未习惯洗手: 'Tidak Biasa Mencuci Tangan Sebelum Tusukan', + 每日未检查血管通畅情况: 'Tidak Memeriksa Keterbukaan Vaskular Setiap Hari', + 血管通路: 'Akses Vaskular', + 移植: 'Transplantasi*', + 穿刺方法: 'Kaedah Tusukan', + 重复穿刺: 'Tusukan Berulang', + 不规则纽扣式: 'Kaedah Butang Tidak Teratur', + 蚂蚁式: 'Kaedah Semut', + 透析状况: 'Keadaan Dialisis', + 水多导致透析低血压: '*Pengambilan Cecair Berlebihan Menyebabkan Hipotensi Semasa Dialisis (1/4 Sesi Dialisis Bulanan)', + 水分增加5: '*Peningkatan Cecair 5% (Lebih Daripada 1/2 Sesi Dialisis Bulanan)', + 止血不易: '*Sukar Menghentikan Pendarahan (Tekanan Hemostatik Melebihi 15 Minit)', + 内瘘感染: 'Jangkitan Fistula AV', + 穿刺困难导致血肿: 'Kesukaran Tusukan Menyebabkan Hematoma', + 透析中无法维持: 'Qb<200ml/min (Tidak Dapat Dikekalkan Semasa Dialisis)', + 静脉压高ob200: 'Tekanan Vena Tinggi (Qb=200ml/min, Tekanan Vena >150mmHg)', + 请选择评估时间: 'Sila Pilih Masa Penilaian', + 请选择评估人: 'Sila Pilih Penilai', + 女性: 'Wanita', + 中危险群: 'Kumpulan Berisiko Sederhana', + 高危险群: 'Kumpulan Berisiko Tinggi', + 操作成功: 'Operasi Berjaya!', + }, + BLCSPGB: { + 添加内瘘成熟评估表: 'Tambah Borang Penilaian Kematangan Fistula AV', + 修改内瘘成熟评估表: 'Ubah Borang Penilaian Kematangan Fistula AV', + 评估日期: 'Tarikh Penilaian', + 请选择: 'Sila Pilih', + 评估人: 'Penilai', + 血流量: 'Aliran Darah', + 参考值: 'Nilai Rujukan', + 血管直径: 'Diameter Vaskular', + 血管距皮距离: 'Jarak Vaskular ke Kulit', + 可穿刺血管分支: 'Cabang Vaskular Boleh Ditusuk (bilangan)', + 主干血管可穿刺长度: 'Panjang Vaskular Utama Boleh Ditusuk', + AVG血清肿是否消退: 'Adakah Bengkak Serum AVG Berkurang?', + 是否成熟: 'Adakah Matang?', + 取消: 'Batal', + 保存: 'Simpan', + 否: 'Tidak', + 是: 'Ya', + 请选择评估时间: 'Sila Pilih Masa Penilaian', + 请选择评估人: 'Sila Pilih Penilai', + 请输入血流量: 'Sila Masukkan Aliran Darah', + 请输入血管直径: 'Sila Masukkan Diameter Vaskular', + 请输入血管距皮距离: 'Sila Masukkan Jarak Vaskular ke Kulit', + 请输入可穿刺血管分支: 'Sila Masukkan Bilangan Cabang Vaskular Boleh Ditusuk', + 请输入主干血管可穿刺长度: 'Sila Masukkan Panjang Vaskular Utama Boleh Ditusuk', + 请选择AVG血清肿是否消退: 'Sila Pilih Sama Ada Bengkak Serum AVG Berkurang', + 请选择是否成熟: 'Sila Pilih Sama Ada Matang', + 操作成功: 'Operasi Berjaya!', + }, + NLGNZAPGB: { + 添加内瘘功能障碍评估表: 'Tambah Borang Penilaian Disfungsi Fistula AV', + 修改内瘘功能障碍评估表: 'Ubah Borang Penilaian Disfungsi Fistula AV', + 评估日期: 'Tarikh Penilaian:', + 请选择: 'Sila Pilih', + 评估人: 'Penilai:', + 评估信息: 'Maklumat Penilaian', + 评估标准: 'Standard Penilaian', + 总分: 'Jumlah Markah:', + 备注三分或以上需要报告通路医生进行干预: 'Nota: Markah 3 atau lebih perlu dilaporkan kepada doktor vaskular untuk intervensi', + 取消: 'Batal', + 保存: 'Simpan', + 无任何表现: 'Tiada Gejala', + 听及狭窄在狭窄区域听到高调音: 'Stenosis Didengar: Nada Tinggi Terdengar di Kawasan Stenosis', + 静脉压增高大于160: 'Peningkatan Tekanan Vena >160 mmHg', + 可视或扪及明显的狭窄区域: 'Stenosis Jelas Kelihatan atau Dapat Diraba', + 止血时间延长: 'Masa Hemostasis Berpanjangan', + 血流量不足朝向吻合口的穿刺: 'Aliran Darah Tidak Mencukupi (Tusukan Mengarah ke Anastomosis)', + 动静脉下降小于负250: 'Penurunan Tekanan AV <-250 mmHg', + 震颤明显减弱: 'Getaran Fistula Jelas Melemah', + 内瘘侧肿胀: 'Bengkak di Sisi Fistula', + 请选择评估时间: 'Sila Pilih Masa Penilaian', + 请选择评估人: 'Sila Pilih Penilai', + 操作成功: 'Operasi Berjaya!', + 项目: 'Item', + 选择: 'Pilih', + 危险因素: 'Faktor Risiko', + 标准分: 'Markah Standard', + 血管护理计划: 'Pelan Penjagaan Vaskular', + 一般危险人群: 'Kumpulan Risiko Umum', + 评估表得分: '*Markah Borang Penilaian', + 分: 'Markah', + 护理计划: 'Pelan Penjagaan', + message1: + '1. Rangka pelan penjagaan vaskular (edukasi harian mengenai penjagaan fistula dan cara meningkatkan fungsi vaskular); frekuensi genggaman bola mengikut keadaan vaskular pesakit (0-1 kali/hari), pemanasan sekurang-kurangnya 1 kali/hari, 15 minit setiap sesi.', + message2: + '2. Jika berlaku keabnormalan fungsi vaskular semasa dialisis (tekanan vena tinggi, hemostasis sukar, Qb <200 ml/min), jika berlaku 3 kali berturut-turut, perlu dibincangkan untuk prosedur PTA (Angioplasti Perkutan).', + message3: '200 ml/min)当连续发生 3 次异常即须提出讨论是否排 PTA(经皮腔内血管成形术)。', + message4: 'Kumpulan Risiko Sederhana (pilih jika memenuhi salah satu syarat berikut)', + message5: '1. Berumur 60 tahun ke atas, jenis vaskular Graft', + message6: '2. Skor kondisi vaskular adalah 6', + message7: '3. Dua keabnormalan dalam penilaian status dialisis', + message8: '4. Jumlah markah borang penilaian adalah 11–20', + message9: + '1. Rangka pelan penjagaan vaskular (edukasi harian mengenai penjagaan fistula dan cara meningkatkan fungsi vaskular); latihan genggaman bola (termasuk Graft) sekurang-kurangnya 2 kali/hari (pagi & malam), sekurang-kurangnya 50 kali setiap sesi selama 15 minit.', + message10: '2. Jika terdapat keabnormalan dalam status dialisis, pelan penjagaan akan dijalankan dan dinilai.', + message11: '*Keabnormalan fungsi vaskular semasa dialisis (tekanan vena tinggi, hemostasis sukar, Qb', + message12: 'Jika berlaku keabnormalan sebanyak 3 kali berturut-turut, perlu dibincangkan sama ada perlu menjalankan PTA.', + 高危险群符合以下任一选项条件者勾选此项: 'Kumpulan Risiko Tinggi (pilih jika memenuhi salah satu syarat berikut)', + message13: '1. Lelaki, berumur 60 tahun ke atas, jenis vaskular transplantasi', + message14: '2. Skor kondisi vaskular adalah 8', + message15: '3. Lebih daripada 3 keabnormalan dalam penilaian status dialisis', + message16: '4. Jumlah markah borang penilaian adalah 21 ke atas', + message17: + '1. Rangka pelan penjagaan vaskular (edukasi harian mengenai penjagaan fistula dan cara meningkatkan fungsi vaskular); latihan genggaman bola (termasuk Graft) sekurang-kurangnya 2 kali/hari (pagi & malam), sekurang-kurangnya 50 kali setiap sesi selama 15 minit.', + message18: '2. Jika terdapat keabnormalan dalam status dialisis, pelan penjagaan akan dijalankan dan dinilai.', + message19: '*Kelebihan cecair menyebabkan hipotensi semasa dialisis', + message20: '*Peningkatan cecair >5%', + message21: '*Hipotensi semasa dialisis', + message22: '*Keabnormalan fungsi vaskular semasa dialisis (tekanan vena tinggi, hemostasis sukar, Qb', + message23: 'Jika berlaku keabnormalan sekali, perlu dibincangkan sama ada perlu menjalankan PTA.', + 性别: 'Jantina', + 男性: 'Lelaki', + 年龄: 'Umur', + '60岁以上': '60 Tahun Ke Atas', + 并发症: 'Komplikasi', + 糖尿病: '*Diabetes', + 高血压: '*Hipertensi', + 低血压透析前: 'Hipotensi Sebelum Dialisis (BP<90/60 mmHg, lebih 3 kali/bulan)', + 抽烟史: 'Sejarah Merokok', + 血管硬化: 'Aterosklerosis', + 血管感染史: 'Sejarah Jangkitan Vaskular', + 心脑血管意外: 'Penyakit Kardiovaskular', + 冠心病: 'Penyakit Jantung Koronari', + 血管条件: 'Keadaan Vaskular', + 细: '*Kecil', + 不明显: '*Tidak Ketara', + 弹性差: '*Keanjalan Buruk', + 有血管阻塞史: '*Sejarah Penyumbatan Vaskular', + 血管使用年限小于1年: '*Penggunaan Vaskular <1 Tahun', + 药物使用: 'Penggunaan Ubat', + 降压药: '*Ubat Antihipertensi', + 无肝素透析: 'Dialisis Tanpa Heparin', + 口服抗凝剂: 'Antikoagulan Oral', + 血管护理: 'Penjagaan Vaskular', + 未规则握球运动: '*Latihan Genggaman Bola Tidak Teratur', + 未规则局部热敷: '*Pemanasan Tempatan Tidak Teratur', + 穿刺前未习惯洗手: 'Tidak Membiasakan Diri Membasuh Tangan Sebelum Tusukan', + 每日未检查血管通畅情况: 'Tidak Memeriksa Kelancaran Vaskular Setiap Hari', + 血管通路: 'Akses Vaskular', + 移植: '*Transplantasi', + 穿刺方法: 'Kaedah Tusukan', + 重复穿刺: '*Tusukan Berulang', + 不规则纽扣式: 'Kaedah Buttonhole Tidak Teratur', + 蚂蚁式: 'Kaedah Semut', + 透析状况: 'Status Dialisis', + 水多导致透析低血压当月透析次数: '*Kelebihan Cecair Menyebabkan Hipotensi Semasa Dialisis (1/4 daripada sesi dialisis bulan ini)', + 女性: 'Perempuan', + }, + NLRCPGJCB: { + 添加内瘘日常评估检查表: 'Tambah Borang Penilaian Harian Fistula', + 修改内瘘日常评估检查表: 'Ubah Borang Penilaian Harian Fistula', + 评估日期: 'Tarikh Penilaian', + 请选择: 'Sila Pilih', + 评估人: 'Penilai', + 肢体肿胀: 'Bengkak Anggota', + 穿刺困难: 'Kesukaran Tusukan', + 拔针后出血时间延长: 'Masa Pendarahan Berpanjangan Selepas Cabutan Jarum', + ktv在线或urr下降: 'Penurunan Kt/V (Dalam Talian) atau URR (Bulanan)', + 达到处方血流量: 'Mencapai Aliran Darah yang Ditetapkan', + 血管窃血症或疼痛: 'Sindrom Kecurian Vaskular atau Kesakitan', + 感染征红肿痛脓点发热: 'Tanda Jangkitan: Kemerahan, Bengkak, Sakit, Pustul, Demam', + 透析中渗血: 'Kebocoran Darah Semasa Dialisis', + 动脉瘤形成: 'Pembentukan Aneurisme', + 抬臂试验正常: 'Ujian Mengangkat Lengan Normal', + 其他: 'Lain-lain:', + 请输入: 'Sila Masukkan', + 汇报医生或通路组员: 'Lapor kepada Doktor atau Pasukan Akses Vaskular', + 取消: 'Batal', + 保存: 'Simpan', + 否: 'Tidak', + 是: 'Ya', + 操作成功: 'Operasi Berjaya!', + }, + NLWSSQPGB: { + 添加内瘘围手术期评估表: 'Tambah Borang Penilaian Perioperatif Fistula', + 修改内瘘围手术期评估表: 'Ubah Borang Penilaian Perioperatif Fistula', + '评估日期:': 'Tarikh Penilaian:', + 请选择: 'Sila Pilih', + 评估人: 'Penilai', + 动脉: 'Arteri', + 搏动: 'Denyutan', + 掌深弓通畅: 'Laluan Lengkung Palma Dalam Lancar', + 掌浅弓通畅: 'Laluan Lengkung Palma Luas Lancar', + '血压测量差异:': 'Perbezaan Ukuran Tekanan Darah:', + '内径值(远心端)(mm)': 'Nilai Diameter Dalaman (Distal) (mm)', + '内径值(近心端)(mm)': 'Nilai Diameter Dalaman (Proksimal) (mm)', + 参考值: 'Nilai Rujukan', + 静脉: 'Vena', + 与中心静脉是否连续: 'Adakah Berterusan dengan Vena Cava', + 是否狭窄: 'Adakah Tersumbat', + 是否堵塞: 'Adakah Tersumbat', + 内径值: 'Nilai Diameter Dalaman', + allen实验: 'Ujian Allen', + 术后评估: 'Penilaian Selepas Pembedahan', + 手掌肿胀: 'Bengkak Tapak Tangan', + 伤口渗血: 'Perdarahan dari Luka', + 取消: 'Batal', + 保存: 'Simpan', + 强: 'Kuat', + 弱: 'Lemah', + 否: 'Tidak', + 是: 'Ya', + 高于对侧: 'Lebih Tinggi daripada Sisi Bertentangan', + 低于对侧: 'Lebih Rendah daripada Sisi Bertentangan', + '阳性(五秒内恢复颜色)': 'Positif (Pemulihan Warna dalam Lima Saat)', + '阴性(颜色恢复延迟)': 'Negatif (Pemulihan Warna Tertunda)', + 请选择评估时间: 'Sila Pilih Masa Penilaian', + 请选择评估人: 'Sila Pilih Penilai', + 请选择搏动: 'Sila Pilih Denyutan', + 请选择掌深弓通畅: 'Sila Pilih Laluan Lengkung Palma Dalam Lancar', + 请选择掌浅弓通畅: 'Sila Pilih Laluan Lengkung Palma Luas Lancar', + 请选择血压测量差异: 'Sila Pilih Perbezaan Ukuran Tekanan Darah', + '请输入内径值(远心端)': 'Sila Masukkan Nilai Diameter Dalaman (Distal)', + '请输入内径值(近心端)': 'Sila Masukkan Nilai Diameter Dalaman (Proksimal)', + 请选择与中心静脉是否连续: 'Sila Pilih Adakah Berterusan dengan Vena Cava', + 请选择是否狭窄: 'Sila Pilih Adakah Tersumbat', + 请选择是否堵塞: 'Sila Pilih Adakah Tersumbat', + 请输入内径值: 'Sila Masukkan Nilai Diameter Dalaman', + 请选择allen实验: 'Sila Pilih Ujian Allen', + 请选择手掌肿胀: 'Sila Pilih Bengkak Tapak Tangan', + 请选择伤口渗血: 'Sila Pilih Perdarahan dari Luka', + 请选择内瘘通畅: 'Sila Pilih Laluan Fistula Lancar', + '操作成功!': 'Operasi Berjaya!', + }, + ZTPGB: { + 添加整体评估表: 'Tambah Borang Penilaian Keseluruhan', + 修改整体评估表: 'Ubah Borang Penilaian Keseluruhan', + '评估日期:': 'Tarikh Penilaian:', + 请选择: 'Sila Pilih', + '评估人:': 'Penilai:', + '项目:': 'Projek:', + 请输入: 'Sila Masukkan', + '结果:': 'Keputusan:', + '处理:': 'Tindakan:', + 取消: 'Batal', + 保存: 'Simpan', + 否: 'Tidak', + 是: 'Ya', + 请选择评估时间: 'Sila Pilih Masa Penilaian', + 请选择评估人: 'Sila Pilih Penilai', + '操作成功!': 'Operasi Berjaya!', + }, + NLBSGWYSPGBIndex: { + 评估时间: 'Masa Penilaian', + 评估人: 'Penilai', + 性别: 'Jantina', + 年龄: 'Umur', + 并发症: 'Komplikasi', + 血管条件: 'Keadaan Vaskular', + 药物使用: 'Penggunaan Ubat', + 血管护理: 'Penjagaan Vaskular', + 血管通路: 'Akses Vaskular', + 穿刺方法: 'Kaedah Puncture', + 透析状况评估: 'Penilaian Keadaan Dialisis', + 总分: 'Jumlah Markah', + 血管护理计划与措施: 'Pelan dan Langkah Penjagaan Vaskular', + 操作: 'Tindakan', + '确认要删除当前信息?': 'Adakah anda pasti untuk memadam maklumat ini?', + 警告: 'Amaran', + 确定: 'Pasti', + 取消: 'Batal', + '删除成功!': 'Pemadaman Berjaya!', + '取消删除!': 'Batalkan Pemadaman!', + }, + NLCSPGBIndex: { + 评估时间: 'Masa Penilaian', + 评估人: 'Penilai', + 血流量: 'Kadar Aliran Darah', + 血管直径: 'Diameter Saluran Darah', + 血管距皮距离: 'Jarak Saluran Darah ke Kulit', + 可穿刺血管分支: 'Cabang Saluran Darah yang Boleh Ditembusi', + 主干血管可穿刺长度: 'Panjang Saluran Darah Utama yang Boleh Ditembusi (cm)', + AVG血清肿是否消退: 'Adakah Edema Serum AVG Telah Reda', + 是: 'Ya', + 否: 'Tidak', + 是否成熟: 'Adakah Matang', + 操作: 'Tindakan', + '确认要删除当前信息?': 'Adakah anda pasti ingin memadam maklumat ini?', + 警告: 'Amaran', + 确定: 'Pasti', + 取消: 'Batal', + '删除成功!': 'Pemadaman Berjaya!', + 取消删除: 'Batalkan Pemadaman!', + }, + NLGNZAPGBIndex: { + 评估时间: 'Masa Penilaian', + 评估人: 'Penilai', + 无任何表现: 'Tiada Gejala', + 听及狭窄在狭窄区域听到高调音: 'Dengar dan sempit: Bunyi frekuensi tinggi didengar di kawasan sempit', + 静脉压增高大于170: 'Tekanan vena meningkat >170mmHg', + 可视或扪及明显的狭窄区域: 'Kawasan sempit yang jelas kelihatan atau boleh dirasai', + 止血时间延长: 'Masa pemberhentian pendarahan diperpanjang', + 血流量不足朝向吻合口的穿刺: 'Kadar aliran darah tidak mencukupi (penembusan ke arah sambungan)', + 动静脉下降250: 'Penurunan arteri-vein <-250mmHg', + 震颤明显减弱: 'Getaran berkurangan dengan ketara', + 内瘘侧肿胀: 'Bengkak pada sisi fistula', + 总分: 'Jumlah Skor', + 操作: 'Tindakan', + '确认要删除当前信息?': 'Adakah anda pasti ingin memadam maklumat ini?', + 警告: 'Amaran', + 确定: 'Pasti', + 取消: 'Batal', + '删除成功!': 'Pemadaman Berjaya!', + 取消删除: 'Batalkan Pemadaman', + }, + NLRCPGJCBIndex: { + 评估时间: 'Masa Penilaian', + 评估人: 'Penilai', + 肢体肿胀: 'Bengkak anggota badan', + 是: 'Ya', + 否: 'Tidak', + 穿刺困难: 'Kesukaran dalam penusukan', + 拔针后出血时间延长: 'Masa pendarahan selepas cabutan jarum diperpanjang', + ktv在线URR下降: 'Kt/v(atas talian) atau URR(berkala) menurun', + 达到处方血流量: 'Mencapai aliran darah yang ditetapkan', + 血管窃血症或疼痛: 'Sindrom kecurian vaskular atau sakit', + 感染征红肿痛脓点发热: 'Tanda jangkitan: merah, bengkak, sakit, nanah, demam', + 透析中渗血: 'Pendarahan semasa dialisis', + 动脉瘤形成: 'Pembentukan aneurisma', + 抬臂试验正常: 'Ujian angkat lengan normal', + 其他: 'Lain-lain', + 汇报医生或通路组员: 'Laporkan kepada doktor atau ahli pasukan saluran', + 操作: 'Tindakan', + '确认要删除当前信息?': 'Adakah anda pasti ingin memadam maklumat ini?', + 警告: 'Amaran', + 确定: 'Pasti', + 取消: 'Batal', + '删除成功!': 'Pemadaman Berjaya!', + 取消删除: 'Batalkan Pemadaman!', + }, + NLWSSQPGBIndex: { + 评估时间: 'Masa Penilaian', + 评估人: 'Penilai', + 搏动: 'Denyutan', + 强: 'Kuat', + 弱: 'Lemah', + 掌深弓通畅: 'Lengkungan palma dalam lancar', + 是: 'Ya', + 否: 'Tidak', + 掌浅弓通畅: 'Lengkungan palma cetek lancar', + 血压测量差异: 'Perbezaan pengukuran tekanan darah', + 高与对侧: 'Lebih tinggi berbanding sisi berlawanan', + 低于对侧: 'Lebih rendah berbanding sisi berlawanan', + 内径值远心端: 'Nilai diameter dalaman (pada hujung jauh)', + 内径值近心端: 'Nilai diameter dalaman (pada hujung dekat)', + 与中心静脉是否连续: 'Adakah ia bersambung dengan vena pusat?', + 是否狭窄: 'Adakah ia sempit?', + 是否堵塞: 'Adakah ia tersumbat?', + 内径值: 'Nilai diameter dalaman', + allen实验: 'Ujian Allen', + 阳性五秒内恢复颜色: 'Positif (warna pulih dalam lima saat)', + 阴性颜色恢复延迟: 'Negatif (pemulihan warna terlewat)', + 手掌肿胀: 'Bengkak tapak tangan', + 伤口渗血: 'Penyerapan darah pada luka', + 内瘘通畅: 'Keberkesanan fistula', + 操作: 'Tindakan', + '确认要删除当前信息?': 'Adakah anda pasti mahu memadam maklumat ini?', + 警告: 'Amaran', + 确定: 'Pasti', + 取消: 'Batal', + '删除成功!': 'Pemadaman berjaya!', + '取消删除!': 'Batalkan pemadaman!', + }, + ZTPGIndex: { + 评估时间: 'Masa Penilaian', + 评估人: 'Penilai', + 项目: 'Projek', + 结果: 'Keputusan', + 处理: 'Pengendalian', + 操作: 'Tindakan', + '确认要删除当前信息?': 'Adakah anda pasti mahu memadam maklumat ini?', + 警告: 'Amaran', + 确定: 'Pasti', + 取消: 'Batal', + '删除成功!': 'Pemadaman berjaya!', + '取消删除!': 'Batalkan pemadaman!', + }, + }, + complication: { + 添加并发症: 'Tambah Komplikasi', + '添加日期:': 'Tarikh Ditambah:', + 请选择: 'Sila Pilih', + '并发症:': 'Komplikasi:', + '并发症症状:': 'Gejala Komplikasi:', + 请输入并发症症状: 'Sila Masukkan Gejala Komplikasi', + '并发症处理:': 'Pengendalian Komplikasi:', + 请输入并发症处理: 'Sila Masukkan Pengendalian Komplikasi', + 取消: 'Batal', + 保存: 'Simpan', + 请选择添加日期: 'Sila Pilih Tarikh Ditambah', + 请选择并发症: 'Sila Pilih Komplikasi', + '操作成功!': 'Tindakan Berjaya!', + 修改并发症: 'Ubah Komplikasi', + '确认要删除当前信息?': 'Adakah anda pasti mahu memadam maklumat ini?', + 警告: 'Amaran', + 确定: 'Pasti', + '删除成功!': 'Pemadaman Berjaya!', + '取消删除!': 'Batalkan Pemadaman!', + 操作: 'Tindakan', + }, + pipe: { + 添加导管信息: 'Tambah Maklumat Katin', + '导管日期:': 'Tarikh Katin:', + 请选择: 'Sila Pilih', + 卡夫距导管出口距离: 'Jarak KAV dari Keluasan Katin', + 导管体外段靠近中线: 'Bahagian Luar Katin Dekat Dengan Garisan Tengah', + 渗血: 'Pendarahan Meresap', + 渗液: 'Cecair Meresap', + '导管周围脓/红肿': 'Nanah/Merah dan Bengkak Sekeliling Katin', + A端功能: 'Fungsi A端', + V端功能: 'Fungsi V端', + 通路连接: 'Sambungan Laluan', + 血流量: 'Kadar Aliran Darah', + A端导管容量: 'Kapasiti Katin A端', + V端导管容量: 'Kapasiti Katin V端', + 护士: 'Jururawat', + 取消: 'Batal', + 保存: 'Simpan', + A端: 'A端', + V端: 'V端', + 否: 'Tidak', + 陈旧性渗血: 'Pendarahan Meresap Lama', + 压迫止血: 'Tekanan Hentikan Pendarahan', + 缝合止血: 'Suturing untuk Hentikan Pendarahan', + 是: 'Ya', + 畅通: 'Lancar', + 出畅进不畅: 'Lancar Keluar, Tidak Lancar Masuk', + 进畅出不畅: 'Lancar Masuk, Tidak Lancar Keluar', + 不畅通: 'Tidak Lancar', + 正接: 'Sambungan Positif', + 反接: 'Sambungan Negatif', + 请选择导管时间: 'Sila Pilih Masa Katin', + 请输入卡夫距导管出口距离: 'Sila Masukkan Jarak KAV dari Keluasan Katin', + 请选择导管体外段靠近中线: 'Sila Pilih Bahagian Luar Katin Dekat Dengan Garisan Tengah', + 请选择渗血: 'Sila Pilih Pendarahan Meresap', + 请选择渗液: 'Sila Pilih Cecair Meresap', + '请选择导管周围脓/红肿': 'Sila Pilih Nanah/Merah dan Bengkak Sekeliling Katin', + 请选择A端功能: 'Sila Pilih Fungsi A端', + 请选择V端功能: 'Sila Pilih Fungsi V端', + 请选择通路连接: 'Sila Pilih Sambungan Laluan', + 请输入血流量: 'Sila Masukkan Kadar Aliran Darah', + 请输入A端导管容量: 'Sila Masukkan Kapasiti Katin A端', + 请输入V端导管容量: 'Sila Masukkan Kapasiti Katin V端', + 请选择护士: 'Sila Pilih Jururawat', + '操作成功!': 'Tindakan Berjaya!', + 修改导管信息: 'Ubah Maklumat Katin', + 'A/V导管容量': 'Kapasiti A/V Katin', + 操作: 'Tindakan', + '确认要删除当前信息?': 'Adakah anda pasti mahu memadam maklumat ini?', + }, + puncture: { + 添加穿刺信息: 'Tambah maklumat tusukan', + 穿刺信息: 'Maklumat tusukan', + 穿刺日期: 'Tarikh tusukan:', + 请选择: 'Sila pilih', + A端穿刺方法: 'Kaedah tusukan A端', + V端穿刺方法: 'Kaedah tusukan V端', + A端穿刺类型: 'Jenis tusukan A端', + V端穿刺类型: 'Jenis tusukan V端', + A端穿刺针型号: 'Model jarum tusukan A端', + V端穿刺针型号: 'Model jarum tusukan V端', + A端穿刺点距吻合口距离: 'Jarak titik tusukan A端 dari anastomosis', + AtV端穿刺点距吻合口距离: 'Jarak titik tusukan AtV端 dari anastomosis', + V端位于分支管: 'V端 terletak pada saluran cabang', + 一次成功: 'Berjaya pada percubaan pertama', + 静脉压: 'Tekanan vena', + 血流量: 'Aliran darah', + 穿刺护士: 'Jururawat tusukan', + 穿刺护士职称: 'Gred jawatan jururawat tusukan', + 压迫止血记录: 'Rekod tekanan untuk menghentikan pendarahan', + 压迫止血时间: 'Masa tekanan untuk menghentikan pendarahan', + 红色A端绑带长度: 'Panjang tali merah (A端)', + 蓝色V端绑带长度: 'Panjang tali biru (V端)', + 手腕周长: 'Lilitan pergelangan tangan', + 红色棉球起点: 'Titik permulaan kapas merah', + 蓝色棉球起点: 'Titik permulaan kapas biru', + 红色止血时间: 'Masa menghentikan pendarahan merah', + 蓝色止血时间: 'Masa menghentikan pendarahan biru', + 红色止血刻度: 'Skala menghentikan pendarahan merah', + 蓝色止血刻度: 'Skala menghentikan pendarahan biru', + 红色调整刻度: 'Skala penyesuaian merah', + 蓝色调整刻度: 'Skala penyesuaian biru', + 取消: 'Batal', + 保存: 'Simpan', + 扣眼法: 'Kaedah lubang butang', + 绳梯法: 'Kaedah tangga tali', + 区域法: 'Kaedah kawasan', + 中心v导管: 'Katel pusat v', + 钝针: 'Jarum tumpul', + 锐针: 'Jarum tajam', + 套管针: 'Jarum cannula', + 十七号: 'Nombor 17', + 十六号: 'Nombor 16', + 十五号: 'Nombor 15', + 是: 'Ya', + 否: 'Tidak', + 白: 'Putih', + 黄: 'Kuning', + 请选择穿刺日期: 'Sila pilih tarikh tusukan', + 请选择A端穿刺方法: 'Sila pilih kaedah tusukan A端', + 请选择V端穿刺方法: 'Sila pilih kaedah tusukan V端', + 请选择A端穿刺类型: 'Sila pilih jenis tusukan A端', + 请选择V端穿刺类型: 'Sila pilih jenis tusukan V端', + 请选择A端穿刺针型号: 'Sila pilih model jarum tusukan A端', + 请选择V端穿刺针型号: 'Sila pilih model jarum tusukan V端', + 请输入A端穿刺点距吻合口距离: 'Sila masukkan jarak titik tusukan A端 dari anastomosis', + 请输入AtV端两穿刺点间距离: 'Sila masukkan jarak antara dua titik tusukan AtV端', + 请选择V端是否位于分支血管: 'Sila pilih sama ada V端 terletak pada saluran cabang', + 请选择是否一次成功: 'Sila pilih sama ada berjaya pada percubaan pertama', + 请输入静脉压: 'Sila masukkan tekanan vena', + 请输入血流量: 'Sila masukkan aliran darah', + 请选择穿刺护士: 'Sila pilih jururawat tusukan', + 请选择穿刺护士职称: 'Sila pilih gred jawatan jururawat tusukan', + 请选择压迫止血时间: 'Sila pilih masa tekanan untuk menghentikan pendarahan', + 请输入红色A端绑带长度: 'Sila masukkan panjang tali merah (A端)', + 请输入蓝色V端绑带长度: 'Sila masukkan panjang tali biru (V端)', + 请输入手腕周长: 'Sila masukkan lilitan pergelangan tangan (cm)', + 请选择红色棉球起点: 'Sila pilih titik permulaan kapas merah', + 请选择蓝色棉球起点: 'Sila pilih titik permulaan kapas biru', + 请输入红色止血时间: 'Sila masukkan masa menghentikan pendarahan merah (min)', + 请输入蓝色止血时间: 'Sila masukkan masa menghentikan pendarahan biru (min)', + 请输入红色止血刻度: 'Sila masukkan skala menghentikan pendarahan merah', + 请输入蓝色止血刻度: 'Sila masukkan skala menghentikan pendarahan biru', + 请输入红色调整刻度: 'Sila masukkan skala penyesuaian merah', + 请输入蓝色调整刻度: 'Sila masukkan skala penyesuaian biru', + 操作成功: 'Operasi berjaya!', + 修改穿刺信息: 'Ubah maklumat tusukan', + 压迫止血记录表: 'Borang rekod tekanan untuk menghentikan pendarahan', + 穿刺方法A端V端: 'Kaedah tusukan A端/V端', + 穿刺类型A端V端: 'Jenis tusukan A端/V端', + 穿刺针型号A端V端: 'Model jarum tusukan A端/V端', + 查看表单: 'Lihat borang', + 操作: 'Operasi', + 确认要删除当前信息: 'Adakah anda pasti mahu memadam maklumat semasa?', + 警告: 'Amaran', + 确定: 'Pasti', + 删除成功: 'Padam berjaya!', + 取消删除: 'Batal padam!', + }, + SiteRecord: { + 位点记录列表: 'Senarai rekod titik', + 查询日期: 'Tarikh carian', + 至: 'Hingga', + 开始时间: 'Masa mula', + 结束时间: 'Masa tamat', + 打印: 'Cetak', + 导出: 'Eksport', + 序号: 'Nombor siri', + 透析单日期: 'Tarikh rekod dialisis', + 患者姓名: 'Nama pesakit', + A端位点: 'Titik A端', + V端位点: 'Titik V端', + 透前内瘘: 'Fistula arteriovenous pra-dialisis', + 透后内瘘: 'Fistula arteriovenous pasca-dialisis', + 穿刺护士: 'Jururawat tusukan', + 操作: 'Operasi', + 修改: 'Ubah', + 修改点位: 'Ubah titik', + 请选择: 'Sila pilih', + 取消: 'Batal', + 确定: 'Pasti', + 血透中心位点记录单: 'Borang rekod titik pusat hemodialisis', + 修改成功: 'Pengubahan berjaya', + 患者位点记录表: 'Borang rekod titik pesakit', + 该日期透析单已归档禁止修改: 'Rekod dialisis pada tarikh ini telah diarkibkan, pengubahan tidak dibenarkan', + }, + ultrasonography: { + 添加超声检查: 'Tambah pemeriksaan ultrabunyi', + 添加维护记录: 'Tambah Rekod Penyelenggaraan', + 添加拔出记录: 'Tambah Rekod Cabutan', + 检查日期: 'Tarikh pemeriksaan', + 请选择日期: 'Sila pilih tarikh', + 检查部位: 'Bahagian pemeriksaan', + 请输入: 'Sila masukkan', + 检查所见: 'Penemuan pemeriksaan', + 维护项目: "Item pemeliharaan (seperti pertukaran pembalut, pembersihan tiub, penutupan tiub, dll.)", + 维护时间: "Masa Penyelenggaraan", + 维护人员: "Personel Penyelenggaraan", + 拔出人员: "Personel Tarik keluar", + 维护实图: "Gambar sebenar pemeliharaan pada hari yang sama", + 拔出日期: "Tarikh penarikan", + 拔出原因: "Sebab penarikan (seperti tamat rawatan, komplikasi berkaitan kateter sukar dikendalikan, dll.)", + 导管完整性检查情况: "Status pemeriksaan integriti kateter", + 患者反应: "Tindak balas pesakit (ada tidaknya ketidakselesaan, pendarahan, dll.)", + 医生签字: "Tandatangan doktor", + 请输入检查所见: 'Sila masukkan penemuan pemeriksaan', + 备注: 'Catatan', + 上传图片: 'Muat naik gambar', + 上传: 'Muat naik', + 大小不能超过: 'Saiz tidak boleh melebihi', + 取消: 'Batal', + 保存: 'Simpan', + 请选择检查日期: 'Sila pilih tarikh pemeriksaan', + 请输入检查部位: 'Sila masukkan bahagian pemeriksaan', + 当前限制选择10个文件: 'Had semasa adalah memilih 10 fail!', + 图片必须是jpgpng格式: 'Gambar mesti dalam format jpg/png!', + 图片大小不能超过2MB: 'Saiz gambar tidak boleh melebihi 2MB!', + 操作成功: 'Operasi berjaya!', + 超声检查详情: 'Butiran pemeriksaan ultrabunyi', + 修改超声检查: 'Ubah pemeriksaan ultrabunyi', + 操作: 'Operasi', + 确认要删除当前信息: 'Adakah anda pasti mahu memadam maklumat semasa?', + 警告: 'Amaran', + 确定: 'Pasti', + 删除成功: 'Padam berjaya!', + 取消删除: 'Batal padam!', + }, + vascularAccessList: { + 血管通路: 'Laluan vaskular', + 建立日期: 'Tarikh penubuhan', + 请选择: 'Sila pilih', + 通路部位: 'Lokasi laluan', + 通路类型: 'Jenis laluan', + 首次启用日期: 'Tarikh penggunaan pertama', + 流入流出道: 'Saluran masuk-keluar', + 请输入选择: 'Sila masukkan/pilih', + 默认到处方: 'Tetapkan preskripsi secara lalai', + 医生: 'Doktor', + 使用状态: 'Status penggunaan', + 停用日期: 'Tarikh penamatan', + 停用原因: 'Sebab penamatan', + 请输入: 'Sila masukkan', + 备注: 'Nota', + 以下信息用于国网上报: 'Maklumat berikut digunakan untuk laporannya ke negara', + 血管通路位置左右: 'Lokasi laluan vaskular (Kiri-Kanan)', + 血管通路类型: 'Jenis laluan vaskular', + 其它: 'Lain-lain', + 描述: 'Deskripsi', + 自体内瘘: 'Fistula arteriovenous autologous', + 移植血管: 'Vaskular transplantasi', + 血管通路位置: 'Lokasi laluan vaskular', + 临时中心静脉置管: 'Pemasangan kateter vena pusat sementara', + 长期中心静脉置管: 'Pemasangan kateter vena pusat jangka panjang', + 中心静脉置管方法: 'Kaedah pemasangan kateter vena pusat', + 取消: 'Batal', + 确定: 'Pasti', + 颈V: 'Vena jugularis', + 股V: 'Vena femoral', + 肱A肱V: 'Arteri brachial-Vena brachial', + 股A大隐V: 'Arteri femoral-Vena safena besar', + 上臂肱A贵要V: 'Arteri brachial atas-Vena penting', + 肱A上臂头V: 'Arteri brachial-Vena bahu atas', + 桡A贵要V: 'Arteri radial-Vena penting', + 尺A贵要V: 'Arteri ulnar-Vena penting', + 桡A头V: 'Arteri radial-Vena kepala', + 肱动脉穿静脉: 'Arteri brachial melalui vena', + 肱A肘正中V: 'Arteri brachial-Vena siku tengah', + 左: 'Kiri', + 右: 'Kanan', + 前臂: 'Lengan bawah', + 上臂: 'Lengan atas', + 下肢: 'Kaki bawah', + 颈内静脉: 'Vena jugularis dalam', + 股静脉: 'Vena femoral', + 锁骨下静脉: 'Vena subklavia', + 颈外静脉: 'Vena jugularis luar', + 超声介入: 'Intervensi ultrabunyi', + X线介入: 'Intervensi X-ray', + 盲穿: 'Tusukan buta', + 请选择首次启用日期: 'Sila pilih tarikh penggunaan pertama', + 请选择建立日期: 'Sila pilih tarikh penubuhan', + 请选择通路部位: 'Sila pilih lokasi laluan', + 请选择通路类型: 'Sila pilih jenis laluan', + 请输入流入流出道: 'Sila masukkan saluran masuk-keluar', + 请选择手术医生: 'Sila pilih doktor pembedahan', + 请选择使用状态: 'Sila pilih status penggunaan', + 请选择停用日期: 'Sila pilih tarikh penamatan', + 请先取消默认到处方: 'Sila batal tetapkan preskripsi secara lalai terlebih dahulu', + 操作成功: 'Operasi berjaya', + }, + xgtlTool: { + 血管通路图: 'Peta laluan vaskular', + 更换图片: 'Tukar gambar', + 编辑: 'Sunting', + 打印: 'Cetak', + 保存: 'Simpan', + 取消: 'Batal', + 添加说明: 'Tambah penjelasan', + A端: 'A端', + 点击添加标记: 'Klik untuk menambah tanda', + V端: 'V端', + 穿刺角度: 'Sudut tusukan', + 卡夫距导管出口距离cm: 'Jarak dari cuff ke saluran keluar cm', + 动脉端向心穿刺: 'Tusukan arah pusat dari hujung arteri', + 动脉端离心穿刺: 'Tusukan arah jauh dari hujung arteri', + 静脉端向心穿刺: 'Tusukan arah pusat dari hujung vena', + 手背朝上: 'Telapak tangan menghadap ke atas', + 手掌朝上: 'Telapak tangan menghadap ke atas', + 虎口朝上: 'Genggaman tangan menghadap ke atas', + 自定义: 'Penyesuaian', + 进针方位: 'Arah tusukan jarum', + 辅助工具: 'Alat sokongan', + 说明中心点对准穿刺点直线与血管平行时钟刻度为进针方位用A端V端进针方位的箭头指示: + 'Penjelasan: Titik pusat diarahkan ke titik tusukan, garis lurus sejajar dengan saluran darah, penunjuk arah tusukan menggunakan anak panah pada arah tusukan A端/V端.', + 查看示意图: 'Lihat gambar rajah', + 添加文本标记: 'Tambah tanda teks', + 示意图: 'Gambar rajah', + 图片修改成功: 'Pengubahsuaian gambar berjaya', + 你确定要放弃这次编辑的血管通路图: 'Adakah anda pasti ingin membatalkan pengeditan peta laluan vaskular ini?', + 提示: 'Peringatan', + 确认: 'Pasti', + 你确定要保存这次编辑的血管通路图: 'Adakah anda pasti ingin menyimpan pengeditan peta laluan vaskular ini?', + 打印日期: 'Tarikh cetakan', + 肾透血液管理软件血管通路图: 'Peta laluan vaskular perisian pengurusan darah hemodialisis', + 患者姓名: 'Nama pesakit', + 没有启用编辑: 'Suntingan tidak diaktifkan', + 没有开启编辑状态: 'Status penyuntingan tidak diaktifkan', + }, +}; diff --git a/src/i18n/pages/PatientManage/vascularAccess/zh-cn.ts b/src/i18n/pages/PatientManage/vascularAccess/zh-cn.ts new file mode 100644 index 0000000..acd4a15 --- /dev/null +++ b/src/i18n/pages/PatientManage/vascularAccess/zh-cn.ts @@ -0,0 +1,827 @@ +export default { + 血管通路列表: '血管通路列表', + 新建通路: '新建通路', + 建立日期: '建立日期', + 通路部位: '通路部位', + 通路类型: '通路类型', + 流入流出道: '流入-流出道', + 首次启用日期: '首次启用日期', + 默认到处方: '默认到处方', + 医生: '医生', + 停用日期: '停用日期', + 停用原因: '停用原因', + 备注: '备注', + 操作: '操作', + 添加此项: '添加此项', + 操作记录: '操作记录', + 超声检查: '超声检查', + 通路评估: '通路评估', + 穿刺信息: '穿刺信息', + 导管信息: '导管信息', + 并发症及处理: '并发症及处理', + 维护记录: '维护记录', + 拔出记录: '拔出记录', + 内瘘围手术期评估表: '内瘘围手术期评估表', + 内瘘成熟评估表: '内瘘成熟评估表', + 内瘘日常评估检查表: '内瘘日常评估检查表', + 内瘘功能障碍狭隘评估表: '内瘘功能障碍(狭隘)评估表', + 动静脉内瘘闭塞高危因素评估表: '动静脉内瘘闭塞高危因素评估表', + 整体评估: '整体评估', + 未选择患者: '未选择患者!', + 此操作将永久删除该数据是否继续: '此操作将永久删除该数据,是否继续?', + 提示: '提示', + 确认: '确认', + 取消: '取消', + 删除成功: '删除成功!', + 未选择血管通路: '未选择血管通路!', + 本院启用日期: '本院启用日期', + access: { + DJMNLBSGWYSPGB: { + 添加动静脉内瘘闭塞高危因素评估表: '添加动静脉内瘘闭塞高危因素评估表', + 修改动静脉内瘘闭塞高危因素评估表: '修改动静脉内瘘闭塞高危因素评估表', + 评估日期: '评估日期:', + 请选择: '请选择', + 评估人: '评估人:', + 项目: '项目', + 选择: '选择', + 危险因素: '危险因素', + 标准分: '标准分', + 血管护理计划: '血管护理计划', + 一般危险人群: '一般危险人群', + 评估表得分总分: '评估表得分:总分', + '10分': '10 分', + 护理计划: '护理计划', + message1: + '1.制定血管护理计划(给内瘘日常护理及如何促进血管功能健康教育单);根据患者血管 功能情况决定握球次数(0-1 次/日),热敷至少 1 次/日,15min/次。', + message2: '2.透析中血管功能异常(静脉压高、止血不易、Qb<200 ml/min)当连续发生 3 次异常即须提出讨论是否排 PTA(经皮腔内血管成形术)。', + 中危险群符合以上任一选项条件者勾选此项: '中危险群(符合以上任一选项条件者勾选此项)', + message3: '1.60 岁以上、血管性质为 Graft', + message4: '2.血管条件得分为 6 分', + message5: '3.透析状态评估有 2 项异常', + message6: '4.评估表得分总分 11—20 分', + message7: + '1.制定血管护理计划(给内瘘日常护理及如何促进血管功能健康教育单);握球(含 Graft) 运动至少 2 次/日(早晚),至少 50 下/次及 2 次(早晚)每次 15min。', + message8: '2.透析状况评估异常,根据患者问题护理计划(护理计划单执行及评值)', + message9: '*透析中血管功能异常(静脉压高、止血不易、Qb', + message10: '当连续发生 3 次异常即须 提出讨论是否排 PTA', + 高危险群符合以下任一选项条件者勾选此项: '高危险群(符合以下任一选项条件者勾选此项)', + message11: '1.男性、60 岁以上、血管性质为移植', + message12: '2.血管条件得分为 8 分', + message13: '3.透析状态评估有 3 项以上异常', + message14: '4.评估表得分总分 21 分以上', + message15: + '1.制定血管护理计划(给内瘘日常护理及如何促进血管功能健康教育单);握球(含 Graft) 运动至少 2 次/日(早晚),至少 50 下/次及 2 次(早晚)每次 15min。', + message16: '2.透析状况评估异常护理计划(护理计划单执行及评值)', + message17: '*水多导致透析低血压', + message18: '*水分增加>5%', + message19: '*透析中低血压', + message20: '*透析中血管异常功能异常(静脉压高、止血不易、Qb', + message21: '当发生一次异常即须 提出讨论是否安排 PTA。', + 总分: '总分', + 取消: '取消', + 保存: '保存', + 性别: '性别', + 男性: '男性', + 年龄: '年龄', + '60岁以上': '60 岁以上', + 并发症: '并发症', + 糖尿病: '*糖尿病', + 高血压: '*高血压', + 低血压: '低血压(透析前 BP<90/60mmHg,且>3 次/月)', + 抽烟史: '抽烟史', + 血管硬化: '血管硬化', + 血管感染史: '血管感染史', + 心脑血管意外: '心脑血管意外', + 冠心病: '冠心病', + 血管条件: '血管条件', + 细: '*细', + 不明显: '*不明显', + 弹性差: '*弹性差', + 有血管阻塞史: '*有血管阻塞史', + 血管使用年限小于1年: '*血管使用年限<1 年', + 药物使用: '药物使用', + 降压药: '*降压药', + 无肝素透析: '无肝素透析', + 口服抗凝剂: '口服抗凝剂', + 血管护理: '血管护理', + 未规则握球运动: '*未规则握球运动', + 未规则局部热敷: '*未规则局部热敷', + 穿刺前未习惯洗手: '穿刺前未习惯洗手', + 每日未检查血管通畅情况: '每日未检查血管通畅情况', + 血管通路: '血管通路', + 移植: '移植*', + 穿刺方法: '穿刺方法', + 重复穿刺: '重复穿刺', + 不规则纽扣式: '不规则纽扣式', + 蚂蚁式: '蚂蚁式', + 透析状况: '透析状况', + 水多导致透析低血压: '*水多导致透析低血压(当月透析次数 1/4)', + 水分增加5: '*水分增加 5%(当月透析次数>1/2)', + 止血不易: '*止血不易(加压止血 15min 以上)', + 内瘘感染: '内瘘感染', + 穿刺困难导致血肿: '穿刺困难导致血肿', + 透析中无法维持: 'Qb<200ml/min(透析中无法维持)', + 静脉压高ob200: '静脉压高(Qb=200ml/min,静脉压>150mmHg)', + 请选择评估时间: '请选择评估时间', + 请选择评估人: '请选择评估人', + 女性: '女性', + 中危险群: '中危险群', + 高危险群: '高危险群', + 操作成功: '操作成功!', + }, + BLCSPGB: { + 添加内瘘成熟评估表: '添加内瘘成熟评估表', + 修改内瘘成熟评估表: '修改内瘘成熟评估表', + 评估日期: '评估日期', + 请选择: '请选择', + 评估人: '评估人', + 血流量: '血流量', + 参考值: '参考值', + 血管直径: '血管直径', + 血管距皮距离: '血管距皮距离', + 可穿刺血管分支: '可穿刺血管分支(条)', + 主干血管可穿刺长度: '主干血管可穿刺长度', + AVG血清肿是否消退: 'AVG血清肿是否消退', + 是否成熟: '是否成熟', + 取消: '取消', + 保存: '保存', + 否: '否', + 是: '是', + 请选择评估时间: '请选择评估时间', + 请选择评估人: '请选择评估人', + 请输入血流量: '请输入血流量', + 请输入血管直径: '请输入血管直径', + 请输入血管距皮距离: '请输入血管距皮距离', + 请输入可穿刺血管分支: '请输入可穿刺血管分支', + 请输入主干血管可穿刺长度: '请输入主干血管可穿刺长度', + 请选择AVG血清肿是否消退: '请选择AVG血清肿是否消退', + 请选择是否成熟: '请选择是否成熟', + 操作成功: '操作成功!', + }, + NLGNZAPGB: { + 添加内瘘功能障碍评估表: '添加内瘘功能障碍评估表', + 修改内瘘功能障碍评估表: '修改内瘘功能障碍评估表', + 评估日期: '评估日期:', + 请选择: '请选择', + 评估人: '评估人:', + 评估信息: '评估信息', + 评估标准: '评估标准', + 总分: '总分:', + 备注三分或以上需要报告通路医生进行干预: '备注:三分或以上需要报告通路医生进行干预', + 取消: '取消', + 保存: '保存', + 无任何表现: '无任何表现', + 听及狭窄在狭窄区域听到高调音: '听及狭窄:在狭窄区域听到高调音', + 静脉压增高大于160: '静脉压增高>160mmhg', + 可视或扪及明显的狭窄区域: '可视或扪及明显的狭窄区域', + 止血时间延长: '止血时间延长', + 血流量不足朝向吻合口的穿刺: '血流量不足(朝向吻合口的穿刺)', + 动静脉下降小于负250: '动静脉下降<-250mmhg', + 震颤明显减弱: '震颤明显减弱', + 内瘘侧肿胀: '内瘘侧肿胀', + 请选择评估时间: '请选择评估时间', + 请选择评估人: '请选择评估人', + 操作成功: '操作成功!', + 项目: '项目', + 选择: '选择', + 危险因素: '危险因素', + 标准分: '标准分', + 血管护理计划: '血管护理计划', + 一般危险人群: '一般危险人群', + 评估表得分: '*评估表得分', + 分: '分', + 护理计划: '护理计划', + message1: + '1.制定血管护理计划(给内瘘日常护理及如何促进血管功能健康教育单);根据患者血管 功能情况决定握球次数(0-1 次/日),热敷至少 1 次/日,15min/次。', + message2: '2.透析中血管功能异常(静脉压高、止血不易、Qb', + message3: '200 ml/min)当连续发生 3 次异常即须提出讨论是否排 PTA(经皮腔内血管成形术)。', + message4: '中危险群(符合以上任一选项条件者勾选此项)', + message5: '1.60 岁以上、血管性质为 Graft', + message6: '2.血管条件得分为 6 分', + message7: '3.透析状态评估有 2 项异常', + message8: '4.评估表得分总分 11—20 分', + message9: + '1.制定血管护理计划(给内瘘日常护理及如何促进血管功能健康教育单);握球(含 Graft) 运动至少 2 次/日(早晚),至少 50 下/次及 2 次(早晚)每次 15min。', + message10: '2.透析状况评估异常,根据患者问题护理计划(护理计划单执行及评值)', + message11: '*透析中血管功能异常(静脉压高、止血不易、Qb', + message12: '当连续发生 3 次异常即须 提出讨论是否排 PTA。', + 高危险群符合以下任一选项条件者勾选此项: '高危险群(符合以下任一选项条件者勾选此项)', + message13: '1.男性、60 岁以上、血管性质为移植', + message14: '2.血管条件得分为 8 分', + message15: '3.透析状态评估有 3 项以上异常', + message16: '4.评估表得分总分 21 分以上', + message17: + '1.制定血管护理计划(给内瘘日常护理及如何促进血管功能健康教育单);握球(含 Graft) 运动至少 2 次/日(早晚),至少 50 下/次及 2 次(早晚)每次 15min。', + message18: '2.透析状况评估异常护理计划(护理计划单执行及评值)', + message19: '*水多导致透析低血压', + message20: '*水分增加>5%', + message21: '*透析中低血压', + message22: '*透析中血管异常功能异常(静脉压高、止血不易、Qb', + message23: '当发生一次异常即须 提出讨论是否安排 PTA。', + 性别: '性别', + 男性: '男性', + 年龄: '年龄', + '60岁以上': '60 岁以上', + 并发症: '并发症', + 糖尿病: '*糖尿病', + 高血压: '*高血压', + 低血压透析前: '低血压(透析前 BP<90/60mmHg,且>3 次/月)', + 抽烟史: '抽烟史', + 血管硬化: '血管硬化', + 血管感染史: '血管感染史', + 心脑血管意外: '心脑血管意外', + 冠心病: '冠心病', + 血管条件: '血管条件', + 细: '*细', + 不明显: '*不明显', + 弹性差: '*弹性差', + 有血管阻塞史: '*有血管阻塞史', + 血管使用年限小于1年: '*血管使用年限<1 年', + 药物使用: '药物使用', + 降压药: '*降压药', + 无肝素透析: '无肝素透析', + 口服抗凝剂: '口服抗凝剂', + 血管护理: '血管护理', + 未规则握球运动: '*未规则握球运动', + 未规则局部热敷: '*未规则局部热敷', + 穿刺前未习惯洗手: '穿刺前未习惯洗手', + 每日未检查血管通畅情况: '每日未检查血管通畅情况', + 血管通路: '血管通路', + 移植: '*移植', + 穿刺方法: '穿刺方法', + 重复穿刺: '*重复穿刺', + 不规则纽扣式: '不规则纽扣式', + 蚂蚁式: '蚂蚁式', + 透析状况: '透析状况', + 水多导致透析低血压当月透析次数: '*水多导致透析低血压(当月透析次数 1/4)', + 水分增加5: '*水分增加 5%(当月透析次数>1/2)', + 止血不易: '*止血不易(加压止血 15min 以上)', + 内瘘感染: '内瘘感染', + 穿刺困难导致血肿: '穿刺困难导致血肿', + 透析中无法维持: 'Qb<200ml/min(透析中无法维持)', + 静脉压高: '静脉压高(Qb=200ml/min,静脉压>150mmHg)', + 中危险群: '中危险群', + 高危险群: '高危险群', + 女性: '女性', + }, + NLRCPGJCB: { + 添加内瘘日常评估检查表: '添加内瘘日常评估检查表', + 修改内瘘日常评估检查表: '修改内瘘日常评估检查表', + 评估日期: '评估日期', + 请选择: '请选择', + 评估人: '评估人', + 肢体肿胀: '肢体肿胀', + 穿刺困难: '穿刺困难', + 拔针后出血时间延长: '拔针后出血时间延长', + ktv在线或urr下降: 'Kt/v(在线)或URR(每月)下降', + 达到处方血流量: '达到处方血流量', + 血管窃血症或疼痛: '血管窃血症或疼痛', + 感染征红肿痛脓点发热: '感染征:红、肿、痛、脓点、发热', + 透析中渗血: '透析中渗血', + 动脉瘤形成: '动脉瘤形成', + 抬臂试验正常: '抬臂试验正常', + 其他: '其他', + 请输入: '请输入', + 汇报医生或通路组员: '汇报医生或通路组员', + 取消: '取消', + 保存: '保存', + 否: '否', + 是: '是', + 操作成功: '操作成功!', + }, + NLWSSQPGB: { + 添加内瘘围手术期评估表: '添加内瘘围手术期评估表', + 修改内瘘围手术期评估表: '修改内瘘围手术期评估表', + 评估日期: '评估日期:', + 请选择: '请选择', + 评估人: '评估人', + 动脉: '动脉', + 搏动: '搏动', + 掌深弓通畅: '掌深弓通畅', + 掌浅弓通畅: '掌浅弓通畅', + 血压测量差异: '血压测量差异:', + 内径值远心端: '内径值(远心端)(mm)', + 内径值近心端: '内径值(近心端)(mm)', + 参考值: '参考值', + 静脉: '静脉', + 与中心静脉是否连续: '与中心静脉是否连续', + 是否狭窄: '是否狭窄', + 是否堵塞: '是否堵塞', + 内径值: '内径值', + allen实验: 'allen实验', + 术后评估: '术后评估', + 手掌肿胀: '手掌肿胀', + 伤口渗血: '伤口渗血', + 取消: '取消', + 保存: '保存', + 强: '强', + 弱: '弱', + 否: '否', + 是: '是', + 高于对侧: '高于对侧', + 低于对侧: '低于对侧', + 阳性五秒内恢复颜色: '阳性(五秒内恢复颜色)', + 阴性颜色恢复延迟: '阴性(颜色恢复延迟)', + 请选择评估时间: '请选择评估时间', + 请选择评估人: '请选择评估人', + 请选择搏动: '请选择搏动', + 请选择掌深弓通畅: '请选择掌深弓通畅', + 请选择掌浅弓通畅: '请选择掌浅弓通畅', + 请选择血压测量差异: '请选择血压测量差异', + 请输入内径值远心端: '请输入内径值(远心端)', + 请输入内径值近心端: '请输入内径值(近心端)', + 请选择与中心静脉是否连续: '请选择与中心静脉是否连续', + 请选择是否狭窄: '请选择是否狭窄', + 请选择是否堵塞: '请选择是否堵塞', + 请输入内径值: '请输入内径值', + 请选择allen实验: '请选择allen实验', + 请选择手掌肿胀: '请选择手掌肿胀', + 请选择伤口渗血: '请选择伤口渗血', + 请选择内瘘通畅: '请选择内瘘通畅', + 操作成功: '操作成功!', + }, + ZTPGB: { + 添加整体评估表: '添加整体评估表', + 修改整体评估表: '修改整体评估表', + 评估日期: '评估日期', + 请选择: '请选择', + 评估人: '评估人', + 项目: '项目', + 请输入: '请输入', + 结果: '结果', + 处理: '处理', + 取消: '取消', + 保存: '保存', + 否: '否', + 是: '是', + 请选择评估时间: '请选择评估时间', + 请选择评估人: '请选择评估人', + 操作成功: '操作成功!', + }, + NLBSGWYSPGBIndex: { + 评估时间: '评估时间', + 评估人: '评估人', + 性别: '性别', + 年龄: '年龄', + 并发症: '并发症', + 血管条件: '血管条件', + 药物使用: '药物使用', + 血管护理: '血管护理', + 血管通路: '血管通路', + 穿刺方法: '穿刺方法', + 透析状况评估: '透析状况评估', + 总分: '总分', + 血管护理计划与措施: '血管护理计划与措施', + 操作: '操作', + 确认要删除当前信息: '确认要删除当前信息?', + 警告: '警告', + 确定: '确定', + 取消: '取消', + 删除成功: '删除成功!', + 取消删除: '取消删除!', + }, + NLCSPGBIndex: { + 评估时间: '评估时间', + 评估人: '评估人', + 血流量: '血流量', + 血管直径: '血管直径', + 血管距皮距离: '血管距皮距离', + 可穿刺血管分支: '可穿刺血管分支(条)', + 主干血管可穿刺长度: '主干血管可穿刺长度(cm)', + AVG血清肿是否消退: 'AVG血清肿是否消退', + 是: '是', + 否: '否', + 是否成熟: '是否成熟', + 操作: '操作', + 确认要删除当前信息: '确认要删除当前信息?', + 警告: '警告', + 确定: '确定', + 取消: '取消', + 删除成功: '删除成功!', + 取消删除: '取消删除!', + }, + NLGNZAPGBIndex: { + 评估时间: '评估时间', + 评估人: '评估人', + 无任何表现: '无任何表现', + 听及狭窄在狭窄区域听到高调音: '听及狭窄:在狭窄区域听到高调音', + 静脉压增高大于170: '静脉压增高>170mmhg', + 可视或扪及明显的狭窄区域: '可视或扪及明显的狭窄区域', + 止血时间延长: '止血时间延长', + 血流量不足朝向吻合口的穿刺: '血流量不足(朝向吻合口的穿刺)', + 动静脉下降250: '动静脉下降<-250mmhg', + 震颤明显减弱: '震颤明显减弱', + 内瘘侧肿胀: '内瘘侧肿胀', + 总分: '总分', + 操作: '操作', + 确认要删除当前信息: '确认要删除当前信息?', + 警告: '警告', + 确定: '确定', + 取消: '取消', + 删除成功: '删除成功!', + 取消删除: '取消删除', + }, + NLRCPGJCBIndex: { + 评估时间: '评估时间', + 评估人: '评估人', + 肢体肿胀: '肢体肿胀', + 是: '是', + 否: '否', + 穿刺困难: '穿刺困难', + 拔针后出血时间延长: '拔针后出血时间延长', + ktv在线URR下降: 'Kt/v(在线)或URR(每月)下降', + 达到处方血流量: '达到处方血流量', + 血管窃血症或疼痛: '血管窃血症或疼痛', + 感染征红肿痛脓点发热: '感染征:红、肿、痛、脓点、发热', + 透析中渗血: '透析中渗血', + 动脉瘤形成: '动脉瘤形成', + 抬臂试验正常: '抬臂试验正常', + 其他: '其他', + 汇报医生或通路组员: '汇报医生或通路组员', + 操作: '操作', + 确认要删除当前信息: '确认要删除当前信息?', + 警告: '警告', + 确定: '确定', + 取消: '取消', + 删除成功: '删除成功!', + 取消删除: '取消删除!', + }, + NLWSSQPGBIndex: { + 评估时间: '评估时间', + 评估人: '评估人', + 搏动: '搏动', + 强: '强', + 弱: '弱', + 掌深弓通畅: '掌深弓通畅', + 是: '是', + 否: '否', + 掌浅弓通畅: '掌浅弓通畅', + 血压测量差异: '血压测量差异', + 高与对侧: '高与对侧', + 低于对侧: '低于对侧', + 内径值远心端: '内径值(远心端)', + 内径值近心端: '内径值(近心端)', + 与中心静脉是否连续: '与中心静脉是否连续', + 是否狭窄: '是否狭窄', + 是否堵塞: '是否堵塞', + 内径值: '内径值', + allen实验: 'allen实验', + 阳性五秒内恢复颜色: '阳性(五秒内恢复颜色)', + 阴性颜色恢复延迟: '阴性(颜色恢复延迟)', + 手掌肿胀: '手掌肿胀', + 伤口渗血: '伤口渗血', + 内瘘通畅: '内瘘通畅', + 操作: '操作', + 确认要删除当前信息: '确认要删除当前信息?', + 警告: '警告', + 确定: '确定', + 取消: '取消', + 删除成功: '删除成功!', + 取消删除: '取消删除!', + }, + ZTPGIndex: { + 评估时间: '评估时间', + 评估人: '评估人', + 项目: '项目', + 结果: '结果', + 处理: '处理', + 操作: '操作', + 确认要删除当前信息: '确认要删除当前信息?', + 警告: '警告', + 确定: '确定', + 取消: '取消', + 删除成功: '删除成功!', + 取消删除: '取消删除!', + }, + }, + complication: { + 添加并发症: '添加并发症', + 添加日期: '添加日期', + 请选择: '请选择', + 并发症: '并发症', + 并发症症状: '并发症症状', + 请输入并发症症状: '请输入并发症症状', + 并发症处理: '并发症处理', + 请输入并发症处理: '请输入并发症处理', + 取消: '取消', + 保存: '保存', + 请选择添加日期: '请选择添加日期', + 请选择并发症: '请选择并发症', + 操作成功: '操作成功!', + 修改并发症: '修改并发症', + 确认要删除当前信息: '确认要删除当前信息?', + 警告: '警告', + 确定: '确定', + 删除成功: '删除成功!', + 取消删除: '取消删除!', + 操作: '操作', + }, + pipe: { + 添加导管信息: '添加导管信息', + 导管日期: '导管日期', + 请选择: '请选择', + 卡夫距导管出口距离: '卡夫距导管出口距离', + 导管体外段靠近中线: '导管体外段靠近中线', + 渗血: '渗 血', + 渗液: '渗 液', + 导管周围脓红肿: '导管周围脓/红肿', + A端功能: 'A端功能', + V端功能: 'V端功能', + 通路连接: '通路连接', + 血流量: '血流量', + A端导管容量: 'A端导管容量', + V端导管容量: 'V端导管容量', + 护士: '护 士', + 取消: '取消', + 保存: '保存', + A端: 'A端', + V端: 'V端', + 否: '否', + 陈旧性渗血: '陈旧性渗血', + 压迫止血: '压迫止血', + 缝合止血: '缝合止血', + 是: '是', + 畅通: '畅通', + 出畅进不畅: '出畅进不畅', + 进畅出不畅: '进畅出不畅', + 不畅通: '不畅通', + 正接: '正接', + 反接: '反接', + 请选择导管时间: '请选择导管时间', + 请输入卡夫距导管出口距离: '请输入卡夫距导管出口距离', + 请选择导管体外段靠近中线: '请选择导管体外段靠近中线', + 请选择渗血: '请选择渗血', + 请选择渗液: '请选择渗液', + 请选择导管周围脓红肿: '请选择导管周围脓/红肿', + 请选择A端功能: '请选择A端功能', + 请选择V端功能: '请选择V端功能', + 请选择通路连接: '请选择通路连接', + 请输入血流量: '请输入血流量', + 请输入A端导管容量: '请输入A端导管容量', + 请输入V端导管容量: '请输入V端导管容量', + 请选择护士: '请选择护士', + 操作成功: '操作成功!', + 修改导管信息: '修改导管信息', + AV导管容量: 'A/V导管容量', + 操作: '操作', + 确认要删除当前信息: '确认要删除当前信息?', + }, + puncture: { + 添加穿刺信息: '添加穿刺信息', + 穿刺信息: '穿刺信息', + 穿刺日期: '穿刺日期', + 请选择: '请选择', + A端穿刺方法: 'A端穿刺方法', + V端穿刺方法: 'V端穿刺方法', + A端穿刺类型: 'A端穿刺类型', + V端穿刺类型: 'V端穿刺类型', + A端穿刺针型号: 'A端穿刺针型号', + V端穿刺针型号: 'V端穿刺针型号', + A端穿刺点距吻合口距离: 'A端穿刺点距吻合口距离', + AtV端穿刺点距吻合口距离: 'AtV端穿刺点距吻合口距离', + V端位于分支管: 'V端位于分支管', + 一次成功: '一次成功', + 静脉压: '静脉压', + 血流量: '血流量', + 穿刺护士: '穿刺护士', + 穿刺护士职称: '穿刺护士职称', + 压迫止血记录: '压迫止血记录', + 压迫止血时间: '压迫止血时间', + 红色A端绑带长度: '红色(A端)绑带长度', + 蓝色V端绑带长度: '蓝色(V端)绑带长度', + 手腕周长: '手腕周长', + 红色棉球起点: '红色棉球起点', + 蓝色棉球起点: '蓝色棉球起点', + 红色止血时间: '红色止血时间', + 蓝色止血时间: '蓝色止血时间', + 红色止血刻度: '红色止血刻度', + 蓝色止血刻度: '蓝色止血刻度', + 红色调整刻度: '红色调整刻度', + 蓝色调整刻度: '蓝色调整刻度', + 取消: '取消', + 保存: '保存', + 扣眼法: '扣眼法', + 绳梯法: '绳梯法', + 区域法: '区域法', + 中心v导管: '中心v导管', + 钝针: '钝针', + 锐针: '锐针', + 套管针: '套管针', + 十七号: '17号', + 十六号: '16号', + 十五号: '15号', + 是: '是', + 否: '否', + 白: '白', + 黄: '黄', + 请选择穿刺日期: '请选择穿刺日期', + 请选择A端穿刺方法: '请选择A端穿刺方法', + 请选择V端穿刺方法: '请选择V端穿刺方法', + 请选择A端穿刺类型: '请选择A端穿刺类型', + 请选择V端穿刺类型: '请选择V端穿刺类型', + 请选择A端穿刺针型号: '请选择A端穿刺针型号', + 请选择V端穿刺针型号: '请选择V端穿刺针型号', + 请输入A端穿刺点距吻合口距离: '请输入A端穿刺点距吻合口距离', + 请输入AtV端两穿刺点间距离: '请输入AtV端两穿刺点间距离', + 请选择V端是否位于分支血管: '请选择V端是否位于分支血管', + 请选择是否一次成功: '请选择是否一次成功', + 请输入静脉压: '请输入静脉压', + 请输入血流量: '请输入血流量', + 请选择穿刺护士: '请选择穿刺护士', + 请选择穿刺护士职称: '请选择穿刺护士职称', + 请选择压迫止血时间: '请选择压迫止血时间', + 请输入红色A端绑带长度: '请输入红色(A端)绑带长度', + 请输入蓝色V端绑带长度: '请输入蓝色(V端)绑带长度', + 请输入手腕周长: '请输入手腕周长(cm)', + 请选择红色棉球起点: '请选择红色棉球起点', + 请选择蓝色棉球起点: '请选择蓝色棉球起点', + 请输入红色止血时间: '请输入红色止血时间(min)', + 请输入蓝色止血时间: '请输入蓝色止血时间(min)', + 请输入红色止血刻度: '请输入红色止血刻度', + 请输入蓝色止血刻度: '请输入蓝色止血刻度', + 请输入红色调整刻度: '请输入红色调整刻度', + 请输入蓝色调整刻度: '请输入蓝色调整刻度', + 操作成功: '操作成功!', + 修改穿刺信息: '修改穿刺信息', + 压迫止血记录表: '压迫止血记录表', + 穿刺方法A端V端: '穿刺方法(A端/V端)', + 穿刺类型A端V端: '穿刺类型(A端/V端)', + 穿刺针型号A端V端: '穿刺针型号(A端/V端)', + 查看表单: '查看表单', + 操作: '操作', + 确认要删除当前信息: '确认要删除当前信息?', + 警告: '警告', + 确定: '确定', + 删除成功: '删除成功!', + 取消删除: '取消删除!', + }, + SiteRecord: { + 位点记录列表: '位点记录列表', + 查询日期: '查询日期', + 至: '至', + 开始时间: '开始时间', + 结束时间: '结束时间', + 打印: '打印', + 导出: '导出', + 序号: '序号', + 透析单日期: '透析单日期', + 患者姓名: '患者姓名', + A端位点: 'A端位点', + V端位点: 'V端位点', + 透前内瘘: '透前内瘘', + 透后内瘘: '透后内瘘', + 穿刺护士: '穿刺护士', + 操作: '操作', + 修改: '修改', + 修改点位: '修改点位', + 请选择: '请选择', + 取消: '取消', + 确定: '确定', + 血透中心位点记录单: '血透中心位点记录单', + 修改成功: '修改成功', + 患者位点记录表: '患者位点记录表', + 该日期透析单已归档禁止修改: '该日期透析单已归档,禁止修改', + }, + ultrasonography: { + 添加超声检查: '添加超声检查', + 添加维护记录: '添加维护记录', + 添加拔出记录: '添加拔出记录', + 检查日期: '检查日期', + 请选择日期: '请选择日期', + 检查部位: '检查部位', + 请输入: '请输入', + 检查所见: '检查所见', + 维护实图: "当日维护实图", + 请输入检查所见: '请输入检查所见', + 维护项目: "维护项目", + 维护时间: "维护日期", + 维护人员: "维护人员", + 拔出人员: "拔出人员", + 拔出日期: "拔出日期", + 拔出原因: "拔出原因", + 导管完整性检查情况: "导管完整性检查情况", + 患者反应: "患者反应", + 医生签字: "医生签字", + 备注: '备注', + 上传图片: '上传图片', + 上传: '上 传', + 大小不能超过: '大小不能超过', + 取消: '取消', + 保存: '保存', + 请选择检查日期: '请选择检查日期', + 请输入检查部位: '请输入检查部位', + 当前限制选择10个文件: '当前限制选择 10 个文件!', + 图片必须是jpgpng格式: '图片必须是jpg/png格式!', + 图片大小不能超过2MB: '图片大小不能超过2MB!', + 操作成功: '操作成功!', + 超声检查详情: '超声检查详情', + 修改超声检查: '修改超声检查', + 操作: '操作', + 确认要删除当前信息: '确认要删除当前信息?', + 警告: '警告', + 确定: '确定', + 删除成功: '删除成功!', + 取消删除: '取消删除!', + }, + vascularAccessList: { + 血管通路: '血管通路', + 建立日期: '建立日期', + 请选择: '请选择', + 通路部位: '通路部位', + 通路类型: '通路类型', + 首次启用日期: '首次启用日期', + 流入流出道: '流入-流出道', + 请输入选择: '请输入/选择', + 默认到处方: '默认到处方', + 医生: '医生', + 使用状态: '使用状态', + 停用日期: '停用日期', + 停用原因: '停用原因', + 请输入: '请输入', + 备注: '备注', + 以下信息用于国网上报: '以下信息用于国网上报', + 血管通路位置左右: '血管通路位置(左-右)', + 血管通路类型: '血管通路类型', + 其它: '其它', + 描述: '描述', + 自体内瘘: '自体内瘘', + 移植血管: '移植血管', + 血管通路位置: '血管通路位置', + 临时中心静脉置管: '临时中心静脉置管', + 长期中心静脉置管: '长期中心静脉置管', + 中心静脉置管方法: '中心静脉置管方法', + 取消: '取消', + 确定: '确定', + 颈V: '颈V', + 股V: '股V', + 肱A肱V: '肱A-肱V', + 股A大隐V: '股A-大隐V', + 上臂肱A贵要V: '上臂肱A-贵要V', + 肱A上臂头V: '肱A-上臂头V', + 桡A贵要V: '桡A-贵要V', + 尺A贵要V: '尺A-贵要V', + 桡A头V: '桡A-头V', + 肱动脉穿静脉: '肱动脉-穿静脉', + 肱A肘正中V: '肱A-肘正中V', + 左: '左', + 右: '右', + 前臂: '前臂', + 上臂: '上臂', + 下肢: '下肢', + 颈内静脉: '颈内静脉', + 股静脉: '股静脉', + 锁骨下静脉: '锁骨下静脉', + 颈外静脉: '颈外静脉', + 超声介入: '超声介入', + X线介入: 'X线介入', + 盲穿: '盲穿', + 请选择首次启用日期: '请选择首次启用日期', + 请选择建立日期: '请选择建立日期', + 请选择通路部位: '请选择通路部位', + 请选择通路类型: '请选择通路类型', + 请输入流入流出道: '请输入流入-流出道', + 请选择手术医生: '请选择手术医生', + 请选择使用状态: '请选择使用状态', + 请选择停用日期: '请选择停用日期', + 请先取消默认到处方: '请先取消默认到处方', + 操作成功: '操作成功', + }, + xgtlTool: { + 血管通路图: '血管通路图', + 更换图片: '更换图片', + 编辑: '编辑', + 打印: '打印', + 保存: '保存', + 取消: '取消', + 添加说明: '添加说明', + A端: 'A端', + 点击添加标记: '点击添加标记', + V端: 'V端', + 穿刺角度: '穿刺角度', + 卡夫距导管出口距离cm: '卡夫距导管出口距离cm', + 动脉端向心穿刺: '动脉端向心穿刺', + 动脉端离心穿刺: '动脉端离心穿刺', + 静脉端向心穿刺: '静脉端向心穿刺', + 手背朝上: '手背朝上', + 手掌朝上: '手掌朝上', + 虎口朝上: '虎口朝上', + 自定义: '自定义', + 进针方位: '进针方位', + 辅助工具: '辅助工具', + 说明中心点对准穿刺点直线与血管平行时钟刻度为进针方位用A端V端进针方位的箭头指示: + '说明:中心点对准穿刺点,直线与血管平行,时钟刻度为进针方位,用A端/V端进针方位的箭头指示。', + 查看示意图: '查看示意图', + 添加文本标记: '添加文本标记', + 示意图: '示意图', + 图片修改成功: '图片修改成功', + 你确定要放弃这次编辑的血管通路图: '你确定要放弃这次编辑的血管通路图?', + 提示: '提示', + 确认: '确认', + 你确定要保存这次编辑的血管通路图: '你确定要保存这次编辑的血管通路图?', + 打印日期: '打印日期', + 肾透血液管理软件血管通路图: '肾透血液管理软件血管通路图', + 患者姓名: '患者姓名', + 没有启用编辑: '没有启用编辑', + 没有开启编辑状态: '没有开启编辑状态', + }, +}; diff --git a/src/i18n/pages/PatientManage/vascularAccess/zh-tw.ts b/src/i18n/pages/PatientManage/vascularAccess/zh-tw.ts new file mode 100644 index 0000000..e85e42a --- /dev/null +++ b/src/i18n/pages/PatientManage/vascularAccess/zh-tw.ts @@ -0,0 +1,826 @@ +export default { + 新建通路: '新建通路', + 建立日期: '建立日期', + 通路部位: '通路部位', + 通路类型: '通路類型', + 流入流出道: '流入-流出道', + 首次启用日期: '首次啟用日期', + 默认到处方: '默認到處方', + 医生: '醫生', + 停用日期: '停用日期', + 停用原因: '停用原因', + 备注: '備註', + 操作: '操作', + 添加此项: '添加此項', + 操作记录: '操作記録', + 超声检查: '超聲檢查', + 通路评估: '通路評估', + 穿刺信息: '穿刺信息', + 导管信息: '導管信息', + 并发症及处理: '併發症及處理', + 维护记录: '維護記錄', + 拔出记录: '拔出記録', + 内瘘围手术期评估表: '內瘘圍手術期評估表', + 内瘘成熟评估表: '內瘘成熟評估表', + 内瘘日常评估检查表: '內瘘日常評估檢查表', + 内瘘功能障碍狭隘评估表: '內瘘功能障礙(狹隘)評估表', + 动静脉内瘘闭塞高危因素评估表: '動靜脈內瘘閉塞高危因素評估表', + 整体评估: '整體評估', + 未选择患者: '未選擇患者!', + 此操作将永久删除该数据是否继续: '此操作將永久刪除該數據,是否繼續?', + 提示: '提示', + 确认: '確認', + 取消: '取消', + 删除成功: '刪除成功!', + 未选择血管通路: '未選擇血管通路!', + 本院启用日期: '本院啟用日期"', + access: { + DJMNLBSGWYSPGB: { + 添加动静脉内瘘闭塞高危因素评估表: '添加動靜脈內瘘閉塞高危因素評估表', + 修改动静脉内瘘闭塞高危因素评估表: '修改動靜脈內瘘閉塞高危因素評估表', + 评估日期: '評估日期:', + 请选择: '請選擇', + 评估人: '評估人:', + 项目: '項目', + 选择: '選擇', + 危险因素: '危險因素', + 标准分: '標準分', + 血管护理计划: '血管護理計劃', + 一般危险人群: '一般危險人群', + 评估表得分总分: '評估表得分:總分', + '10分': '10 分', + 护理计划: '護理計劃', + message1: + '1.制定血管護理計劃(給內瘘日常護理及如何促進血管功能健康教育單);根據患者血管功能情況決定握球次數(0-1 次/日),熱敷至少 1 次/日,15min/次。', + message2: '2.透析中血管功能異常(靜脈壓高、止血不易、Qb<200 ml/min)當連續發生 3 次異常即須提出討論是否排 PTA(經皮腔內血管成形術)。', + 中危险群符合以上任一选项条件者勾选此项: '中危險群(符合以上任一選項條件者勾選此項)', + message3: '1.60 歲以上、血管性質為 Graft', + message4: '2.血管條件得分為 6 分', + message5: '3.透析狀態評估有 2 項異常', + message6: '4.評估表得分總分 11—20 分', + message7: + '1.制定血管護理計劃(給內瘘日常護理及如何促進血管功能健康教育單);握球(含 Graft)運動至少 2 次/日(早晚),至少 50 下/次及 2 次(早晚)每次 15min。', + message8: '2.透析狀況評估異常,根據患者問題護理計劃(護理計劃單執行及評值)', + message9: '*透析中血管功能異常(靜脈壓高、止血不易、Qb', + message10: '當連續發生 3 次異常即須提出討論是否排 PTA', + 高危险群符合以下任一选项条件者勾选此项: '高危險群(符合以下任一選項條件者勾選此項)', + message11: '1.男性、60 歲以上、血管性質為移植', + message12: '2.血管條件得分為 8 分', + message13: '3.透析狀態評估有 3 項以上異常', + message14: '4.評估表得分總分 21 分以上', + message15: + '1.制定血管護理計劃(給內瘘日常護理及如何促進血管功能健康教育單);握球(含 Graft)運動至少 2 次/日(早晚),至少 50 下/次及 2 次(早晚)每次 15min。', + message16: '2.透析狀況評估異常護理計劃(護理計劃單執行及評值)', + message17: '*水多導致透析低血壓', + message18: '*水分增加>5%', + message19: '*透析中低血壓', + message20: '*透析中血管異常功能異常(靜脈壓高、止血不易、Qb', + message21: '當發生一次異常即須提出討論是否安排 PTA。', + 总分: '總分', + 取消: '取消', + 保存: '保存', + 性别: '性別', + 男性: '男性', + 年龄: '年齡', + '60岁以上': '60 歲以上', + 并发症: '併發症', + 糖尿病: '*糖尿病', + 高血压: '*高血壓', + 低血压: '低血壓(透析前 BP<90/60mmHg,且>3 次/月)', + 抽烟史: '抽煙史', + 血管硬化: '血管硬化', + 血管感染史: '血管感染史', + 心脑血管意外: '心腦血管意外', + 冠心病: '冠心病', + 血管条件: '血管條件', + 细: '*細', + 不明显: '*不明顯', + 弹性差: '*彈性差', + 有血管阻塞史: '*有血管阻塞史', + 血管使用年限小于1年: '*血管使用年限<1 年', + 药物使用: '藥物使用', + 降压药: '*降壓藥', + 无肝素透析: '無肝素透析', + 口服抗凝剂: '口服抗凝劑', + 血管护理: '血管護理', + 未规则握球运动: '*未規則握球運動', + 未规则局部热敷: '*未規則局部熱敷', + 穿刺前未习惯洗手: '穿刺前未習慣洗手', + 每日未检查血管通畅情况: '每日未檢查血管通暢情況', + 血管通路: '血管通路', + 移植: '移植*', + 穿刺方法: '穿刺方法', + 重复穿刺: '重複穿刺', + 不规则纽扣式: '不規則鈕扣式', + 蚂蚁式: '螞蟻式', + 透析状况: '透析狀況', + 水多导致透析低血压: '*水多導致透析低血壓(當月透析次數 1/4)', + 水分增加5: '*水分增加 5%(當月透析次數>1/2)', + 止血不易: '*止血不易(加壓止血 15min 以上)', + 内瘘感染: '內瘘感染', + 穿刺困难导致血肿: '穿刺困難導致血腫', + 透析中无法维持: 'Qb<200ml/min(透析中無法維持)', + 静脉压高ob200: '靜脈壓高(Qb=200ml/min,靜脈壓>150mmHg)', + 请选择评估时间: '請選擇評估時間', + 请选择评估人: '請選擇評估人', + 女性: '女性', + 中危险群: '中危險群', + 高危险群: '高危險群', + 操作成功: '操作成功!', + }, + BLCSPGB: { + 添加内瘘成熟评估表: '添加內瘘成熟評估表', + 修改内瘘成熟评估表: '修改內瘘成熟評估表', + 评估日期: '評估日期', + 请选择: '請選擇', + 评估人: '評估人', + 血流量: '血流量', + 参考值: '參考值', + 血管直径: '血管直徑', + 血管距皮距离: '血管距皮距離', + 可穿刺血管分支: '可穿刺血管分支(條)', + 主干血管可穿刺长度: '主幹血管可穿刺長度', + AVG血清肿是否消退: 'AVG血清腫是否消退', + 是否成熟: '是否成熟', + 取消: '取消', + 保存: '保存', + 否: '否', + 是: '是', + 请选择评估时间: '請選擇評估時間', + 请选择评估人: '請選擇評估人', + 请输入血流量: '請輸入血流量', + 请输入血管直径: '請輸入血管直徑', + 请输入血管距皮距离: '請輸入血管距皮距離', + 请输入可穿刺血管分支: '請輸入可穿刺血管分支', + 请输入主干血管可穿刺长度: '請輸入主幹血管可穿刺長度', + 请选择AVG血清肿是否消退: '請選擇AVG血清腫是否消退', + 请选择是否成熟: '請選擇是否成熟', + 操作成功: '操作成功!', + }, + NLGNZAPGB: { + 添加内瘘功能障碍评估表: '新增內瘘功能障礙評估表', + 修改内瘘功能障碍评估表: '修改內瘘功能障礙評估表', + 评估日期: '評估日期:', + 请选择: '請選擇', + 评估人: '評估人:', + 评估信息: '評估資訊', + 评估标准: '評估標準', + 总分: '總分:', + 备注三分或以上需要报告通路医生进行干预: '備註:三分或以上需要報告通路醫生進行干預', + 取消: '取消', + 保存: '儲存', + 无任何表现: '無任何表現', + 听及狭窄在狭窄区域听到高调音: '聽及狹窄:在狹窄區域聽到高調音', + 静脉压增高大于160: '靜脈壓增高>160mmHg', + 可视或扪及明显的狭窄区域: '可視或摹及明顯的狹窄區域', + 止血时间延长: '止血時間延長', + 血流量不足朝向吻合口的穿刺: '血流量不足(朝向吻合口的穿刺)', + 动静脉下降小于负250: '動靜脈下降<-250mmHg', + 震颤明显减弱: '震顫明顯減弱', + 内瘘侧肿胀: '內瘘側腫脹', + 请选择评估时间: '請選擇評估時間', + 请选择评估人: '請選擇評估人', + 操作成功: '操作成功!', + 项目: '項目', + 选择: '選擇', + 危险因素: '危險因素', + 标准分: '標準分', + 血管护理计划: '血管護理計劃', + 一般危险人群: '一般危險人群', + 评估表得分: '*評估表得分', + 分: '分', + 护理计划: '護理計劃', + message1: + '1.制定血管護理計劃(給內瘘日常護理及如何促進血管功能健康教育單);根據患者血管功能情況決定握球次數(0-1 次/日),熱敷至少 1 次/日,15min/次。', + message2: '2.透析中血管功能異常(靜脈壓高、止血不易、Qb', + message3: '200 ml/min)當連續發生 3 次異常即須提出討論是否排 PTA(經皮腔內血管成形術)。', + message4: '中危險群(符合以上任一選項條件者勾選此項)', + message5: '1.60 歲以上、血管性質為 Graft', + message6: '2.血管條件得分為 6 分', + message7: '3.透析狀態評估有 2 項異常', + message8: '4.評估表得分總分 11—20 分', + message9: + '1.制定血管護理計劃(給內瘘日常護理及如何促進血管功能健康教育單);握球(含 Graft)運動至少 2 次/日(早晚),至少 50 下/次及 2 次(早晚)每次 15min。', + message10: '2.透析狀況評估異常,根據患者問題護理計劃(護理計劃單執行及評值)', + message11: '*透析中血管功能異常(靜脈壓高、止血不易、Qb', + message12: '當連續發生 3 次異常即須 提出討論是否排 PTA。', + 高危险群符合以下任一选项条件者勾选此项: '高危險群(符合以下任一選項條件者勾選此項)', + message13: '1.男性、60 歲以上、血管性質為移植', + message14: '2.血管條件得分為 8 分', + message15: '3.透析狀態評估有 3 項以上異常', + message16: '4.評估表得分總分 21 分以上', + message17: + '1.制定血管護理計劃(給內瘘日常護理及如何促進血管功能健康教育單);握球(含 Graft)運動至少 2 次/日(早晚),至少 50 下/次及 2 次(早晚)每次 15min。', + message18: '2.透析狀況評估異常護理計劃(護理計劃單執行及評值)', + message19: '*水多導致透析低血壓', + message20: '*水分增加>5%', + message21: '*透析中低血壓', + message22: '*透析中血管異常功能異常(靜脈壓高、止血不易、Qb', + message23: '當發生一次異常即須 提出討論是否安排 PTA。', + 性别: '性別', + 男性: '男性', + 年龄: '年齡', + '60岁以上': '60 歲以上', + 并发症: '併發症', + 糖尿病: '*糖尿病', + 高血压: '*高血壓', + 低血压透析前: '低血壓(透析前 BP<90/60mmHg,且>3 次/月)', + 抽烟史: '抽煙史', + 血管硬化: '血管硬化', + 血管感染史: '血管感染史', + 心脑血管意外: '心腦血管意外', + 冠心病: '冠心病', + 血管条件: '血管條件', + 细: '*細', + 不明显: '*不明顯', + 弹性差: '*彈性差', + 有血管阻塞史: '*有血管阻塞史', + 血管使用年限小于1年: '*血管使用年限<1 年', + 药物使用: '藥物使用', + 降压药: '*降壓藥', + 无肝素透析: '無肝素透析', + 口服抗凝剂: '口服抗凝劑', + 血管护理: '血管護理', + 未规则握球运动: '*未規則握球運動', + 未规则局部热敷: '*未規則局部熱敷', + 穿刺前未习惯洗手: '穿刺前未習慣洗手', + 每日未检查血管通畅情况: '每日未檢查血管通暢情況', + 血管通路: '血管通路', + 移植: '*移植', + 穿刺方法: '穿刺方法', + 重复穿刺: '*重複穿刺', + 不规则纽扣式: '不規則紐扣式', + 蚂蚁式: '螞蟻式', + 透析状况: '透析狀況', + 水多导致透析低血压当月透析次数: '*水多導致透析低血壓(當月透析次數 1/4)', + 水分增加5: '*水分增加 5%(當月透析次數>1/2)', + 止血不易: '*止血不易(加壓止血 15min 以上)', + 内瘘感染: '內瘘感染', + 穿刺困难导致血肿: '穿刺困難導致血腫', + 透析中无法维持: 'Qb<200ml/min(透析中無法維持)', + 静脉压高: '靜脈壓高(Qb=200ml/min,靜脈壓>150mmHg)', + 中危险群: '中危險群', + 高危险群: '高危險群', + 女性: '女性', + }, + NLRCPGJCB: { + 添加内瘘日常评估检查表: '新增內瘘日常評估檢查表', + 修改内瘘日常评估检查表: '修改內瘘日常評估檢查表', + 评估日期: '評估日期', + 请选择: '請選擇', + 评估人: '評估人', + 肢体肿胀: '肢體腫脹', + 穿刺困难: '穿刺困難', + 拔针后出血时间延长: '拔針後出血時間延長', + ktv在线或urr下降: 'Kt/v(在線)或URR(每月)下降', + 达到处方血流量: '達到處方血流量', + 血管窃血症或疼痛: '血管竊血症或疼痛', + 感染征红肿痛脓点发热: '感染徵:紅、腫、痛、膿點、發熱', + 透析中渗血: '透析中滲血', + 动脉瘤形成: '動脈瘤形成', + 抬臂试验正常: '抬臂試驗正常', + 其他: '其他:', + 请输入: '請輸入', + 汇报医生或通路组员: '匯報醫生或通路組員', + 取消: '取消', + 保存: '儲存', + 否: '否', + 是: '是', + 操作成功: '操作成功!', + }, + NLWSSQPGB: { + 添加内瘘围手术期评估表: '新增內瘘圍手術期評估表', + 修改内瘘围手术期评估表: '修改內瘘圍手術期評估表', + 评估日期: '評估日期:', + 请选择: '請選擇', + 评估人: '評估人', + 动脉: '動脈', + 搏动: '搏動', + 掌深弓通畅: '掌深弓通暢', + 掌浅弓通畅: '掌淺弓通暢', + 血压测量差异: '血壓測量差異:', + 内径值远心端: '內徑值(遠心端)(mm)', + 内径值近心端: '內徑值(近心端)(mm)', + 参考值: '參考值', + 静脉: '靜脈', + 与中心静脉是否连续: '與中心靜脈是否連續', + 是否狭窄: '是否狹窄', + 是否堵塞: '是否堵塞', + 内径值: '內徑值', + allen实验: 'allen實驗', + 术后评估: '術後評估', + 手掌肿胀: '手掌腫脹', + 伤口渗血: '傷口滲血', + 取消: '取消', + 保存: '儲存', + 强: '強', + 弱: '弱', + 否: '否', + 是: '是', + 高于对侧: '高於對側', + 低于对侧: '低於對側', + 阳性五秒内恢复颜色: '陽性(五秒內恢復顏色)', + 阴性颜色恢复延迟: '陰性(顏色恢復延遲)', + 请选择评估时间: '請選擇評估時間', + 请选择评估人: '請選擇評估人', + 请选择搏动: '請選擇搏動', + 请选择掌深弓通畅: '請選擇掌深弓通暢', + 请选择掌浅弓通畅: '請選擇掌淺弓通暢', + 请选择血压测量差异: '請選擇血壓測量差異', + 请输入内径值远心端: '請輸入內徑值(遠心端)', + 请输入内径值近心端: '請輸入內徑值(近心端)', + 请选择与中心静脉是否连续: '請選擇與中心靜脈是否連續', + 请选择是否狭窄: '請選擇是否狹窄', + 请选择是否堵塞: '請選擇是否堵塞', + 请输入内径值: '請輸入內徑值', + 请选择allen实验: '請選擇allen實驗', + 请选择手掌肿胀: '請選擇手掌腫脹', + 请选择伤口渗血: '請選擇傷口滲血', + 请选择内瘘通畅: '請選擇內瘘通暢', + 操作成功: '操作成功!', + }, + ZTPGB: { + 添加整体评估表: '新增整體評估表', + 修改整体评估表: '修改整體評估表', + 评估日期: '評估日期:', + 请选择: '請選擇', + 评估人: '評估人:', + 项目: '項目:', + 请输入: '請輸入', + 结果: '結果:', + 处理: '處理:', + 取消: '取消', + 保存: '儲存', + 否: '否', + 是: '是', + 请选择评估时间: '請選擇評估時間', + 请选择评估人: '請選擇評估人', + 操作成功: '操作成功!', + }, + NLBSGWYSPGBIndex: { + 评估时间: '評估時間', + 评估人: '評估人', + 性别: '性別', + 年龄: '年齡', + 并发症: '併發症', + 血管条件: '血管條件', + 药物使用: '藥物使用', + 血管护理: '血管護理', + 血管通路: '血管通路', + 穿刺方法: '穿刺方法', + 透析状况评估: '透析狀況評估', + 总分: '總分', + 血管护理计划与措施: '血管護理計劃與措施', + 操作: '操作', + 确认要删除当前信息: '確認要刪除當前信息?', + 警告: '警告', + 确定: '確定', + 取消: '取消', + 删除成功: '刪除成功!', + 取消删除: '取消刪除!', + }, + NLCSPGBIndex: { + 评估时间: '評估時間', + 评估人: '評估人', + 血流量: '血流量', + 血管直径: '血管直徑', + 血管距皮距离: '血管距皮距離', + 可穿刺血管分支: '可穿刺血管分支(條)', + 主干血管可穿刺长度: '主幹血管可穿刺長度(cm)', + AVG血清肿是否消退: 'AVG血清腫是否消退', + 是: '是', + 否: '否', + 是否成熟: '是否成熟', + 操作: '操作', + 确认要删除当前信息: '確認要刪除當前信息?', + 警告: '警告', + 确定: '確定', + 取消: '取消', + 删除成功: '刪除成功!', + 取消删除: '取消刪除!', + }, + NLGNZAPGBIndex: { + 评估时间: '評估時間', + 评估人: '評估人', + 无任何表现: '無任何表現', + 听及狭窄在狭窄区域听到高调音: '聽及狹窄:在狹窄區域聽到高調音', + 静脉压增高大于170: '靜脈壓增高>170mmhg', + 可视或扪及明显的狭窄区域: '可視或摸及明顯的狹窄區域', + 止血时间延长: '止血時間延長', + 血流量不足朝向吻合口的穿刺: '血流量不足(朝向吻合口的穿刺)', + 动静脉下降250: '動靜脈下降<-250mmhg', + 震颤明显减弱: '震顫明顯減弱', + 内瘘侧肿胀: '內瘘側腫脹', + 总分: '總分', + 操作: '操作', + 确认要删除当前信息: '確認要刪除當前信息?', + 警告: '警告', + 确定: '確定', + 取消: '取消', + 删除成功: '刪除成功!', + 取消删除: '取消刪除', + }, + NLRCPGJCBIndex: { + 评估时间: '評估時間', + 评估人: '評估人', + 肢体肿胀: '肢體腫脹', + 是: '是', + 否: '否', + 穿刺困难: '穿刺困難', + 拔针后出血时间延长: '拔針後出血時間延長', + ktv在线URR下降: 'Kt/v(在線)或URR(每月)下降', + 达到处方血流量: '達到處方血流量', + 血管窃血症或疼痛: '血管竊血症或疼痛', + 感染征红肿痛脓点发热: '感染徵:紅、腫、痛、脓點、發熱', + 透析中渗血: '透析中滲血', + 动脉瘤形成: '動脈瘤形成', + 抬臂试验正常: '抬臂試驗正常', + 其他: '其他', + 汇报医生或通路组员: '匯報醫生或通路組員', + 操作: '操作', + 确认要删除当前信息: '確認要刪除當前信息?', + 警告: '警告', + 确定: '確定', + 取消: '取消', + 删除成功: '刪除成功!', + 取消删除: '取消刪除!', + }, + NLWSSQPGBIndex: { + 评估时间: '評估時間', + 评估人: '評估人', + 搏动: '搏動', + 强: '強', + 弱: '弱', + 掌深弓通畅: '掌深弓通暢', + 是: '是', + 否: '否', + 掌浅弓通畅: '掌淺弓通暢', + 血压测量差异: '血壓測量差異', + 高与对侧: '高於對側', + 低于对侧: '低於對側', + 内径值远心端: '內徑值(遠心端)', + 内径值近心端: '內徑值(近心端)', + 与中心静脉是否连续: '與中心靜脈是否連續', + 是否狭窄: '是否狹窄', + 是否堵塞: '是否堵塞', + 内径值: '內徑值', + allen实验: 'allen實驗', + 阳性五秒内恢复颜色: '陽性(五秒內恢復顏色)', + 阴性颜色恢复延迟: '陰性(顏色恢復延遲)', + 手掌肿胀: '手掌腫脹', + 伤口渗血: '傷口滲血', + 内瘘通畅: '內瘘通暢', + 操作: '操作', + 确认要删除当前信息: '確認要刪除當前信息?', + 警告: '警告', + 确定: '確定', + 取消: '取消', + 删除成功: '刪除成功!', + 取消删除: '取消刪除!', + }, + ZTPGIndex: { + 评估时间: '評估時間', + 评估人: '評估人', + 项目: '項目', + 结果: '結果', + 处理: '處理', + 操作: '操作', + 确认要删除当前信息: '確認要刪除當前信息?', + 警告: '警告', + 确定: '確定', + 取消: '取消', + 删除成功: '刪除成功!', + 取消删除: '取消刪除!', + }, + }, + complication: { + 添加并发症: '添加併發症', + 添加日期: '添加日期:', + 请选择: '請選擇', + 并发症: '併發症:', + 并发症症状: '併發症症狀:', + 请输入并发症症状: '請輸入併發症症狀', + 并发症处理: '併發症處理:', + 请输入并发症处理: '請輸入併發症處理', + 取消: '取消', + 保存: '保存', + 请选择添加日期: '請選擇添加日期', + 请选择并发症: '請選擇併發症', + 操作成功: '操作成功!', + 修改并发症: '修改併發症', + 确认要删除当前信息: '確認要刪除當前信息?', + 警告: '警告', + 确定: '確定', + 删除成功: '刪除成功!', + 取消删除: '取消刪除!', + 操作: '操作', + }, + pipe: { + 添加导管信息: '添加導管信息', + 导管日期: '導管日期:', + 请选择: '請選擇', + 卡夫距导管出口距离: '卡夫距導管出口距離', + 导管体外段靠近中线: '導管體外段靠近中線', + 渗血: '滲血', + 渗液: '滲液', + 导管周围脓红肿: '導管周圍膿/紅腫', + A端功能: 'A端功能', + V端功能: 'V端功能', + 通路连接: '通路連接', + 血流量: '血流量', + A端导管容量: 'A端導管容量', + V端导管容量: 'V端導管容量', + 护士: '護士', + 取消: '取消', + 保存: '保存', + A端: 'A端', + V端: 'V端', + 否: '否', + 陈旧性渗血: '陳舊性滲血', + 压迫止血: '壓迫止血', + 缝合止血: '縫合止血', + 是: '是', + 畅通: '暢通', + 出畅进不畅: '出暢進不暢', + 进畅出不畅: '進暢出不暢', + 不畅通: '不暢通', + 正接: '正接', + 反接: '反接', + 请选择导管时间: '請選擇導管時間', + 请输入卡夫距导管出口距离: '請輸入卡夫距導管出口距離', + 请选择导管体外段靠近中线: '請選擇導管體外段靠近中線', + 请选择渗血: '請選擇滲血', + 请选择渗液: '請選擇滲液', + 请选择导管周围脓红肿: '請選擇導管周圍膿/紅腫', + 请选择A端功能: '請選擇A端功能', + 请选择V端功能: '請選擇V端功能', + 请选择通路连接: '請選擇通路連接', + 请输入血流量: '請輸入血流量', + 请输入A端导管容量: '請輸入A端導管容量', + 请输入V端导管容量: '請輸入V端導管容量', + 请选择护士: '請選擇護士', + 操作成功: '操作成功!', + 修改导管信息: '修改導管信息', + AV导管容量: 'A/V導管容量', + 操作: '操作', + 确认要删除当前信息: '確認要刪除當前信息?', + }, + puncture: { + 添加穿刺信息: '添加穿刺信息', + 穿刺信息: '穿刺信息', + 穿刺日期: '穿刺日期:', + 请选择: '請選擇', + A端穿刺方法: 'A端穿刺方法', + V端穿刺方法: 'V端穿刺方法', + A端穿刺类型: 'A端穿刺類型', + V端穿刺类型: 'V端穿刺類型', + A端穿刺针型号: 'A端穿刺針型號', + V端穿刺针型号: 'V端穿刺針型號', + A端穿刺点距吻合口距离: 'A端穿刺點距吻合口距離', + AtV端穿刺点距吻合口距离: 'AtV端穿刺點距吻合口距離', + V端位于分支管: 'V端位於分支管', + 一次成功: '一次成功', + 静脉压: '靜脈壓', + 血流量: '血流量', + 穿刺护士: '穿刺護士', + 穿刺护士职称: '穿刺護士職稱', + 压迫止血记录: '壓迫止血記錄', + 压迫止血时间: '壓迫止血時間', + 红色A端绑带长度: '紅色(A端)綁帶長度', + 蓝色V端绑带长度: '藍色(V端)綁帶長度', + 手腕周长: '手腕周長', + 红色棉球起点: '紅色棉球起點', + 蓝色棉球起点: '藍色棉球起點', + 红色止血时间: '紅色止血時間', + 蓝色止血时间: '藍色止血時間', + 红色止血刻度: '紅色止血刻度', + 蓝色止血刻度: '藍色止血刻度', + 红色调整刻度: '紅色調整刻度', + 蓝色调整刻度: '藍色調整刻度', + 取消: '取消', + 保存: '保存', + 扣眼法: '扣眼法', + 绳梯法: '繩梯法', + 区域法: '區域法', + 中心v导管: '中心v導管', + 钝针: '鈍針', + 锐针: '銳針', + 套管针: '套管針', + 十七号: '17號', + 十六号: '16號', + 十五号: '15號', + 是: '是', + 否: '否', + 白: '白', + 黄: '黃', + 请选择穿刺日期: '請選擇穿刺日期', + 请选择A端穿刺方法: '請選擇A端穿刺方法', + 请选择V端穿刺方法: '請選擇V端穿刺方法', + 请选择A端穿刺类型: '請選擇A端穿刺類型', + 请选择V端穿刺类型: '請選擇V端穿刺類型', + 请选择A端穿刺针型号: '請選擇A端穿刺針型號', + 请选择V端穿刺针型号: '請選擇V端穿刺針型號', + 请输入A端穿刺点距吻合口距离: '請輸入A端穿刺點距吻合口距離', + 请输入AtV端两穿刺点间距离: '請輸入AtV端兩穿刺點間距離', + 请选择V端是否位于分支血管: '請選擇V端是否位於分支血管', + 请选择是否一次成功: '請選擇是否一次成功', + 请输入静脉压: '請輸入靜脈壓', + 请输入血流量: '請輸入血流量', + 请选择穿刺护士: '請選擇穿刺護士', + 请选择穿刺护士职称: '請選擇穿刺護士職稱', + 请选择压迫止血时间: '請選擇壓迫止血時間', + 请输入红色A端绑带长度: '請輸入紅色(A端)綁帶長度', + 请输入蓝色V端绑带长度: '請輸入藍色(V端)綁帶長度', + 请输入手腕周长: '請輸入手腕周長(cm)', + 请选择红色棉球起点: '請選擇紅色棉球起點', + 请选择蓝色棉球起点: '請選擇藍色棉球起點', + 请输入红色止血时间: '請輸入紅色止血時間(min)', + 请输入蓝色止血时间: '請輸入藍色止血時間(min)', + 请输入红色止血刻度: '請輸入紅色止血刻度', + 请输入蓝色止血刻度: '請輸入藍色止血刻度', + 请输入红色调整刻度: '請輸入紅色調整刻度', + 请输入蓝色调整刻度: '請輸入藍色調整刻度', + 操作成功: '操作成功!', + 修改穿刺信息: '修改穿刺信息', + 压迫止血记录表: '壓迫止血記錄表', + 穿刺方法A端V端: '穿刺方法(A端/V端)', + 穿刺类型A端V端: '穿刺類型(A端/V端)', + 穿刺针型号A端V端: '穿刺針型號(A端/V端)', + 查看表单: '查看表單', + 操作: '操作', + 确认要删除当前信息: '確認要刪除當前信息?', + 警告: '警告', + 确定: '確定', + 删除成功: '刪除成功!', + 取消删除: '取消刪除!', + }, + SiteRecord: { + 位点记录列表: '位點記錄列表', + 查询日期: '查詢日期', + 至: '至', + 开始时间: '開始時間', + 结束时间: '結束時間', + 打印: '列印', + 导出: '匯出', + 序号: '序號', + 透析单日期: '透析單日期', + 患者姓名: '患者姓名', + A端位点: 'A端位點', + V端位点: 'V端位點', + 透前内瘘: '透前內瘘', + 透后内瘘: '透後內瘘', + 穿刺护士: '穿刺護士', + 操作: '操作', + 修改: '修改', + 修改点位: '修改點位', + 请选择: '請選擇', + 取消: '取消', + 确定: '確定', + 血透中心位点记录单: '血透中心位點記錄單', + 修改成功: '修改成功', + 患者位点记录表: '患者位點記錄表', + 该日期透析单已归档禁止修改: '該日期透析單已歸檔,禁止修改', + }, + ultrasonography: { + 添加超声检查: '添加超聲檢查', + 添加维护记录: '新增維護記錄', + 添加拔出记录: '新增拔出記錄', + 检查日期: '檢查日期', + 请选择日期: '請選擇日期', + 检查部位: '檢查部位', + 请输入: '請輸入', + 检查所见: '檢查所見', + 维护项目: "維護項目 (如換藥、沖管、封管等)", + 维护时间: "維護日期", + 维护人员: "維護人員", + 拔出人员: "拔出人員", + 维护实图: "當日維護實圖", + 拔出日期: "拔出日期", + 拔出原因: "拔出原因 (如治療結束、導管相關併發症難以處理等)", + 导管完整性检查情况: "導管完整性檢查情況", + 患者反应: "患者反應 (有無不適、出血等)", + 医生签字: "醫生簽字", + 请输入检查所见: '請輸入檢查所見', + 备注: '備註', + 上传图片: '上傳圖片', + 上传: '上 傳', + 大小不能超过: '大小不能超過', + 取消: '取消', + 保存: '保存', + 请选择检查日期: '請選擇檢查日期', + 请输入检查部位: '請輸入檢查部位', + 当前限制选择10个文件: '當前限制選擇 10 個文件!', + 图片必须是jpgpng格式: '圖片必須是jpg/png格式!', + 图片大小不能超过2MB: '圖片大小不能超過2MB!', + 操作成功: '操作成功!', + 超声检查详情: '超聲檢查詳情', + 修改超声检查: '修改超聲檢查', + 操作: '操作', + 确认要删除当前信息: '確認要刪除當前信息?', + 警告: '警告', + 确定: '確定', + 删除成功: '刪除成功!', + 取消删除: '取消刪除!', + }, + vascularAccessList: { + 血管通路: '血管通路', + 建立日期: '建立日期', + 请选择: '請選擇', + 通路部位: '通路部位', + 通路类型: '通路類型', + 首次启用日期: '首次啟用日期', + 流入流出道: '流入-流出道', + 请输入选择: '請輸入/選擇', + 默认到处方: '默認到處方', + 医生: '醫生', + 使用状态: '使用狀態', + 停用日期: '停用日期', + 停用原因: '停用原因', + 请输入: '請輸入', + 备注: '備註', + 以下信息用于国网上报: '以下信息用於國網上報', + 血管通路位置左右: '血管通路位置(左-右)', + 血管通路类型: '血管通路類型', + 其它: '其他', + 描述: '描述', + 自体内瘘: '自體內瘘', + 移植血管: '移植血管', + 血管通路位置: '血管通路位置', + 临时中心静脉置管: '臨時中心靜脈置管', + 长期中心静脉置管: '長期中心靜脈置管', + 中心静脉置管方法: '中心靜脈置管方法', + 取消: '取消', + 确定: '確定', + 颈V: '頸V', + 股V: '股V', + 肱A肱V: '肱A-肱V', + 股A大隐V: '股A-大隱V', + 上臂肱A贵要V: '上臂肱A-貴要V', + 肱A上臂头V: '肱A-上臂頭V', + 桡A贵要V: '桡A-貴要V', + 尺A贵要V: '尺A-貴要V', + 桡A头V: '桡A-頭V', + 肱动脉穿静脉: '肱動脈-穿靜脈', + 肱A肘正中V: '肱A-肘正中V', + 左: '左', + 右: '右', + 前臂: '前臂', + 上臂: '上臂', + 下肢: '下肢', + 颈内静脉: '頸內靜脈', + 股静脉: '股靜脈', + 锁骨下静脉: '鎖骨下靜脈', + 颈外静脉: '頸外靜脈', + 超声介入: '超聲介入', + X线介入: 'X線介入', + 盲穿: '盲穿', + 请选择首次启用日期: '請選擇首次啟用日期', + 请选择建立日期: '請選擇建立日期', + 请选择通路部位: '請選擇通路部位', + 请选择通路类型: '請選擇通路類型', + 请输入流入流出道: '請輸入流入-流出道', + 请选择手术医生: '請選擇手術醫生', + 请选择使用状态: '請選擇使用狀態', + 请选择停用日期: '請選擇停用日期', + 请先取消默认到处方: '請先取消默認到處方', + 操作成功: '操作成功', + }, + xgtlTool: { + 血管通路图: '血管通路圖', + 更换图片: '更換圖片', + 编辑: '編輯', + 打印: '列印', + 保存: '儲存', + 取消: '取消', + 添加说明: '添加說明', + A端: 'A端', + 点击添加标记: '點擊添加標記', + V端: 'V端', + 穿刺角度: '穿刺角度', + 卡夫距导管出口距离cm: '卡夫距導管出口距離cm', + 动脉端向心穿刺: '動脈端向心穿刺', + 动脉端离心穿刺: '動脈端離心穿刺', + 静脉端向心穿刺: '靜脈端向心穿刺', + 手背朝上: '手背朝上', + 手掌朝上: '手掌朝上', + 虎口朝上: '虎口朝上', + 自定义: '自訂', + 进针方位: '進針方位', + 辅助工具: '輔助工具', + 说明中心点对准穿刺点直线与血管平行时钟刻度为进针方位用A端V端进针方位的箭头指示: + '說明:中心點對準穿刺點,直線與血管平行,時鐘刻度為進針方位,用A端/V端進針方位的箭頭指示。', + 查看示意图: '查看示意圖', + 添加文本标记: '添加文本標記', + 示意图: '示意圖', + 图片修改成功: '圖片修改成功', + 你确定要放弃这次编辑的血管通路图: '你確定要放棄這次編輯的血管通路圖?', + 提示: '提示', + 确认: '確認', + 你确定要保存这次编辑的血管通路图: '你確定要儲存這次編輯的血管通路圖?', + 打印日期: '列印日期', + 肾透血液管理软件血管通路图: '腎透血液管理軟件血管通路圖', + 患者姓名: '患者姓名', + 没有启用编辑: '沒有啟用編輯', + 没有开启编辑状态: '沒有開啟編輯狀態', + }, +}; diff --git a/src/i18n/pages/formI18n/en.ts b/src/i18n/pages/formI18n/en.ts new file mode 100644 index 0000000..b3c54d6 --- /dev/null +++ b/src/i18n/pages/formI18n/en.ts @@ -0,0 +1,13 @@ +// 定义内容 +export default { + formI18nLabel: { + name: 'name', + email: 'email', + autograph: 'autograph', + }, + formI18nPlaceholder: { + name: 'Please enter your name', + email: 'Please enter the users Department', + autograph: 'Please enter the login account name', + }, +}; diff --git a/src/i18n/pages/formI18n/jp.ts b/src/i18n/pages/formI18n/jp.ts new file mode 100644 index 0000000..7f5f9c5 --- /dev/null +++ b/src/i18n/pages/formI18n/jp.ts @@ -0,0 +1,12 @@ +export default { + formI18nLabel: { + name: '氏名', + email: 'ユーザー所属部門', + autograph: 'ログインアカウント名', + }, + formI18nPlaceholder: { + name: '氏名を入力してください', + email: 'ユーザー所属部門を入力してください', + autograph: 'ログインアカウント名を入力してください', + }, +}; diff --git a/src/i18n/pages/formI18n/ms.ts b/src/i18n/pages/formI18n/ms.ts new file mode 100644 index 0000000..2bcab4e --- /dev/null +++ b/src/i18n/pages/formI18n/ms.ts @@ -0,0 +1,12 @@ +export default { + "formI18nLabel": { + "name": "Nama", + "email": "Bahagian Pengguna", + "autograph": "Nama Akaun Masuk" + }, + "formI18nPlaceholder": { + "name": "Sila masukkan nama", + "email": "Sila masukkan bahagian pengguna", + "autograph": "Sila masukkan nama akaun masuk" + } +} \ No newline at end of file diff --git a/src/i18n/pages/formI18n/zh-cn.ts b/src/i18n/pages/formI18n/zh-cn.ts new file mode 100644 index 0000000..0bed3ec --- /dev/null +++ b/src/i18n/pages/formI18n/zh-cn.ts @@ -0,0 +1,13 @@ +// 定义内容 +export default { + formI18nLabel: { + name: '姓名', + email: '用户归属部门', + autograph: '登陆账户名', + }, + formI18nPlaceholder: { + name: '请输入姓名', + email: '请输入用户归属部门', + autograph: '请输入登陆账户名', + }, +}; diff --git a/src/i18n/pages/formI18n/zh-tw.ts b/src/i18n/pages/formI18n/zh-tw.ts new file mode 100644 index 0000000..393ac03 --- /dev/null +++ b/src/i18n/pages/formI18n/zh-tw.ts @@ -0,0 +1,13 @@ +// 定义内容 +export default { + formI18nLabel: { + name: '姓名', + email: '用戶歸屬部門', + autograph: '登入帳戶名', + }, + formI18nPlaceholder: { + name: '請輸入姓名', + email: '請輸入用戶歸屬部門', + autograph: '請輸入登入帳戶名', + }, +}; diff --git a/src/i18n/pages/home/en.ts b/src/i18n/pages/home/en.ts new file mode 100644 index 0000000..2297f49 --- /dev/null +++ b/src/i18n/pages/home/en.ts @@ -0,0 +1,56 @@ +// 定义内容 +export default { + alertText1: 'Dear user, your Victory Service Contract will be signed on', + alertText2: 'Expired in days, please contact Shengtuo service personnel for renewal in a timely manner!', + dialysisPatientsNumber: 'Number of dialysis patients', + dialysisPatientsNumber2: 'Number of dialysis patients', + duringDialysis: 'During dialysis', + dialysisDeviceNum: 'Number of dialysis equipment', + inUse: 'in use', + patientTypesettingTimes: 'Patient scheduling times', + todayScheduling: "Today's scheduling", + smokeDetector: 'Smoke sensation', + temperature: 'temperature', + humidity: 'humidity', + noise: 'noise', + instrumentNumber: 'Instrument number:', + equipmentWarningInfo: 'Equipment warning information', + technicalSupport: 'Technical Support', + EquipmentNo1: 'Equipment No.1', + equipmentTreatmentStatus: 'Equipment treatment status', + month: { + january: 'January', + february: 'February', + march: 'March', + april: 'April', + may: 'May', + june: 'June', + july: 'July', + august: 'August', + september: 'September', + october: 'October', + november: 'November', + december: 'December', + }, + numberOfPatientQueues: 'Number of patient queues', + numberOfDeviceTreatments: 'Number of device treatments', + deviceDialysisMonitoring: 'Device dialysis monitoring', + currentScheduling: 'Current scheduling', + dialysisInProgress: 'Dialysis in progress', + dialysisCompleted: 'Dialysis completed', + notYetScheduled: 'Not yet scheduled', + numberOfPatients: 'Number of patients', + people: 'people', + "留治患者人数": "Number of In-Treatment Patients", + "今天已上机患者数量": "Number of Patients Dialyzed Today", + "正常使用的透析机数量": "Number of Dialysis Machines in Normal Operation", + "已上机患者正在使用的透析机数量": "Number of Dialysis Machines Currently in Use", + "当月不同透析方案的患者的排班次数之和": "Total Scheduled Dialysis Sessions for Different Treatment Plans This Month", + "上午下午晚上的排班人数之和": "Total Number of Scheduled Patients for Morning, Afternoon, and Evening Sessions", + "患者总人数": "Total Number of Patients", + "转出患者人数": "Number of Transferred-Out Patients", + "今日上机患者人数": "Number of Patients Undergoing Dialysis Today", + "今天": "Today", + "完整版本": "Full Version", + "发布版本": "Release Version" +}; diff --git a/src/i18n/pages/home/jp.ts b/src/i18n/pages/home/jp.ts new file mode 100644 index 0000000..19d1392 --- /dev/null +++ b/src/i18n/pages/home/jp.ts @@ -0,0 +1,55 @@ +export default { + alertText1: '尊敬するユーザー様、ご利用中の勝透サービス契約は', + alertText2: '日後に期限が切れます。お早めに勝透サービス担当者にご連絡ください。', + dialysisPatientsNumber: '透析患者数', + dialysisPatientsNumber2: '患者透析人数', + duringDialysis: '透析中', + dialysisDeviceNum: '透析装置数', + inUse: '使用中', + patientTypesettingTimes: '患者シフト回数', + todayScheduling: '本日のシフト', + smokeDetector: '煙感知器', + temperature: '温度', + humidity: '湿度', + noise: '騒音', + instrumentNumber: '機器番号:', + equipmentWarningInfo: '機器警告情報', + technicalSupport: '技術サポート', + EquipmentNo1: '1号機', + equipmentTreatmentStatus: '機器治療状況', + month: { + january: '1月', + february: '2月', + march: '3月', + april: '4月', + may: '5月', + june: '6月', + july: '7月', + august: '8月', + september: '9月', + october: '10月', + november: '11月', + december: '12月', + }, + numberOfPatientQueues: '患者待機人数', + numberOfDeviceTreatments: '機器治療回数', + deviceDialysisMonitoring: '機器透析モニタリング', + currentScheduling: '現在のシフト', + dialysisInProgress: '透析中', + dialysisCompleted: '透析終了', + notYetScheduled: '未シフト', + numberOfPatients: '患者数', + people: '人', + "留治患者人数": "治療継続中の患者数", + "今天已上机患者数量": "本日透析を受けた患者数", + "正常使用的透析机数量": "正常稼働中の透析装置数", + "已上机患者正在使用的透析机数量": "現在使用中の透析装置数", + "当月不同透析方案的患者的排班次数之和": "今月の異なる透析スケジュールの合計回数", + "上午下午晚上的排班人数之和": "午前・午後・夜間の透析予定患者数の合計", + "患者总人数": "患者総数", + "转出患者人数": "転院・退院患者数", + "今日上机患者人数": "本日透析中の患者数", + "今天": "今日", + "完整版本": "完全版", + "发布版本": "リリースバージョン" +}; diff --git a/src/i18n/pages/home/ms.ts b/src/i18n/pages/home/ms.ts new file mode 100644 index 0000000..080237e --- /dev/null +++ b/src/i18n/pages/home/ms.ts @@ -0,0 +1,56 @@ +// 定义内容 +export default { + "alertText1": "Pengguna yang dihormati, kontrak perkhidmatan ShengTou anda akan tamat dalam", + "alertText2": "hari, sila hubungi kakitangan perkhidmatan ShengTou untuk memperbaharui bayaran anda tepat pada masanya!", + "dialysisPatientsNumber": "Bilangan Pesakit Dialisis", + "dialysisPatientsNumber2": "Bilangan Pesakit Menjalani Dialisis", + "duringDialysis": "Sedang Menjalani Dialisis", + "dialysisDeviceNum": "Bilangan Peralatan Dialisis", + "inUse": "Sedang Digunakan", + "patientTypesettingTimes": "Jumlah Penjadualan Pesakit", + "todayScheduling": "Penjadualan Hari Ini", + "smokeDetector": "Pengesan Asap", + "temperature": "Suhu", + "humidity": "Kelembapan", + "noise": "Bunyi Bising", + "instrumentNumber": "Nombor Peralatan:", + "equipmentWarningInfo": "Maklumat Amaran Peralatan", + "technicalSupport": "Sokongan Teknikal", + "EquipmentNo1": "Mesin No.1", + "equipmentTreatmentStatus": "Status Rawatan Peralatan", + "month": { + "january": "Januari", + "february": "Februari", + "march": "Mac", + "april": "April", + "may": "Mei", + "june": "Jun", + "july": "Julai", + "august": "Ogos", + "september": "September", + "october": "Oktober", + "november": "November", + "december": "Disember" + }, + "numberOfPatientQueues": "Bilangan Pesakit dalam Barisan", + "numberOfDeviceTreatments": "Bilangan Rawatan Peralatan", + "deviceDialysisMonitoring": "Pemantauan Dialisis Peralatan", + "currentScheduling": "Penjadualan Semasa", + "dialysisInProgress": "Dialisis Sedang Berjalan", + "dialysisCompleted": "Dialisis Selesai", + "notYetScheduled": "Belum Dijadualkan", + "numberOfPatients": "Bilangan Pesakit", + "people": "Orang", + "留治患者人数": "Bilangan Pesakit yang Diteruskan Rawatan", + "今天已上机患者数量": "Bilangan Pesakit yang Menjalani Dialisis Hari Ini", + "正常使用的透析机数量": "Bilangan Mesin Dialisis yang Berfungsi Normal", + "已上机患者正在使用的透析机数量": "Bilangan Mesin Dialisis yang Sedang Digunakan oleh Pesakit", + "当月不同透析方案的患者的排班次数之和": "Jumlah Penjadualan Pesakit dengan Pelan Dialisis Berbeza dalam Bulan Ini", + "上午下午晚上的排班人数之和": "Jumlah Pesakit Dijadualkan bagi Sesi Pagi, Petang dan Malam", + "患者总人数": "Jumlah Keseluruhan Pesakit", + "转出患者人数": "Bilangan Pesakit yang Dipindahkan Keluar", + "今日上机患者人数": "Bilangan Pesakit yang Menjalani Dialisis Hari Ini", + "今天": "Hari Ini", + "完整版本": "Versi Lengkap", + "发布版本": "Versi Terbitan" +}; diff --git a/src/i18n/pages/home/zh-cn.ts b/src/i18n/pages/home/zh-cn.ts new file mode 100644 index 0000000..c673821 --- /dev/null +++ b/src/i18n/pages/home/zh-cn.ts @@ -0,0 +1,56 @@ +// 定义内容 +export default { + alertText1: '尊敬的用户您好,您的胜透服务合同将于', + alertText2: '天后过期,请及时联系胜透服务人员续费!', + dialysisPatientsNumber: '透析患者人数', + dialysisPatientsNumber2: '患者透析人數', + duringDialysis: '透析中', + dialysisDeviceNum: '透析设备数量', + inUse: '使用中', + patientTypesettingTimes: '患者排班人次', + todayScheduling: '今日排班', + smokeDetector: '烟感', + temperature: '温度', + humidity: '湿度', + noise: '噪声', + instrumentNumber: '仪器编号:', + equipmentWarningInfo: '设备预警信息', + technicalSupport: '技术支持', + EquipmentNo1: '1号机器', + equipmentTreatmentStatus: '设备治疗情况', + month: { + january: '1月', + february: '2月', + march: '3月', + april: '4月', + may: '5月', + june: '6月', + july: '7月', + august: '8月', + september: '9月', + october: '10月', + november: '11月', + december: '12月', + }, + numberOfPatientQueues: '患者排队数量', + numberOfDeviceTreatments: '设备治疗数量', + deviceDialysisMonitoring: '设备透析监控', + currentScheduling: '目前排班', + dialysisInProgress: '正在透析', + dialysisCompleted: '透析结束', + notYetScheduled: '尚未排班', + numberOfPatients: '患者数量', + people: '人', + 留治患者人数: '留治患者人数', + 今天已上机患者数量: '今天已上机患者数量', + 正常使用的透析机数量: '正常使用的透析机数量', + 已上机患者正在使用的透析机数量: '已上机患者正在使用的透析机数量', + 当月不同透析方案的患者的排班次数之和: '当月不同透析方案的患者的排班次数之和', + 上午下午晚上的排班人数之和: '上午、下午、晚上的排班人数之和', + 患者总人数: '患者总人数', + 转出患者人数: '转出患者人数', + 今日上机患者人数: '今日上机患者人数', + 今天: '今天', + 完整版本: '完整版本', + 发布版本: '发布版本', +}; diff --git a/src/i18n/pages/home/zh-tw.ts b/src/i18n/pages/home/zh-tw.ts new file mode 100644 index 0000000..b730f43 --- /dev/null +++ b/src/i18n/pages/home/zh-tw.ts @@ -0,0 +1,56 @@ +// 定义内容 +export default { + alertText1: '尊敬的用戶您好,您的勝透服務契约將於', + alertText2: '天后過期,請及時聯系勝透服務人員續費!', + dialysisPatientsNumber: '透析患者人數', + dialysisPatientsNumber2: '患者透析人數', + duringDialysis: '透析中', + dialysisDeviceNum: '透析設備數量', + inUse: '使用中', + patientTypesettingTimes: '患者排班人次', + todayScheduling: '今日排班', + smokeDetector: '烟感', + temperature: '溫度', + humidity: '濕度', + noise: '雜訊', + instrumentNumber: '儀器編號:', + equipmentWarningInfo: '設備預警資訊', + technicalSupport: '技術支援', + EquipmentNo1: '1号儀器', + equipmentTreatmentStatus: '設備治療情况', + month: { + january: '1月', + february: '2月', + march: '3月', + april: '4月', + may: '5月', + june: '6月', + july: '7月', + august: '8月', + september: '9月', + october: '10月', + november: '11月', + december: '12月', + }, + numberOfPatientQueues: '患者排隊數量', + numberOfDeviceTreatments: '設備治療數量', + deviceDialysisMonitoring: '設備透析監控', + currentScheduling: '現時排班', + dialysisInProgress: '正在透析', + dialysisCompleted: '透析結束', + notYetScheduled: '尚未排班', + numberOfPatients: '患者数量', + people: '人', + "留治患者人数": "留治患者人數", + "今天已上机患者数量": "今天已上機患者數量", + "正常使用的透析机数量": "正常使用的透析機數量", + "已上机患者正在使用的透析机数量": "已上機患者正在使用的透析機數量", + "当月不同透析方案的患者的排班次数之和": "當月不同透析方案的患者排班次數總和", + "上午下午晚上的排班人数之和": "上午、下午、晚上排班人數總和", + "患者总人数": "患者總人數", + "转出患者人数": "轉出患者人數", + "今日上机患者人数": "今日上機患者人數", + "今天": "今天", + "完整版本": "完整版本", + "发布版本": "發布版本" +}; diff --git a/src/i18n/pages/login/en.ts b/src/i18n/pages/login/en.ts new file mode 100644 index 0000000..f080021 --- /dev/null +++ b/src/i18n/pages/login/en.ts @@ -0,0 +1,55 @@ +export default { + title: 'Daite can only use technology', + form: { + title: 'Shengtuo Hemodialysis Management Platform', + subTitle: 'Welcome to WELCOME', + placeholder: { + uname: 'enter one user name', + pwd: 'Please enter password' + }, + forgotPwd: 'forgot password', + agreementText1: 'I have read and agree', + agreementText2: 'Website Service Terms', + agreementText3: 'Legal Statement and Privacy Policy', + submitBtnText: 'Log in now', + }, + clientDialog: { + title: 'Select Customers', + selectPlaceholder: 'Select Customers', + goBtnText: 'Enter' + }, + forgotPwdDialog: { + title: 'Retrieve password', + mobileLabel: 'mobile phone', + codeLabel: 'Code', + codePlaceholder: 'Code', + sendCode: 'Send verification code', + pwdLabel: 'Password', + pwd2Label: 'Confirm new password', + submitBtnText: 'submit to', + cancelBtnText: 'cancellation' + }, + message: { + success: { + + }, + warning: { + warningText1: 'Login requires agreement to the website is terms of service, legal statements, and privacy policy', + warningText2: 'The current logged in user does not have assigned permissions. Please assign permissions first before logging in', + warningText3: 'Mobile phone number cannot be empty', + warningText4: 'Password cannot be empty', + warningText5: 'The verification code cannot be empty', + warningText6: 'The two password inputs are inconsistent', + warningText7: 'Password modification successful', + warningText8: 'Incorrect phone number', + }, + error: {} + }, + copyright: { + copyrightText1: 'Copyright: Daite Intelligent Technology (Shanghai) Co., Ltd', + copyrightText2: 'Office address: Room 601, Unicom International Building, No. 547 Tianmu West Road, Jing an District, Shanghai', + copyrightText3: 'ICP filing number: Hu ICP Bei 2021001480-3', + copyrightText4: 'Internet filing number: 31010602006848', + }, + signInText: 'Welcome back!', +}; diff --git a/src/i18n/pages/login/jp.ts b/src/i18n/pages/login/jp.ts new file mode 100644 index 0000000..ba7b118 --- /dev/null +++ b/src/i18n/pages/login/jp.ts @@ -0,0 +1,55 @@ +export default { + title: '岱特インテリジェントテクノロジー', + form: { + title: '勝透血液透析管理プラットフォーム', + subTitle: 'WELCOMEようこそログイン', + placeholder: { + uname: 'ユーザー名を入力してください', + pwd: 'パスワードを入力してください' + }, + forgotPwd: 'パスワードを忘れました', + agreementText1: '私は読み、同意しました', + agreementText2: 'ウェブサイトサービス利用規約', + agreementText3: '法的通知およびプライバシーポリシー', + submitBtnText: '今すぐログイン', + }, + clientDialog: { + title: 'クライアントを選択', + selectPlaceholder: 'クライアントを選択', + goBtnText: '進 入' + }, + forgotPwdDialog: { + title: 'パスワードをリセット', + mobileLabel: '携帯電話', + codeLabel: '認証コード', + codePlaceholder: '認証コードを入力してください', + sendCode: '認証コードを送信', + pwdLabel: '新しいパスワード', + pwd2Label: '新しいパスワードを確認', + submitBtnText: '送信', + cancelBtnText: 'キャンセル' + }, + message: { + success: { + + }, + warning: { + warningText1: 'ログインするには、ウェブサイトサービス利用規約、法的通知およびプライバシーポリシーに同意する必要があります', + warningText2: '現在のログインユーザーには権限が割り当てられていません。まず権限を割り当ててからログインしてください', + warningText3: '携帯電話番号を入力してください', + warningText4: 'パスワードを入力してください', + warningText5: '認証コードを入力してください', + warningText6: 'パスワードが一致しません', + warningText7: 'パスワードの変更に成功しました', + warningText8: '携帯電話番号が正しくありません', + }, + error: {} + }, + copyright: { + copyrightText1: '著作権:岱特インテリジェントテクノロジー(上海)有限公司', + copyrightText2: 'オフィス住所:上海市静安区天目西路547号ユニコムインターナショナルビル601室', + copyrightText3: 'ICP登録番号 沪ICP备2021001480号-3', + copyrightText4: 'ネットワーク登録番号:31010602006848', + }, + signInText: 'お帰りなさい!', +}; diff --git a/src/i18n/pages/login/ms.ts b/src/i18n/pages/login/ms.ts new file mode 100644 index 0000000..5115591 --- /dev/null +++ b/src/i18n/pages/login/ms.ts @@ -0,0 +1,53 @@ +export default { + "title": "Dait Intelligent Technology", + "form": { + "title": "Platform Pengurusan Hemodialisis Shengtou", + "subTitle": "Selamat Datang, Sila Log Masuk", + "placeholder": { + "uname": "Sila masukkan nama pengguna", + "pwd": "Sila masukkan kata laluan" + }, + "forgotPwd": "Lupa Kata Laluan", + "agreementText1": "Saya telah membaca dan bersetuju dengan", + "agreementText2": "Terma Perkhidmatan Laman Web", + "agreementText3": "Penyataan Undang-Undang dan Dasar Privasi", + "submitBtnText": "Log Masuk Sekarang" + }, + "clientDialog": { + "title": "Pilih Pelanggan", + "selectPlaceholder": "Pilih Pelanggan", + "goBtnText": "Masuk" + }, + "forgotPwdDialog": { + "title": "Pemulihan Kata Laluan", + "mobileLabel": "Telefon Bimbit", + "codeLabel": "Kod Pengesahan", + "codePlaceholder": "Masukkan Kod Pengesahan", + "sendCode": "Hantar Kod Pengesahan", + "pwdLabel": "Kata Laluan Baru", + "pwd2Label": "Sahkan Kata Laluan Baru", + "submitBtnText": "Hantar", + "cancelBtnText": "Batal" + }, + "message": { + "success": {}, + "warning": { + "warningText1": "Log masuk memerlukan persetujuan terhadap Terma Perkhidmatan Laman Web, Penyataan Undang-Undang, dan Dasar Privasi", + "warningText2": "Pengguna semasa tidak mempunyai kebenaran, sila beri kebenaran terlebih dahulu sebelum log masuk", + "warningText3": "Nombor telefon tidak boleh kosong", + "warningText4": "Kata laluan tidak boleh kosong", + "warningText5": "Kod pengesahan tidak boleh kosong", + "warningText6": "Kata laluan yang dimasukkan tidak sama", + "warningText7": "Kata laluan berjaya ditukar", + "warningText8": "Nombor telefon tidak sah" + }, + "error": {} + }, + "copyright": { + "copyrightText1": "Hak Cipta Terpelihara: Dait Intelligent Technology (Shanghai) Co., Ltd.", + "copyrightText2": "Alamat Pejabat: Suite 601, Bangunan International Unicom, No. 547, Tianmu West Road, Daerah Jing'an, Shanghai", + "copyrightText3": "Nombor ICP: 沪ICP备2021001480号-3", + "copyrightText4": "Nombor Pendaftaran Rangkaian: 31010602006848" + }, + "signInText": "Selamat Datang Kembali!" +} \ No newline at end of file diff --git a/src/i18n/pages/login/zh-cn.ts b/src/i18n/pages/login/zh-cn.ts new file mode 100644 index 0000000..0f4527c --- /dev/null +++ b/src/i18n/pages/login/zh-cn.ts @@ -0,0 +1,56 @@ +// 定义内容 +export default { + title: '岱特智能科技', + form: { + title: '胜透血液透析管理平台', + subTitle: 'WELCOME欢迎登录', + placeholder: { + uname: '请输入用户名', + pwd: '请输入密码' + }, + forgotPwd: '忘记密码', + agreementText1: '我已阅读并同意', + agreementText2: '网站服务条款', + agreementText3: '法律声明及隐私政策', + submitBtnText: '立即登录', + }, + clientDialog: { + title: '选择客户', + selectPlaceholder: '选择客户', + goBtnText: '进 入' + }, + forgotPwdDialog: { + title: '找回密码', + mobileLabel: '手机', + codeLabel: '验证码', + codePlaceholder: '验证码', + sendCode: '发送验证码', + pwdLabel: '新密码', + pwd2Label: '确认新密码', + submitBtnText: '提交', + cancelBtnText: '取消' + }, + message: { + success: { + + }, + warning: { + warningText1: '登录必须要同意网站服务条款、 法律声明及隐私政策', + warningText2: '当前登录用户没有分配权限,请先分配权限后在登录', + warningText3: '手机号码不能为空', + warningText4: '密码不能为空', + warningText5: '验证码不能为空', + warningText6: '两次密码输入不一致', + warningText7: '密码修改成功', + warningText8: '手机号码不正确', + }, + error: {} + }, + copyright: { + copyrightText1: '版权所有:岱特智能科技(上海)有限公司', + copyrightText2: '办公地址:上海市静安区天目西路547号联通国际大厦601室', + copyrightText3: 'ICP备案号 沪ICP备2021001480号-3', + copyrightText4: '联网备案号:31010602006848', + }, + signInText: '欢迎回来!', +}; diff --git a/src/i18n/pages/login/zh-tw.ts b/src/i18n/pages/login/zh-tw.ts new file mode 100644 index 0000000..8024c08 --- /dev/null +++ b/src/i18n/pages/login/zh-tw.ts @@ -0,0 +1,56 @@ +// 定义内容 +export default { + title: '岱特智慧科技', + form: { + title: '勝透血液透析管理平臺', + subTitle: 'WELCOME歡迎登录', + placeholder: { + uname: '請輸入用戶名', + pwd: '請輸入密碼' + }, + forgotPwd: '忘記密碼', + agreementText1: '我已閱讀並同意', + agreementText2: '網站服務條款', + agreementText3: '法律聲明及隱私政策', + submitBtnText: '立即登入', + }, + clientDialog: { + title: '選擇客戶', + selectPlaceholder: '選擇客戶', + goBtnText: '進 入' + }, + forgotPwdDialog: { + title: '找回密碼', + mobileLabel: '手機', + codeLabel: '驗證碼', + codePlaceholder: '驗證碼', + sendCode: '發送驗證碼', + pwdLabel: '新密碼', + pwd2Label: '確認新密碼', + submitBtnText: '提交', + cancelBtnText: '取消' + }, + message: { + success: { + + }, + warning: { + warningText1: '登入必須要同意網站服務條款、法律聲明及隱私政策', + warningText2: '當前登入用戶沒有分配許可權,請先分配許可權後在登入', + warningText3: '手機號碼不能為空', + warningText4: '密碼不能為空', + warningText5: '驗證碼不能為空', + warningText6: '兩次密碼輸入不一致', + warningText7: '密碼修改成功', + warningText8: '手機號碼不正確', + }, + error: {} + }, + copyright: { + copyrightText1: '版權所有:岱特智慧科技(上海)有限公司', + copyrightText2: '辦公地址:上海市靜安區天目西路547號聯通國際大廈601室', + copyrightText3: 'ICP備案號滬ICP備2021001480號-3', + copyrightText4: '聯網備案號:31010602006848', + }, + signInText: '歡迎回來!', +}; diff --git a/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/en.ts b/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/en.ts new file mode 100644 index 0000000..39b0ade --- /dev/null +++ b/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/en.ts @@ -0,0 +1,53 @@ +export default { + 表单: { + 查询日期: { + 查询日期: 'Query Date', + 至: 'To', + 结束日期: 'End Date', + 开始日期: 'Start Date', + }, + 排班时段: { + 排班时段: 'Schedule Period', + 请选择: 'Please Select', + }, + 患者姓名: { + 患者姓名: 'Patient Name', + 请选择: 'Please Select', + }, + 是否只统计已签到的透析单: { + 是否只统计已签到的透析单: 'Count Only Checked-In Dialysis Orders', + 请选择: 'Please Select' + }, + 按钮组: { + 查询: 'Query', + 打印: 'Print', + 导出: 'Export', + } + }, + 表格: { + 序号: 'Serial Number', + 患者姓名: 'Patient Name', + 透析次数: 'Dialysis Count', + 透析总数: 'Dialysis Count', + }, + 透析单状态选项: { + 是: 'Yes', + 否: 'No' + }, + 时段选项: { + 上午: 'Morning', + 下午: 'Afternoon', + 晚上: 'Evening', + }, + 打印: { + 月度患者透析次数统计: 'Monthly Patient Dialysis Count Statistics', + 序号: 'Serial Number', + 患者姓名: 'Patient Name', + 透析次数: 'Dialysis Count', + }, + 导出: { + 月度患者透析次数统计: 'Monthly Patient Dialysis Count Statistics', + 患者姓名: 'Patient Name', + 透析次数: 'Dialysis Count', + } +} \ No newline at end of file diff --git a/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/index.ts b/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/index.ts new file mode 100644 index 0000000..9f2cefb --- /dev/null +++ b/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/index.ts @@ -0,0 +1,24 @@ +import monthlyStatisticsOfDialysisFrequencyForPatientsZhCn from './zh-cn'; +import monthlyStatisticsOfDialysisFrequencyForPatientsEn from './en'; +import monthlyStatisticsOfDialysisFrequencyForPatientsZhTw from './zh-tw'; +import monthlyStatisticsOfDialysisFrequencyForPatientsJp from './jp'; +import monthlyStatisticsOfDialysisFrequencyForPatientsMs from './ms'; + + +export default { + zhCn: { + ...monthlyStatisticsOfDialysisFrequencyForPatientsZhCn + }, + en: { + ...monthlyStatisticsOfDialysisFrequencyForPatientsEn + }, + zhTw: { + ...monthlyStatisticsOfDialysisFrequencyForPatientsZhTw + }, + jp: { + ...monthlyStatisticsOfDialysisFrequencyForPatientsJp + }, + ms: { + ...monthlyStatisticsOfDialysisFrequencyForPatientsMs, + } +} diff --git a/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/jp.ts b/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/jp.ts new file mode 100644 index 0000000..e171b44 --- /dev/null +++ b/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/jp.ts @@ -0,0 +1,53 @@ +export default { + "表单": { + "查询日期": { + "查询日期": "照会日", + "至": "終了", + "结束日期": "終了日", + "开始日期": "開始日" + }, + "排班时段": { + "排班时段": "シフト時間帯", + "请选择": "選択してください" + }, + "患者姓名": { + "患者姓名": "患者名", + "请选择": "選択してください" + }, + "是否只统计已签到的透析单": { + "是否只统计已签到的透析单": "登録された透析シートのみを集計するかどうか", + "请选择": "選択してください" + }, + "按钮组": { + "查询": "クエリー#クエリー#", + "打印": "印刷いんさつ", + "导出": "エクスポート#エクスポート#" + } + }, + "表格": { + "序号": "シーケンス番号", + "患者姓名": "患者名", + "透析次数": "透析回数", + "透析总数": "透析総数" + }, + "透析单状态选项": { + "是": "はい", + "否": "いいえ" + }, + "时段选项": { + "上午": "午前", + "下午": "午後", + "晚上": "夜" + }, + "打印": { + "月度患者透析次数统计": "月度患者透析回数統計", + "序号": "シーケンス番号", + "患者姓名": "患者名", + "透析次数": "透析回数" + }, + "导出": { + "月度患者透析次数统计": "月度患者透析回数統計", + "患者姓名": "患者名", + "透析次数": "透析回数" + } +} \ No newline at end of file diff --git a/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/ms.ts b/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/ms.ts new file mode 100644 index 0000000..6e4b9ce --- /dev/null +++ b/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/ms.ts @@ -0,0 +1,53 @@ +export default { + 表单: { + 查询日期: { + 查询日期: 'Tarikh Carian', + 至: 'Hingga', + 结束日期: 'Tarikh Tamat', + 开始日期: 'Tarikh Mula', + }, + 排班时段: { + 排班时段: 'Waktu Penjadualan', + 请选择: 'Sila Pilih', + }, + 患者姓名: { + 患者姓名: 'Nama Pesakit', + 请选择: 'Sila Pilih', + }, + 是否只统计已签到的透析单: { + 是否只统计已签到的透析单: 'Hanya Statistik Pesakit Yang Telah Daftar', + 请选择: 'Sila Pilih', + }, + 按钮组: { + 查询: 'Carian', + 打印: 'Cetak', + 导出: 'Eksport', + }, + }, + 表格: { + 序号: 'No. Siri', + 患者姓名: 'Nama Pesakit', + 透析次数: 'Bilangan Dialisis', + 透析总数: "Jumlah dialisis" + }, + 透析单状态选项: { + 是: 'Ya', + 否: 'Tidak', + }, + 时段选项: { + 上午: 'Pagi', + 下午: 'Petang', + 晚上: 'Malam', + }, + 打印: { + 月度患者透析次数统计: 'Statistik Bilangan Dialisis Pesakit Bulanan', + 序号: 'No. Siri', + 患者姓名: 'Nama Pesakit', + 透析次数: 'Bilangan Dialisis', + }, + 导出: { + 月度患者透析次数统计: 'Statistik Bilangan Dialisis Pesakit Bulanan', + 患者姓名: 'Nama Pesakit', + 透析次数: 'Bilangan Dialisis', + }, +}; diff --git a/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/zh-cn.ts b/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/zh-cn.ts new file mode 100644 index 0000000..c543c77 --- /dev/null +++ b/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/zh-cn.ts @@ -0,0 +1,53 @@ +export default { + 表单: { + 查询日期: { + 查询日期: '查询日期', + 至: '至', + 结束日期: '结束日期', + 开始日期: '开始日期', + }, + 排班时段: { + 排班时段: '排班时段', + 请选择: '请选择', + }, + 患者姓名: { + 患者姓名: '患者姓名', + 请选择: '请选择', + }, + 是否只统计已签到的透析单: { + 是否只统计已签到的透析单: '是否只统计已签到的透析单', + 请选择: '请选择' + }, + 按钮组: { + 查询: '查询', + 打印: '打印', + 导出: '导出', + } + }, + 表格: { + 序号: '序号', + 患者姓名: '患者姓名', + 透析次数: '透析次数', + 透析总数: '透析总数', + }, + 透析单状态选项: { + 是: '是', + 否: '否' + }, + 时段选项: { + 上午: '上午', + 下午: '下午', + 晚上: '晚上', + }, + 打印: { + 月度患者透析次数统计: '月度患者透析次数统计', + 序号: '序号', + 患者姓名: '患者姓名', + 透析次数: '透析次数', + }, + 导出: { + 月度患者透析次数统计: '月度患者透析次数统计', + 患者姓名: '患者姓名', + 透析次数: '透析次数', + } +} \ No newline at end of file diff --git a/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/zh-tw.ts b/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/zh-tw.ts new file mode 100644 index 0000000..2ad7662 --- /dev/null +++ b/src/i18n/pages/qc/monthlyStatisticsOfDialysisFrequencyForPatients/zh-tw.ts @@ -0,0 +1,53 @@ +export default { + "表单": { + "查询日期": { + "查询日期": "査詢日期", + "至": "至", + "结束日期": "結束日期", + "开始日期": "開始日期" + }, + "排班时段": { + "排班时段": "排班時段", + "请选择": "請選擇" + }, + "患者姓名": { + "患者姓名": "患者姓名", + "请选择": "請選擇" + }, + "是否只统计已签到的透析单": { + "是否只统计已签到的透析单": "是否只統計已簽到的透析單", + "请选择": "請選擇" + }, + "按钮组": { + "查询": "査詢", + "打印": "列印", + "导出": "匯出" + } + }, + "表格": { + "序号": "序號", + "患者姓名": "患者姓名", + "透析次数": "透析次數", + 透析总数: "透析總數" + }, + "透析单状态选项": { + "是": "是", + "否": "否" + }, + "时段选项": { + "上午": "上午", + "下午": "下午", + "晚上": "晚上" + }, + "打印": { + "月度患者透析次数统计": "月度患者透析次數統計", + "序号": "序號", + "患者姓名": "患者姓名", + "透析次数": "透析次數" + }, + "导出": { + "月度患者透析次数统计": "月度患者透析次數統計", + "患者姓名": "患者姓名", + "透析次数": "透析次數" + } +} \ No newline at end of file diff --git a/src/i18n/pages/scheduling/en.ts b/src/i18n/pages/scheduling/en.ts new file mode 100644 index 0000000..34ea122 --- /dev/null +++ b/src/i18n/pages/scheduling/en.ts @@ -0,0 +1,309 @@ +export default { + 周次: 'Week Number', + 上一周: 'Previous Week', + 下一周: 'Next Week', + 班次: 'Shift', + 上午: 'Morning', + 下午: 'Afternoon', + 晚上: 'Evening', + 星期: 'Weekday', + 耗材统计: 'Supplies Statistics', + 操作时间: 'Operation Time', + 操作人: 'Operator', + 显示: 'Show', + 隐藏: 'Hide', + 请选择要标记患者: 'Please select a patient to mark', + 透析号: 'Dialysis Number', + 刷新: 'Refresh', + 导出: 'Export', + 打印: 'Print', + 编辑: 'Edit', + 退出编辑: 'Exit Edit', + 模板排班查看: 'Template Schedule View', + 患者排班查看: 'Patient Schedule View', + 恢复排班: 'Restore Schedule', + 排班日志: 'Schedule Log', + 导出到指定周: 'Export to Specified Week', + 分区: 'Zone', + 机号: 'Machine Number', + 合计: 'Total', + 滤: 'Filter', + 障: 'Blockage', + 总数: 'Total Count', + 操作提醒: 'Operation Reminder', + 取消: 'Cancel', + 复制: 'Copy', + 互换: 'Swap', + 排班日期: 'Schedule Date', + 查询: 'Search', + 患者名字: 'Patient Name', + 透析方式: 'Dialysis Mode', + 床号: 'Bed Number', + 时段: 'Time Period', + 操作: 'Action', + 恢复: 'Restore', + 导出当前周排班至指定周: 'Export Current Week Schedule to Specified Week', + 目标周: 'Target Week', + 请选择目标周: 'Please select the target week', + 确认: 'Confirm', + 感染病患者: 'Infectious Disease Patient', + 恢复成功: 'Restore Successful', + 恢复失败: 'Restore Failed', + 模板一: 'Template One', + 模板二: 'Template Two', + 模板三: 'Template Three', + 模板四: 'Template Four', + 设备现在故障不能做透析: 'The equipment is malfunctioning and cannot perform dialysis', + 故障设备不能排班: 'Faulty equipment cannot be scheduled', + 此操作将删除此排班是否继续: 'This operation will delete this schedule, do you want to continue?', + 当前患者已经签到是否删除排班: 'The current patient has already checked in, do you want to delete the schedule?', + 提示: 'Reminder', + 删除: 'Delete', + 删除成功: 'Deleted Successfully', + 请求数据中: 'Requesting Data...', + 确定: 'OK', + 保存成功: 'Saved Successfully', + 当前床设备不支持: 'Current bed equipment is not supported', + 透析模式您确定要排班: 'Are you sure to schedule with this dialysis mode?', + 取消添加排班: 'Cancel Adding Schedule', + 设置成功: 'Setup Successful', + 正在导出中: 'Exporting...', + 周排班数据为空无法打印: 'Weekly schedule data is empty, unable to print', + 请先选择基准周后再进行打印操作: 'Please select the base week before printing', + 系统异常请刷新后重试: 'System error, please refresh and try again', + 年: 'Year', + 第: 'No.', + 周: 'Week', + 全区病人: 'All Area Patients', + 排班: 'Schedule', + 星期日: 'Sunday', + 已进入编辑模式: 'Entered Edit Mode', + 已退出编辑模式: 'Exited Edit Mode', + 本周: 'This Week', + 没有启动编辑: 'Edit Not Started', + 排班拖动中: 'Dragging Schedule...', + 您要拖动的床位不支持: 'The bed you want to drag is not supported', + 透析方案: 'Dialysis Plan', + 您确定要排班: 'Are you sure to schedule?', + 如果选择继续复制目标排班将被删除是否继续操作: 'If you choose to continue copying, the target schedule will be deleted. Continue?', + 如果选择继续覆盖目标排班将被删除是否继续操作: 'If you choose to continue covering, the target schedule will be deleted. Do you want to continue with the operation?', + 继续: 'Continue', + UI渲染失败请刷新后查看最新数据: 'UI rendering failed, please refresh to view the latest data', + 复制成功: 'Copy Successful', + 覆盖成功: 'Coverage successful', + 复制排班操作发生异常请联系管理员: 'An error occurred during the copy schedule operation, please contact the administrator', + 覆盖排班操作发生异常请联系管理员: 'An exception occurred during the coverage scheduling operation. Please contact the administrator', + 目前该机器故障请重新对对患者排班: 'The machine is currently malfunctioning, please reschedule the patient', + 是否复制排班到当前位置: 'Do you want to copy the schedule to this position?', + 是否覆盖排班到当前位置: '現在の位置にシフトを上書きするかどうか?', + 当前位置已经有排班了是复制还是互换: 'This position already has a schedule. Copy or swap?', + 当前位置已经有排班了是覆盖还是互换: 'Does it cover the scheduling to the current location?', + 暂无可选周排班数据: 'No available weekly schedule data', + 请先选择基准周后再进行切换上一周操作: 'Please select the base week before switching to the previous week', + 当前周已经是第一周了: 'The current week is already the first week', + 请先选择基准周后再进行切换下一周操作: 'Please select the base week before switching to the next week', + 当前周已经是最后一周了: 'The current week is already the last week', + 数据异常请刷新后重试: 'Data error, please refresh and try again', + 排班导出操作成功数据将会在未来一段时间能进行同步成功后将会系统将会通知知到您届时刷新排班页面后既能看到最新数据: 'The schedule export operation was successful. The data will sync over time. Once successful, the system will notify you. Refresh the schedule page to see the latest data.', + "周数": { + "周一": "Monday", + "周二": "Tuesday", + "周三": "Wednesday", + "周四": "Thursday", + "周五": "Friday", + "周六": "Saturday", + "周天": "Sunday", + "周日": "Sunday" + }, + "时段数": { + "上午": "Morning", + "下午": "Afternoon", + "晚上": "Evening" + }, + "操作数": { + "删除": "Delete", + "取消": "Cancel", + "确定": "Confirm", + "确认": "Confirm", + "提示": "Notice", + "保存": "Save", + "修改": "Edit", + "查看": "View", + "打印": "Print", + "导入": "Import", + "模版复制": "Import", + "导出": "Export", + "编辑": "Edit", + "退出编辑": "Exit Editing", + "复制": "Copy", + "互换": "Swap" + }, + "数字数": { + "零": "Zero", + "一": "One", + "二": "Two", + "三": "Three", + "四": "Four", + "五": "Five", + "六": "Six", + "七": "Seven", + "八": "Eight", + "九": "Nine" + }, + "数字数单位": { + "十": "Ten", + "百": "Hundred", + "千": "Thousand" + }, + "addScheduling": { + "患者排班": "Patient Scheduling", + "排班设备": "Scheduling Device:", + "请选择排班设备": "Please select a scheduling device", + "排班日期": "Scheduling Date:", + "选择排班日期": "Select scheduling date", + "排班时段": "Scheduling Time Slot", + "请选择排班时段": "Please select a scheduling time slot", + "排班患者": "Scheduled Patient", + "请选择排班患者": "Please select a scheduled patient", + "透析模式": "Dialysis Mode:", + "请选择透析模式": "Please select a dialysis mode", + "排班人": "Scheduler:", + "请选择排班人": "Please select a scheduler", + "请选择透析方案": "Please select a dialysis plan", + "请选择透析患者": "Please select a dialysis patient", + "请选择": "Please select", + "故障设备不能排班": "Faulty devices cannot be scheduled!" + }, + "inputTem": { + "导入": "Import", + "导出模板": "Export Template", + "模板一排班": "Template 1 Scheduling", + "模板二排班": "Template 2 Scheduling", + "模板三排班": "Template 3 Scheduling", + "模板四排班": "Template 4 Scheduling", + "目标模板": "Target Template" + }, + "output": { + "导出": "Export", + "导成模板文件": "Export as Template File", + "导成预约排班": "Export as Appointment Schedule", + 导成预约排班说明:"Note: The export button exports an Excel file; the confirm button exports the content of this template to the temporary schedule.", + "请选择导出导成模板文件": "Please select a template file to export", + "模板一排班数据": "Template 1 Scheduling Data", + "模板二排班数据": "Template 2 Scheduling Data", + "模板三排班数据": "Template 3 Scheduling Data", + "模板四排班数据": "Template 4 Scheduling Data", + "当前预约排班日期匹配失败请刷新后重试": "Current appointment scheduling date mismatch, please refresh and retry", + "您确定要把模板": "Are you sure to move the template", + "导出到": "Export to", + "的排班吗": "scheduling?" + }, + "paibanLog": { + "排班记录": "Scheduling Log", + "查询日期": "Query Date:", + "查询": "Search", + "调整时间": "Adjustment Time", + "排班日期": "Scheduling Date", + "姓名": "Patient Name", + "床号": "Bed Number", + "方案名称": "Plan Name", + "最后操作人": "Last Operator", + "日志": "Log" + }, + "paibanSetting": { + "模板设置": "Template Settings", + "模板启用数量": "Number of Active Templates", + "启用一个": "Enable One", + "启用两个": "Enable Two", + "启用三个": "Enable Three", + "启用四个": "Enable Four", + "模板自动生成起始时间": "Template Auto-Generation Start Time", + "预览效果": "Preview Effect", + "预约排班将由模板": "Appointment scheduling will be auto-generated by template", + "自动生成": "Auto-generate", + "以此类推": "And so on" + }, + "paibanShow": { + "模板排班情况查看": "Template Scheduling Overview", + "请选择排班患者": "Please select a scheduled patient", + "透析号": "Dialysis ID", + "透析频率": "Dialysis Frequency", + "模板一": "Template 1", + "本周": "This Week", + "时段": "Time Slot", + "模板二": "Template 2", + "模板三": "Template 3", + "模板四": "Template 4", + "模板": "Template", + "星期": "Weekday", + "班次": "Shift", + "排班不能为空": "Scheduling cannot be empty", + "床号": "Bed Number", + "请选择排班设备": "Please select a scheduling device", + "透析方式": "Dialysis Method", + "请选择透析模式": "Please select a dialysis mode", + "保存成功": "Saved Successfully", + "当天已经排班了": "Already scheduled for the day", + "注意": "Attention" + }, + "patientScheduling": { + "患者排班查看": "Patient Scheduling Overview", + "患者": "Patient", + "请选择": "Please select", + "透析号": "Dialysis ID", + "排班": "Schedule", + "时段": "Time Slot", + "数据异常请刷新后重试": "Data error, please refresh and retry" + }, + "scheduleExportLog": { + "最近导出日志": "Recent Export Logs", + "刷新日志": "Refresh Logs", + "模板导出任务进行中": "Template export task in progress..." + }, + "setUserTimeSlotTemp": { + "用户默认时段设置": "User Default Time Slot Settings", + "默认显示可选时段": "Default Display/Selectable Time Slots", + "请选择": "Please select", + "请至少选择一个时段作为您的默认项": "Please select at least one time slot as your default", + "保存成功": "Saved Successfully" + }, + "排班模板": { + "模板一": "Template 1", + "使用中": "In Use", + "未启用": "Not Enabled", + "模板二": "Template 2", + "模板三": "Template 3", + "模板四": "Template 4", + "班次": "Shift", + "排班不能为空": "Scheduling cannot be empty", + "星期": "Weekday", + "请选择要标记患者": "Please select a patient to mark", + "透析号": "Dialysis ID", + "最近导出日志": "Recent Export Logs", + "排班查看": "Scheduling Overview", + "排班设置": "Scheduling Settings", + "分区": "Zone", + "机号": "Machine Number", + "合计": "Total", + "排班模板": "Scheduling Template", + "滤": "Filter", + "障": "Fault", + "操作提醒": "Operation Reminder", + "感染病患者": "Infectious Disease Patient", + "请求数据中": "Requesting Data...", + "模板导出成功": "Template Export Successful", + "故障设备不能排班": "Faulty device cannot be scheduled", + "删除成功": "Deleted Successfully", + "保存成功": "Saved Successfully", + "设置成功": "Settings Saved", + "已进入编辑模式": "Entered Editing Mode", + "已退出编辑模式": "Exited Editing Mode", + "没有启动编辑": "Editing not started", + "目前该机器故障请对从新对患者排班": "This machine is currently faulty, please reschedule the patient!", + "是否复制排班到当前位置": "Do you want to copy the schedule to the current location?", + "当前位置已经有排班了是复制还是互换": "The current location already has a schedule. Do you want to copy or swap?", + 当前位置已经有排班了是覆盖还是互换: 'The current location is already scheduled! Coverage or exchange?', + "您要拖动的床位不支持": "The bed you are trying to move is not supported", + 覆盖: 'cover', + } +} \ No newline at end of file diff --git a/src/i18n/pages/scheduling/index.ts b/src/i18n/pages/scheduling/index.ts new file mode 100644 index 0000000..2bc9a75 --- /dev/null +++ b/src/i18n/pages/scheduling/index.ts @@ -0,0 +1,25 @@ +import schedulingZhCn from './zh-cn'; +import schedulingEn from './en'; +import schedulingZhTw from './zh-tw'; +import schedulingJp from './jp'; +import schedulingMs from './ms'; + + +export default { + zhCn: { + ...schedulingZhCn + }, + en: { + ...schedulingEn + }, + zhTw: { + ...schedulingZhTw + }, + jp: { + ...schedulingJp + }, + ms: { + ...schedulingMs, + } +} + diff --git a/src/i18n/pages/scheduling/jp.ts b/src/i18n/pages/scheduling/jp.ts new file mode 100644 index 0000000..747bd0d --- /dev/null +++ b/src/i18n/pages/scheduling/jp.ts @@ -0,0 +1,291 @@ +export default { + "周次": "週次", + "上一周": "前週", + "下一周": "次週", + "班次": "班次", + "上午": "午前", + "下午": "午後", + "晚上": "夜間", + "星期": "曜日", + "耗材统计": "消耗品統計", + "操作时间": '操作時間', + "操作人": '操作員', + "显示": "表示", + "隐藏": "非表示", + "请选择要标记患者": "マークする患者を選択してください", + "透析号": "透析番号", + "刷新": "更新", + "导出": "エクスポート", + "打印": "印刷", + "编辑": "編集", + "退出编辑": "編集を終了", + "模板排班查看": "テンプレートスケジュールの確認", + "患者排班查看": "患者スケジュールの確認", + "恢复排班": "スケジュールの復元", + "排班日志": "スケジュールログ", + "导出到指定周": "指定週へのエクスポート", + "分区": "区分", + "机号": "機器番号", + "合计": "合計", + "滤": "濾", + "障": "障", + "总数": "総数", + "操作提醒": "操作の通知", + "取消": "キャンセル", + "复制": "コピー", + "互换": "交換", + "排班日期": "スケジュール日付", + "查询": "検索", + "患者名字": "患者名", + "透析方式": "透析方法", + "床号": "ベッド番号", + "时段": "時間帯", + "操作": "操作", + "恢复": "復元", + "导出当前周排班至指定周": "現在週のスケジュールを指定週にエクスポート", + "目标周": "目標週", + "请选择目标周": "目標週を選択してください", + "确认": "確認", + "感染病患者": "感染症患者", + "恢复成功": "復元成功", + "恢复失败": "復元失敗", + "模板一": "テンプレート一", + "模板二": "テンプレート二", + "模板三": "テンプレート三", + "模板四": "テンプレート四", + "设备现在故障不能做透析": "現在、設備に故障があり透析ができません", + "故障设备不能排班": "故障した機器はスケジュールに登録できません", + "此操作将删除此排班是否继续": "この操作はスケジュールを削除します。続行しますか?", + "当前患者已经签到是否删除排班": "現在の患者は既にチェックインしています。スケジュールを削除しますか?", + "提示": "通知", + "删除": "削除", + "删除成功": "削除成功", + "请求数据中": "データをリクエスト中", + "确定": "決定", + "保存成功": "保存成功", + "当前床设备不支持": "現在のベッドの機器はサポートされていません", + "透析模式您确定要排班": "透析モードでスケジュールを設定しますか?", + "取消添加排班": "スケジュールの追加をキャンセル", + "设置成功": "設定成功", + "正在导出中": "エクスポート中...", + "周排班数据为空无法打印": "週スケジュールデータが空で印刷できません", + "请先选择基准周后再进行打印操作": "基準週を選択してから印刷操作を行ってください", + "系统异常请刷新后重试": "システムエラー、更新して再試行してください", + "年": "年", + "第": "第", + "周": "週", + "全区病人": "全区患者", + "排班": "スケジュール", + "星期日": "日曜日", + "已进入编辑模式": "編集モードに入っています", + "已退出编辑模式": "編集モードを終了しました", + "本周": "今週", + "没有启动编辑": "編集が開始されていません", + "排班拖动中": "スケジュール移動中...", + "您要拖动的床位不支持": "移動しようとするベッドはサポートされていません", + "透析方案": "透析プラン", + "您确定要排班": "スケジュールを設定してもよろしいですか?", + "如果选择继续复制目标排班将被删除是否继续操作": "続行すると、ターゲットスケジュールが削除されます。操作を続行しますか?", + 如果选择继续覆盖目标排班将被删除是否继续操作: '上書きを続行することを選択した場合、ターゲット・シフトは削除されます。続行しますか?', + "继续": "続行", + "UI渲染失败请刷新后查看最新数据": "UIのレンダリングに失敗しました。更新して最新データを確認してください", + "复制成功": "コピー成功", + 覆盖成功: '上書きに成功しました', + "复制排班操作发生异常请联系管理员": "コピー操作で異常が発生しました。管理者にお問い合わせください", + 覆盖排班操作发生异常请联系管理员: '上書きシフト操作に異常が発生しました。管理者に連絡してください', + "目前该机器故障请重新对对患者排班": "現在、この機器は故障しています。患者のスケジュールを再設定してください", + "是否复制排班到当前位置": "スケジュールを現在の位置にコピーしますか?", + 是否覆盖排班到当前位置: '現在の位置にシフトを上書きするかどうか?', + "当前位置已经有排班了是复制还是互换": "現在の位置にはすでにスケジュールがあります。コピーまたは交換しますか?", + 当前位置已经有排班了是覆盖还是互换: '現在の場所は予定されています!カバーするか、交換するか?', + "暂无可选周排班数据": "選択可能な週スケジュールデータはありません", + "请先选择基准周后再进行切换上一周操作": "基準週を選択してから、前週への切り替え操作を行ってください", + "当前周已经是第一周了": "現在の週はすでに最初の週です", + "请先选择基准周后再进行切换下一周操作": "基準週を選択してから、次週への切り替え操作を行ってください", + "当前周已经是最后一周了": "現在の週はすでに最後の週です", + "数据异常请刷新后重试": "データ異常、更新して再試行してください", + "排班导出操作成功数据将会在未来一段时间能进行同步成功后将会系统将会通知知到您届时刷新排班页面后既能看到最新数据": "スケジュールエクスポート操作が成功しました。データはしばらくしてから同期され、成功後にシステムから通知されます。通知後、スケジュールページを更新して最新データを確認できます", + "周数": { + "周一": "月曜日", + "周二": "火曜日", + "周三": "水曜日", + "周四": "木曜日", + "周五": "金曜日", + "周六": "土曜日", + "周天": "日曜日", + "周日": "日曜日" + }, + "时段数": { + "上午": "午前", + "下午": "午後", + "晚上": "夜" + }, + "操作数": { + "删除": "削除", + "取消": "キャンセル", + "确定": "決定", + "确认": "確認", + "提示": "通知", + "保存": "保存", + "修改": "変更", + "查看": "閲覧", + "打印": "印刷", + "导入": "インポート", + "模版复制": "インポート", + "导出": "エクスポート", + "编辑": "編集", + "退出编辑": "編集を終了", + "复制": "コピー", + "互换": "交換" + }, + "数字数": { + "零": "零", + "一": "一", + "二": "二", + "三": "三", + "四": "四", + "五": "五", + "六": "六", + "七": "七", + "八": "八", + "九": "九" + }, + "数字数单位": { + "十": "十", + "百": "百", + "千": "千" + }, + "addScheduling": { + "患者排班": "患者スケジュール", + "排班设备": "スケジュール機器:", + "请选择排班设备": "スケジュール機器を選択してください", + "排班日期": "スケジュール日:", + "选择排班日期": "スケジュール日を選択", + "排班时段": "スケジュール時間帯", + "请选择排班时段": "スケジュール時間帯を選択してください", + "排班患者": "スケジュール患者", + "请选择排班患者": "スケジュール患者を選択してください", + "透析模式": "透析モード:", + "请选择透析模式": "透析モードを選択してください", + "排班人": "スケジュール担当者:", + "请选择排班人": "スケジュール担当者を選択してください", + "请选择透析方案": "透析プランを選択してください", + "请选择透析患者": "透析患者を選択してください", + "请选择": "選択してください", + "故障设备不能排班": "故障機器はスケジュールできません!" + }, + "inputTem": { + "导入": "インポート", + "导出模板": "テンプレートをエクスポート", + "模板一排班": "テンプレート1スケジュール", + "模板二排班": "テンプレート2スケジュール", + "模板三排班": "テンプレート3スケジュール", + "模板四排班": "テンプレート4スケジュール", + "目标模板": "ターゲットテンプレート" + }, + "output": { + "导出": "エクスポート", + "导成模板文件": "テンプレートファイルとしてエクスポート", + "导成预约排班": "予約スケジュールとしてエクスポート", + "导成预约排班说明":"注意:エクスポートボタンでExcelファイルをエクスポートできます。確認ボタンで、このテンプレートの内容を一時スケジュールにエクスポートします。", + "请选择导出导成模板文件": "エクスポートするテンプレートファイルを選択してください", + "模板一排班数据": "テンプレート1スケジュールデータ", + "模板二排班数据": "テンプレート2スケジュールデータ", + "模板三排班数据": "テンプレート3スケジュールデータ", + "模板四排班数据": "テンプレート4スケジュールデータ", + "当前预约排班日期匹配失败请刷新后重试": "現在の予約スケジュールの日付が一致しません。リフレッシュして再試行してください", + "您确定要把模板": "このテンプレートを", + "导出到": "にエクスポートしますか?", + "的排班吗": "のスケジュールに?" + }, + "paibanLog": { + "排班记录": "スケジュール記録", + "查询日期": "検索日:", + "查询": "検索", + "调整时间": "調整時間", + "排班日期": "スケジュール日", + "姓名": "患者氏名", + "床号": "ベッド番号", + "方案名称": "プラン名", + "最后操作人": "最終操作担当者", + "日志": "ログ" + }, + "paibanSetting": { + "模板设置": "テンプレート設定", + "模板启用数量": "有効テンプレート数", + "启用一个": "1つ有効化", + "启用两个": "2つ有効化", + "启用三个": "3つ有効化", + "启用四个": "4つ有効化", + "模板自动生成起始时间": "テンプレートの自動生成開始時間", + "预览效果": "プレビュー効果", + "预约排班将由模板": "予約スケジュールはテンプレート", + "自动生成": "によって自動生成されます", + "以此类推": "以降も同様に" + }, + "patientScheduling": { + "患者排班查看": "患者スケジュール閲覧", + "患者": "患者", + "请选择": "選択してください", + "透析号": "透析番号", + "排班": "スケジュール", + "时段": "時間帯", + "数据异常请刷新后重试": "データ異常、リフレッシュして再試行してください" + }, + "scheduleExportLog": { + "最近导出日志": "最近のエクスポートログ", + "刷新日志": "ログを更新", + "模板导出任务进行中": "テンプレートのエクスポート処理中..." + }, + "setUserTimeSlotTemp": { + "用户默认时段设置": "ユーザーのデフォルト時間帯設定", + "默认显示可选时段": "デフォルト表示/選択可能時間帯", + "请选择": "選択してください", + "请至少选择一个时段作为您的默认项": "少なくとも1つの時間帯をデフォルトとして選択してください", + "保存成功": "保存成功" + }, + "排班模板": { + "模板一": "テンプレート1", + "使用中": "使用中", + "未启用": "未使用", + "模板二": "テンプレート2", + "模板三": "テンプレート3", + "模板四": "テンプレート4", + "班次": "シフト", + "排班不能为空": "スケジュールは空にできません", + "星期": "曜日", + "请选择要标记患者": "マークする患者を選択してください", + "透析号": "透析番号", + "最近导出日志": "最近のエクスポートログ", + "排班查看": "スケジュール閲覧", + "排班设置": "スケジュール設定", + "分区": "エリア", + "机号": "機器番号", + "合计": "合計", + "排班模板": "スケジュールテンプレート", + "滤": "フィルター", + "障": "障害", + "操作提醒": "操作リマインダー", + "感染病患者": "感染症患者", + "请求数据中": "データ取得中...", + "模板导出成功": "テンプレートのエクスポート成功", + "模板": "テンプレート", + "故障设备不能排班": "故障機器はスケジュールできません", + "删除成功": "削除成功", + "此操作将删除此排班是否继续": "この操作でスケジュールが削除されます。続行しますか?", + "保存成功": "保存成功", + "当前床设备不支持": "このベッドの機器はサポートされていません", + "透析模式": "透析モード", + "您确定要排班": "スケジュールを確定しますか?", + "设置成功": "設定成功", + "已进入编辑模式": "編集モードに入りました", + "已退出编辑模式": "編集モードを終了しました", + "没有启动编辑": "編集が開始されていません", + "目前该机器故障请对从新对患者排班": "この機器は現在故障しています。患者のスケジュールを再設定してください!", + "是否复制排班到当前位置": "スケジュールを現在の位置にコピーしますか?", + "当前位置已经有排班了是复制还是互换": "現在の位置にはすでにスケジュールがあります。コピーしますか?交換しますか?", + 当前位置已经有排班了是覆盖还是互换: '現在の場所は予定されています!カバーするか、交換するか?', + "您要拖动的床位不支持": "ドラッグしようとしているベッドはサポートされていません", + 覆盖: 'に覆いを', + } +} diff --git a/src/i18n/pages/scheduling/ms.ts b/src/i18n/pages/scheduling/ms.ts new file mode 100644 index 0000000..6d42e47 --- /dev/null +++ b/src/i18n/pages/scheduling/ms.ts @@ -0,0 +1,331 @@ +export default { + "周次": "Minggu", + "上一周": "Minggu Lalu", + "下一周": "Minggu Depan", + "班次": "Sesi", + "上午": "Pagi", + "下午": "Petang", + "晚上": "Malam", + "星期": "Hari", + "耗材统计": "Statistik Bahan Penggunaan", + "操作时间": 'Masa Operasi', + "操作人": 'Pengendali', + "显示": "Paparkan", + "隐藏": "Sembunyikan", + "请选择要标记患者": "Sila pilih pesakit untuk ditanda", + "透析号": "Nombor Dialisis", + "刷新": "Segarkan", + "导出": "Eksport", + "打印": "Cetak", + "编辑": "Sunting", + "退出编辑": "Keluar dari Suntingan", + "模板排班查看": "Paparan Jadual Template", + "患者排班查看": "Paparan Jadual Pesakit", + "恢复排班": "Pulihkan Jadual", + "排班日志": "Log Jadual", + "导出到指定周": "Eksport ke Minggu Tertentu", + "分区": "Zon", + "机号": "Nombor Mesin", + "合计": "Jumlah", + "滤": "Penapis", + "障": "Halangan", + "总数": "Jumlah Keseluruhan", + "操作提醒": "Peringatan Tindakan", + "取消": "Batal", + "复制": "Salin", + "互换": "Tukar", + "排班日期": "Tarikh Jadual", + "查询": "Carian", + "患者名字": "Nama Pesakit", + "透析方式": "Kaedah Dialisis", + "床号": "Nombor Katil", + "时段": "Waktu", + "操作": "Tindakan", + "恢复": "Pulihkan", + "导出当前周排班至指定周": "Eksport Jadual Minggu Semasa ke Minggu Tertentu", + "目标周": "Minggu Sasaran", + "请选择目标周": "Sila pilih Minggu Sasaran", + "确认": "Sahkan", + "感染病患者": "Pesakit Penyakit Berjangkit", + "恢复成功": "Pemulihan Berjaya", + "恢复失败": "Pemulihan Gagal", + "模板一": "Template Satu", + "模板二": "Template Dua", + "模板三": "Template Tiga", + "模板四": "Template Empat", + "设备现在故障不能做透析": "Mesin sedang rosak, tidak boleh melakukan dialisis", + "故障设备不能排班": "Mesin rosak tidak boleh dijadualkan", + "此操作将删除此排班是否继续": "Tindakan ini akan memadamkan jadual ini, adakah anda ingin meneruskan?", + "当前患者已经签到是否删除排班": "Pesakit ini telah mendaftar, adakah anda ingin memadamkan jadual?", + "提示": "Peringatan", + "删除": "Padam", + "删除成功": "Pemadaman Berjaya", + "请求数据中": "Meminta data", + "确定": "Sahkan", + "保存成功": "Penyimpanan Berjaya", + "当前床设备不支持": "Peralatan katil ini tidak disokong", + "透析模式您确定要排班": "Mod dialisis, adakah anda pasti mahu menjadualkan?", + "取消添加排班": "Batalkan penambahan jadual", + "设置成功": "Tetapan Berjaya", + "正在导出中": "Sedang mengeksport...", + "周排班数据为空无法打印": "Data jadual minggu ini kosong, tidak dapat mencetak", + "请先选择基准周后再进行打印操作": "Sila pilih minggu asas terlebih dahulu sebelum mencetak", + "系统异常请刷新后重试": "Ralat sistem, sila segarkan dan cuba lagi", + "年": "Tahun", + "第": "Ke", + "周": "Minggu", + "全区病人": "Pesakit Seluruh Kawasan", + "排班": "Jadual", + "星期日": "Ahad", + "已进入编辑模式": "Telah memasuki mod suntingan", + "已退出编辑模式": "Telah keluar dari mod suntingan", + "本周": "Minggu Ini", + "没有启动编辑": "Tiada mod suntingan yang dimulakan", + "排班拖动中": "Menarik jadual...", + "您要拖动的床位不支持": "Katil yang ingin dipindahkan tidak disokong", + "透析方案": "Pelan Dialisis", + "您确定要排班": "Adakah anda pasti mahu menjadualkan?", + "如果选择继续复制目标排班将被删除是否继续操作": "Jika teruskan salin, jadual sasaran akan dipadam. Adakah anda ingin meneruskan?", + 如果选择继续覆盖目标排班将被删除是否继续操作: 'Jika anda memilih untuk terus menulis alih, jadual sasaran akan dipadamkan, adakah ia akan terus?', + "继续": "Teruskan", + "UI渲染失败请刷新后查看最新数据": "Gagal memaparkan UI, sila segarkan untuk melihat data terkini", + "复制成功": "Salinan Berjaya", + 覆盖成功: 'Penutup berjaya', + "复制排班操作发生异常请联系管理员": "Tindakan salinan jadual gagal, sila hubungi pentadbir", + 覆盖排班操作发生异常请联系管理员: 'Mengganti operasi jadual yang tidak biasa, hubungi pentadbir', + "目前该机器故障请重新对对患者排班": "Mesin ini rosak, sila jadualkan semula pesakit", + "是否复制排班到当前位置": "Adakah anda ingin salin jadual ke lokasi semasa?", + 是否覆盖排班到当前位置: 'Sama ada menuliskan jadual ke lokasi semasa?', + "当前位置已经有排班了是复制还是互换": "Lokasi semasa sudah ada jadual, adakah anda mahu salin atau tukar?", + 当前位置已经有排班了是覆盖还是互换: 'The current location is already scheduled! Coverage or exchange?', + "暂无可选周排班数据": "Tiada data jadual minggu yang boleh dipilih", + "请先选择基准周后再进行切换上一周操作": "Sila pilih minggu asas terlebih dahulu sebelum menukar minggu lepas", + "当前周已经是第一周了": "Minggu semasa sudah minggu pertama", + "请先选择基准周后再进行切换下一周操作": "Sila pilih minggu asas terlebih dahulu sebelum menukar minggu depan", + "当前周已经是最后一周了": "Minggu semasa sudah minggu terakhir", + "数据异常请刷新后重试": "Data tidak sah, sila segarkan dan cuba lagi", + "排班导出操作成功数据将会在未来一段时间能进行同步成功后将会系统将会通知知到您届时刷新排班页面后既能看到最新数据": "Operasi eksport jadual berjaya, data akan diselaraskan dalam masa terdekat dan sistem akan memberitahu anda. Sila segarkan halaman jadual untuk melihat data terkini", + "周数": { + "周一": "Isnin", + "周二": "Selasa", + "周三": "Rabu", + "周四": "Khamis", + "周五": "Jumaat", + "周六": "Sabtu", + "周天": "Ahad", + "周日": "Ahad" + }, + "时段数": { + "上午": "Pagi", + "下午": "Petang", + "晚上": "Malam" + }, + "操作数": { + "删除": "Padam", + "取消": "Batal", + "确定": "Tentukan", + "确认": "Sahkan", + "提示": "Petunjuk", + "保存": "Simpan", + "修改": "Ubah", + "查看": "Lihat", + "打印": "Cetak", + "导入": "Import", + "模版复制": "Import", + "导出": "Eksport", + "编辑": "Sunting", + "退出编辑": "Keluar Suntingan", + "复制": "Salin", + "互换": "Tukar" + }, + "数字数": { + "零": "Sifar", + "一": "Satu", + "二": "Dua", + "三": "Tiga", + "四": "Empat", + "五": "Lima", + "六": "Enam", + "七": "Tujuh", + "八": "Lapan", + "九": "Sembilan" + }, + "数字数单位": { + "十": "Sepuluh", + "百": "Ratus", + "千": "Ribu" + }, + "数字数大单位": {}, + "addScheduling": { + "患者排班": "Jadual Pesakit", + "排班设备": "Peralatan Jadual:", + "请选择排班设备": "Sila pilih peralatan jadual", + "排班日期": "Tarikh Jadual:", + "选择排班日期": "Pilih tarikh jadual", + "排班时段": "Tempoh Jadual", + "请选择排班时段": "Sila pilih tempoh jadual", + "排班患者": "Pesakit Jadual", + "请选择排班患者": "Sila pilih pesakit jadual", + "透析模式": "Mod Dialisis:", + "请选择透析模式": "Sila pilih mod dialisis", + "排班人": "Penjadual:", + "请选择排班人": "Sila pilih penjadual", + "请选择透析方案": "Sila pilih pelan dialisis", + "请选择透析患者": "Sila pilih pesakit dialisis", + "请选择": "Sila pilih", + "故障设备不能排班": "Peralatan rosak tidak boleh dijadualkan!" + }, + "inputTem": { + "导入": "Import", + "导出模板": "Eksport Templat", + "模板一排班": "Jadual Templet Satu", + "模板二排班": "Jadual Templet Dua", + "模板三排班": "Jadual Templet Tiga", + "模板四排班": "Jadual Templet Empat", + "目标模板": "Templet Sasaran" + }, + "output": { + "导出": "Eksport", + "导成模板文件": "Eksport Fail Templat", + "导成预约排班": "Eksport Jadual Tempahan", + "导成预约排班说明":"Nota: Butang eksport akan mengeksport fail Excel; butang sahkan akan mengeksport kandungan templat ini ke jadual sementara", + "请选择导出导成模板文件": "Sila pilih fail templat untuk dieksport", + "模板一排班数据": "Data Jadual Templet Satu", + "模板二排班数据": "Data Jadual Templet Dua", + "模板三排班数据": "Data Jadual Templet Tiga", + "模板四排班数据": "Data Jadual Templet Empat", + "当前预约排班日期匹配失败请刷新后重试": "Pencocokan tarikh jadual tempahan gagal, sila segarkan dan cuba lagi", + "您确定要把模板": "Adakah anda pasti mahu mengeksport templat", + "导出到": "Eksport ke", + "的排班吗": "jadual ini?" + }, + "output2": { + "导出": "Eksport", + "导成模板文件": "Eksport Fail Templat", + "模板一排班数据": "Data Jadual Templet Satu", + "模板二排班数据": "Data Jadual Templet Dua", + "模板三排班数据": "Data Jadual Templet Tiga", + "模板四排班数据": "Data Jadual Templet Empat", + "导成预约排班": "Eksport Jadual Tempahan", + "您确定要把模板": "Adakah anda pasti mahu mengeksport templat", + "导出到": "Eksport ke", + "的排班吗": "jadual ini?", + "模板一": "Templet Satu", + "模板二": "Templet Dua", + "模板三": "Templet Tiga", + "模板四": "Templet Empat" + }, + "paibanLog": { + "排班记录": "Rekod Jadual", + "查询日期": "Tarikh Carian:", + "查询": "Carian", + "调整时间": "Masa Penyesuaian", + "排班日期": "Tarikh Jadual", + "姓名": "Nama", + "床号": "Nombor Katil", + "方案名称": "Nama Pelan", + "最后操作人": "Pengendali Terakhir", + "日志": "Log" + }, + "paibanSetting": { + "模板设置": "Tetapan Templat", + "模板启用数量": "Bilangan Templat Diaktifkan", + "启用一个": "Aktifkan Satu", + "启用两个": "Aktifkan Dua", + "启用三个": "Aktifkan Tiga", + "启用四个": "Aktifkan Empat", + "模板自动生成起始时间": "Masa Mula Automatik Templat", + "预览效果": "Pratonton Kesan", + "预约排班将由模板": "Jadual Tempahan Akan Dihasilkan Menggunakan Templat", + "自动生成": "Dihasilkan Secara Automatik", + "以此类推": "Dan Seterusnya" + }, + "paibanShow": { + "模板排班情况查看": "Lihat Keadaan Jadual Templat", + "请选择排班患者": "Sila Pilih Pesakit Untuk Jadual", + "透析号": "Nombor Dialisis", + "透析频率": "Kekerapan Dialisis", + "模板一": "Templet Satu", + "本周": "Minggu Ini", + "时段": "Tempoh", + "模板二": "Templet Dua", + "模板三": "Templet Tiga", + "模板四": "Templet Empat", + "模板": "Templet", + "星期": "Hari", + "班次": "Shif", + "排班不能为空": "Jadual Tidak Boleh Kosong", + "床号": "Nombor Katil", + "请选择排班设备": "Sila Pilih Peralatan Jadual", + "透析方式": "Mod Dialisis", + "请选择透析模式": "Sila Pilih Mod Dialisis", + "保存成功": "Simpan Berjaya", + "当天已经排班了": "Jadual Pada Hari Ini Telah Dibuat", + "注意": "Perhatian" + }, + "patientScheduling": { + "患者排班查看": "Lihat Jadual Pesakit", + "患者": "Pesakit", + "请选择": "Sila Pilih", + "透析号": "Nombor Dialisis", + "排班": "Jadual", + "时段": "Tempoh", + "数据异常请刷新后重试": "Data Tidak Normal, Sila Segarkan Dan Cuba Lagi" + }, + "scheduleExportLog": { + "最近导出日志": "Log Eksport Terbaru", + "刷新日志": "Segarkan Log", + "模板导出任务进行中": "Tugas Eksport Templat Sedang Berjalan..." + }, + "setUserTimeSlotTemp": { + "用户默认时段设置": "Tetapan Waktu Lalai Pengguna", + "默认显示可选时段": "Paparkan Waktu Pilihan Lalai", + "请选择": "Sila Pilih", + "请至少选择一个时段作为您的默认项": "Sila pilih sekurang-kurangnya satu waktu sebagai pilihan lalai anda", + "保存成功": "Simpan Berjaya" + }, + "排班模板": { + "模板一": "Templet Satu", + "使用中": "Sedang Digunakan", + "未启用": "Tidak Diaktifkan", + "模板二": "Templet Dua", + "模板三": "Templet Tiga", + "模板四": "Templet Empat", + "班次": "Shif", + "排班不能为空": "Jadual Tidak Boleh Kosong", + "星期": "Hari", + "请选择要标记患者": "Sila Pilih Pesakit Untuk Diketahui", + "透析号": "Nombor Dialisis", + "最近导出日志": "Log Eksport Terbaru", + "排班查看": "Lihat Jadual", + "排班设置": "Tetapan Jadual", + "分区": "Zon", + "机号": "Nombor Mesin", + "合计": "Jumlah", + "排班模板": "Templet Jadual", + "滤": "Penapis", + "障": "Halangan", + "操作提醒": "Peringatan Tindakan", + "感染病患者": "Pesakit Penyakit Berjangkit", + "请求数据中": "Meminta Data...", + "模板导出成功": "Eksport Templat Berjaya", + "模板": "Templet", + "故障设备不能排班": "Peralatan Rosak Tidak Boleh Dijadualkan", + "删除成功": "Hapus Berjaya", + "此操作将删除此排班是否继续": "Tindakan ini akan menghapus jadual ini, adakah anda pasti untuk meneruskan?", + "保存成功": "Simpan Berjaya", + "当前床设备不支持": "Peralatan Katil Semasa Tidak Menyokong", + "透析模式": "Mod Dialisis", + "您确定要排班": "Adakah anda pasti untuk menjadualkan?", + "设置成功": "Tetapan Berjaya", + "已进入编辑模式": "Masuk Mod Penyuntingan", + "已退出编辑模式": "Keluar Mod Penyuntingan", + "没有启动编辑": "Penyuntingan Tidak Dijalankan", + "目前该机器故障请对从新对患者排班": "Peralatan ini rosak, sila susun semula jadual pesakit!", + "是否复制排班到当前位置": "Adakah anda pasti untuk menyalin jadual ke lokasi ini?", + "当前位置已经有排班了是复制还是互换": "Lokasi ini sudah mempunyai jadual, adakah anda ingin menyalin atau menukar?", + 当前位置已经有排班了是覆盖还是互换: 'The current location is already scheduled! Coverage or exchange?', + "您要拖动的床位不支持": "Katil yang anda ingin seret tidak disokong", + 覆盖: 'Liputan', + } +} diff --git a/src/i18n/pages/scheduling/zh-cn.ts b/src/i18n/pages/scheduling/zh-cn.ts new file mode 100644 index 0000000..be33c0f --- /dev/null +++ b/src/i18n/pages/scheduling/zh-cn.ts @@ -0,0 +1,333 @@ +export default { + 周次: '周次', + 上一周: '上一周', + 下一周: '下一周', + 班次: '班次', + 上午: '上午', + 下午: '下午', + 晚上: '晚上', + 星期: '星期', + 耗材统计: '耗材统计', + 操作时间: '操作时间', + 操作人: '操作人', + 显示: '显示', + 隐藏: '隐藏', + 请选择要标记患者: '请选择要标记患者', + 透析号: '透析号', + 刷新: '刷新', + 导出: '导出', + 打印: '打印', + 编辑: '编辑', + 退出编辑: '退出编辑', + 模板排班查看: '模板排班查看', + 患者排班查看: '患者排班查看', + 恢复排班: '恢复排班', + 排班日志: '排班日志', + 导出到指定周: '导出到指定周', + 分区: '分区', + 机号: '机号', + 合计: '合计', + 滤: '滤', + 障: '障', + 总数: '总数', + 操作提醒: '操作提醒', + 取消: '取消', + 复制: '复制', + 互换: '互换', + 排班日期: '排班日期', + 查询: '查询', + 患者名字: '患者名字', + 透析方式: '透析方式', + 床号: '床号', + 时段: '时段', + 操作: '操作', + 恢复: '恢复', + 导出当前周排班至指定周: '导出当前周排班至指定周', + 目标周: '目标周', + 请选择目标周: '请选择目标周', + 确认: '确认', + 感染病患者: '感染病患者', + 恢复成功: '恢复成功', + 恢复失败: '恢复失败', + 模板一: '模板一', + 模板二: '模板二', + 模板三: '模板三', + 模板四: '模板四', + 设备现在故障不能做透析: '设备现在故障不能做透析', + 故障设备不能排班: '故障设备不能排班', + 此操作将删除此排班是否继续: '此操作将删除此排班, 是否继续', + 当前患者已经签到是否删除排班: '当前患者已经签到,是否删除排班', + 提示: '提示', + 删除: '删除', + 删除成功: '删除成功', + 请求数据中: '请求数据中', + 确定: '确定', + 保存成功: '保存成功', + 当前床设备不支持: '当前床设备不支持', + 透析模式您确定要排班: '透析模式,您确定要排班?', + 取消添加排班: '取消添加排班', + 设置成功: '设置成功', + 正在导出中: '正在导出中...', + 周排班数据为空无法打印: '周排班数据为空,无法打印', + 请先选择基准周后再进行打印操作: '请先选择基准周后再进行打印操作', + 系统异常请刷新后重试: '系统异常,请刷新后重试', + 年: '年', + 第: '第', + 周: '周', + 全区病人: '全区病人', + 排班: '排班', + 星期日: '星期日', + 已进入编辑模式: '已进入编辑模式', + 已退出编辑模式: '已退出编辑模式', + 本周: '本周', + 没有启动编辑: '没有启动编辑', + 排班拖动中: '排班拖动中...', + 您要拖动的床位不支持: '您要拖动的床位不支持', + 透析方案: '透析方案', + 您确定要排班: '您确定要排班', + 如果选择继续复制目标排班将被删除是否继续操作: '如果选择继续复制,目标排班将被删除,是否继续操作?', + 如果选择继续覆盖目标排班将被删除是否继续操作: '如果选择继续覆盖,目标排班将被删除,是否继续操作?', + 继续: '继续', + UI渲染失败请刷新后查看最新数据: 'UI渲染失败,请刷新后查看最新数据', + 复制成功: '复制成功', + 覆盖成功: '覆盖成功', + 复制排班操作发生异常请联系管理员: '复制排班操作发生异常,请联系管理员', + 覆盖排班操作发生异常请联系管理员: '覆盖排班操作发生异常,请联系管理员', + 目前该机器故障请重新对对患者排班: '目前该机器故障,请重新对对患者排班', + 是否复制排班到当前位置: '是否复制排班到当前位置?', + 是否覆盖排班到当前位置: '是否覆盖排班到当前位置?', + 当前位置已经有排班了是复制还是互换: '当前位置已经有排班了?是复制还是互换?', + 当前位置已经有排班了是覆盖还是互换: '当前位置已经有排班了!是覆盖还是互换?', + 暂无可选周排班数据: '暂无可选周排班数据', + 请先选择基准周后再进行切换上一周操作: '请先选择基准周后再进行切换上一周操作', + 当前周已经是第一周了: '当前周已经是第一周了', + 请先选择基准周后再进行切换下一周操作: '请先选择基准周后再进行切换下一周操作', + 当前周已经是最后一周了: '当前周已经是最后一周了', + 数据异常请刷新后重试: '数据异常,请刷新后重试', + 排班导出操作成功数据将会在未来一段时间能进行同步成功后将会系统将会通知知到您届时刷新排班页面后既能看到最新数据: '排班导出操作成功,数据将会在未来一段时间能进行同步,成功后将会系统将会通知知到您,届时刷新排班页面后既能看到最新数据', + 周数: { + 周一: '周一', + 周二: '周二', + 周三: '周三', + 周四: '周四', + 周五: '周五', + 周六: '周六', + 周天: '周天', + 周日: '周日', + }, + 时段数: { + 上午: '上午', + 下午: '下午', + 晚上: '晚上', + }, + 操作数: { + 删除: '删除', + 取消: '取消', + 确定: '确定', + 确认: '确认', + 提示: '提示', + 保存: '保存', + 修改: '修改', + 查看: '查看', + 打印: '打印', + 导入: '导入', + 模版复制: "模版复制", + 导出: '导出', + 编辑: '编辑', + 退出编辑: '退出编辑', + 复制: '复制', + 互换: '互换' + }, + 数字数: { + 零: '零', + 一: '一', + 二: '二', + 三: '三', + 四: '四', + 五: '五', + 六: '六', + 七: '七', + 八: '八', + 九: '九', + }, + 数字数单位: { + 十: '十', + 百: '百', + 千: '千', + }, + 数字数大单位: { + + }, + addScheduling: { + 患者排班: '患者排班', + 排班设备: '排班设备:', + 请选择排班设备: '请选择排班设备', + 排班日期: '排班日期:', + 选择排班日期: '选择排班日期', + 排班时段: '排班时段', + 请选择排班时段: '请选择排班时段', + 排班患者: '排班患者', + 请选择排班患者: '请选择排班患者', + 透析模式: '透析模式:', + 请选择透析模式: '请选择透析模式', + 排班人: '排班人:', + 请选择排班人: '请选择排班人', + 请选择透析方案: '请选择透析方案', + 请选择透析患者: '请选择透析患者', + 请选择: '请选择', + 故障设备不能排班: '故障设备不能排班!', + }, + inputTem: { + 导入: '导入', + 导出模板: '数据源模版', + 模板一排班: '模板一排班', + 模板二排班: '模板二排班', + 模板三排班: '模板三排班', + 模板四排班: '模板四排班', + 目标模板: '复制到模版', + }, + output: { + 导出: '导出', + 导成模板文件: '导出成excel', + 导成预约排班: '导成临时排班', + 导成预约排班说明:"注意:导出按钮,可导出excel文件;确认按钮,可将本模版内容导出到临时排班。", + 请选择导出导成模板文件: '请选择导出导成模板文件', + 模板一排班数据: '模板一排班数据', + 模板二排班数据: '模板二排班数据', + 模板三排班数据: '模板三排班数据', + 模板四排班数据: '模板四排班数据', + 当前预约排班日期匹配失败请刷新后重试: '当前预约排班日期匹配失败,请刷新后重试', + 您确定要把模板: '您确定要把模板', + 导出到: '导出到', + 的排班吗: '的排班吗', + }, + output2: { + 导出: '导出', + 导成模板文件: '导成模板文件', + 模板一排班数据: '模板一排班数据', + 模板二排班数据: '模板二排班数据', + 模板三排班数据: '模板三排班数据', + 模板四排班数据: '模板四排班数据', + 导成预约排班: '导成预约排班', + 您确定要把模板: '您确定要把模板', + 导出到: '导出到', + 的排班吗: '的排班吗', + 模板一: '模板一', + 模板二: '模板二', + 模板三: '模板三', + 模板四: '模板四', + }, + paibanLog: { + 排班记录: '排班记录', + 查询日期: '查询日期:', + 查询: '查询', + 调整时间: '调整时间', + 排班日期: '排班日期', + 姓名: '患者姓名', + 床号: '床号', + 方案名称: '方案名称', + 最后操作人: '最后操作人', + 日志: '日志', + }, + paibanSetting: { + 模板设置: '模板设置', + 模板启用数量: '模板启用数量', + 启用一个: '启用一个', + 启用两个: '启用两个', + 启用三个: '启用三个', + 启用四个: '启用四个', + 模板自动生成起始时间: '模板自动生成起始时间', + 预览效果: '预览效果', + 预约排班将由模板: '预约排班将由模板', + 自动生成: '自动生成', + 以此类推: '以此类推', + }, + paibanShow: { + 模板排班情况查看: '模板排班情况查看', + 请选择排班患者: '请选择排班患者', + 透析号: '透析号', + 透析频率: '透析频率', + 模板一: '模板一', + 本周: '本周', + 时段: '时段', + 模板二: '模板二', + 模板三: '模板三', + 模板四: '模板四', + 模板: '模板', + 星期: '星期', + 班次: '班次', + 排班不能为空: '排班不能为空', + 床号: '床号', + 请选择排班设备: '请选择排班设备', + 透析方式: '透析方式', + 请选择透析模式: '请选择透析模式', + 保存成功: '保存成功', + 当天已经排班了: '当天已经排班了', + 注意: '注意', + }, + patientScheduling: { + 患者排班查看: '患者排班查看', + 患者: '患者', + 请选择: '请选择', + 透析号: '透析号', + 排班: '排班', + 时段: '时段', + 数据异常请刷新后重试: '数据异常,请刷新后重试', + }, + scheduleExportLog: { + 最近导出日志: '最近导出日志', + 刷新日志: '刷新日志', + 模板导出任务进行中: '模板导出任务进行中...', + }, + setUserTimeSlotTemp: { + 用户默认时段设置: '用户默认时段设置', + 默认显示可选时段: '默认显示/可选时段', + 请选择: '请选择', + 请至少选择一个时段作为您的默认项: '请至少选择一个时段作为您的默认项', + 保存成功: '保存成功', + }, + 排班模板: { + 模板一: '模板一', + 使用中: '使用中', + 未启用: '未启用', + 模板二: '模板二', + 模板三: '模板三', + 模板四: '模板四', + 班次: '班次', + 排班不能为空: '排班不能为空', + 星期: '星期', + 请选择要标记患者: '请选择要标记患者', + 透析号: '透析号', + 最近导出日志: '最近导出日志', + 排班查看: '排班查看', + 排班设置: '排班设置', + 分区: '分区', + 机号: '机号', + 合计: '合计', + 排班模板: '排班模板', + 滤: '滤', + 障: '障', + 操作提醒: '操作提醒', + 感染病患者: '感染病患者', + 请求数据中: '请求数据中...', + 模板导出成功: '模板导出成功', + 模板: '模板', + 故障设备不能排班: '故障设备不能排班', + 删除成功: '删除成功', + 此操作将删除此排班是否继续: '此操作将删除此排班, 是否继续?', + 保存成功: '保存成功', + 当前床设备不支持: '当前床设备不支持', + 透析模式: '透析模式', + 您确定要排班: '您确定要排班', + 设置成功: '设置成功', + 已进入编辑模式: '已进入编辑模式', + 已退出编辑模式: '已退出编辑模式', + 没有启动编辑: '没有启动编辑', + 目前该机器故障请对从新对患者排班: '目前该机器故障,请对从新对患者排班!', + 是否复制排班到当前位置: '是否复制排班到当前位置?', + 当前位置已经有排班了是复制还是互换: '当前位置已经有排班了?是复制还是互换?', + 当前位置已经有排班了是覆盖还是互换: '当前位置已经有排班了!是覆盖还是互换?', + 您要拖动的床位不支持: '您要拖动的床位不支持', + 覆盖: '覆盖', + } +} \ No newline at end of file diff --git a/src/i18n/pages/scheduling/zh-tw.ts b/src/i18n/pages/scheduling/zh-tw.ts new file mode 100644 index 0000000..50ed537 --- /dev/null +++ b/src/i18n/pages/scheduling/zh-tw.ts @@ -0,0 +1,333 @@ +export default { + "周次": "周次", + "上一周": "上一周", + "下一周": "下一周", + "班次": "班次", + "上午": "上午", + "下午": "下午", + "晚上": "晚上", + "星期": "星期", + "耗材统计": "耗材統計", + "操作时间": '操作时间', + "操作人": '操作人', + "显示": "顯示", + "隐藏": "隱藏", + "请选择要标记患者": "請選擇要標記患者", + "透析号": "透析號", + "刷新": "刷新", + "导出": "匯出", + "打印": "列印", + "编辑": "編輯", + "退出编辑": "退出編輯", + "模板排班查看": "模板排班查看", + "患者排班查看": "患者排班查看", + "恢复排班": "恢復排班", + "排班日志": "排班日誌", + "导出到指定周": "匯出到指定週", + "分区": "分區", + "机号": "機號", + "合计": "合計", + "滤": "濾", + "障": "障", + "总数": "總數", + "操作提醒": "操作提醒", + "取消": "取消", + "复制": "複製", + "互换": "互換", + "排班日期": "排班日期", + "查询": "查詢", + "患者名字": "患者名字", + "透析方式": "透析方式", + "床号": "床號", + "时段": "時段", + "操作": "操作", + "恢复": "恢復", + "导出当前周排班至指定周": "匯出當前週排班至指定週", + "目标周": "目標週", + "请选择目标周": "請選擇目標週", + "确认": "確認", + "感染病患者": "感染病患者", + "恢复成功": "恢復成功", + "恢复失败": "恢復失敗", + "模板一": "模板一", + "模板二": "模板二", + "模板三": "模板三", + "模板四": "模板四", + "设备现在故障不能做透析": "設備現在故障不能做透析", + "故障设备不能排班": "故障設備不能排班", + "此操作将删除此排班是否继续": "此操作將刪除此排班,是否繼續", + "当前患者已经签到是否删除排班": "當前患者已經簽到,是否刪除排班", + "提示": "提示", + "删除": "刪除", + "删除成功": "刪除成功", + "请求数据中": "請求數據中", + "确定": "確定", + "保存成功": "保存成功", + "当前床设备不支持": "當前床設備不支持", + "透析模式您确定要排班": "透析模式,您確定要排班?", + "取消添加排班": "取消添加排班", + "设置成功": "設置成功", + "正在导出中": "正在匯出中...", + "周排班数据为空无法打印": "周排班數據為空,無法列印", + "请先选择基准周后再进行打印操作": "請先選擇基準週後再進行列印操作", + "系统异常请刷新后重试": "系統異常,請刷新後重試", + "年": "年", + "第": "第", + "周": "週", + "全区病人": "全區病人", + "排班": "排班", + "星期日": "星期日", + "已进入编辑模式": "已進入編輯模式", + "已退出编辑模式": "已退出編輯模式", + "本周": "本週", + "没有启动编辑": "沒有啟動編輯", + "排班拖动中": "排班拖動中...", + "您要拖动的床位不支持": "您要拖動的床位不支持", + "透析方案": "透析方案", + "您确定要排班": "您確定要排班", + "如果选择继续复制目标排班将被删除是否继续操作": "如果選擇繼續複製,目標排班將被刪除,是否繼續操作?", + 如果选择继续覆盖目标排班将被删除是否继续操作: '如果选择继续覆盖,目标排班将被删除,是否继续操作?', + "继续": "繼續", + "UI渲染失败请刷新后查看最新数据": "UI渲染失敗,請刷新後查看最新數據", + "复制成功": "複製成功", + 覆盖成功: '覆盖成功', + "复制排班操作发生异常请联系管理员": "複製排班操作發生異常,請聯繫管理員", + 覆盖排班操作发生异常请联系管理员: '覆盖排班操作发生异常,请联系管理员', + "目前该机器故障请重新对对患者排班": "目前該機器故障,請重新對對患者排班", + "是否复制排班到当前位置": "是否複製排班到當前位置?", + 是否覆盖排班到当前位置: '是否覆盖排班到当前位置?', + "当前位置已经有排班了是复制还是互换": "當前位置已經有排班了?是複製還是互換?", + 当前位置已经有排班了是覆盖还是互换: '当前位置已经有排班了!是覆盖还是互换?', + "暂无可选周排班数据": "暫無可選週排班數據", + "请先选择基准周后再进行切换上一周操作": "請先選擇基準週後再進行切換上一週操作", + "当前周已经是第一周了": "當前週已經是第一週了", + "请先选择基准周后再进行切换下一周操作": "請先選擇基準週後再進行切換下一週操作", + "当前周已经是最后一周了": "當前週已經是最後一週了", + "数据异常请刷新后重试": "數據異常,請刷新後重試", + "排班导出操作成功数据将会在未来一段时间能进行同步成功后将会系统将会通知知到您届时刷新排班页面后既能看到最新数据": "排班匯出操作成功,數據將會在未來一段時間能進行同步,成功後將會系統將會通知知到您,屆時刷新排班頁面後既能看到最新數據", + 周数: { + 周一: '周一', + 周二: '周二', + 周三: '周三', + 周四: '周四', + 周五: '周五', + 周六: '周六', + 周天: '周天', + 周日: '周日', + }, + 时段数: { + 上午: '上午', + 下午: '下午', + 晚上: '晚上', + }, + "操作数": { + "删除": "刪除", + "取消": "取消", + "确定": "確定", + "确认": "確認", + "提示": "提示", + "保存": "保存", + "修改": "修改", + "查看": "查看", + "打印": "列印", + "导入": "匯入", + 模版复制: "匯入", + "导出": "匯出", + "编辑": "編輯", + "退出编辑": "退出編輯", + "复制": "複製", + "互换": "互換" + }, + 数字数: { + 零: '零', + 一: '一', + 二: '二', + 三: '三', + 四: '四', + 五: '五', + 六: '六', + 七: '七', + 八: '八', + 九: '九', + }, + 数字数单位: { + 十: '十', + 百: '百', + 千: '千', + }, + 数字数大单位: { + + }, + "addScheduling": { + "患者排班": "病人排班", + "排班设备": "排班設備:", + "请选择排班设备": "請選擇排班設備", + "排班日期": "排班日期:", + "选择排班日期": "選擇排班日期", + "排班时段": "排班時段", + "请选择排班时段": "請選擇排班時段", + "排班患者": "排班病人", + "请选择排班患者": "請選擇排班病人", + "透析模式": "透析模式:", + "请选择透析模式": "請選擇透析模式", + "排班人": "排班人:", + "请选择排班人": "請選擇排班人", + "请选择透析方案": "請選擇透析方案", + "请选择透析患者": "請選擇透析病人", + "请选择": "請選擇", + "故障设备不能排班": "故障設備不能排班!" + }, + "inputTem": { + "导入": "匯入", + "导出模板": "匯出模板", + "模板一排班": "模板一排班", + "模板二排班": "模板二排班", + "模板三排班": "模板三排班", + "模板四排班": "模板四排班", + "目标模板": "目標模板" + }, + "output": { + "导出": "匯出", + "导成模板文件": "匯出模板文件", + "导成预约排班": "匯出預約排班", + "导成预约排班说明":"注意:導出按鈕可導出 Excel 文件;確認按鈕可將本模板內容導出至臨時排班。", + "请选择导出导成模板文件": "請選擇匯出模板文件", + "模板一排班数据": "模板一排班數據", + "模板二排班数据": "模板二排班數據", + "模板三排班数据": "模板三排班數據", + "模板四排班数据": "模板四排班數據", + "当前预约排班日期匹配失败请刷新后重试": "當前預約排班日期匹配失敗,請刷新後重試", + "您确定要把模板": "您確定要匯出模板", + "导出到": "匯出到", + "的排班吗": "的排班嗎" + }, + "output2": { + "导出": "匯出", + "导成模板文件": "匯出模板文件", + "模板一排班数据": "模板一排班數據", + "模板二排班数据": "模板二排班數據", + "模板三排班数据": "模板三排班數據", + "模板四排班数据": "模板四排班數據", + "导成预约排班": "匯出預約排班", + "您确定要把模板": "您確定要匯出模板", + "导出到": "匯出到", + "的排班吗": "的排班嗎", + "模板一": "模板一", + "模板二": "模板二", + "模板三": "模板三", + "模板四": "模板四" + }, + "paibanLog": { + "排班记录": "排班記錄", + "查询日期": "查詢日期:", + "查询": "查詢", + "调整时间": "調整時間", + "排班日期": "排班日期", + "姓名": "患者姓名", + "床号": "床號", + "方案名称": "方案名稱", + "最后操作人": "最後操作人", + "日志": "日誌" + }, + "paibanSetting": { + "模板设置": "模板設定", + "模板启用数量": "模板啟用數量", + "启用一个": "啟用一個", + "启用两个": "啟用兩個", + "启用三个": "啟用三個", + "启用四个": "啟用四個", + "模板自动生成起始时间": "模板自動生成起始時間", + "预览效果": "預覽效果", + "预约排班将由模板": "預約排班將由模板", + "自动生成": "自動生成", + "以此类推": "以此類推" + }, + "paibanShow": { + "模板排班情况查看": "模板排班情況查看", + "请选择排班患者": "請選擇排班患者", + "透析号": "透析號", + "透析频率": "透析頻率", + "模板一": "模板一", + "本周": "本週", + "时段": "時段", + "模板二": "模板二", + "模板三": "模板三", + "模板四": "模板四", + "模板": "模板", + "星期": "星期", + "班次": "班次", + "排班不能为空": "排班不能為空", + "床号": "床號", + "请选择排班设备": "請選擇排班設備", + "透析方式": "透析方式", + "请选择透析模式": "請選擇透析模式", + "保存成功": "保存成功", + "当天已经排班了": "當天已經排班了", + "注意": "注意" + }, + "patientScheduling": { + "患者排班查看": "患者排班查看", + "患者": "患者", + "请选择": "請選擇", + "透析号": "透析號", + "排班": "排班", + "时段": "時段", + "数据异常请刷新后重试": "數據異常,請刷新後重試" + }, + "scheduleExportLog": { + "最近导出日志": "最近導出日誌", + "刷新日志": "刷新日誌", + "模板导出任务进行中": "模板導出任務進行中..." + }, + "setUserTimeSlotTemp": { + "用户默认时段设置": "用戶預設時段設置", + "默认显示可选时段": "預設顯示/可選時段", + "请选择": "請選擇", + "请至少选择一个时段作为您的默认项": "請至少選擇一個時段作為您的預設項", + "保存成功": "保存成功" + }, + "排班模板": { + "模板一": "模板一", + "使用中": "使用中", + "未启用": "未啟用", + "模板二": "模板二", + "模板三": "模板三", + "模板四": "模板四", + "班次": "班次", + "排班不能为空": "排班不能為空", + "星期": "星期", + "请选择要标记患者": "請選擇要標記的患者", + "透析号": "透析號", + "最近导出日志": "最近導出日誌", + "排班查看": "排班查看", + "排班设置": "排班設置", + "分区": "分區", + "机号": "機號", + "合计": "合計", + "排班模板": "排班模板", + "滤": "濾", + "障": "障", + "操作提醒": "操作提醒", + "感染病患者": "感染病患者", + "请求数据中": "請求數據中...", + "模板导出成功": "模板導出成功", + "模板": "模板", + "故障设备不能排班": "故障設備不能排班", + "删除成功": "刪除成功", + "此操作将删除此排班是否继续": "此操作將刪除此排班,是否繼續?", + "保存成功": "保存成功", + "当前床设备不支持": "當前床設備不支持", + "透析模式": "透析模式", + "您确定要排班": "您確定要排班嗎?", + "设置成功": "設置成功", + "已进入编辑模式": "已進入編輯模式", + "已退出编辑模式": "已退出編輯模式", + "没有启动编辑": "未啟動編輯", + "目前该机器故障请对从新对患者排班": "目前該機器故障,請重新對患者排班!", + "是否复制排班到当前位置": "是否複製排班到當前位置?", + "当前位置已经有排班了是复制还是互换": "當前位置已經有排班,是否複製或互換?", + 当前位置已经有排班了是覆盖还是互换: '当前位置已经有排班了!是覆盖还是互换?', + "您要拖动的床位不支持": "您要拖動的床位不支持", + 覆盖: '覆蓋', + } +} diff --git a/src/layout/component/aside.vue b/src/layout/component/aside.vue new file mode 100644 index 0000000..15aff77 --- /dev/null +++ b/src/layout/component/aside.vue @@ -0,0 +1,165 @@ + + + + diff --git a/src/layout/component/columnsAside.vue b/src/layout/component/columnsAside.vue new file mode 100644 index 0000000..bcfda73 --- /dev/null +++ b/src/layout/component/columnsAside.vue @@ -0,0 +1,308 @@ + + + + + diff --git a/src/layout/component/header.vue b/src/layout/component/header.vue new file mode 100644 index 0000000..9732c15 --- /dev/null +++ b/src/layout/component/header.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/layout/component/main.vue b/src/layout/component/main.vue new file mode 100644 index 0000000..8d21e29 --- /dev/null +++ b/src/layout/component/main.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/layout/footer/index.vue b/src/layout/footer/index.vue new file mode 100644 index 0000000..cbe8fee --- /dev/null +++ b/src/layout/footer/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/src/layout/index.vue b/src/layout/index.vue new file mode 100644 index 0000000..e205bb6 --- /dev/null +++ b/src/layout/index.vue @@ -0,0 +1,63 @@ + + + diff --git a/src/layout/lockScreen/index.vue b/src/layout/lockScreen/index.vue new file mode 100644 index 0000000..c2d7fcd --- /dev/null +++ b/src/layout/lockScreen/index.vue @@ -0,0 +1,346 @@ + + + + + diff --git a/src/layout/logo/favicon.svg b/src/layout/logo/favicon.svg new file mode 100644 index 0000000..71cd73f --- /dev/null +++ b/src/layout/logo/favicon.svg @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/layout/logo/index.vue b/src/layout/logo/index.vue new file mode 100644 index 0000000..f8bb45c --- /dev/null +++ b/src/layout/logo/index.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/src/layout/main/classic.vue b/src/layout/main/classic.vue new file mode 100644 index 0000000..2c62e03 --- /dev/null +++ b/src/layout/main/classic.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/layout/main/columns.vue b/src/layout/main/columns.vue new file mode 100644 index 0000000..97fb884 --- /dev/null +++ b/src/layout/main/columns.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/layout/main/defaults.vue b/src/layout/main/defaults.vue new file mode 100644 index 0000000..3dade0a --- /dev/null +++ b/src/layout/main/defaults.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/layout/main/transverse.vue b/src/layout/main/transverse.vue new file mode 100644 index 0000000..bda8109 --- /dev/null +++ b/src/layout/main/transverse.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/layout/navBars/breadcrumb/breadcrumb.vue b/src/layout/navBars/breadcrumb/breadcrumb.vue new file mode 100644 index 0000000..b8d4cb9 --- /dev/null +++ b/src/layout/navBars/breadcrumb/breadcrumb.vue @@ -0,0 +1,133 @@ + + + + + diff --git a/src/layout/navBars/breadcrumb/closeFull.vue b/src/layout/navBars/breadcrumb/closeFull.vue new file mode 100644 index 0000000..14afcc6 --- /dev/null +++ b/src/layout/navBars/breadcrumb/closeFull.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/src/layout/navBars/breadcrumb/index.vue b/src/layout/navBars/breadcrumb/index.vue new file mode 100644 index 0000000..3667138 --- /dev/null +++ b/src/layout/navBars/breadcrumb/index.vue @@ -0,0 +1,225 @@ + + + + + diff --git a/src/layout/navBars/breadcrumb/search.vue b/src/layout/navBars/breadcrumb/search.vue new file mode 100644 index 0000000..cb099ec --- /dev/null +++ b/src/layout/navBars/breadcrumb/search.vue @@ -0,0 +1,120 @@ + + + + + diff --git a/src/layout/navBars/breadcrumb/setings.vue b/src/layout/navBars/breadcrumb/setings.vue new file mode 100644 index 0000000..922b316 --- /dev/null +++ b/src/layout/navBars/breadcrumb/setings.vue @@ -0,0 +1,808 @@ + + + + + diff --git a/src/layout/navBars/breadcrumb/ticket.vue b/src/layout/navBars/breadcrumb/ticket.vue new file mode 100644 index 0000000..63a562d --- /dev/null +++ b/src/layout/navBars/breadcrumb/ticket.vue @@ -0,0 +1,171 @@ + + + + + \ No newline at end of file diff --git a/src/layout/navBars/breadcrumb/user.vue b/src/layout/navBars/breadcrumb/user.vue new file mode 100644 index 0000000..f3914f1 --- /dev/null +++ b/src/layout/navBars/breadcrumb/user.vue @@ -0,0 +1,591 @@ + + + + + diff --git a/src/layout/navBars/breadcrumb/userNews.vue b/src/layout/navBars/breadcrumb/userNews.vue new file mode 100644 index 0000000..2cc9ead --- /dev/null +++ b/src/layout/navBars/breadcrumb/userNews.vue @@ -0,0 +1,259 @@ + + + + + diff --git a/src/layout/navBars/index.vue b/src/layout/navBars/index.vue new file mode 100644 index 0000000..45e01e6 --- /dev/null +++ b/src/layout/navBars/index.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/src/layout/navBars/tagsView/contextmenu.vue b/src/layout/navBars/tagsView/contextmenu.vue new file mode 100644 index 0000000..aaa1b31 --- /dev/null +++ b/src/layout/navBars/tagsView/contextmenu.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/src/layout/navBars/tagsView/tagsView.vue b/src/layout/navBars/tagsView/tagsView.vue new file mode 100644 index 0000000..ff90666 --- /dev/null +++ b/src/layout/navBars/tagsView/tagsView.vue @@ -0,0 +1,656 @@ + + + + + diff --git a/src/layout/navMenu/horizontal.vue b/src/layout/navMenu/horizontal.vue new file mode 100644 index 0000000..b387445 --- /dev/null +++ b/src/layout/navMenu/horizontal.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/src/layout/navMenu/subItem.vue b/src/layout/navMenu/subItem.vue new file mode 100644 index 0000000..f42a2e1 --- /dev/null +++ b/src/layout/navMenu/subItem.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/layout/navMenu/vertical.vue b/src/layout/navMenu/vertical.vue new file mode 100644 index 0000000..dadba75 --- /dev/null +++ b/src/layout/navMenu/vertical.vue @@ -0,0 +1,378 @@ + + + + diff --git a/src/layout/routerView/iframes.vue b/src/layout/routerView/iframes.vue new file mode 100644 index 0000000..5dab992 --- /dev/null +++ b/src/layout/routerView/iframes.vue @@ -0,0 +1,60 @@ + + + diff --git a/src/layout/routerView/link.vue b/src/layout/routerView/link.vue new file mode 100644 index 0000000..8f773c6 --- /dev/null +++ b/src/layout/routerView/link.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/layout/routerView/parent.vue b/src/layout/routerView/parent.vue new file mode 100644 index 0000000..12c3966 --- /dev/null +++ b/src/layout/routerView/parent.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/src/layout/upgrade/index.vue b/src/layout/upgrade/index.vue new file mode 100644 index 0000000..3e23e8d --- /dev/null +++ b/src/layout/upgrade/index.vue @@ -0,0 +1,153 @@ + + + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..998e05b --- /dev/null +++ b/src/main.ts @@ -0,0 +1,60 @@ +import { createApp } from 'vue'; +import App from './App.vue'; +import router from './router'; +import { store, key } from './store'; +import { directive } from '/@/utils/directive'; +import { i18n } from '/@/i18n/index'; +import other from '/@/utils/other'; + +import ElementPlus from 'element-plus'; +import * as ElIconModules from "@element-plus/icons"; + +import 'element-plus/dist/index.css'; +import $ from 'jquery'; +import '/@/theme/index.scss'; +import '/@/assets/index.scss'; //src/assets/datestyle.less src/assets/index.scss +import svgIconTr from './components/svgIconTr.vue' +// import '/@/assets/iconfonts/iconfont.css' + +const iconfontScript = document.createElement('script') +iconfontScript.src = '//at.alicdn.com/t/c/font_4977343_ok0mmbwb5ag.js' +document.body.appendChild(iconfontScript) + +import mitt from 'mitt'; + +import screenShort from 'vue-web-screen-shot'; +import VueGridLayout from 'vue-grid-layout'; +import eventBus from 'vue3-eventbus'; +import print from 'vue3-print-nb' +//import 'default-passive-events' +import installDirective from './directives'; + +import zhCn from 'element-plus/es/locale/lang/zh-cn'; +import 'dayjs/locale/zh-cn'; + +const app = createApp(App); + +directive(app); +other.elSvg(app); +//加载自定义的svg载入组件 + +app + .use(print) + .use(eventBus) + .use(router) + .use(store, key) + .use(ElementPlus, { i18n: i18n.global.t, size: other.globalComponentSize, locale: zhCn}) + .use(i18n) + .use(screenShort, { enableWebRtc: false }) + .use(VueGridLayout) + .use($) + .component('svg-icon-tr', svgIconTr)//加载自定义的svg载入组件 + .mount('#app'); + +app.config.globalProperties.mittBus = mitt(); + +installDirective(app); +//动态注册全局elment-plus/icons 主要用svg 废弃fontico +for (const iconName in ElIconModules) { + app.component(iconName, ElIconModules[iconName as keyof typeof ElIconModules]) +} diff --git a/src/mock/threeLevelLinkage.json b/src/mock/threeLevelLinkage.json new file mode 100644 index 0000000..36763ba --- /dev/null +++ b/src/mock/threeLevelLinkage.json @@ -0,0 +1 @@ +[{"code":"11","name":"北京市","children":[{"code":"1101","name":"市辖区","children":[{"code":"110101","name":"东城区"},{"code":"110102","name":"西城区"},{"code":"110105","name":"朝阳区"},{"code":"110106","name":"丰台区"},{"code":"110107","name":"石景山区"},{"code":"110108","name":"海淀区"},{"code":"110109","name":"门头沟区"},{"code":"110111","name":"房山区"},{"code":"110112","name":"通州区"},{"code":"110113","name":"顺义区"},{"code":"110114","name":"昌平区"},{"code":"110115","name":"大兴区"},{"code":"110116","name":"怀柔区"},{"code":"110117","name":"平谷区"},{"code":"110118","name":"密云区"},{"code":"110119","name":"延庆区"}]}]},{"code":"12","name":"天津市","children":[{"code":"1201","name":"市辖区","children":[{"code":"120101","name":"和平区"},{"code":"120102","name":"河东区"},{"code":"120103","name":"河西区"},{"code":"120104","name":"南开区"},{"code":"120105","name":"河北区"},{"code":"120106","name":"红桥区"},{"code":"120110","name":"东丽区"},{"code":"120111","name":"西青区"},{"code":"120112","name":"津南区"},{"code":"120113","name":"北辰区"},{"code":"120114","name":"武清区"},{"code":"120115","name":"宝坻区"},{"code":"120116","name":"滨海新区"},{"code":"120117","name":"宁河区"},{"code":"120118","name":"静海区"},{"code":"120119","name":"蓟州区"}]}]},{"code":"13","name":"河北省","children":[{"code":"1301","name":"石家庄市","children":[{"code":"130102","name":"长安区"},{"code":"130104","name":"桥西区"},{"code":"130105","name":"新华区"},{"code":"130107","name":"井陉矿区"},{"code":"130108","name":"裕华区"},{"code":"130109","name":"藁城区"},{"code":"130110","name":"鹿泉区"},{"code":"130111","name":"栾城区"},{"code":"130121","name":"井陉县"},{"code":"130123","name":"正定县"},{"code":"130125","name":"行唐县"},{"code":"130126","name":"灵寿县"},{"code":"130127","name":"高邑县"},{"code":"130128","name":"深泽县"},{"code":"130129","name":"赞皇县"},{"code":"130130","name":"无极县"},{"code":"130131","name":"平山县"},{"code":"130132","name":"元氏县"},{"code":"130133","name":"赵县"},{"code":"130171","name":"石家庄高新技术产业开发区"},{"code":"130172","name":"石家庄循环化工园区"},{"code":"130181","name":"辛集市"},{"code":"130183","name":"晋州市"},{"code":"130184","name":"新乐市"}]},{"code":"1302","name":"唐山市","children":[{"code":"130202","name":"路南区"},{"code":"130203","name":"路北区"},{"code":"130204","name":"古冶区"},{"code":"130205","name":"开平区"},{"code":"130207","name":"丰南区"},{"code":"130208","name":"丰润区"},{"code":"130209","name":"曹妃甸区"},{"code":"130224","name":"滦南县"},{"code":"130225","name":"乐亭县"},{"code":"130227","name":"迁西县"},{"code":"130229","name":"玉田县"},{"code":"130271","name":"河北唐山芦台经济开发区"},{"code":"130272","name":"唐山市汉沽管理区"},{"code":"130273","name":"唐山高新技术产业开发区"},{"code":"130274","name":"河北唐山海港经济开发区"},{"code":"130281","name":"遵化市"},{"code":"130283","name":"迁安市"},{"code":"130284","name":"滦州市"}]},{"code":"1303","name":"秦皇岛市","children":[{"code":"130302","name":"海港区"},{"code":"130303","name":"山海关区"},{"code":"130304","name":"北戴河区"},{"code":"130306","name":"抚宁区"},{"code":"130321","name":"青龙满族自治县"},{"code":"130322","name":"昌黎县"},{"code":"130324","name":"卢龙县"},{"code":"130371","name":"秦皇岛市经济技术开发区"},{"code":"130372","name":"北戴河新区"}]},{"code":"1304","name":"邯郸市","children":[{"code":"130402","name":"邯山区"},{"code":"130403","name":"丛台区"},{"code":"130404","name":"复兴区"},{"code":"130406","name":"峰峰矿区"},{"code":"130407","name":"肥乡区"},{"code":"130408","name":"永年区"},{"code":"130423","name":"临漳县"},{"code":"130424","name":"成安县"},{"code":"130425","name":"大名县"},{"code":"130426","name":"涉县"},{"code":"130427","name":"磁县"},{"code":"130430","name":"邱县"},{"code":"130431","name":"鸡泽县"},{"code":"130432","name":"广平县"},{"code":"130433","name":"馆陶县"},{"code":"130434","name":"魏县"},{"code":"130435","name":"曲周县"},{"code":"130471","name":"邯郸经济技术开发区"},{"code":"130473","name":"邯郸冀南新区"},{"code":"130481","name":"武安市"}]},{"code":"1305","name":"邢台市","children":[{"code":"130502","name":"襄都区"},{"code":"130503","name":"信都区"},{"code":"130505","name":"任泽区"},{"code":"130506","name":"南和区"},{"code":"130522","name":"临城县"},{"code":"130523","name":"内丘县"},{"code":"130524","name":"柏乡县"},{"code":"130525","name":"隆尧县"},{"code":"130528","name":"宁晋县"},{"code":"130529","name":"巨鹿县"},{"code":"130530","name":"新河县"},{"code":"130531","name":"广宗县"},{"code":"130532","name":"平乡县"},{"code":"130533","name":"威县"},{"code":"130534","name":"清河县"},{"code":"130535","name":"临西县"},{"code":"130571","name":"河北邢台经济开发区"},{"code":"130581","name":"南宫市"},{"code":"130582","name":"沙河市"}]},{"code":"1306","name":"保定市","children":[{"code":"130602","name":"竞秀区"},{"code":"130606","name":"莲池区"},{"code":"130607","name":"满城区"},{"code":"130608","name":"清苑区"},{"code":"130609","name":"徐水区"},{"code":"130623","name":"涞水县"},{"code":"130624","name":"阜平县"},{"code":"130626","name":"定兴县"},{"code":"130627","name":"唐县"},{"code":"130628","name":"高阳县"},{"code":"130629","name":"容城县"},{"code":"130630","name":"涞源县"},{"code":"130631","name":"望都县"},{"code":"130632","name":"安新县"},{"code":"130633","name":"易县"},{"code":"130634","name":"曲阳县"},{"code":"130635","name":"蠡县"},{"code":"130636","name":"顺平县"},{"code":"130637","name":"博野县"},{"code":"130638","name":"雄县"},{"code":"130671","name":"保定高新技术产业开发区"},{"code":"130672","name":"保定白沟新城"},{"code":"130681","name":"涿州市"},{"code":"130682","name":"定州市"},{"code":"130683","name":"安国市"},{"code":"130684","name":"高碑店市"}]},{"code":"1307","name":"张家口市","children":[{"code":"130702","name":"桥东区"},{"code":"130703","name":"桥西区"},{"code":"130705","name":"宣化区"},{"code":"130706","name":"下花园区"},{"code":"130708","name":"万全区"},{"code":"130709","name":"崇礼区"},{"code":"130722","name":"张北县"},{"code":"130723","name":"康保县"},{"code":"130724","name":"沽源县"},{"code":"130725","name":"尚义县"},{"code":"130726","name":"蔚县"},{"code":"130727","name":"阳原县"},{"code":"130728","name":"怀安县"},{"code":"130730","name":"怀来县"},{"code":"130731","name":"涿鹿县"},{"code":"130732","name":"赤城县"},{"code":"130771","name":"张家口经济开发区"},{"code":"130772","name":"张家口市察北管理区"},{"code":"130773","name":"张家口市塞北管理区"}]},{"code":"1308","name":"承德市","children":[{"code":"130802","name":"双桥区"},{"code":"130803","name":"双滦区"},{"code":"130804","name":"鹰手营子矿区"},{"code":"130821","name":"承德县"},{"code":"130822","name":"兴隆县"},{"code":"130824","name":"滦平县"},{"code":"130825","name":"隆化县"},{"code":"130826","name":"丰宁满族自治县"},{"code":"130827","name":"宽城满族自治县"},{"code":"130828","name":"围场满族蒙古族自治县"},{"code":"130871","name":"承德高新技术产业开发区"},{"code":"130881","name":"平泉市"}]},{"code":"1309","name":"沧州市","children":[{"code":"130902","name":"新华区"},{"code":"130903","name":"运河区"},{"code":"130921","name":"沧县"},{"code":"130922","name":"青县"},{"code":"130923","name":"东光县"},{"code":"130924","name":"海兴县"},{"code":"130925","name":"盐山县"},{"code":"130926","name":"肃宁县"},{"code":"130927","name":"南皮县"},{"code":"130928","name":"吴桥县"},{"code":"130929","name":"献县"},{"code":"130930","name":"孟村回族自治县"},{"code":"130971","name":"河北沧州经济开发区"},{"code":"130972","name":"沧州高新技术产业开发区"},{"code":"130973","name":"沧州渤海新区"},{"code":"130981","name":"泊头市"},{"code":"130982","name":"任丘市"},{"code":"130983","name":"黄骅市"},{"code":"130984","name":"河间市"}]},{"code":"1310","name":"廊坊市","children":[{"code":"131002","name":"安次区"},{"code":"131003","name":"广阳区"},{"code":"131022","name":"固安县"},{"code":"131023","name":"永清县"},{"code":"131024","name":"香河县"},{"code":"131025","name":"大城县"},{"code":"131026","name":"文安县"},{"code":"131028","name":"大厂回族自治县"},{"code":"131071","name":"廊坊经济技术开发区"},{"code":"131081","name":"霸州市"},{"code":"131082","name":"三河市"}]},{"code":"1311","name":"衡水市","children":[{"code":"131102","name":"桃城区"},{"code":"131103","name":"冀州区"},{"code":"131121","name":"枣强县"},{"code":"131122","name":"武邑县"},{"code":"131123","name":"武强县"},{"code":"131124","name":"饶阳县"},{"code":"131125","name":"安平县"},{"code":"131126","name":"故城县"},{"code":"131127","name":"景县"},{"code":"131128","name":"阜城县"},{"code":"131171","name":"河北衡水高新技术产业开发区"},{"code":"131172","name":"衡水滨湖新区"},{"code":"131182","name":"深州市"}]}]},{"code":"14","name":"山西省","children":[{"code":"1401","name":"太原市","children":[{"code":"140105","name":"小店区"},{"code":"140106","name":"迎泽区"},{"code":"140107","name":"杏花岭区"},{"code":"140108","name":"尖草坪区"},{"code":"140109","name":"万柏林区"},{"code":"140110","name":"晋源区"},{"code":"140121","name":"清徐县"},{"code":"140122","name":"阳曲县"},{"code":"140123","name":"娄烦县"},{"code":"140171","name":"山西转型综合改革示范区"},{"code":"140181","name":"古交市"}]},{"code":"1402","name":"大同市","children":[{"code":"140212","name":"新荣区"},{"code":"140213","name":"平城区"},{"code":"140214","name":"云冈区"},{"code":"140215","name":"云州区"},{"code":"140221","name":"阳高县"},{"code":"140222","name":"天镇县"},{"code":"140223","name":"广灵县"},{"code":"140224","name":"灵丘县"},{"code":"140225","name":"浑源县"},{"code":"140226","name":"左云县"},{"code":"140271","name":"山西大同经济开发区"}]},{"code":"1403","name":"阳泉市","children":[{"code":"140302","name":"城区"},{"code":"140303","name":"矿区"},{"code":"140311","name":"郊区"},{"code":"140321","name":"平定县"},{"code":"140322","name":"盂县"}]},{"code":"1404","name":"长治市","children":[{"code":"140403","name":"潞州区"},{"code":"140404","name":"上党区"},{"code":"140405","name":"屯留区"},{"code":"140406","name":"潞城区"},{"code":"140423","name":"襄垣县"},{"code":"140425","name":"平顺县"},{"code":"140426","name":"黎城县"},{"code":"140427","name":"壶关县"},{"code":"140428","name":"长子县"},{"code":"140429","name":"武乡县"},{"code":"140430","name":"沁县"},{"code":"140431","name":"沁源县"},{"code":"140471","name":"山西长治高新技术产业园区"}]},{"code":"1405","name":"晋城市","children":[{"code":"140502","name":"城区"},{"code":"140521","name":"沁水县"},{"code":"140522","name":"阳城县"},{"code":"140524","name":"陵川县"},{"code":"140525","name":"泽州县"},{"code":"140581","name":"高平市"}]},{"code":"1406","name":"朔州市","children":[{"code":"140602","name":"朔城区"},{"code":"140603","name":"平鲁区"},{"code":"140621","name":"山阴县"},{"code":"140622","name":"应县"},{"code":"140623","name":"右玉县"},{"code":"140671","name":"山西朔州经济开发区"},{"code":"140681","name":"怀仁市"}]},{"code":"1407","name":"晋中市","children":[{"code":"140702","name":"榆次区"},{"code":"140703","name":"太谷区"},{"code":"140721","name":"榆社县"},{"code":"140722","name":"左权县"},{"code":"140723","name":"和顺县"},{"code":"140724","name":"昔阳县"},{"code":"140725","name":"寿阳县"},{"code":"140727","name":"祁县"},{"code":"140728","name":"平遥县"},{"code":"140729","name":"灵石县"},{"code":"140781","name":"介休市"}]},{"code":"1408","name":"运城市","children":[{"code":"140802","name":"盐湖区"},{"code":"140821","name":"临猗县"},{"code":"140822","name":"万荣县"},{"code":"140823","name":"闻喜县"},{"code":"140824","name":"稷山县"},{"code":"140825","name":"新绛县"},{"code":"140826","name":"绛县"},{"code":"140827","name":"垣曲县"},{"code":"140828","name":"夏县"},{"code":"140829","name":"平陆县"},{"code":"140830","name":"芮城县"},{"code":"140881","name":"永济市"},{"code":"140882","name":"河津市"}]},{"code":"1409","name":"忻州市","children":[{"code":"140902","name":"忻府区"},{"code":"140921","name":"定襄县"},{"code":"140922","name":"五台县"},{"code":"140923","name":"代县"},{"code":"140924","name":"繁峙县"},{"code":"140925","name":"宁武县"},{"code":"140926","name":"静乐县"},{"code":"140927","name":"神池县"},{"code":"140928","name":"五寨县"},{"code":"140929","name":"岢岚县"},{"code":"140930","name":"河曲县"},{"code":"140931","name":"保德县"},{"code":"140932","name":"偏关县"},{"code":"140971","name":"五台山风景名胜区"},{"code":"140981","name":"原平市"}]},{"code":"1410","name":"临汾市","children":[{"code":"141002","name":"尧都区"},{"code":"141021","name":"曲沃县"},{"code":"141022","name":"翼城县"},{"code":"141023","name":"襄汾县"},{"code":"141024","name":"洪洞县"},{"code":"141025","name":"古县"},{"code":"141026","name":"安泽县"},{"code":"141027","name":"浮山县"},{"code":"141028","name":"吉县"},{"code":"141029","name":"乡宁县"},{"code":"141030","name":"大宁县"},{"code":"141031","name":"隰县"},{"code":"141032","name":"永和县"},{"code":"141033","name":"蒲县"},{"code":"141034","name":"汾西县"},{"code":"141081","name":"侯马市"},{"code":"141082","name":"霍州市"}]},{"code":"1411","name":"吕梁市","children":[{"code":"141102","name":"离石区"},{"code":"141121","name":"文水县"},{"code":"141122","name":"交城县"},{"code":"141123","name":"兴县"},{"code":"141124","name":"临县"},{"code":"141125","name":"柳林县"},{"code":"141126","name":"石楼县"},{"code":"141127","name":"岚县"},{"code":"141128","name":"方山县"},{"code":"141129","name":"中阳县"},{"code":"141130","name":"交口县"},{"code":"141181","name":"孝义市"},{"code":"141182","name":"汾阳市"}]}]},{"code":"15","name":"内蒙古自治区","children":[{"code":"1501","name":"呼和浩特市","children":[{"code":"150102","name":"新城区"},{"code":"150103","name":"回民区"},{"code":"150104","name":"玉泉区"},{"code":"150105","name":"赛罕区"},{"code":"150121","name":"土默特左旗"},{"code":"150122","name":"托克托县"},{"code":"150123","name":"和林格尔县"},{"code":"150124","name":"清水河县"},{"code":"150125","name":"武川县"},{"code":"150172","name":"呼和浩特经济技术开发区"}]},{"code":"1502","name":"包头市","children":[{"code":"150202","name":"东河区"},{"code":"150203","name":"昆都仑区"},{"code":"150204","name":"青山区"},{"code":"150205","name":"石拐区"},{"code":"150206","name":"白云鄂博矿区"},{"code":"150207","name":"九原区"},{"code":"150221","name":"土默特右旗"},{"code":"150222","name":"固阳县"},{"code":"150223","name":"达尔罕茂明安联合旗"},{"code":"150271","name":"包头稀土高新技术产业开发区"}]},{"code":"1503","name":"乌海市","children":[{"code":"150302","name":"海勃湾区"},{"code":"150303","name":"海南区"},{"code":"150304","name":"乌达区"}]},{"code":"1504","name":"赤峰市","children":[{"code":"150402","name":"红山区"},{"code":"150403","name":"元宝山区"},{"code":"150404","name":"松山区"},{"code":"150421","name":"阿鲁科尔沁旗"},{"code":"150422","name":"巴林左旗"},{"code":"150423","name":"巴林右旗"},{"code":"150424","name":"林西县"},{"code":"150425","name":"克什克腾旗"},{"code":"150426","name":"翁牛特旗"},{"code":"150428","name":"喀喇沁旗"},{"code":"150429","name":"宁城县"},{"code":"150430","name":"敖汉旗"}]},{"code":"1505","name":"通辽市","children":[{"code":"150502","name":"科尔沁区"},{"code":"150521","name":"科尔沁左翼中旗"},{"code":"150522","name":"科尔沁左翼后旗"},{"code":"150523","name":"开鲁县"},{"code":"150524","name":"库伦旗"},{"code":"150525","name":"奈曼旗"},{"code":"150526","name":"扎鲁特旗"},{"code":"150571","name":"通辽经济技术开发区"},{"code":"150581","name":"霍林郭勒市"}]},{"code":"1506","name":"鄂尔多斯市","children":[{"code":"150602","name":"东胜区"},{"code":"150603","name":"康巴什区"},{"code":"150621","name":"达拉特旗"},{"code":"150622","name":"准格尔旗"},{"code":"150623","name":"鄂托克前旗"},{"code":"150624","name":"鄂托克旗"},{"code":"150625","name":"杭锦旗"},{"code":"150626","name":"乌审旗"},{"code":"150627","name":"伊金霍洛旗"}]},{"code":"1507","name":"呼伦贝尔市","children":[{"code":"150702","name":"海拉尔区"},{"code":"150703","name":"扎赉诺尔区"},{"code":"150721","name":"阿荣旗"},{"code":"150722","name":"莫力达瓦达斡尔族自治旗"},{"code":"150723","name":"鄂伦春自治旗"},{"code":"150724","name":"鄂温克族自治旗"},{"code":"150725","name":"陈巴尔虎旗"},{"code":"150726","name":"新巴尔虎左旗"},{"code":"150727","name":"新巴尔虎右旗"},{"code":"150781","name":"满洲里市"},{"code":"150782","name":"牙克石市"},{"code":"150783","name":"扎兰屯市"},{"code":"150784","name":"额尔古纳市"},{"code":"150785","name":"根河市"}]},{"code":"1508","name":"巴彦淖尔市","children":[{"code":"150802","name":"临河区"},{"code":"150821","name":"五原县"},{"code":"150822","name":"磴口县"},{"code":"150823","name":"乌拉特前旗"},{"code":"150824","name":"乌拉特中旗"},{"code":"150825","name":"乌拉特后旗"},{"code":"150826","name":"杭锦后旗"}]},{"code":"1509","name":"乌兰察布市","children":[{"code":"150902","name":"集宁区"},{"code":"150921","name":"卓资县"},{"code":"150922","name":"化德县"},{"code":"150923","name":"商都县"},{"code":"150924","name":"兴和县"},{"code":"150925","name":"凉城县"},{"code":"150926","name":"察哈尔右翼前旗"},{"code":"150927","name":"察哈尔右翼中旗"},{"code":"150928","name":"察哈尔右翼后旗"},{"code":"150929","name":"四子王旗"},{"code":"150981","name":"丰镇市"}]},{"code":"1522","name":"兴安盟","children":[{"code":"152201","name":"乌兰浩特市"},{"code":"152202","name":"阿尔山市"},{"code":"152221","name":"科尔沁右翼前旗"},{"code":"152222","name":"科尔沁右翼中旗"},{"code":"152223","name":"扎赉特旗"},{"code":"152224","name":"突泉县"}]},{"code":"1525","name":"锡林郭勒盟","children":[{"code":"152501","name":"二连浩特市"},{"code":"152502","name":"锡林浩特市"},{"code":"152522","name":"阿巴嘎旗"},{"code":"152523","name":"苏尼特左旗"},{"code":"152524","name":"苏尼特右旗"},{"code":"152525","name":"东乌珠穆沁旗"},{"code":"152526","name":"西乌珠穆沁旗"},{"code":"152527","name":"太仆寺旗"},{"code":"152528","name":"镶黄旗"},{"code":"152529","name":"正镶白旗"},{"code":"152530","name":"正蓝旗"},{"code":"152531","name":"多伦县"},{"code":"152571","name":"乌拉盖管委会"}]},{"code":"1529","name":"阿拉善盟","children":[{"code":"152921","name":"阿拉善左旗"},{"code":"152922","name":"阿拉善右旗"},{"code":"152923","name":"额济纳旗"},{"code":"152971","name":"内蒙古阿拉善经济开发区"}]}]},{"code":"21","name":"辽宁省","children":[{"code":"2101","name":"沈阳市","children":[{"code":"210102","name":"和平区"},{"code":"210103","name":"沈河区"},{"code":"210104","name":"大东区"},{"code":"210105","name":"皇姑区"},{"code":"210106","name":"铁西区"},{"code":"210111","name":"苏家屯区"},{"code":"210112","name":"浑南区"},{"code":"210113","name":"沈北新区"},{"code":"210114","name":"于洪区"},{"code":"210115","name":"辽中区"},{"code":"210123","name":"康平县"},{"code":"210124","name":"法库县"},{"code":"210181","name":"新民市"}]},{"code":"2102","name":"大连市","children":[{"code":"210202","name":"中山区"},{"code":"210203","name":"西岗区"},{"code":"210204","name":"沙河口区"},{"code":"210211","name":"甘井子区"},{"code":"210212","name":"旅顺口区"},{"code":"210213","name":"金州区"},{"code":"210214","name":"普兰店区"},{"code":"210224","name":"长海县"},{"code":"210281","name":"瓦房店市"},{"code":"210283","name":"庄河市"}]},{"code":"2103","name":"鞍山市","children":[{"code":"210302","name":"铁东区"},{"code":"210303","name":"铁西区"},{"code":"210304","name":"立山区"},{"code":"210311","name":"千山区"},{"code":"210321","name":"台安县"},{"code":"210323","name":"岫岩满族自治县"},{"code":"210381","name":"海城市"}]},{"code":"2104","name":"抚顺市","children":[{"code":"210402","name":"新抚区"},{"code":"210403","name":"东洲区"},{"code":"210404","name":"望花区"},{"code":"210411","name":"顺城区"},{"code":"210421","name":"抚顺县"},{"code":"210422","name":"新宾满族自治县"},{"code":"210423","name":"清原满族自治县"}]},{"code":"2105","name":"本溪市","children":[{"code":"210502","name":"平山区"},{"code":"210503","name":"溪湖区"},{"code":"210504","name":"明山区"},{"code":"210505","name":"南芬区"},{"code":"210521","name":"本溪满族自治县"},{"code":"210522","name":"桓仁满族自治县"}]},{"code":"2106","name":"丹东市","children":[{"code":"210602","name":"元宝区"},{"code":"210603","name":"振兴区"},{"code":"210604","name":"振安区"},{"code":"210624","name":"宽甸满族自治县"},{"code":"210681","name":"东港市"},{"code":"210682","name":"凤城市"}]},{"code":"2107","name":"锦州市","children":[{"code":"210702","name":"古塔区"},{"code":"210703","name":"凌河区"},{"code":"210711","name":"太和区"},{"code":"210726","name":"黑山县"},{"code":"210727","name":"义县"},{"code":"210781","name":"凌海市"},{"code":"210782","name":"北镇市"}]},{"code":"2108","name":"营口市","children":[{"code":"210802","name":"站前区"},{"code":"210803","name":"西市区"},{"code":"210804","name":"鲅鱼圈区"},{"code":"210811","name":"老边区"},{"code":"210881","name":"盖州市"},{"code":"210882","name":"大石桥市"}]},{"code":"2109","name":"阜新市","children":[{"code":"210902","name":"海州区"},{"code":"210903","name":"新邱区"},{"code":"210904","name":"太平区"},{"code":"210905","name":"清河门区"},{"code":"210911","name":"细河区"},{"code":"210921","name":"阜新蒙古族自治县"},{"code":"210922","name":"彰武县"}]},{"code":"2110","name":"辽阳市","children":[{"code":"211002","name":"白塔区"},{"code":"211003","name":"文圣区"},{"code":"211004","name":"宏伟区"},{"code":"211005","name":"弓长岭区"},{"code":"211011","name":"太子河区"},{"code":"211021","name":"辽阳县"},{"code":"211081","name":"灯塔市"}]},{"code":"2111","name":"盘锦市","children":[{"code":"211102","name":"双台子区"},{"code":"211103","name":"兴隆台区"},{"code":"211104","name":"大洼区"},{"code":"211122","name":"盘山县"}]},{"code":"2112","name":"铁岭市","children":[{"code":"211202","name":"银州区"},{"code":"211204","name":"清河区"},{"code":"211221","name":"铁岭县"},{"code":"211223","name":"西丰县"},{"code":"211224","name":"昌图县"},{"code":"211281","name":"调兵山市"},{"code":"211282","name":"开原市"}]},{"code":"2113","name":"朝阳市","children":[{"code":"211302","name":"双塔区"},{"code":"211303","name":"龙城区"},{"code":"211321","name":"朝阳县"},{"code":"211322","name":"建平县"},{"code":"211324","name":"喀喇沁左翼蒙古族自治县"},{"code":"211381","name":"北票市"},{"code":"211382","name":"凌源市"}]},{"code":"2114","name":"葫芦岛市","children":[{"code":"211402","name":"连山区"},{"code":"211403","name":"龙港区"},{"code":"211404","name":"南票区"},{"code":"211421","name":"绥中县"},{"code":"211422","name":"建昌县"},{"code":"211481","name":"兴城市"}]}]},{"code":"22","name":"吉林省","children":[{"code":"2201","name":"长春市","children":[{"code":"220102","name":"南关区"},{"code":"220103","name":"宽城区"},{"code":"220104","name":"朝阳区"},{"code":"220105","name":"二道区"},{"code":"220106","name":"绿园区"},{"code":"220112","name":"双阳区"},{"code":"220113","name":"九台区"},{"code":"220122","name":"农安县"},{"code":"220171","name":"长春经济技术开发区"},{"code":"220172","name":"长春净月高新技术产业开发区"},{"code":"220173","name":"长春高新技术产业开发区"},{"code":"220174","name":"长春汽车经济技术开发区"},{"code":"220182","name":"榆树市"},{"code":"220183","name":"德惠市"},{"code":"220184","name":"公主岭市"}]},{"code":"2202","name":"吉林市","children":[{"code":"220202","name":"昌邑区"},{"code":"220203","name":"龙潭区"},{"code":"220204","name":"船营区"},{"code":"220211","name":"丰满区"},{"code":"220221","name":"永吉县"},{"code":"220271","name":"吉林经济开发区"},{"code":"220272","name":"吉林高新技术产业开发区"},{"code":"220273","name":"吉林中国新加坡食品区"},{"code":"220281","name":"蛟河市"},{"code":"220282","name":"桦甸市"},{"code":"220283","name":"舒兰市"},{"code":"220284","name":"磐石市"}]},{"code":"2203","name":"四平市","children":[{"code":"220302","name":"铁西区"},{"code":"220303","name":"铁东区"},{"code":"220322","name":"梨树县"},{"code":"220323","name":"伊通满族自治县"},{"code":"220382","name":"双辽市"}]},{"code":"2204","name":"辽源市","children":[{"code":"220402","name":"龙山区"},{"code":"220403","name":"西安区"},{"code":"220421","name":"东丰县"},{"code":"220422","name":"东辽县"}]},{"code":"2205","name":"通化市","children":[{"code":"220502","name":"东昌区"},{"code":"220503","name":"二道江区"},{"code":"220521","name":"通化县"},{"code":"220523","name":"辉南县"},{"code":"220524","name":"柳河县"},{"code":"220581","name":"梅河口市"},{"code":"220582","name":"集安市"}]},{"code":"2206","name":"白山市","children":[{"code":"220602","name":"浑江区"},{"code":"220605","name":"江源区"},{"code":"220621","name":"抚松县"},{"code":"220622","name":"靖宇县"},{"code":"220623","name":"长白朝鲜族自治县"},{"code":"220681","name":"临江市"}]},{"code":"2207","name":"松原市","children":[{"code":"220702","name":"宁江区"},{"code":"220721","name":"前郭尔罗斯蒙古族自治县"},{"code":"220722","name":"长岭县"},{"code":"220723","name":"乾安县"},{"code":"220771","name":"吉林松原经济开发区"},{"code":"220781","name":"扶余市"}]},{"code":"2208","name":"白城市","children":[{"code":"220802","name":"洮北区"},{"code":"220821","name":"镇赉县"},{"code":"220822","name":"通榆县"},{"code":"220871","name":"吉林白城经济开发区"},{"code":"220881","name":"洮南市"},{"code":"220882","name":"大安市"}]},{"code":"2224","name":"延边朝鲜族自治州","children":[{"code":"222401","name":"延吉市"},{"code":"222402","name":"图们市"},{"code":"222403","name":"敦化市"},{"code":"222404","name":"珲春市"},{"code":"222405","name":"龙井市"},{"code":"222406","name":"和龙市"},{"code":"222424","name":"汪清县"},{"code":"222426","name":"安图县"}]}]},{"code":"23","name":"黑龙江省","children":[{"code":"2301","name":"哈尔滨市","children":[{"code":"230102","name":"道里区"},{"code":"230103","name":"南岗区"},{"code":"230104","name":"道外区"},{"code":"230108","name":"平房区"},{"code":"230109","name":"松北区"},{"code":"230110","name":"香坊区"},{"code":"230111","name":"呼兰区"},{"code":"230112","name":"阿城区"},{"code":"230113","name":"双城区"},{"code":"230123","name":"依兰县"},{"code":"230124","name":"方正县"},{"code":"230125","name":"宾县"},{"code":"230126","name":"巴彦县"},{"code":"230127","name":"木兰县"},{"code":"230128","name":"通河县"},{"code":"230129","name":"延寿县"},{"code":"230183","name":"尚志市"},{"code":"230184","name":"五常市"}]},{"code":"2302","name":"齐齐哈尔市","children":[{"code":"230202","name":"龙沙区"},{"code":"230203","name":"建华区"},{"code":"230204","name":"铁锋区"},{"code":"230205","name":"昂昂溪区"},{"code":"230206","name":"富拉尔基区"},{"code":"230207","name":"碾子山区"},{"code":"230208","name":"梅里斯达斡尔族区"},{"code":"230221","name":"龙江县"},{"code":"230223","name":"依安县"},{"code":"230224","name":"泰来县"},{"code":"230225","name":"甘南县"},{"code":"230227","name":"富裕县"},{"code":"230229","name":"克山县"},{"code":"230230","name":"克东县"},{"code":"230231","name":"拜泉县"},{"code":"230281","name":"讷河市"}]},{"code":"2303","name":"鸡西市","children":[{"code":"230302","name":"鸡冠区"},{"code":"230303","name":"恒山区"},{"code":"230304","name":"滴道区"},{"code":"230305","name":"梨树区"},{"code":"230306","name":"城子河区"},{"code":"230307","name":"麻山区"},{"code":"230321","name":"鸡东县"},{"code":"230381","name":"虎林市"},{"code":"230382","name":"密山市"}]},{"code":"2304","name":"鹤岗市","children":[{"code":"230402","name":"向阳区"},{"code":"230403","name":"工农区"},{"code":"230404","name":"南山区"},{"code":"230405","name":"兴安区"},{"code":"230406","name":"东山区"},{"code":"230407","name":"兴山区"},{"code":"230421","name":"萝北县"},{"code":"230422","name":"绥滨县"}]},{"code":"2305","name":"双鸭山市","children":[{"code":"230502","name":"尖山区"},{"code":"230503","name":"岭东区"},{"code":"230505","name":"四方台区"},{"code":"230506","name":"宝山区"},{"code":"230521","name":"集贤县"},{"code":"230522","name":"友谊县"},{"code":"230523","name":"宝清县"},{"code":"230524","name":"饶河县"}]},{"code":"2306","name":"大庆市","children":[{"code":"230602","name":"萨尔图区"},{"code":"230603","name":"龙凤区"},{"code":"230604","name":"让胡路区"},{"code":"230605","name":"红岗区"},{"code":"230606","name":"大同区"},{"code":"230621","name":"肇州县"},{"code":"230622","name":"肇源县"},{"code":"230623","name":"林甸县"},{"code":"230624","name":"杜尔伯特蒙古族自治县"},{"code":"230671","name":"大庆高新技术产业开发区"}]},{"code":"2307","name":"伊春市","children":[{"code":"230717","name":"伊美区"},{"code":"230718","name":"乌翠区"},{"code":"230719","name":"友好区"},{"code":"230722","name":"嘉荫县"},{"code":"230723","name":"汤旺县"},{"code":"230724","name":"丰林县"},{"code":"230725","name":"大箐山县"},{"code":"230726","name":"南岔县"},{"code":"230751","name":"金林区"},{"code":"230781","name":"铁力市"}]},{"code":"2308","name":"佳木斯市","children":[{"code":"230803","name":"向阳区"},{"code":"230804","name":"前进区"},{"code":"230805","name":"东风区"},{"code":"230811","name":"郊区"},{"code":"230822","name":"桦南县"},{"code":"230826","name":"桦川县"},{"code":"230828","name":"汤原县"},{"code":"230881","name":"同江市"},{"code":"230882","name":"富锦市"},{"code":"230883","name":"抚远市"}]},{"code":"2309","name":"七台河市","children":[{"code":"230902","name":"新兴区"},{"code":"230903","name":"桃山区"},{"code":"230904","name":"茄子河区"},{"code":"230921","name":"勃利县"}]},{"code":"2310","name":"牡丹江市","children":[{"code":"231002","name":"东安区"},{"code":"231003","name":"阳明区"},{"code":"231004","name":"爱民区"},{"code":"231005","name":"西安区"},{"code":"231025","name":"林口县"},{"code":"231071","name":"牡丹江经济技术开发区"},{"code":"231081","name":"绥芬河市"},{"code":"231083","name":"海林市"},{"code":"231084","name":"宁安市"},{"code":"231085","name":"穆棱市"},{"code":"231086","name":"东宁市"}]},{"code":"2311","name":"黑河市","children":[{"code":"231102","name":"爱辉区"},{"code":"231123","name":"逊克县"},{"code":"231124","name":"孙吴县"},{"code":"231181","name":"北安市"},{"code":"231182","name":"五大连池市"},{"code":"231183","name":"嫩江市"}]},{"code":"2312","name":"绥化市","children":[{"code":"231202","name":"北林区"},{"code":"231221","name":"望奎县"},{"code":"231222","name":"兰西县"},{"code":"231223","name":"青冈县"},{"code":"231224","name":"庆安县"},{"code":"231225","name":"明水县"},{"code":"231226","name":"绥棱县"},{"code":"231281","name":"安达市"},{"code":"231282","name":"肇东市"},{"code":"231283","name":"海伦市"}]},{"code":"2327","name":"大兴安岭地区","children":[{"code":"232701","name":"漠河市"},{"code":"232721","name":"呼玛县"},{"code":"232722","name":"塔河县"},{"code":"232761","name":"加格达奇区"},{"code":"232762","name":"松岭区"},{"code":"232763","name":"新林区"},{"code":"232764","name":"呼中区"}]}]},{"code":"31","name":"上海市","children":[{"code":"3101","name":"市辖区","children":[{"code":"310101","name":"黄浦区"},{"code":"310104","name":"徐汇区"},{"code":"310105","name":"长宁区"},{"code":"310106","name":"静安区"},{"code":"310107","name":"普陀区"},{"code":"310109","name":"虹口区"},{"code":"310110","name":"杨浦区"},{"code":"310112","name":"闵行区"},{"code":"310113","name":"宝山区"},{"code":"310114","name":"嘉定区"},{"code":"310115","name":"浦东新区"},{"code":"310116","name":"金山区"},{"code":"310117","name":"松江区"},{"code":"310118","name":"青浦区"},{"code":"310120","name":"奉贤区"},{"code":"310151","name":"崇明区"}]}]},{"code":"32","name":"江苏省","children":[{"code":"3201","name":"南京市","children":[{"code":"320102","name":"玄武区"},{"code":"320104","name":"秦淮区"},{"code":"320105","name":"建邺区"},{"code":"320106","name":"鼓楼区"},{"code":"320111","name":"浦口区"},{"code":"320113","name":"栖霞区"},{"code":"320114","name":"雨花台区"},{"code":"320115","name":"江宁区"},{"code":"320116","name":"六合区"},{"code":"320117","name":"溧水区"},{"code":"320118","name":"高淳区"}]},{"code":"3202","name":"无锡市","children":[{"code":"320205","name":"锡山区"},{"code":"320206","name":"惠山区"},{"code":"320211","name":"滨湖区"},{"code":"320213","name":"梁溪区"},{"code":"320214","name":"新吴区"},{"code":"320281","name":"江阴市"},{"code":"320282","name":"宜兴市"}]},{"code":"3203","name":"徐州市","children":[{"code":"320302","name":"鼓楼区"},{"code":"320303","name":"云龙区"},{"code":"320305","name":"贾汪区"},{"code":"320311","name":"泉山区"},{"code":"320312","name":"铜山区"},{"code":"320321","name":"丰县"},{"code":"320322","name":"沛县"},{"code":"320324","name":"睢宁县"},{"code":"320371","name":"徐州经济技术开发区"},{"code":"320381","name":"新沂市"},{"code":"320382","name":"邳州市"}]},{"code":"3204","name":"常州市","children":[{"code":"320402","name":"天宁区"},{"code":"320404","name":"钟楼区"},{"code":"320411","name":"新北区"},{"code":"320412","name":"武进区"},{"code":"320413","name":"金坛区"},{"code":"320481","name":"溧阳市"}]},{"code":"3205","name":"苏州市","children":[{"code":"320505","name":"虎丘区"},{"code":"320506","name":"吴中区"},{"code":"320507","name":"相城区"},{"code":"320508","name":"姑苏区"},{"code":"320509","name":"吴江区"},{"code":"320571","name":"苏州工业园区"},{"code":"320581","name":"常熟市"},{"code":"320582","name":"张家港市"},{"code":"320583","name":"昆山市"},{"code":"320585","name":"太仓市"}]},{"code":"3206","name":"南通市","children":[{"code":"320602","name":"崇川区"},{"code":"320611","name":"港闸区"},{"code":"320612","name":"通州区"},{"code":"320623","name":"如东县"},{"code":"320671","name":"南通经济技术开发区"},{"code":"320681","name":"启东市"},{"code":"320682","name":"如皋市"},{"code":"320684","name":"海门市"},{"code":"320685","name":"海安市"}]},{"code":"3207","name":"连云港市","children":[{"code":"320703","name":"连云区"},{"code":"320706","name":"海州区"},{"code":"320707","name":"赣榆区"},{"code":"320722","name":"东海县"},{"code":"320723","name":"灌云县"},{"code":"320724","name":"灌南县"},{"code":"320771","name":"连云港经济技术开发区"},{"code":"320772","name":"连云港高新技术产业开发区"}]},{"code":"3208","name":"淮安市","children":[{"code":"320803","name":"淮安区"},{"code":"320804","name":"淮阴区"},{"code":"320812","name":"清江浦区"},{"code":"320813","name":"洪泽区"},{"code":"320826","name":"涟水县"},{"code":"320830","name":"盱眙县"},{"code":"320831","name":"金湖县"},{"code":"320871","name":"淮安经济技术开发区"}]},{"code":"3209","name":"盐城市","children":[{"code":"320902","name":"亭湖区"},{"code":"320903","name":"盐都区"},{"code":"320904","name":"大丰区"},{"code":"320921","name":"响水县"},{"code":"320922","name":"滨海县"},{"code":"320923","name":"阜宁县"},{"code":"320924","name":"射阳县"},{"code":"320925","name":"建湖县"},{"code":"320971","name":"盐城经济技术开发区"},{"code":"320981","name":"东台市"}]},{"code":"3210","name":"扬州市","children":[{"code":"321002","name":"广陵区"},{"code":"321003","name":"邗江区"},{"code":"321012","name":"江都区"},{"code":"321023","name":"宝应县"},{"code":"321071","name":"扬州经济技术开发区"},{"code":"321081","name":"仪征市"},{"code":"321084","name":"高邮市"}]},{"code":"3211","name":"镇江市","children":[{"code":"321102","name":"京口区"},{"code":"321111","name":"润州区"},{"code":"321112","name":"丹徒区"},{"code":"321171","name":"镇江新区"},{"code":"321181","name":"丹阳市"},{"code":"321182","name":"扬中市"},{"code":"321183","name":"句容市"}]},{"code":"3212","name":"泰州市","children":[{"code":"321202","name":"海陵区"},{"code":"321203","name":"高港区"},{"code":"321204","name":"姜堰区"},{"code":"321271","name":"泰州医药高新技术产业开发区"},{"code":"321281","name":"兴化市"},{"code":"321282","name":"靖江市"},{"code":"321283","name":"泰兴市"}]},{"code":"3213","name":"宿迁市","children":[{"code":"321302","name":"宿城区"},{"code":"321311","name":"宿豫区"},{"code":"321322","name":"沭阳县"},{"code":"321323","name":"泗阳县"},{"code":"321324","name":"泗洪县"},{"code":"321371","name":"宿迁经济技术开发区"}]}]},{"code":"33","name":"浙江省","children":[{"code":"3301","name":"杭州市","children":[{"code":"330102","name":"上城区"},{"code":"330103","name":"下城区"},{"code":"330104","name":"江干区"},{"code":"330105","name":"拱墅区"},{"code":"330106","name":"西湖区"},{"code":"330108","name":"滨江区"},{"code":"330109","name":"萧山区"},{"code":"330110","name":"余杭区"},{"code":"330111","name":"富阳区"},{"code":"330112","name":"临安区"},{"code":"330122","name":"桐庐县"},{"code":"330127","name":"淳安县"},{"code":"330182","name":"建德市"}]},{"code":"3302","name":"宁波市","children":[{"code":"330203","name":"海曙区"},{"code":"330205","name":"江北区"},{"code":"330206","name":"北仑区"},{"code":"330211","name":"镇海区"},{"code":"330212","name":"鄞州区"},{"code":"330213","name":"奉化区"},{"code":"330225","name":"象山县"},{"code":"330226","name":"宁海县"},{"code":"330281","name":"余姚市"},{"code":"330282","name":"慈溪市"}]},{"code":"3303","name":"温州市","children":[{"code":"330302","name":"鹿城区"},{"code":"330303","name":"龙湾区"},{"code":"330304","name":"瓯海区"},{"code":"330305","name":"洞头区"},{"code":"330324","name":"永嘉县"},{"code":"330326","name":"平阳县"},{"code":"330327","name":"苍南县"},{"code":"330328","name":"文成县"},{"code":"330329","name":"泰顺县"},{"code":"330371","name":"温州经济技术开发区"},{"code":"330381","name":"瑞安市"},{"code":"330382","name":"乐清市"},{"code":"330383","name":"龙港市"}]},{"code":"3304","name":"嘉兴市","children":[{"code":"330402","name":"南湖区"},{"code":"330411","name":"秀洲区"},{"code":"330421","name":"嘉善县"},{"code":"330424","name":"海盐县"},{"code":"330481","name":"海宁市"},{"code":"330482","name":"平湖市"},{"code":"330483","name":"桐乡市"}]},{"code":"3305","name":"湖州市","children":[{"code":"330502","name":"吴兴区"},{"code":"330503","name":"南浔区"},{"code":"330521","name":"德清县"},{"code":"330522","name":"长兴县"},{"code":"330523","name":"安吉县"}]},{"code":"3306","name":"绍兴市","children":[{"code":"330602","name":"越城区"},{"code":"330603","name":"柯桥区"},{"code":"330604","name":"上虞区"},{"code":"330624","name":"新昌县"},{"code":"330681","name":"诸暨市"},{"code":"330683","name":"嵊州市"}]},{"code":"3307","name":"金华市","children":[{"code":"330702","name":"婺城区"},{"code":"330703","name":"金东区"},{"code":"330723","name":"武义县"},{"code":"330726","name":"浦江县"},{"code":"330727","name":"磐安县"},{"code":"330781","name":"兰溪市"},{"code":"330782","name":"义乌市"},{"code":"330783","name":"东阳市"},{"code":"330784","name":"永康市"}]},{"code":"3308","name":"衢州市","children":[{"code":"330802","name":"柯城区"},{"code":"330803","name":"衢江区"},{"code":"330822","name":"常山县"},{"code":"330824","name":"开化县"},{"code":"330825","name":"龙游县"},{"code":"330881","name":"江山市"}]},{"code":"3309","name":"舟山市","children":[{"code":"330902","name":"定海区"},{"code":"330903","name":"普陀区"},{"code":"330921","name":"岱山县"},{"code":"330922","name":"嵊泗县"}]},{"code":"3310","name":"台州市","children":[{"code":"331002","name":"椒江区"},{"code":"331003","name":"黄岩区"},{"code":"331004","name":"路桥区"},{"code":"331022","name":"三门县"},{"code":"331023","name":"天台县"},{"code":"331024","name":"仙居县"},{"code":"331081","name":"温岭市"},{"code":"331082","name":"临海市"},{"code":"331083","name":"玉环市"}]},{"code":"3311","name":"丽水市","children":[{"code":"331102","name":"莲都区"},{"code":"331121","name":"青田县"},{"code":"331122","name":"缙云县"},{"code":"331123","name":"遂昌县"},{"code":"331124","name":"松阳县"},{"code":"331125","name":"云和县"},{"code":"331126","name":"庆元县"},{"code":"331127","name":"景宁畲族自治县"},{"code":"331181","name":"龙泉市"}]}]},{"code":"34","name":"安徽省","children":[{"code":"3401","name":"合肥市","children":[{"code":"340102","name":"瑶海区"},{"code":"340103","name":"庐阳区"},{"code":"340104","name":"蜀山区"},{"code":"340111","name":"包河区"},{"code":"340121","name":"长丰县"},{"code":"340122","name":"肥东县"},{"code":"340123","name":"肥西县"},{"code":"340124","name":"庐江县"},{"code":"340171","name":"合肥高新技术产业开发区"},{"code":"340172","name":"合肥经济技术开发区"},{"code":"340173","name":"合肥新站高新技术产业开发区"},{"code":"340181","name":"巢湖市"}]},{"code":"3402","name":"芜湖市","children":[{"code":"340202","name":"镜湖区"},{"code":"340203","name":"弋江区"},{"code":"340207","name":"鸠江区"},{"code":"340208","name":"三山区"},{"code":"340221","name":"芜湖县"},{"code":"340222","name":"繁昌县"},{"code":"340223","name":"南陵县"},{"code":"340271","name":"芜湖经济技术开发区"},{"code":"340272","name":"安徽芜湖长江大桥经济开发区"},{"code":"340281","name":"无为市"}]},{"code":"3403","name":"蚌埠市","children":[{"code":"340302","name":"龙子湖区"},{"code":"340303","name":"蚌山区"},{"code":"340304","name":"禹会区"},{"code":"340311","name":"淮上区"},{"code":"340321","name":"怀远县"},{"code":"340322","name":"五河县"},{"code":"340323","name":"固镇县"},{"code":"340371","name":"蚌埠市高新技术开发区"},{"code":"340372","name":"蚌埠市经济开发区"}]},{"code":"3404","name":"淮南市","children":[{"code":"340402","name":"大通区"},{"code":"340403","name":"田家庵区"},{"code":"340404","name":"谢家集区"},{"code":"340405","name":"八公山区"},{"code":"340406","name":"潘集区"},{"code":"340421","name":"凤台县"},{"code":"340422","name":"寿县"}]},{"code":"3405","name":"马鞍山市","children":[{"code":"340503","name":"花山区"},{"code":"340504","name":"雨山区"},{"code":"340506","name":"博望区"},{"code":"340521","name":"当涂县"},{"code":"340522","name":"含山县"},{"code":"340523","name":"和县"}]},{"code":"3406","name":"淮北市","children":[{"code":"340602","name":"杜集区"},{"code":"340603","name":"相山区"},{"code":"340604","name":"烈山区"},{"code":"340621","name":"濉溪县"}]},{"code":"3407","name":"铜陵市","children":[{"code":"340705","name":"铜官区"},{"code":"340706","name":"义安区"},{"code":"340711","name":"郊区"},{"code":"340722","name":"枞阳县"}]},{"code":"3408","name":"安庆市","children":[{"code":"340802","name":"迎江区"},{"code":"340803","name":"大观区"},{"code":"340811","name":"宜秀区"},{"code":"340822","name":"怀宁县"},{"code":"340825","name":"太湖县"},{"code":"340826","name":"宿松县"},{"code":"340827","name":"望江县"},{"code":"340828","name":"岳西县"},{"code":"340871","name":"安徽安庆经济开发区"},{"code":"340881","name":"桐城市"},{"code":"340882","name":"潜山市"}]},{"code":"3410","name":"黄山市","children":[{"code":"341002","name":"屯溪区"},{"code":"341003","name":"黄山区"},{"code":"341004","name":"徽州区"},{"code":"341021","name":"歙县"},{"code":"341022","name":"休宁县"},{"code":"341023","name":"黟县"},{"code":"341024","name":"祁门县"}]},{"code":"3411","name":"滁州市","children":[{"code":"341102","name":"琅琊区"},{"code":"341103","name":"南谯区"},{"code":"341122","name":"来安县"},{"code":"341124","name":"全椒县"},{"code":"341125","name":"定远县"},{"code":"341126","name":"凤阳县"},{"code":"341171","name":"苏滁现代产业园"},{"code":"341172","name":"滁州经济技术开发区"},{"code":"341181","name":"天长市"},{"code":"341182","name":"明光市"}]},{"code":"3412","name":"阜阳市","children":[{"code":"341202","name":"颍州区"},{"code":"341203","name":"颍东区"},{"code":"341204","name":"颍泉区"},{"code":"341221","name":"临泉县"},{"code":"341222","name":"太和县"},{"code":"341225","name":"阜南县"},{"code":"341226","name":"颍上县"},{"code":"341271","name":"阜阳合肥现代产业园区"},{"code":"341272","name":"阜阳经济技术开发区"},{"code":"341282","name":"界首市"}]},{"code":"3413","name":"宿州市","children":[{"code":"341302","name":"埇桥区"},{"code":"341321","name":"砀山县"},{"code":"341322","name":"萧县"},{"code":"341323","name":"灵璧县"},{"code":"341324","name":"泗县"},{"code":"341371","name":"宿州马鞍山现代产业园区"},{"code":"341372","name":"宿州经济技术开发区"}]},{"code":"3415","name":"六安市","children":[{"code":"341502","name":"金安区"},{"code":"341503","name":"裕安区"},{"code":"341504","name":"叶集区"},{"code":"341522","name":"霍邱县"},{"code":"341523","name":"舒城县"},{"code":"341524","name":"金寨县"},{"code":"341525","name":"霍山县"}]},{"code":"3416","name":"亳州市","children":[{"code":"341602","name":"谯城区"},{"code":"341621","name":"涡阳县"},{"code":"341622","name":"蒙城县"},{"code":"341623","name":"利辛县"}]},{"code":"3417","name":"池州市","children":[{"code":"341702","name":"贵池区"},{"code":"341721","name":"东至县"},{"code":"341722","name":"石台县"},{"code":"341723","name":"青阳县"}]},{"code":"3418","name":"宣城市","children":[{"code":"341802","name":"宣州区"},{"code":"341821","name":"郎溪县"},{"code":"341823","name":"泾县"},{"code":"341824","name":"绩溪县"},{"code":"341825","name":"旌德县"},{"code":"341871","name":"宣城市经济开发区"},{"code":"341881","name":"宁国市"},{"code":"341882","name":"广德市"}]}]},{"code":"35","name":"福建省","children":[{"code":"3501","name":"福州市","children":[{"code":"350102","name":"鼓楼区"},{"code":"350103","name":"台江区"},{"code":"350104","name":"仓山区"},{"code":"350105","name":"马尾区"},{"code":"350111","name":"晋安区"},{"code":"350112","name":"长乐区"},{"code":"350121","name":"闽侯县"},{"code":"350122","name":"连江县"},{"code":"350123","name":"罗源县"},{"code":"350124","name":"闽清县"},{"code":"350125","name":"永泰县"},{"code":"350128","name":"平潭县"},{"code":"350181","name":"福清市"}]},{"code":"3502","name":"厦门市","children":[{"code":"350203","name":"思明区"},{"code":"350205","name":"海沧区"},{"code":"350206","name":"湖里区"},{"code":"350211","name":"集美区"},{"code":"350212","name":"同安区"},{"code":"350213","name":"翔安区"}]},{"code":"3503","name":"莆田市","children":[{"code":"350302","name":"城厢区"},{"code":"350303","name":"涵江区"},{"code":"350304","name":"荔城区"},{"code":"350305","name":"秀屿区"},{"code":"350322","name":"仙游县"}]},{"code":"3504","name":"三明市","children":[{"code":"350402","name":"梅列区"},{"code":"350403","name":"三元区"},{"code":"350421","name":"明溪县"},{"code":"350423","name":"清流县"},{"code":"350424","name":"宁化县"},{"code":"350425","name":"大田县"},{"code":"350426","name":"尤溪县"},{"code":"350427","name":"沙县"},{"code":"350428","name":"将乐县"},{"code":"350429","name":"泰宁县"},{"code":"350430","name":"建宁县"},{"code":"350481","name":"永安市"}]},{"code":"3505","name":"泉州市","children":[{"code":"350502","name":"鲤城区"},{"code":"350503","name":"丰泽区"},{"code":"350504","name":"洛江区"},{"code":"350505","name":"泉港区"},{"code":"350521","name":"惠安县"},{"code":"350524","name":"安溪县"},{"code":"350525","name":"永春县"},{"code":"350526","name":"德化县"},{"code":"350527","name":"金门县"},{"code":"350581","name":"石狮市"},{"code":"350582","name":"晋江市"},{"code":"350583","name":"南安市"}]},{"code":"3506","name":"漳州市","children":[{"code":"350602","name":"芗城区"},{"code":"350603","name":"龙文区"},{"code":"350622","name":"云霄县"},{"code":"350623","name":"漳浦县"},{"code":"350624","name":"诏安县"},{"code":"350625","name":"长泰县"},{"code":"350626","name":"东山县"},{"code":"350627","name":"南靖县"},{"code":"350628","name":"平和县"},{"code":"350629","name":"华安县"},{"code":"350681","name":"龙海市"}]},{"code":"3507","name":"南平市","children":[{"code":"350702","name":"延平区"},{"code":"350703","name":"建阳区"},{"code":"350721","name":"顺昌县"},{"code":"350722","name":"浦城县"},{"code":"350723","name":"光泽县"},{"code":"350724","name":"松溪县"},{"code":"350725","name":"政和县"},{"code":"350781","name":"邵武市"},{"code":"350782","name":"武夷山市"},{"code":"350783","name":"建瓯市"}]},{"code":"3508","name":"龙岩市","children":[{"code":"350802","name":"新罗区"},{"code":"350803","name":"永定区"},{"code":"350821","name":"长汀县"},{"code":"350823","name":"上杭县"},{"code":"350824","name":"武平县"},{"code":"350825","name":"连城县"},{"code":"350881","name":"漳平市"}]},{"code":"3509","name":"宁德市","children":[{"code":"350902","name":"蕉城区"},{"code":"350921","name":"霞浦县"},{"code":"350922","name":"古田县"},{"code":"350923","name":"屏南县"},{"code":"350924","name":"寿宁县"},{"code":"350925","name":"周宁县"},{"code":"350926","name":"柘荣县"},{"code":"350981","name":"福安市"},{"code":"350982","name":"福鼎市"}]}]},{"code":"36","name":"江西省","children":[{"code":"3601","name":"南昌市","children":[{"code":"360102","name":"东湖区"},{"code":"360103","name":"西湖区"},{"code":"360104","name":"青云谱区"},{"code":"360111","name":"青山湖区"},{"code":"360112","name":"新建区"},{"code":"360113","name":"红谷滩区"},{"code":"360121","name":"南昌县"},{"code":"360123","name":"安义县"},{"code":"360124","name":"进贤县"}]},{"code":"3602","name":"景德镇市","children":[{"code":"360202","name":"昌江区"},{"code":"360203","name":"珠山区"},{"code":"360222","name":"浮梁县"},{"code":"360281","name":"乐平市"}]},{"code":"3603","name":"萍乡市","children":[{"code":"360302","name":"安源区"},{"code":"360313","name":"湘东区"},{"code":"360321","name":"莲花县"},{"code":"360322","name":"上栗县"},{"code":"360323","name":"芦溪县"}]},{"code":"3604","name":"九江市","children":[{"code":"360402","name":"濂溪区"},{"code":"360403","name":"浔阳区"},{"code":"360404","name":"柴桑区"},{"code":"360423","name":"武宁县"},{"code":"360424","name":"修水县"},{"code":"360425","name":"永修县"},{"code":"360426","name":"德安县"},{"code":"360428","name":"都昌县"},{"code":"360429","name":"湖口县"},{"code":"360430","name":"彭泽县"},{"code":"360481","name":"瑞昌市"},{"code":"360482","name":"共青城市"},{"code":"360483","name":"庐山市"}]},{"code":"3605","name":"新余市","children":[{"code":"360502","name":"渝水区"},{"code":"360521","name":"分宜县"}]},{"code":"3606","name":"鹰潭市","children":[{"code":"360602","name":"月湖区"},{"code":"360603","name":"余江区"},{"code":"360681","name":"贵溪市"}]},{"code":"3607","name":"赣州市","children":[{"code":"360702","name":"章贡区"},{"code":"360703","name":"南康区"},{"code":"360704","name":"赣县区"},{"code":"360722","name":"信丰县"},{"code":"360723","name":"大余县"},{"code":"360724","name":"上犹县"},{"code":"360725","name":"崇义县"},{"code":"360726","name":"安远县"},{"code":"360728","name":"定南县"},{"code":"360729","name":"全南县"},{"code":"360730","name":"宁都县"},{"code":"360731","name":"于都县"},{"code":"360732","name":"兴国县"},{"code":"360733","name":"会昌县"},{"code":"360734","name":"寻乌县"},{"code":"360735","name":"石城县"},{"code":"360781","name":"瑞金市"},{"code":"360783","name":"龙南市"}]},{"code":"3608","name":"吉安市","children":[{"code":"360802","name":"吉州区"},{"code":"360803","name":"青原区"},{"code":"360821","name":"吉安县"},{"code":"360822","name":"吉水县"},{"code":"360823","name":"峡江县"},{"code":"360824","name":"新干县"},{"code":"360825","name":"永丰县"},{"code":"360826","name":"泰和县"},{"code":"360827","name":"遂川县"},{"code":"360828","name":"万安县"},{"code":"360829","name":"安福县"},{"code":"360830","name":"永新县"},{"code":"360881","name":"井冈山市"}]},{"code":"3609","name":"宜春市","children":[{"code":"360902","name":"袁州区"},{"code":"360921","name":"奉新县"},{"code":"360922","name":"万载县"},{"code":"360923","name":"上高县"},{"code":"360924","name":"宜丰县"},{"code":"360925","name":"靖安县"},{"code":"360926","name":"铜鼓县"},{"code":"360981","name":"丰城市"},{"code":"360982","name":"樟树市"},{"code":"360983","name":"高安市"}]},{"code":"3610","name":"抚州市","children":[{"code":"361002","name":"临川区"},{"code":"361003","name":"东乡区"},{"code":"361021","name":"南城县"},{"code":"361022","name":"黎川县"},{"code":"361023","name":"南丰县"},{"code":"361024","name":"崇仁县"},{"code":"361025","name":"乐安县"},{"code":"361026","name":"宜黄县"},{"code":"361027","name":"金溪县"},{"code":"361028","name":"资溪县"},{"code":"361030","name":"广昌县"}]},{"code":"3611","name":"上饶市","children":[{"code":"361102","name":"信州区"},{"code":"361103","name":"广丰区"},{"code":"361104","name":"广信区"},{"code":"361123","name":"玉山县"},{"code":"361124","name":"铅山县"},{"code":"361125","name":"横峰县"},{"code":"361126","name":"弋阳县"},{"code":"361127","name":"余干县"},{"code":"361128","name":"鄱阳县"},{"code":"361129","name":"万年县"},{"code":"361130","name":"婺源县"},{"code":"361181","name":"德兴市"}]}]},{"code":"37","name":"山东省","children":[{"code":"3701","name":"济南市","children":[{"code":"370102","name":"历下区"},{"code":"370103","name":"市中区"},{"code":"370104","name":"槐荫区"},{"code":"370105","name":"天桥区"},{"code":"370112","name":"历城区"},{"code":"370113","name":"长清区"},{"code":"370114","name":"章丘区"},{"code":"370115","name":"济阳区"},{"code":"370116","name":"莱芜区"},{"code":"370117","name":"钢城区"},{"code":"370124","name":"平阴县"},{"code":"370126","name":"商河县"},{"code":"370171","name":"济南高新技术产业开发区"}]},{"code":"3702","name":"青岛市","children":[{"code":"370202","name":"市南区"},{"code":"370203","name":"市北区"},{"code":"370211","name":"黄岛区"},{"code":"370212","name":"崂山区"},{"code":"370213","name":"李沧区"},{"code":"370214","name":"城阳区"},{"code":"370215","name":"即墨区"},{"code":"370271","name":"青岛高新技术产业开发区"},{"code":"370281","name":"胶州市"},{"code":"370283","name":"平度市"},{"code":"370285","name":"莱西市"}]},{"code":"3703","name":"淄博市","children":[{"code":"370302","name":"淄川区"},{"code":"370303","name":"张店区"},{"code":"370304","name":"博山区"},{"code":"370305","name":"临淄区"},{"code":"370306","name":"周村区"},{"code":"370321","name":"桓台县"},{"code":"370322","name":"高青县"},{"code":"370323","name":"沂源县"}]},{"code":"3704","name":"枣庄市","children":[{"code":"370402","name":"市中区"},{"code":"370403","name":"薛城区"},{"code":"370404","name":"峄城区"},{"code":"370405","name":"台儿庄区"},{"code":"370406","name":"山亭区"},{"code":"370481","name":"滕州市"}]},{"code":"3705","name":"东营市","children":[{"code":"370502","name":"东营区"},{"code":"370503","name":"河口区"},{"code":"370505","name":"垦利区"},{"code":"370522","name":"利津县"},{"code":"370523","name":"广饶县"},{"code":"370571","name":"东营经济技术开发区"},{"code":"370572","name":"东营港经济开发区"}]},{"code":"3706","name":"烟台市","children":[{"code":"370602","name":"芝罘区"},{"code":"370611","name":"福山区"},{"code":"370612","name":"牟平区"},{"code":"370613","name":"莱山区"},{"code":"370614","name":"蓬莱区"},{"code":"370671","name":"烟台高新技术产业开发区"},{"code":"370672","name":"烟台经济技术开发区"},{"code":"370681","name":"龙口市"},{"code":"370682","name":"莱阳市"},{"code":"370683","name":"莱州市"},{"code":"370685","name":"招远市"},{"code":"370686","name":"栖霞市"},{"code":"370687","name":"海阳市"}]},{"code":"3707","name":"潍坊市","children":[{"code":"370702","name":"潍城区"},{"code":"370703","name":"寒亭区"},{"code":"370704","name":"坊子区"},{"code":"370705","name":"奎文区"},{"code":"370724","name":"临朐县"},{"code":"370725","name":"昌乐县"},{"code":"370772","name":"潍坊滨海经济技术开发区"},{"code":"370781","name":"青州市"},{"code":"370782","name":"诸城市"},{"code":"370783","name":"寿光市"},{"code":"370784","name":"安丘市"},{"code":"370785","name":"高密市"},{"code":"370786","name":"昌邑市"}]},{"code":"3708","name":"济宁市","children":[{"code":"370811","name":"任城区"},{"code":"370812","name":"兖州区"},{"code":"370826","name":"微山县"},{"code":"370827","name":"鱼台县"},{"code":"370828","name":"金乡县"},{"code":"370829","name":"嘉祥县"},{"code":"370830","name":"汶上县"},{"code":"370831","name":"泗水县"},{"code":"370832","name":"梁山县"},{"code":"370871","name":"济宁高新技术产业开发区"},{"code":"370881","name":"曲阜市"},{"code":"370883","name":"邹城市"}]},{"code":"3709","name":"泰安市","children":[{"code":"370902","name":"泰山区"},{"code":"370911","name":"岱岳区"},{"code":"370921","name":"宁阳县"},{"code":"370923","name":"东平县"},{"code":"370982","name":"新泰市"},{"code":"370983","name":"肥城市"}]},{"code":"3710","name":"威海市","children":[{"code":"371002","name":"环翠区"},{"code":"371003","name":"文登区"},{"code":"371071","name":"威海火炬高技术产业开发区"},{"code":"371072","name":"威海经济技术开发区"},{"code":"371073","name":"威海临港经济技术开发区"},{"code":"371082","name":"荣成市"},{"code":"371083","name":"乳山市"}]},{"code":"3711","name":"日照市","children":[{"code":"371102","name":"东港区"},{"code":"371103","name":"岚山区"},{"code":"371121","name":"五莲县"},{"code":"371122","name":"莒县"},{"code":"371171","name":"日照经济技术开发区"}]},{"code":"3713","name":"临沂市","children":[{"code":"371302","name":"兰山区"},{"code":"371311","name":"罗庄区"},{"code":"371312","name":"河东区"},{"code":"371321","name":"沂南县"},{"code":"371322","name":"郯城县"},{"code":"371323","name":"沂水县"},{"code":"371324","name":"兰陵县"},{"code":"371325","name":"费县"},{"code":"371326","name":"平邑县"},{"code":"371327","name":"莒南县"},{"code":"371328","name":"蒙阴县"},{"code":"371329","name":"临沭县"},{"code":"371371","name":"临沂高新技术产业开发区"}]},{"code":"3714","name":"德州市","children":[{"code":"371402","name":"德城区"},{"code":"371403","name":"陵城区"},{"code":"371422","name":"宁津县"},{"code":"371423","name":"庆云县"},{"code":"371424","name":"临邑县"},{"code":"371425","name":"齐河县"},{"code":"371426","name":"平原县"},{"code":"371427","name":"夏津县"},{"code":"371428","name":"武城县"},{"code":"371471","name":"德州经济技术开发区"},{"code":"371472","name":"德州运河经济开发区"},{"code":"371481","name":"乐陵市"},{"code":"371482","name":"禹城市"}]},{"code":"3715","name":"聊城市","children":[{"code":"371502","name":"东昌府区"},{"code":"371503","name":"茌平区"},{"code":"371521","name":"阳谷县"},{"code":"371522","name":"莘县"},{"code":"371524","name":"东阿县"},{"code":"371525","name":"冠县"},{"code":"371526","name":"高唐县"},{"code":"371581","name":"临清市"}]},{"code":"3716","name":"滨州市","children":[{"code":"371602","name":"滨城区"},{"code":"371603","name":"沾化区"},{"code":"371621","name":"惠民县"},{"code":"371622","name":"阳信县"},{"code":"371623","name":"无棣县"},{"code":"371625","name":"博兴县"},{"code":"371681","name":"邹平市"}]},{"code":"3717","name":"菏泽市","children":[{"code":"371702","name":"牡丹区"},{"code":"371703","name":"定陶区"},{"code":"371721","name":"曹县"},{"code":"371722","name":"单县"},{"code":"371723","name":"成武县"},{"code":"371724","name":"巨野县"},{"code":"371725","name":"郓城县"},{"code":"371726","name":"鄄城县"},{"code":"371728","name":"东明县"},{"code":"371771","name":"菏泽经济技术开发区"},{"code":"371772","name":"菏泽高新技术开发区"}]}]},{"code":"41","name":"河南省","children":[{"code":"4101","name":"郑州市","children":[{"code":"410102","name":"中原区"},{"code":"410103","name":"二七区"},{"code":"410104","name":"管城回族区"},{"code":"410105","name":"金水区"},{"code":"410106","name":"上街区"},{"code":"410108","name":"惠济区"},{"code":"410122","name":"中牟县"},{"code":"410171","name":"郑州经济技术开发区"},{"code":"410172","name":"郑州高新技术产业开发区"},{"code":"410173","name":"郑州航空港经济综合实验区"},{"code":"410181","name":"巩义市"},{"code":"410182","name":"荥阳市"},{"code":"410183","name":"新密市"},{"code":"410184","name":"新郑市"},{"code":"410185","name":"登封市"}]},{"code":"4102","name":"开封市","children":[{"code":"410202","name":"龙亭区"},{"code":"410203","name":"顺河回族区"},{"code":"410204","name":"鼓楼区"},{"code":"410205","name":"禹王台区"},{"code":"410212","name":"祥符区"},{"code":"410221","name":"杞县"},{"code":"410222","name":"通许县"},{"code":"410223","name":"尉氏县"},{"code":"410225","name":"兰考县"}]},{"code":"4103","name":"洛阳市","children":[{"code":"410302","name":"老城区"},{"code":"410303","name":"西工区"},{"code":"410304","name":"瀍河回族区"},{"code":"410305","name":"涧西区"},{"code":"410306","name":"吉利区"},{"code":"410311","name":"洛龙区"},{"code":"410322","name":"孟津县"},{"code":"410323","name":"新安县"},{"code":"410324","name":"栾川县"},{"code":"410325","name":"嵩县"},{"code":"410326","name":"汝阳县"},{"code":"410327","name":"宜阳县"},{"code":"410328","name":"洛宁县"},{"code":"410329","name":"伊川县"},{"code":"410371","name":"洛阳高新技术产业开发区"},{"code":"410381","name":"偃师市"}]},{"code":"4104","name":"平顶山市","children":[{"code":"410402","name":"新华区"},{"code":"410403","name":"卫东区"},{"code":"410404","name":"石龙区"},{"code":"410411","name":"湛河区"},{"code":"410421","name":"宝丰县"},{"code":"410422","name":"叶县"},{"code":"410423","name":"鲁山县"},{"code":"410425","name":"郏县"},{"code":"410471","name":"平顶山高新技术产业开发区"},{"code":"410472","name":"平顶山市城乡一体化示范区"},{"code":"410481","name":"舞钢市"},{"code":"410482","name":"汝州市"}]},{"code":"4105","name":"安阳市","children":[{"code":"410502","name":"文峰区"},{"code":"410503","name":"北关区"},{"code":"410505","name":"殷都区"},{"code":"410506","name":"龙安区"},{"code":"410522","name":"安阳县"},{"code":"410523","name":"汤阴县"},{"code":"410526","name":"滑县"},{"code":"410527","name":"内黄县"},{"code":"410571","name":"安阳高新技术产业开发区"},{"code":"410581","name":"林州市"}]},{"code":"4106","name":"鹤壁市","children":[{"code":"410602","name":"鹤山区"},{"code":"410603","name":"山城区"},{"code":"410611","name":"淇滨区"},{"code":"410621","name":"浚县"},{"code":"410622","name":"淇县"},{"code":"410671","name":"鹤壁经济技术开发区"}]},{"code":"4107","name":"新乡市","children":[{"code":"410702","name":"红旗区"},{"code":"410703","name":"卫滨区"},{"code":"410704","name":"凤泉区"},{"code":"410711","name":"牧野区"},{"code":"410721","name":"新乡县"},{"code":"410724","name":"获嘉县"},{"code":"410725","name":"原阳县"},{"code":"410726","name":"延津县"},{"code":"410727","name":"封丘县"},{"code":"410771","name":"新乡高新技术产业开发区"},{"code":"410772","name":"新乡经济技术开发区"},{"code":"410773","name":"新乡市平原城乡一体化示范区"},{"code":"410781","name":"卫辉市"},{"code":"410782","name":"辉县市"},{"code":"410783","name":"长垣市"}]},{"code":"4108","name":"焦作市","children":[{"code":"410802","name":"解放区"},{"code":"410803","name":"中站区"},{"code":"410804","name":"马村区"},{"code":"410811","name":"山阳区"},{"code":"410821","name":"修武县"},{"code":"410822","name":"博爱县"},{"code":"410823","name":"武陟县"},{"code":"410825","name":"温县"},{"code":"410871","name":"焦作城乡一体化示范区"},{"code":"410882","name":"沁阳市"},{"code":"410883","name":"孟州市"}]},{"code":"4109","name":"濮阳市","children":[{"code":"410902","name":"华龙区"},{"code":"410922","name":"清丰县"},{"code":"410923","name":"南乐县"},{"code":"410926","name":"范县"},{"code":"410927","name":"台前县"},{"code":"410928","name":"濮阳县"},{"code":"410971","name":"河南濮阳工业园区"},{"code":"410972","name":"濮阳经济技术开发区"}]},{"code":"4110","name":"许昌市","children":[{"code":"411002","name":"魏都区"},{"code":"411003","name":"建安区"},{"code":"411024","name":"鄢陵县"},{"code":"411025","name":"襄城县"},{"code":"411071","name":"许昌经济技术开发区"},{"code":"411081","name":"禹州市"},{"code":"411082","name":"长葛市"}]},{"code":"4111","name":"漯河市","children":[{"code":"411102","name":"源汇区"},{"code":"411103","name":"郾城区"},{"code":"411104","name":"召陵区"},{"code":"411121","name":"舞阳县"},{"code":"411122","name":"临颍县"},{"code":"411171","name":"漯河经济技术开发区"}]},{"code":"4112","name":"三门峡市","children":[{"code":"411202","name":"湖滨区"},{"code":"411203","name":"陕州区"},{"code":"411221","name":"渑池县"},{"code":"411224","name":"卢氏县"},{"code":"411271","name":"河南三门峡经济开发区"},{"code":"411281","name":"义马市"},{"code":"411282","name":"灵宝市"}]},{"code":"4113","name":"南阳市","children":[{"code":"411302","name":"宛城区"},{"code":"411303","name":"卧龙区"},{"code":"411321","name":"南召县"},{"code":"411322","name":"方城县"},{"code":"411323","name":"西峡县"},{"code":"411324","name":"镇平县"},{"code":"411325","name":"内乡县"},{"code":"411326","name":"淅川县"},{"code":"411327","name":"社旗县"},{"code":"411328","name":"唐河县"},{"code":"411329","name":"新野县"},{"code":"411330","name":"桐柏县"},{"code":"411371","name":"南阳高新技术产业开发区"},{"code":"411372","name":"南阳市城乡一体化示范区"},{"code":"411381","name":"邓州市"}]},{"code":"4114","name":"商丘市","children":[{"code":"411402","name":"梁园区"},{"code":"411403","name":"睢阳区"},{"code":"411421","name":"民权县"},{"code":"411422","name":"睢县"},{"code":"411423","name":"宁陵县"},{"code":"411424","name":"柘城县"},{"code":"411425","name":"虞城县"},{"code":"411426","name":"夏邑县"},{"code":"411471","name":"豫东综合物流产业聚集区"},{"code":"411472","name":"河南商丘经济开发区"},{"code":"411481","name":"永城市"}]},{"code":"4115","name":"信阳市","children":[{"code":"411502","name":"浉河区"},{"code":"411503","name":"平桥区"},{"code":"411521","name":"罗山县"},{"code":"411522","name":"光山县"},{"code":"411523","name":"新县"},{"code":"411524","name":"商城县"},{"code":"411525","name":"固始县"},{"code":"411526","name":"潢川县"},{"code":"411527","name":"淮滨县"},{"code":"411528","name":"息县"},{"code":"411571","name":"信阳高新技术产业开发区"}]},{"code":"4116","name":"周口市","children":[{"code":"411602","name":"川汇区"},{"code":"411603","name":"淮阳区"},{"code":"411621","name":"扶沟县"},{"code":"411622","name":"西华县"},{"code":"411623","name":"商水县"},{"code":"411624","name":"沈丘县"},{"code":"411625","name":"郸城县"},{"code":"411627","name":"太康县"},{"code":"411628","name":"鹿邑县"},{"code":"411671","name":"河南周口经济开发区"},{"code":"411681","name":"项城市"}]},{"code":"4117","name":"驻马店市","children":[{"code":"411702","name":"驿城区"},{"code":"411721","name":"西平县"},{"code":"411722","name":"上蔡县"},{"code":"411723","name":"平舆县"},{"code":"411724","name":"正阳县"},{"code":"411725","name":"确山县"},{"code":"411726","name":"泌阳县"},{"code":"411727","name":"汝南县"},{"code":"411728","name":"遂平县"},{"code":"411729","name":"新蔡县"},{"code":"411771","name":"河南驻马店经济开发区"}]},{"code":"4190","name":"省直辖县级行政区划","children":[{"code":"419001","name":"济源市"}]}]},{"code":"42","name":"湖北省","children":[{"code":"4201","name":"武汉市","children":[{"code":"420102","name":"江岸区"},{"code":"420103","name":"江汉区"},{"code":"420104","name":"硚口区"},{"code":"420105","name":"汉阳区"},{"code":"420106","name":"武昌区"},{"code":"420107","name":"青山区"},{"code":"420111","name":"洪山区"},{"code":"420112","name":"东西湖区"},{"code":"420113","name":"汉南区"},{"code":"420114","name":"蔡甸区"},{"code":"420115","name":"江夏区"},{"code":"420116","name":"黄陂区"},{"code":"420117","name":"新洲区"}]},{"code":"4202","name":"黄石市","children":[{"code":"420202","name":"黄石港区"},{"code":"420203","name":"西塞山区"},{"code":"420204","name":"下陆区"},{"code":"420205","name":"铁山区"},{"code":"420222","name":"阳新县"},{"code":"420281","name":"大冶市"}]},{"code":"4203","name":"十堰市","children":[{"code":"420302","name":"茅箭区"},{"code":"420303","name":"张湾区"},{"code":"420304","name":"郧阳区"},{"code":"420322","name":"郧西县"},{"code":"420323","name":"竹山县"},{"code":"420324","name":"竹溪县"},{"code":"420325","name":"房县"},{"code":"420381","name":"丹江口市"}]},{"code":"4205","name":"宜昌市","children":[{"code":"420502","name":"西陵区"},{"code":"420503","name":"伍家岗区"},{"code":"420504","name":"点军区"},{"code":"420505","name":"猇亭区"},{"code":"420506","name":"夷陵区"},{"code":"420525","name":"远安县"},{"code":"420526","name":"兴山县"},{"code":"420527","name":"秭归县"},{"code":"420528","name":"长阳土家族自治县"},{"code":"420529","name":"五峰土家族自治县"},{"code":"420581","name":"宜都市"},{"code":"420582","name":"当阳市"},{"code":"420583","name":"枝江市"}]},{"code":"4206","name":"襄阳市","children":[{"code":"420602","name":"襄城区"},{"code":"420606","name":"樊城区"},{"code":"420607","name":"襄州区"},{"code":"420624","name":"南漳县"},{"code":"420625","name":"谷城县"},{"code":"420626","name":"保康县"},{"code":"420682","name":"老河口市"},{"code":"420683","name":"枣阳市"},{"code":"420684","name":"宜城市"}]},{"code":"4207","name":"鄂州市","children":[{"code":"420702","name":"梁子湖区"},{"code":"420703","name":"华容区"},{"code":"420704","name":"鄂城区"}]},{"code":"4208","name":"荆门市","children":[{"code":"420802","name":"东宝区"},{"code":"420804","name":"掇刀区"},{"code":"420822","name":"沙洋县"},{"code":"420881","name":"钟祥市"},{"code":"420882","name":"京山市"}]},{"code":"4209","name":"孝感市","children":[{"code":"420902","name":"孝南区"},{"code":"420921","name":"孝昌县"},{"code":"420922","name":"大悟县"},{"code":"420923","name":"云梦县"},{"code":"420981","name":"应城市"},{"code":"420982","name":"安陆市"},{"code":"420984","name":"汉川市"}]},{"code":"4210","name":"荆州市","children":[{"code":"421002","name":"沙市区"},{"code":"421003","name":"荆州区"},{"code":"421022","name":"公安县"},{"code":"421023","name":"监利县"},{"code":"421024","name":"江陵县"},{"code":"421071","name":"荆州经济技术开发区"},{"code":"421081","name":"石首市"},{"code":"421083","name":"洪湖市"},{"code":"421087","name":"松滋市"}]},{"code":"4211","name":"黄冈市","children":[{"code":"421102","name":"黄州区"},{"code":"421121","name":"团风县"},{"code":"421122","name":"红安县"},{"code":"421123","name":"罗田县"},{"code":"421124","name":"英山县"},{"code":"421125","name":"浠水县"},{"code":"421126","name":"蕲春县"},{"code":"421127","name":"黄梅县"},{"code":"421171","name":"龙感湖管理区"},{"code":"421181","name":"麻城市"},{"code":"421182","name":"武穴市"}]},{"code":"4212","name":"咸宁市","children":[{"code":"421202","name":"咸安区"},{"code":"421221","name":"嘉鱼县"},{"code":"421222","name":"通城县"},{"code":"421223","name":"崇阳县"},{"code":"421224","name":"通山县"},{"code":"421281","name":"赤壁市"}]},{"code":"4213","name":"随州市","children":[{"code":"421303","name":"曾都区"},{"code":"421321","name":"随县"},{"code":"421381","name":"广水市"}]},{"code":"4228","name":"恩施土家族苗族自治州","children":[{"code":"422801","name":"恩施市"},{"code":"422802","name":"利川市"},{"code":"422822","name":"建始县"},{"code":"422823","name":"巴东县"},{"code":"422825","name":"宣恩县"},{"code":"422826","name":"咸丰县"},{"code":"422827","name":"来凤县"},{"code":"422828","name":"鹤峰县"}]},{"code":"4290","name":"省直辖县级行政区划","children":[{"code":"429004","name":"仙桃市"},{"code":"429005","name":"潜江市"},{"code":"429006","name":"天门市"},{"code":"429021","name":"神农架林区"}]}]},{"code":"43","name":"湖南省","children":[{"code":"4301","name":"长沙市","children":[{"code":"430102","name":"芙蓉区"},{"code":"430103","name":"天心区"},{"code":"430104","name":"岳麓区"},{"code":"430105","name":"开福区"},{"code":"430111","name":"雨花区"},{"code":"430112","name":"望城区"},{"code":"430121","name":"长沙县"},{"code":"430181","name":"浏阳市"},{"code":"430182","name":"宁乡市"}]},{"code":"4302","name":"株洲市","children":[{"code":"430202","name":"荷塘区"},{"code":"430203","name":"芦淞区"},{"code":"430204","name":"石峰区"},{"code":"430211","name":"天元区"},{"code":"430212","name":"渌口区"},{"code":"430223","name":"攸县"},{"code":"430224","name":"茶陵县"},{"code":"430225","name":"炎陵县"},{"code":"430271","name":"云龙示范区"},{"code":"430281","name":"醴陵市"}]},{"code":"4303","name":"湘潭市","children":[{"code":"430302","name":"雨湖区"},{"code":"430304","name":"岳塘区"},{"code":"430321","name":"湘潭县"},{"code":"430371","name":"湖南湘潭高新技术产业园区"},{"code":"430372","name":"湘潭昭山示范区"},{"code":"430373","name":"湘潭九华示范区"},{"code":"430381","name":"湘乡市"},{"code":"430382","name":"韶山市"}]},{"code":"4304","name":"衡阳市","children":[{"code":"430405","name":"珠晖区"},{"code":"430406","name":"雁峰区"},{"code":"430407","name":"石鼓区"},{"code":"430408","name":"蒸湘区"},{"code":"430412","name":"南岳区"},{"code":"430421","name":"衡阳县"},{"code":"430422","name":"衡南县"},{"code":"430423","name":"衡山县"},{"code":"430424","name":"衡东县"},{"code":"430426","name":"祁东县"},{"code":"430471","name":"衡阳综合保税区"},{"code":"430472","name":"湖南衡阳高新技术产业园区"},{"code":"430473","name":"湖南衡阳松木经济开发区"},{"code":"430481","name":"耒阳市"},{"code":"430482","name":"常宁市"}]},{"code":"4305","name":"邵阳市","children":[{"code":"430502","name":"双清区"},{"code":"430503","name":"大祥区"},{"code":"430511","name":"北塔区"},{"code":"430522","name":"新邵县"},{"code":"430523","name":"邵阳县"},{"code":"430524","name":"隆回县"},{"code":"430525","name":"洞口县"},{"code":"430527","name":"绥宁县"},{"code":"430528","name":"新宁县"},{"code":"430529","name":"城步苗族自治县"},{"code":"430581","name":"武冈市"},{"code":"430582","name":"邵东市"}]},{"code":"4306","name":"岳阳市","children":[{"code":"430602","name":"岳阳楼区"},{"code":"430603","name":"云溪区"},{"code":"430611","name":"君山区"},{"code":"430621","name":"岳阳县"},{"code":"430623","name":"华容县"},{"code":"430624","name":"湘阴县"},{"code":"430626","name":"平江县"},{"code":"430671","name":"岳阳市屈原管理区"},{"code":"430681","name":"汨罗市"},{"code":"430682","name":"临湘市"}]},{"code":"4307","name":"常德市","children":[{"code":"430702","name":"武陵区"},{"code":"430703","name":"鼎城区"},{"code":"430721","name":"安乡县"},{"code":"430722","name":"汉寿县"},{"code":"430723","name":"澧县"},{"code":"430724","name":"临澧县"},{"code":"430725","name":"桃源县"},{"code":"430726","name":"石门县"},{"code":"430771","name":"常德市西洞庭管理区"},{"code":"430781","name":"津市市"}]},{"code":"4308","name":"张家界市","children":[{"code":"430802","name":"永定区"},{"code":"430811","name":"武陵源区"},{"code":"430821","name":"慈利县"},{"code":"430822","name":"桑植县"}]},{"code":"4309","name":"益阳市","children":[{"code":"430902","name":"资阳区"},{"code":"430903","name":"赫山区"},{"code":"430921","name":"南县"},{"code":"430922","name":"桃江县"},{"code":"430923","name":"安化县"},{"code":"430971","name":"益阳市大通湖管理区"},{"code":"430972","name":"湖南益阳高新技术产业园区"},{"code":"430981","name":"沅江市"}]},{"code":"4310","name":"郴州市","children":[{"code":"431002","name":"北湖区"},{"code":"431003","name":"苏仙区"},{"code":"431021","name":"桂阳县"},{"code":"431022","name":"宜章县"},{"code":"431023","name":"永兴县"},{"code":"431024","name":"嘉禾县"},{"code":"431025","name":"临武县"},{"code":"431026","name":"汝城县"},{"code":"431027","name":"桂东县"},{"code":"431028","name":"安仁县"},{"code":"431081","name":"资兴市"}]},{"code":"4311","name":"永州市","children":[{"code":"431102","name":"零陵区"},{"code":"431103","name":"冷水滩区"},{"code":"431121","name":"祁阳县"},{"code":"431122","name":"东安县"},{"code":"431123","name":"双牌县"},{"code":"431124","name":"道县"},{"code":"431125","name":"江永县"},{"code":"431126","name":"宁远县"},{"code":"431127","name":"蓝山县"},{"code":"431128","name":"新田县"},{"code":"431129","name":"江华瑶族自治县"},{"code":"431171","name":"永州经济技术开发区"},{"code":"431172","name":"永州市金洞管理区"},{"code":"431173","name":"永州市回龙圩管理区"}]},{"code":"4312","name":"怀化市","children":[{"code":"431202","name":"鹤城区"},{"code":"431221","name":"中方县"},{"code":"431222","name":"沅陵县"},{"code":"431223","name":"辰溪县"},{"code":"431224","name":"溆浦县"},{"code":"431225","name":"会同县"},{"code":"431226","name":"麻阳苗族自治县"},{"code":"431227","name":"新晃侗族自治县"},{"code":"431228","name":"芷江侗族自治县"},{"code":"431229","name":"靖州苗族侗族自治县"},{"code":"431230","name":"通道侗族自治县"},{"code":"431271","name":"怀化市洪江管理区"},{"code":"431281","name":"洪江市"}]},{"code":"4313","name":"娄底市","children":[{"code":"431302","name":"娄星区"},{"code":"431321","name":"双峰县"},{"code":"431322","name":"新化县"},{"code":"431381","name":"冷水江市"},{"code":"431382","name":"涟源市"}]},{"code":"4331","name":"湘西土家族苗族自治州","children":[{"code":"433101","name":"吉首市"},{"code":"433122","name":"泸溪县"},{"code":"433123","name":"凤凰县"},{"code":"433124","name":"花垣县"},{"code":"433125","name":"保靖县"},{"code":"433126","name":"古丈县"},{"code":"433127","name":"永顺县"},{"code":"433130","name":"龙山县"}]}]},{"code":"44","name":"广东省","children":[{"code":"4401","name":"广州市","children":[{"code":"440103","name":"荔湾区"},{"code":"440104","name":"越秀区"},{"code":"440105","name":"海珠区"},{"code":"440106","name":"天河区"},{"code":"440111","name":"白云区"},{"code":"440112","name":"黄埔区"},{"code":"440113","name":"番禺区"},{"code":"440114","name":"花都区"},{"code":"440115","name":"南沙区"},{"code":"440117","name":"从化区"},{"code":"440118","name":"增城区"}]},{"code":"4402","name":"韶关市","children":[{"code":"440203","name":"武江区"},{"code":"440204","name":"浈江区"},{"code":"440205","name":"曲江区"},{"code":"440222","name":"始兴县"},{"code":"440224","name":"仁化县"},{"code":"440229","name":"翁源县"},{"code":"440232","name":"乳源瑶族自治县"},{"code":"440233","name":"新丰县"},{"code":"440281","name":"乐昌市"},{"code":"440282","name":"南雄市"}]},{"code":"4403","name":"深圳市","children":[{"code":"440303","name":"罗湖区"},{"code":"440304","name":"福田区"},{"code":"440305","name":"南山区"},{"code":"440306","name":"宝安区"},{"code":"440307","name":"龙岗区"},{"code":"440308","name":"盐田区"},{"code":"440309","name":"龙华区"},{"code":"440310","name":"坪山区"},{"code":"440311","name":"光明区"}]},{"code":"4404","name":"珠海市","children":[{"code":"440402","name":"香洲区"},{"code":"440403","name":"斗门区"},{"code":"440404","name":"金湾区"}]},{"code":"4405","name":"汕头市","children":[{"code":"440507","name":"龙湖区"},{"code":"440511","name":"金平区"},{"code":"440512","name":"濠江区"},{"code":"440513","name":"潮阳区"},{"code":"440514","name":"潮南区"},{"code":"440515","name":"澄海区"},{"code":"440523","name":"南澳县"}]},{"code":"4406","name":"佛山市","children":[{"code":"440604","name":"禅城区"},{"code":"440605","name":"南海区"},{"code":"440606","name":"顺德区"},{"code":"440607","name":"三水区"},{"code":"440608","name":"高明区"}]},{"code":"4407","name":"江门市","children":[{"code":"440703","name":"蓬江区"},{"code":"440704","name":"江海区"},{"code":"440705","name":"新会区"},{"code":"440781","name":"台山市"},{"code":"440783","name":"开平市"},{"code":"440784","name":"鹤山市"},{"code":"440785","name":"恩平市"}]},{"code":"4408","name":"湛江市","children":[{"code":"440802","name":"赤坎区"},{"code":"440803","name":"霞山区"},{"code":"440804","name":"坡头区"},{"code":"440811","name":"麻章区"},{"code":"440823","name":"遂溪县"},{"code":"440825","name":"徐闻县"},{"code":"440881","name":"廉江市"},{"code":"440882","name":"雷州市"},{"code":"440883","name":"吴川市"}]},{"code":"4409","name":"茂名市","children":[{"code":"440902","name":"茂南区"},{"code":"440904","name":"电白区"},{"code":"440981","name":"高州市"},{"code":"440982","name":"化州市"},{"code":"440983","name":"信宜市"}]},{"code":"4412","name":"肇庆市","children":[{"code":"441202","name":"端州区"},{"code":"441203","name":"鼎湖区"},{"code":"441204","name":"高要区"},{"code":"441223","name":"广宁县"},{"code":"441224","name":"怀集县"},{"code":"441225","name":"封开县"},{"code":"441226","name":"德庆县"},{"code":"441284","name":"四会市"}]},{"code":"4413","name":"惠州市","children":[{"code":"441302","name":"惠城区"},{"code":"441303","name":"惠阳区"},{"code":"441322","name":"博罗县"},{"code":"441323","name":"惠东县"},{"code":"441324","name":"龙门县"}]},{"code":"4414","name":"梅州市","children":[{"code":"441402","name":"梅江区"},{"code":"441403","name":"梅县区"},{"code":"441422","name":"大埔县"},{"code":"441423","name":"丰顺县"},{"code":"441424","name":"五华县"},{"code":"441426","name":"平远县"},{"code":"441427","name":"蕉岭县"},{"code":"441481","name":"兴宁市"}]},{"code":"4415","name":"汕尾市","children":[{"code":"441502","name":"城区"},{"code":"441521","name":"海丰县"},{"code":"441523","name":"陆河县"},{"code":"441581","name":"陆丰市"}]},{"code":"4416","name":"河源市","children":[{"code":"441602","name":"源城区"},{"code":"441621","name":"紫金县"},{"code":"441622","name":"龙川县"},{"code":"441623","name":"连平县"},{"code":"441624","name":"和平县"},{"code":"441625","name":"东源县"}]},{"code":"4417","name":"阳江市","children":[{"code":"441702","name":"江城区"},{"code":"441704","name":"阳东区"},{"code":"441721","name":"阳西县"},{"code":"441781","name":"阳春市"}]},{"code":"4418","name":"清远市","children":[{"code":"441802","name":"清城区"},{"code":"441803","name":"清新区"},{"code":"441821","name":"佛冈县"},{"code":"441823","name":"阳山县"},{"code":"441825","name":"连山壮族瑶族自治县"},{"code":"441826","name":"连南瑶族自治县"},{"code":"441881","name":"英德市"},{"code":"441882","name":"连州市"}]},{"code":"4419","name":"东莞市","children":[{"code":"441900003","name":"东城街道"},{"code":"441900004","name":"南城街道"},{"code":"441900005","name":"万江街道"},{"code":"441900006","name":"莞城街道"},{"code":"441900101","name":"石碣镇"},{"code":"441900102","name":"石龙镇"},{"code":"441900103","name":"茶山镇"},{"code":"441900104","name":"石排镇"},{"code":"441900105","name":"企石镇"},{"code":"441900106","name":"横沥镇"},{"code":"441900107","name":"桥头镇"},{"code":"441900108","name":"谢岗镇"},{"code":"441900109","name":"东坑镇"},{"code":"441900110","name":"常平镇"},{"code":"441900111","name":"寮步镇"},{"code":"441900112","name":"樟木头镇"},{"code":"441900113","name":"大朗镇"},{"code":"441900114","name":"黄江镇"},{"code":"441900115","name":"清溪镇"},{"code":"441900116","name":"塘厦镇"},{"code":"441900117","name":"凤岗镇"},{"code":"441900118","name":"大岭山镇"},{"code":"441900119","name":"长安镇"},{"code":"441900121","name":"虎门镇"},{"code":"441900122","name":"厚街镇"},{"code":"441900123","name":"沙田镇"},{"code":"441900124","name":"道滘镇"},{"code":"441900125","name":"洪梅镇"},{"code":"441900126","name":"麻涌镇"},{"code":"441900127","name":"望牛墩镇"},{"code":"441900128","name":"中堂镇"},{"code":"441900129","name":"高埗镇"},{"code":"441900401","name":"松山湖"},{"code":"441900402","name":"东莞港"},{"code":"441900403","name":"东莞生态园"}]},{"code":"4420","name":"中山市","children":[{"code":"442000001","name":"石岐街道"},{"code":"442000002","name":"东区街道"},{"code":"442000003","name":"中山港街道"},{"code":"442000004","name":"西区街道"},{"code":"442000005","name":"南区街道"},{"code":"442000006","name":"五桂山街道"},{"code":"442000100","name":"小榄镇"},{"code":"442000101","name":"黄圃镇"},{"code":"442000102","name":"民众镇"},{"code":"442000103","name":"东凤镇"},{"code":"442000104","name":"东升镇"},{"code":"442000105","name":"古镇镇"},{"code":"442000106","name":"沙溪镇"},{"code":"442000107","name":"坦洲镇"},{"code":"442000108","name":"港口镇"},{"code":"442000109","name":"三角镇"},{"code":"442000110","name":"横栏镇"},{"code":"442000111","name":"南头镇"},{"code":"442000112","name":"阜沙镇"},{"code":"442000113","name":"南朗镇"},{"code":"442000114","name":"三乡镇"},{"code":"442000115","name":"板芙镇"},{"code":"442000116","name":"大涌镇"},{"code":"442000117","name":"神湾镇"}]},{"code":"4451","name":"潮州市","children":[{"code":"445102","name":"湘桥区"},{"code":"445103","name":"潮安区"},{"code":"445122","name":"饶平县"}]},{"code":"4452","name":"揭阳市","children":[{"code":"445202","name":"榕城区"},{"code":"445203","name":"揭东区"},{"code":"445222","name":"揭西县"},{"code":"445224","name":"惠来县"},{"code":"445281","name":"普宁市"}]},{"code":"4453","name":"云浮市","children":[{"code":"445302","name":"云城区"},{"code":"445303","name":"云安区"},{"code":"445321","name":"新兴县"},{"code":"445322","name":"郁南县"},{"code":"445381","name":"罗定市"}]}]},{"code":"45","name":"广西壮族自治区","children":[{"code":"4501","name":"南宁市","children":[{"code":"450102","name":"兴宁区"},{"code":"450103","name":"青秀区"},{"code":"450105","name":"江南区"},{"code":"450107","name":"西乡塘区"},{"code":"450108","name":"良庆区"},{"code":"450109","name":"邕宁区"},{"code":"450110","name":"武鸣区"},{"code":"450123","name":"隆安县"},{"code":"450124","name":"马山县"},{"code":"450125","name":"上林县"},{"code":"450126","name":"宾阳县"},{"code":"450127","name":"横县"}]},{"code":"4502","name":"柳州市","children":[{"code":"450202","name":"城中区"},{"code":"450203","name":"鱼峰区"},{"code":"450204","name":"柳南区"},{"code":"450205","name":"柳北区"},{"code":"450206","name":"柳江区"},{"code":"450222","name":"柳城县"},{"code":"450223","name":"鹿寨县"},{"code":"450224","name":"融安县"},{"code":"450225","name":"融水苗族自治县"},{"code":"450226","name":"三江侗族自治县"}]},{"code":"4503","name":"桂林市","children":[{"code":"450302","name":"秀峰区"},{"code":"450303","name":"叠彩区"},{"code":"450304","name":"象山区"},{"code":"450305","name":"七星区"},{"code":"450311","name":"雁山区"},{"code":"450312","name":"临桂区"},{"code":"450321","name":"阳朔县"},{"code":"450323","name":"灵川县"},{"code":"450324","name":"全州县"},{"code":"450325","name":"兴安县"},{"code":"450326","name":"永福县"},{"code":"450327","name":"灌阳县"},{"code":"450328","name":"龙胜各族自治县"},{"code":"450329","name":"资源县"},{"code":"450330","name":"平乐县"},{"code":"450332","name":"恭城瑶族自治县"},{"code":"450381","name":"荔浦市"}]},{"code":"4504","name":"梧州市","children":[{"code":"450403","name":"万秀区"},{"code":"450405","name":"长洲区"},{"code":"450406","name":"龙圩区"},{"code":"450421","name":"苍梧县"},{"code":"450422","name":"藤县"},{"code":"450423","name":"蒙山县"},{"code":"450481","name":"岑溪市"}]},{"code":"4505","name":"北海市","children":[{"code":"450502","name":"海城区"},{"code":"450503","name":"银海区"},{"code":"450512","name":"铁山港区"},{"code":"450521","name":"合浦县"}]},{"code":"4506","name":"防城港市","children":[{"code":"450602","name":"港口区"},{"code":"450603","name":"防城区"},{"code":"450621","name":"上思县"},{"code":"450681","name":"东兴市"}]},{"code":"4507","name":"钦州市","children":[{"code":"450702","name":"钦南区"},{"code":"450703","name":"钦北区"},{"code":"450721","name":"灵山县"},{"code":"450722","name":"浦北县"}]},{"code":"4508","name":"贵港市","children":[{"code":"450802","name":"港北区"},{"code":"450803","name":"港南区"},{"code":"450804","name":"覃塘区"},{"code":"450821","name":"平南县"},{"code":"450881","name":"桂平市"}]},{"code":"4509","name":"玉林市","children":[{"code":"450902","name":"玉州区"},{"code":"450903","name":"福绵区"},{"code":"450921","name":"容县"},{"code":"450922","name":"陆川县"},{"code":"450923","name":"博白县"},{"code":"450924","name":"兴业县"},{"code":"450981","name":"北流市"}]},{"code":"4510","name":"百色市","children":[{"code":"451002","name":"右江区"},{"code":"451003","name":"田阳区"},{"code":"451022","name":"田东县"},{"code":"451024","name":"德保县"},{"code":"451026","name":"那坡县"},{"code":"451027","name":"凌云县"},{"code":"451028","name":"乐业县"},{"code":"451029","name":"田林县"},{"code":"451030","name":"西林县"},{"code":"451031","name":"隆林各族自治县"},{"code":"451081","name":"靖西市"},{"code":"451082","name":"平果市"}]},{"code":"4511","name":"贺州市","children":[{"code":"451102","name":"八步区"},{"code":"451103","name":"平桂区"},{"code":"451121","name":"昭平县"},{"code":"451122","name":"钟山县"},{"code":"451123","name":"富川瑶族自治县"}]},{"code":"4512","name":"河池市","children":[{"code":"451202","name":"金城江区"},{"code":"451203","name":"宜州区"},{"code":"451221","name":"南丹县"},{"code":"451222","name":"天峨县"},{"code":"451223","name":"凤山县"},{"code":"451224","name":"东兰县"},{"code":"451225","name":"罗城仫佬族自治县"},{"code":"451226","name":"环江毛南族自治县"},{"code":"451227","name":"巴马瑶族自治县"},{"code":"451228","name":"都安瑶族自治县"},{"code":"451229","name":"大化瑶族自治县"}]},{"code":"4513","name":"来宾市","children":[{"code":"451302","name":"兴宾区"},{"code":"451321","name":"忻城县"},{"code":"451322","name":"象州县"},{"code":"451323","name":"武宣县"},{"code":"451324","name":"金秀瑶族自治县"},{"code":"451381","name":"合山市"}]},{"code":"4514","name":"崇左市","children":[{"code":"451402","name":"江州区"},{"code":"451421","name":"扶绥县"},{"code":"451422","name":"宁明县"},{"code":"451423","name":"龙州县"},{"code":"451424","name":"大新县"},{"code":"451425","name":"天等县"},{"code":"451481","name":"凭祥市"}]}]},{"code":"46","name":"海南省","children":[{"code":"4601","name":"海口市","children":[{"code":"460105","name":"秀英区"},{"code":"460106","name":"龙华区"},{"code":"460107","name":"琼山区"},{"code":"460108","name":"美兰区"}]},{"code":"4602","name":"三亚市","children":[{"code":"460202","name":"海棠区"},{"code":"460203","name":"吉阳区"},{"code":"460204","name":"天涯区"},{"code":"460205","name":"崖州区"}]},{"code":"4603","name":"三沙市","children":[{"code":"460321","name":"西沙群岛"},{"code":"460322","name":"南沙群岛"},{"code":"460323","name":"中沙群岛的岛礁及其海域"}]},{"code":"4604","name":"儋州市","children":[{"code":"460400100","name":"那大镇"},{"code":"460400101","name":"和庆镇"},{"code":"460400102","name":"南丰镇"},{"code":"460400103","name":"大成镇"},{"code":"460400104","name":"雅星镇"},{"code":"460400105","name":"兰洋镇"},{"code":"460400106","name":"光村镇"},{"code":"460400107","name":"木棠镇"},{"code":"460400108","name":"海头镇"},{"code":"460400109","name":"峨蔓镇"},{"code":"460400111","name":"王五镇"},{"code":"460400112","name":"白马井镇"},{"code":"460400113","name":"中和镇"},{"code":"460400114","name":"排浦镇"},{"code":"460400115","name":"东成镇"},{"code":"460400116","name":"新州镇"},{"code":"460400499","name":"洋浦经济开发区"},{"code":"460400500","name":"华南热作学院"}]},{"code":"4690","name":"省直辖县级行政区划","children":[{"code":"469001","name":"五指山市"},{"code":"469002","name":"琼海市"},{"code":"469005","name":"文昌市"},{"code":"469006","name":"万宁市"},{"code":"469007","name":"东方市"},{"code":"469021","name":"定安县"},{"code":"469022","name":"屯昌县"},{"code":"469023","name":"澄迈县"},{"code":"469024","name":"临高县"},{"code":"469025","name":"白沙黎族自治县"},{"code":"469026","name":"昌江黎族自治县"},{"code":"469027","name":"乐东黎族自治县"},{"code":"469028","name":"陵水黎族自治县"},{"code":"469029","name":"保亭黎族苗族自治县"},{"code":"469030","name":"琼中黎族苗族自治县"}]}]},{"code":"50","name":"重庆市","children":[{"code":"5001","name":"市辖区","children":[{"code":"500101","name":"万州区"},{"code":"500102","name":"涪陵区"},{"code":"500103","name":"渝中区"},{"code":"500104","name":"大渡口区"},{"code":"500105","name":"江北区"},{"code":"500106","name":"沙坪坝区"},{"code":"500107","name":"九龙坡区"},{"code":"500108","name":"南岸区"},{"code":"500109","name":"北碚区"},{"code":"500110","name":"綦江区"},{"code":"500111","name":"大足区"},{"code":"500112","name":"渝北区"},{"code":"500113","name":"巴南区"},{"code":"500114","name":"黔江区"},{"code":"500115","name":"长寿区"},{"code":"500116","name":"江津区"},{"code":"500117","name":"合川区"},{"code":"500118","name":"永川区"},{"code":"500119","name":"南川区"},{"code":"500120","name":"璧山区"},{"code":"500151","name":"铜梁区"},{"code":"500152","name":"潼南区"},{"code":"500153","name":"荣昌区"},{"code":"500154","name":"开州区"},{"code":"500155","name":"梁平区"},{"code":"500156","name":"武隆区"}]},{"code":"5002","name":"县","children":[{"code":"500229","name":"城口县"},{"code":"500230","name":"丰都县"},{"code":"500231","name":"垫江县"},{"code":"500233","name":"忠县"},{"code":"500235","name":"云阳县"},{"code":"500236","name":"奉节县"},{"code":"500237","name":"巫山县"},{"code":"500238","name":"巫溪县"},{"code":"500240","name":"石柱土家族自治县"},{"code":"500241","name":"秀山土家族苗族自治县"},{"code":"500242","name":"酉阳土家族苗族自治县"},{"code":"500243","name":"彭水苗族土家族自治县"}]}]},{"code":"51","name":"四川省","children":[{"code":"5101","name":"成都市","children":[{"code":"510104","name":"锦江区"},{"code":"510105","name":"青羊区"},{"code":"510106","name":"金牛区"},{"code":"510107","name":"武侯区"},{"code":"510108","name":"成华区"},{"code":"510112","name":"龙泉驿区"},{"code":"510113","name":"青白江区"},{"code":"510114","name":"新都区"},{"code":"510115","name":"温江区"},{"code":"510116","name":"双流区"},{"code":"510117","name":"郫都区"},{"code":"510118","name":"新津区"},{"code":"510121","name":"金堂县"},{"code":"510129","name":"大邑县"},{"code":"510131","name":"蒲江县"},{"code":"510181","name":"都江堰市"},{"code":"510182","name":"彭州市"},{"code":"510183","name":"邛崃市"},{"code":"510184","name":"崇州市"},{"code":"510185","name":"简阳市"}]},{"code":"5103","name":"自贡市","children":[{"code":"510302","name":"自流井区"},{"code":"510303","name":"贡井区"},{"code":"510304","name":"大安区"},{"code":"510311","name":"沿滩区"},{"code":"510321","name":"荣县"},{"code":"510322","name":"富顺县"}]},{"code":"5104","name":"攀枝花市","children":[{"code":"510402","name":"东区"},{"code":"510403","name":"西区"},{"code":"510411","name":"仁和区"},{"code":"510421","name":"米易县"},{"code":"510422","name":"盐边县"}]},{"code":"5105","name":"泸州市","children":[{"code":"510502","name":"江阳区"},{"code":"510503","name":"纳溪区"},{"code":"510504","name":"龙马潭区"},{"code":"510521","name":"泸县"},{"code":"510522","name":"合江县"},{"code":"510524","name":"叙永县"},{"code":"510525","name":"古蔺县"}]},{"code":"5106","name":"德阳市","children":[{"code":"510603","name":"旌阳区"},{"code":"510604","name":"罗江区"},{"code":"510623","name":"中江县"},{"code":"510681","name":"广汉市"},{"code":"510682","name":"什邡市"},{"code":"510683","name":"绵竹市"}]},{"code":"5107","name":"绵阳市","children":[{"code":"510703","name":"涪城区"},{"code":"510704","name":"游仙区"},{"code":"510705","name":"安州区"},{"code":"510722","name":"三台县"},{"code":"510723","name":"盐亭县"},{"code":"510725","name":"梓潼县"},{"code":"510726","name":"北川羌族自治县"},{"code":"510727","name":"平武县"},{"code":"510781","name":"江油市"}]},{"code":"5108","name":"广元市","children":[{"code":"510802","name":"利州区"},{"code":"510811","name":"昭化区"},{"code":"510812","name":"朝天区"},{"code":"510821","name":"旺苍县"},{"code":"510822","name":"青川县"},{"code":"510823","name":"剑阁县"},{"code":"510824","name":"苍溪县"}]},{"code":"5109","name":"遂宁市","children":[{"code":"510903","name":"船山区"},{"code":"510904","name":"安居区"},{"code":"510921","name":"蓬溪县"},{"code":"510923","name":"大英县"},{"code":"510981","name":"射洪市"}]},{"code":"5110","name":"内江市","children":[{"code":"511002","name":"市中区"},{"code":"511011","name":"东兴区"},{"code":"511024","name":"威远县"},{"code":"511025","name":"资中县"},{"code":"511071","name":"内江经济开发区"},{"code":"511083","name":"隆昌市"}]},{"code":"5111","name":"乐山市","children":[{"code":"511102","name":"市中区"},{"code":"511111","name":"沙湾区"},{"code":"511112","name":"五通桥区"},{"code":"511113","name":"金口河区"},{"code":"511123","name":"犍为县"},{"code":"511124","name":"井研县"},{"code":"511126","name":"夹江县"},{"code":"511129","name":"沐川县"},{"code":"511132","name":"峨边彝族自治县"},{"code":"511133","name":"马边彝族自治县"},{"code":"511181","name":"峨眉山市"}]},{"code":"5113","name":"南充市","children":[{"code":"511302","name":"顺庆区"},{"code":"511303","name":"高坪区"},{"code":"511304","name":"嘉陵区"},{"code":"511321","name":"南部县"},{"code":"511322","name":"营山县"},{"code":"511323","name":"蓬安县"},{"code":"511324","name":"仪陇县"},{"code":"511325","name":"西充县"},{"code":"511381","name":"阆中市"}]},{"code":"5114","name":"眉山市","children":[{"code":"511402","name":"东坡区"},{"code":"511403","name":"彭山区"},{"code":"511421","name":"仁寿县"},{"code":"511423","name":"洪雅县"},{"code":"511424","name":"丹棱县"},{"code":"511425","name":"青神县"}]},{"code":"5115","name":"宜宾市","children":[{"code":"511502","name":"翠屏区"},{"code":"511503","name":"南溪区"},{"code":"511504","name":"叙州区"},{"code":"511523","name":"江安县"},{"code":"511524","name":"长宁县"},{"code":"511525","name":"高县"},{"code":"511526","name":"珙县"},{"code":"511527","name":"筠连县"},{"code":"511528","name":"兴文县"},{"code":"511529","name":"屏山县"}]},{"code":"5116","name":"广安市","children":[{"code":"511602","name":"广安区"},{"code":"511603","name":"前锋区"},{"code":"511621","name":"岳池县"},{"code":"511622","name":"武胜县"},{"code":"511623","name":"邻水县"},{"code":"511681","name":"华蓥市"}]},{"code":"5117","name":"达州市","children":[{"code":"511702","name":"通川区"},{"code":"511703","name":"达川区"},{"code":"511722","name":"宣汉县"},{"code":"511723","name":"开江县"},{"code":"511724","name":"大竹县"},{"code":"511725","name":"渠县"},{"code":"511771","name":"达州经济开发区"},{"code":"511781","name":"万源市"}]},{"code":"5118","name":"雅安市","children":[{"code":"511802","name":"雨城区"},{"code":"511803","name":"名山区"},{"code":"511822","name":"荥经县"},{"code":"511823","name":"汉源县"},{"code":"511824","name":"石棉县"},{"code":"511825","name":"天全县"},{"code":"511826","name":"芦山县"},{"code":"511827","name":"宝兴县"}]},{"code":"5119","name":"巴中市","children":[{"code":"511902","name":"巴州区"},{"code":"511903","name":"恩阳区"},{"code":"511921","name":"通江县"},{"code":"511922","name":"南江县"},{"code":"511923","name":"平昌县"},{"code":"511971","name":"巴中经济开发区"}]},{"code":"5120","name":"资阳市","children":[{"code":"512002","name":"雁江区"},{"code":"512021","name":"安岳县"},{"code":"512022","name":"乐至县"}]},{"code":"5132","name":"阿坝藏族羌族自治州","children":[{"code":"513201","name":"马尔康市"},{"code":"513221","name":"汶川县"},{"code":"513222","name":"理县"},{"code":"513223","name":"茂县"},{"code":"513224","name":"松潘县"},{"code":"513225","name":"九寨沟县"},{"code":"513226","name":"金川县"},{"code":"513227","name":"小金县"},{"code":"513228","name":"黑水县"},{"code":"513230","name":"壤塘县"},{"code":"513231","name":"阿坝县"},{"code":"513232","name":"若尔盖县"},{"code":"513233","name":"红原县"}]},{"code":"5133","name":"甘孜藏族自治州","children":[{"code":"513301","name":"康定市"},{"code":"513322","name":"泸定县"},{"code":"513323","name":"丹巴县"},{"code":"513324","name":"九龙县"},{"code":"513325","name":"雅江县"},{"code":"513326","name":"道孚县"},{"code":"513327","name":"炉霍县"},{"code":"513328","name":"甘孜县"},{"code":"513329","name":"新龙县"},{"code":"513330","name":"德格县"},{"code":"513331","name":"白玉县"},{"code":"513332","name":"石渠县"},{"code":"513333","name":"色达县"},{"code":"513334","name":"理塘县"},{"code":"513335","name":"巴塘县"},{"code":"513336","name":"乡城县"},{"code":"513337","name":"稻城县"},{"code":"513338","name":"得荣县"}]},{"code":"5134","name":"凉山彝族自治州","children":[{"code":"513401","name":"西昌市"},{"code":"513422","name":"木里藏族自治县"},{"code":"513423","name":"盐源县"},{"code":"513424","name":"德昌县"},{"code":"513425","name":"会理县"},{"code":"513426","name":"会东县"},{"code":"513427","name":"宁南县"},{"code":"513428","name":"普格县"},{"code":"513429","name":"布拖县"},{"code":"513430","name":"金阳县"},{"code":"513431","name":"昭觉县"},{"code":"513432","name":"喜德县"},{"code":"513433","name":"冕宁县"},{"code":"513434","name":"越西县"},{"code":"513435","name":"甘洛县"},{"code":"513436","name":"美姑县"},{"code":"513437","name":"雷波县"}]}]},{"code":"52","name":"贵州省","children":[{"code":"5201","name":"贵阳市","children":[{"code":"520102","name":"南明区"},{"code":"520103","name":"云岩区"},{"code":"520111","name":"花溪区"},{"code":"520112","name":"乌当区"},{"code":"520113","name":"白云区"},{"code":"520115","name":"观山湖区"},{"code":"520121","name":"开阳县"},{"code":"520122","name":"息烽县"},{"code":"520123","name":"修文县"},{"code":"520181","name":"清镇市"}]},{"code":"5202","name":"六盘水市","children":[{"code":"520201","name":"钟山区"},{"code":"520203","name":"六枝特区"},{"code":"520221","name":"水城县"},{"code":"520281","name":"盘州市"}]},{"code":"5203","name":"遵义市","children":[{"code":"520302","name":"红花岗区"},{"code":"520303","name":"汇川区"},{"code":"520304","name":"播州区"},{"code":"520322","name":"桐梓县"},{"code":"520323","name":"绥阳县"},{"code":"520324","name":"正安县"},{"code":"520325","name":"道真仡佬族苗族自治县"},{"code":"520326","name":"务川仡佬族苗族自治县"},{"code":"520327","name":"凤冈县"},{"code":"520328","name":"湄潭县"},{"code":"520329","name":"余庆县"},{"code":"520330","name":"习水县"},{"code":"520381","name":"赤水市"},{"code":"520382","name":"仁怀市"}]},{"code":"5204","name":"安顺市","children":[{"code":"520402","name":"西秀区"},{"code":"520403","name":"平坝区"},{"code":"520422","name":"普定县"},{"code":"520423","name":"镇宁布依族苗族自治县"},{"code":"520424","name":"关岭布依族苗族自治县"},{"code":"520425","name":"紫云苗族布依族自治县"}]},{"code":"5205","name":"毕节市","children":[{"code":"520502","name":"七星关区"},{"code":"520521","name":"大方县"},{"code":"520522","name":"黔西县"},{"code":"520523","name":"金沙县"},{"code":"520524","name":"织金县"},{"code":"520525","name":"纳雍县"},{"code":"520526","name":"威宁彝族回族苗族自治县"},{"code":"520527","name":"赫章县"}]},{"code":"5206","name":"铜仁市","children":[{"code":"520602","name":"碧江区"},{"code":"520603","name":"万山区"},{"code":"520621","name":"江口县"},{"code":"520622","name":"玉屏侗族自治县"},{"code":"520623","name":"石阡县"},{"code":"520624","name":"思南县"},{"code":"520625","name":"印江土家族苗族自治县"},{"code":"520626","name":"德江县"},{"code":"520627","name":"沿河土家族自治县"},{"code":"520628","name":"松桃苗族自治县"}]},{"code":"5223","name":"黔西南布依族苗族自治州","children":[{"code":"522301","name":"兴义市"},{"code":"522302","name":"兴仁市"},{"code":"522323","name":"普安县"},{"code":"522324","name":"晴隆县"},{"code":"522325","name":"贞丰县"},{"code":"522326","name":"望谟县"},{"code":"522327","name":"册亨县"},{"code":"522328","name":"安龙县"}]},{"code":"5226","name":"黔东南苗族侗族自治州","children":[{"code":"522601","name":"凯里市"},{"code":"522622","name":"黄平县"},{"code":"522623","name":"施秉县"},{"code":"522624","name":"三穗县"},{"code":"522625","name":"镇远县"},{"code":"522626","name":"岑巩县"},{"code":"522627","name":"天柱县"},{"code":"522628","name":"锦屏县"},{"code":"522629","name":"剑河县"},{"code":"522630","name":"台江县"},{"code":"522631","name":"黎平县"},{"code":"522632","name":"榕江县"},{"code":"522633","name":"从江县"},{"code":"522634","name":"雷山县"},{"code":"522635","name":"麻江县"},{"code":"522636","name":"丹寨县"}]},{"code":"5227","name":"黔南布依族苗族自治州","children":[{"code":"522701","name":"都匀市"},{"code":"522702","name":"福泉市"},{"code":"522722","name":"荔波县"},{"code":"522723","name":"贵定县"},{"code":"522725","name":"瓮安县"},{"code":"522726","name":"独山县"},{"code":"522727","name":"平塘县"},{"code":"522728","name":"罗甸县"},{"code":"522729","name":"长顺县"},{"code":"522730","name":"龙里县"},{"code":"522731","name":"惠水县"},{"code":"522732","name":"三都水族自治县"}]}]},{"code":"53","name":"云南省","children":[{"code":"5301","name":"昆明市","children":[{"code":"530102","name":"五华区"},{"code":"530103","name":"盘龙区"},{"code":"530111","name":"官渡区"},{"code":"530112","name":"西山区"},{"code":"530113","name":"东川区"},{"code":"530114","name":"呈贡区"},{"code":"530115","name":"晋宁区"},{"code":"530124","name":"富民县"},{"code":"530125","name":"宜良县"},{"code":"530126","name":"石林彝族自治县"},{"code":"530127","name":"嵩明县"},{"code":"530128","name":"禄劝彝族苗族自治县"},{"code":"530129","name":"寻甸回族彝族自治县"},{"code":"530181","name":"安宁市"}]},{"code":"5303","name":"曲靖市","children":[{"code":"530302","name":"麒麟区"},{"code":"530303","name":"沾益区"},{"code":"530304","name":"马龙区"},{"code":"530322","name":"陆良县"},{"code":"530323","name":"师宗县"},{"code":"530324","name":"罗平县"},{"code":"530325","name":"富源县"},{"code":"530326","name":"会泽县"},{"code":"530381","name":"宣威市"}]},{"code":"5304","name":"玉溪市","children":[{"code":"530402","name":"红塔区"},{"code":"530403","name":"江川区"},{"code":"530423","name":"通海县"},{"code":"530424","name":"华宁县"},{"code":"530425","name":"易门县"},{"code":"530426","name":"峨山彝族自治县"},{"code":"530427","name":"新平彝族傣族自治县"},{"code":"530428","name":"元江哈尼族彝族傣族自治县"},{"code":"530481","name":"澄江市"}]},{"code":"5305","name":"保山市","children":[{"code":"530502","name":"隆阳区"},{"code":"530521","name":"施甸县"},{"code":"530523","name":"龙陵县"},{"code":"530524","name":"昌宁县"},{"code":"530581","name":"腾冲市"}]},{"code":"5306","name":"昭通市","children":[{"code":"530602","name":"昭阳区"},{"code":"530621","name":"鲁甸县"},{"code":"530622","name":"巧家县"},{"code":"530623","name":"盐津县"},{"code":"530624","name":"大关县"},{"code":"530625","name":"永善县"},{"code":"530626","name":"绥江县"},{"code":"530627","name":"镇雄县"},{"code":"530628","name":"彝良县"},{"code":"530629","name":"威信县"},{"code":"530681","name":"水富市"}]},{"code":"5307","name":"丽江市","children":[{"code":"530702","name":"古城区"},{"code":"530721","name":"玉龙纳西族自治县"},{"code":"530722","name":"永胜县"},{"code":"530723","name":"华坪县"},{"code":"530724","name":"宁蒗彝族自治县"}]},{"code":"5308","name":"普洱市","children":[{"code":"530802","name":"思茅区"},{"code":"530821","name":"宁洱哈尼族彝族自治县"},{"code":"530822","name":"墨江哈尼族自治县"},{"code":"530823","name":"景东彝族自治县"},{"code":"530824","name":"景谷傣族彝族自治县"},{"code":"530825","name":"镇沅彝族哈尼族拉祜族自治县"},{"code":"530826","name":"江城哈尼族彝族自治县"},{"code":"530827","name":"孟连傣族拉祜族佤族自治县"},{"code":"530828","name":"澜沧拉祜族自治县"},{"code":"530829","name":"西盟佤族自治县"}]},{"code":"5309","name":"临沧市","children":[{"code":"530902","name":"临翔区"},{"code":"530921","name":"凤庆县"},{"code":"530922","name":"云县"},{"code":"530923","name":"永德县"},{"code":"530924","name":"镇康县"},{"code":"530925","name":"双江拉祜族佤族布朗族傣族自治县"},{"code":"530926","name":"耿马傣族佤族自治县"},{"code":"530927","name":"沧源佤族自治县"}]},{"code":"5323","name":"楚雄彝族自治州","children":[{"code":"532301","name":"楚雄市"},{"code":"532322","name":"双柏县"},{"code":"532323","name":"牟定县"},{"code":"532324","name":"南华县"},{"code":"532325","name":"姚安县"},{"code":"532326","name":"大姚县"},{"code":"532327","name":"永仁县"},{"code":"532328","name":"元谋县"},{"code":"532329","name":"武定县"},{"code":"532331","name":"禄丰县"}]},{"code":"5325","name":"红河哈尼族彝族自治州","children":[{"code":"532501","name":"个旧市"},{"code":"532502","name":"开远市"},{"code":"532503","name":"蒙自市"},{"code":"532504","name":"弥勒市"},{"code":"532523","name":"屏边苗族自治县"},{"code":"532524","name":"建水县"},{"code":"532525","name":"石屏县"},{"code":"532527","name":"泸西县"},{"code":"532528","name":"元阳县"},{"code":"532529","name":"红河县"},{"code":"532530","name":"金平苗族瑶族傣族自治县"},{"code":"532531","name":"绿春县"},{"code":"532532","name":"河口瑶族自治县"}]},{"code":"5326","name":"文山壮族苗族自治州","children":[{"code":"532601","name":"文山市"},{"code":"532622","name":"砚山县"},{"code":"532623","name":"西畴县"},{"code":"532624","name":"麻栗坡县"},{"code":"532625","name":"马关县"},{"code":"532626","name":"丘北县"},{"code":"532627","name":"广南县"},{"code":"532628","name":"富宁县"}]},{"code":"5328","name":"西双版纳傣族自治州","children":[{"code":"532801","name":"景洪市"},{"code":"532822","name":"勐海县"},{"code":"532823","name":"勐腊县"}]},{"code":"5329","name":"大理白族自治州","children":[{"code":"532901","name":"大理市"},{"code":"532922","name":"漾濞彝族自治县"},{"code":"532923","name":"祥云县"},{"code":"532924","name":"宾川县"},{"code":"532925","name":"弥渡县"},{"code":"532926","name":"南涧彝族自治县"},{"code":"532927","name":"巍山彝族回族自治县"},{"code":"532928","name":"永平县"},{"code":"532929","name":"云龙县"},{"code":"532930","name":"洱源县"},{"code":"532931","name":"剑川县"},{"code":"532932","name":"鹤庆县"}]},{"code":"5331","name":"德宏傣族景颇族自治州","children":[{"code":"533102","name":"瑞丽市"},{"code":"533103","name":"芒市"},{"code":"533122","name":"梁河县"},{"code":"533123","name":"盈江县"},{"code":"533124","name":"陇川县"}]},{"code":"5333","name":"怒江傈僳族自治州","children":[{"code":"533301","name":"泸水市"},{"code":"533323","name":"福贡县"},{"code":"533324","name":"贡山独龙族怒族自治县"},{"code":"533325","name":"兰坪白族普米族自治县"}]},{"code":"5334","name":"迪庆藏族自治州","children":[{"code":"533401","name":"香格里拉市"},{"code":"533422","name":"德钦县"},{"code":"533423","name":"维西傈僳族自治县"}]}]},{"code":"54","name":"西藏自治区","children":[{"code":"5401","name":"拉萨市","children":[{"code":"540102","name":"城关区"},{"code":"540103","name":"堆龙德庆区"},{"code":"540104","name":"达孜区"},{"code":"540121","name":"林周县"},{"code":"540122","name":"当雄县"},{"code":"540123","name":"尼木县"},{"code":"540124","name":"曲水县"},{"code":"540127","name":"墨竹工卡县"},{"code":"540171","name":"格尔木藏青工业园区"},{"code":"540172","name":"拉萨经济技术开发区"},{"code":"540173","name":"西藏文化旅游创意园区"},{"code":"540174","name":"达孜工业园区"}]},{"code":"5402","name":"日喀则市","children":[{"code":"540202","name":"桑珠孜区"},{"code":"540221","name":"南木林县"},{"code":"540222","name":"江孜县"},{"code":"540223","name":"定日县"},{"code":"540224","name":"萨迦县"},{"code":"540225","name":"拉孜县"},{"code":"540226","name":"昂仁县"},{"code":"540227","name":"谢通门县"},{"code":"540228","name":"白朗县"},{"code":"540229","name":"仁布县"},{"code":"540230","name":"康马县"},{"code":"540231","name":"定结县"},{"code":"540232","name":"仲巴县"},{"code":"540233","name":"亚东县"},{"code":"540234","name":"吉隆县"},{"code":"540235","name":"聂拉木县"},{"code":"540236","name":"萨嘎县"},{"code":"540237","name":"岗巴县"}]},{"code":"5403","name":"昌都市","children":[{"code":"540302","name":"卡若区"},{"code":"540321","name":"江达县"},{"code":"540322","name":"贡觉县"},{"code":"540323","name":"类乌齐县"},{"code":"540324","name":"丁青县"},{"code":"540325","name":"察雅县"},{"code":"540326","name":"八宿县"},{"code":"540327","name":"左贡县"},{"code":"540328","name":"芒康县"},{"code":"540329","name":"洛隆县"},{"code":"540330","name":"边坝县"}]},{"code":"5404","name":"林芝市","children":[{"code":"540402","name":"巴宜区"},{"code":"540421","name":"工布江达县"},{"code":"540422","name":"米林县"},{"code":"540423","name":"墨脱县"},{"code":"540424","name":"波密县"},{"code":"540425","name":"察隅县"},{"code":"540426","name":"朗县"}]},{"code":"5405","name":"山南市","children":[{"code":"540502","name":"乃东区"},{"code":"540521","name":"扎囊县"},{"code":"540522","name":"贡嘎县"},{"code":"540523","name":"桑日县"},{"code":"540524","name":"琼结县"},{"code":"540525","name":"曲松县"},{"code":"540526","name":"措美县"},{"code":"540527","name":"洛扎县"},{"code":"540528","name":"加查县"},{"code":"540529","name":"隆子县"},{"code":"540530","name":"错那县"},{"code":"540531","name":"浪卡子县"}]},{"code":"5406","name":"那曲市","children":[{"code":"540602","name":"色尼区"},{"code":"540621","name":"嘉黎县"},{"code":"540622","name":"比如县"},{"code":"540623","name":"聂荣县"},{"code":"540624","name":"安多县"},{"code":"540625","name":"申扎县"},{"code":"540626","name":"索县"},{"code":"540627","name":"班戈县"},{"code":"540628","name":"巴青县"},{"code":"540629","name":"尼玛县"},{"code":"540630","name":"双湖县"}]},{"code":"5425","name":"阿里地区","children":[{"code":"542521","name":"普兰县"},{"code":"542522","name":"札达县"},{"code":"542523","name":"噶尔县"},{"code":"542524","name":"日土县"},{"code":"542525","name":"革吉县"},{"code":"542526","name":"改则县"},{"code":"542527","name":"措勤县"}]}]},{"code":"61","name":"陕西省","children":[{"code":"6101","name":"西安市","children":[{"code":"610102","name":"新城区"},{"code":"610103","name":"碑林区"},{"code":"610104","name":"莲湖区"},{"code":"610111","name":"灞桥区"},{"code":"610112","name":"未央区"},{"code":"610113","name":"雁塔区"},{"code":"610114","name":"阎良区"},{"code":"610115","name":"临潼区"},{"code":"610116","name":"长安区"},{"code":"610117","name":"高陵区"},{"code":"610118","name":"鄠邑区"},{"code":"610122","name":"蓝田县"},{"code":"610124","name":"周至县"}]},{"code":"6102","name":"铜川市","children":[{"code":"610202","name":"王益区"},{"code":"610203","name":"印台区"},{"code":"610204","name":"耀州区"},{"code":"610222","name":"宜君县"}]},{"code":"6103","name":"宝鸡市","children":[{"code":"610302","name":"渭滨区"},{"code":"610303","name":"金台区"},{"code":"610304","name":"陈仓区"},{"code":"610322","name":"凤翔县"},{"code":"610323","name":"岐山县"},{"code":"610324","name":"扶风县"},{"code":"610326","name":"眉县"},{"code":"610327","name":"陇县"},{"code":"610328","name":"千阳县"},{"code":"610329","name":"麟游县"},{"code":"610330","name":"凤县"},{"code":"610331","name":"太白县"}]},{"code":"6104","name":"咸阳市","children":[{"code":"610402","name":"秦都区"},{"code":"610403","name":"杨陵区"},{"code":"610404","name":"渭城区"},{"code":"610422","name":"三原县"},{"code":"610423","name":"泾阳县"},{"code":"610424","name":"乾县"},{"code":"610425","name":"礼泉县"},{"code":"610426","name":"永寿县"},{"code":"610428","name":"长武县"},{"code":"610429","name":"旬邑县"},{"code":"610430","name":"淳化县"},{"code":"610431","name":"武功县"},{"code":"610481","name":"兴平市"},{"code":"610482","name":"彬州市"}]},{"code":"6105","name":"渭南市","children":[{"code":"610502","name":"临渭区"},{"code":"610503","name":"华州区"},{"code":"610522","name":"潼关县"},{"code":"610523","name":"大荔县"},{"code":"610524","name":"合阳县"},{"code":"610525","name":"澄城县"},{"code":"610526","name":"蒲城县"},{"code":"610527","name":"白水县"},{"code":"610528","name":"富平县"},{"code":"610581","name":"韩城市"},{"code":"610582","name":"华阴市"}]},{"code":"6106","name":"延安市","children":[{"code":"610602","name":"宝塔区"},{"code":"610603","name":"安塞区"},{"code":"610621","name":"延长县"},{"code":"610622","name":"延川县"},{"code":"610625","name":"志丹县"},{"code":"610626","name":"吴起县"},{"code":"610627","name":"甘泉县"},{"code":"610628","name":"富县"},{"code":"610629","name":"洛川县"},{"code":"610630","name":"宜川县"},{"code":"610631","name":"黄龙县"},{"code":"610632","name":"黄陵县"},{"code":"610681","name":"子长市"}]},{"code":"6107","name":"汉中市","children":[{"code":"610702","name":"汉台区"},{"code":"610703","name":"南郑区"},{"code":"610722","name":"城固县"},{"code":"610723","name":"洋县"},{"code":"610724","name":"西乡县"},{"code":"610725","name":"勉县"},{"code":"610726","name":"宁强县"},{"code":"610727","name":"略阳县"},{"code":"610728","name":"镇巴县"},{"code":"610729","name":"留坝县"},{"code":"610730","name":"佛坪县"}]},{"code":"6108","name":"榆林市","children":[{"code":"610802","name":"榆阳区"},{"code":"610803","name":"横山区"},{"code":"610822","name":"府谷县"},{"code":"610824","name":"靖边县"},{"code":"610825","name":"定边县"},{"code":"610826","name":"绥德县"},{"code":"610827","name":"米脂县"},{"code":"610828","name":"佳县"},{"code":"610829","name":"吴堡县"},{"code":"610830","name":"清涧县"},{"code":"610831","name":"子洲县"},{"code":"610881","name":"神木市"}]},{"code":"6109","name":"安康市","children":[{"code":"610902","name":"汉滨区"},{"code":"610921","name":"汉阴县"},{"code":"610922","name":"石泉县"},{"code":"610923","name":"宁陕县"},{"code":"610924","name":"紫阳县"},{"code":"610925","name":"岚皋县"},{"code":"610926","name":"平利县"},{"code":"610927","name":"镇坪县"},{"code":"610928","name":"旬阳县"},{"code":"610929","name":"白河县"}]},{"code":"6110","name":"商洛市","children":[{"code":"611002","name":"商州区"},{"code":"611021","name":"洛南县"},{"code":"611022","name":"丹凤县"},{"code":"611023","name":"商南县"},{"code":"611024","name":"山阳县"},{"code":"611025","name":"镇安县"},{"code":"611026","name":"柞水县"}]}]},{"code":"62","name":"甘肃省","children":[{"code":"6201","name":"兰州市","children":[{"code":"620102","name":"城关区"},{"code":"620103","name":"七里河区"},{"code":"620104","name":"西固区"},{"code":"620105","name":"安宁区"},{"code":"620111","name":"红古区"},{"code":"620121","name":"永登县"},{"code":"620122","name":"皋兰县"},{"code":"620123","name":"榆中县"},{"code":"620171","name":"兰州新区"}]},{"code":"6202","name":"嘉峪关市","children":[{"code":"620201001","name":"雄关街道"},{"code":"620201002","name":"钢城街道"},{"code":"620201100","name":"新城镇"},{"code":"620201101","name":"峪泉镇"},{"code":"620201102","name":"文殊镇"}]},{"code":"6203","name":"金昌市","children":[{"code":"620302","name":"金川区"},{"code":"620321","name":"永昌县"}]},{"code":"6204","name":"白银市","children":[{"code":"620402","name":"白银区"},{"code":"620403","name":"平川区"},{"code":"620421","name":"靖远县"},{"code":"620422","name":"会宁县"},{"code":"620423","name":"景泰县"}]},{"code":"6205","name":"天水市","children":[{"code":"620502","name":"秦州区"},{"code":"620503","name":"麦积区"},{"code":"620521","name":"清水县"},{"code":"620522","name":"秦安县"},{"code":"620523","name":"甘谷县"},{"code":"620524","name":"武山县"},{"code":"620525","name":"张家川回族自治县"}]},{"code":"6206","name":"武威市","children":[{"code":"620602","name":"凉州区"},{"code":"620621","name":"民勤县"},{"code":"620622","name":"古浪县"},{"code":"620623","name":"天祝藏族自治县"}]},{"code":"6207","name":"张掖市","children":[{"code":"620702","name":"甘州区"},{"code":"620721","name":"肃南裕固族自治县"},{"code":"620722","name":"民乐县"},{"code":"620723","name":"临泽县"},{"code":"620724","name":"高台县"},{"code":"620725","name":"山丹县"}]},{"code":"6208","name":"平凉市","children":[{"code":"620802","name":"崆峒区"},{"code":"620821","name":"泾川县"},{"code":"620822","name":"灵台县"},{"code":"620823","name":"崇信县"},{"code":"620825","name":"庄浪县"},{"code":"620826","name":"静宁县"},{"code":"620881","name":"华亭市"}]},{"code":"6209","name":"酒泉市","children":[{"code":"620902","name":"肃州区"},{"code":"620921","name":"金塔县"},{"code":"620922","name":"瓜州县"},{"code":"620923","name":"肃北蒙古族自治县"},{"code":"620924","name":"阿克塞哈萨克族自治县"},{"code":"620981","name":"玉门市"},{"code":"620982","name":"敦煌市"}]},{"code":"6210","name":"庆阳市","children":[{"code":"621002","name":"西峰区"},{"code":"621021","name":"庆城县"},{"code":"621022","name":"环县"},{"code":"621023","name":"华池县"},{"code":"621024","name":"合水县"},{"code":"621025","name":"正宁县"},{"code":"621026","name":"宁县"},{"code":"621027","name":"镇原县"}]},{"code":"6211","name":"定西市","children":[{"code":"621102","name":"安定区"},{"code":"621121","name":"通渭县"},{"code":"621122","name":"陇西县"},{"code":"621123","name":"渭源县"},{"code":"621124","name":"临洮县"},{"code":"621125","name":"漳县"},{"code":"621126","name":"岷县"}]},{"code":"6212","name":"陇南市","children":[{"code":"621202","name":"武都区"},{"code":"621221","name":"成县"},{"code":"621222","name":"文县"},{"code":"621223","name":"宕昌县"},{"code":"621224","name":"康县"},{"code":"621225","name":"西和县"},{"code":"621226","name":"礼县"},{"code":"621227","name":"徽县"},{"code":"621228","name":"两当县"}]},{"code":"6229","name":"临夏回族自治州","children":[{"code":"622901","name":"临夏市"},{"code":"622921","name":"临夏县"},{"code":"622922","name":"康乐县"},{"code":"622923","name":"永靖县"},{"code":"622924","name":"广河县"},{"code":"622925","name":"和政县"},{"code":"622926","name":"东乡族自治县"},{"code":"622927","name":"积石山保安族东乡族撒拉族自治县"}]},{"code":"6230","name":"甘南藏族自治州","children":[{"code":"623001","name":"合作市"},{"code":"623021","name":"临潭县"},{"code":"623022","name":"卓尼县"},{"code":"623023","name":"舟曲县"},{"code":"623024","name":"迭部县"},{"code":"623025","name":"玛曲县"},{"code":"623026","name":"碌曲县"},{"code":"623027","name":"夏河县"}]}]},{"code":"63","name":"青海省","children":[{"code":"6301","name":"西宁市","children":[{"code":"630102","name":"城东区"},{"code":"630103","name":"城中区"},{"code":"630104","name":"城西区"},{"code":"630105","name":"城北区"},{"code":"630106","name":"湟中区"},{"code":"630121","name":"大通回族土族自治县"},{"code":"630123","name":"湟源县"}]},{"code":"6302","name":"海东市","children":[{"code":"630202","name":"乐都区"},{"code":"630203","name":"平安区"},{"code":"630222","name":"民和回族土族自治县"},{"code":"630223","name":"互助土族自治县"},{"code":"630224","name":"化隆回族自治县"},{"code":"630225","name":"循化撒拉族自治县"}]},{"code":"6322","name":"海北藏族自治州","children":[{"code":"632221","name":"门源回族自治县"},{"code":"632222","name":"祁连县"},{"code":"632223","name":"海晏县"},{"code":"632224","name":"刚察县"}]},{"code":"6323","name":"黄南藏族自治州","children":[{"code":"632321","name":"同仁县"},{"code":"632322","name":"尖扎县"},{"code":"632323","name":"泽库县"},{"code":"632324","name":"河南蒙古族自治县"}]},{"code":"6325","name":"海南藏族自治州","children":[{"code":"632521","name":"共和县"},{"code":"632522","name":"同德县"},{"code":"632523","name":"贵德县"},{"code":"632524","name":"兴海县"},{"code":"632525","name":"贵南县"}]},{"code":"6326","name":"果洛藏族自治州","children":[{"code":"632621","name":"玛沁县"},{"code":"632622","name":"班玛县"},{"code":"632623","name":"甘德县"},{"code":"632624","name":"达日县"},{"code":"632625","name":"久治县"},{"code":"632626","name":"玛多县"}]},{"code":"6327","name":"玉树藏族自治州","children":[{"code":"632701","name":"玉树市"},{"code":"632722","name":"杂多县"},{"code":"632723","name":"称多县"},{"code":"632724","name":"治多县"},{"code":"632725","name":"囊谦县"},{"code":"632726","name":"曲麻莱县"}]},{"code":"6328","name":"海西蒙古族藏族自治州","children":[{"code":"632801","name":"格尔木市"},{"code":"632802","name":"德令哈市"},{"code":"632803","name":"茫崖市"},{"code":"632821","name":"乌兰县"},{"code":"632822","name":"都兰县"},{"code":"632823","name":"天峻县"},{"code":"632857","name":"大柴旦行政委员会"}]}]},{"code":"64","name":"宁夏回族自治区","children":[{"code":"6401","name":"银川市","children":[{"code":"640104","name":"兴庆区"},{"code":"640105","name":"西夏区"},{"code":"640106","name":"金凤区"},{"code":"640121","name":"永宁县"},{"code":"640122","name":"贺兰县"},{"code":"640181","name":"灵武市"}]},{"code":"6402","name":"石嘴山市","children":[{"code":"640202","name":"大武口区"},{"code":"640205","name":"惠农区"},{"code":"640221","name":"平罗县"}]},{"code":"6403","name":"吴忠市","children":[{"code":"640302","name":"利通区"},{"code":"640303","name":"红寺堡区"},{"code":"640323","name":"盐池县"},{"code":"640324","name":"同心县"},{"code":"640381","name":"青铜峡市"}]},{"code":"6404","name":"固原市","children":[{"code":"640402","name":"原州区"},{"code":"640422","name":"西吉县"},{"code":"640423","name":"隆德县"},{"code":"640424","name":"泾源县"},{"code":"640425","name":"彭阳县"}]},{"code":"6405","name":"中卫市","children":[{"code":"640502","name":"沙坡头区"},{"code":"640521","name":"中宁县"},{"code":"640522","name":"海原县"}]}]},{"code":"65","name":"新疆维吾尔自治区","children":[{"code":"6501","name":"乌鲁木齐市","children":[{"code":"650102","name":"天山区"},{"code":"650103","name":"沙依巴克区"},{"code":"650104","name":"新市区"},{"code":"650105","name":"水磨沟区"},{"code":"650106","name":"头屯河区"},{"code":"650107","name":"达坂城区"},{"code":"650109","name":"米东区"},{"code":"650121","name":"乌鲁木齐县"}]},{"code":"6502","name":"克拉玛依市","children":[{"code":"650202","name":"独山子区"},{"code":"650203","name":"克拉玛依区"},{"code":"650204","name":"白碱滩区"},{"code":"650205","name":"乌尔禾区"}]},{"code":"6504","name":"吐鲁番市","children":[{"code":"650402","name":"高昌区"},{"code":"650421","name":"鄯善县"},{"code":"650422","name":"托克逊县"}]},{"code":"6505","name":"哈密市","children":[{"code":"650502","name":"伊州区"},{"code":"650521","name":"巴里坤哈萨克自治县"},{"code":"650522","name":"伊吾县"}]},{"code":"6523","name":"昌吉回族自治州","children":[{"code":"652301","name":"昌吉市"},{"code":"652302","name":"阜康市"},{"code":"652323","name":"呼图壁县"},{"code":"652324","name":"玛纳斯县"},{"code":"652325","name":"奇台县"},{"code":"652327","name":"吉木萨尔县"},{"code":"652328","name":"木垒哈萨克自治县"}]},{"code":"6527","name":"博尔塔拉蒙古自治州","children":[{"code":"652701","name":"博乐市"},{"code":"652702","name":"阿拉山口市"},{"code":"652722","name":"精河县"},{"code":"652723","name":"温泉县"}]},{"code":"6528","name":"巴音郭楞蒙古自治州","children":[{"code":"652801","name":"库尔勒市"},{"code":"652822","name":"轮台县"},{"code":"652823","name":"尉犁县"},{"code":"652824","name":"若羌县"},{"code":"652825","name":"且末县"},{"code":"652826","name":"焉耆回族自治县"},{"code":"652827","name":"和静县"},{"code":"652828","name":"和硕县"},{"code":"652829","name":"博湖县"},{"code":"652871","name":"库尔勒经济技术开发区"}]},{"code":"6529","name":"阿克苏地区","children":[{"code":"652901","name":"阿克苏市"},{"code":"652902","name":"库车市"},{"code":"652922","name":"温宿县"},{"code":"652924","name":"沙雅县"},{"code":"652925","name":"新和县"},{"code":"652926","name":"拜城县"},{"code":"652927","name":"乌什县"},{"code":"652928","name":"阿瓦提县"},{"code":"652929","name":"柯坪县"}]},{"code":"6530","name":"克孜勒苏柯尔克孜自治州","children":[{"code":"653001","name":"阿图什市"},{"code":"653022","name":"阿克陶县"},{"code":"653023","name":"阿合奇县"},{"code":"653024","name":"乌恰县"}]},{"code":"6531","name":"喀什地区","children":[{"code":"653101","name":"喀什市"},{"code":"653121","name":"疏附县"},{"code":"653122","name":"疏勒县"},{"code":"653123","name":"英吉沙县"},{"code":"653124","name":"泽普县"},{"code":"653125","name":"莎车县"},{"code":"653126","name":"叶城县"},{"code":"653127","name":"麦盖提县"},{"code":"653128","name":"岳普湖县"},{"code":"653129","name":"伽师县"},{"code":"653130","name":"巴楚县"},{"code":"653131","name":"塔什库尔干塔吉克自治县"}]},{"code":"6532","name":"和田地区","children":[{"code":"653201","name":"和田市"},{"code":"653221","name":"和田县"},{"code":"653222","name":"墨玉县"},{"code":"653223","name":"皮山县"},{"code":"653224","name":"洛浦县"},{"code":"653225","name":"策勒县"},{"code":"653226","name":"于田县"},{"code":"653227","name":"民丰县"}]},{"code":"6540","name":"伊犁哈萨克自治州","children":[{"code":"654002","name":"伊宁市"},{"code":"654003","name":"奎屯市"},{"code":"654004","name":"霍尔果斯市"},{"code":"654021","name":"伊宁县"},{"code":"654022","name":"察布查尔锡伯自治县"},{"code":"654023","name":"霍城县"},{"code":"654024","name":"巩留县"},{"code":"654025","name":"新源县"},{"code":"654026","name":"昭苏县"},{"code":"654027","name":"特克斯县"},{"code":"654028","name":"尼勒克县"}]},{"code":"6542","name":"塔城地区","children":[{"code":"654201","name":"塔城市"},{"code":"654202","name":"乌苏市"},{"code":"654221","name":"额敏县"},{"code":"654223","name":"沙湾县"},{"code":"654224","name":"托里县"},{"code":"654225","name":"裕民县"},{"code":"654226","name":"和布克赛尔蒙古自治县"}]},{"code":"6543","name":"阿勒泰地区","children":[{"code":"654301","name":"阿勒泰市"},{"code":"654321","name":"布尔津县"},{"code":"654322","name":"富蕴县"},{"code":"654323","name":"福海县"},{"code":"654324","name":"哈巴河县"},{"code":"654325","name":"青河县"},{"code":"654326","name":"吉木乃县"}]},{"code":"6590","name":"自治区直辖县级行政区划","children":[{"code":"659001","name":"石河子市"},{"code":"659002","name":"阿拉尔市"},{"code":"659003","name":"图木舒克市"},{"code":"659004","name":"五家渠市"},{"code":"659005","name":"北屯市"},{"code":"659006","name":"铁门关市"},{"code":"659007","name":"双河市"},{"code":"659008","name":"可克达拉市"},{"code":"659009","name":"昆玉市"},{"code":"659010","name":"胡杨河市"}]}]}] \ No newline at end of file diff --git a/src/router/backEnd.ts b/src/router/backEnd.ts new file mode 100644 index 0000000..a921432 --- /dev/null +++ b/src/router/backEnd.ts @@ -0,0 +1,309 @@ +import { store } from '/@/store/index.ts'; +import { Session } from '/@/utils/storage'; +import { NextLoading } from '/@/utils/loading'; +import { setFilterMenuAndCacheTagsViewRoutes, formatTwoStageRoutes, formatFlatteningRoutes } from '/@/router/index'; +import router from '/@/router/index'; +import { dynamicRoutes, notFoundAndNoPower } from '/@/router/route'; +import { listResources } from '/@/api/menu/index'; +import { i18n } from '/@/i18n/index'; + +const layouModules: any = import.meta.glob('../layout/routerView/*.{vue,tsx}'); +const viewsModules: any = import.meta.glob('../views/**/*.{vue,tsx}'); +/** + * 获取目录下的 .vue、.tsx 全部文件 + * @method import.meta.glob + * @link 参考:https://cn.vitejs.dev/guide/features.html#json + */ +const dynamicViewsModules: Record = Object.assign({}, { ...layouModules }, { ...viewsModules }); + +/** + * 后端控制路由:初始化方法,防止刷新时路由丢失 + * @method NextLoading 界面 loading 动画开始执行 + * @method store.dispatch('userInfos/setUserInfos') 触发初始化用户信息 + * @method store.dispatch('requestOldRoutes/setBackEndControlRoutes') 存储接口原始路由(未处理component),根据需求选择使用 + * @method setAddRoute 添加动态路由 + * @method setFilterMenuAndCacheTagsViewRoutes 设置递归过滤有权限的路由到 vuex routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组 + */ +export async function initBackEndControlRoutes() { + console.log('路由前值起') + // 界面 loading 动画开始执行 + if (window.nextLoading === undefined) NextLoading.start(); + // 无 token 停止执行下一步 + if (!Session.get('token')) return false; + // 触发初始化用户信息 + await store.dispatch('userInfos/setUserInfos'); + // 获取路由菜单数据 + console.log('--------------') + const res = await getBackEndControlRoutes(); + // 存储接口原始路由(未处理component),根据需求选择使用 + store.dispatch('requestOldRoutes/setBackEndControlRoutes', JSON.parse(JSON.stringify(res.data))); + // 处理路由(component),替换 dynamicRoutes(/@/router/route)第一个顶级 children 的路由 + dynamicRoutes[0].children = await backEndComponent(res.data); + // 添加动态路由 + await setAddRoute(); + // 设置递归过滤有权限的路由到 vuex routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组 + setFilterMenuAndCacheTagsViewRoutes(); +} + +/** + * 添加动态路由 + * @method router.addRoute + * @description 此处循环为 dynamicRoutes(/@/router/route)第一个顶级 children 的路由一维数组,非多级嵌套 + * @link 参考:https://next.router.vuejs.org/zh/api/#addroute + */ +export async function setAddRoute() { + await setFilterRouteEnd().forEach((route: any) => { + router.addRoute(route); + }); +} + + +/** + * 处理路由格式及添加捕获所有路由或 404 Not found 路由 + * @description 替换 dynamicRoutes(/@/router/route)第一个顶级 children 的路由 + * @returns 返回替换后的路由数组 + */ +export function setFilterRouteEnd() { + let filterRouteEnd: any = formatTwoStageRoutes(formatFlatteningRoutes(dynamicRoutes)); + // notFoundAndNoPower 防止 404、401 不在 layout 布局中,不设置的话,404、401 界面将全屏显示 + // 关联问题 No match found for location with path 'xxx' + filterRouteEnd[0].children = [...filterRouteEnd[0].children, ...notFoundAndNoPower]; + return filterRouteEnd; +} + +/** + * 请求后端路由菜单接口 + * @description isRequestRoutes 为 true,则开启后端控制路由 + * @returns 返回后端路由菜单数据 + */ +export function getBackEndControlRoutes() {backEndComponent + // 模拟 admin 与 test + console.log(store.state.userInfos,'看看我的xuex用户信息') + const auth = store.state.userInfos.userInfos.roles?.length ?( store.state.userInfos.userInfos.roles[0]) : []; + // 管理员 admin + if (auth === 'admin') return listResources(); + // 其它用户 test + else return listResources(); +} + +/** + * 重新请求后端路由菜单接口 + * @description 用于菜单管理界面刷新菜单(未进行测试) + * @description 路径:/src/views/system/menu/component/addMenu.vue + */ +export function setBackEndControlRefreshRoutes() { + initBackEndControlRoutes() + +} + +/** + * 后端路由 component 转换 + * @param routes 后端返回的路由表数组 + * @returns 返回处理成函数后的 component + */ +export function backEndComponent(routes: any) { + if (!routes) return; + const list=[]; + if (store.state.userInfos.userInfos.roles?.length) { + if(store.state.userInfos.userInfos.roles.findIndex(ro=>ro==='admin')>=0){ + routes.forEach(el => { + const mo={ + id:el.mainResource.id, + resourceLevel:1, + code:el.mainResource.code, + path: el.mainResource.resourcePath, + resourceSortOrder:el.mainResource.resourceSortOrder, + name: el.mainResource.resourceName, + title:i18n.global.t(el.mainResource.resourceMetaTitle), + resourceComponent:el.mainResource.resourceComponent, + redirect:el.mainResource.resourceRedirect, + component:dynamicImport(dynamicViewsModules, el.mainResource.resourceComponent as string), + meta: { + // cache: false, + title: el.mainResource.resourceMetaTitle, + isLink: '', + isHide: el.mainResource.resourceMetaIshide===0? false:true, + isKeepAlive: el.mainResource.resourceMetaIskeepalive===0? false:true, + isAffix: el.mainResource.resourceMetaIsaffix===0? false:true, + isIframe: el.mainResource.resourceMetaIslframe===0? false:true, + icon: el.mainResource.resourceMetaIcon, + }, + children:[] + } + if(el.subResources.length>0){ + el.subResources.forEach(e => { + let mu={ + id:e.subResource.id, + resourceLevel:2, + code:e.subResource.code, + path: e.subResource.resourcePath, + resourceSortOrder:e.subResource.resourceSortOrder, + name: e.subResource.resourceName, + title:i18n.global.t(e.subResource.resourceMetaTitle), + resourceComponent:e.subResource.resourceComponent, + component:dynamicImport(dynamicViewsModules, e.subResource.resourceComponent as string), + meta: { + // cache: false, + title: e.subResource.resourceMetaTitle, + isLink: '', + isHide: e.subResource.resourceMetaIshide===0? false:true, + isKeepAlive: e.subResource.resourceMetaIskeepaliv===0? false:true, + isAffix: e.subResource.resourceMetaIsaffix===0? false:true, + isIframe: e.subResource.resourceMetaIslframe===0? false:true, + icon: e.subResource.resourceMetaIcon, + }, + children:[] + } + if(e.sub2Resources.length>0){ + e.sub2Resources.forEach(su => { + mu.children.push({ + id:su.id, + resourceLevel:3, + code:su.code, + path: su.resourcePath, + resourceSortOrder:su.resourceSortOrder, + name: su.resourceName, + title:i18n.global.t(su.resourceMetaTitle), + resourceComponent:su.resourceComponent, + component:dynamicImport(dynamicViewsModules, su.resourceComponent as string), + meta: { + // cache: false, + title: su.resourceMetaTitle, + isLink: '', + isHide: su.resourceMetaIshide===0? false:true, + isKeepAlive: su.resourceMetaIskeepaliv===0? false:true, + isAffix: su.resourceMetaIsaffix===0? false:true, + isIframe: su.resourceMetaIslframe===0? false:true, + icon: su.resourceMetaIcon, + } + }) + }); + } + mo.children.push(mu) + }); + } + list.push(mo) + }); + } + else{ + routes.forEach((el,index) => { + if(store.state.userInfos.userInfos.meuns.findIndex(m=>m.resourceCode===el.mainResource.code)===-1){ + return + } + const m1=store.state.userInfos.userInfos.meuns[store.state.userInfos.userInfos.meuns.findIndex(m=>m.resourceCode===el.mainResource.code)] + const mo={ + id:el.mainResource.id, + resourceLevel:1, + code:el.mainResource.code, + path: el.mainResource.resourcePath, + resourceSortOrder:el.mainResource.resourceSortOrder, + name: el.mainResource.resourceName, + title:i18n.global.t(el.mainResource.resourceMetaTitle), + resourceComponent:el.mainResource.resourceComponent, + redirect:el.mainResource.resourceRedirect, + component:dynamicImport(dynamicViewsModules, el.mainResource.resourceComponent as string), + meta: { + grantPrivilege:m1.grantPrivilege, + cache: false, + title: el.mainResource.resourceMetaTitle, + isLink: '', + isHide: el.mainResource.resourceMetaIshide===0? false:true, + isKeepAlive: el.mainResource.resourceMetaIskeepalive===0? false:true, + isAffix: el.mainResource.resourceMetaIsaffix===0? false:true, + isIframe: el.mainResource.resourceMetaIslframe===0? false:true, + icon: el.mainResource.resourceMetaIcon, + }, + children:[] + } + if(el.subResources.length>0){ + + el.subResources.forEach((e,i) => { + if(store.state.userInfos.userInfos.meuns.findIndex(m=>m.resourceCode===e.subResource.code)===-1){ + return + } + const m2=store.state.userInfos.userInfos.meuns[store.state.userInfos.userInfos.meuns.findIndex(m=>m.resourceCode===e.subResource.code)] + let mu={ + id:e.subResource.id, + resourceLevel:2, + code:e.subResource.code, + path: e.subResource.resourcePath, + resourceSortOrder:e.subResource.resourceSortOrder, + name: e.subResource.resourceName, + title:i18n.global.t(e.subResource.resourceMetaTitle), + resourceComponent:e.subResource.resourceComponent, + component:dynamicImport(dynamicViewsModules, e.subResource.resourceComponent as string), + meta: { + grantPrivilege:m2.grantPrivilege, + cache: false, + title: e.subResource.resourceMetaTitle, + isLink: '', + isHide: e.subResource.resourceMetaIshide===0? false:true, + isKeepAlive: e.subResource.resourceMetaIskeepaliv===0? false:true, + isAffix: e.subResource.resourceMetaIsaffix===0? false:true, + isIframe: e.subResource.resourceMetaIslframe===0? false:true, + icon: e.subResource.resourceMetaIcon, + }, + children:[] + } + if(e.sub2Resources.length>0){ + e.sub2Resources.forEach(su => { + if(store.state.userInfos.userInfos.meuns.findIndex(m=>m.resourceCode===su.code)===-1){ + return + } + const m3=store.state.userInfos.userInfos.meuns[store.state.userInfos.userInfos.meuns.findIndex(m=>m.resourceCode===su.code)] + mu.children.push({ + id:su.id, + resourceLevel:3, + code:su.code, + path: su.resourcePath, + resourceSortOrder:su.resourceSortOrder, + name: su.resourceName, + title:i18n.global.t(su.resourceMetaTitle), + resourceComponent:su.resourceComponent, + component:dynamicImport(dynamicViewsModules, su.resourceComponent as string), + meta: { + grantPrivilege:m3.grantPrivilege, + cache: false, + title: su.resourceMetaTitle, + isLink: '', + isHide: su.resourceMetaIshide===0? false:true, + isKeepAlive: su.resourceMetaIskeepaliv===0? false:true, + isAffix: su.resourceMetaIsaffix===0? false:true, + isIframe: su.resourceMetaIslframe===0? false:true, + icon: su.resourceMetaIcon, + } + }) + }); + } + mo.children.push(mu) + }); + } + list.push(mo) + }); + } + } + + // return mm + return list; +} + +/** + * 后端路由 component 转换函数 + * @param dynamicViewsModules 获取目录下的 .vue、.tsx 全部文件 + * @param component 当前要处理项 component + * @returns 返回处理成函数后的 component + */ +export function dynamicImport(dynamicViewsModules: Record, component: string) { + const keys = Object.keys(dynamicViewsModules); + const matchKeys = keys.filter((key) => { + const k = key.replace(/..\/views|../, ''); + return k.startsWith(`${component}`) || k.startsWith(`/${component}`); + }); + if (matchKeys?.length === 1) { + const matchKey = matchKeys[0]; + return dynamicViewsModules[matchKey]; + } + if (matchKeys?.length > 1) { + return false; + } +} diff --git a/src/router/frontEnd.ts b/src/router/frontEnd.ts new file mode 100644 index 0000000..d7bc338 --- /dev/null +++ b/src/router/frontEnd.ts @@ -0,0 +1,24 @@ +import { store } from '/@/store/index'; +import { Session } from '/@/utils/storage'; +import { NextLoading } from '/@/utils/loading'; +import { setAddRoute, setFilterMenuAndCacheTagsViewRoutes } from '/@/router/index'; + +/** + * 前端控制路由:初始化方法,防止刷新时路由丢失 + * @method NextLoading 界面 loading 动画开始执行 + * @method store.dispatch('userInfos/setUserInfos') 触发初始化用户信息 + * @method setAddRoute 添加动态路由 + * @method setFilterMenuAndCacheTagsViewRoutes 设置递归过滤有权限的路由到 vuex routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组 + */ +export async function initFrontEndControlRoutes() { + // 界面 loading 动画开始执行 + if (window.nextLoading === undefined) NextLoading.start(); + // 无 token 停止执行下一步 + if (!Session.get('token')) return false; + // 触发初始化用户信息 + store.dispatch('userInfos/setUserInfos'); + // 添加动态路由 + await setAddRoute(); + // 设置递归过滤有权限的路由到 vuex routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组 + setFilterMenuAndCacheTagsViewRoutes(); +} diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..4557b7d --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,262 @@ +import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'; +import NProgress from 'nprogress'; +import 'nprogress/nprogress.css'; +import { store } from '/@/store/index.ts'; +import { Session } from '/@/utils/storage'; +import { NextLoading } from '/@/utils/loading'; +import { staticRoutes, dynamicRoutes } from '/@/router/route'; +import { initFrontEndControlRoutes } from '/@/router/frontEnd'; +import { initBackEndControlRoutes } from '/@/router/backEnd'; + +/** + * 创建一个可以被 Vue 应用程序使用的路由实例 + * @method createRouter(options: RouterOptions): Router + * @link 参考:https://next.router.vuejs.org/zh/api/#createrouter + */ + +const router = createRouter({ + history: createWebHashHistory(), + routes: staticRoutes, +}); + +/** + * 定义404界面 + * @link 参考:https://next.router.vuejs.org/zh/guide/essentials/history-mode.html#netlify + */ +const pathMatch = { + path: '/:path(.*)*', + redirect: '/404', +}; + +/** + * 路由多级嵌套数组处理成一维数组 + * @param arr 传入路由菜单数据数组 + * @returns 返回处理后的一维路由菜单数组 + */ +export function formatFlatteningRoutes(arr: any) { + if (arr.length <= 0) return false; + for (let i = 0; i < arr.length; i++) { + if (arr[i].children) { + arr = arr.slice(0, i + 1).concat(arr[i].children, arr.slice(i + 1)); + } + } + return arr; +} + +/** + * 一维数组处理成多级嵌套数组(只保留二级:也就是二级以上全部处理成只有二级,keep-alive 支持二级缓存) + * @description isKeepAlive 处理 `name` 值,进行缓存。顶级关闭,全部不缓存 + * @link 参考:https://v3.cn.vuejs.org/api/built-in-components.html#keep-alive + * @param arr 处理后的一维路由菜单数组 + * @returns 返回将一维数组重新处理成 `定义动态路由(dynamicRoutes)` 的格式 + */ +export function formatTwoStageRoutes(arr: any) { + if (arr.length <= 0) return false; + const newArr: any = []; + const cacheList: Array = []; + arr.forEach((v: any) => { + if (v.path === '/') { + newArr.push({ component: v.component, name: v.name, path: v.path, redirect: v.redirect, meta: v.meta, children: [] }); + } else { + // 判断是否是动态路由(xx/:id/:name),用于 tagsView 等中使用 + // 修复:https://gitee.com/lyt-top/vue-next-admin/issues/I3YX6G + if (v.path.indexOf('/:') > -1) { + v.meta['isDynamic'] = true; + v.meta['isDynamicPath'] = v.path; + } + newArr[0].children.push({ ...v }); + // 存 name 值,keep-alive 中 include 使用,实现路由的缓存 + // 路径:/@/layout/routerView/parent.vue + if (newArr[0].meta.isKeepAlive && v.meta.isKeepAlive) { + cacheList.push(v.name); + store.dispatch('keepAliveNames/setCacheKeepAlive', cacheList); + } + } + }); + return newArr; +} + +/** + * 缓存多级嵌套数组处理后的一维数组 + * @description 用于 tagsView、菜单搜索中:未过滤隐藏的(isHide) + */ +export function setCacheTagsViewRoutes() { + // 获取有权限的路由,否则 tagsView、菜单搜索中无权限的路由也将显示 + let rolesRoutes = setFilterHasRolesMenu(dynamicRoutes, store.state.userInfos.userInfos.roles); + // 添加到 vuex setTagsViewRoutes 中 + store.dispatch('tagsViewRoutes/setTagsViewRoutes', formatTwoStageRoutes(formatFlatteningRoutes(rolesRoutes))[0].children); +} + +/** + * 判断路由 `meta.roles` 中是否包含当前登录用户权限字段 + * @param roles 用户权限标识,在 userInfos(用户信息)的 roles(登录页登录时缓存到浏览器)数组 + * @param route 当前循环时的路由项 + * @returns 返回对比后有权限的路由项 + */ +export function hasRoles(roles: any, route: any) { + if (route.meta && route.meta.roles) return roles.some((role: any) => route.meta.roles.includes(role)); + else return true; +} + +/** + * 获取当前用户权限标识去比对路由表,设置递归过滤有权限的路由 + * @param routes 当前路由 children + * @param roles 用户权限标识,在 userInfos(用户信息)的 roles(登录页登录时缓存到浏览器)数组 + * @returns 返回有权限的路由数组 `meta.roles` 中控制 + */ +export function setFilterHasRolesMenu(routes: any, roles: any) { + const menu: any = []; + routes.forEach((route: any) => { + const item = { ...route }; + if (hasRoles(roles, item)) { + if (item.children) item.children = setFilterHasRolesMenu(item.children, roles); + menu.push(item); + } + }); + return menu; +} + +/** + * 设置递归过滤有权限的路由到 vuex routesList 中(已处理成多级嵌套路由)及缓存多级嵌套数组处理后的一维数组 + * @description 用于左侧菜单、横向菜单的显示 + * @description 用于 tagsView、菜单搜索中:未过滤隐藏的(isHide) + */ +export function setFilterMenuAndCacheTagsViewRoutes() { + store.dispatch('routesList/setRoutesList', setFilterHasRolesMenu(dynamicRoutes[0].children, store.state.userInfos.userInfos.roles)); + setCacheTagsViewRoutes(); +} + +/** + * 获取当前用户权限标识去比对路由表(未处理成多级嵌套路由) + * @description 这里主要用于动态路由的添加,router.addRoute + * @link 参考:https://next.router.vuejs.org/zh/api/#addroute + * @param chil dynamicRoutes(/@/router/route)第一个顶级 children 的下路由集合 + * @returns 返回有当前用户权限标识的路由数组 + */ +export function setFilterRoute(chil: any) { + let filterRoute: any = []; + chil.forEach((route: any) => { + if (route.meta.roles) { + route.meta.roles.forEach((metaRoles: any) => { + store.state.userInfos.userInfos.roles.forEach((roles: any) => { + filterRoute.push({ ...route }) + if (metaRoles === roles) filterRoute.push({ ...route }); + }); + }); + } + }); + return filterRoute; +} + +/** + * 获取有当前用户权限标识的路由数组,进行对原路由的替换 + * @description 替换 dynamicRoutes(/@/router/route)第一个顶级 children 的路由 + * @returns 返回替换后的路由数组 + */ +export function setFilterRouteEnd() { + let filterRouteEnd: any = formatTwoStageRoutes(formatFlatteningRoutes(dynamicRoutes)); + // filterRouteEnd[0].children = [...setFilterRoute(filterRouteEnd[0].children), { ...pathMatch }]; + // console.log('-------222---') + return filterRouteEnd; +} + +/** + * 添加动态路由 + * @method router.addRoute + * @description 此处循环为 dynamicRoutes(/@/router/route)第一个顶级 children 的路由一维数组,非多级嵌套 + * @link 参考:https://next.router.vuejs.org/zh/api/#addroute + */ +export function setAddRoute() { + setFilterRouteEnd().forEach((route: RouteRecordRaw) => { + const routeName: any = route.name; + if (!router.hasRoute(routeName)) router.addRoute(route); + }); +} + +/** + * 删除/重置路由 + * @method router.removeRoute + * @description 此处循环为 dynamicRoutes(/@/router/route)第一个顶级 children 的路由一维数组,非多级嵌套 + * @link 参考:https://next.router.vuejs.org/zh/api/#push + */ +export function resetRoute() { + setFilterRouteEnd().forEach((route: RouteRecordRaw) => { + const routeName: any = route.name; + router.hasRoute(routeName) && router.removeRoute(routeName); + }); +} + +// isRequestRoutes 为 true,则开启后端控制路由,路径:`/src/store/modules/themeConfig.ts` +const { isRequestRoutes } = store.state.themeConfig.themeConfig; +// 前端控制路由:初始化方法,防止刷新时路由丢失 +if (!isRequestRoutes) initFrontEndControlRoutes(); + +// 路由加载前 +router.beforeEach(async (to, from, next) => { + NProgress.configure({ showSpinner: false }); + if (to.meta.title) NProgress.start(); + const token = Session.get('token'); + console.log(token) + if (to.path === '/login' && !token) { + next(); + NProgress.done(); + } + else if (to.path === '/listCurrentHemoMeds' && !token) { + next(); + NProgress.done(); + } + else if (to.path === '/dapingView' && !token) { + next(); + NProgress.done(); + } + // else if (to.path === '/externalInspectionPush') { + // next(); + // NProgress.done(); + // } + else if (to.path === '/test' && !token) { + next(); + NProgress.done(); + } + else { + if (!token) { + next(`/login?redirect=${to.path}¶ms=${JSON.stringify(to.query ? to.query : to.params)}`); + Session.clear(); + resetRoute(); + NProgress.done(); + } else if (token && to.path === '/login') { + next('/home'); + NProgress.done(); + } else { + if (store.state.routesList.routesList.length === 0) { + if (isRequestRoutes) { + // 后端控制路由:路由数据初始化,防止刷新时丢失 + await initBackEndControlRoutes(); + // 动态添加路由:防止非首页刷新时跳转回首页的问题 + // 确保 addRoute() 时动态添加的路由已经被完全加载上去 + next({ ...to, replace: true }); + } + } else { + console.log(to) + // next(); + if(to.path.split('PatientManage').length>1&&to.name!=="PatientFormDetails"&&to.name!=="PatientList"){ + // next(); + if(store.state.patientInfos.patientInfos.code===''){ + // next('/PatientManage/PatientList'); + NProgress.done(); + } + } + next(); + + } + } + } +}); + +// 路由加载后 +router.afterEach(() => { + NProgress.done(); + NextLoading.done(); +}); + +// 导出路由 +export default router; diff --git a/src/router/route.ts b/src/router/route.ts new file mode 100644 index 0000000..cf40858 --- /dev/null +++ b/src/router/route.ts @@ -0,0 +1,81 @@ +import { RouteRecordRaw } from 'vue-router'; + +/** + * 路由meta对象参数说明 + * meta: { + * title: 菜单栏及 tagsView 栏、菜单搜索名称(国际化) + * isLink: 是否超链接菜单,开启外链条件,`1、isLink:true 2、链接地址不为空` + * isHide: 是否隐藏此路由 + * isKeepAlive: 是否缓存组件状态 + * isAffix: 是否固定在 tagsView 栏上 + * isIframe: 是否内嵌窗口,,开启条件,`1、isIframe:true 2、链接地址不为空` + * roles: 当前路由权限标识,取角色管理。控制路由显示、隐藏。超级管理员:admin 普通角色:common + * icon: 菜单、tagsView 图标,阿里:加 `iconfont xxx`,fontawesome:加 `fa xxx` + * } + */ + +/** + * 定义动态路由 + * @description 未开启 isRequestRoutes 为 true 时使用(前端控制路由),开启时第一个顶级 children 的路由将被替换成接口请求回来的路由数据 + * @description 各字段请查看 `/@/views/system/menu/component/addMenu.vue 下的 ruleForm` + * @returns 返回路由菜单数据 + */ +export const dynamicRoutes: Array = [ + { + path: '/', + name: '/', + component: () => import('/@/views/listCurrentHemoMeds/index.vue'), + meta: { + isKeepAlive: true, + }, + }, +]; + +/** + * 定义静态路由 + * @description 前端控制直接改 dynamicRoutes 中的路由,后端控制不需要修改,请求接口路由数据时,会覆盖 dynamicRoutes 第一个顶级 children 的内容(全屏,不包含 layout 中的路由出口) + * @returns 返回路由菜单数据 + */ +export const staticRoutes: Array = [ + { + path: '/404', + name: 'notFound', + component: () => import('/@/views/error/404.vue'), + meta: { + title: 'message.staticRoutes.notFound', + }, + }, + { + path: '/401', + name: 'noPower', + component: () => import('/@/views/error/401.vue'), + meta: { + title: 'message.staticRoutes.noPower', + }, + }, +]; + + +/** + * * 定义404、401界面 + */ +export const notFoundAndNoPower = [ + { + path: '/:path(.*)*', + name: 'notFound', + component: () => import('/@/views/error/404.vue'), + meta: { + title: 'message.staticRoutes.notFound', + isHide: true, + }, + }, + { + path: '/401', + name: 'noPower', + component: () => import('/@/views/error/401.vue'), + meta: { + title: 'message.staticRoutes.noPower', + isHide: true, + }, + }, +]; \ No newline at end of file diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000..bb1d741 --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,27 @@ +import { InjectionKey } from 'vue'; +import { createStore, useStore as baseUseStore, Store } from 'vuex'; +import { RootStateTypes } from '/@/store/interface/index'; + +// Vite supports importing multiple modules from the file system using the special import.meta.glob function +// see https://cn.vitejs.dev/guide/features.html#glob-import +const modulesFiles = import.meta.globEager('./modules/*.ts'); +const pathList: string[] = []; + +for (const path in modulesFiles) { + pathList.push(path); +} + +const modules = pathList.reduce((modules: { [x: string]: any }, modulePath: string) => { + const moduleName = modulePath.replace(/^\.\/modules\/(.*)\.\w+$/, '$1'); + const value = modulesFiles[modulePath]; + modules[moduleName] = value.default; + return modules; +}, {}); + +export const key: InjectionKey> = Symbol(); + +export const store = createStore({ modules }); + +export function useStore() { + return baseUseStore(key); +} diff --git a/src/store/interface/funPerissionMap.ts b/src/store/interface/funPerissionMap.ts new file mode 100644 index 0000000..ac482bc --- /dev/null +++ b/src/store/interface/funPerissionMap.ts @@ -0,0 +1,4 @@ +export enum EFunPerission { + // 禅道 id 961 + 导入患者 = 'importPatient' +} \ No newline at end of file diff --git a/src/store/interface/index.ts b/src/store/interface/index.ts new file mode 100644 index 0000000..c1be25a --- /dev/null +++ b/src/store/interface/index.ts @@ -0,0 +1,132 @@ +// 接口类型声明 + +// 布局配置 +export interface ThemeConfigState { + runEnvironmentTestingStatus: 0 | 1 | 2; + runEnvironmentTesting: { + browserName: string, // 浏览器型号 + browserVersion: number, // 浏览器版本 + systemName: string, // 系统名称 + network: number, + } + themeConfig: { + isDrawer: boolean; + primary: string; + success: string; + info: string; + warning: string; + danger: string; + topBar: string; + menuBar: string; + columnsMenuBar: string; + topBarColor: string; + menuBarColor: string; + columnsMenuBarColor: string; + isTopBarColorGradual: boolean; + isMenuBarColorGradual: boolean; + isColumnsMenuBarColorGradual: boolean; + isMenuBarColorHighlight: boolean; + isCollapse: boolean; + isUniqueOpened: boolean; + isFixedHeader: boolean; + isFixedHeaderChange: boolean; + isClassicSplitMenu: boolean; + isLockScreen: boolean; + lockScreenTime: number; + isShowLogo: boolean; + isShowLogoChange: boolean; + isBreadcrumb: boolean; + isTagsview: boolean; + isBreadcrumbIcon: boolean; + isTagsviewIcon: boolean; + isCacheTagsView: boolean; + isSortableTagsView: boolean; + isShareTagsView: boolean; + isFooter: boolean; + isGrayscale: boolean; + isInvert: boolean; + isIsDark: boolean; + isWartermark: boolean; + wartermarkText: string; + tagsStyle: string; + animation: string; + columnsAsideStyle: string; + columnsAsideLayout: string; + layout: string; + isRequestRoutes: boolean; + globalTitle: string; + globalViceTitle: string; + globalI18n: string; + globalComponentSize: string; + }; +} +// 自定义设置 +export interface ZdyConfigState { + zdyConfig: object; +} + +// 路由列表 +export interface RoutesListState { + routesList: Array; + isColumnsMenuHover: Boolean; + isColumnsNavHover: Boolean; +} + +// 路由缓存列表 +export interface KeepAliveNamesState { + keepAliveNames: Array; +} + +// TagsView 路由列表 +export interface TagsViewRoutesState { + tagsViewRoutes: Array; + isTagsViewCurrenFull: Boolean; +} + +// 用户信息 +export interface UserInfosState { + userInfos: object; + selectedFieldsInMedStat2: string; + id: string; + code: string; + ShowWeeksData:Array; + printSetting: { + [k:string]: any; + }; + notBasicDictTyHisTypes: string[]; +} +// 设备信息 +export interface deviceInfosState { + deviceInfos: object; +} +// 设备信息 +export interface patientInfosState { + patientInfos: object; +} + +export interface FunPerissionState { + [key: string] : string[]; +} + + +// 后端返回原始路由(未处理时) +export interface RequestOldRoutesState { + requestOldRoutes: Array; +} + +// 主接口(顶级类型声明) +export interface RootStateTypes { + themeConfig: ThemeConfigState; + routesList: RoutesListState; + keepAliveNames: KeepAliveNamesState; + tagsViewRoutes: TagsViewRoutesState; + userInfos: UserInfosState; + deviceInfos: deviceInfosState; + patientInfos: patientInfosState; + requestOldRoutes: RequestOldRoutesState; + zdyConfig:ZdyConfigState; + selectedFieldsInMedStat2: string; + id: string; + code: string; + funPerissions: deviceInfosState; +} diff --git a/src/store/modules/deviceInfos.ts b/src/store/modules/deviceInfos.ts new file mode 100644 index 0000000..41aa14d --- /dev/null +++ b/src/store/modules/deviceInfos.ts @@ -0,0 +1,46 @@ +import { Module } from 'vuex'; +import { Session } from '/@/utils/storage'; +// 此处加上 `.ts` 后缀报错,具体原因不详 +import { deviceInfosState, RootStateTypes } from '/@/store/interface/index'; + +const deviceInfosModule: Module = { + namespaced: true, + state: { + deviceInfos: { + "clientCode": "", + "code": "", + "deviceBrand": "", + "deviceCurrentState": 0, + "deviceGroupCode": "", + "deviceInitialRunCount": 0, + "deviceModel": "", + "deviceName": "", + "sortOrder":999, + "deviceNo": "", + "devicePurchaseTime": "",//购买日期 + "deviceSn": "", + "deviceType": 0, + "id": 0, + "remark": "", + "deviceVsSchemes":[] + }, + }, + mutations: { + // 设置用户信息 + getdeviceInfos(state: any, data: object) { + state.deviceInfos = data; + }, + }, + actions: { + // 设置用户信息 + async setdeviceInfos({ commit }, data: object) { + if (data) { + commit('getdeviceInfos', data); + } else { + if (Session.get('deviceInfo')) commit('getdeviceInfos', Session.get('deviceInfo')); + } + }, + }, +}; + +export default deviceInfosModule; diff --git a/src/store/modules/funPerission.ts b/src/store/modules/funPerission.ts new file mode 100644 index 0000000..9010ca4 --- /dev/null +++ b/src/store/modules/funPerission.ts @@ -0,0 +1,14 @@ +import { Module } from 'vuex'; +import type { FunPerissionState, RootStateTypes } from '../interface/index'; +import { EFunPerission } from '../interface/funPerissionMap'; + +const funPerissionModule: Module = { + namespaced: true, + state: { + // 浦江医院 + [EFunPerission.导入患者]: ['CLIENT9172053513434Pqzx', '211221102200228702'] + } +} + + +export default funPerissionModule; \ No newline at end of file diff --git a/src/store/modules/keepAliveNames.ts b/src/store/modules/keepAliveNames.ts new file mode 100644 index 0000000..d483dcf --- /dev/null +++ b/src/store/modules/keepAliveNames.ts @@ -0,0 +1,24 @@ +import { Module } from 'vuex'; +// 此处加上 `.ts` 后缀报错,具体原因不详 +import { KeepAliveNamesState, RootStateTypes } from '/@/store/interface/index'; + +const keepAliveNamesModule: Module = { + namespaced: true, + state: { + keepAliveNames: [], + }, + mutations: { + // 设置路由缓存(name字段) + getCacheKeepAlive(state: any, data: Array) { + state.keepAliveNames = data; + }, + }, + actions: { + // 设置路由缓存(name字段) + async setCacheKeepAlive({ commit }, data: Array) { + commit('getCacheKeepAlive', data); + }, + }, +}; + +export default keepAliveNamesModule; diff --git a/src/store/modules/patientInfos.ts b/src/store/modules/patientInfos.ts new file mode 100644 index 0000000..a34a1f5 --- /dev/null +++ b/src/store/modules/patientInfos.ts @@ -0,0 +1,89 @@ +import { Module } from 'vuex'; +import { Session } from '/@/utils/storage'; +// 此处加上 `.ts` 后缀报错,具体原因不详 +import { patientInfosState, RootStateTypes } from '/@/store/interface/index'; + +const patientInfosModule: Module = { + namespaced: true, + state: { + patientInfos: { + // 患者code + code:'', + // 患者id + id:0, + // 患者姓名 + patientName:'', + // 证件号码 + patientIdentityNo:'', + // 地址 + patientAddress:'', + //电话 + patientTelNo:'', + + + }, + recordInfo:{ + preHemoWeight:'', + preMBpH:'', + preMBpL:'', + preMP:'', + recordCode:'' + }, + afteInfo:{ + afterHemoWeight:'', + afterMBpH:'', + afterMBpL:'', + afterMP:'', + recordCode:'' + }, + printlist:[], + patientList: [] + }, + mutations: { + // 设置用户信息 + getpatientInfos(state: any, data: object) { + console.log('kankan==-----',data) + state.patientInfos = data; + }, + setrecordInfoCommit(state: any, data: object) { + state.recordInfo = data; + }, + setafteInfoCommit(state: any, data: object) { + state.afteInfo = data; + }, + setprintlistCommit(state: any, data: object){ + state.printlist.push(data) + } + }, + actions: { + // 设置用户信息 + async setpatientInfos({ commit }, data: object) { + if (data) { + commit('getpatientInfos', data); + } else { + if (Session.get('patientInfo')) commit('getpatientInfos', Session.get('patientInfo')); + } + }, + setrecordInfo({ commit }, data: object) { + if(data){ + commit('setrecordInfoCommit',data) + } + }, + setafteInfo({ commit }, data: object) { + if(data){ + commit('setafteInfoCommit',data) + } + }, + setPrintList({commit},data:object){ + if(data){ + console.log(data) + commit('setprintlistCommit',data) + } + } + + + + }, +}; + +export default patientInfosModule; diff --git a/src/store/modules/requestOldRoutes.ts b/src/store/modules/requestOldRoutes.ts new file mode 100644 index 0000000..6b489b1 --- /dev/null +++ b/src/store/modules/requestOldRoutes.ts @@ -0,0 +1,24 @@ +import { Module } from 'vuex'; +// 此处加上 `.ts` 后缀报错,具体原因不详 +import { RequestOldRoutesState, RootStateTypes } from '/@/store/interface/index'; + +const requestOldRoutesModule: Module = { + namespaced: true, + state: { + requestOldRoutes: [], + }, + mutations: { + // 后端控制路由 + getBackEndControlRoutes(state: any, data: object) { + state.requestOldRoutes = data; + }, + }, + actions: { + // 后端控制路由 + setBackEndControlRoutes({ commit }, routes: Array) { + commit('getBackEndControlRoutes', routes); + }, + }, +}; + +export default requestOldRoutesModule; diff --git a/src/store/modules/routesList.ts b/src/store/modules/routesList.ts new file mode 100644 index 0000000..b45c29c --- /dev/null +++ b/src/store/modules/routesList.ts @@ -0,0 +1,42 @@ +import { Module } from 'vuex'; +// 此处加上 `.ts` 后缀报错,具体原因不详 +import { RoutesListState, RootStateTypes } from '/@/store/interface/index'; + +const routesListModule: Module = { + namespaced: true, + state: { + routesList: [], + isColumnsMenuHover: false, + isColumnsNavHover: false, + }, + mutations: { + // 设置路由,菜单中使用到 + getRoutesList(state: any, data: Array) { + state.routesList = data; + }, + // 设置分栏布局,鼠标是否移入移出(菜单) + getColumnsMenuHover(state: any, bool: Boolean) { + state.isColumnsMenuHover = bool; + }, + // 设置分栏布局,鼠标是否移入移出(导航) + getColumnsNavHover(state: any, bool: Boolean) { + state.isColumnsNavHover = bool; + }, + }, + actions: { + // 设置路由,菜单中使用到 + async setRoutesList({ commit }, data: any) { + commit('getRoutesList', data); + }, + // 设置分栏布局,鼠标是否移入移出(菜单) + async setColumnsMenuHover({ commit }, bool: Boolean) { + commit('getColumnsMenuHover', bool); + }, + // 设置分栏布局,鼠标是否移入移出(菜单) + async setColumnsNavHover({ commit }, bool: Boolean) { + commit('getColumnsNavHover', bool); + }, + }, +}; + +export default routesListModule; diff --git a/src/store/modules/socketMessage.ts b/src/store/modules/socketMessage.ts new file mode 100644 index 0000000..f36f98f --- /dev/null +++ b/src/store/modules/socketMessage.ts @@ -0,0 +1,23 @@ +import { Module } from 'vuex'; +// 此处加上 `.ts` 后缀报错,具体原因不详 + +const socketMessage: Module = { + namespaced: true, + state: { + websocketMessages: "" + }, + mutations: { + ADD_WEBSOCKET_MESSAGE(state, message) { + state.websocketMessages = message; + }, + CLEAR_WEBSOCKET_MESSAGES(state) { + state.websocketMessages = ""; + } + }, + actions: {}, + getters: { + getWebSocketMessages: (state) => state.websocketMessages + } +}; + +export default socketMessage; diff --git a/src/store/modules/tagsViewRoutes.ts b/src/store/modules/tagsViewRoutes.ts new file mode 100644 index 0000000..6fec98d --- /dev/null +++ b/src/store/modules/tagsViewRoutes.ts @@ -0,0 +1,35 @@ +import { Module } from 'vuex'; +// 此处加上 `.ts` 后缀报错,具体原因不详 +import { TagsViewRoutesState, RootStateTypes } from '/@/store/interface/index'; +import { Session } from '/@/utils/storage'; + +const tagsViewRoutesModule: Module = { + namespaced: true, + state: { + tagsViewRoutes: [], + isTagsViewCurrenFull: false, + }, + mutations: { + // 设置 TagsView 路由 + getTagsViewRoutes(state: any, data: Array) { + state.tagsViewRoutes = data; + }, + // 设置卡片全屏 + getCurrenFullscreen(state: any, bool: boolean) { + Session.set('isTagsViewCurrenFull', bool); + state.isTagsViewCurrenFull = bool; + }, + }, + actions: { + // 设置 TagsView 路由 + async setTagsViewRoutes({ commit }, data: Array) { + commit('getTagsViewRoutes', data); + }, + // 设置卡片全屏 + setCurrenFullscreen({ commit }, bool: Boolean) { + commit('getCurrenFullscreen', bool); + }, + }, +}; + +export default tagsViewRoutesModule; diff --git a/src/store/modules/themeConfig.ts b/src/store/modules/themeConfig.ts new file mode 100644 index 0000000..a3676bf --- /dev/null +++ b/src/store/modules/themeConfig.ts @@ -0,0 +1,184 @@ +import { Module } from 'vuex'; +// 此处加上 `.ts` 后缀报错,具体原因不详 +import { ThemeConfigState, RootStateTypes } from '/@/store/interface/index'; +import { Session } from '../../utils/storage'; + +/** + * 2020.05.28 by lyt 优化 + * 修改一下配置时,需要每次都清理 `window.localStorage` 浏览器永久缓存,配置才会生效 + * 哪个大佬有解决办法,欢迎pr,感谢💕! + */ +const themeConfigModule: Module = { + namespaced: true, + state: { + // 当前环境设备信息是否弹出 0未检测 1正在弹 2 已关闭 + runEnvironmentTestingStatus: Session.get('runEnvironmentTestingStatus') || 0, + // 标准 浏览器是"Chrome",版本大于60,系统版本win10或者mac,网络大于0.35 + runEnvironmentTesting: Session.get('runEnvironmentTesting') || { + browserName: '未知', // 浏览器型号 + browserVersion: 0, // 浏览器版本 + systemName: '未知', // 系统名称 + network: 0, // 网络 + }, + themeConfig: { + // 是否开启布局配置抽屉 + isDrawer: false, + + /** + * 全局主题 + */ + // 默认 primary 颜色,请注意:需要同时修改 `/@/theme/common/var.scss` 对应的值 + primary: '#409eff', + // 默认 success 颜色,请注意:需要同时修改 `/@/theme/common/var.scss` 对应的值 + success: '#67c23a', + // 默认 info 颜色,请注意:需要同时修改 `/@/theme/common/var.scss` 对应的值 + info: '#909399', + // 默认 warning 颜色,请注意:需要同时修改 `/@/theme/common/var.scss` 对应的值 + warning: '#e6a23c', + // 默认 danger 颜色,请注意:需要同时修改 `/@/theme/common/var.scss` 对应的值 + danger: '#f56c6c', + + /** + * 菜单 / 顶栏 + * 注意:v1.0.17 版本去除设置布局切换,重置主题样式(initSetLayoutChange), + * 切换布局需手动设置样式,设置的样式自动同步各布局, + * 代码位置:/@/layout/navBars/breadcrumb/setings.vue + */ + // 默认顶栏导航背景颜色,请注意:需要同时修改 `/@/theme/common/var.scss` 对应的值 + topBar: '#ffffff', + // 默认菜单导航背景颜色,请注意:需要同时修改 `/@/theme/common/var.scss` 对应的值 + menuBar: '#DBE4EC', + // 默认分栏菜单背景颜色,请注意:需要同时修改 `/@/theme/common/var.scss` 对应的值 + columnsMenuBar: '#304156', + // 默认顶栏导航字体颜色,请注意:需要同时修改 `/@/theme/common/var.scss` 对应的值 + topBarColor: '#606266', + // 默认菜单导航字体颜色,请注意:需要同时修改 `/@/theme/common/var.scss` 对应的值 + menuBarColor: '#333333', + // 默认分栏菜单字体颜色,请注意:需要同时修改 `/@/theme/common/var.scss` 对应的值 + columnsMenuBarColor: '#FFFFFF', + // 是否开启顶栏背景颜色渐变 + isTopBarColorGradual: false, + // 是否开启菜单背景颜色渐变 + isMenuBarColorGradual: false, + // 是否开启分栏菜单背景颜色渐变 + isColumnsMenuBarColorGradual: false, + // 是否开启菜单字体背景高亮 + isMenuBarColorHighlight: false, + + /** + * 界面设置 + */ + // 是否开启菜单水平折叠效果 + isCollapse: false, + // 是否开启菜单手风琴效果 + isUniqueOpened: false, + // 是否开启固定 Header + isFixedHeader: false, + // 初始化变量,用于更新菜单 el-scrollbar 的高度,请勿删除 + isFixedHeaderChange: false, + // 是否开启经典布局分割菜单(仅经典布局生效) + isClassicSplitMenu: false, + // 是否开启自动锁屏 + isLockScreen: false, + // 开启自动锁屏倒计时(s/秒) + lockScreenTime: 30, + + /** + * 界面显示 + */ + // 是否开启侧边栏 Logo + isShowLogo: true, + // 初始化变量,用于 el-scrollbar 的高度更新,请勿删除 + isShowLogoChange: false, + // 是否开启 Breadcrumb,强制经典、横向布局不显示 + isBreadcrumb: true, + // 是否开启 Tagsview + isTagsview: true, + // 是否开启 Breadcrumb 图标 + isBreadcrumbIcon: false, + // 是否开启 Tagsview 图标 + isTagsviewIcon: false, + // 是否开启 TagsView 缓存 + isCacheTagsView: false, + // 是否开启 TagsView 拖拽 + isSortableTagsView: true, + // 是否开启 TagsView 共用 + isShareTagsView: false, + // 是否开启 Footer 底部版权信息 + isFooter: false, + // 是否开启灰色模式 + isGrayscale: false, + // 是否开启色弱模式 + isInvert: false, + // 是否开启深色模式 + isIsDark: false, + // 是否开启水印 + isWartermark: false, + // 水印文案 + wartermarkText: '岱特智能科技', + + /** + * 其它设置 + */ + // Tagsview 风格:可选值"",默认 tags-style-one + // 定义的值与 `/src/layout/navBars/tagsView/tagsView.vue` 中的 class 同名 + tagsStyle: 'tags-style-one', + // 主页面切换动画:可选值"",默认 slide-right + animation: 'slide-right', + // 分栏高亮风格:可选值"",默认 columns-round + columnsAsideStyle: 'columns-round', + // 分栏布局风格:可选值"",默认 columns-horizontal + columnsAsideLayout: 'columns-vertical', + + /** + * 布局切换 + * 注意:为了演示,切换布局时,颜色会被还原成默认,代码位置:/@/layout/navBars/breadcrumb/setings.vue + * 中的 `initSetLayoutChange(设置布局切换,重置主题样式)` 方法 + */ + // 布局切换:可选值"",默认 defaults + layout: 'columns', + + /** + * 后端控制路由 + */ + // 是否开启后端控制路由 + isRequestRoutes: true, + + /** + * 全局网站标题 / 副标题 + */ + // 网站主标题(菜单导航、浏览器当前网页标题) + globalTitle: '血液透析管理平台', + // 网站副标题(登录页顶部文字) + globalViceTitle: '岱特智能科技', + // 默认初始语言,可选值"",默认 zh-cn + globalI18n: 'zh-cn', + // 默认全局组件大小,可选值"<|medium|small|mini>",默认 '' + globalComponentSize: '', + } + }, + mutations: { + // 设置布局配置 + getThemeConfig(state: any, data: object) { + state.themeConfig = data; + }, + // 设置设备弹出信息 + setRunEnvironmentTestingStatus(state: any, data: 0 | 1 | 2) { + state.runEnvironmentTestingStatus = data; + Session.set('runEnvironmentTestingStatus', data); + }, + // 设置设备信息 + setRunEnvironmentTesting(state: any, data: any) { + state.runEnvironmentTesting = data; + Session.set('runEnvironmentTesting', data); + } + }, + actions: { + // 设置布局配置 + setThemeConfig({ commit }, data: object) { + commit('getThemeConfig', data); + } + }, +}; + +export default themeConfigModule; diff --git a/src/store/modules/userInfos.ts b/src/store/modules/userInfos.ts new file mode 100644 index 0000000..4aebabc --- /dev/null +++ b/src/store/modules/userInfos.ts @@ -0,0 +1,285 @@ +import { Module } from 'vuex'; +import { Session, Local } from '/@/utils/storage'; +import {getuserinfo} from '/@/api/login/index'; +// 此处加上 `.ts` 后缀报错,具体原因不详 +import { UserInfosState, RootStateTypes } from '/@/store/interface/index'; +import { getClientVsResourceListApi } from '/@/api/client_vs_resource'; +import { initFrontEndControlRoutes } from '/@/router/frontEnd'; +import { scheduleGetConfig } from '/@/api/scheduling/HemoMedSchedule'; + +const userInfosModule: Module = { + namespaced: true, + state: { + userInfos: {}, + paibanConfig:{scheduleIsEnablePlusSlot:0,schedulePlusSlotName:''}, // 排班配置项 + clientVsUser: [], + // selectedFieldsInMedStat2: Local.get("selectedFieldsInMedStat2") || "", // 药品统计2页面,自定义显示的药品字段 该字段已废弃,转入printSetting下面 + selectFieldsInTodayOrderPage: Local.get("selectFieldsInTodayOrderPage") || "", // 今日医嘱页面,自定义医嘱显示的列名 + printSetting: Local.get("printSetting") || { selectFieldsInShangjiCanshuPage: "" }, // 用户设置的相关参数,药品统计2不在其中 + selectedFieldsInInventory2QueryPage: Local.get('selectedFieldsInInventory2QueryPage') || '', // 二级库房查询页面自定义显示字段 + selectedFieldsInInventory2OutPage: Local.get('selectedFieldsInInventory2OutPage') || '', // 二级出库的自定义打印列 + selectedFieldsInCleanStatPage: Local.get('selectedFieldsInCleanStatPage') || '', // 消毒统计页面的自定义打印列 + // 下面这两个id和code是当前账号的id和code,不是客户 + id: Local.get("uId") || "", + code: Local.get("uCode") || "", + patientIsAlive:1, + // 选择的排班天数查看 + ShowWeeksData:Local.get('ShowWeeksData') || [], + signedInCountByDa: Local.get('signedInCountByDa') || '1', // 是否只统计已签到的透析单-今日医嘱 + patientIsAliveTrigger: null, // 这个只用来更新左上角的患者列表,传时间戳 + notBasicDictTyHisTypes: ['康博佳', '骆工His', '新安国际HIS', '天津长康HIS'], // 对应his设置的类型,不需要合并字典等等的,禅道id2257 + }, + mutations: { + // 设置用户信息 + getUserInfos(state: any, data: object) { + console.log('设置用户信息---------------',data) + state.userInfos = data; + }, + getUserInfoCilent(state: any, data: object) { + state.userInfos.client = data; + }, + // 设置客户下用户信息 + getClientUser(state: any, data: object) { + state.clientVsUser = data; + }, + SET_PaibanConfig(state: any, data: object) { + state.paibanConfig = data; + }, + SET_ShowWeeksData(state:any,list:[]){ + Local.set('ShowWeeksData', list); + state.ShowWeeksData= list + }, + // 设置二级出库页面自定义打印列 + SET_SELECTFIELDSININVENTORYOUTPAGE(state: any, str: string) { + Local.set('selectedFieldsInInventory2OutPage', str); + state.selectedFieldsInInventory2OutPage = str; + }, + // 设置药品统计2页面,自定义显示的药品字段 + // SET_SELECTFIRLDSINMEDSTAT2(state: any, str: string) { + // Local.set("selectedFieldsInMedStat2", str); + // state.selectedFieldsInMedStat2 = str; + // }, + // 今日医嘱页面,自定义医嘱显示的列名 + SET_SELECTFIELDSINTODAYORDERPAGE(state: any, str: string) { + Local.set("selectFieldsInTodayOrderPage", str); + state.selectFieldsInTodayOrderPage = str; + }, + // 二级库房查询页面自定义显示字段的列名selectedFieldsInInventory2QueryPage + SET_SELECTFIELDSINVENTORY2QUERYPAGE: (state: any, str: string) => { + Local.set('selectedFieldsInInventory2QueryPage', str); + state.selectedFieldsInInventory2QueryPage = str; + }, + SET_SELECTDFIELDSINCLEANSTATPAGE: (state: any, str: string) => { + Local.set('selectedFieldsInCleanStatPage', str); + state.selectedFieldsInCleanStatPage = str; + }, + // 用户的相关参数,如果key不传,则认为修改的是全部的 + SET_PRINTSETTING(state: any, settingObj: { val: string | object; key?: string }) { + const { val, key } = settingObj; + if(key) { + const obj = JSON.parse(JSON.stringify(state.printSetting)); + obj[key] = val; + Local.set("printSetting", obj); + console.log("obj", obj) + state.printSetting = obj; + } else { + Local.set("printSetting", val); + state.printSetting = val; + } + }, + SET_UID(state: any, id: string) { + Local.set("uId", id); + state.id = id; + }, + SET_UCODE(state: any, code: string) { + Local.set("uCode", code); + state.code=code + // state.uCode = code; + }, + SET_patientIsAlive(state: any, type: number) { + console.log('type: ', type) + state.patientIsAlive = type; + }, + // signedInCountByDa + SET_SIGNEDINCOUNTBYDA(state: any, val: string) { + Local.set('signedInCountByDa', val); + state.signedInCountByDa = val; + }, + SET_PATIENTISALIVETRIGGER(state: any, val: number) { + state.patientIsAliveTrigger = val; + } + }, + actions: { + // 设置用户信息 + async setUserInfos({ commit }) { + if (Session.get('userInfo')) { + console.log('更具本地存储读取用户信息') + commit('getUserInfos', Session.get('userInfo')); + const data=Session.get('userInfo'); + if(data.client?.code){ + const datamode= await scheduleGetConfig({ clientCode: data.client?.code }) + console.log('获取排班配置项',datamode) + commit('SET_PaibanConfig',datamode.data); + } + + } else { + /** 设置用户相关自定义设置 */ + const setUserSetting = (data: any) => { + const printSetting = { + selectFieldsInShangjiCanshuPage: data.selectFieldsInShangjiCanshuPage || '', // 上机参数页面, 自定义显示字段 + selectedFieldsInMedStat2: data.selectedFieldsInMedStat2 || '', // 药品准备2自定义显示字段 + listReadyRows: data.listReadyRows || '', // 透析耗材准备自定义显示字段 + listStatInfo: data.listStatInfo || '', // 透析耗材统计自定义显示字段 + prepareWorkMedicine: data.prepareWorkMedicine || '', // 药品准备自定义显示字段 + prepareWorkMedicineStat: data.prepareWorkMedicineStat || '', // 药品准备自定义显示字段 + 排班时段选择项: data.排班时段选择项, // 患者排班的排班时段选项 + 隐藏自备药: data.隐藏自备药, // 今日医嘱页面展示 + 是否自动出库至二级默认仓库: data.是否自动出库至二级默认仓库 || 0, // 一级出库是否自动出库至二级默认仓库 + }; + // store.commit("userInfos/SET_PRINTSETTING", { val: printSetting }); + commit('SET_PRINTSETTING', { val: printSetting }); + // 二级库存查询的自定义打印列设置 + // store.commit('userInfos/SET_SELECTFIELDSINVENTORY2QUERYPAGE', data.selectedFieldsInInventory2QueryPage); + commit('SET_SELECTFIELDSINVENTORY2QUERYPAGE', data.selectedFieldsInInventory2QueryPage); + // 二级出库的自定义打印列设置 + // store.commit('userInfos/SET_SELECTFIELDSININVENTORYOUTPAGE', data.selectedFieldsInInventory2OutPage); + commit('SET_SELECTFIELDSININVENTORYOUTPAGE', data.selectedFieldsInInventory2OutPage); + // 消毒统计的自定义打印列设置 + // store.commit('userInfos/SET_SELECTDFIELDSINCLEANSTATPAGE', data.selectedFieldsInCleanStatPage); + commit('SET_SELECTDFIELDSINCLEANSTATPAGE', data.selectedFieldsInCleanStatPage); + // 今日医嘱-是否只统计已签到的透析单 + // store.commit('userInfos/SET_SIGNEDINCOUNTBYDA', data.signedInCountByDa || '1'); + commit('SET_SIGNEDINCOUNTBYDA', data.signedInCountByDa || '1'); + + // 当前账号的id和code + // store.commit("userInfos/SET_UID", data.id); + commit('SET_UID', data.id); + // store.commit("userInfos/SET_UCODE", data.code); + commit('SET_UCODE', data.code); + } + + /** + * 设置用户信息 + * type 0超级管理员 1含有多家客户 2独家 + */ + const setUserInfo = async (data: any, defaultRoles: any[], defaultMenus: any[], defaultAuthBtnList: any[], type: 0 | 1 | 2) => { + const clients = type === 0 ? data?.管理员能看到的客户列表 : data.clientInfos; + const clinetCode = data?.currentClientInfo?.code; + let menus = defaultMenus; + if (type === 2) { + menus = await filterClientDisablePermission(defaultMenus, clinetCode); + } + + return { + userCode: data.code, + userName: data.userName, + photo: data.userAvatar, + time: new Date().getTime(), + roles: defaultRoles, + meuns: menus, + client: data.currentClientInfo, + authBtnList: defaultAuthBtnList, + clients: clients + } + } + + /** 过滤当前选中客户已经禁用掉的权限菜单 */ + const filterClientDisablePermission = async (meuns: any[], clientCode: string) => { + const { data } = await getClientVsResourceListApi({ + page: 0, + size: 0, + wherecondition: `client_code='${clientCode}' AND is_deleted=0`, + ordercondition: '', + }); + const disablePermission = data.list.map(v => v.resourceCode); + const menuRes = meuns.filter(v => !disablePermission.includes(v.resourceCode)); + return menuRes; + } + // 通过接口获取用户信息 + const { data: userData } = await getuserinfo(); + console.log('通过接口获取用户信息-----') + console.log('通过接口获取用户信息-----') + console.log('通过接口获取用户信息-----') + console.log('通过接口获取用户信息-----') + console.log('通过接口获取用户信息-----') + + console.log('通过接口获取用户信息-----') + console.log('通过接口获取用户信息',userData) + setUserSetting(userData); + let defaultRoles: Array = []; + let defaultMenus =[]; // 这里是路由 + let defaultAuthBtnList: Array = []; + // admin 页面权限标识,对应路由 meta.roles,用于控制路由的显示/隐藏 + // let adminRoles: Array = ['admin']; + // admin 按钮权限标识 + let adminAuthBtnList: Array = ['btn.add', 'btn.del', 'btn.edit', 'btn.link']; + // test 页面权限标识,对应路由 meta.roles,用于控制路由的显示/隐藏 + let testRoles: Array = ['common']; + // test 按钮权限标识 + let testAuthBtnList: Array = ['btn.add', 'btn.link']; + // 如果用户权限为空 + if (userData.roles.length <= 0) { + defaultRoles = testRoles; + defaultAuthBtnList = testAuthBtnList; + Session.set('token', ''); + return false; + } + + // 如果用户权限不为空 + const menuMap = new Map(); + + for (const ro of userData.roles) { + defaultRoles.push(ro.roleName); + + for (const e of ro.roleVsResourceList) { + const existing = menuMap.get(e.resourceName); + + if (!existing || e.grantPrivilege === 'RW') { + menuMap.set(e.resourceName, e); + } + } + } + + defaultMenus = Array.from(menuMap.values()); + defaultAuthBtnList = adminAuthBtnList; + + if(defaultRoles.indexOf('admin')>-1){ + const userInfos = await setUserInfo(userData, defaultRoles, defaultMenus, defaultAuthBtnList, 0); + // 存储用户信息到浏览器缓存 + Session.set('userInfo', userInfos); + Local.set('client_'+userData.userName,userData.currentClientInfo.code); + commit('getUserInfos', userInfos) + if(userInfos.client?.code){ + const datamode= await scheduleGetConfig({ clientCode: userInfos.client?.code }) + console.log('获取排班配置项',datamode) + commit('SET_PaibanConfig',datamode.data); + } + // 1、请注意执行顺序(存储用户信息到vuex) + // store.dispatch('userInfos/setUserInfos'); + // await initFrontEndControlRoutes(); + } else { + const userInfos = await setUserInfo(userData, defaultRoles, defaultMenus, defaultAuthBtnList, 2); + // 存储用户信息到浏览器缓存 + Session.set('userInfo', userInfos); + Local.set('client_'+userData.userName,userData.currentClientInfo.code); + commit('getUserInfos', userInfos) + if(userInfos.client?.code){ + const datamode= await scheduleGetConfig({ clientCode: userInfos.client?.code }) + console.log('获取排班配置项',datamode) + commit('SET_PaibanConfig',datamode.data); + } + // 1、请注意执行顺序(存储用户信息到vuex) + // store.dispatch('userInfos/setUserInfos'); + // await initFrontEndControlRoutes(); + } + } + }, + + async setClientVsUser ({ commit }, userList) { + // store 赋值 + commit('getClientUser', userList) + } + }, +}; + +export default userInfosModule; diff --git a/src/store/modules/zdyConfig.ts b/src/store/modules/zdyConfig.ts new file mode 100644 index 0000000..c9d6268 --- /dev/null +++ b/src/store/modules/zdyConfig.ts @@ -0,0 +1,40 @@ +import { Module } from 'vuex'; +// 此处加上 `.ts` 后缀报错,具体原因不详 +import { ZdyConfigState, RootStateTypes } from '/@/store/interface/index'; +import { Session, Local } from '/@/utils/storage'; + + +/** + * 2020.05.28 by lyt 优化 + * 修改一下配置时,需要每次都清理 `window.localStorage` 浏览器永久缓存,配置才会生效 + * 哪个大佬有解决办法,欢迎pr,感谢💕! + */ +const zdyConfigModule: Module = { + namespaced: true, + state: { + zdyConfig:{ + fontSize:20 + }, + locale: Session.get('st_locale') || 'zh-cn' + }, + mutations: { + //获取自定义字体大小 + getZdyConfig(state:any,data:object){ + state.zdyConfig=data + }, + // 设置系统语言 + SET_SYSTEM_LOCALE(state: any, lang: string) { + state.locale = lang; + Session.set('st_locale', lang); + } + }, + actions: { + //设置字体大小 + setZdyConfig({commit},data:object){ + commit('getZdyConfig', data); + } + + }, +}; + +export default zdyConfigModule; diff --git a/src/theme/app.scss b/src/theme/app.scss new file mode 100644 index 0000000..216e5ac --- /dev/null +++ b/src/theme/app.scss @@ -0,0 +1,271 @@ +/* 初始化样式 +------------------------------- */ +* { + margin: 0; + padding: 0; + box-sizing: border-box; + outline: none !important; +} + +html, +body, +#app { + margin: 0; + padding: 0; + width: 100%; + height: 100%; + font-family: AlibabaPuHuiTi-Medium, AlibabaPuHuiTi; + font-weight: 400; + -webkit-font-smoothing: antialiased; + -webkit-tap-highlight-color: transparent; + background-color: #f8f8f8; + font-size: 14px; + // overflow: hidden; + position: relative; +} + +/* 主布局样式 +------------------------------- */ +.layout-container { + width: 100%; + height: 100%; + .layout-aside { + box-shadow: 2px 1px 4px 0px rgba(235, 143, 143, 0.8); + border-radius: 0px 0px 24px 0px; + // background: white; + // background: var(--bg-menuBar); + box-shadow: 2px 0 6px rgb(0 21 41 / 1%); + height: inherit; + position: relative; + z-index: 1; + display: flex; + flex-direction: column; + overflow-x: hidden !important; + .el-scrollbar__view { + overflow: hidden; + height: 100%; + + } + } + .layout-header { + padding: 0 !important; + } + .layout-main { + padding: 0 !important; + overflow: hidden; + width: 100%; + height: calc(100vh - 50px - 34px); + overflow-y: auto; + background-color: #F3F7FB; + } + .el-scrollbar { + width: 100%; + } + // 此字段多次用到,建议不删除,如需修改,请重写覆盖样式 + .layout-view-bg-white { + background: var(--el-color-white); + width: 100%; + height: 100%; + border-radius: 4px; + border: 1px solid var(--el-border-color-light, #ebeef5); + } + .layout-el-aside-br-color { + border-right: 1px solid rgb(238, 238, 238); + } + // pc端左侧导航样式 + .layout-aside-pc-220 { + width: 200px !important; + transition: width 0.3s ease; + } + .layout-aside-pc-64 { + width: 64px !important; + transition: width 0.3s ease; + } + .layout-aside-pc-1 { + width: 1px !important; + transition: width 0.3s ease; + } + // 手机端左侧导航样式 + .layout-aside-mobile { + position: fixed; + top: 0; + left: -220px; + width: 220px; + z-index: 9999999; + } + .layout-aside-mobile-close { + left: -220px; + transition: all 0.3s cubic-bezier(1, -0.04, 0, 1.32); + } + .layout-aside-mobile-open { + left: 0; + transition: all 0.3s cubic-bezier(0.53, -0.26, 0.42, 1.18); + } + .layout-aside-mobile-mode { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + height: 100%; + background-color: rgba(0, 0, 0, 0.5); + z-index: 9999998; + } + .layout-scrollbar { + @extend .el-scrollbar; + padding: 10px; + } + .layout-mian-height-50 { + height: calc(100vh - 50px); + } + .layout-columns-warp { + flex: 1; + display: flex; + overflow: hidden; + } + .layout-hide { + display: none; + } +} + +/* element plus 全局样式 +------------------------------- */ +.layout-breadcrumb-seting { + .el-divider { + background-color: rgb(230, 230, 230); + } +} + +/* nprogress 进度条跟随主题颜色 +------------------------------- */ +#nprogress { + .bar { + background: var(--color-primary) !important; + z-index: 9999999 !important; + } +} + +/* flex 弹性布局 +------------------------------- */ +.flex { + display: flex; +} +.flex-auto { + flex: 1; +} +.flex-center { + @extend .flex; + flex-direction: column; + width: 100%; + overflow: hidden; +} +.flex-margin { + margin: auto; +} +.flex-warp { + display: flex; + flex-wrap: wrap; + align-content: flex-start; + margin: 0 -5px; + .flex-warp-item { + padding: 5px; + .flex-warp-item-box { + width: 100%; + height: 100%; + } + } +} + +/* cursor 鼠标形状 +------------------------------- */ +// 默认 +.cursor-default { + cursor: default !important; +} +// 帮助 +.cursor-help { + cursor: help !important; +} +// 手指 +.cursor-pointer { + cursor: pointer !important; +} +// 移动 +.cursor-move { + cursor: move !important; +} + +/* 宽高 100% +------------------------------- */ +.w100 { + width: 100% !important; +} +.h100 { + height: 100% !important; +} +.vh100 { + height: 100vh !important; +} +.max100vh { + max-height: 100vh !important; +} +.min100vh { + min-height: 100vh !important; +} + +/* 颜色值 +------------------------------- */ +.color-primary { + color: var(--color-primary); +} +.color-success { + color: var(--color-success); +} +.color-warning { + color: var(--color-warning); +} +.color-danger { + color: var(--color-danger); +} +.color-info { + color: var(--color-info); +} + +/* 字体大小全局样式 +------------------------------- */ +@for $i from 10 through 32 { + .font#{$i} { + font-size: #{$i}px !important; + } +} + +/* 外边距、内边距全局样式 +------------------------------- */ +@for $i from 1 through 35 { + .mt#{$i} { + margin-top: #{$i}px !important; + } + .mr#{$i} { + margin-right: #{$i}px !important; + } + .mb#{$i} { + margin-bottom: #{$i}px !important; + } + .ml#{$i} { + margin-left: #{$i}px !important; + } + .pt#{$i} { + padding-top: #{$i}px !important; + } + .pr#{$i} { + padding-right: #{$i}px !important; + } + .pb#{$i} { + padding-bottom: #{$i}px !important; + } + .pl#{$i} { + padding-left: #{$i}px !important; + } +} + + diff --git a/src/theme/base.scss b/src/theme/base.scss new file mode 100644 index 0000000..ed9216f --- /dev/null +++ b/src/theme/base.scss @@ -0,0 +1,2 @@ +@import 'common/transition.scss'; +@import 'common/var.scss'; diff --git a/src/theme/common/transition.scss b/src/theme/common/transition.scss new file mode 100644 index 0000000..8d498e3 --- /dev/null +++ b/src/theme/common/transition.scss @@ -0,0 +1,85 @@ +/* 页面切换动画 +------------------------------- */ +.slide-right-enter-active, +.slide-right-leave-active, +.slide-left-enter-active, +.slide-left-leave-active { + will-change: transform; + transition: all 0.3s ease; +} +// slide-right +.slide-right-enter-from { + opacity: 0; + transform: translateX(-20px); +} +.slide-right-leave-to { + opacity: 0; + transform: translateX(20px); +} +// slide-left +.slide-left-enter-from { + @extend .slide-right-leave-to; +} +.slide-left-leave-to { + @extend .slide-right-enter-from; +} +// opacitys +.opacitys-enter-active, +.opacitys-leave-active { + will-change: transform; + transition: all 0.3s ease; +} +.opacitys-enter-from, +.opacitys-leave-to { + opacity: 0; +} + +/* Breadcrumb 面包屑过渡动画 +------------------------------- */ +.breadcrumb-enter-active, +.breadcrumb-leave-active { + transition: all 0.3s; +} +.breadcrumb-enter-from, +.breadcrumb-leave-active { + opacity: 0; + transform: translateX(20px); +} +.breadcrumb-leave-active { + position: absolute; +} + +/* logo 过渡动画 +------------------------------- */ +@keyframes logoAnimation { + 0% { + transform: scale(0); + } + 80% { + transform: scale(1.2); + } + 100% { + transform: scale(1); + } +} + +/* 404、401 过渡动画 +------------------------------- */ +@keyframes error-num { + 0% { + transform: translateY(60px); + opacity: 0; + } + 100% { + transform: translateY(0); + opacity: 1; + } +} +@keyframes error-img { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} diff --git a/src/theme/common/var.scss b/src/theme/common/var.scss new file mode 100644 index 0000000..388358d --- /dev/null +++ b/src/theme/common/var.scss @@ -0,0 +1,127 @@ +/** +* scss 怎么动态创建变量 +* 本来想用 @function,@for 好像不可以动态创建 +* 2020.12.19 lyt 记录 +**/ + +/* 定义初始颜色 +------------------------------- */ +$--color-primary: #409eff !default; +$--color-whites: #ffffff !default; +$--color-primary-light-1: mix($--color-whites, $--color-primary, 10%) !default; +$--color-primary-light-2: mix($--color-whites, $--color-primary, 20%) !default; +$--color-primary-light-3: mix($--color-whites, $--color-primary, 30%) !default; +$--color-primary-light-4: mix($--color-whites, $--color-primary, 40%) !default; +$--color-primary-light-5: mix($--color-whites, $--color-primary, 50%) !default; +$--color-primary-light-6: mix($--color-whites, $--color-primary, 60%) !default; +$--color-primary-light-7: mix($--color-whites, $--color-primary, 70%) !default; +$--color-primary-light-8: mix($--color-whites, $--color-primary, 80%) !default; +$--color-primary-light-9: mix($--color-whites, $--color-primary, 90%) !default; +$--color-success: #67c23a !default; +$--color-success-light-1: mix($--color-whites, $--color-success, 10%) !default; +$--color-success-light-2: mix($--color-whites, $--color-success, 20%) !default; +$--color-success-light-3: mix($--color-whites, $--color-success, 30%) !default; +$--color-success-light-4: mix($--color-whites, $--color-success, 40%) !default; +$--color-success-light-5: mix($--color-whites, $--color-success, 50%) !default; +$--color-success-light-6: mix($--color-whites, $--color-success, 60%) !default; +$--color-success-light-7: mix($--color-whites, $--color-success, 70%) !default; +$--color-success-light-8: mix($--color-whites, $--color-success, 80%) !default; +$--color-success-light-9: mix($--color-whites, $--color-success, 90%) !default; +$--color-info: #909399 !default; +$--color-info-light-1: mix($--color-whites, $--color-info, 10%) !default; +$--color-info-light-2: mix($--color-whites, $--color-info, 20%) !default; +$--color-info-light-3: mix($--color-whites, $--color-info, 30%) !default; +$--color-info-light-4: mix($--color-whites, $--color-info, 40%) !default; +$--color-info-light-5: mix($--color-whites, $--color-info, 50%) !default; +$--color-info-light-6: mix($--color-whites, $--color-info, 60%) !default; +$--color-info-light-7: mix($--color-whites, $--color-info, 70%) !default; +$--color-info-light-8: mix($--color-whites, $--color-info, 80%) !default; +$--color-info-light-9: mix($--color-whites, $--color-info, 90%) !default; +$--color-warning: #e6a23c !default; +$--color-warning-light-1: mix($--color-whites, $--color-warning, 10%) !default; +$--color-warning-light-2: mix($--color-whites, $--color-warning, 20%) !default; +$--color-warning-light-3: mix($--color-whites, $--color-warning, 30%) !default; +$--color-warning-light-4: mix($--color-whites, $--color-warning, 40%) !default; +$--color-warning-light-5: mix($--color-whites, $--color-warning, 50%) !default; +$--color-warning-light-6: mix($--color-whites, $--color-warning, 60%) !default; +$--color-warning-light-7: mix($--color-whites, $--color-warning, 70%) !default; +$--color-warning-light-8: mix($--color-whites, $--color-warning, 80%) !default; +$--color-warning-light-9: mix($--color-whites, $--color-warning, 90%) !default; +$--color-danger: #f56c6c !default; +$--color-danger-light-1: mix($--color-whites, $--color-danger, 10%) !default; +$--color-danger-light-2: mix($--color-whites, $--color-danger, 20%) !default; +$--color-danger-light-3: mix($--color-whites, $--color-danger, 30%) !default; +$--color-danger-light-4: mix($--color-whites, $--color-danger, 40%) !default; +$--color-danger-light-5: mix($--color-whites, $--color-danger, 50%) !default; +$--color-danger-light-6: mix($--color-whites, $--color-danger, 60%) !default; +$--color-danger-light-7: mix($--color-whites, $--color-danger, 70%) !default; +$--color-danger-light-8: mix($--color-whites, $--color-danger, 80%) !default; +$--color-danger-light-9: mix($--color-whites, $--color-danger, 90%) !default; +$--bg-topBar: #ffffff; +$--bg-menuBar: #545c64; +$--bg-columnsMenuBar: #545c64; +$--bg-topBarColor: #606266; +$--bg-menuBarColor: #eaeaea; +$--bg-columnsMenuBarColor: #e6e6e6; + +/* 赋值给:root +------------------------------- */ +:root { + --color-primary: #{$--color-primary}; + --color-whites: #{$--color-whites}; + --color-primary-light-1: #{$--color-primary-light-1}; + --color-primary-light-2: #{$--color-primary-light-2}; + --color-primary-light-3: #{$--color-primary-light-3}; + --color-primary-light-4: #{$--color-primary-light-4}; + --color-primary-light-5: #{$--color-primary-light-5}; + --color-primary-light-6: #{$--color-primary-light-6}; + --color-primary-light-7: #{$--color-primary-light-7}; + --color-primary-light-8: #{$--color-primary-light-8}; + --color-primary-light-9: #{$--color-primary-light-9}; + --color-success: #{$--color-success}; + --color-success-light-1: #{$--color-success-light-1}; + --color-success-light-2: #{$--color-success-light-2}; + --color-success-light-3: #{$--color-success-light-3}; + --color-success-light-4: #{$--color-success-light-4}; + --color-success-light-5: #{$--color-success-light-5}; + --color-success-light-6: #{$--color-success-light-6}; + --color-success-light-7: #{$--color-success-light-7}; + --color-success-light-8: #{$--color-success-light-8}; + --color-success-light-9: #{$--color-success-light-9}; + --color-info: #{$--color-info}; + --color-info-light-1: #{$--color-info-light-1}; + --color-info-light-2: #{$--color-info-light-2}; + --color-info-light-3: #{$--color-info-light-3}; + --color-info-light-4: #{$--color-info-light-4}; + --color-info-light-5: #{$--color-info-light-5}; + --color-info-light-6: #{$--color-info-light-6}; + --color-info-light-7: #{$--color-info-light-7}; + --color-info-light-8: #{$--color-info-light-8}; + --color-info-light-9: #{$--color-info-light-9}; + --color-warning: #{$--color-warning}; + --color-warning-light-1: #{$--color-warning-light-1}; + --color-warning-light-2: #{$--color-warning-light-2}; + --color-warning-light-3: #{$--color-warning-light-3}; + --color-warning-light-4: #{$--color-warning-light-4}; + --color-warning-light-5: #{$--color-warning-light-5}; + --color-warning-light-6: #{$--color-warning-light-6}; + --color-warning-light-7: #{$--color-warning-light-7}; + --color-warning-light-8: #{$--color-warning-light-8}; + --color-warning-light-9: #{$--color-warning-light-9}; + --color-danger: #{$--color-danger}; + --color-danger-light-1: #{$--color-danger-light-1}; + --color-danger-light-2: #{$--color-danger-light-2}; + --color-danger-light-3: #{$--color-danger-light-3}; + --color-danger-light-4: #{$--color-danger-light-4}; + --color-danger-light-5: #{$--color-danger-light-5}; + --color-danger-light-6: #{$--color-danger-light-6}; + --color-danger-light-7: #{$--color-danger-light-7}; + --color-danger-light-8: #{$--color-danger-light-8}; + --color-danger-light-9: #{$--color-danger-light-9}; + --bg-topBar: #{$--bg-topBar}; + --bg-menuBar: #{$--bg-menuBar}; + --bg-columnsMenuBar: #{$--bg-columnsMenuBar}; + --bg-topBarColor: #{$--bg-topBarColor}; + --bg-menuBarColor: #{$--bg-menuBarColor}; + --bg-columnsMenuBarColor: #{$--bg-columnsMenuBarColor}; +} diff --git a/src/theme/dark.scss b/src/theme/dark.scss new file mode 100644 index 0000000..e2b03e6 --- /dev/null +++ b/src/theme/dark.scss @@ -0,0 +1,57 @@ +/* 深色模式样式 +------------------------------- */ +[data-theme='dark'] { + // 全局 + filter: invert(0.9) hue-rotate(180deg); + img, + .layout-lock-screen-img, + .visualizing-demo2, + .w-e-panel-tab-content { + filter: invert(1) hue-rotate(180deg); + } + .error img { + filter: unset; + } + + // element plus + .el-radio-button__original-radio:checked + .el-radio-button__inner, + .el-image-viewer__close, + .el-image-viewer__actions__inner, + .el-image-viewer__next, + .el-image-viewer__prev { + color: #000000 !important; + } + .el-overlay { + background-color: rgba(0, 0, 0, 0.05) !important; + } + .el-drawer { + box-shadow: 0 8px 10px -5px rgb(0 0 0 / 1%), 0 16px 24px 2px rgb(0 0 0 / 2%), 0 6px 30px 5px rgb(0 0 0 / 1%); + } + + // 数据可视化演示 + .visualizing-container-head { + background: linear-gradient(to bottom, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.3), rgba(255, 255, 255, 0.02)) !important; + .visualizing-container-head-left-text-box { + color: #000000 !important; + } + } + .visualizing-container-content-left { + background: linear-gradient(to right, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.01)) !important; + } + .visualizing-container-content-center { + background: linear-gradient(to top, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.01)) !important; + } + .visualizing-container-content-right { + background: linear-gradient(to left, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0.01)) !important; + } + .cropper-modal { + background-color: #ffffff; + } + + // 其它菜单等 + --bg-menuBar: #ffffff !important; + --bg-menuBarColor: #303133 !important; + --bg-columnsMenuBar: #ffffff !important; + --bg-columnsMenuBarColor: #303133 !important; + --color-whites: #000000 !important; +} diff --git a/src/theme/element.scss b/src/theme/element.scss new file mode 100644 index 0000000..9a24951 --- /dev/null +++ b/src/theme/element.scss @@ -0,0 +1,1084 @@ +@import 'mixins/function.scss'; +@import 'mixins/element-mixins.scss'; +@import 'mixins/mixins.scss'; + +/* Button 按钮 +------------------------------- */ +// text +.el-button--text { + color: set-color(primary); + &:focus, + &:hover { + color: set-color(primary-light-3); + } +} +.el-button--text:active { + color: set-color(primary-light-3); +} +// default +.el-button--default:hover, +.el-button--default:focus { + @include Button(primary, primary-light-8, primary-light-6); +} +.el-button--default.is-plain:hover, +.el-button--default.is-plain:focus { + @include Button(primary, whites, primary-light-1); +} +.el-button--default:active { + @include Button(primary, whites, primary-light-1); +} +// primary +.el-button--primary { + @include Button(whites, primary, primary); + &:hover, + &:focus { + @include Button(whites, primary-light-3, primary-light-3); + } +} +.el-button--primary.is-plain { + @include Button(primary, primary-light-8, primary-light-6); + &:hover, + &:focus { + @include Button(whites, primary, primary); + } +} +.el-button--primary.is-disabled, +.el-button--primary.is-disabled:active, +.el-button--primary.is-disabled:focus, +.el-button--primary.is-disabled:hover { + @include Button(whites, primary-light-7, primary-light-7); +} +.el-button--primary.is-active, +.el-button--primary:active { + @include Button(whites, primary, primary); +} +// success +.el-button--success { + @include Button(whites, success, success); + &:hover, + &:focus { + @include Button(whites, success-light-3, success-light-3); + } +} +.el-button--success.is-plain { + @include Button(success, success-light-8, success-light-6); + &:hover, + &:focus { + @include Button(whites, success, success); + } +} +.el-button--success.is-active, +.el-button--success:active { + @include Button(whites, success, success); +} +// info +.el-button--info { + @include Button(whites, info, info); + &:hover, + &:focus { + @include Button(whites, info-light-3, info-light-3); + } +} +.el-button--info.is-plain { + @include Button(info, info-light-8, info-light-6); + &:hover, + &:focus { + @include Button(whites, info, info); + } +} +.el-button--info.is-active, +.el-button--info:active { + @include Button(whites, info, info); +} +// warning +.el-button--warning { + @include Button(whites, warning, warning); + &:hover, + &:focus { + @include Button(whites, warning-light-3, warning-light-3); + } +} +.el-button--warning.is-plain { + @include Button(warning, warning-light-8, warning-light-6); + &:hover, + &:focus { + @include Button(whites, warning, warning); + } +} +.el-button--warning.is-active, +.el-button--warning:active { + @include Button(whites, warning, warning); +} +// danger +.el-button--danger { + @include Button(whites, danger, danger); + &:hover, + &:focus { + @include Button(whites, danger-light-3, danger-light-3); + } +} +.el-button--danger.is-plain { + @include Button(danger, danger-light-8, danger-light-6); + &:hover, + &:focus { + @include Button(whites, danger, danger); + } +} +.el-button--danger.is-active, +.el-button--danger:active { + @include Button(whites, danger, danger); +} +// 第三方字体图标大小 +.el-button i.iconfont, +.el-button i.fa { + font-size: 14px !important; + margin-right: 5px; +} +.el-button--medium i.iconfont, +.el-button--medium i.fa { + font-size: 14px !important; + margin-right: 5px; +} +.el-button--small i.iconfont, +.el-button--small i.fa { + font-size: 12px !important; + margin-right: 5px; +} +.el-button--mini i.iconfont, +.el-button--mini i.fa { + font-size: 12px !important; + margin-right: 5px; +} + +/* Link 文字链接 +------------------------------- */ +// default +.el-link.el-link--default:hover { + color: set-color(primary-light-3); +} +// primary +.el-link.el-link--primary { + color: set-color(primary); + &:hover { + color: set-color(primary-light-3); + } +} +.el-link.el-link--default::after, +.el-link.is-underline:hover::after, +.el-link.el-link--primary.is-underline:hover::after, +.el-link.el-link--primary::after { + border-color: set-color(primary); +} +// success +.el-link.el-link--success { + color: set-color(success); + &:hover { + color: set-color(success-light-3); + } +} +.el-link.el-link--success.is-underline:hover::after, +.el-link.el-link--success::after { + border-color: set-color(success); +} +// info +.el-link.el-link--info { + color: set-color(info); + &:hover { + color: set-color(info-light-3); + } +} +.el-link.el-link--info.is-underline:hover::after, +.el-link.el-link--info::after { + border-color: set-color(info); +} +// warning +.el-link.el-link--warning { + color: set-color(warning); + &:hover { + color: set-color(warning-light-3); + } +} +.el-link.el-link--warning.is-underline:hover::after, +.el-link.el-link--warning::after { + border-color: set-color(warning); +} +// danger +.el-link.el-link--danger { + color: set-color(danger); + &:hover { + color: set-color(danger-light-3); + } +} +.el-link.el-link--danger.is-underline:hover::after, +.el-link.el-link--danger::after { + border-color: set-color(danger); +} + +/* Radio 单选框 +------------------------------- */ +.el-radio__input.is-checked + .el-radio__label, +.el-radio-button__inner:hover { + color: set-color(primary); +} +.el-radio__input.is-checked .el-radio__inner { + @include RadioCheckbox(primary); +} +.el-radio-button__orig-radio:checked + .el-radio-button__inner { + color: set-color(whites); + @include RadioCheckbox(primary); + box-shadow: -1px 0 0 0 set-color(primary); +} +.el-radio.is-bordered.is-checked, +.el-radio__inner:hover { + border-color: set-color(primary); +} + +/* Checkbox 多选框 +------------------------------- */ +.el-checkbox__input.is-checked + .el-checkbox__label, +.el-checkbox-button__inner:hover { + color: set-color(primary); +} +.el-checkbox__input.is-checked .el-checkbox__inner { + @include RadioCheckbox(primary); +} +.el-checkbox__input.is-focus .el-checkbox__inner, +.el-checkbox__inner:hover, +.el-checkbox.is-bordered.is-checked, +.el-checkbox-button.is-focus .el-checkbox-button__inner { + border-color: set-color(primary); +} +.el-checkbox-button.is-checked .el-checkbox-button__inner { + color: set-color(whites); + @include RadioCheckbox(primary); + box-shadow: -1px 0 0 0 set-color(primary); +} +.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner { + border-left-color: set-color(primary); +} +.el-checkbox__input.is-checked .el-checkbox__inner, +.el-checkbox__input.is-indeterminate .el-checkbox__inner { + background-color: set-color(primary); + border-color: set-color(primary); +} + +/* Input 输入框、InputNumber 计数器 +------------------------------- */ +.el-input__inner:focus, +.el-input-number__decrease:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled), +.el-input-number__increase:hover:not(.is-disabled) ~ .el-input .el-input__inner:not(.is-disabled), +.el-textarea__inner:focus { + border-color: set-color(primary); +} +.el-input-number__increase:hover, +.el-input-number__decrease:hover { + color: set-color(primary); +} +// 菜单搜索 +.el-autocomplete-suggestion__wrap { + max-height: 280px !important; +} + +/* Select 选择器 +------------------------------- */ +.el-range-editor.is-active, +.el-range-editor.is-active:hover, +.el-select .el-input.is-focus .el-input__inner, +.el-select .el-input__inner:focus { + border-color: set-color(primary); +} +.el-select-dropdown__item.selected { + color: set-color(primary); +} + +/* Cascader 级联选择器 +------------------------------- */ +.el-cascader .el-input .el-input__inner:focus, +.el-cascader .el-input.is-focus .el-input__inner { + border-color: set-color(primary); +} +.el-cascader-node.in-active-path, +.el-cascader-node.is-active, +.el-cascader-node.is-selectable.in-checked-path { + color: set-color(primary); +} + +/* Switch 开关 +------------------------------- */ +.el-switch.is-checked .el-switch__core { + border-color: set-color(primary); + background-color: set-color(primary); +} +.el-switch__label.is-active { + color: set-color(primary); +} + +/* Slider 滑块 +------------------------------- */ +.el-slider__bar { + background-color: set-color(primary); +} +.el-slider__button { + border-color: set-color(primary); +} + +/* TimePicker 时间选择器 +------------------------------- */ +.el-time-panel__btn.confirm, +.el-time-spinner__arrow:hover { + color: set-color(primary); +} + +/* DatePicker 日期选择器 +------------------------------- */ +.el-date-table td.today span, +.el-date-table td.available:hover, +.el-date-picker__header-label.active, +.el-date-picker__header-label:hover, +.el-picker-panel__icon-btn:hover, +.el-year-table td.today .cell, +.el-year-table td .cell:hover, +.el-year-table td.current:not(.disabled) .cell, +.el-month-table td .cell:hover, +.el-month-table td.today .cell, +.el-month-table td.current:not(.disabled) .cell, +.el-picker-panel__shortcut:hover { + color: set-color(primary); +} +.el-date-table td.current:not(.disabled) span, +.el-date-table td.selected span { + color: set-color(whites); + background-color: set-color(primary); +} +.el-date-table td.end-date span, +.el-date-table td.start-date span { + background-color: set-color(primary); +} +.el-date-table td.in-range div, +.el-date-table td.in-range div:hover, +.el-date-table.is-week-mode .el-date-table__row.current div, +.el-date-table.is-week-mode .el-date-table__row:hover div, +.el-date-table td.selected div { + background-color: set-color(primary-light-9); +} + +/* Upload 上传 +------------------------------- */ +.el-upload-list__item.is-success .el-upload-list__item-name:focus, +.el-upload-list__item.is-success .el-upload-list__item-name:hover, +.el-upload-list__item .el-icon-close-tip, +.el-upload-dragger .el-upload__text em { + color: set-color(primary); +} +.el-upload--picture-card:hover, +.el-upload:focus { + color: set-color(primary); + border-color: set-color(primary); +} +.el-upload-dragger:hover, +.el-upload:focus .el-upload-dragger { + border-color: set-color(primary); +} + +/* Transfer 穿梭框 +------------------------------- */ +.el-transfer-panel__item:hover { + color: set-color(primary); +} + +.transferDiv{ + .el-transfer-panel { + width: 400px; + } +} + +/* Form 表单 +------------------------------- */ +.el-form { + .el-form-item:last-of-type { + margin-bottom: 0 !important; + } +} + +/* Table 表格 +------------------------------- */ +.el-table .descending .sort-caret.descending { + border-top-color: set-color(primary); +} +.el-table .ascending .sort-caret.ascending { + border-bottom-color: set-color(primary); +} + +/* Tag 标签 +------------------------------- */ +// primary +.el-tag { + @include Tag(primary, primary-light-8, primary-light-6); +} +.el-tag .el-tag__close { + color: set-color(primary); + &:hover { + @include TagDark(whites, primary); + } +} +.el-tag--dark { + @include TagDark(whites, primary); +} +.el-tag--dark .el-tag__close { + color: set-color(whites); + &:hover { + background-color: set-color(primary-light-3); + } +} +.el-tag--plain { + @include Tag(primary, whites, primary-light-3); +} +// success +.el-tag.el-tag--success { + @include Tag(success, success-light-8, success-light-6); +} +.el-tag.el-tag--success .el-tag__close { + color: set-color(success); + &:hover { + @include TagDark(whites, success); + } +} +.el-tag--dark.el-tag--success { + @include TagDark(whites, success); +} +.el-tag--dark.el-tag--success .el-tag__close { + color: set-color(whites); + &:hover { + background-color: set-color(success-light-3); + } +} +.el-tag--plain.el-tag--success { + @include Tag(success, whites, success-light-3); +} +// info +.el-tag.el-tag--info { + @include Tag(info, info-light-8, info-light-6); +} +.el-tag.el-tag--info .el-tag__close { + color: set-color(info); + &:hover { + @include TagDark(whites, info); + } +} +.el-tag--dark.el-tag--info { + @include TagDark(whites, info); +} +.el-tag--dark.el-tag--info .el-tag__close { + color: set-color(whites); + &:hover { + background-color: set-color(info-light-3); + } +} +.el-tag--plain.el-tag--info { + @include Tag(info, whites, info-light-3); +} +// warning +.el-tag.el-tag--warning { + @include Tag(warning, warning-light-8, warning-light-6); +} +.el-tag.el-tag--warning .el-tag__close { + color: set-color(warning); + &:hover { + @include TagDark(whites, warning); + } +} +.el-tag--dark.el-tag--warning { + @include TagDark(whites, warning); +} +.el-tag--dark.el-tag--warning .el-tag__close { + color: set-color(whites); + &:hover { + background-color: set-color(warning-light-3); + } +} +.el-tag--plain.el-tag--warning { + @include Tag(warning, whites, warning-light-3); +} +// danger +.el-tag.el-tag--danger { + @include Tag(danger, danger-light-8, danger-light-6); +} +.el-tag.el-tag--danger .el-tag__close { + color: set-color(danger); + &:hover { + @include TagDark(whites, danger); + } +} +.el-tag--dark.el-tag--danger { + @include TagDark(whites, danger); +} +.el-tag--dark.el-tag--danger .el-tag__close { + color: set-color(whites); + &:hover { + background-color: set-color(danger-light-3); + } +} +.el-tag--plain.el-tag--danger { + @include Tag(danger, whites, danger-light-3); +} + +/* Progress 进度条 +------------------------------- */ +// primary +.el-progress-bar__inner { + background-color: set-color(primary) !important; +} +// success +.el-progress.is-success .el-progress-bar__inner { + background-color: set-color(success) !important; +} +.el-progress.is-success .el-progress__text { + color: set-color(success) !important; +} +// warning +.el-progress.is-warning .el-progress-bar__inner { + background-color: set-color(warning) !important; +} +.el-progress.is-warning .el-progress__text { + color: set-color(warning) !important; +} +// danger +.el-badge__content, +.el-progress.is-exception .el-progress-bar__inner { + background-color: set-color(danger) !important; +} +.el-progress.is-exception .el-progress__text { + color: set-color(danger) !important; +} + +/* Pagination 分页 +------------------------------- */ +.el-pager li.active, +.el-pager li:hover, +.el-pagination button:hover, +.el-pagination.is-background .el-pager li:not(.disabled):hover { + color: set-color(primary); +} +.el-pagination__sizes .el-input .el-input__inner:hover { + border-color: set-color(primary); +} +.el-pagination.is-background .el-pager li:not(.disabled).active { + background-color: set-color(primary); + color: set-color(whites); +} + +/* Badge 标记 +------------------------------- */ +// primary +.el-badge__content--primary { + background-color: set-color(primary); +} +// success +.el-badge__content--success { + background-color: set-color(success); +} +// warning +.el-badge__content--warning { + background-color: set-color(warning); +} +// danger +.el-badge__content--danger { + background-color: set-color(danger); +} +// info +.el-badge__content--info { + background-color: set-color(info); +} + +/* Result 结果 +------------------------------- */ +// success +.el-result .icon-success { + fill: set-color(success); +} +// warning +.el-result .icon-warning { + fill: set-color(warning); +} +// error +.el-result .icon-error { + fill: set-color(danger); +} +// info +.el-result .icon-info { + fill: set-color(info); +} + +/* Alert 警告 +------------------------------- */ +// success +.el-alert--success.is-light { + @include Alert(success, success-light-9, success-light-7); +} +.el-alert--success.is-dark { + @include Alert(whites, success, success-light-7); +} +.el-alert--success.is-light .el-alert__description { + color: set-color(success); +} +// warning +.el-alert--warning.is-light { + @include Alert(warning, warning-light-9, warning-light-7); +} +.el-alert--warning.is-dark { + @include Alert(whites, warning, warning-light-7); +} +.el-alert--warning.is-light .el-alert__description { + color: set-color(warning); +} +// info +.el-alert--info.is-light { + @include Alert(info, info-light-9, info-light-7); +} +.el-alert--info.is-dark { + @include Alert(whites, info, info-light-7); +} +.el-alert--info.is-light .el-alert__description { + color: set-color(info); +} +// error +.el-alert--error.is-light { + @include Alert(danger, danger-light-9, danger-light-7); +} +.el-alert--error.is-dark { + @include Alert(whites, danger, danger-light-7); +} +.el-alert--error.is-light .el-alert__description { + color: set-color(danger); +} +.el-alert__title { + word-break: break-all; +} + +/* Loading 加载 +------------------------------- */ + +/* 全局修改 ElLoading 样式 */ +.el-loading-mask { + background-color: rgba(255, 255, 255, 0) !important; +} + +.el-loading-text { + color: #409EFF !important; +} + +.el-loading-spinner .el-spinner { + color: #409EFF !important; +} +.el-loading-spinner .path { + background: var(--color-primary); + stroke: set-color(primary); +} +.el-loading-spinner .el-loading-text, +.el-loading-spinner i { + color: set-color(primary); +} + +/* Message 消息提示 +------------------------------- */ +// default/info +.el-message { + background-color: set-color(info-light-9); + border-color: set-color(info-light-8); + min-width: unset !important; + padding: 15px !important; +} +.el-message .el-message__content, +.el-message .el-icon-info { + color: set-color(info); +} +// success +.el-message--success { + background-color: set-color(success-light-9); + border-color: set-color(success-light-8); +} +.el-message--success .el-message__content, +.el-message .el-icon-success { + color: set-color(success); +} +// warning +.el-message--warning { + background-color: set-color(warning-light-9); + border-color: set-color(warning-light-8); +} +.el-message--warning .el-message__content, +.el-message .el-icon-warning { + color: set-color(warning); +} +// error +.el-message--error { + background-color: set-color(danger-light-9); + border-color: set-color(danger-light-8); +} +.el-message--error .el-message__content, +.el-message .el-icon-error { + color: set-color(danger); +} + +/* MessageBox 弹框 +------------------------------- */ +.el-message-box__headerbtn:focus .el-message-box__close, +.el-message-box__headerbtn:hover .el-message-box__close { + color: set-color(primary); +} +// success +.el-message-box__status.el-icon-success { + color: set-color(success); +} +// info +.el-message-box__status.el-icon-info { + color: set-color(info); +} +// warning +.el-message-box__status.el-icon-warning { + color: set-color(warning); +} +// error +.el-message-box__status.el-icon-error { + color: set-color(danger); +} + +/* Notification 通知 +------------------------------- */ +// success +.el-notification .el-icon-success { + color: set-color(success); +} +// info +.el-notification .el-icon-info { + color: set-color(info); +} +// warning +.el-notification .el-icon-warning { + color: set-color(warning); +} +// error +.el-notification .el-icon-error { + color: set-color(danger); +} + +/* NavMenu 导航菜单 +------------------------------- */ +// 默认样式修改 +.el-menu { + border-right: none !important; + // width: 220px; +} +// 修复点击左侧菜单折叠再展开时,宽度不跟随问题 +.el-menu--collapse { + width: 64px !important; +} +.el-menu-item, +.el-sub-menu__title { + height: 50px !important; + line-height: 50px !important; + color: var(--bg-menuBarColor); + transition: none !important; +} +// horizontal 水平方向时 +.el-menu--horizontal > .el-menu-item.is-active, +.el-menu--horizontal > .el-sub-menu.is-active .el-sub-menu__title { + border-bottom: 3px solid !important; + border-bottom-color: set-color(primary); + color: set-color(primary) !important; +} +.el-menu--horizontal .el-menu-item:not(.is-disabled):focus, +.el-menu--horizontal .el-menu-item:not(.is-disabled):hover, +.el-menu--horizontal > .el-sub-menu:focus .el-sub-menu__title, +.el-menu--horizontal > .el-sub-menu:hover .el-sub-menu__title, +.el-menu--horizontal .el-menu .el-menu-item.is-active, +.el-menu--horizontal .el-menu .el-sub-menu.is-active > .el-sub-menu__title { + color: set-color(primary) !important; +} +.el-menu.el-menu--horizontal { + border-bottom: none !important; +} +.el-menu--horizontal > .el-menu-item, +.el-menu--horizontal > .el-sub-menu .el-sub-menu__title { + color: var(--bg-topBarColor); +} +// 外部链接时 +.el-menu-item a, +.el-menu-item a:hover, +.el-menu-item i, +.el-sub-menu__title i { + color: inherit; + text-decoration: none; +} +.el-menu-item a { + width: 86%; + display: inline-block; +} +// 默认 hover 时 +.el-menu-item:hover, +.el-sub-menu__title:hover { + color: set-color(primary) !important; + background-color: transparent !important; + i { + color: set-color(primary); + } +} +// 高亮时/菜单收起时 +.el-menu-item.is-active, +.el-menu--collapse .el-sub-menu.is-active i { + color: set-color(primary); +} +.el-active-extend { + color: var(--color-whites) !important; + background-color: set-color(primary) !important; + i { + color: var(--color-whites) !important; + } +} +#add-is-active { + @extend .el-active-extend; + &:hover { + @extend .el-active-extend; + } +} +// 菜单收起时且是a链接 +.el-popper.is-dark a { + color: var(--color-whites) !important; + text-decoration: none; +} +// 菜单收起时鼠标经过背景颜色/字体颜色 +.el-popper.is-light { + .el-menu--vertical { + .el-menu { + background: var(--bg-menuBar); + } + } + .el-menu--horizontal { + background: var(--bg-topBar); + .el-menu, + .el-menu-item, + .el-sub-menu__title { + color: var(--bg-topBarColor); + background: var(--bg-topBar); + } + } +} +// 第三方图标字体间距/大小设置 +.el-menu-item .iconfont, +.el-sub-menu .iconfont { + @include generalIcon; +} +.el-menu-item .fa, +.el-sub-menu .fa { + @include generalIcon; +} +// element plus 本身字体图标 +.el-sub-menu .el-icon { + font-size: 14px !important; +} +// 去掉离开浏览器时,菜单的默认高亮 +.el-menu-item:focus { + background-color: transparent !important; +} + +/* Tabs 标签页 +------------------------------- */ +.el-tabs__item.is-active, +.el-tabs__item:hover, +.el-tabs--border-card > .el-tabs__header .el-tabs__item.is-active, +.el-tabs--border-card > .el-tabs__header .el-tabs__item:not(.is-disabled):hover { + color: set-color(primary); +} +.el-tabs__active-bar { + background-color: set-color(primary); +} +.el-tabs__nav-wrap::after { + height: 1px !important; +} + +/* Breadcrumb 面包屑 +------------------------------- */ +.el-breadcrumb__inner a:hover, +.el-breadcrumb__inner.is-link:hover { + color: set-color(primary); +} +.el-breadcrumb__inner a, +.el-breadcrumb__inner.is-link { + color: var(--bg-topBarColor); + font-weight: normal; +} + +/* Dropdown 下拉菜单 +------------------------------- */ +.el-dropdown-menu__item:focus, +.el-dropdown-menu__item:not(.is-disabled):hover { + color: set-color(primary); + background-color: set-color(primary-light-9); +} +.el-dropdown-menu .el-dropdown-menu__item { + white-space: nowrap; +} + +/* Steps 步骤条 +------------------------------- */ +// default +.el-step__title.is-finish, +.el-step__description.is-finish, +.el-step__head.is-finish { + color: set-color(primary); +} +.el-step__head.is-finish { + border-color: set-color(primary); +} +// success +.el-step__title.is-success, +.el-step__head.is-success { + color: set-color(success); +} +.el-step__head.is-success { + border-color: set-color(success); +} +// error +.el-step__title.is-error, +.el-step__head.is-error { + color: set-color(danger); +} +.el-step__head.is-error { + border-color: set-color(danger); +} +.el-step__icon-inner { + font-size: 30px !important; + font-weight: 400 !important; +} +.el-step__title { + font-size: 14px; +} + +/* Dialog 对话框 +------------------------------- */ +.el-dialog__headerbtn:focus .el-dialog__close, +.el-dialog__headerbtn:hover .el-dialog__close { + color: set-color(primary); +} +.el-overlay { + overflow: hidden; + .el-overlay-dialog { + display: flex; + align-items: center; + justify-content: center; + position: unset !important; + width: 100%; + height: 100%; + .el-dialog { + margin: 0 auto !important; + position: absolute; + .el-dialog__body { + padding: 20px !important; + } + } + } +} +.el-dialog__body { + max-height: calc(90vh - 111px) !important; + overflow-y: auto; + overflow-x: hidden; +} + +/* Card 卡片 +------------------------------- */ +.el-card__header { + padding: 15px 20px; +} + +/* Timeline 时间线 +------------------------------- */ +// primary +.el-timeline-item__node--primary { + background-color: set-color(primary); +} +// success +.el-timeline-item__node--success { + background-color: set-color(success); +} +// warning +.el-timeline-item__node--warning { + background-color: set-color(warning); +} +// danger +.el-timeline-item__node--danger { + background-color: set-color(danger); +} +// info +.el-timeline-item__node--info { + background-color: set-color(info); +} + +/* Calendar 日历 +------------------------------- */ +.el-calendar-table td.is-today { + color: set-color(primary); + background-color: set-color(primary-light-9); +} +.el-calendar-table .el-calendar-day:hover, +.el-calendar-table td.is-selected { + background-color: set-color(primary-light-9); +} + +/* Backtop 回到顶部 +------------------------------- */ +.el-backtop { + color: set-color(primary); + &:hover { + background-color: set-color(primary-light-9); + } +} + +/* scrollbar +------------------------------- */ +.el-scrollbar__bar { + z-index: 4; +} +.el-scrollbar__wrap { + overflow-x: hidden !important; + max-height: 100%; /*防止页面切换时,滚动条高度不变的问题(滚动条高度非滚动条滚动高度)*/ +} +.el-select-dropdown .el-scrollbar__wrap { + overflow-x: scroll !important; +} +.el-select-dropdown__wrap { + max-height: 274px !important; /*修复Select 选择器高度问题*/ +} +.el-cascader-menu__wrap.el-scrollbar__wrap { + height: 204px !important; /*修复Cascader 级联选择器高度问题*/ +} + +/* Drawer 抽屉 +------------------------------- */ +.el-drawer { + --el-drawer-padding-primary: unset !important; + .el-drawer__header { + padding: 0 15px !important; + height: 50px; + display: flex; + align-items: center; + margin-bottom: 0 !important; + border-bottom: 1px solid rgb(230, 230, 230); + } + .el-drawer__body { + width: 100%; + height: 100%; + overflow: auto; + } +} +.el-drawer-fade-enter-active .el-drawer.rtl { + animation: rtl-drawer-animation 0.3s ease-in reverse !important; +} +.el-drawer-fade-leave-active .el-drawer.rtl { + animation: rtl-drawer-animation 0.3s ease !important; +} +.el-drawer-fade-enter-active .el-drawer.ltr { + animation: ltr-drawer-animation 0.3s ease-in reverse !important; +} +.el-drawer-fade-leave-active .el-drawer.ltr { + animation: ltr-drawer-animation 0.3s ease !important; +} diff --git a/src/theme/iconSelector.scss b/src/theme/iconSelector.scss new file mode 100644 index 0000000..6e599e6 --- /dev/null +++ b/src/theme/iconSelector.scss @@ -0,0 +1,70 @@ +/* Popover 弹出框(图标选择器) +------------------------------- */ +.icon-selector-popper { + padding: 0 !important; + .icon-selector-warp { + height: 260px; + overflow: hidden; + .icon-selector-warp-title { + height: 40px; + line-height: 40px; + padding: 0 15px; + .icon-selector-warp-title-tab { + span { + cursor: pointer; + &:hover { + color: var(--color-primary); + text-decoration: underline; + } + } + .span-active { + color: var(--color-primary); + text-decoration: underline; + } + } + } + .icon-selector-warp-row { + height: 230px; + overflow: hidden; + border-top: var(--el-border-base); + .el-row { + padding: 15px; + } + .el-scrollbar__bar.is-horizontal { + display: none; + } + .icon-selector-warp-item { + display: flex; + border: var(--el-border-base); + padding: 5px; + border-radius: 5px; + margin-bottom: 10px; + .icon-selector-warp-item-value { + i { + font-size: 20px; + color: var(--el-text-color-regular); + } + } + &:hover { + cursor: pointer; + background-color: var(--color-primary-light-9); + border: 1px solid var(--color-primary-light-6); + .icon-selector-warp-item-value { + i { + color: var(--color-primary); + } + } + } + } + .icon-selector-active { + background-color: var(--color-primary-light-9); + border: 1px solid var(--color-primary-light-6); + .icon-selector-warp-item-value { + i { + color: var(--color-primary); + } + } + } + } + } +} diff --git a/src/theme/index.scss b/src/theme/index.scss new file mode 100644 index 0000000..747bf52 --- /dev/null +++ b/src/theme/index.scss @@ -0,0 +1,12 @@ +@import './app.scss'; +@import './base.scss'; +@import './other.scss'; +@import './element.scss'; +@import './iconSelector.scss'; +@import './media/media.scss'; +@import './waves.scss'; +@import './dark.scss'; +@import '/public/css/font_2298093_rnp72ifj3ba.css'; +@import '/public/css//font-awesome2.min.css'; + + diff --git a/src/theme/loading.scss b/src/theme/loading.scss new file mode 100644 index 0000000..663bde0 --- /dev/null +++ b/src/theme/loading.scss @@ -0,0 +1,51 @@ +.loading-next { + width: 100%; + height: 100%; +} +.loading-next .loading-next-box { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} +.loading-next .loading-next-box-warp { + width: 80px; + height: 80px; +} +.loading-next .loading-next-box-warp .loading-next-box-item { + width: 33.333333%; + height: 33.333333%; + background: var(--color-primary); + float: left; + animation: loading-next-animation 1.2s infinite ease; + border-radius: 1px; +} +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(7) { + animation-delay: 0s; +} +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(4), +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(8) { + animation-delay: 0.1s; +} +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(1), +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(5), +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(9) { + animation-delay: 0.2s; +} +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(2), +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(6) { + animation-delay: 0.3s; +} +.loading-next .loading-next-box-warp .loading-next-box-item:nth-child(3) { + animation-delay: 0.4s; +} +@keyframes loading-next-animation { + 0%, + 70%, + 100% { + transform: scale3D(1, 1, 1); + } + 35% { + transform: scale3D(0, 0, 1); + } +} diff --git a/src/theme/media/chart.scss b/src/theme/media/chart.scss new file mode 100644 index 0000000..8485e39 --- /dev/null +++ b/src/theme/media/chart.scss @@ -0,0 +1,94 @@ +@import './index.scss'; + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + .big-data-down-left { + width: 100% !important; + flex-direction: unset !important; + flex-wrap: wrap; + .flex-warp-item { + min-height: 196.24px; + padding: 0 7.5px 15px 15px !important; + .flex-warp-item-box { + border: none !important; + border-bottom: 1px solid #ebeef5 !important; + } + } + } + .big-data-down-center { + width: 100% !important; + .big-data-down-center-one, + .big-data-down-center-two { + min-height: 196.24px; + padding-left: 15px !important; + .big-data-down-center-one-content { + border: none !important; + border-bottom: 1px solid #ebeef5 !important; + } + .flex-warp-item-box { + @extend .big-data-down-center-one-content; + } + } + } + .big-data-down-right { + .flex-warp-item { + .flex-warp-item-box { + border: none !important; + border-bottom: 1px solid #ebeef5 !important; + } + &:nth-of-type(2) { + padding-left: 15px !important; + } + &:last-of-type { + .flex-warp-item-box { + border: none !important; + } + } + } + } +} + +/* 页面宽度大于768px小于1200px +------------------------------- */ +@media screen and (min-width: $sm) and (max-width: $lg) { + .chart-warp-bottom { + .big-data-down-left { + width: 50% !important; + } + .big-data-down-center { + width: 50% !important; + } + .big-data-down-right { + .flex-warp-item { + width: 50% !important; + &:nth-of-type(2) { + padding-left: 7.5px !important; + } + } + } + } +} + +/* 页面宽度小于1200px +------------------------------- */ +@media screen and (max-width: $lg) { + .chart-warp-top { + .up-left { + display: none; + } + } + .chart-warp-bottom { + overflow-y: auto !important; + flex-wrap: wrap; + .big-data-down-right { + width: 100% !important; + flex-direction: unset !important; + flex-wrap: wrap; + .flex-warp-item { + min-height: 196.24px; + padding: 0 7.5px 15px 15px !important; + } + } + } +} diff --git a/src/theme/media/cityLinkage.scss b/src/theme/media/cityLinkage.scss new file mode 100644 index 0000000..1394156 --- /dev/null +++ b/src/theme/media/cityLinkage.scss @@ -0,0 +1,10 @@ +@import './index.scss'; + +/* 页面宽度小于576px +------------------------------- */ +@media screen and (max-width: $xs) { + .el-cascader__dropdown.el-popper { + overflow: auto; + max-width: 100%; + } +} diff --git a/src/theme/media/dialog.scss b/src/theme/media/dialog.scss new file mode 100644 index 0000000..023ccae --- /dev/null +++ b/src/theme/media/dialog.scss @@ -0,0 +1,12 @@ +@import './index.scss'; + +/* 页面宽度小于800px +------------------------------- */ +@media screen and (max-width: 800px) { + .el-dialog { + width: 90% !important; + } + .el-dialog.is-fullscreen { + width: 100% !important; + } +} diff --git a/src/theme/media/error.scss b/src/theme/media/error.scss new file mode 100644 index 0000000..727b7c4 --- /dev/null +++ b/src/theme/media/error.scss @@ -0,0 +1,35 @@ +@import './index.scss'; + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + .error { + .error-flex { + flex-direction: column-reverse !important; + height: auto !important; + width: 100% !important; + } + .right, + .left { + flex: unset !important; + display: flex !important; + } + .left-item { + margin: auto !important; + } + .right img { + max-width: 450px !important; + @extend .left-item; + } + } +} + +/* 页面宽度大于768px小于992px +------------------------------- */ +@media screen and (min-width: $sm) and (max-width: $md) { + .error { + .error-flex { + padding-left: 30px !important; + } + } +} diff --git a/src/theme/media/form.scss b/src/theme/media/form.scss new file mode 100644 index 0000000..098300b --- /dev/null +++ b/src/theme/media/form.scss @@ -0,0 +1,16 @@ +@import './index.scss'; + +/* 页面宽度小于576px +------------------------------- */ +@media screen and (max-width: $xs) { + .el-form-item__label { + width: 100% !important; + text-align: left !important; + } + .el-form-item__content { + margin-left: 0 !important; + } + .el-form-item { + display: unset !important; + } +} diff --git a/src/theme/media/home.scss b/src/theme/media/home.scss new file mode 100644 index 0000000..5005279 --- /dev/null +++ b/src/theme/media/home.scss @@ -0,0 +1,10 @@ +@import './index.scss'; + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + .home-warning-media, + .home-dynamic-media { + margin-top: 15px; + } +} diff --git a/src/theme/media/index.scss b/src/theme/media/index.scss new file mode 100644 index 0000000..0f2758d --- /dev/null +++ b/src/theme/media/index.scss @@ -0,0 +1,37 @@ +/* 栅格布局(媒体查询变量) +* $xs <768px 响应式栅格 +* $sm ≥768px 响应式栅格 +* $md ≥992px 响应式栅格 +* $lg ≥1200px 响应式栅格 +* $xl ≥1920px 响应式栅格 +------------------------------- */ +$xs: 576px; +$sm: 768px; +$md: 992px; +$lg: 1200px; +$xl: 1920px; + +/* 页面宽度小于576px +------------------------------- */ +@media screen and (max-width: $xs) { +} + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { +} + +/* 页面宽度大于768px小于992px +------------------------------- */ +@media screen and (min-width: $sm) and (max-width: $md) { +} + +/* 页面宽度大于992px小于1200px +------------------------------- */ +@media screen and (min-width: $md) and (max-width: $lg) { +} + +/* 页面宽度大于1920px +------------------------------- */ +@media screen and (min-width: $xl) { +} diff --git a/src/theme/media/layout.scss b/src/theme/media/layout.scss new file mode 100644 index 0000000..77cbec0 --- /dev/null +++ b/src/theme/media/layout.scss @@ -0,0 +1,55 @@ +@import './index.scss'; + +/* 页面宽度小于576px +------------------------------- */ +@media screen and (max-width: $xs) { + // MessageBox 弹框 + .el-message-box { + width: 80% !important; + } +} + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + // Breadcrumb 面包屑 + .layout-navbars-breadcrumb-hide { + display: none; + } + // 外链视图 + .layout-view-link { + a { + max-width: 80%; + text-align: center; + } + } + // 菜单搜索 + .layout-search-dialog { + .el-autocomplete { + width: 80% !important; + } + } +} + +/* 页面宽度小于1000px +------------------------------- */ +@media screen and (max-width: 1000px) { + // 布局配置 + .layout-drawer-content-flex { + position: relative; + &::after { + content: '手机版不支持切换布局'; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + text-align: center; + height: 140px; + line-height: 140px; + background: rgba(255, 255, 255, 0.9); + color: #666666; + } + } +} diff --git a/src/theme/media/login.scss b/src/theme/media/login.scss new file mode 100644 index 0000000..caaf669 --- /dev/null +++ b/src/theme/media/login.scss @@ -0,0 +1,37 @@ +@import './index.scss'; + +/* 页面宽度小于576px +------------------------------- */ +@media screen and (max-width: $xs) { + .login-container { + background: none !important; + .login-logo { + display: none; + } + .login-content { + width: 100% !important; + height: 100% !important; + padding: 20px 0 !important; + border-radius: 0 !important; + box-shadow: unset !important; + border: none !important; + } + .login-copyright { + display: none !important; + } + .el-form-item { + display: flex !important; + } + } +} + +/* 页面宽度小于375px +------------------------------- */ +@media screen and (max-width: 376px) { + .login-container { + .login-content-title { + font-size: 18px !important; + transition: all 0.3s ease; + } + } +} diff --git a/src/theme/media/media.scss b/src/theme/media/media.scss new file mode 100644 index 0000000..c470d5c --- /dev/null +++ b/src/theme/media/media.scss @@ -0,0 +1,12 @@ +@import './login.scss'; +@import './error.scss'; +@import './layout.scss'; +@import './personal.scss'; +@import './tagsView.scss'; +@import './home.scss'; +@import './chart.scss'; +@import './form.scss'; +@import './scrollbar.scss'; +@import './pagination.scss'; +@import './dialog.scss'; +@import './cityLinkage.scss'; diff --git a/src/theme/media/pagination.scss b/src/theme/media/pagination.scss new file mode 100644 index 0000000..338eceb --- /dev/null +++ b/src/theme/media/pagination.scss @@ -0,0 +1,19 @@ +@import './index.scss'; + +/* 页面宽度小于576px +------------------------------- */ +@media screen and (max-width: $xs) { + .el-pager, + .el-pagination__jump { + display: none !important; + } +} + +// 默认居中对齐 +.el-pagination { + text-align: left; + background: #fff; + height: 50px; + // line-height: 50px; + padding-top: 10px; +} diff --git a/src/theme/media/personal.scss b/src/theme/media/personal.scss new file mode 100644 index 0000000..7ec0d4a --- /dev/null +++ b/src/theme/media/personal.scss @@ -0,0 +1,16 @@ +@import './index.scss'; + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + .personal-info { + padding-left: 0 !important; + margin-top: 15px; + } + .personal-recommend-col { + margin-bottom: 15px; + &:last-of-type { + margin-bottom: 0; + } + } +} diff --git a/src/theme/media/scrollbar.scss b/src/theme/media/scrollbar.scss new file mode 100644 index 0000000..b63b372 --- /dev/null +++ b/src/theme/media/scrollbar.scss @@ -0,0 +1,56 @@ +@import './index.scss'; + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + // 滚动条的宽度 + ::-webkit-scrollbar { + width: 3px !important; + height: 3px !important; + } + ::-webkit-scrollbar-track-piece { + background-color: #f8f8f8; + } + // 滚动条的设置 + ::-webkit-scrollbar-thumb { + background-color: rgba(144, 147, 153, 0.3); + background-clip: padding-box; + min-height: 28px; + border-radius: 5px; + transition: 0.3s background-color; + } + ::-webkit-scrollbar-thumb:hover { + background-color: rgba(144, 147, 153, 0.5); + } + // element plus scrollbar + .el-scrollbar__bar.is-vertical { + width: 2px !important; + } + .el-scrollbar__bar.is-horizontal { + height: 2px !important; + } +} + +/* 页面宽度大于768px +------------------------------- */ +@media screen and (min-width: 769px) { + // 滚动条的宽度 + ::-webkit-scrollbar { + width: 7px; + height: 7px; + } + ::-webkit-scrollbar-track-piece { + background-color: #f8f8f8; + } + // 滚动条的设置 + ::-webkit-scrollbar-thumb { + background-color: rgba(144, 147, 153, 0.3); + background-clip: padding-box; + min-height: 28px; + border-radius: 5px; + transition: 0.3s background-color; + } + ::-webkit-scrollbar-thumb:hover { + background-color: rgba(144, 147, 153, 0.5); + } +} diff --git a/src/theme/media/tagsView.scss b/src/theme/media/tagsView.scss new file mode 100644 index 0000000..b71674e --- /dev/null +++ b/src/theme/media/tagsView.scss @@ -0,0 +1,11 @@ +@import './index.scss'; + +/* 页面宽度小于768px +------------------------------- */ +@media screen and (max-width: $sm) { + .tags-view-form { + .tags-view-form-col { + margin-bottom: 20px; + } + } +} diff --git a/src/theme/mixins/element-mixins.scss b/src/theme/mixins/element-mixins.scss new file mode 100644 index 0000000..81611e6 --- /dev/null +++ b/src/theme/mixins/element-mixins.scss @@ -0,0 +1,34 @@ +/* Button 按钮 +------------------------------- */ +@mixin Button($main, $c1, $c2) { + color: set-color($main); + background: set-color($c1); + border-color: set-color($c2); +} + +/* Radio 单选框、Checkbox 多选框 +------------------------------- */ +@mixin RadioCheckbox($name) { + background-color: set-color($name); + border-color: set-color($name); +} + +/* Tag 标签 +------------------------------- */ +@mixin Tag($main, $c1, $c2) { + color: set-color($main); + background-color: set-color($c1); + border-color: set-color($c2); +} +@mixin TagDark($main, $c1) { + color: set-color($main); + background-color: set-color($c1); +} + +/* Alert 警告 +------------------------------- */ +@mixin Alert($main, $c1, $c2) { + color: set-color($main); + background: set-color($c1); + border: 1px solid set-color($c2); +} diff --git a/src/theme/mixins/function.scss b/src/theme/mixins/function.scss new file mode 100644 index 0000000..ed27a8f --- /dev/null +++ b/src/theme/mixins/function.scss @@ -0,0 +1,5 @@ +/* 颜色调用函数 +------------------------------- */ +@function set-color($key) { + @return var(--color-#{$key}); +} diff --git a/src/theme/mixins/mixins.scss b/src/theme/mixins/mixins.scss new file mode 100644 index 0000000..31667af --- /dev/null +++ b/src/theme/mixins/mixins.scss @@ -0,0 +1,55 @@ +/* 第三方图标字体间距/大小设置 +------------------------------- */ +@mixin generalIcon { + font-size: 14px !important; + display: inline-block; + vertical-align: middle; + margin-right: 5px; + width: 24px; + text-align: center; +} + +/* 文本不换行 +------------------------------- */ +@mixin text-no-wrap() { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} + +/* 多行文本溢出 + ------------------------------- */ +@mixin text-ellipsis($line: 2) { + overflow: hidden; + word-break: break-all; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: $line; + -webkit-box-orient: vertical; +} + +/* 滚动条(页面未使用) div 中使用: + ------------------------------- */ +// .test { +// @include scrollBar; +// } +@mixin scrollBar { + // 滚动条凹槽的颜色,还可以设置边框属性 + &::-webkit-scrollbar-track-piece { + background-color: #f8f8f8; + } + // 滚动条的宽度 + &::-webkit-scrollbar { + width: 9px; + height: 9px; + } + // 滚动条的设置 + &::-webkit-scrollbar-thumb { + background-color: #dddddd; + background-clip: padding-box; + min-height: 28px; + } + &::-webkit-scrollbar-thumb:hover { + background-color: #bbb; + } +} diff --git a/src/theme/other.scss b/src/theme/other.scss new file mode 100644 index 0000000..9e8e950 --- /dev/null +++ b/src/theme/other.scss @@ -0,0 +1,28 @@ +/* wangeditor富文本编辑器 +------------------------------- */ +.w-e-toolbar { + border: 1px solid #ebeef5 !important; + border-bottom: 1px solid #ebeef5 !important; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + z-index: 2 !important; +} +.w-e-text-container { + border: 1px solid #ebeef5 !important; + border-top: none !important; + border-bottom-left-radius: 3px; + border-bottom-right-radius: 3px; + z-index: 1 !important; +} + +/* web端自定义截屏 +------------------------------- */ +#screenShotContainer { + z-index: 9998 !important; +} +#toolPanel { + height: 42px !important; +} +#optionPanel { + height: 37px !important; +} diff --git a/src/theme/waves.scss b/src/theme/waves.scss new file mode 100644 index 0000000..23add2c --- /dev/null +++ b/src/theme/waves.scss @@ -0,0 +1,101 @@ +/* Waves v0.6.0 +* http://fian.my.id/Waves +* +* Copyright 2014 Alfiana E. Sibuea and other contributors +* Released under the MIT license +* https://github.com/fians/Waves/blob/master/LICENSE +*/ +.waves-effect { + position: relative; + cursor: pointer; + display: inline-block; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + vertical-align: middle; + z-index: 1; + will-change: opacity, transform; + transition: all 0.3s ease-out; +} +.waves-effect .waves-ripple { + position: absolute; + border-radius: 50%; + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + opacity: 0; + background: rgba(0, 0, 0, 0.2); + transition: all 0.7s ease-out; + transition-property: opacity, -webkit-transform; + transition-property: transform, opacity; + transition-property: transform, opacity, -webkit-transform; + -webkit-transform: scale(0); + transform: scale(0); + pointer-events: none; +} +.waves-effect.waves-light .waves-ripple { + background-color: rgba(255, 255, 255, 0.45); +} +.waves-effect.waves-red .waves-ripple { + background-color: rgba(244, 67, 54, 0.7); +} +.waves-effect.waves-yellow .waves-ripple { + background-color: rgba(255, 235, 59, 0.7); +} +.waves-effect.waves-orange .waves-ripple { + background-color: rgba(255, 152, 0, 0.7); +} +.waves-effect.waves-purple .waves-ripple { + background-color: rgba(156, 39, 176, 0.7); +} +.waves-effect.waves-green .waves-ripple { + background-color: rgba(76, 175, 80, 0.7); +} +.waves-effect.waves-teal .waves-ripple { + background-color: rgba(0, 150, 136, 0.7); +} +.waves-effect input[type='button'], +.waves-effect input[type='reset'], +.waves-effect input[type='submit'] { + border: 0; + font-style: normal; + font-size: inherit; + text-transform: inherit; + background: none; +} +.waves-notransition { + transition: none !important; +} +.waves-circle { + -webkit-transform: translateZ(0); + transform: translateZ(0); + -webkit-mask-image: -webkit-radial-gradient(circle, #fff 100%, #000 100%); +} +.waves-input-wrapper { + border-radius: 0.2em; + vertical-align: bottom; +} +.waves-input-wrapper .waves-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; +} +.waves-circle { + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; + -webkit-mask-image: none; +} +.waves-block { + display: block; +} +a.waves-effect .waves-ripple { + z-index: -1; +} diff --git a/src/utils/Export2.ts b/src/utils/Export2.ts new file mode 100644 index 0000000..18503d6 --- /dev/null +++ b/src/utils/Export2.ts @@ -0,0 +1,174 @@ +import FileSaver from 'file-saver' +import * as XLSX from 'xlsx' +// 自动计算col列宽 +function auto_width(ws, data) { + /*set worksheet max width per col*/ + const colWidth = data.map(row => row.map(val => { + /*if null/undefined*/ + if (val == null) { + return { 'wch': 10 } + } + /*if chinese*/ + else if (val.toString().charCodeAt(0) > 255) { + return { 'wch': val.toString().length * 2 } + } else { + return { 'wch': val.toString().length } + } + })) + /*start in the first row*/ + let result = colWidth[0] + for (let i = 1; i < colWidth.length; i++) { + for (let j = 0; j < colWidth[i].length; j++) { + if (result[j]['wch'] < colWidth[i][j]['wch']) { + result[j]['wch'] = colWidth[i][j]['wch'] + } + } + } + ws['!cols'] = result +} +// 将json数据转换成数组 +function json_to_array(key, jsonData) { + return jsonData.map(v => key.map(j => { + return v[j] + })) +} +/** + * @param header Object,表头 + * @param data Array,表体数据 + * @param key Array,字段名 + * @param title String,标题(会居中显示),即excel表格第一行 + * @param filename String,文件名 + * @param autoWidth Boolean,是否自动根据key自定义列宽度 + */ +export const exportJsonToExcel = ({ + header, + data, + key, + title, + filename, + autoWidth +}) => { + const wb = XLSX.utils.book_new() + if (header) { + data.unshift(header) + } + if (title) { + data.unshift(title) + } + const ws = XLSX.utils.json_to_sheet(data, { + header: key, + skipHeader: true + }) + // 合并单元格以覆盖整个第一行 + // ws['!merges'] = [{ s: {r:0, c:0}, e: {r:0, c:header.length - 1} }]; + if (autoWidth) { + const arr = json_to_array(key, data) + auto_width(ws, arr) + } + XLSX.utils.book_append_sheet(wb, ws, filename) + XLSX.writeFile(wb, filename + '.xlsx') +} + +/** + * 自动计算并设置列宽 + * @param {Object} ws - 工作表对象 + * @param {Array} data - 表格数据(二维数组) + */ +function autoWidth(ws, data) { + // 初始化每列宽度为默认值10 + const colWidths = Array(data[0].length).fill(10); + + // 遍历数据以计算最大宽度 + data.forEach(row => { + row.forEach((val, index) => { + let length = val ? (typeof val === 'string' ? getStrLen(val) : String(val).length) : 10; + if (colWidths[index] < length) { + colWidths[index] = length; // 更新最大宽度 + }else{ + colWidths[index] = 20; // 更新最大宽度 + } + }); + }); + + // 设置列宽 + ws['!cols'] = colWidths.map(width => ({ wch: width })); +} +/** + * 计算字符串长度,考虑多字节字符(如中文) + * @param {string} str - 输入字符串 + * @returns {number} 字符串长度 + */ +function getStrLen(str) { + return [...str].reduce((len, char) => len + (char.charCodeAt(0) > 255 ? 2 : 1), 0); +} +export const exportTableToExcel=(divId:string,name:string)=>{ + var wb = XLSX.utils.table_to_book(document.querySelector(divId));//关联dom节点 + console.log(wb) + // 获取第一个工作表 + const ws = wb.Sheets[wb.SheetNames[0]]; + + // 获取表格数据作为二维数组 + const data = XLSX.utils.sheet_to_json(ws, { header: 1 }); + + // 设置列宽 + autoWidth(ws, data); + var wbout = XLSX.write(wb, { + bookType: 'xlsx', + bookSST: true, + type: 'array' + }) + try { + FileSaver.saveAs(new Blob([wbout], { + type: 'application/octet-stream' + }), `${name}.xlsx`)//自定义文件名 + } catch (e) { + if (typeof console !== 'undefined') console.log(e, wbout); + } + return wbout +} + +export const exportTableToExcel2 = async (divId: string, name: string): Promise => { + try { + // 关联 DOM 节点 + const tableElement = document.querySelector(divId); + if (!tableElement) { + console.error("Table element not found"); + return null; + } + + // 转换表格为工作簿 + const wb = XLSX.utils.table_to_book(tableElement); + console.log(wb); + + // 将工作簿写入文件 + const wbout = XLSX.write(wb, { + bookType: 'xlsx', + bookSST: true, + type: 'array', + }); + + // 保存文件 + await new Promise((resolve, reject) => { + try { + FileSaver.saveAs( + new Blob([wbout], { type: 'application/octet-stream' }), + `${name}.xlsx` + ); + resolve(); + } catch (e) { + console.error("Error saving file:", e); + reject(e); + } + }); + + // 返回生成的二进制数组 + return wbout; + } catch (error) { + console.error("Error exporting table to Excel:", error); + return null; + } +}; +export default { + exportJsonToExcel, + exportTableToExcel +} \ No newline at end of file diff --git a/src/utils/aiUtils.ts b/src/utils/aiUtils.ts new file mode 100644 index 0000000..b6d5238 --- /dev/null +++ b/src/utils/aiUtils.ts @@ -0,0 +1,124 @@ +/** + * 动态加载ai脚本 +* @param aiToken +* @param aiId +*/ +export const loadAiScript = (aiToken: string, aiId: string) => { + return new Promise((resolve, reject) => { + + const configScript = document.createElement('script'); + configScript.textContent = ` + window.difyChatbotConfig = { + token: '${aiToken}', + baseUrl: '${window.location.protocol}//dify.data-it.tech/chat' + }; + `; + + // baseUrl: '${window.location.protocol}//dify.data-it.tech/chat' + configScript.async = true; + configScript.setAttribute('data-name', 'aiConfig') + document.head.appendChild(configScript); + + const script = document.createElement('script'); + const httpUrl = () => { + // 协议 + const agreement = window.location.protocol; + // 地址 + const host = window.location.host; + return `${agreement}//${host}` + } + + script.src = httpUrl() + '/js/embedBase.min.js'; + script.id = aiId; + script.setAttribute('data-name', 'adScript') + script.async = true; + + script.onload = () => { + resolve(0); + }; + + script.onerror = () => { + reject(); + }; + + // 将 script 标签添加到 document.head 中 + document.head.appendChild(script); + + }) +} + +/** + * 销毁ai相关脚本 + */ +export const destructionAiScript = () => { + // 销毁head中对应的脚本 + removeScript('aiConfig'); + removeScript('adScript'); + // 删除aiscript创建的dom元素 + const aiBtnDom = document.getElementById('dify-chatbot-bubble-button'); + if (aiBtnDom) { + aiBtnDom.remove(); + } + const aiWindowDom = document.getElementById('dify-chatbot-bubble-window'); + if (aiWindowDom) { + aiWindowDom.remove(); + } +}; + + +const removeScript = (dataName: string) => { + const scripts = document.head.querySelectorAll(`script[data-name="${dataName}"]`); + scripts.forEach(script => { + document.head.removeChild(script); + }); +} + +export const aiBtnMove = () => { + const dragItem = document.getElementById('dify-chatbot-bubble-button'); + + let isDragging = false; + let startX, startY, offsetX, offsetY; + + dragItem.addEventListener('mousedown', (e) => { + // 开始拖动 + isDragging = false; // 初始设置为非拖动 + dragItem.style.cursor = 'grabbing'; + + // 记录鼠标的初始位置和元素的偏移位置 + startX = e.clientX; + startY = e.clientY; + offsetX = dragItem.offsetLeft; + offsetY = dragItem.offsetTop; + + // 防止选中文字 + e.preventDefault(); + + // 监听鼠标移动和释放 + const mouseMoveHandler = (e) => { + const dx = e.clientX - startX; + const dy = e.clientY - startY; + + if (Math.abs(dx) > 5 || Math.abs(dy) > 5) { + isDragging = true; // 标记为拖动 + dragItem.style.left = offsetX + dx + 'px'; + dragItem.style.top = offsetY + dy + 'px'; + } + }; + + const mouseUpHandler = () => { + document.removeEventListener('mousemove', mouseMoveHandler); + document.removeEventListener('mouseup', mouseUpHandler); + dragItem.style.cursor = 'grab'; + }; + + document.addEventListener('mousemove', mouseMoveHandler); + document.addEventListener('mouseup', mouseUpHandler); + }); + + dragItem.addEventListener('click', (e) => { + if (isDragging) { + e.preventDefault(); // 阻止默认行为 + e.stopPropagation(); // 阻止事件冒泡 + } + }); +} \ No newline at end of file diff --git a/src/utils/arrayOperation.ts b/src/utils/arrayOperation.ts new file mode 100644 index 0000000..2db12ce --- /dev/null +++ b/src/utils/arrayOperation.ts @@ -0,0 +1,41 @@ +/** + * 判断两数组是否相同 + * @param news 新数据 + * @param old 源数据 + * @returns 两数组相同返回 `true`,反之则反 + */ +export function judementSameArr(news: Array, old: Array): boolean { + let count = 0; + const leng = old.length; + for (let i in old) { + for (let j in news) { + if (old[i] === news[j]) count++; + } + } + return count === leng ? true : false; +} + +/** + * 判断两个对象是否相同 + * @param a 要比较的对象一 + * @param b 要比较的对象二 + * @returns 相同返回 true,反之则反 + */ +export function isObjectValueEqual(a: { [key: string]: any }, b: { [key: string]: any }) { + if (!a || !b) return false; + let aProps = Object.getOwnPropertyNames(a); + let bProps = Object.getOwnPropertyNames(b); + if (aProps.length != bProps.length) return false; + for (let i = 0; i < aProps.length; i++) { + let propName = aProps[i]; + let propA = a[propName]; + let propB = b[propName]; + if (!b.hasOwnProperty(propName)) return false; + if (propA instanceof Object) { + if (!isObjectValueEqual(propA, propB)) return false; + } else if (propA !== propB) { + return false; + } + } + return true; +} diff --git a/src/utils/authDirective.ts b/src/utils/authDirective.ts new file mode 100644 index 0000000..9376798 --- /dev/null +++ b/src/utils/authDirective.ts @@ -0,0 +1,37 @@ +import type { App } from 'vue'; +import { store } from '/@/store/index.ts'; +import { judementSameArr } from '/@/utils/arrayOperation'; + +/** + * 用户权限指令 + * @directive 单个权限验证(v-auth="xxx") + * @directive 多个权限验证,满足一个则显示(v-auths="[xxx,xxx]") + * @directive 多个权限验证,全部满足则显示(v-auth-all="[xxx,xxx]") + */ +export function authDirective(app: App) { + // 单个权限验证(v-auth="xxx") + app.directive('auth', { + mounted(el, binding) { + if (!store.state.userInfos.userInfos.authBtnList.some((v: string) => v === binding.value)) el.parentNode.removeChild(el); + }, + }); + // 多个权限验证,满足一个则显示(v-auths="[xxx,xxx]") + app.directive('auths', { + mounted(el, binding) { + let flag = false; + store.state.userInfos.userInfos.authBtnList.map((val: string) => { + binding.value.map((v: string) => { + if (val === v) flag = true; + }); + }); + if (!flag) el.parentNode.removeChild(el); + }, + }); + // 多个权限验证,全部满足则显示(v-auth-all="[xxx,xxx]") + app.directive('auth-all', { + mounted(el, binding) { + const flag = judementSameArr(binding.value, store.state.userInfos.userInfos.authBtnList); + if (!flag) el.parentNode.removeChild(el); + }, + }); +} diff --git a/src/utils/authFunction.ts b/src/utils/authFunction.ts new file mode 100644 index 0000000..e26101c --- /dev/null +++ b/src/utils/authFunction.ts @@ -0,0 +1,35 @@ +import { store } from '/@/store/index.ts'; +import { judementSameArr } from '/@/utils/arrayOperation'; + +/** + * 单个权限验证 + * @param value 权限值 + * @returns 有权限,返回 `true`,反之则反 + */ +export function auth(value: string): boolean { + return store.state.userInfos.userInfos.authBtnList.some((v: string) => v === value); +} + +/** + * 多个权限验证,满足一个则为 true + * @param value 权限值 + * @returns 有权限,返回 `true`,反之则反 + */ +export function auths(value: Array): boolean { + let flag = false; + store.state.userInfos.userInfos.authBtnList.map((val: string) => { + value.map((v: string) => { + if (val === v) flag = true; + }); + }); + return flag; +} + +/** + * 多个权限验证,全部满足则为 true + * @param value 权限值 + * @returns 有权限,返回 `true`,反之则反 + */ +export function authAll(value: Array): boolean { + return judementSameArr(value, store.state.userInfos.userInfos.authBtnList); +} diff --git a/src/utils/commonFunction.ts b/src/utils/commonFunction.ts new file mode 100644 index 0000000..1c069e6 --- /dev/null +++ b/src/utils/commonFunction.ts @@ -0,0 +1,65 @@ +// 通用函数 +import useClipboard from 'vue-clipboard3'; +import { ElMessage } from 'element-plus'; +import { formatDate } from '/@/utils/formatTime'; +import { useI18n } from 'vue-i18n'; + +export default function () { + const { t } = useI18n(); + const { toClipboard } = useClipboard(); + //百分比格式化 + const percentFormat = (row: any, column: number, cellValue: any) => { + return cellValue ? `${cellValue}%` : '-'; + }; + //列表日期时间格式化 + const dateFormatYMD = (row: any, column: number, cellValue: any) => { + if (!cellValue) return '-'; + return formatDate(new Date(cellValue), 'YYYY-mm-dd'); + }; + //列表日期时间格式化 + const dateFormatYMDHMS = (row: any, column: number, cellValue: any) => { + if (!cellValue) return '-'; + return formatDate(new Date(cellValue), 'YYYY-mm-dd HH:MM:SS'); + }; + //列表日期时间格式化 + const dateFormatHMS = (row: any, column: number, cellValue: any) => { + if (!cellValue) return '-'; + let time = 0; + if (typeof row === 'number') time = row; + if (typeof cellValue === 'number') time = cellValue; + return formatDate(new Date(time * 1000), 'HH:MM:SS'); + }; + // 小数格式化 + const scaleFormat = (value: any = 0, scale: number = 4) => { + return Number.parseFloat(value).toFixed(scale); + }; + // 小数格式化 + const scale2Format = (value: any = 0) => { + return Number.parseFloat(value).toFixed(2); + }; + // 点击复制文本 + const copyText = (text: string) => { + return new Promise((resolve, reject) => { + try { + //复制 + toClipboard(text); + //下面可以设置复制成功的提示框等操作 + ElMessage.success(t('message.layout.copyTextSuccess')); + resolve(text); + } catch (e) { + //复制失败 + ElMessage.error(t('message.layout.copyTextError')); + reject(e); + } + }); + }; + return { + percentFormat, + dateFormatYMD, + dateFormatYMDHMS, + dateFormatHMS, + scaleFormat, + scale2Format, + copyText, + }; +} diff --git a/src/utils/customDirective.ts b/src/utils/customDirective.ts new file mode 100644 index 0000000..c67350f --- /dev/null +++ b/src/utils/customDirective.ts @@ -0,0 +1,178 @@ +import type { App } from 'vue'; + +/** + * 按钮波浪指令 + * @directive 默认方式:v-waves,如 `
` + * @directive 参数方式:v-waves=" |light|red|orange|purple|green|teal",如 `
` + */ +export function wavesDirective(app: App) { + app.directive('waves', { + mounted(el, binding) { + el.classList.add('waves-effect'); + binding.value && el.classList.add(`waves-${binding.value}`); + function setConvertStyle(obj: { [key: string]: unknown }) { + let style: string = ''; + for (let i in obj) { + if (obj.hasOwnProperty(i)) style += `${i}:${obj[i]};`; + } + return style; + } + function onCurrentClick(e: { [key: string]: unknown }) { + let elDiv = document.createElement('div'); + elDiv.classList.add('waves-ripple'); + el.appendChild(elDiv); + let styles = { + left: `${e.layerX}px`, + top: `${e.layerY}px`, + opacity: 1, + transform: `scale(${(el.clientWidth / 100) * 10})`, + 'transition-duration': `750ms`, + 'transition-timing-function': `cubic-bezier(0.250, 0.460, 0.450, 0.940)`, + }; + elDiv.setAttribute('style', setConvertStyle(styles)); + setTimeout(() => { + elDiv.setAttribute( + 'style', + setConvertStyle({ + opacity: 0, + transform: styles.transform, + left: styles.left, + top: styles.top, + }) + ); + setTimeout(() => { + elDiv && el.removeChild(elDiv); + }, 750); + }, 450); + } + el.addEventListener('mousedown', onCurrentClick, false); + }, + unmounted(el) { + el.addEventListener('mousedown', () => {}); + }, + }); +} + +/** + * 自定义拖动指令 + * @description 使用方式:v-drag="[dragDom,dragHeader]",如 `
` + * @description dragDom 要拖动的元素,dragHeader 要拖动的 Header 位置 + * @link 注意:https://github.com/element-plus/element-plus/issues/522 + * @lick 参考:https://blog.csdn.net/weixin_46391323/article/details/105228020?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-10&spm=1001.2101.3001.4242 + */ +export function dragDirective(app: App) { + app.directive('drag', { + mounted(el, binding) { + if (!binding.value) return false; + + const dragDom = document.querySelector(binding.value[0]) as HTMLElement; + const dragHeader = document.querySelector(binding.value[1]) as HTMLElement; + + dragHeader.onmouseover = () => (dragHeader.style.cursor = `move`); + + function down(e: any, type: string) { + // 鼠标按下,计算当前元素距离可视区的距离 + const disX = type === 'pc' ? e.clientX - dragHeader.offsetLeft : e.touches[0].clientX - dragHeader.offsetLeft; + const disY = type === 'pc' ? e.clientY - dragHeader.offsetTop : e.touches[0].clientY - dragHeader.offsetTop; + + // body当前宽度 + const screenWidth = document.body.clientWidth; + // 可见区域高度(应为body高度,可某些环境下无法获取) + const screenHeight = document.documentElement.clientHeight; + + // 对话框宽度 + const dragDomWidth = dragDom.offsetWidth; + // 对话框高度 + const dragDomheight = dragDom.offsetHeight; + + const minDragDomLeft = dragDom.offsetLeft; + const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth; + + const minDragDomTop = dragDom.offsetTop; + const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomheight; + + // 获取到的值带px 正则匹配替换 + let styL: any = getComputedStyle(dragDom).left; + let styT: any = getComputedStyle(dragDom).top; + + // 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px + if (styL.includes('%')) { + styL = +document.body.clientWidth * (+styL.replace(/\%/g, '') / 100); + styT = +document.body.clientHeight * (+styT.replace(/\%/g, '') / 100); + } else { + styL = +styL.replace(/\px/g, ''); + styT = +styT.replace(/\px/g, ''); + } + + return { + disX, + disY, + minDragDomLeft, + maxDragDomLeft, + minDragDomTop, + maxDragDomTop, + styL, + styT, + }; + } + + function move(e: any, type: string, obj: any) { + let { disX, disY, minDragDomLeft, maxDragDomLeft, minDragDomTop, maxDragDomTop, styL, styT } = obj; + + // 通过事件委托,计算移动的距离 + let left = type === 'pc' ? e.clientX - disX : e.touches[0].clientX - disX; + let top = type === 'pc' ? e.clientY - disY : e.touches[0].clientY - disY; + + // 边界处理 + if (-left > minDragDomLeft) { + left = -minDragDomLeft; + } else if (left > maxDragDomLeft) { + left = maxDragDomLeft; + } + + if (-top > minDragDomTop) { + top = -minDragDomTop; + } else if (top > maxDragDomTop) { + top = maxDragDomTop; + } + + // 移动当前元素 + dragDom.style.cssText += `;left:${left + styL}px;top:${top + styT}px;`; + } + + /** + * pc端 + * onmousedown 鼠标按下触发事件 + * onmousemove 鼠标按下时持续触发事件 + * onmouseup 鼠标抬起触发事件 + */ + dragHeader.onmousedown = (e) => { + const obj = down(e, 'pc'); + document.onmousemove = (e) => { + move(e, 'pc', obj); + }; + document.onmouseup = () => { + document.onmousemove = null; + document.onmouseup = null; + }; + }; + + /** + * 移动端 + * ontouchstart 当按下手指时,触发ontouchstart + * ontouchmove 当移动手指时,触发ontouchmove + * ontouchend 当移走手指时,触发ontouchend + */ + dragHeader.ontouchstart = (e) => { + const obj = down(e, 'app'); + document.ontouchmove = (e) => { + move(e, 'app', obj); + }; + document.ontouchend = () => { + document.ontouchmove = null; + document.ontouchend = null; + }; + }; + }, + }); +} diff --git a/src/utils/directive.ts b/src/utils/directive.ts new file mode 100644 index 0000000..a75b187 --- /dev/null +++ b/src/utils/directive.ts @@ -0,0 +1,18 @@ +import type { App } from 'vue'; +import { authDirective } from '/@/utils/authDirective'; +import { wavesDirective, dragDirective } from '/@/utils/customDirective'; + +/** + * 导出指令方法:v-xxx + * @methods authDirective 用户权限指令,用法:v-auth + * @methods wavesDirective 按钮波浪指令,用法:v-waves + * @methods dragDirective 自定义拖动指令,用法:v-drag + */ +export function directive(app: App) { + // 用户权限指令 + authDirective(app); + // 按钮波浪指令 + wavesDirective(app); + // 自定义拖动指令 + dragDirective(app); +} diff --git a/src/utils/formatTime.ts b/src/utils/formatTime.ts new file mode 100644 index 0000000..33f1f12 --- /dev/null +++ b/src/utils/formatTime.ts @@ -0,0 +1,495 @@ +/** + * 时间日期转换 + * @param date 当前时间,new Date() 格式 + * @param format 需要转换的时间格式字符串 + * @description format 字符串随意,如 `YYYY-mm、YYYY-mm-dd` + * @description format 季度:"YYYY-mm-dd HH:MM:SS QQQQ" + * @description format 星期:"YYYY-mm-dd HH:MM:SS WWW" + * @description format 几周:"YYYY-mm-dd HH:MM:SS ZZZ" + * @description format 季度 + 星期 + 几周:"YYYY-mm-dd HH:MM:SS WWW QQQQ ZZZ" + * @returns 返回拼接后的时间字符串 + */ +export function formatDate(date: Date, format: string): string { + let we = date.getDay(); // 星期 + let z = getWeek(date); // 周 + let qut = Math.floor((date.getMonth() + 3) / 3).toString(); // 季度 + const opt: { [key: string]: string } = { + 'Y+': date.getFullYear().toString(), // 年 + 'm+': (date.getMonth() + 1).toString(), // 月(月份从0开始,要+1) + 'd+': date.getDate().toString(), // 日 + 'H+': date.getHours().toString(), // 时 + 'M+': date.getMinutes().toString(), // 分 + 'S+': date.getSeconds().toString(), // 秒 + 'q+': qut, // 季度 + }; + // 中文数字 (星期) + const week: { [key: string]: string } = { + '0': '日', + '1': '一', + '2': '二', + '3': '三', + '4': '四', + '5': '五', + '6': '六', + }; + // 中文数字(季度) + const quarter: { [key: string]: string } = { + '1': '一', + '2': '二', + '3': '三', + '4': '四', + }; + if (/(W+)/.test(format)) + format = format.replace(RegExp.$1, RegExp.$1.length > 1 ? (RegExp.$1.length > 2 ? '星期' + week[we] : '周' + week[we]) : week[we]); + if (/(Q+)/.test(format)) format = format.replace(RegExp.$1, RegExp.$1.length == 4 ? '第' + quarter[qut] + '季度' : quarter[qut]); + if (/(Z+)/.test(format)) format = format.replace(RegExp.$1, RegExp.$1.length == 3 ? '第' + z + '周' : z + ''); + for (let k in opt) { + let r = new RegExp('(' + k + ')').exec(format); + // 若输入的长度不为1,则前面补零 + if (r) format = format.replace(r[1], RegExp.$1.length == 1 ? opt[k] : opt[k].padStart(RegExp.$1.length, '0')); + } + return format; +} + +/** + * 获取当前日期是第几周 + * @param dateTime 当前传入的日期值 + * @returns 返回第几周数字值 + */ +export function getWeek(dateTime: Date): number { + let temptTime = new Date(dateTime.getTime()); + // 周几 + let weekday = temptTime.getDay() || 7; + // 周1+5天=周六 + temptTime.setDate(temptTime.getDate() - weekday + 1 + 5); + let firstDay = new Date(temptTime.getFullYear(), 0, 1); + let dayOfWeek = firstDay.getDay(); + let spendDay = 1; + if (dayOfWeek != 0) spendDay = 7 - dayOfWeek + 1; + firstDay = new Date(temptTime.getFullYear(), 0, 1 + spendDay); + let d = Math.ceil((temptTime.valueOf() - firstDay.valueOf()) / 86400000); + let result = Math.ceil(d / 7); + return result; +} +/** + * + * @param param moke当前日期的周排班 + * @param format + * @returns + */ +export function getWeekDatas(week: number) { + const datas = []; + var todey = new Date(); + const dqweek = getWeek(todey) + if (week < dqweek) { + todey.setTime(todey.getTime() - 3600 * 1000 * 24 * 7 * (dqweek - week)) + } + else if (week > dqweek) { + todey.setTime(todey.getTime() + 3600 * 1000 * 24 * 7 * (week - dqweek)) + } + const num = todey.getDay(); + + if (num > 0) { + for (var i = 0; i < 8; i++) { + if (i === num) { + datas.push(formatDate(todey, 'YYYY-mm-dd WWW')) + } else if (i < num) { + const start = new Date(todey) + start.setTime(start.getTime() - 3600 * 1000 * 24 * (num - i)); + datas.push(formatDate(start, 'YYYY-mm-dd WWW')) + } else if (i > num) { + const start2 = new Date(todey); + start2.setTime(start2.getTime() + 3600 * 1000 * 24 * (i - num)); + datas.push(formatDate(start2, 'YYYY-mm-dd WWW')) + } + } + datas.splice(0, 1)// 删除第一个 + return datas + } + else { + for (var x = 6; x >= 0; x--) { + const start = new Date(todey) + start.setTime(start.getTime() - 3600 * 1000 * 24 * (x)); + datas.push(formatDate(start, 'YYYY-mm-dd WWW')) + } + return datas + } + +} + +/** + * + * @param param 获取周列表 + * @param format 当前周 + * @returns + */ +export function getgetWeeks() { + // const datas=[]; + for (var x = 7; x > 0; x--) { + const start2 = new Date(); + start2.setTime(start2.getTime() + 3600 * 1000 * 24 * (x * 7)); + const weeks = formatDate(start2, 'YYYY-mm-dd HH:MM:SS WWW QQQQ ZZZ') + console.log(weeks) + } + for (var x = 0; x < 7; x++) { + const start2 = new Date(); + start2.setTime(start2.getTime() - 3600 * 1000 * 24 * (x * 7)); + const weeks = formatDate(start2, 'YYYY-mm-dd HH:MM:SS WWW QQQQ ZZZ') + console.log(weeks) + } + // console.log(week) +} + +/** + * 将时间转换为 `几秒前`、`几分钟前`、`几小时前`、`几天前` + * @param param 当前时间,new Date() 格式或者字符串时间格式 + * @param format 需要转换的时间格式字符串 + * @description param 10秒: 10 * 1000 + * @description param 1分: 60 * 1000 + * @description param 1小时: 60 * 60 * 1000 + * @description param 24小时:60 * 60 * 24 * 1000 + * @description param 3天: 60 * 60* 24 * 1000 * 3 + * @returns 返回拼接后的时间字符串 + */ +export function formatPast(param: string | Date, format: string = 'YYYY-mm-dd'): string { + // 传入格式处理、存储转换值 + let t: any, s: number; + // 获取js 时间戳 + let time: number = new Date().getTime(); + // 是否是对象 + typeof param === 'string' || 'object' ? (t = new Date(param).getTime()) : (t = param); + // 当前时间戳 - 传入时间戳 + time = Number.parseInt(`${time - t}`); + if (time < 10000) { + // 10秒内 + return '刚刚'; + } else if (time < 60000 && time >= 10000) { + // 超过10秒少于1分钟内 + s = Math.floor(time / 1000); + return `${s}秒前`; + } else if (time < 3600000 && time >= 60000) { + // 超过1分钟少于1小时 + s = Math.floor(time / 60000); + return `${s}分钟前`; + } else if (time < 86400000 && time >= 3600000) { + // 超过1小时少于24小时 + s = Math.floor(time / 3600000); + return `${s}小时前`; + } else if (time < 259200000 && time >= 86400000) { + // 超过1天少于3天内 + s = Math.floor(time / 86400000); + return `${s}天前`; + } else { + // 超过3天 + let date = typeof param === 'string' || 'object' ? new Date(param) : param; + return formatDate(date, format); + } +} + +/** + * 时间问候语 + * @param param 当前时间,new Date() 格式 + * @description param 调用 `formatAxis(new Date())` 输出 `上午好` + * @returns 返回拼接后的时间字符串 + */ +export function formatAxis(param: Date): string { + let hour: number = new Date(param).getHours(); + if (hour < 6) return '凌晨好'; + else if (hour < 9) return '早上好'; + else if (hour < 12) return '上午好'; + else if (hour < 14) return '中午好'; + else if (hour < 17) return '下午好'; + else if (hour < 19) return '傍晚好'; + else if (hour < 22) return '晚上好'; + else return '夜里好'; +} +export function getTimeOfDay(timeString?: string): number { + let date: Date; + + // 如果没有传 timeString 或是空字符串,使用当前时间 + if (!timeString || timeString.trim() === '') { + date = new Date(); + } else { + date = new Date(timeString); + } + + // 检查是否是一个有效的时间 + if (isNaN(date.getTime())) { + // 如果无效,也 fallback 到当前时间(更健壮) + date = new Date(); + } + + const hours = date.getHours(); // 0 ~ 23 + + if (hours >= 0 && hours < 6) { + return 0; // 凌晨 + } else if (hours >= 6 && hours < 12) { + return 0; // 早上 + } else if (hours >= 12 && hours < 18) { + return 1; // 下午 + } else { + return 2; // 晚上 (18 - 23) + } +} +// export function getTimeOfDay(timeString?: string) { + //将字符串转换为 Date 对象 + // const date = new Date(timeString); +// + //检查是否是一个有效的时间 + // if (isNaN(date.getTime())) { +// + // return 0; + // } +// + // const hours = date.getHours(); // 获取小时数(0~23) +// + // if (hours >= 0 && hours < 6) { + // return 0; + // } else if (hours >= 6 && hours < 12) { + // return 0; + // } else if (hours >= 12 && hours < 18) { + // return 1; + // } else { + // return 2; + // } +// } +//计算日期之间的月数 +export function datemonth(date1, date2) { + // 拆分年月日 + date1 = date1.split('-'); + // 得到月数 + // date1 = parseInt(date1[0]) * 12 + parseInt(date1[1]); + // 拆分年月日 + date2 = date2.split('-'); + // 得到月数 + // date2 = parseInt(date2[0]) * 12 + parseInt(date2[1]); + console.log(date1, date2) + var m = Math.abs(parseInt(date1[0]) - parseInt(date2[0])); + var y = (parseInt(date1[1]) - parseInt(date2[1])) + if (y < 0) { + m = m - 1 + y = 12 + y + } + return m + '年' + y + '月'; +} +//getDate('yyyy-MM-dd') +export function getDate(fmt) { + let date = new Date() + var o = { + "M+": date.getMonth() + 1, //月份 + "d+": date.getDate(), //日 + "H+": date.getHours(), //小时 + "m+": date.getMinutes(), //分 + "s+": date.getSeconds(), //秒 + "q+": Math.floor((date.getMonth() + 3) / 3), //季度 + "S": date.getMilliseconds() //毫秒 + }; + if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); + for (var k in o) + if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); + return fmt; +} +export function GetDateDiff(startDiffTime: string) { + //将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式 + return startDiffTime.replace(/\-/g, "/"); +}; +// 计算时间间隔 +export function jgTime(data1: string, data2: string): number { + // 获取两个日期的毫秒数 + var milliseconds1 = new Date(data1).getTime(); + var milliseconds2 = new Date(data2).getTime(); + // 计算两个日期的差值(毫秒数差) + var differenceInMilliseconds = milliseconds2 - milliseconds1; + var differenceInSeconds = Math.floor(differenceInMilliseconds / 1000); + var differenceInSeconds2 = Math.floor(differenceInSeconds / 60); + return differenceInSeconds2 +} +// 计算现在间隔 +export function jgTime2(data1: string, data2: string): number { + // 获取两个日期的毫秒数 + var milliseconds1 = new Date(data1).getTime(); + var milliseconds2 = new Date().getTime(); + // 总分数 + const x = jgTime(data1, data2) + // 计算两个日期的差值(毫秒数差) + var differenceInMilliseconds = milliseconds2 - milliseconds1; + var differenceInSeconds = Math.floor(differenceInMilliseconds / 1000); + var differenceInSeconds2 = Math.floor(differenceInSeconds / 60); + const re = (differenceInSeconds2 / x) * 100 + return re +} +export function jgTime3(data1: Date,): number { + + // 获取两个日期的毫秒数 + var milliseconds1 = data1.getTime(); + var milliseconds2 = new Date().getTime(); + console.log(milliseconds1, milliseconds2) + // 计算两个日期的差值(毫秒数差) + var differenceInMilliseconds = milliseconds2 - milliseconds1; + var differenceInSeconds = Math.floor(differenceInMilliseconds / 1000); + console.log(differenceInSeconds) + return differenceInSeconds +} +// 计算时间间隔 +export function jgTime4(data1: number): string { + // 获取两个日期的毫秒数 + // 转换为分钟并取整数得到mm + var minutes = Math.floor(data1 % 60); + // 转换为小时并取整数得到hh + var hours = Math.floor(data1 / 60); + // 格式化输出 + return hours + ':' + (minutes < 10 ? '0' + minutes : minutes); + +} +// 计算时间间隔 +export function jgTime5(data1: string, data2: string): string { + // 获取两个日期的毫秒数 + var milliseconds1 = new Date(data1).getTime(); + var milliseconds2 = new Date(data2).getTime(); + // 计算两个日期的差值(毫秒数差) + var interval = milliseconds2 - milliseconds1; + // 转换为秒并取余数得到ss + var seconds = Math.floor((interval / 1000) % 60); + // 转换为分钟并取整数得到mm + var minutes = Math.floor((interval / (1000 * 60)) % 60); + // 转换为小时并取整数得到hh + var hours = Math.floor(interval / (1000 * 60 * 60)); + // 格式化输出 + return hours + ':' + (minutes < 10 ? '0' + minutes : minutes); + +} + +/* +* 获取指定日期所在月的第一天和最后一天 +* @param {string} dateString - 日期字符串 (格式: YYYY-MM-DD) +* @returns {object} - 包含第一天和最后一天的对象 { firstDay, lastDay } +*/ +export const getMonthStartAndEnd = (dateString: string) => { + const date = new Date(dateString); + + // 获取第一天 + const firstDay = new Date(date.getFullYear(), date.getMonth(), 1); + + // 获取最后一天 + const lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0); + + // 手动格式化为 YYYY-MM-DD,避免时区影响 + const formatDate = (d) => { + const year = d.getFullYear(); + const month = String(d.getMonth() + 1).padStart(2, '0'); // 月份从 0 开始,需要 +1 + const day = String(d.getDate()).padStart(2, '0'); + return `${year}-${month}-${day}`; + }; + + return { + firstDay: formatDate(firstDay), + lastDay: formatDate(lastDay) + }; +} + +/** + * 计算两个日期之间的年、月、日差异(包含起始日和结束日) + * @param startDate - 起始日期,可以是 Date 对象或字符串格式的日期 + * @param endDate - 结束日期,可以是 Date 对象或字符串格式的日期 + * @returns 返回一个字符串,表示两个日期之间的年、月、日差异(包括起始和结束) + */ +export function dateDiffInclusive(startDate: string | Date, endDate: string | Date): string { + // 日期解析函数,支持 YYYY-MM-DD 标准格式 + const parseDate = (date: string | Date): Date => { + if (date instanceof Date) return date; + const parts = date.split('-'); + return new Date(Number(parts[0]), Number(parts[1]) - 1, Number(parts[2])); + }; + + // 解析日期 + startDate = parseDate(startDate); + endDate = parseDate(endDate); + + // 判断方向 + const isPast = startDate > endDate; + if (isPast) [startDate, endDate] = [endDate, startDate]; + + let years = endDate.getFullYear() - startDate.getFullYear(); + let months = endDate.getMonth() - startDate.getMonth(); + let days = endDate.getDate() - startDate.getDate(); + + // 调整月份 + if (months < 0) { + years--; + months += 12; + } + + // 调整天数 + if (days < 0) { + months--; + const prevMonth = new Date(endDate.getFullYear(), endDate.getMonth(), 0); + days += prevMonth.getDate(); + } + + // 包括起始日和结束日 + days++; + + // 处理特殊情况:同年同月 + if (years === 0 && months === 0) return `${days}天`; + if (years === 0) return `${months}月${days}天`; + + // 输出结果 + const result = `${years}年${months}月${days}天`; + return isPast ? `已过去 ${result}` : result; +} +/** + * 判断输入的日期是否小于当前日期 + * @param dateStr 判断的日期“2025-06-09” + * @returns + */ +export function duibiDate(dateStr){ + // 将字符串转换为日期对象 + const inputDate = new Date(dateStr); + const currentDate = new Date(); + + // 去除时间部分,只比较日期(可选) + inputDate.setHours(0, 0, 0, 0); + currentDate.setHours(0, 0, 0, 0); + + if (inputDate < currentDate) { + return true + }else{ + return false + } +} +/** s + * 是否小于三个月 + */ +export function isWithinThreeMonths(date1, date2) { + // 确保 date1 是较早的日期 + if (date1 > date2) { + [date1, date2] = [date2, date1]; // 使用解构赋值交换变量 + } + + // 创建一个新日期对象,为 date1 加上三个月 + let threeMonthsLater = new Date(date1); + threeMonthsLater.setMonth(threeMonthsLater.getMonth() + 2); + + // 检查 date2 是否在这个范围内 + return date2 <= threeMonthsLater; +} +export function addMinutesToDateTime(dateTimeString, minutes) { + const date = new Date(dateTimeString); + + if (isNaN(date)) { + throw new Error('Invalid date string'); + } + + // 更安全地添加分钟(基于毫秒) + date.setTime(date.getTime() + minutes * 60000); + + // 格式化输出 + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + const hours = String(date.getHours()).padStart(2, '0'); + const minutesStr = String(date.getMinutes()).padStart(2, '0'); + const seconds = String(date.getSeconds()).padStart(2, '0'); + + return `${year}-${month}-${day} ${hours}:${minutesStr}:${seconds}`; + } \ No newline at end of file diff --git a/src/utils/getStyleSheets.ts b/src/utils/getStyleSheets.ts new file mode 100644 index 0000000..fe1c34f --- /dev/null +++ b/src/utils/getStyleSheets.ts @@ -0,0 +1,110 @@ +import { nextTick } from 'vue'; +import * as svg from '@element-plus/icons-vue'; + +const httpUrl = () => { + // 协议 + const agreement = window.location.protocol; + // 地址 + const host = window.location.host; + return `${agreement}//${host}` +} + +// 获取阿里字体图标 +const getAlicdnIconfont = () => { + return new Promise((resolve, reject) => { + nextTick(() => { + const styles: any = document.styleSheets; + let sheetsList = []; + let sheetsIconList = []; + for (let i = 0; i < styles.length; i++) { + console.log(styles[i].href) + if (styles[i].href && styles[i].href.indexOf(`${httpUrl()}/css/font_2298093_rnp72ifj3ba.css`) > -1) { + sheetsList.push(styles[i]); + } + } + for (let i = 0; i < sheetsList.length; i++) { + for (let j = 0; j < sheetsList[i].cssRules.length; j++) { + if (sheetsList[i].cssRules[j].selectorText && sheetsList[i].cssRules[j].selectorText.indexOf('.icon-') > -1) { + sheetsIconList.push( + `${sheetsList[i].cssRules[j].selectorText.substring(1, sheetsList[i].cssRules[j].selectorText.length).replace(/\:\:before/gi, '')}` + ); + } + } + } + if (sheetsIconList.length > 0) resolve(sheetsIconList); + else reject('未获取到值,请刷新22重试'); + }); + }); +}; + +// 初始化获取 css 样式,获取 element plus 自带 svg 图标,增加了 element 前缀,使用时:elementAim +const getElementPlusIconfont = () => { + return new Promise((resolve, reject) => { + nextTick(() => { + const icons = svg as any; + const sheetsIconList = []; + for (const i in icons) { + sheetsIconList.push(`element${icons[i].name}`); + } + if (sheetsIconList.length > 0) resolve(sheetsIconList); + else reject('未获取到值,请刷新重试'); + }); + }); +}; + +// 初始化获取 css 样式,这里使用 fontawesome 的图标 +const getAwesomeIconfont = () => { + return new Promise((resolve, reject) => { + nextTick(() => { + const styles: any = document.styleSheets; + let sheetsList = []; + let sheetsIconList = []; + for (let i = 0; i < styles.length; i++) { + if (styles[i].href && styles[i].href.indexOf(`${httpUrl()}/css/font-awesome2.min.css`) > -1) { + sheetsList.push(styles[i]); + } + } + for (let i = 0; i < sheetsList.length; i++) { + for (let j = 0; j < sheetsList[i].cssRules.length; j++) { + if ( + sheetsList[i].cssRules[j].selectorText && + sheetsList[i].cssRules[j].selectorText.indexOf('.fa-') === 0 && + sheetsList[i].cssRules[j].selectorText.indexOf(',') === -1 + ) { + if (/::before/.test(sheetsList[i].cssRules[j].selectorText)) { + sheetsIconList.push( + `${sheetsList[i].cssRules[j].selectorText.substring(1, sheetsList[i].cssRules[j].selectorText.length).replace(/\:\:before/gi, '')}` + ); + } + } + } + } + if (sheetsIconList.length > 0) resolve(sheetsIconList.reverse()); + else reject('未获取到值,请刷新重试'); + }); + }); +}; + +/** + * 获取字体图标 `document.styleSheets` + * @method ali 获取阿里字体图标 `` + * @method ele 获取 element plus 自带图标 `` + * @method ali 获取 fontawesome 的图标 `` + */ +const initIconfont = { + // iconfont + ali: () => { + return getAlicdnIconfont(); + }, + // element plus + ele: () => { + return getElementPlusIconfont(); + }, + // fontawesome + awe: () => { + return getAwesomeIconfont(); + }, +}; + +// 导出方法 +export default initIconfont; diff --git a/src/utils/indexedDB/db.ts b/src/utils/indexedDB/db.ts new file mode 100644 index 0000000..08c4f34 --- /dev/null +++ b/src/utils/indexedDB/db.ts @@ -0,0 +1,34 @@ +import Dexie, { Table } from 'dexie'; +import type { Task, TaskData } from './interface'; +import { ElMessage } from 'element-plus'; + + +// 创建数据库实例 +class StDatabase extends Dexie { + task!: Table; // 任务表 + task_data!: Table; // 任务参数表 + + constructor() { + super('StDatabase'); + this.version(1).stores({ + task: '++id, taskName, type, disconnectAndReconnect, taskPriority, createTime, startTime, endTime', + task_data: '++id, taskId, data, state' + }); + } +} + +let db: StDatabase | null = null; + +// 检查浏览器是否支持IndexedDB +if (window.indexedDB) { + db = new StDatabase(); + db.open().catch((err) => { + console.error("Indexed数据库打开失败 " + err.stack); + ElMessage.error('Indexed数据库打开失败,请升级您的浏览器至更新的版本,推荐使用 谷歌、火狐、360极速浏览器'); + }); +} else { + console.error("您的浏览器不支持IndexedDB,请升级您的浏览器至更新的版本,推荐使用 谷歌、火狐、360极速浏览器"); + ElMessage.error('您的浏览器不支持IndexedDB,请升级您的浏览器至更新的版本,推荐使用 谷歌、火狐、360极速浏览器'); +} + +export default db; diff --git a/src/utils/indexedDB/interface/index.ts b/src/utils/indexedDB/interface/index.ts new file mode 100644 index 0000000..72d9f2c --- /dev/null +++ b/src/utils/indexedDB/interface/index.ts @@ -0,0 +1,2 @@ +export type { Task } from './task'; +export type { TaskData } from './taskData'; \ No newline at end of file diff --git a/src/utils/indexedDB/interface/task.ts b/src/utils/indexedDB/interface/task.ts new file mode 100644 index 0000000..01675e8 --- /dev/null +++ b/src/utils/indexedDB/interface/task.ts @@ -0,0 +1,10 @@ +export interface Task { + id?: number; + taskName: string; // 任务名称 + type: number; // 任务类型 + disconnectAndReconnect: boolean; // 断线重连 + taskPriority: number; // 任务优先级 + createTime: string; // 任务创建时间 + startTime?: string | null; // 任务开始时间 + endTime?: string | null; // 任务结束时间 +} \ No newline at end of file diff --git a/src/utils/indexedDB/interface/taskData.ts b/src/utils/indexedDB/interface/taskData.ts new file mode 100644 index 0000000..bab6016 --- /dev/null +++ b/src/utils/indexedDB/interface/taskData.ts @@ -0,0 +1,8 @@ +export interface TaskData { + id?: number; + taskId: string; // 任务id + data: any[]; // 提交的数据 + state: number; // 任务数据状态, -1 未执行 1执行成功 2执行失败 +} + + diff --git a/src/utils/indexedDB/useDexie.ts b/src/utils/indexedDB/useDexie.ts new file mode 100644 index 0000000..389b9c1 --- /dev/null +++ b/src/utils/indexedDB/useDexie.ts @@ -0,0 +1,81 @@ +import db from './db'; +import { ElMessage } from 'element-plus'; + +export const useDexie = () => { + // 检查数据库实例是否存在 + if (!db) { + return { + addRecord: async () => { + console.error('该浏览器不支持 IndexedDB.'); + ElMessage.error('您的浏览器不支持IndexedDB,请升级您的浏览器至更新的版本,推荐使用 谷歌、火狐、360极速浏览器'); + }, + getAllRecords: async () => { + console.error('该浏览器不支持 IndexedDB'); + ElMessage.error('您的浏览器不支持IndexedDB,请升级您的浏览器至更新的版本,推荐使用 谷歌、火狐、360极速浏览器'); + }, + getRecordById: async () => { + console.error('该浏览器不支持 IndexedDB'); + ElMessage.error('您的浏览器不支持IndexedDB,请升级您的浏览器至更新的版本,推荐使用 谷歌、火狐、360极速浏览器'); + }, + updateRecord: async () => { + console.error('该浏览器不支持 IndexedDB'); + ElMessage.error('您的浏览器不支持IndexedDB,请升级您的浏览器至更新的版本,推荐使用 谷歌、火狐、360极速浏览器'); + }, + deleteRecord: async () => { + console.error('该浏览器不支持 IndexedDB'); + ElMessage.error('您的浏览器不支持IndexedDB,请升级您的浏览器至更新的版本,推荐使用 谷歌、火狐、360极速浏览器'); + }, + }; + } + + const addRecord = async (table: string, record: any) => { + try { + const id = await db![table].add(record); + return id; + } catch (error) { + console.error('IndexedDB添加数据失败 ', error); + } + }; + + const getAllRecords = async (table: string) => { + try { + const records = await db![table].toArray(); + return records; + } catch (error) { + console.error('IndexedDB获取数据失败: ', error); + } + }; + + const getRecordById = async (table: string, id: number) => { + try { + const record = await db![table].get(id); + return record; + } catch (error) { + console.error('IndexedDB获取数据失败: ', error); + } + }; + + const updateRecord = async (table: string, id: number, updatedRecord: any) => { + try { + await db![table].update(id, updatedRecord); + } catch (error) { + console.error('IndexedDB更新数据失败: ', error); + } + }; + + const deleteRecord = async (table: string, id: number) => { + try { + await db![table].delete(id); + } catch (error) { + console.error('IndexedDB删除数据失败: ', error); + } + }; + + return { + addRecord, + getAllRecords, + getRecordById, + updateRecord, + deleteRecord, + }; +}; diff --git a/src/utils/jishuan.ts b/src/utils/jishuan.ts new file mode 100644 index 0000000..0bc82b1 --- /dev/null +++ b/src/utils/jishuan.ts @@ -0,0 +1,37 @@ +export function getAge(IDCord:string){ + var yearBirth = IDCord.substring(6,10); + var monthBirth = IDCord.substring(10,12); + var dayBirth = IDCord.substring(12,14); + // 获取当前年月日并计算年龄 + var myDate = new Date(); + var monthNow = myDate.getMonth() + 1; + var dayNow = myDate.getDate(); + var age = myDate.getFullYear() - yearBirth; + if(monthNow < monthBirth || (monthNow == monthBirth && dayNow < dayBirth)){ + age --; + } + return age + } + +export function getBirth(IDCord:string) { + var yearBirth = IDCord.substring(6,10); + var monthBirth = IDCord.substring(10,12); + var dayBirth = IDCord.substring(12,14); + return `${yearBirth}-${monthBirth}-${dayBirth}` +} +export function arrayGroupBy(list, groupId){ + function groupBy(array, f){ + const groups = {} + array.forEach(function (o) { + const group = JSON.stringify(f(o)) + groups[group] = groups[group] || [] + groups[group].push(o) + }) + + return groups; + }; + return groupBy(list, function (item) { + return item[groupId] + }); +} + diff --git a/src/utils/loading.ts b/src/utils/loading.ts new file mode 100644 index 0000000..73dc7c7 --- /dev/null +++ b/src/utils/loading.ts @@ -0,0 +1,56 @@ +import { nextTick } from 'vue'; +import loadingCss from '/@/theme/loading.scss'; + +/** + * 页面全局 Loading + * @method setCss 载入 css + * @method start 创建 loading + * @method done 移除 loading + */ +export const NextLoading = { + // 载入 css + setCss: () => { + let link = document.createElement('link'); + link.rel = 'stylesheet'; + link.href = loadingCss; + link.crossOrigin = 'anonymous'; + document.getElementsByTagName('head')[0].appendChild(link); + }, + // 创建 loading + start: () => { + const bodys: Element = document.body; + const div = document.createElement('div'); + div.setAttribute('class', 'loading-next'); + const htmls = ` +
+
+
+
+
+
+
+
+
+
+
+
+
+ `; + div.innerHTML = htmls; + if(bodys.insertBefore!==undefined){ + bodys.insertBefore(div, bodys.childNodes[0]); + window.nextLoading = true; + } + + }, + // 移除 loading + done: () => { + nextTick(() => { + setTimeout(() => { + window.nextLoading = false; + const el = document.querySelector('.loading-next'); + el && el.parentNode?.removeChild(el); + }, 1000); + }); + }, +}; diff --git a/src/utils/loadingzdy.ts b/src/utils/loadingzdy.ts new file mode 100644 index 0000000..3b8e4c1 --- /dev/null +++ b/src/utils/loadingzdy.ts @@ -0,0 +1,83 @@ +import { nextTick } from 'vue'; + +/** + * 页面全局 Loading + * @method setCss 载入 css(可选) + * @method start 创建 loading + * @method done 移除 loading + */ +export const NextLoadingzdy = { + // 可选:如果想用外部 CSS 文件,可以保留这个方法 + setCss: () => { + // 留空或者你可以注入内联样式 + }, + // 创建 loading + start: () => { + const bodys: Element = document.body; + + // 构建 HTML + 内联样式,防止依赖额外文件 + const div = document.createElement('div'); + div.setAttribute('class', 'loading-next'); + + const htmls = ` + + +
+
加载中...
+ `; + + div.innerHTML = htmls; + bodys.appendChild(div); + + window.nextLoading = true; + }, + // 移除 loading + done: () => { + nextTick(() => { + setTimeout(() => { + window.nextLoading = false; + const el = document.querySelector('.loading-next'); + if (el) { + el.style.opacity = '0'; + setTimeout(() => { + el.parentNode?.removeChild(el); + }, 300); + } + }, 800); + }); + }, +}; \ No newline at end of file diff --git a/src/utils/other.ts b/src/utils/other.ts new file mode 100644 index 0000000..c9d085e --- /dev/null +++ b/src/utils/other.ts @@ -0,0 +1,121 @@ +import { nextTick } from 'vue'; +import type { App } from 'vue'; +import * as svg from '@element-plus/icons-vue'; +import router from '/@/router/index'; +import { store } from '/@/store/index'; +import { i18n } from '/@/i18n/index'; +import { Local } from '/@/utils/storage'; +import SvgIcon from '/@/components/svgIcon/index.vue'; + +/** + * 导出全局注册 element plus svg 图标 + * @param app vue 实例 + * @description 使用:https://element-plus.gitee.io/zh-CN/component/icon.html + */ +export function elSvg(app: App) { + const icons = svg as any; + for (const i in icons) { + app.component(`element${icons[i].name}`, icons[i]); + } + app.component('SvgIcon', SvgIcon); +} + +/** + * 设置浏览器标题国际化 + * @method const title = useTitle(); ==> title() + */ +export function useTitle() { + return () => { + nextTick(() => { + let webTitle = ''; + let globalTitle: string = store.state.themeConfig.themeConfig.globalTitle; + router.currentRoute.value.path === '/login' + ? (webTitle = router.currentRoute.value.meta.title as any) + : (webTitle = i18n.global.t(router.currentRoute.value.meta.title as any)); + document.title = `${webTitle} - ${globalTitle}` || globalTitle; + }); + }; +} + +/** + * 图片懒加载 + * @param el dom 目标元素 + * @param arr 列表数据 + * @description data-xxx 属性用于存储页面或应用程序的私有自定义数据 + */ +export const lazyImg = (el: any, arr: any) => { + const io = new IntersectionObserver((res) => { + res.forEach((v: any) => { + if (v.isIntersecting) { + const { img, key } = v.target.dataset; + v.target.src = img; + v.target.onload = () => { + io.unobserve(v.target); + arr[key]['loading'] = false; + }; + } + }); + }); + nextTick(() => { + document.querySelectorAll(el).forEach((img) => io.observe(img)); + }); +}; + +/** + * 全局组件大小 + * @returns 返回 `window.localStorage` 中读取的缓存值 `globalComponentSize` + */ +export function globalComponentSize() { + return Local.get('themeConfig')?.globalComponentSize; +} + +/** + * 对象深克隆 + * @param obj 源对象 + * @returns 克隆后的对象 + */ +export function deepClone(obj: any) { + let newObj: any; + try { + newObj = obj.push ? [] : {}; + } catch (error) { + newObj = {}; + } + for (let attr in obj) { + if (typeof obj[attr] === 'object') { + newObj[attr] = deepClone(obj[attr]); + } else { + newObj[attr] = obj[attr]; + } + } + return newObj; +} + +/** + * 统一批量导出 + * @method elSvg 导出全局注册 element plus svg 图标 + * @method useTitle 设置浏览器标题国际化 + * @method lazyImg 图片懒加载 + * @method globalComponentSize element plus 全局组件大小 + * @method deepClone 对象深克隆 + */ +const other = { + elSvg: (app: App) => { + elSvg(app); + }, + useTitle: () => { + useTitle(); + }, + lazyImg: (el: any, arr: any) => { + lazyImg(el, arr); + }, + globalComponentSize: () => { + globalComponentSize(); + }, + deepClone: (obj: any) => { + deepClone(obj); + }, +}; + +// 统一批量导出 +export default other; diff --git a/src/utils/request.ts b/src/utils/request.ts new file mode 100644 index 0000000..fcf9a36 --- /dev/null +++ b/src/utils/request.ts @@ -0,0 +1,184 @@ +import axios from 'axios'; +import { ElLoading, ElMessage, ElMessageBox, } from 'element-plus'; +import { Session } from '/@/utils/storage'; +import Qs from 'qs'; + +export const BASE_URL = import.meta.env.VITE_API_URL as any +axios.defaults.withCredentials = false; +// 记录请求次数 +let needLoadingRequestCount = 0; +let loading; +// 正在进行中的请求列表 +let reqList = [] // 如果某个api存在这个数组里,说明该api暂时无法再次请求 +/** + * 阻止重复请求 + * @param {array} reqList - 请求缓存列表 + * @param {string} url - 当前请求地址 + * @param {function} cancel - 请求中断函数 + * @param {string} errorMessage - 请求中断时需要显示的错误信息 + */ +const stopRepeatRequest = function (reqList, url, cancel, errorMessage) { + const errorMsg = errorMessage || '' + for (let i = 0; i < reqList.length; i++) { + if (reqList[i] === url) { + cancel(errorMsg) + return + } + } + reqList.push(url) + } +/** + * 允许某个请求可以继续进行 + * @param {array} reqList 全部请求列表 + * @param {string} url 请求地址 + */ +const allowRequest = function (reqList, url) { + for (let i = 0; i < reqList.length; i++) { + if (reqList[i] === url) { + reqList.splice(i, 1) + break + } + } + } +// 配置新建一个 axios 实例 +const service = axios.create({ + baseURL: import.meta.env.VITE_API_URL as any, + timeout: 600000, + paramsSerializer: function(params) {//序列化请求参数,避免get请求参数出现&,空格等识别错误的问题 + return Qs.stringify(params, {arrayFormat: 'brackets'}) + }, + headers: { 'Content-Type': 'application/json' }, +}); + +// 添加请求拦截器 +service.interceptors.request.use( + (config) => { + // console.log('-------------',config) + // showFullScreenLoading(); + // 在发送请求之前做些什么 token + if (Session.get('token')) { + config.headers.common['Authorization'] = 'Bearer '+ `${Session.get('token')}`; + } + const systemLang = Session.get('st_locale') || 'zh-cn'; + const langMap = { + 'zh-cn': 'zh-CN', + 'ja': 'ja-JP', + 'en': 'en-US', + 'zh-tw': 'zh-TW', + 'ms': 'ms-MY' + } + config.headers.common['accept-language'] = langMap[systemLang]; + + let cancel + // 设置cancelToken对象 + config.cancelToken = new axios.CancelToken(function(c) { + cancel = c + }) + // 阻止重复请求。当上个请求未完成时,相同的请求不会进行 + // stopRepeatRequest(reqList, config.url, cancel, `${config.url} 请求被中断`) + return config; + }, + (error) => { + // tryHideFullScreenLoading(); + // 对请求错误做些什么 + return Promise.reject(error); + } +); + +// 添加响应拦截器 +service.interceptors.response.use( + (response) => { + // tryHideFullScreenLoading(); + // 增加延迟,相同请求不得在短时间内重复发送 + setTimeout(() => { + allowRequest(reqList, response.config.url) + }, 1000) // 上一次请求返回后过1s才允许再次请求 + // 对响应数据做点什么 + const res = response.data; + if (res.code && res.code !== 0) { + // `token` 过期或者账号已在别处登录 + if (res.code === 401 || res.code === 4001||res.code===50014) { + Session.clear(); // 清除浏览器全部临时缓存 + window.location.href = '/'; // 去登录页 + ElMessageBox.alert('你已被登出,请重新登录', '提示', {}) + .then(() => {}) + .catch(() => {}); + } + if(res.code===200){ + return response.data; + } + if(res.code === 400){ + ElMessage.error(res.message); + } + if(res.code === 500){ + ElMessage.error(res.message); + } + return Promise.reject(res.message); + } else { + return response.data; + } + }, + (error) => { + // tryHideFullScreenLoading(); + console.log('--------------------') + console.log(error) + + if (axios.isCancel(error)) { + console.log(error.message); + } + else { + setTimeout(() => { + allowRequest(reqList, error.config.url) + }, 1000) // 请求失败返回后过1s才允许再次请求 + } + // 对响应错误做点什么 + if (error.message.indexOf('timeout') != -1) { + ElMessage.error('网络超时'); + }else if (error.message.indexOf('status code 401') != -1) { + ElMessage.error('token 过期了'); + Session.clear(); // 清除浏览器全部临时缓存 + window.location.href = '/'; // 去登录页 + } + else if (error.message == 'Network Error') { + ElMessage.error('网络连接错误'); + } else { + if (error.response.data) ElMessage.error(error.response.statusText); + else ElMessage.error('接口路径找不到'); + } + return Promise.reject(error); + } +); + +// loading函数 +const startLoading=()=> { + loading = ElLoading.service({ + lock: true, + text: '加载中……', + background: 'rgba(0, 0, 0, 0.5)', + }); +} +const endLoading=()=> { + // 延迟500ms,防止网速特快加载中画面一闪而过 + setTimeout(function () { + if (loading) loading.close(); + }, 500); +} +// 打开loading +const showFullScreenLoading=()=> { + if (needLoadingRequestCount === 0) { + startLoading(); + } + needLoadingRequestCount++; +} +// 关闭loading +const tryHideFullScreenLoading=()=> { + if (needLoadingRequestCount <= 0) return; + needLoadingRequestCount--; + if (needLoadingRequestCount === 0) { + endLoading(); + } +} + + +// 导出 axios 实例 +export default service; diff --git a/src/utils/setIconfont.ts b/src/utils/setIconfont.ts new file mode 100644 index 0000000..77d66ed --- /dev/null +++ b/src/utils/setIconfont.ts @@ -0,0 +1,51 @@ +// 字体图标 url +const cssCdnUrlList: Array = [ + // '/css/font-awesome.min.css', + // '/css/font_2298093_y6u00apwst.css', + '/css/font_2298093_rnp72ifj3ba.css', + // '//at.alicdn.com/t/c/font_2298093_rnp72ifj3ba.css' + '/css/font-awesome2.min.css', +]; +// 第三方 js url +const jsCdnUrlList: Array = []; + +// 动态批量设置字体图标 +export function setCssCdn() { + if (cssCdnUrlList.length <= 0) return false; + cssCdnUrlList.map((v) => { + let link = document.createElement('link'); + link.rel = 'stylesheet'; + link.href = v; + link.crossOrigin = 'anonymous'; + document.getElementsByTagName('head')[0].appendChild(link); + }); +} + +// 动态批量设置第三方js +export function setJsCdn() { + if (jsCdnUrlList.length <= 0) return false; + jsCdnUrlList.map((v) => { + let link = document.createElement('script'); + link.src = v; + document.body.appendChild(link); + }); +} + +/** + * 批量设置字体图标、动态js + * @method cssCdn 动态批量设置字体图标 + * @method jsCdn 动态批量设置第三方js + */ +const setIntroduction = { + // 设置css + cssCdn: () => { + setCssCdn(); + }, + // 设置js + jsCdn: () => { + setJsCdn(); + }, +}; + +// 导出函数方法 +export default setIntroduction; diff --git a/src/utils/storage.ts b/src/utils/storage.ts new file mode 100644 index 0000000..f9d49e5 --- /dev/null +++ b/src/utils/storage.ts @@ -0,0 +1,64 @@ + +import Cookies from "js-cookie" +/** + * window.localStorage 浏览器永久缓存 + * @method set 设置永久缓存 + * @method get 获取永久缓存 + * @method remove 移除永久缓存 + * @method clear 移除全部永久缓存 + */ +export const Local = { + // 查看 v2.4.3版本更新日志 + setKey(key: string) { + // @ts-ignore + return `${__NEXT_NAME__}:${key}`; + }, + // 设置永久缓存 + set(key: string, val: T) { + window.localStorage.setItem(Local.setKey(key), JSON.stringify(val)); + }, + // 获取永久缓存 + get(key: string) { + let json = window.localStorage.getItem(Local.setKey(key)); + return JSON.parse(json); + }, + // 移除永久缓存 + remove(key: string) { + window.localStorage.removeItem(Local.setKey(key)); + }, + // 移除全部永久缓存 + clear() { + window.localStorage.clear(); + }, +}; + +/** + * window.sessionStorage 浏览器临时缓存 + * @method set 设置临时缓存 + * @method get 获取临时缓存 + * @method remove 移除临时缓存 + * @method clear 移除全部临时缓存 + */ +export const Session = { + // 设置临时缓存 + set(key: string, val: T) { + if (key === 'token') return Cookies.set(key, val); + window.sessionStorage.setItem(Local.setKey(key), JSON.stringify(val)); + }, + // 获取临时缓存 + get(key: string) { + if (key === 'token') return Cookies.get(key); + let json = window.sessionStorage.getItem(Local.setKey(key)); + return JSON.parse(json); + }, + // 移除临时缓存 + remove(key: string) { + if (key === 'token') return Cookies.remove(key); + window.sessionStorage.removeItem(Local.setKey(key)); + }, + // 移除全部临时缓存 + clear() { + Cookies.remove('token'); + window.sessionStorage.clear(); + }, +}; \ No newline at end of file diff --git a/src/utils/svgBuilder.ts b/src/utils/svgBuilder.ts new file mode 100644 index 0000000..7f6c961 --- /dev/null +++ b/src/utils/svgBuilder.ts @@ -0,0 +1,85 @@ +import { readFileSync, readdirSync } from 'fs' +import { Plugin } from 'vite' + +// id 前缀 +let idPerfix = '' + +// 识别svg标签的属性 +const svgTitle = /+].*?)>/ + +// 有一些svg文件的属性会定义height和width,要把它清除掉 +const clearHeightWidth = /(width|height)="([^>+].*?)"/g + +// 没有viewBox的话就利用height和width来新建一个viewBox +const hasViewBox = /(viewBox="[^>+].*?")/g + +// 清除换行符 +const clearReturn = /(\r)|(\n)/g + +/** + * @param dir 路径 +*/ +function findSvgFile(dir: string): string[] { + const svgRes: string[] = [] + const dirents = readdirSync(dir, { + withFileTypes: true + }) + for (const dirent of dirents) { + const path = dir + dirent.name + if (dirent.isDirectory()) { + svgRes.push(...findSvgFile(path + '/')) + } else { + const svg = readFileSync(path) + .toString() + .replace(clearReturn, '') + .replace(svgTitle, ($1, $2) => { + let width = 0 + let height = 0 + let content = $2.replace( + clearHeightWidth, + (s1, s2, s3) => { + s3 = s3.replace('px', '') + if (s2 === 'width') { + width = s3 + } else if (s2 === 'height') { + height = s3 + } + return '' + } + ) + if (!hasViewBox.test($2)) { + content += `viewBox="0 0 ${width} ${height}"` + } + return `` + }) + .replace('', '') + svgRes.push(svg) + } + } + return svgRes +} + +export const svgBuilder = (path: string, perfix = 'icon'): Plugin => { + if (path === '') return + idPerfix = perfix + const res = findSvgFile(path) //引用上面的 + return { + name: 'svg-transform', + transformIndexHtml(html): string { + return html.replace( + '', + ` + + + ${res.join('')} + + ` + ) + } + } +} + + \ No newline at end of file diff --git a/src/utils/theme.ts b/src/utils/theme.ts new file mode 100644 index 0000000..bce550b --- /dev/null +++ b/src/utils/theme.ts @@ -0,0 +1,59 @@ +import { ElMessage } from 'element-plus'; + +/** + * hex颜色转rgb颜色 + * @param str 颜色值字符串 + * @returns 返回处理后的颜色值 + */ +export function hexToRgb(str: any) { + let hexs: any = ''; + let reg = /^\#?[0-9A-Fa-f]{6}$/; + if (!reg.test(str)) return ElMessage.warning('输入错误的hex'); + str = str.replace('#', ''); + hexs = str.match(/../g); + for (let i = 0; i < 3; i++) hexs[i] = parseInt(hexs[i], 16); + return hexs; +} + +/** + * rgb颜色转Hex颜色 + * @param r 代表红色 + * @param g 代表绿色 + * @param b 代表蓝色 + * @returns 返回处理后的颜色值 + */ +export function rgbToHex(r: any, g: any, b: any) { + let reg = /^\d{1,3}$/; + if (!reg.test(r) || !reg.test(g) || !reg.test(b)) return ElMessage.warning('输入错误的rgb颜色值'); + let hexs = [r.toString(16), g.toString(16), b.toString(16)]; + for (let i = 0; i < 3; i++) if (hexs[i].length == 1) hexs[i] = `0${hexs[i]}`; + return `#${hexs.join('')}`; +} + +/** + * 加深颜色值 + * @param color 颜色值字符串 + * @param level 加深的程度,限0-1之间 + * @returns 返回处理后的颜色值 + */ +export function getDarkColor(color: any, level: number) { + let reg = /^\#?[0-9A-Fa-f]{6}$/; + if (!reg.test(color)) return ElMessage.warning('输入错误的hex颜色值'); + let rgb = hexToRgb(color); + for (let i = 0; i < 3; i++) rgb[i] = Math.floor(rgb[i] * (1 - level)); + return rgbToHex(rgb[0], rgb[1], rgb[2]); +} + +/** + * 变浅颜色值 + * @param color 颜色值字符串 + * @param level 加深的程度,限0-1之间 + * @returns 返回处理后的颜色值 + */ +export function getLightColor(color: any, level: number) { + let reg = /^\#?[0-9A-Fa-f]{6}$/; + if (!reg.test(color)) return ElMessage.warning('输入错误的hex颜色值'); + let rgb = hexToRgb(color); + for (let i = 0; i < 3; i++) rgb[i] = Math.floor((255 - rgb[i]) * level + rgb[i]); + return rgbToHex(rgb[0], rgb[1], rgb[2]); +} diff --git a/src/utils/toolsValidate.ts b/src/utils/toolsValidate.ts new file mode 100644 index 0000000..d64280c --- /dev/null +++ b/src/utils/toolsValidate.ts @@ -0,0 +1,428 @@ +/** + * 2020.11.29 lyt 整理 + * 工具类集合,适用于平时开发 + * 新增多行注释信息,鼠标放到方法名即可查看 + */ + +/** + * 小数或整数(不可以负数) + * @param val 当前值字符串 + * @returns 返回处理后的字符串 + */ +export function verifyNumberIntegerAndFloat(val: string) { + // 匹配空格 + let v = val.replace(/(^\s*)|(\s*$)/g, ''); + // 只能是数字和小数点,不能是其他输入 + v = v.replace(/[^\d.]/g, ''); + // 以0开始只能输入一个 + v = v.replace(/^0{2}$/g, '0'); + // 保证第一位只能是数字,不能是点 + v = v.replace(/^\./g, ''); + // 小数只能出现1位 + v = v.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.'); + // 小数点后面保留2位 + v = v.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3'); + // 返回结果 + return v; +} + +/** + * 正整数验证 + * @param val 当前值字符串 + * @returns 返回处理后的字符串 + */ +export function verifiyNumberInteger(val: string) { + // 匹配空格 + let v = val.replace(/(^\s*)|(\s*$)/g, ''); + // 去掉 '.' , 防止贴贴的时候出现问题 如 0.1.12.12 + v = v.replace(/[\.]*/g, ''); + // 去掉以 0 开始后面的数, 防止贴贴的时候出现问题 如 00121323 + v = v.replace(/(^0[\d]*)$/g, '0'); + // 首位是0,只能出现一次 + v = v.replace(/^0\d$/g, '0'); + // 只匹配数字 + v = v.replace(/[^\d]/g, ''); + // 返回结果 + return v; +} + +/** + * 去掉中文及空格 + * @param val 当前值字符串 + * @returns 返回处理后的字符串 + */ +export function verifyCnAndSpace(val: string) { + // 匹配中文与空格 + let v = val.replace(/[\u4e00-\u9fa5\s]+/g, ''); + // 匹配空格 + v = v.replace(/(^\s*)|(\s*$)/g, ''); + // 返回结果 + return v; +} + +/** + * 去掉英文及空格 + * @param val 当前值字符串 + * @returns 返回处理后的字符串 + */ +export function verifyEnAndSpace(val: string) { + // 匹配英文与空格 + let v = val.replace(/[a-zA-Z]+/g, ''); + // 匹配空格 + v = v.replace(/(^\s*)|(\s*$)/g, ''); + // 返回结果 + return v; +} + +/** + * 禁止输入空格 + * @param val 当前值字符串 + * @returns 返回处理后的字符串 + */ +export function verifyAndSpace(val: string) { + // 匹配空格 + let v = val.replace(/(^\s*)|(\s*$)/g, ''); + // 返回结果 + return v; +} + +/** + * 金额用 `,` 区分开 + * @param val 当前值字符串 + * @returns 返回处理后的字符串 + */ +export function verifyNumberComma(val: string) { + // 调用小数或整数(不可以负数)方法 + let v: any = verifyNumberIntegerAndFloat(val); + // 字符串转成数组 + v = v.toString().split('.'); + // \B 匹配非单词边界,两边都是单词字符或者两边都是非单词字符 + v[0] = v[0].replace(/\B(?=(\d{3})+(?!\d))/g, ','); + // 数组转字符串 + v = v.join('.'); + // 返回结果 + return v; +} + +/** + * 匹配文字变色(搜索时) + * @param val 当前值字符串 + * @param text 要处理的字符串值 + * @param color 搜索到时字体高亮颜色 + * @returns 返回处理后的字符串 + */ +export function verifyTextColor(val: string, text = '', color = 'red') { + // 返回内容,添加颜色 + let v = text.replace(new RegExp(val, 'gi'), `${val}`); + // 返回结果 + return v; +} + +/** + * 数字转中文大写 + * @param val 当前值字符串 + * @param unit 默认:仟佰拾亿仟佰拾万仟佰拾元角分 + * @returns 返回处理后的字符串 + */ +export function verifyNumberCnUppercase(val: any, unit = '仟佰拾亿仟佰拾万仟佰拾元角分', v = '') { + // 当前内容字符串添加 2个0,为什么?? + val += '00'; + // 返回某个指定的字符串值在字符串中首次出现的位置,没有出现,则该方法返回 -1 + let lookup = val.indexOf('.'); + // substring:不包含结束下标内容,substr:包含结束下标内容 + if (lookup >= 0) val = val.substring(0, lookup) + val.substr(lookup + 1, 2); + // 根据内容 val 的长度,截取返回对应大写 + unit = unit.substr(unit.length - val.length); + // 循环截取拼接大写 + for (let i = 0; i < val.length; i++) { + v += '零壹贰叁肆伍陆柒捌玖'.substr(val.substr(i, 1), 1) + unit.substr(i, 1); + } + // 正则处理 + v = v + .replace(/零角零分$/, '整') + .replace(/零[仟佰拾]/g, '零') + .replace(/零{2,}/g, '零') + .replace(/零([亿|万])/g, '$1') + .replace(/零+元/, '元') + .replace(/亿零{0,3}万/, '亿') + .replace(/^元/, '零元'); + // 返回结果 + return v; +} + +/** + * 手机号码 + * @param val 当前值字符串 + * @returns 返回 true: 手机号码正确 + */ +export function verifyPhone(val: string) { + // false: 手机号码不正确 + if (!/^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(val)) return false; + // true: 手机号码正确 + else return true; +} + +/** + * 国内电话号码 + * @param val 当前值字符串 + * @returns 返回 true: 国内电话号码正确 + */ +export function verifyTelPhone(val: string) { + // false: 国内电话号码不正确 + if (!/\d{3}-\d{8}|\d{4}-\d{7}/.test(val)) return false; + // true: 国内电话号码正确 + else return true; +} + +/** + * 登录账号 (字母开头,允许5-16字节,允许字母数字下划线) + * @param val 当前值字符串 + * @returns 返回 true: 登录账号正确 + */ +export function verifyAccount(val: string) { + // false: 登录账号不正确 + if (!/^[a-zA-Z][a-zA-Z0-9_]{4,15}$/.test(val)) return false; + // true: 登录账号正确 + else return true; +} + +/** + * 密码 (以字母开头,长度在6~16之间,只能包含字母、数字和下划线) + * @param val 当前值字符串 + * @returns 返回 true: 密码正确 + */ +export function verifyPassword(val: string) { + // false: 密码不正确 + if (!/^[a-zA-Z]\w{5,15}$/.test(val)) return false; + // true: 密码正确 + else return true; +} + +/** + * 强密码 (字母+数字+特殊字符,长度在6-16之间) + * @param val 当前值字符串 + * @returns 返回 true: 强密码正确 + */ +export function verifyPasswordPowerful(val: string) { + // false: 强密码不正确 + if (!/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) + return false; + // true: 强密码正确 + else return true; +} + +/** + * 密码强度 + * @param val 当前值字符串 + * @description 弱:纯数字,纯字母,纯特殊字符 + * @description 中:字母+数字,字母+特殊字符,数字+特殊字符 + * @description 强:字母+数字+特殊字符 + * @returns 返回处理后的字符串:弱、中、强 + */ +export function verifyPasswordStrength(val: string) { + let v = ''; + // 弱:纯数字,纯字母,纯特殊字符 + if (/^(?:\d+|[a-zA-Z]+|[!@#$%^&\.*]+){6,16}$/.test(val)) v = '弱'; + // 中:字母+数字,字母+特殊字符,数字+特殊字符 + if (/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) v = '中'; + // 强:字母+数字+特殊字符 + if (/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) + v = '强'; + // 返回结果 + return v; +} + +/** + * IP地址 + * @param val 当前值字符串 + * @returns 返回 true: IP地址正确 + */ +export function verifyIPAddress(val: string) { + // false: IP地址不正确 + if ( + !/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/.test( + val + ) + ) + return false; + // true: IP地址正确 + else return true; +} + +/** + * 邮箱 + * @param val 当前值字符串 + * @returns 返回 true: 邮箱正确 + */ +export function verifyEmail(val: string) { + // false: 邮箱不正确 + if ( + !/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test( + val + ) + ) + return false; + // true: 邮箱正确 + else return true; +} + +/** + * 身份证 + * @param val 当前值字符串 + * @returns 返回 true: 身份证正确 + */ +export function verifyIdCard(val: string) { + // false: 身份证不正确 + if (!/^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(val)) return false; + // true: 身份证正确 + else return true; +} + +/** + * 姓名 + * @param val 当前值字符串 + * @returns 返回 true: 姓名正确 + */ +export function verifyFullName(val: string) { + // false: 姓名不正确 + if (!/^[\u4e00-\u9fa5]{1,6}(·[\u4e00-\u9fa5]{1,6}){0,2}$/.test(val)) return false; + // true: 姓名正确 + else return true; +} + +/** + * 邮政编码 + * @param val 当前值字符串 + * @returns 返回 true: 邮政编码正确 + */ +export function verifyPostalCode(val: string) { + // false: 邮政编码不正确 + if (!/^[1-9][0-9]{5}$/.test(val)) return false; + // true: 邮政编码正确 + else return true; +} + +/** + * url 处理 + * @param val 当前值字符串 + * @returns 返回 true: url 正确 + */ +export function verifyUrl(val: string) { + // false: url不正确 + if ( + !/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( + val + ) + ) + return false; + // true: url正确 + else return true; +} + +/** + * 车牌号 + * @param val 当前值字符串 + * @returns 返回 true:车牌号正确 + */ +export function verifyCarNum(val: string) { + // false: 车牌号不正确 + if ( + !/^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/.test( + val + ) + ) + return false; + // true:车牌号正确 + else return true; +}/* + * 当type=1时获取出生日期,type=2时获取性别,type=3时获取年龄 + * */ +export function IdCard(IdCard, type) { + if (type === 1) { + //获取出生日期 + let birthday = IdCard.substring(6, 10) + "-" + IdCard.substring(10, 12) + "-" + IdCard.substring(12, 14) + return birthday + } + if (type === 2) { + //获取性别 + if (parseInt(IdCard.substr(16, 1)) % 2 === 1) { + return 0 + } else { + return 1 + } + } + if (type === 3) { + //获取年龄 + var ageDate = new Date() + var month = ageDate.getMonth() + 1 + var day = ageDate.getDate() + var age = ageDate.getFullYear() - IdCard.substring(6, 10) - 1 + if (IdCard.substring(10, 12) < month || IdCard.substring(10, 12) === month && IdCard.substring(12, 14) <= day) { + age++ + } + if (age <= 0) { + age = 1 + } + return age + } +} + +export function checkTz(rule: any, value: any, callback: any) { + setTimeout(() => { + if(value===0||value){ + if (Number(value) >500||Number(value) <10) { + callback(new Error('请检查体重值是否正确!')) + } else { + callback() + } + }else{ + callback() + } + + }, 500) +} +export function checkMR(rule: any, value: any, callback: any) { + setTimeout(() => { + if (!Number.isInteger(value)) { + callback() + } else { + if (value >200||value <10) { + callback(new Error('请检查值是否正确!')) + } else { + callback() + } + } + }, 500) +} + +export function checkMBpH(rule: any, value: any, callback: any) { + if (!value) { + return callback() + } + setTimeout(() => { + if (!Number.isInteger(value)) { + callback(new Error('请输入数字')); + } + else if (value < 0 || value > 300) { + callback(new Error('请检查值是否正确!')) + } else { + callback(); + } + }, 200); +} + +export function checkMBpL(rule: any, value: any, callback: any) { + if (!value) { + return callback() + } + setTimeout(() => { + if (!Number.isInteger(value)) { + callback(new Error('请输入数字')); + } + else if (value < 0 || value > 200) { + callback(new Error('请检查值是否正确!')) + } else { + callback(); + } + }, 200); +} \ No newline at end of file diff --git a/src/utils/utils.ts b/src/utils/utils.ts new file mode 100644 index 0000000..eaf1363 --- /dev/null +++ b/src/utils/utils.ts @@ -0,0 +1,51 @@ +/** + * 延时函数 + * @param {number} ms - 延时时间,单位毫秒 + */ +export function delay(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); + } +export function getFileType(filename) { + const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff']; + const videoExtensions = ['mp4', 'avi', 'mov', 'wmv', 'flv', 'mkv', 'webm', 'm4v']; + + // 提取文件扩展名(转小写) + const ext = filename?.split('.')?.pop()?.toLowerCase(); + + if (!ext) return 'unknown'; + + if (imageExtensions.includes(ext)) { + return 'image'; + } else if (videoExtensions.includes(ext)) { + return 'video'; + } else { + return 'unknown'; // 或者 'other' + } +} +export function findNearestTimeSlot(timeSlots) { + const now = new Date(); + const currentHour = now.getHours().toString().padStart(2, '0'); + const currentMinute = now.getMinutes().toString().padStart(2, '0'); + const currentTimeStr = `${currentHour}:${currentMinute}`; + + // 将 HH:MM 格式的时间转为当天的分钟数(更简洁) + function timeToMinutes(timeStr) { + const [hours, minutes] = timeStr.split(':').map(Number); + return hours * 60 + minutes; + } + + const currentMinutes = timeToMinutes(currentTimeStr); + + for (const slot of timeSlots) { + const startMinutes = timeToMinutes(slot.startTime); + const endMinutes = timeToMinutes(slot.endTime); + + // 判断当前时间是否在 [startTime, endTime) 区间内(左闭右开) + if (currentMinutes >= startMinutes && currentMinutes < endMinutes) { + return slot; // 找到正在进行的时段,立即返回 + } + } + + // 没有找到匹配的时段 + return null; +} \ No newline at end of file diff --git a/src/utils/viteBuild.ts b/src/utils/viteBuild.ts new file mode 100644 index 0000000..4fa1191 --- /dev/null +++ b/src/utils/viteBuild.ts @@ -0,0 +1,31 @@ +import dotenv from 'dotenv'; + +// 定义接口类型声明 +export interface ViteEnv { + VITE_PORT: number; + VITE_OPEN: boolean; + VITE_PUBLIC_PATH: string; +} + +/** + * vite 打包相关 + * @link 参考:https://cn.vitejs.dev/guide/env-and-mode.html + * @returns 返回 `VITE_xxx` 环境变量和模式信息 + */ +export function loadEnv(): ViteEnv { + const env = process.env.NODE_ENV; + const ret: any = {}; + const envList = [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env']; + envList.forEach((e) => { + dotenv.config({ path: e }); + }); + for (const envName of Object.keys(process.env)) { + let realName = (process.env as any)[envName].replace(/\\n/g, '\n'); + realName = realName === 'true' ? true : realName === 'false' ? false : realName; + if (envName === 'VITE_PORT') realName = Number(realName); + if (envName === 'VITE_OPEN') realName = Boolean(realName); + ret[envName] = realName; + process.env[envName] = realName; + } + return ret; +} diff --git a/src/utils/wartermark.ts b/src/utils/wartermark.ts new file mode 100644 index 0000000..2e5d5e3 --- /dev/null +++ b/src/utils/wartermark.ts @@ -0,0 +1,47 @@ +// 页面添加水印效果 +const setWatermark = (str: string) => { + const id = '1.23452384164.123412416'; + if (document.getElementById(id) !== null) document.body.removeChild(document.getElementById(id) as any); + const can = document.createElement('canvas'); + can.width = 200; + can.height = 130; + const cans: any = can.getContext('2d'); + cans.rotate((-20 * Math.PI) / 180); + cans.font = '12px Vedana'; + cans.fillStyle = 'rgba(200, 200, 200, 0.30)'; + cans.textBaseline = 'Middle'; + cans.fillText(str, can.width / 10, can.height / 2); + const div = document.createElement('div'); + div.id = id; + div.style.pointerEvents = 'none'; + div.style.top = '15px'; + div.style.left = '0px'; + div.style.position = 'fixed'; + div.style.zIndex = '10000000'; + div.style.width = `${document.documentElement.clientWidth}px`; + div.style.height = `${document.documentElement.clientHeight}px`; + div.style.background = `url(${can.toDataURL('image/png')}) left top repeat`; + document.body.appendChild(div); + return id; +}; + +/** + * 页面添加水印效果 + * @method set 设置水印 + * @method del 删除水印 + */ +const watermark = { + // 设置水印 + set: (str: string) => { + let id = setWatermark(str); + if (document.getElementById(id) === null) id = setWatermark(str); + }, + // 删除水印 + del: () => { + let id = '1.23452384164.123412416'; + if (document.getElementById(id) !== null) document.body.removeChild(document.getElementById(id) as any); + }, +}; + +// 导出方法 +export default watermark; diff --git a/src/utils/webSocketUtil.ts b/src/utils/webSocketUtil.ts new file mode 100644 index 0000000..0afd82f --- /dev/null +++ b/src/utils/webSocketUtil.ts @@ -0,0 +1,73 @@ +//引入使用SockJS +import { store } from '/@/store/index.ts'; +import Stomp from "stompjs"; +import {formatDate} from "/@/utils/formatTime.ts" +//请求地址 +const baseUrl = "http://hemobs.icoldchain.cn/broadcast"; +//请求头 +const header = {}; +//stomp客户端 +let stompClient: Stomp.Client; +//连接状态 +let connetStatus = false; +/** + * 初始化连接 + */ +export const initSocket = () => { + con(); + setInterval(() => { + //根据连接状态 + if (connetStatus) { + try { + } catch (error) { + console.log('websockte断开准备重连') + con(); + } + } + }, 10000); +}; +/** + * 连接 + */ +export const con = () => { + let socket = new WebSocket('wss://hemobs.icoldchain.cn/broadcast') + + stompClient = Stomp.over(socket); + + let header = {}; + stompClient.connect( + header, + () => { + console.log("===========connect success==========="); + const userClick=store.state.userInfos.userInfos.client.code + connetStatus = true; + //设置订阅 + stompClient.subscribe( + `/queue/recv/client/${userClick}`, + (res: any) => { + console.log('订阅后返回消息',formatDate(new Date(),'YYYY-mm-dd HH:MM:SS')) + var dataBody = JSON.parse(res.body) + console.log(dataBody); + }, + header + ); + }, + (err: any) => { + console.log("error"); + console.log(err); + } + ); +}; + +/** + * 断开 + */ +export const close = () => { + if (stompClient) { + stompClient.disconnect(() => { + console.log("============connect release============"); + connetStatus = false; + }); + } +}; + diff --git a/src/views/components/SelectivePartition/index.vue b/src/views/components/SelectivePartition/index.vue new file mode 100644 index 0000000..44f5cb1 --- /dev/null +++ b/src/views/components/SelectivePartition/index.vue @@ -0,0 +1,61 @@ + + + \ No newline at end of file diff --git a/src/views/components/setAlert.vue b/src/views/components/setAlert.vue new file mode 100644 index 0000000..e095d0e --- /dev/null +++ b/src/views/components/setAlert.vue @@ -0,0 +1,269 @@ + + + diff --git a/src/views/components/webSocket/app.ts b/src/views/components/webSocket/app.ts new file mode 100644 index 0000000..f689142 --- /dev/null +++ b/src/views/components/webSocket/app.ts @@ -0,0 +1,61 @@ +import { ref } from 'vue'; +import * as StompJs from '@stomp/stompjs'; + +export default function createWebSocketService() { + const isConnected = ref(false); // WebSocket连接状态标志位 + + let client; // Stomp客户端对象 + + async function connectToServer() { + try { + if (client) { + await disconnect(); // 如果已经存在连接则断开当前连接 + } + + client = new StompJs.Client({}); // 初始化Stomp客户端对象 + + client.configure({ heartbeatIncoming: 0 }); // 配置心跳间隔(单位:毫秒) + + await client.activate(); // 激活Stomp客户端 + + console.log('成功连接到WebSocket服务器'); + + isConnected.value = true; // 更新连接状态标志位 + + + // 添加其他处理逻辑... + } catch (error) { + console.error('无法连接到WebSocket服务器', error); + + setTimeout(() => { + retryConnecting(); // 失败后等待一段时间再次尝试连接 + }, 5000); + } + } + + async function disconnect() { + if (!isConnected.value || !client) return; + + await client.deactivate(); // 取消激活Stomp客户端 + + console.log('与WebSocket服务器断开连接'); + + isConnected.value = false; // 更新连接状态标志位 + } + + function retryConnecting() { + connectToServer().catch((error) => { + console.error('重连失败', error); + + setTimeout(() => { + retryConnecting(); // 失败后等待一段时间再次尝试连接 + }, 5000); + }); + } + + return { + isConnected, + connectToServer, + disconnect, + }; +} \ No newline at end of file diff --git a/src/views/components/webSocket/app.vue b/src/views/components/webSocket/app.vue new file mode 100644 index 0000000..bd1df30 --- /dev/null +++ b/src/views/components/webSocket/app.vue @@ -0,0 +1,204 @@ + + diff --git a/src/views/components/webSocket/index.vue b/src/views/components/webSocket/index.vue new file mode 100644 index 0000000..c3106e9 --- /dev/null +++ b/src/views/components/webSocket/index.vue @@ -0,0 +1,97 @@ + + diff --git a/src/views/error/401.vue b/src/views/error/401.vue new file mode 100644 index 0000000..38c39b4 --- /dev/null +++ b/src/views/error/401.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/views/error/404.vue b/src/views/error/404.vue new file mode 100644 index 0000000..91b82f0 --- /dev/null +++ b/src/views/error/404.vue @@ -0,0 +1,95 @@ + + + + + diff --git a/src/views/listCurrentHemoMeds/img/shangwu.png b/src/views/listCurrentHemoMeds/img/shangwu.png new file mode 100644 index 0000000..6be18fc Binary files /dev/null and b/src/views/listCurrentHemoMeds/img/shangwu.png differ diff --git a/src/views/listCurrentHemoMeds/img/wanshang.png b/src/views/listCurrentHemoMeds/img/wanshang.png new file mode 100644 index 0000000..e84304b Binary files /dev/null and b/src/views/listCurrentHemoMeds/img/wanshang.png differ diff --git a/src/views/listCurrentHemoMeds/img/xiawu.png b/src/views/listCurrentHemoMeds/img/xiawu.png new file mode 100644 index 0000000..2482757 Binary files /dev/null and b/src/views/listCurrentHemoMeds/img/xiawu.png differ diff --git a/src/views/listCurrentHemoMeds/img/上午@2x.png b/src/views/listCurrentHemoMeds/img/上午@2x.png new file mode 100644 index 0000000..2961b8d Binary files /dev/null and b/src/views/listCurrentHemoMeds/img/上午@2x.png differ diff --git a/src/views/listCurrentHemoMeds/img/下午已签到.png b/src/views/listCurrentHemoMeds/img/下午已签到.png new file mode 100644 index 0000000..867bf01 Binary files /dev/null and b/src/views/listCurrentHemoMeds/img/下午已签到.png differ diff --git a/src/views/listCurrentHemoMeds/img/晚上-已签到@2x.png b/src/views/listCurrentHemoMeds/img/晚上-已签到@2x.png new file mode 100644 index 0000000..1300902 Binary files /dev/null and b/src/views/listCurrentHemoMeds/img/晚上-已签到@2x.png differ diff --git a/src/views/listCurrentHemoMeds/img/矩形@2x.png b/src/views/listCurrentHemoMeds/img/矩形@2x.png new file mode 100644 index 0000000..8db0316 Binary files /dev/null and b/src/views/listCurrentHemoMeds/img/矩形@2x.png differ diff --git a/src/views/listCurrentHemoMeds/img/矩形备份 10@2x.png b/src/views/listCurrentHemoMeds/img/矩形备份 10@2x.png new file mode 100644 index 0000000..1fa74bf Binary files /dev/null and b/src/views/listCurrentHemoMeds/img/矩形备份 10@2x.png differ diff --git a/src/views/listCurrentHemoMeds/img/矩形备份 2@2x.png b/src/views/listCurrentHemoMeds/img/矩形备份 2@2x.png new file mode 100644 index 0000000..f091043 Binary files /dev/null and b/src/views/listCurrentHemoMeds/img/矩形备份 2@2x.png differ diff --git a/src/views/listCurrentHemoMeds/img/矩形备份 3@2x.png b/src/views/listCurrentHemoMeds/img/矩形备份 3@2x.png new file mode 100644 index 0000000..bc2c0f4 Binary files /dev/null and b/src/views/listCurrentHemoMeds/img/矩形备份 3@2x.png differ diff --git a/src/views/listCurrentHemoMeds/img/矩形备份 9@2x.png b/src/views/listCurrentHemoMeds/img/矩形备份 9@2x.png new file mode 100644 index 0000000..8a375fb Binary files /dev/null and b/src/views/listCurrentHemoMeds/img/矩形备份 9@2x.png differ diff --git a/src/views/listCurrentHemoMeds/index.vue b/src/views/listCurrentHemoMeds/index.vue new file mode 100644 index 0000000..37eebea --- /dev/null +++ b/src/views/listCurrentHemoMeds/index.vue @@ -0,0 +1,961 @@ + + + \ No newline at end of file diff --git a/src/vue.d.ts b/src/vue.d.ts new file mode 100644 index 0000000..56bae31 --- /dev/null +++ b/src/vue.d.ts @@ -0,0 +1,13 @@ +// 以下两种方案二选一 + +// 方案一 +// declare module "*.vue" { +// import Vue from "vue"; +// export default Vue; +// } + + declare module '*.vue' { + import { ComponentOptions } from 'vue'; + const componentOptions: ComponentOptions; + export default componentOptions; +} \ No newline at end of file diff --git a/test.html b/test.html new file mode 100644 index 0000000..913fd96 --- /dev/null +++ b/test.html @@ -0,0 +1,78 @@ + + + + + +Body Composition Radar Chart + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 躯干 + 右上肢 + 右下肢 + 左下肢 + 左上肢 + 左下肢 + 右上肢 + 左下肢 + 右下肢 + + + + 低标准 + + 标准 + + 超标准 + + + \ No newline at end of file diff --git a/transfer.bat b/transfer.bat new file mode 100644 index 0000000..183a9af --- /dev/null +++ b/transfer.bat @@ -0,0 +1,26 @@ +@echo off + +rmdir /s /q .\dist +call npm install +call npm run build + +"C:\syncthing\data1\common-tools\WinSCP-5.11.2-Portable\WinSCP.com" ^ + /log="WinSCP.log" /ini=nul ^ + /command ^ + "open sftp://root:songjun1@101.132.161.78/ -hostkey=""ssh-ed25519 256 34:00:7d:e0:4b:ef:fe:4d:f8:59:84:8e:58:6a:46:aa""" ^ + "lpwd" ^ + "lcd dist" ^ + "put * /root/hemodialysis/pc/" ^ + "exit" + + +set WINSCP_RESULT=%ERRORLEVEL% +if %WINSCP_RESULT% equ 0 ( + echo Success +) else ( + echo Error +) + +exit /b %WINSCP_RESULT% + + diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..de1c444 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,40 @@ +{ + "compilerOptions": { + "target": "esnext", + "useDefineForClassFields": true, + "module": "esnext", + "moduleResolution": "node", + "strict": false, + "jsx": "preserve", + "sourceMap": true, + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "lib": ["esnext", "dom"], + "types": ["vite/client"], + "skipLibCheck": true,//忽略所有的声明文件( *.d.ts)的类型检查。 + "baseUrl": "./",//。所有非相对模块导入都会被当做相对于 baseUrl。 + "paths": { + "@/*": ["src/*"], + "/@/*": ["src/*"], + "views/*": ["src/views/*"], + "components/*": ["src/components/*"], + "assets/*": ["src/assets/*"] + } + }, + "include": [ + "vue.d.ts", + "app.d.ts", + "src/*.js", + "src/**/*.d.ts", + "src/**/*.vue", + "src/**/*.vue", "src/views/components/webSocket/app.ts", "src/api/client_alert_info/index.ts", + ], + "exclude": [ + "node_modules" + ], + "typeRoots":[ + "./types", + "./node-modules/vue/types" + ] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..f0c5a0d --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,56 @@ +import vue from '@vitejs/plugin-vue'; +import { resolve } from 'path'; +import type { UserConfig ,Plugin} from 'vite'; +import { loadEnv } from './src/utils/viteBuild'; +import { svgBuilder } from './src/utils/svgBuilder'; + + +const pathResolve = (dir: string): any => { + return resolve(__dirname, '.', dir); +}; + +const { VITE_PORT, VITE_OPEN, VITE_PUBLIC_PATH } = loadEnv(); + +const alias: Record = { + '/@': pathResolve('./src/'), + 'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js', +}; + +//对应的文件夹,否则无法找到 src/assets/icons/svg +const viteConfig: UserConfig = { + plugins: [vue(),svgBuilder('./src/assets/icons/svg/')], + root: process.cwd(), + resolve: { alias }, + base: process.env.NODE_ENV === 'production' ? VITE_PUBLIC_PATH : './', + optimizeDeps: { + include: ['element-plus/lib/locale/lang/zh-cn', 'element-plus/lib/locale/lang/en', 'element-plus/lib/locale/lang/zh-tw'], + }, + server: { + host: '0.0.0.0', + port: VITE_PORT, + open: VITE_OPEN, + proxy: { + '/gitee': { + target: 'https://gitee.com', + ws: true, + changeOrigin: true, + rewrite: (path) => path.replace(/^\/gitee/, ''), + }, + }, + force:true + }, + build: { + outDir: 'dist', + minify: 'esbuild', + sourcemap: false, + chunkSizeWarningLimit: 1500, + }, + define: { + __VUE_I18N_LEGACY_API__: JSON.stringify(false), + __VUE_I18N_FULL_INSTALL__: JSON.stringify(false), + __INTLIFY_PROD_DEVTOOLS__: JSON.stringify(false), + __NEXT_NAME__: JSON.stringify(process.env.npm_package_name), + } +}; + +export default viteConfig;