初始化提交
@ -0,0 +1,21 @@
|
|||||||
|
node_modules
|
||||||
|
.DS_Store
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
*.local
|
||||||
|
.eslintcache
|
||||||
|
report.html
|
||||||
|
|
||||||
|
yarn.lock
|
||||||
|
npm-debug.log*
|
||||||
|
.pnpm-error.log*
|
||||||
|
.pnpm-debug.log
|
||||||
|
tests/**/coverage/
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.idea
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
tsconfig.tsbuildinfo
|
@ -0,0 +1,14 @@
|
|||||||
|
# http://editorconfig.org
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset = utf-8
|
||||||
|
indent_style = space
|
||||||
|
indent_size = 2
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = true
|
||||||
|
trim_trailing_whitespace = true
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
insert_final_newline = false
|
||||||
|
trim_trailing_whitespace = false
|
@ -0,0 +1,11 @@
|
|||||||
|
public
|
||||||
|
dist
|
||||||
|
*.d.ts
|
||||||
|
/src/assets
|
||||||
|
package.json
|
||||||
|
.eslintrc.js
|
||||||
|
.prettierrc.js
|
||||||
|
commitlint.config.js
|
||||||
|
postcss.config.js
|
||||||
|
tailwind.config.js
|
||||||
|
stylelint.config.js
|
@ -0,0 +1,121 @@
|
|||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
env: {
|
||||||
|
node: true
|
||||||
|
},
|
||||||
|
globals: {
|
||||||
|
// Ref sugar (take 2)
|
||||||
|
$: "readonly",
|
||||||
|
$$: "readonly",
|
||||||
|
$ref: "readonly",
|
||||||
|
$shallowRef: "readonly",
|
||||||
|
$computed: "readonly",
|
||||||
|
|
||||||
|
// index.d.ts
|
||||||
|
// global.d.ts
|
||||||
|
Fn: "readonly",
|
||||||
|
PromiseFn: "readonly",
|
||||||
|
RefType: "readonly",
|
||||||
|
LabelValueOptions: "readonly",
|
||||||
|
EmitType: "readonly",
|
||||||
|
TargetContext: "readonly",
|
||||||
|
ComponentElRef: "readonly",
|
||||||
|
ComponentRef: "readonly",
|
||||||
|
ElRef: "readonly",
|
||||||
|
global: "readonly",
|
||||||
|
ForDataType: "readonly",
|
||||||
|
ComponentRoutes: "readonly",
|
||||||
|
|
||||||
|
// script setup
|
||||||
|
defineProps: "readonly",
|
||||||
|
defineEmits: "readonly",
|
||||||
|
defineExpose: "readonly",
|
||||||
|
withDefaults: "readonly",
|
||||||
|
DC: false
|
||||||
|
},
|
||||||
|
extends: [
|
||||||
|
"plugin:vue/vue3-essential",
|
||||||
|
"eslint:recommended",
|
||||||
|
"@vue/typescript/recommended",
|
||||||
|
"@vue/prettier",
|
||||||
|
"@vue/eslint-config-typescript"
|
||||||
|
],
|
||||||
|
parser: "vue-eslint-parser",
|
||||||
|
parserOptions: {
|
||||||
|
parser: "@typescript-eslint/parser",
|
||||||
|
ecmaVersion: 2020,
|
||||||
|
sourceType: "module",
|
||||||
|
jsxPragma: "React",
|
||||||
|
ecmaFeatures: {
|
||||||
|
jsx: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: ["*.ts", "*.vue"],
|
||||||
|
rules: {
|
||||||
|
"no-undef": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
files: ["*.vue"],
|
||||||
|
parser: "vue-eslint-parser",
|
||||||
|
parserOptions: {
|
||||||
|
parser: "@typescript-eslint/parser",
|
||||||
|
extraFileExtensions: [".vue"],
|
||||||
|
ecmaVersion: "latest",
|
||||||
|
ecmaFeatures: {
|
||||||
|
jsx: true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
"no-undef": "off"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
rules: {
|
||||||
|
"vue/no-v-html": "off",
|
||||||
|
"vue/require-default-prop": "off",
|
||||||
|
"vue/require-explicit-emits": "off",
|
||||||
|
"vue/multi-word-component-names": "off",
|
||||||
|
"@typescript-eslint/no-explicit-any": "off", // any
|
||||||
|
"no-debugger": "off",
|
||||||
|
"@typescript-eslint/explicit-module-boundary-types": "off", // setup()
|
||||||
|
"@typescript-eslint/ban-types": "off",
|
||||||
|
"@typescript-eslint/ban-ts-comment": "off",
|
||||||
|
"@typescript-eslint/no-empty-function": "off",
|
||||||
|
"@typescript-eslint/no-non-null-assertion": "off",
|
||||||
|
"vue/html-self-closing": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
html: {
|
||||||
|
void: "always",
|
||||||
|
normal: "always",
|
||||||
|
component: "always"
|
||||||
|
},
|
||||||
|
svg: "always",
|
||||||
|
math: "always"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"@typescript-eslint/no-unused-vars": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
argsIgnorePattern: "^_",
|
||||||
|
varsIgnorePattern: "^_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"no-unused-vars": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
argsIgnorePattern: "^_",
|
||||||
|
varsIgnorePattern: "^_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"prettier/prettier": [
|
||||||
|
"error",
|
||||||
|
{
|
||||||
|
endOfLine: "auto"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
@ -0,0 +1,21 @@
|
|||||||
|
node_modules
|
||||||
|
.DS_Store
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
*.local
|
||||||
|
.eslintcache
|
||||||
|
report.html
|
||||||
|
|
||||||
|
yarn.lock
|
||||||
|
npm-debug.log*
|
||||||
|
.pnpm-error.log*
|
||||||
|
.pnpm-debug.log
|
||||||
|
tests/**/coverage/
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.idea
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
tsconfig.tsbuildinfo
|
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# shellcheck source=./_/husky.sh
|
||||||
|
. "$(dirname "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
npx --no-install commitlint --edit "$1"
|
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
command_exists () {
|
||||||
|
command -v "$1" >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Workaround for Windows 10, Git Bash and Pnpm
|
||||||
|
if command_exists winpty && test -t 1; then
|
||||||
|
exec < /dev/tty
|
||||||
|
fi
|
@ -0,0 +1,8 @@
|
|||||||
|
module.exports = {
|
||||||
|
"*.{js,jsx,ts,tsx}": ["eslint --fix", "prettier --write"],
|
||||||
|
"{!(package)*.json}": ["prettier --write--parser json"],
|
||||||
|
"package.json": ["prettier --write"],
|
||||||
|
"*.vue": ["eslint --fix", "prettier --write", "stylelint --fix"],
|
||||||
|
"*.{vue,css,scss,postcss,less}": ["stylelint --fix", "prettier --write"],
|
||||||
|
"*.md": ["prettier --write"]
|
||||||
|
};
|
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
. "$(dirname "$0")/_/husky.sh"
|
||||||
|
. "$(dirname "$0")/common.sh"
|
||||||
|
|
||||||
|
[ -n "$CI" ] && exit 0
|
||||||
|
|
||||||
|
# Format and submit code according to lintstagedrc.js configuration
|
||||||
|
npm run lint:lint-staged
|
||||||
|
|
||||||
|
npm run lint:pretty
|
@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"default": true,
|
||||||
|
"MD003": false,
|
||||||
|
"MD033": false,
|
||||||
|
"MD013": false,
|
||||||
|
"MD001": false,
|
||||||
|
"MD025": false,
|
||||||
|
"MD024": false,
|
||||||
|
"MD007": { "indent": 4 },
|
||||||
|
"no-hard-tabs": false
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
shamefully-hoist=true
|
||||||
|
strict-peer-dependencies=false
|
||||||
|
shell-emulator=true
|
@ -0,0 +1,6 @@
|
|||||||
|
module.exports = {
|
||||||
|
bracketSpacing: true,
|
||||||
|
singleQuote: false,
|
||||||
|
arrowParens: "avoid",
|
||||||
|
trailingComma: "none"
|
||||||
|
};
|
@ -0,0 +1,4 @@
|
|||||||
|
/dist/*
|
||||||
|
/public/*
|
||||||
|
public/*
|
||||||
|
src/style/reset.scss
|
@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"christian-kohler.path-intellisense",
|
||||||
|
"vscode-icons-team.vscode-icons",
|
||||||
|
"davidanson.vscode-markdownlint",
|
||||||
|
"ms-azuretools.vscode-docker",
|
||||||
|
"stylelint.vscode-stylelint",
|
||||||
|
"bradlc.vscode-tailwindcss",
|
||||||
|
"dbaeumer.vscode-eslint",
|
||||||
|
"esbenp.prettier-vscode",
|
||||||
|
"redhat.vscode-yaml",
|
||||||
|
"csstools.postcss",
|
||||||
|
"mikestead.dotenv",
|
||||||
|
"eamodio.gitlens",
|
||||||
|
"antfu.iconify",
|
||||||
|
"Vue.volar"
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
{
|
||||||
|
"editor.formatOnType": true,
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"[vue]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"editor.tabSize": 2,
|
||||||
|
"editor.formatOnPaste": true,
|
||||||
|
"editor.guides.bracketPairs": "active",
|
||||||
|
"files.autoSave": "off",
|
||||||
|
"git.confirmSync": false,
|
||||||
|
"workbench.startupEditor": "newUntitledFile",
|
||||||
|
"editor.suggestSelection": "first",
|
||||||
|
"editor.acceptSuggestionOnCommitCharacter": false,
|
||||||
|
"css.lint.propertyIgnoredDueToDisplay": "ignore",
|
||||||
|
"editor.quickSuggestions": {
|
||||||
|
"other": true,
|
||||||
|
"comments": true,
|
||||||
|
"strings": true
|
||||||
|
},
|
||||||
|
"files.associations": {
|
||||||
|
"editor.snippetSuggestions": "top"
|
||||||
|
},
|
||||||
|
"[css]": {
|
||||||
|
"editor.defaultFormatter": "esbenp.prettier-vscode"
|
||||||
|
},
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.fixAll.eslint": true
|
||||||
|
},
|
||||||
|
"iconify.excludes": ["el"]
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"Vue3.0快速生成模板": {
|
||||||
|
"scope": "vue",
|
||||||
|
"prefix": "Vue3.0",
|
||||||
|
"body": [
|
||||||
|
"<template>",
|
||||||
|
"\t<div>test</div>",
|
||||||
|
"</template>\n",
|
||||||
|
"<script lang='ts'>",
|
||||||
|
"export default {",
|
||||||
|
"\tsetup() {",
|
||||||
|
"\t\treturn {}",
|
||||||
|
"\t}",
|
||||||
|
"}",
|
||||||
|
"</script>\n",
|
||||||
|
"<style lang='scss' scoped>\n",
|
||||||
|
"</style>",
|
||||||
|
"$2"
|
||||||
|
],
|
||||||
|
"description": "Vue3.0"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"Vue3.2+快速生成模板": {
|
||||||
|
"scope": "vue",
|
||||||
|
"prefix": "Vue3.2+",
|
||||||
|
"body": [
|
||||||
|
"<script setup lang='ts'>",
|
||||||
|
"</script>\n",
|
||||||
|
"<template>",
|
||||||
|
"\t<div>test</div>",
|
||||||
|
"</template>\n",
|
||||||
|
"<style lang='scss' scoped>\n",
|
||||||
|
"</style>",
|
||||||
|
"$2"
|
||||||
|
],
|
||||||
|
"description": "Vue3.2+"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"Vue3.3+defineOptions快速生成模板": {
|
||||||
|
"scope": "vue",
|
||||||
|
"prefix": "Vue3.3+",
|
||||||
|
"body": [
|
||||||
|
"<script setup lang='ts'>",
|
||||||
|
"defineOptions({",
|
||||||
|
"\tname: ''",
|
||||||
|
"})",
|
||||||
|
"</script>\n",
|
||||||
|
"<template>",
|
||||||
|
"\t<div>test</div>",
|
||||||
|
"</template>\n",
|
||||||
|
"<style lang='scss' scoped>\n",
|
||||||
|
"</style>",
|
||||||
|
"$2"
|
||||||
|
],
|
||||||
|
"description": "Vue3.3+defineOptions快速生成模板"
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
FROM node:16-alpine as build-stage
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
RUN corepack enable
|
||||||
|
RUN corepack prepare pnpm@7.32.1 --activate
|
||||||
|
|
||||||
|
RUN npm config set registry https://registry.npmmirror.com
|
||||||
|
|
||||||
|
COPY .npmrc package.json pnpm-lock.yaml ./
|
||||||
|
RUN pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
RUN pnpm build
|
||||||
|
|
||||||
|
FROM nginx:stable-alpine as production-stage
|
||||||
|
|
||||||
|
COPY --from=build-stage /app/dist /usr/share/nginx/html
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
CMD ["nginx", "-g", "daemon off;"]
|
@ -0,0 +1,31 @@
|
|||||||
|
/** 处理环境变量 */
|
||||||
|
const warpperEnv = (envConf: Recordable): ViteEnv => {
|
||||||
|
/** 此处为默认值 */
|
||||||
|
const ret: ViteEnv = {
|
||||||
|
VITE_PORT: 8848,
|
||||||
|
VITE_PUBLIC_PATH: "",
|
||||||
|
VITE_ROUTER_HISTORY: "",
|
||||||
|
VITE_CDN: false,
|
||||||
|
VITE_HIDE_HOME: "false",
|
||||||
|
VITE_COMPRESSION: "none"
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const envName of Object.keys(envConf)) {
|
||||||
|
let realName = envConf[envName].replace(/\\n/g, "\n");
|
||||||
|
realName =
|
||||||
|
realName === "true" ? true : realName === "false" ? false : realName;
|
||||||
|
|
||||||
|
if (envName === "VITE_PORT") {
|
||||||
|
realName = Number(realName);
|
||||||
|
}
|
||||||
|
ret[envName] = realName;
|
||||||
|
if (typeof realName === "string") {
|
||||||
|
process.env[envName] = realName;
|
||||||
|
} else if (typeof realName === "object") {
|
||||||
|
process.env[envName] = JSON.stringify(realName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
};
|
||||||
|
|
||||||
|
export { warpperEnv };
|
@ -0,0 +1,56 @@
|
|||||||
|
import { cdn } from "./cdn";
|
||||||
|
import vue from "@vitejs/plugin-vue";
|
||||||
|
import { viteBuildInfo } from "./info";
|
||||||
|
import svgLoader from "vite-svg-loader";
|
||||||
|
import vueJsx from "@vitejs/plugin-vue-jsx";
|
||||||
|
import { viteMockServe } from "vite-plugin-mock";
|
||||||
|
import { configCompressPlugin } from "./compress";
|
||||||
|
// import ElementPlus from "unplugin-element-plus/vite";
|
||||||
|
import { visualizer } from "rollup-plugin-visualizer";
|
||||||
|
import removeConsole from "vite-plugin-remove-console";
|
||||||
|
import themePreprocessorPlugin from "@pureadmin/theme";
|
||||||
|
import { genScssMultipleScopeVars } from "../src/layout/theme";
|
||||||
|
|
||||||
|
export function getPluginsList(
|
||||||
|
command: string,
|
||||||
|
VITE_CDN: boolean,
|
||||||
|
VITE_COMPRESSION: ViteCompression
|
||||||
|
) {
|
||||||
|
const prodMock = true;
|
||||||
|
const lifecycle = process.env.npm_lifecycle_event;
|
||||||
|
return [
|
||||||
|
vue(),
|
||||||
|
// jsx、tsx语法支持
|
||||||
|
vueJsx(),
|
||||||
|
VITE_CDN ? cdn : null,
|
||||||
|
configCompressPlugin(VITE_COMPRESSION),
|
||||||
|
// 线上环境删除console
|
||||||
|
removeConsole({ external: ["src/assets/iconfont/iconfont.js"] }),
|
||||||
|
viteBuildInfo(),
|
||||||
|
// 自定义主题
|
||||||
|
themePreprocessorPlugin({
|
||||||
|
scss: {
|
||||||
|
multipleScopeVars: genScssMultipleScopeVars(),
|
||||||
|
extract: true
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
// svg组件化支持
|
||||||
|
svgLoader(),
|
||||||
|
// ElementPlus({}),
|
||||||
|
// mock支持
|
||||||
|
viteMockServe({
|
||||||
|
mockPath: "mock",
|
||||||
|
localEnabled: command === "serve",
|
||||||
|
prodEnabled: command !== "serve" && prodMock,
|
||||||
|
injectCode: `
|
||||||
|
import { setupProdMockServer } from './mockProdServer';
|
||||||
|
setupProdMockServer();
|
||||||
|
`,
|
||||||
|
logger: false
|
||||||
|
}),
|
||||||
|
// 打包分析
|
||||||
|
lifecycle === "report"
|
||||||
|
? visualizer({ open: true, brotliSize: true, filename: "report.html" })
|
||||||
|
: null
|
||||||
|
];
|
||||||
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
module.exports = {
|
||||||
|
ignores: [commit => commit.includes("init")],
|
||||||
|
extends: ["@commitlint/config-conventional"],
|
||||||
|
rules: {
|
||||||
|
"body-leading-blank": [2, "always"],
|
||||||
|
"footer-leading-blank": [1, "always"],
|
||||||
|
"header-max-length": [2, "always", 108],
|
||||||
|
"subject-empty": [2, "never"],
|
||||||
|
"type-empty": [2, "never"],
|
||||||
|
"type-enum": [
|
||||||
|
2,
|
||||||
|
"always",
|
||||||
|
[
|
||||||
|
"feat",
|
||||||
|
"fix",
|
||||||
|
"perf",
|
||||||
|
"style",
|
||||||
|
"docs",
|
||||||
|
"test",
|
||||||
|
"refactor",
|
||||||
|
"build",
|
||||||
|
"ci",
|
||||||
|
"chore",
|
||||||
|
"revert",
|
||||||
|
"wip",
|
||||||
|
"workflow",
|
||||||
|
"types",
|
||||||
|
"release"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
@ -0,0 +1,88 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||||
|
<meta name="renderer" content="webkit" />
|
||||||
|
<meta name="viewport"
|
||||||
|
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0" />
|
||||||
|
<title>虚拟病人</title>
|
||||||
|
<link rel="icon" href="/favicon.ico" />
|
||||||
|
<script>
|
||||||
|
window.process = {};
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="app">
|
||||||
|
<style>
|
||||||
|
html,
|
||||||
|
body,
|
||||||
|
#app {
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loader,
|
||||||
|
.loader::before,
|
||||||
|
.loader::after {
|
||||||
|
width: 2.5em;
|
||||||
|
height: 2.5em;
|
||||||
|
border-radius: 50%;
|
||||||
|
animation: load-animation 1.8s infinite ease-in-out;
|
||||||
|
animation-fill-mode: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loader {
|
||||||
|
position: relative;
|
||||||
|
top: 0;
|
||||||
|
margin: 80px auto;
|
||||||
|
font-size: 10px;
|
||||||
|
color: #406eeb;
|
||||||
|
text-indent: -9999em;
|
||||||
|
transform: translateZ(0);
|
||||||
|
transform: translate(-50%, 0);
|
||||||
|
animation-delay: -0.16s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loader::before,
|
||||||
|
.loader::after {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
content: "";
|
||||||
|
}
|
||||||
|
|
||||||
|
.loader::before {
|
||||||
|
left: -3.5em;
|
||||||
|
animation-delay: -0.32s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.loader::after {
|
||||||
|
left: 3.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes load-animation {
|
||||||
|
|
||||||
|
0%,
|
||||||
|
80%,
|
||||||
|
100% {
|
||||||
|
box-shadow: 0 2.5em 0 -1.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
40% {
|
||||||
|
box-shadow: 0 2.5em 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<div class="loader"></div>
|
||||||
|
</div>
|
||||||
|
<script type="module" src="/src/main.ts"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
@ -0,0 +1,66 @@
|
|||||||
|
// 根据角色动态生成路由
|
||||||
|
import { MockMethod } from "vite-plugin-mock";
|
||||||
|
|
||||||
|
export default [
|
||||||
|
{
|
||||||
|
url: "/login",
|
||||||
|
method: "post",
|
||||||
|
response: ({ body }) => {
|
||||||
|
if (body.username === "admin" && body.password === "admin123") {
|
||||||
|
return {
|
||||||
|
success: true,
|
||||||
|
data: {
|
||||||
|
username: "admin",
|
||||||
|
// 一个用户可能有多个角色
|
||||||
|
roles: ["admin"],
|
||||||
|
accessToken: "eyJhbGciOiJIUzUxMiJ9.admin",
|
||||||
|
refreshToken: "eyJhbGciOiJIUzUxMiJ9.adminRefresh",
|
||||||
|
expires: "2023/10/30 00:00:00"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else if (body.username === "common" && body.password === "common123") {
|
||||||
|
return {
|
||||||
|
success: true,
|
||||||
|
data: {
|
||||||
|
username: "common",
|
||||||
|
// 一个用户可能有多个角色
|
||||||
|
roles: ["common"],
|
||||||
|
accessToken: "eyJhbGciOiJIUzUxMiJ9.common",
|
||||||
|
refreshToken: "eyJhbGciOiJIUzUxMiJ9.commonRefresh",
|
||||||
|
expires: "2023/10/30 00:00:00"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
success: false,
|
||||||
|
msg: "用户名密码错误"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
// if (body.username === "admin") {
|
||||||
|
// return {
|
||||||
|
// success: true,
|
||||||
|
// data: {
|
||||||
|
// username: "admin",
|
||||||
|
// // 一个用户可能有多个角色
|
||||||
|
// roles: ["admin"],
|
||||||
|
// accessToken: "eyJhbGciOiJIUzUxMiJ9.admin",
|
||||||
|
// refreshToken: "eyJhbGciOiJIUzUxMiJ9.adminRefresh",
|
||||||
|
// expires: "2023/10/30 00:00:00"
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
// } else {
|
||||||
|
// return {
|
||||||
|
// success: true,
|
||||||
|
// data: {
|
||||||
|
// username: "common",
|
||||||
|
// // 一个用户可能有多个角色
|
||||||
|
// roles: ["common"],
|
||||||
|
// accessToken: "eyJhbGciOiJIUzUxMiJ9.common",
|
||||||
|
// refreshToken: "eyJhbGciOiJIUzUxMiJ9.commonRefresh",
|
||||||
|
// expires: "2023/10/30 00:00:00"
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
] as MockMethod[];
|
@ -0,0 +1,27 @@
|
|||||||
|
import { MockMethod } from "vite-plugin-mock";
|
||||||
|
|
||||||
|
// 模拟刷新token接口
|
||||||
|
export default [
|
||||||
|
{
|
||||||
|
url: "/refreshToken",
|
||||||
|
method: "post",
|
||||||
|
response: ({ body }) => {
|
||||||
|
if (body.refreshToken) {
|
||||||
|
return {
|
||||||
|
success: true,
|
||||||
|
data: {
|
||||||
|
accessToken: "eyJhbGciOiJIUzUxMiJ9.newAdmin",
|
||||||
|
refreshToken: "eyJhbGciOiJIUzUxMiJ9.newAdminRefresh",
|
||||||
|
// `expires`选择这种日期格式是为了方便调试,后端直接设置时间戳或许更方便(每次都应该递增)。如果后端返回的是时间戳格式,前端开发请来到这个目录`src/utils/auth.ts`,把第`38`行的代码换成expires = data.expires即可。
|
||||||
|
expires: "2023/10/30 23:59:59"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return {
|
||||||
|
success: false,
|
||||||
|
data: {}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
] as MockMethod[];
|
@ -0,0 +1,141 @@
|
|||||||
|
{
|
||||||
|
"name": "test-project",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "NODE_OPTIONS=--max-old-space-size=4096 vite",
|
||||||
|
"serve": "pnpm dev",
|
||||||
|
"build": "rimraf dist && NODE_OPTIONS=--max-old-space-size=8192 vite build",
|
||||||
|
"build:staging": "rimraf dist && vite build --mode staging",
|
||||||
|
"report": "rimraf dist && vite build",
|
||||||
|
"preview": "vite preview",
|
||||||
|
"preview:build": "pnpm build && vite preview",
|
||||||
|
"typecheck": "tsc --noEmit && vue-tsc --noEmit --skipLibCheck",
|
||||||
|
"svgo": "svgo -f src/assets/svg -o src/assets/svg",
|
||||||
|
"cloc": "NODE_OPTIONS=--max-old-space-size=4096 cloc . --exclude-dir=node_modules --exclude-lang=YAML",
|
||||||
|
"clean:cache": "rimraf node_modules && rimraf .eslintcache && pnpm install",
|
||||||
|
"lint:eslint": "eslint --cache --max-warnings 0 \"{src,mock,build}/**/*.{vue,js,ts,tsx}\" --fix",
|
||||||
|
"lint:prettier": "prettier --write \"src/**/*.{js,ts,json,tsx,css,scss,vue,html,md}\"",
|
||||||
|
"lint:stylelint": "stylelint \"**/*.{html,vue,css,scss}\" --fix --cache --cache-location node_modules/.cache/stylelint/",
|
||||||
|
"lint:lint-staged": "lint-staged -c ./.husky/lintstagedrc.js",
|
||||||
|
"lint:pretty": "pretty-quick --staged",
|
||||||
|
"lint": "pnpm lint:eslint && pnpm lint:prettier && pnpm lint:stylelint",
|
||||||
|
"prepare": "husky install",
|
||||||
|
"preinstall": "npx only-allow pnpm"
|
||||||
|
},
|
||||||
|
"browserslist": [
|
||||||
|
"> 1%",
|
||||||
|
"not ie 11",
|
||||||
|
"not op_mini all"
|
||||||
|
],
|
||||||
|
"dependencies": {
|
||||||
|
"@pureadmin/descriptions": "^1.1.1",
|
||||||
|
"@pureadmin/table": "^2.3.2",
|
||||||
|
"@pureadmin/utils": "^1.9.6",
|
||||||
|
"@vue/composition-api": "^1.7.2",
|
||||||
|
"@vueuse/core": "^10.2.0",
|
||||||
|
"@vueuse/motion": "^2.0.0",
|
||||||
|
"animate.css": "^4.1.1",
|
||||||
|
"axios": "^1.4.0",
|
||||||
|
"dayjs": "^1.11.8",
|
||||||
|
"element-plus": "2.3.6",
|
||||||
|
"js-audio-recorder": "^1.0.7",
|
||||||
|
"js-cookie": "^3.0.5",
|
||||||
|
"lodash.debounce": "^4.0.8",
|
||||||
|
"mitt": "^3.0.0",
|
||||||
|
"mockjs": "^1.1.0",
|
||||||
|
"nprogress": "^0.2.0",
|
||||||
|
"path": "^0.12.7",
|
||||||
|
"pinia": "^2.1.4",
|
||||||
|
"pinyin-pro": "^3.15.2",
|
||||||
|
"qs": "^6.11.2",
|
||||||
|
"recorder-js": "^1.0.7",
|
||||||
|
"recorderx": "^2.0.2",
|
||||||
|
"responsive-storage": "^2.2.0",
|
||||||
|
"sortablejs": "^1.15.0",
|
||||||
|
"uuid": "^9.0.1",
|
||||||
|
"vue": "^3.3.4",
|
||||||
|
"vue-router": "^4.2.2",
|
||||||
|
"vue-types": "^5.1.0",
|
||||||
|
"vue3-seamless-scroll": "^2.0.1"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@commitlint/cli": "^17.6.6",
|
||||||
|
"@commitlint/config-conventional": "^17.6.6",
|
||||||
|
"@iconify-icons/ant-design": "^1.2.7",
|
||||||
|
"@iconify-icons/ep": "^1.2.12",
|
||||||
|
"@iconify-icons/icon-park-outline": "^1.2.11",
|
||||||
|
"@iconify-icons/ri": "^1.2.9",
|
||||||
|
"@iconify/vue": "^4.1.1",
|
||||||
|
"@pureadmin/theme": "^3.1.0",
|
||||||
|
"@types/js-cookie": "^3.0.3",
|
||||||
|
"@types/mockjs": "^1.0.7",
|
||||||
|
"@types/node": "^20.3.1",
|
||||||
|
"@types/nprogress": "0.2.0",
|
||||||
|
"@types/qs": "^6.9.7",
|
||||||
|
"@types/sortablejs": "^1.15.1",
|
||||||
|
"@typescript-eslint/eslint-plugin": "^5.60.0",
|
||||||
|
"@typescript-eslint/parser": "^5.60.0",
|
||||||
|
"@vitejs/plugin-vue": "^4.2.3",
|
||||||
|
"@vitejs/plugin-vue-jsx": "^3.0.1",
|
||||||
|
"@vue/eslint-config-prettier": "^7.1.0",
|
||||||
|
"@vue/eslint-config-typescript": "^11.0.3",
|
||||||
|
"autoprefixer": "^10.4.14",
|
||||||
|
"cloc": "^2.11.0",
|
||||||
|
"cssnano": "^6.0.1",
|
||||||
|
"eslint": "^8.43.0",
|
||||||
|
"eslint-plugin-prettier": "^4.2.1",
|
||||||
|
"eslint-plugin-vue": "^9.15.1",
|
||||||
|
"husky": "^8.0.3",
|
||||||
|
"lint-staged": "^13.2.2",
|
||||||
|
"picocolors": "^1.0.0",
|
||||||
|
"postcss": "^8.4.24",
|
||||||
|
"postcss-html": "^1.5.0",
|
||||||
|
"postcss-import": "^15.1.0",
|
||||||
|
"postcss-scss": "^4.0.6",
|
||||||
|
"prettier": "^2.8.8",
|
||||||
|
"pretty-quick": "^3.1.3",
|
||||||
|
"rimraf": "^5.0.1",
|
||||||
|
"rollup-plugin-visualizer": "^5.9.2",
|
||||||
|
"sass": "^1.63.6",
|
||||||
|
"sass-loader": "^13.3.2",
|
||||||
|
"stylelint": "^15.9.0",
|
||||||
|
"stylelint-config-html": "^1.1.0",
|
||||||
|
"stylelint-config-recess-order": "^4.2.0",
|
||||||
|
"stylelint-config-recommended": "^12.0.0",
|
||||||
|
"stylelint-config-recommended-scss": "^12.0.0",
|
||||||
|
"stylelint-config-recommended-vue": "^1.4.0",
|
||||||
|
"stylelint-config-standard": "^33.0.0",
|
||||||
|
"stylelint-config-standard-scss": "^9.0.0",
|
||||||
|
"stylelint-order": "^6.0.3",
|
||||||
|
"stylelint-prettier": "^3.0.0",
|
||||||
|
"stylelint-scss": "^5.0.1",
|
||||||
|
"svgo": "^3.0.2",
|
||||||
|
"tailwindcss": "^3.3.2",
|
||||||
|
"terser": "^5.18.1",
|
||||||
|
"typescript": "5.0.4",
|
||||||
|
"vite": "^4.3.9",
|
||||||
|
"vite-plugin-cdn-import": "^0.3.5",
|
||||||
|
"vite-plugin-compression": "^0.5.1",
|
||||||
|
"vite-plugin-mock": "2.9.6",
|
||||||
|
"vite-plugin-remove-console": "^2.1.1",
|
||||||
|
"vite-svg-loader": "^4.0.0",
|
||||||
|
"vue-eslint-parser": "^9.3.1",
|
||||||
|
"vue-tsc": "^1.8.1"
|
||||||
|
},
|
||||||
|
"pnpm": {
|
||||||
|
"peerDependencyRules": {
|
||||||
|
"ignoreMissing": [
|
||||||
|
"rollup",
|
||||||
|
"webpack",
|
||||||
|
"core-js"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"allowedDeprecatedVersions": {
|
||||||
|
"sourcemap-codec": "*",
|
||||||
|
"w3c-hr-time": "*",
|
||||||
|
"stable": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"license": "MIT"
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
module.exports = {
|
||||||
|
plugins: {
|
||||||
|
"postcss-import": {},
|
||||||
|
"tailwindcss/nesting": {},
|
||||||
|
tailwindcss: {},
|
||||||
|
autoprefixer: {},
|
||||||
|
...(process.env.NODE_ENV === "production" ? { cssnano: {} } : {})
|
||||||
|
}
|
||||||
|
};
|
After Width: | Height: | Size: 1.2 KiB |
@ -0,0 +1,11 @@
|
|||||||
|
<svg width="30" height="32" viewBox="0 0 30 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M29.262 16.7252L23.5229 11.0259L20.9578 8.47347C20.9217 8.43538 20.8781 8.40503 20.8298 8.38428C20.7815 8.36354 20.7294 8.35284 20.6767 8.35284C20.6241 8.35284 20.572 8.36354 20.5237 8.38428C20.4753 8.40503 20.4318 8.43538 20.3956 8.47347L9.11646 19.6972C9.0244 19.7875 8.90027 19.8382 8.77094 19.8382C8.6416 19.8382 8.51747 19.7875 8.42542 19.6972L6.08291 17.3662C5.99207 17.2746 5.94114 17.151 5.94114 17.0224C5.94114 16.8937 5.99207 16.7701 6.08291 16.6785L15.4529 7.3546C15.5254 7.27699 15.5656 7.17499 15.5656 7.06906C15.5656 6.96313 15.5254 6.86112 15.4529 6.78351L12.9816 4.3826C12.9455 4.3445 12.9019 4.31415 12.8536 4.29341C12.8052 4.27267 12.7531 4.26196 12.7005 4.26196C12.6479 4.26196 12.5958 4.27267 12.5474 4.29341C12.4991 4.31415 12.4555 4.3445 12.4194 4.3826L0.121232 16.6203C0.0829476 16.6562 0.0524462 16.6996 0.0315998 16.7477C0.0107533 16.7958 0 16.8476 0 16.9C0 16.9524 0.0107533 17.0042 0.0315998 17.0523C0.0524462 17.1004 0.0829476 17.1437 0.121232 17.1797L5.83695 22.8906L8.40199 25.4314C8.47999 25.5035 8.5825 25.5435 8.68895 25.5435C8.7954 25.5435 8.89791 25.5035 8.97591 25.4314L20.2551 14.2077C20.2997 14.1633 20.3526 14.1281 20.4109 14.104C20.4692 14.08 20.5317 14.0676 20.5947 14.0676C20.6578 14.0676 20.7203 14.08 20.7786 14.104C20.8369 14.1281 20.8898 14.1633 20.9344 14.2077L23.2769 16.5387C23.3245 16.5813 23.3626 16.6334 23.3887 16.6916C23.4148 16.7499 23.4283 16.8129 23.4283 16.8767C23.4283 16.9404 23.4148 17.0035 23.3887 17.0617C23.3626 17.1199 23.3245 17.172 23.2769 17.2147L11.9977 28.45C11.9234 28.5243 11.8816 28.6249 11.8816 28.7297C11.8816 28.8346 11.9234 28.9352 11.9977 29.0094L14.4339 31.422C14.4701 31.4601 14.5136 31.4904 14.562 31.5112C14.6103 31.5319 14.6624 31.5426 14.715 31.5426C14.7677 31.5426 14.8198 31.5319 14.8681 31.5112C14.9164 31.4904 14.96 31.4601 14.9961 31.422L29.262 17.2962C29.3345 17.2186 29.3747 17.1166 29.3747 17.0107C29.3747 16.9048 29.3345 16.8028 29.262 16.7252Z" fill="url(#paint0_linear_562_16235)"/>
|
||||||
|
<path d="M17.7134 1.99314L13.86 2.79733C13.839 2.80347 13.8199 2.81483 13.8045 2.83035C13.7892 2.84587 13.778 2.86504 13.7722 2.88603C13.7663 2.90703 13.7659 2.92917 13.771 2.95035C13.7762 2.97154 13.7866 2.99108 13.8015 3.00712L16.8467 6.02574C16.8572 6.04261 16.8719 6.05653 16.8893 6.06618C16.9067 6.07583 16.9263 6.0809 16.9463 6.0809C16.9662 6.0809 16.9858 6.07583 17.0032 6.06618C17.0207 6.05653 17.0353 6.04261 17.0458 6.02574L17.8657 2.19128C17.884 2.16893 17.8942 2.14109 17.8947 2.11226C17.8951 2.08343 17.8858 2.05529 17.8682 2.03238C17.8506 2.00948 17.8257 1.99315 17.7977 1.98603C17.7696 1.97891 17.7399 1.98141 17.7134 1.99314Z" fill="#C50F08"/>
|
||||||
|
<path d="M19.5056 0.0356277L14.5278 1.35263C14.4812 1.36466 14.4387 1.3889 14.4047 1.42283C14.3707 1.45675 14.3464 1.49912 14.3345 1.54553C14.3225 1.59193 14.3233 1.64068 14.3367 1.6867C14.3501 1.73271 14.3756 1.77431 14.4107 1.80717L18.0533 5.43185C18.0849 5.46742 18.1258 5.49356 18.1715 5.50735C18.2171 5.52115 18.2657 5.52205 18.3119 5.50996C18.358 5.49788 18.3999 5.47328 18.4328 5.43891C18.4657 5.40454 18.4884 5.36175 18.4983 5.3153L19.8921 0.361966C19.9116 0.310297 19.9145 0.253924 19.9005 0.200539C19.8865 0.147153 19.8564 0.0993544 19.8141 0.0636642C19.7718 0.027974 19.7195 0.00612861 19.6643 0.00111125C19.6091 -0.00390611 19.5537 0.00814786 19.5056 0.0356277Z" fill="#FAEC18"/>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="paint0_linear_562_16235" x1="12.2203" y1="25.3498" x2="17.9654" y2="5.36981" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#3785B7"/>
|
||||||
|
<stop offset="0.69" stop-color="#2F3E8F"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 27 KiB |
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"Version": "1.0.0",
|
||||||
|
"Title": "Admin",
|
||||||
|
"FixedHeader": true,
|
||||||
|
"HiddenSideBar": false,
|
||||||
|
"MultiTagsCache": false,
|
||||||
|
"KeepAlive": false,
|
||||||
|
"Layout": "vertical",
|
||||||
|
"Theme": "default",
|
||||||
|
"DarkMode": false,
|
||||||
|
"Grey": false,
|
||||||
|
"Weak": false,
|
||||||
|
"HideTabs": true,
|
||||||
|
"SidebarStatus": true,
|
||||||
|
"EpThemeColor": "rgba(28, 13, 130)",
|
||||||
|
"ShowLogo": true,
|
||||||
|
"ShowModel": "smart",
|
||||||
|
"MenuArrowIconNoTransition": true,
|
||||||
|
"CachingAsyncRoutes": false,
|
||||||
|
"TooltipEffect": "light",
|
||||||
|
"ResponsiveStorageNameSpace": "responsive-"
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
<template>
|
||||||
|
<el-config-provider :locale="currentLocale">
|
||||||
|
<router-view />
|
||||||
|
<ReDialog />
|
||||||
|
</el-config-provider>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
import { defineComponent } from "vue";
|
||||||
|
import { ElConfigProvider } from "element-plus";
|
||||||
|
import zhCn from "element-plus/lib/locale/lang/zh-cn";
|
||||||
|
import { ReDialog } from "@/components/ReDialog";
|
||||||
|
export default defineComponent({
|
||||||
|
name: "app",
|
||||||
|
components: {
|
||||||
|
[ElConfigProvider.name]: ElConfigProvider,
|
||||||
|
ReDialog
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
currentLocale() {
|
||||||
|
return zhCn;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
@ -0,0 +1,168 @@
|
|||||||
|
import { http } from "@/utils/http";
|
||||||
|
/** 接收页面的语音消息转文字 */
|
||||||
|
export const receiveVoiceFile = (data?: object) => {
|
||||||
|
return http.request(
|
||||||
|
"post",
|
||||||
|
"/virtual-patient/ask/receiveVoiceFile",
|
||||||
|
{ data },
|
||||||
|
{ headers: { "Content-Type": "multipart/form-data" } }
|
||||||
|
);
|
||||||
|
};
|
||||||
|
//
|
||||||
|
export const replyVoice = (data?: object) => {
|
||||||
|
return http.request("get", "/ask/replyVoice", { data });
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 生成诊断流程任务 */
|
||||||
|
export const creatDiagnosisProcesse = (data?: object) => {
|
||||||
|
return http.request(
|
||||||
|
"get",
|
||||||
|
"/virtual-patient/askProcess/creatDiagnosisProcess",
|
||||||
|
{ params: data }
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 根据病人ID获取病人详细信息 */
|
||||||
|
|
||||||
|
export const queryPatientInfo = (data?: object) => {
|
||||||
|
return http.request("get", "/virtual-patient/askPatient/queryPatientInfo", {
|
||||||
|
params: data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 使用京东数字人进行对话 */
|
||||||
|
export const askTalk = (data?: object) => {
|
||||||
|
return http.request("post", "/virtual-patient/ask/talk", {
|
||||||
|
data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
/** 查询初步诊断列表 */
|
||||||
|
export const queryAskPrimaryList = (data?: object) => {
|
||||||
|
return http.request(
|
||||||
|
"get",
|
||||||
|
"/virtual-patient/askPrimary/queryAskPrimaryList",
|
||||||
|
{
|
||||||
|
params: data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/** 获取初步诊断可选的下拉列表 */
|
||||||
|
export const queryPrimaryCanChooseList = () => {
|
||||||
|
return http.request(
|
||||||
|
"get",
|
||||||
|
"/virtual-patient/askPrimary/queryPrimaryCanChooseList"
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/** 删除初步诊断 */
|
||||||
|
export const deletePrimary = (data?: object) => {
|
||||||
|
return http.request("get", "/virtual-patient/askPrimary/deletePrimary", {
|
||||||
|
params: data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
/** 保存初步诊断 */
|
||||||
|
export const savePrimary = (data?: object) => {
|
||||||
|
return http.request("post", "/virtual-patient/askPrimary/savePrimary", {
|
||||||
|
data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
/** 修改初步诊断 */
|
||||||
|
export const modifyPrimaryDiseaselnfo = (data?: object) => {
|
||||||
|
return http.request(
|
||||||
|
"post",
|
||||||
|
"/virtual-patient/askPrimary/modifyPrimaryDiseaseInfo",
|
||||||
|
{
|
||||||
|
data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/** 查询体格检查的工具列表 */
|
||||||
|
export const queryPhysicalToolList = (data?: object) => {
|
||||||
|
return http.request(
|
||||||
|
"get",
|
||||||
|
"/virtual-patient/askPhysical/queryPhysicalToolList",
|
||||||
|
{
|
||||||
|
params: data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/** 查询体格检查的结果(执行体格检查) */
|
||||||
|
export const queryAskPhysicalResult = (data?: object) => {
|
||||||
|
return http.request(
|
||||||
|
"get",
|
||||||
|
"/virtual-patient/askPhysical/queryAskPhysicalResult",
|
||||||
|
{
|
||||||
|
params: data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const queryAskPhysicalHistory = (data?: object) => {
|
||||||
|
return http.request(
|
||||||
|
"get",
|
||||||
|
"/virtual-patient/askPhysical/queryAskPhysicalHistory",
|
||||||
|
{
|
||||||
|
params: data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/** 查询辅助检查项目列表 */
|
||||||
|
export const queryAncillaryItemList = (data?: object) => {
|
||||||
|
return http.request(
|
||||||
|
"get",
|
||||||
|
"/virtual-patient/askAncillary/queryAncillaryItemList",
|
||||||
|
{
|
||||||
|
params: data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
/** 进行辅助检查,并获取结果 */
|
||||||
|
export const queryAskAncillaryResult = (data?: object) => {
|
||||||
|
return http.request(
|
||||||
|
"get",
|
||||||
|
"/virtual-patient/askAncillary/queryAskAncillaryResult",
|
||||||
|
{
|
||||||
|
params: data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
// 查询辅助检查的历史记录
|
||||||
|
export const queryAskAncillaryHistory = (data?: object) => {
|
||||||
|
return http.request(
|
||||||
|
"get",
|
||||||
|
"/virtual-patient/askAncillary/queryAskAncillaryHistory",
|
||||||
|
{
|
||||||
|
params: data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
//结束问诊
|
||||||
|
export const finishAsk = (data?: object) => {
|
||||||
|
return http.request("post", "/virtual-patient/askDiagnosisResult/finishAsk", {
|
||||||
|
data
|
||||||
|
});
|
||||||
|
};
|
||||||
|
//查询最终诊断结果
|
||||||
|
export const queryDiagnosisResult = (data?: object) => {
|
||||||
|
return http.request(
|
||||||
|
"get",
|
||||||
|
"/virtual-patient/askDiagnosisResult/queryDiagnosisResult",
|
||||||
|
{
|
||||||
|
params: data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
// 查询问答历史
|
||||||
|
export const queryHistoryList = (data?: object) => {
|
||||||
|
return http.request(
|
||||||
|
"get",
|
||||||
|
"/virtual-patient/diagnosisQaRecord/queryHistoryList",
|
||||||
|
{
|
||||||
|
params: data
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
export const ping = (data?: object) => {
|
||||||
|
return http.request("get", "/virtual-patient/heart/ping", {
|
||||||
|
params: data
|
||||||
|
});
|
||||||
|
};
|
@ -0,0 +1,24 @@
|
|||||||
|
import { http } from "@/utils/http";
|
||||||
|
|
||||||
|
type Result = {
|
||||||
|
success: boolean;
|
||||||
|
data?: {
|
||||||
|
/** 列表数据 */
|
||||||
|
list: Array<any>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 卡片列表 */
|
||||||
|
export const getCardList = (data?: object) => {
|
||||||
|
return http.request<Result>("post", "/getCardList", { data });
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 版本日志 */
|
||||||
|
export const getReleases = () => {
|
||||||
|
return http.request<Result>("get", "/releases");
|
||||||
|
};
|
||||||
|
|
||||||
|
/** 平台算法库 */
|
||||||
|
export const getAlgorithmList = (data?: object) => {
|
||||||
|
return http.request<Result>("post", "/algorithmList", { data });
|
||||||
|
};
|
@ -0,0 +1,10 @@
|
|||||||
|
import { http } from "@/utils/http";
|
||||||
|
|
||||||
|
type Result = {
|
||||||
|
success: boolean;
|
||||||
|
data: Array<any>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const getAsyncRoutes = () => {
|
||||||
|
return http.request<Result>("get", "/getAsyncRoutes");
|
||||||
|
};
|
@ -0,0 +1,26 @@
|
|||||||
|
@font-face {
|
||||||
|
font-family: "iconfont"; /* Project id 2208059 */
|
||||||
|
src: url("iconfont.woff2?t=1671895108120") format("woff2"),
|
||||||
|
url("iconfont.woff?t=1671895108120") format("woff"),
|
||||||
|
url("iconfont.ttf?t=1671895108120") format("truetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconfont {
|
||||||
|
font-family: "iconfont" !important;
|
||||||
|
font-size: 16px;
|
||||||
|
font-style: normal;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pure-iconfont-tabs:before {
|
||||||
|
content: "\e63e";
|
||||||
|
}
|
||||||
|
|
||||||
|
.pure-iconfont-logo:before {
|
||||||
|
content: "\e620";
|
||||||
|
}
|
||||||
|
|
||||||
|
.pure-iconfont-new:before {
|
||||||
|
content: "\e615";
|
||||||
|
}
|
@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
"id": "2208059",
|
||||||
|
"name": "pure-admin",
|
||||||
|
"font_family": "iconfont",
|
||||||
|
"css_prefix_text": "pure-iconfont-",
|
||||||
|
"description": "pure-admin-iconfont",
|
||||||
|
"glyphs": [
|
||||||
|
{
|
||||||
|
"icon_id": "20594647",
|
||||||
|
"name": "Tabs",
|
||||||
|
"font_class": "tabs",
|
||||||
|
"unicode": "e63e",
|
||||||
|
"unicode_decimal": 58942
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "22129506",
|
||||||
|
"name": "PureLogo",
|
||||||
|
"font_class": "logo",
|
||||||
|
"unicode": "e620",
|
||||||
|
"unicode_decimal": 58912
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "7795615",
|
||||||
|
"name": "New",
|
||||||
|
"font_class": "new",
|
||||||
|
"unicode": "e615",
|
||||||
|
"unicode_decimal": 58901
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
After Width: | Height: | Size: 182 KiB |
After Width: | Height: | Size: 68 KiB |
@ -0,0 +1,13 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g id="huji" clip-path="url(#clip0_219_7540)">
|
||||||
|
<path id="Vector" d="M0.623047 13.68C0.623047 13.9532 0.811763 14.2236 1.17842 14.476C1.54508 14.7283 2.0825 14.9576 2.76 15.1508C3.43749 15.3439 4.2418 15.4971 5.12699 15.6017C6.01218 15.7062 6.96092 15.76 7.91905 15.76C8.87717 15.76 9.82591 15.7062 10.7111 15.6017C11.5963 15.4971 12.4006 15.3439 13.0781 15.1508C13.7556 14.9576 14.293 14.7283 14.6597 14.476C15.0263 14.2236 15.215 13.9532 15.215 13.68C15.215 13.4069 15.0263 13.1364 14.6597 12.884C14.293 12.6317 13.7556 12.4024 13.0781 12.2092C12.4006 12.0161 11.5963 11.8629 10.7111 11.7583C9.82591 11.6538 8.87717 11.6 7.91905 11.6C6.96092 11.6 6.01218 11.6538 5.12699 11.7583C4.2418 11.8629 3.43749 12.0161 2.76 12.2092C2.0825 12.4024 1.54508 12.6317 1.17842 12.884C0.811763 13.1364 0.623047 13.4069 0.623047 13.68Z" fill="#EEF2FF"/>
|
||||||
|
<path id="Vector_2" d="M4.48097 3.83999C4.48097 3.83999 1.79297 5.02399 1.79297 5.32799V13.072C1.79297 13.072 2.38497 13.968 3.28097 13.664C4.17697 13.36 6.25697 12.176 6.25697 12.176C6.25697 12.176 12.817 15.152 15.201 9.48799V3.55199C15.201 3.55199 14.305 2.06399 12.817 3.55199C12.817 3.55199 13.409 5.34399 12.513 6.52799C11.633 7.71199 9.24897 10.4 8.96097 10.4C8.65697 10.4 5.39297 7.42399 4.78497 5.63199C4.17697 3.83999 4.78497 3.83999 4.78497 3.83999H4.48097Z" fill="#4287FF"/>
|
||||||
|
<path id="Vector_3" d="M12.1929 2.49599C11.5689 1.10399 10.2249 0.23999 8.70487 0.23999C7.18487 0.23999 5.84087 1.10399 5.21687 2.49599C4.59286 3.88799 4.83286 5.45599 5.85686 6.60799L8.49687 9.55199C8.54487 9.61599 8.62487 9.64799 8.70487 9.64799C8.78487 9.64799 8.86487 9.61599 8.91287 9.55199L11.5529 6.60799C12.5769 5.47199 12.8169 3.88799 12.1929 2.49599Z" fill="#FFD66D"/>
|
||||||
|
<path id="Vector_4" d="M8.70338 2.784C7.96738 2.784 7.35938 3.392 7.35938 4.128C7.35938 4.864 7.96738 5.472 8.70338 5.472C9.43938 5.472 10.0474 4.864 10.0474 4.128C10.0474 3.392 9.43938 2.784 8.70338 2.784Z" fill="white"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_219_7540">
|
||||||
|
<rect width="16" height="16" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.1 KiB |
@ -0,0 +1,13 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g id="nianling" clip-path="url(#clip0_219_7516)">
|
||||||
|
<path id="Vector" d="M0.271484 13.6C0.271484 14.1856 1.08568 14.7472 2.53496 15.1613C3.98424 15.5754 5.94989 15.808 7.99948 15.808C10.0491 15.808 12.0147 15.5754 13.464 15.1613C14.9133 14.7472 15.7275 14.1856 15.7275 13.6C15.7275 13.0144 14.9133 12.4528 13.464 12.0387C12.0147 11.6246 10.0491 11.392 7.99948 11.392C5.94989 11.392 3.98424 11.6246 2.53496 12.0387C1.08568 12.4528 0.271484 13.0144 0.271484 13.6Z" fill="#EEF2FF"/>
|
||||||
|
<path id="Vector_2" d="M7.85583 0.191986C7.79183 0.191986 7.72783 0.191986 7.66383 0.207986L7.67983 0.191986H3.42383V4.09599L3.47183 4.06399C3.43983 4.25599 3.42383 4.43199 3.42383 4.63999C3.42383 7.08799 5.40783 9.07199 7.85583 9.07199C10.3038 9.07199 12.2878 7.08799 12.2878 4.63999C12.2878 2.17599 10.3038 0.191986 7.85583 0.191986Z" fill="#FFD66D"/>
|
||||||
|
<path id="Vector_3" d="M8.86314 3.952C8.30314 3.488 7.50314 3.488 6.95914 3.952L1.23114 8.736H1.11914V12.496C1.11914 13.312 1.79114 13.984 2.60714 13.984H13.0871C13.9031 13.984 14.5751 13.312 14.5751 12.496V9.424C14.5751 8.976 14.3831 8.56 14.0471 8.288L8.86314 3.952Z" fill="#4287FF"/>
|
||||||
|
<path id="Vector_4" d="M7.35938 11.456V9.05601C7.35938 8.67201 7.66338 8.36801 8.04738 8.36801C8.43138 8.36801 8.73537 8.67201 8.73537 9.05601V11.44C8.73537 11.824 8.43138 12.128 8.04738 12.128C7.66338 12.128 7.35938 11.824 7.35938 11.456Z" fill="white"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_219_7516">
|
||||||
|
<rect width="16" height="16" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 709 B |
After Width: | Height: | Size: 2.3 MiB |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 905 B |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 8.2 KiB |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 132 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 51 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 36 KiB |
@ -0,0 +1,13 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g id="zhiye" clip-path="url(#clip0_219_7534)">
|
||||||
|
<path id="Vector" d="M1.15234 13.712C1.15234 14.2255 1.86371 14.7179 3.12996 15.081C4.3962 15.444 6.1136 15.648 7.90434 15.648C9.69509 15.648 11.4125 15.444 12.6787 15.081C13.945 14.7179 14.6563 14.2255 14.6563 13.712C14.6563 13.1985 13.945 12.7061 12.6787 12.343C11.4125 11.98 9.69509 11.776 7.90434 11.776C6.1136 11.776 4.3962 11.98 3.12996 12.343C1.86371 12.7061 1.15234 13.1985 1.15234 13.712Z" fill="#EEF2FF"/>
|
||||||
|
<path id="Vector_2" d="M9.9518 4.08H5.5678V1.328H1.4238C0.959797 1.328 0.591797 1.696 0.591797 2.16V9.312C0.591797 11.76 2.5758 13.744 5.0238 13.744H10.7838V4.944C10.7998 4.448 10.4158 4.08 9.9518 4.08Z" fill="#4287FF"/>
|
||||||
|
<path id="Vector_3" d="M15.4728 13.712H10.8008V7.104H14.9928C15.2648 7.104 15.4728 7.328 15.4728 7.584V13.712Z" fill="#FFD66D"/>
|
||||||
|
<path id="Vector_4" d="M7.40789 10.704H5.08789V10.272H5.23189C5.35989 10.272 5.48789 10.24 5.58389 10.16C5.67989 10.08 5.72789 9.96799 5.72789 9.83999V7.71199C5.72789 7.43999 5.58389 7.31199 5.27989 7.31199H5.10389V6.87999C5.55189 6.81599 5.98389 6.63999 6.35189 6.35199H6.79989V9.83999C6.79989 9.96799 6.84789 10.08 6.94389 10.16C7.03989 10.24 7.15189 10.272 7.29589 10.272H7.43989V10.704H7.40789Z" fill="white"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_219_7534">
|
||||||
|
<rect width="16" height="16" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 637 B |
After Width: | Height: | Size: 68 KiB |
After Width: | Height: | Size: 190 KiB |
After Width: | Height: | Size: 100 KiB |
@ -0,0 +1,13 @@
|
|||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g id="hunyin" clip-path="url(#clip0_219_7528)">
|
||||||
|
<path id="Vector" d="M0.847656 13.952C0.847656 14.4824 1.586 14.9911 2.90025 15.3662C4.21451 15.7413 5.99702 15.952 7.85566 15.952C9.71429 15.952 11.4968 15.7413 12.8111 15.3662C14.1253 14.9911 14.8637 14.4824 14.8637 13.952C14.8637 13.4216 14.1253 12.9129 12.8111 12.5378C11.4968 12.1627 9.71429 11.952 7.85566 11.952C5.99702 11.952 4.21451 12.1627 2.90025 12.5378C1.586 12.9129 0.847656 13.4216 0.847656 13.952Z" fill="#EEF2FF"/>
|
||||||
|
<path id="Vector_2" d="M10.0644 14.24H2.46438C2.19238 14.24 1.98438 14.032 1.98438 13.76V1.55199C1.98438 1.27999 2.19238 1.07199 2.46438 1.07199H13.2484C13.5204 1.07199 13.7284 1.27999 13.7284 1.55199V10.576C13.7284 12.592 12.0804 14.24 10.0644 14.24Z" fill="#4287FF"/>
|
||||||
|
<path id="Vector_3" d="M6.28731 7.36001H4.27131C3.95131 7.36001 3.69531 7.10401 3.69531 6.78401C3.69531 6.46401 3.95131 6.20801 4.27131 6.20801H6.27131C6.59131 6.20801 6.84731 6.46401 6.84731 6.78401C6.84731 7.10401 6.59131 7.36001 6.28731 7.36001ZM8.86331 10.224H4.27131C3.95131 10.224 3.69531 9.96801 3.69531 9.64801C3.69531 9.32801 3.95131 9.07201 4.27131 9.07201H8.84731C9.16731 9.07201 9.42331 9.32801 9.42331 9.64801C9.42331 9.96801 9.16731 10.224 8.86331 10.224Z" fill="white"/>
|
||||||
|
<path id="Vector_4" d="M12.5758 4.784L11.0078 3.648L9.42383 4.784V0.496002H12.5758V4.784Z" fill="#FFD66D"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_219_7528">
|
||||||
|
<rect width="16" height="16" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 415 KiB |
After Width: | Height: | Size: 1.5 MiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 1.8 MiB |
After Width: | Height: | Size: 468 KiB |
After Width: | Height: | Size: 446 KiB |
After Width: | Height: | Size: 1.7 MiB |
After Width: | Height: | Size: 259 KiB |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 649 KiB |
After Width: | Height: | Size: 139 KiB |
After Width: | Height: | Size: 792 KiB |
After Width: | Height: | Size: 178 KiB |
After Width: | Height: | Size: 654 KiB |
After Width: | Height: | Size: 139 KiB |
After Width: | Height: | Size: 794 KiB |
After Width: | Height: | Size: 179 KiB |
After Width: | Height: | Size: 32 KiB |