首页静态页面开发
5
jsconfig.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"vueCompilerOptions": {
|
||||
"globalTypesPath": "./vue-global-types.d.ts"
|
||||
}
|
||||
}
|
||||
@ -50,7 +50,7 @@
|
||||
"quickapp" : {},
|
||||
/* 小程序特有相关 */
|
||||
"mp-weixin" : {
|
||||
"appid" : "",
|
||||
"appid" : "wxb723fd3b6f9b1481",
|
||||
"setting" : {
|
||||
"urlCheck" : false
|
||||
},
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
{
|
||||
"path": "pages/index/index",
|
||||
"style": {
|
||||
"navigationBarTitleText": "uni-app"
|
||||
"navigationBarTitleText": "个人中心"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
||||
@ -1,7 +1,14 @@
|
||||
<script setup>
|
||||
import { ref } from 'vue';
|
||||
|
||||
const a = ref("hello world")
|
||||
const list = ref([
|
||||
{ title: "病人管理", img: "/static/patient.png" },
|
||||
{ title: "组员管理", img: "/static/ss.png" },
|
||||
{ title: "病人康复", img: "/static/health_record.png" },
|
||||
{ title: "总健详情", img: "/static/health_assessment.png" },
|
||||
{ title: "档案管理", img: "/static/health_plan_overview.png" },
|
||||
{ title: "数据统计", img: "/static/tongji.png" },
|
||||
])
|
||||
|
||||
function change(){
|
||||
a.value = "lsp"
|
||||
@ -10,10 +17,116 @@ function change(){
|
||||
|
||||
|
||||
<template>
|
||||
{{ a }}
|
||||
<button @click="change">测试</button>
|
||||
<uni-badge text="1"></uni-badge>
|
||||
<uni-badge text="2" type="success" @click="bindClick"></uni-badge>
|
||||
<uni-badge text="3" type="primary" :inverted="true"></uni-badge>
|
||||
<!-- 头部 -->
|
||||
<view class="home">
|
||||
<view class="header shadow">
|
||||
<view class="img">
|
||||
<image src="/static/hospital.png"></image>
|
||||
</view>
|
||||
<view class="info">
|
||||
<view>南方医科大学珠江医院</view>
|
||||
<view>李玉华</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 功能菜单 -->
|
||||
<view class="menu">
|
||||
<view v-for="item in 9" :key="value" class="item shadow">
|
||||
<view>
|
||||
<image :src="list[item - 1]?.img"></image>
|
||||
<view>{{ list[item - 1]?.title }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- 软件使用反馈 -->
|
||||
<button class="feedback_btn">软件使用反馈</button>
|
||||
<!-- 退出登录 -->
|
||||
<button class="logout_btn" type="warn">退出登录</button>
|
||||
</view>
|
||||
|
||||
</template>
|
||||
</template>
|
||||
<style lang="scss" scoped>
|
||||
.home{
|
||||
height: 95vh;
|
||||
padding: 30rpx;
|
||||
background: linear-gradient(180deg, #f8fbff 0%, #f2f7ff 100%);
|
||||
.shadow {
|
||||
box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.04);
|
||||
border: 1rpx solid #e8f2ff;
|
||||
background-color: #fff;
|
||||
border-radius: 12rpx;
|
||||
}
|
||||
.header {
|
||||
display: flex;
|
||||
gap: 25rpx;
|
||||
padding: 30rpx;
|
||||
.img {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 100rpx;
|
||||
height: 100rpx;
|
||||
border-radius: 50%;
|
||||
background: linear-gradient(135deg, #e8f2ff 0%, #f0f8ff 100%);
|
||||
border: 2rpx solid #e1ecf4;
|
||||
|
||||
image {
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
}
|
||||
}
|
||||
.info {
|
||||
:first-child {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #1a365d;
|
||||
margin-bottom: 8rpx;
|
||||
letter-spacing: 0.5rpx;
|
||||
}
|
||||
:last-child {
|
||||
font-size: 26rpx;
|
||||
color: #64748b;
|
||||
}
|
||||
}
|
||||
}
|
||||
.menu {
|
||||
display: flex;
|
||||
gap: 27rpx;
|
||||
flex-wrap: wrap;
|
||||
margin-top: 35rpx;
|
||||
.item {
|
||||
width: 30%;
|
||||
text-align: center;
|
||||
aspect-ratio: 1;
|
||||
transition: all 0.2s ease;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
&:active {
|
||||
transform: translateY(2rpx);
|
||||
box-shadow: 0 1rpx 4rpx rgba(0, 0, 0, 0.06);
|
||||
}
|
||||
image {
|
||||
width: 60rpx;
|
||||
height: 60rpx;
|
||||
}
|
||||
view {
|
||||
font-size: 25rpx;
|
||||
color: #334155;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
.feedback_btn {
|
||||
margin: 35rpx 0;
|
||||
font-size: 30rpx;
|
||||
height: 95rpx;
|
||||
line-height: 95rpx;
|
||||
background-color: #fff;
|
||||
}
|
||||
.logout_btn {
|
||||
font-size: 30rpx;
|
||||
height: 95rpx;
|
||||
line-height: 95rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
BIN
static/blood.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
static/btn-back.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
static/deviceManufacturer.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
0
static/education/README.md
Normal file
BIN
static/education/flgwhzn.jpg
Normal file
|
After Width: | Height: | Size: 101 KiB |
BIN
static/education/fm.jpg
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
static/education/njsdlcbxjxgjc.jpg
Normal file
|
After Width: | Height: | Size: 111 KiB |
BIN
static/education/njsshhlyd.jpg
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
static/education/ysyyzn.jpg
Normal file
|
After Width: | Height: | Size: 100 KiB |
BIN
static/health_assessment.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
static/health_plan_overview.png
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
BIN
static/health_record.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
static/hospital.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
static/id.png
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
static/logo.png
|
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 148 KiB |
BIN
static/msg.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
static/p.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
static/patient.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
static/phone.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
static/ss.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
static/tongji.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
static/xuanjiao.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
131
vue-global-types.d.ts
vendored
Normal file
@ -0,0 +1,131 @@
|
||||
// @ts-nocheck
|
||||
export {};
|
||||
declare global {
|
||||
var __VLS_PROPS_FALLBACK: Record<string, unknown>;
|
||||
|
||||
const __VLS_directiveBindingRestFields: { instance: null, oldValue: null, modifiers: any, dir: any };
|
||||
const __VLS_placeholder: any;
|
||||
const __VLS_intrinsics: import('vue/jsx-runtime').JSX.IntrinsicElements;
|
||||
|
||||
type __VLS_Elements = __VLS_SpreadMerge<SVGElementTagNameMap, HTMLElementTagNameMap>;
|
||||
type __VLS_GlobalComponents = import('vue').GlobalComponents;
|
||||
type __VLS_GlobalDirectives = import('vue').GlobalDirectives;
|
||||
type __VLS_IsAny<T> = 0 extends 1 & T ? true : false;
|
||||
type __VLS_PickNotAny<A, B> = __VLS_IsAny<A> extends true ? B : A;
|
||||
type __VLS_SpreadMerge<A, B> = Omit<A, keyof B> & B;
|
||||
type __VLS_WithComponent<N0 extends string, LocalComponents, Self, N1 extends string, N2 extends string = N1, N3 extends string = N1> =
|
||||
N1 extends keyof LocalComponents ? { [K in N0]: LocalComponents[N1] } :
|
||||
N2 extends keyof LocalComponents ? { [K in N0]: LocalComponents[N2] } :
|
||||
N3 extends keyof LocalComponents ? { [K in N0]: LocalComponents[N3] } :
|
||||
Self extends object ? { [K in N0]: Self } :
|
||||
N1 extends keyof __VLS_GlobalComponents ? { [K in N0]: __VLS_GlobalComponents[N1] } :
|
||||
N2 extends keyof __VLS_GlobalComponents ? { [K in N0]: __VLS_GlobalComponents[N2] } :
|
||||
N3 extends keyof __VLS_GlobalComponents ? { [K in N0]: __VLS_GlobalComponents[N3] } :
|
||||
{};
|
||||
type __VLS_FunctionalComponentCtx<T, K> = __VLS_PickNotAny<'__ctx' extends keyof __VLS_PickNotAny<K, {}>
|
||||
? K extends { __ctx?: infer Ctx } ? NonNullable<Ctx> : never : any
|
||||
, T extends (props: any, ctx: infer Ctx) => any ? Ctx : any
|
||||
>;
|
||||
type __VLS_FunctionalComponentProps<T, K> = '__ctx' extends keyof __VLS_PickNotAny<K, {}>
|
||||
? K extends { __ctx?: { props?: infer P } } ? NonNullable<P> : never
|
||||
: T extends (props: infer P, ...args: any) => any ? P
|
||||
: {};
|
||||
type __VLS_FunctionalComponent<T> = (props: (T extends { $props: infer Props } ? Props : {}) & Record<string, unknown>, ctx?: any) => import('vue/jsx-runtime').JSX.Element & {
|
||||
__ctx?: {
|
||||
attrs?: any;
|
||||
slots?: T extends { $slots: infer Slots } ? Slots : Record<string, any>;
|
||||
emit?: T extends { $emit: infer Emit } ? Emit : {};
|
||||
props?: typeof props;
|
||||
expose?: (exposed: T) => void;
|
||||
};
|
||||
};
|
||||
type __VLS_IsFunction<T, K> = K extends keyof T
|
||||
? __VLS_IsAny<T[K]> extends false
|
||||
? unknown extends T[K]
|
||||
? false
|
||||
: true
|
||||
: false
|
||||
: false;
|
||||
type __VLS_NormalizeComponentEvent<
|
||||
Props,
|
||||
Emits,
|
||||
onEvent extends keyof Props,
|
||||
Event extends keyof Emits,
|
||||
CamelizedEvent extends keyof Emits,
|
||||
> = __VLS_IsFunction<Props, onEvent> extends true
|
||||
? Props
|
||||
: __VLS_IsFunction<Emits, Event> extends true
|
||||
? { [K in onEvent]?: Emits[Event] }
|
||||
: __VLS_IsFunction<Emits, CamelizedEvent> extends true
|
||||
? { [K in onEvent]?: Emits[CamelizedEvent] }
|
||||
: Props;
|
||||
// fix https://github.com/vuejs/language-tools/issues/926
|
||||
type __VLS_UnionToIntersection<U> = (U extends unknown ? (arg: U) => unknown : never) extends ((arg: infer P) => unknown) ? P : never;
|
||||
type __VLS_OverloadUnionInner<T, U = unknown> = U & T extends (...args: infer A) => infer R
|
||||
? U extends T
|
||||
? never
|
||||
: __VLS_OverloadUnionInner<T, Pick<T, keyof T> & U & ((...args: A) => R)> | ((...args: A) => R)
|
||||
: never;
|
||||
type __VLS_OverloadUnion<T> = Exclude<
|
||||
__VLS_OverloadUnionInner<(() => never) & T>,
|
||||
T extends () => never ? never : () => never
|
||||
>;
|
||||
type __VLS_ConstructorOverloads<T> = __VLS_OverloadUnion<T> extends infer F
|
||||
? F extends (event: infer E, ...args: infer A) => any
|
||||
? { [K in E & string]: (...args: A) => void; }
|
||||
: never
|
||||
: never;
|
||||
type __VLS_NormalizeEmits<T> = __VLS_PrettifyGlobal<
|
||||
__VLS_UnionToIntersection<
|
||||
__VLS_ConstructorOverloads<T> & {
|
||||
[K in keyof T]: T[K] extends any[] ? { (...args: T[K]): void } : never
|
||||
}
|
||||
>
|
||||
>;
|
||||
type __VLS_EmitsToProps<T> = __VLS_PrettifyGlobal<{
|
||||
[K in string & keyof T as `on${Capitalize<K>}`]?:
|
||||
(...args: T[K] extends (...args: infer P) => any ? P : T[K] extends null ? any[] : never) => any;
|
||||
}>;
|
||||
type __VLS_ResolveEmits<
|
||||
Comp,
|
||||
Emits,
|
||||
TypeEmits = Comp extends { __typeEmits?: infer T } ? unknown extends T ? {} : import('vue').ShortEmitsToObject<T> : {},
|
||||
NormalizedEmits = __VLS_NormalizeEmits<Emits> extends infer E ? string extends keyof E ? {} : E : never,
|
||||
> = __VLS_SpreadMerge<NormalizedEmits, TypeEmits>;
|
||||
type __VLS_ResolveDirectives<T> = {
|
||||
[K in keyof T & string as `v${Capitalize<K>}`]: T[K];
|
||||
};
|
||||
type __VLS_PrettifyGlobal<T> = (T extends any ? { [K in keyof T]: T[K]; } : { [K in keyof T as K]: T[K]; }) & {};
|
||||
type __VLS_UseTemplateRef<T> = Readonly<import('vue').ShallowRef<T | null>>;
|
||||
type __VLS_ProxyRefs<T> = import('vue').ShallowUnwrapRef<T>;
|
||||
|
||||
function __VLS_getVForSourceType<T extends number | string | any[] | Iterable<any>>(source: T): [
|
||||
item: T extends number ? number
|
||||
: T extends string ? string
|
||||
: T extends any[] ? T[number]
|
||||
: T extends Iterable<infer T1> ? T1
|
||||
: any,
|
||||
index: number,
|
||||
][];
|
||||
function __VLS_getVForSourceType<T>(source: T): [
|
||||
item: T[keyof T],
|
||||
key: keyof T,
|
||||
index: number,
|
||||
][];
|
||||
function __VLS_getSlotParameters<S, D extends S>(slot: S, decl?: D):
|
||||
D extends (...args: infer P) => any ? P : any[];
|
||||
function __VLS_asFunctionalDirective<T>(dir: T): T extends import('vue').ObjectDirective
|
||||
? NonNullable<T['created' | 'beforeMount' | 'mounted' | 'beforeUpdate' | 'updated' | 'beforeUnmount' | 'unmounted']>
|
||||
: T extends (...args: any) => any
|
||||
? T
|
||||
: (arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown) => void;
|
||||
function __VLS_asFunctionalComponent<T, K = T extends new (...args: any) => any ? InstanceType<T> : unknown>(t: T, instance?: K):
|
||||
T extends new (...args: any) => any ? __VLS_FunctionalComponent<K>
|
||||
: T extends () => any ? (props: {}, ctx?: any) => ReturnType<T>
|
||||
: T extends (...args: any) => any ? T
|
||||
: __VLS_FunctionalComponent<{}>;
|
||||
function __VLS_functionalComponentArgsRest<T extends (...args: any) => any>(t: T): 2 extends Parameters<T>['length'] ? [any] : [];
|
||||
function __VLS_asFunctionalElement<T>(tag: T, endTag?: T): (attrs: T & Record<string, unknown>) => void;
|
||||
function __VLS_asFunctionalSlot<S>(slot: S): S extends () => infer R ? (props: {}) => R : NonNullable<S>;
|
||||
function __VLS_tryAsConstant<const T>(t: T): T;
|
||||
}
|
||||