Merge branch 'main' of ssh://git.jizhiweb.cn:2222/clinic-v2/web

This commit is contained in:
LiJianZhao 2025-05-15 11:29:34 +08:00
commit 5ccb88f4fc
16 changed files with 276 additions and 213 deletions

View File

@ -3,6 +3,7 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<link rel="icon" href="/favicon.ico"> <link rel="icon" href="/favicon.ico">
<link rel="stylesheet" href="@/assets/iconfont/iconfont.css">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>药慧精灵智慧诊所</title> <title>药慧精灵智慧诊所</title>
</head> </head>

View File

@ -0,0 +1,22 @@
@font-face {
font-family: "iconfont"; /* Project id 4921806 */
src: url('iconfont.woff?t=1747274949107') format('woff'),
url('iconfont.ttf?t=1747274949107') format('truetype');
}
.iconfont {
font-family: "iconfont", serif !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-RectangleCopy:before {
content: "\e6a2";
}
.icon-RectangleCopy1:before {
content: "\e6a4";
}

Binary file not shown.

Binary file not shown.

View File

@ -17,7 +17,7 @@ $border-color-lighter: #EBEEF5;
$border-color-extra-light: #F2F6FC; $border-color-extra-light: #F2F6FC;
// 背景颜色 // 背景颜色
$background-color-base: #eee; $background-color-base: #F1F5FB;
$background-color-main: #4D6DE4; $background-color-main: #4D6DE4;
// 边框圆角 // 边框圆角

View File

@ -35,7 +35,7 @@ html {
} }
body { body {
background-color: #EEEEEEFF; background-color: base.$background-color-base;
} }
.center-wrapper { .center-wrapper {
@ -96,8 +96,8 @@ body {
padding: 0 !important; padding: 0 !important;
//border: 1px solid #4D6DE4 !important; //border: 1px solid #4D6DE4 !important;
} }
$btn-color: #4d99e4; $btn-color: #4D6DE4;
$lighter-color: #6eaeed; $lighter-color: #7c91e3;
.default-btn{ .default-btn{
cursor: pointer; cursor: pointer;
width: 120px; width: 120px;
@ -106,7 +106,7 @@ $lighter-color: #6eaeed;
background: $btn-color; background: $btn-color;
border-radius: 6px; border-radius: 6px;
color: #FFF; color: #FFF;
font-size: 15px; font-size: 16px;
text-align: center; text-align: center;
&:hover{ &:hover{
background: $lighter-color; background: $lighter-color;

View File

@ -3,6 +3,7 @@ import './assets/scss/main.scss'
import {createApp} from 'vue' import {createApp} from 'vue'
import ElementPlus from 'element-plus' import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css' import 'element-plus/dist/index.css'
import '../src/assets/iconfont/iconfont.css'
import {createPinia} from 'pinia' import {createPinia} from 'pinia'
import App from './App.vue' import App from './App.vue'

View File

@ -1,7 +1,8 @@
<template> <template>
<div class="layout-container"> <div class="layout-container">
<Header class="header"/> <Header class="header"/>
<header> <div class="body">
<header style="height: 50px">
<div class="center-wrapper"> <div class="center-wrapper">
<div class="childMenu"> <div class="childMenu">
<router-link :to="item.path" class="child-item" v-for="(item,index) in childMenuList" :key="index"> <router-link :to="item.path" class="child-item" v-for="(item,index) in childMenuList" :key="index">
@ -10,47 +11,73 @@
</div> </div>
</div> </div>
</header> </header>
<div class="space"></div> <main class="layout-main" style="margin-top: 24px">
<main class="layout-main">
<router-view/> <router-view/>
</main> </main>
<div class="space"></div> </div>
<Footer class="footer"/> <Footer class="footer"/>
</div> </div>
</template> </template>
<style scoped lang="scss"> <style scoped lang="scss">
.body{
height: 100%;
padding: 24px;
display: flex;
flex-direction: column;
}
.childMenu { .childMenu {
width: 100%; width: 100%;
height: 60px; height: 50px;
background: #fff; background: #fff;
display: flex; display: flex;
align-items: center; align-items: center;
border-radius: 8px;
.child-item { .child-item {
width: 136px;
display: inline-block; display: inline-block;
color: #151515; color: #151515;
outline: none; outline: none;
text-decoration: none; text-decoration: none;
font-size: 18px; font-size: 18px;
margin-left: 10px; height: 50px;
margin-right: 10px;
height: 35px;
position: relative; position: relative;
line-height: 50px;
text-align: center;
&::before{
content: '';
position: absolute;
right: 0;
top:50%;
display: block;
width: 2px;
height: 16px;
background: #D8D8D8;
border-radius: 1px;
transform: translate(0 ,-50%);
}
&:last-child::before{
display: none;
}
} }
.router-link-active:after { .router-link-active:after {
content: ''; content: '';
display: block; display: block;
width: 100%; width: 80px;
height: 2px; height: 4px;
background-color: #151515; // 线 background-color: #4D6DE4; // 线
position: absolute; position: absolute;
bottom: -5px; // 线 bottom: 0; // 线
left: 0; left: 50%;
transform: translateX(-50%);
border-radius: 2px;
} }
} }
a.router-link-active.router-link-exact-active.child-item{
color: #4D6DE4;
}
</style> </style>

View File

@ -1,7 +1,8 @@
<template> <template>
<div class="layout-container"> <div class="layout-container">
<Header class="header"/> <Header class="header"/>
<header> <div class="body">
<header style="height: 50px">
<div class="center-wrapper"> <div class="center-wrapper">
<div class="childMenu"> <div class="childMenu">
<router-link :to="item.path" class="child-item" v-for="(item,index) in childMenuList" :key="index"> <router-link :to="item.path" class="child-item" v-for="(item,index) in childMenuList" :key="index">
@ -10,47 +11,74 @@
</div> </div>
</div> </div>
</header> </header>
<div class="space"></div> <main class="layout-main" style="margin-top: 24px">
<main class="layout-main">
<router-view/> <router-view/>
</main> </main>
<div class="space"></div> </div>
<Footer class="footer"/> <Footer class="footer"/>
</div> </div>
</template> </template>
<style scoped lang="scss"> <style scoped lang="scss">
.body{
height: 100%;
padding: 24px;
display: flex;
flex-direction: column;
}
.childMenu { .childMenu {
height: 60px; width: 100%;
height: 50px;
background: #fff; background: #fff;
display: flex; display: flex;
align-items: center; align-items: center;
border-radius: 8px;
.child-item { .child-item {
width: 136px;
display: inline-block; display: inline-block;
color: #151515; color: #151515;
outline: none; outline: none;
text-decoration: none; text-decoration: none;
font-size: 18px; font-size: 18px;
margin-left: 10px; height: 50px;
margin-right: 10px;
height: 35px;
position: relative; position: relative;
line-height: 50px;
text-align: center;
&::before{
content: '';
position: absolute;
right: 0;
top:50%;
display: block;
width: 2px;
height: 16px;
background: #D8D8D8;
border-radius: 1px;
transform: translate(0 ,-50%);
}
&:last-child::before{
display: none;
}
} }
.router-link-active:after { .router-link-active:after {
content: ''; content: '';
display: block; display: block;
width: 100%; width: 80px;
height: 2px; height: 4px;
background-color: #151515; // 线 background-color: #4D6DE4; // 线
position: absolute; position: absolute;
bottom: -5px; // 线 bottom: 0; // 线
left: 0; left: 50%;
transform: translateX(-50%);
border-radius: 2px;
} }
} }
a.router-link-active.router-link-exact-active.child-item{
color: #4D6DE4;
}
</style> </style>

View File

@ -17,16 +17,12 @@
</el-form> </el-form>
</div> </div>
<div class="right"> <div class="right">
<div class="btn" @click="resetSearch"> <div class="default-btn" @click="resetSearch">
<el-icon style="margin-right: 10px"> <span class="iconfont icon-RectangleCopy1"></span>
<Refresh/>
</el-icon>
重置 重置
</div> </div>
<div class="btn" @click="getList"> <div class="default-btn" @click="getList" style="margin-left: 24px">
<el-icon style="margin-right: 10px"> <span class="iconfont icon-RectangleCopy"></span>
<Search/>
</el-icon>
搜索 搜索
</div> </div>
</div> </div>
@ -36,7 +32,7 @@
</div> </div>
</div> </div>
<div class="content"> <div class="content">
<el-table :data="dataList" style="width: 100%" @row-click="rowClick"> <el-table :data="dataList" style="width: 100%;height: 100%" @row-click="rowClick">
<el-table-column prop="useCode" label="单号" width="180"></el-table-column> <el-table-column prop="useCode" label="单号" width="180"></el-table-column>
<el-table-column prop="status" label="状态" width="180"></el-table-column> <el-table-column prop="status" label="状态" width="180"></el-table-column>
<el-table-column prop="useUserId" label="领用人" width="180"></el-table-column> <el-table-column prop="useUserId" label="领用人" width="180"></el-table-column>

View File

@ -17,16 +17,12 @@
</el-form> </el-form>
</div> </div>
<div class="right"> <div class="right">
<div class="btn" @click="resetSearch"> <div class="default-btn" @click="resetSearch">
<el-icon style="margin-right: 10px"> <span class="iconfont icon-RectangleCopy1"></span>
<Refresh/>
</el-icon>
重置 重置
</div> </div>
<div class="btn" @click="getCheck"> <div class="default-btn" @click="getCheck" style="margin-left: 24px">
<el-icon style="margin-right: 10px"> <span class="iconfont icon-RectangleCopy"></span>
<Search/>
</el-icon>
搜索 搜索
</div> </div>
</div> </div>
@ -37,7 +33,7 @@
</div> </div>
<div class="content_list"> <div class="content_list">
<el-scrollbar> <el-scrollbar>
<el-table :data="tableData" @cell-click="editCheck"> <el-table :data="tableData" @cell-click="editCheck" style="height: 100%">
<el-table-column label="订单号" prop="code" width="250"> <el-table-column label="订单号" prop="code" width="250">
</el-table-column> </el-table-column>
<el-table-column label="状态" prop="state" width="250"></el-table-column> <el-table-column label="状态" prop="state" width="250"></el-table-column>

View File

@ -65,16 +65,12 @@
<el-checkbox v-model="inventoryNumber" label="不看0库存" size="large" @change="searchGoods"/> <el-checkbox v-model="inventoryNumber" label="不看0库存" size="large" @change="searchGoods"/>
<el-checkbox v-model="status" label="不看已停用" size="large" @change="searchGoods"/> <el-checkbox v-model="status" label="不看已停用" size="large" @change="searchGoods"/>
</div> </div>
<div class="btn" @click="resetSearch"> <div class="default-btn" @click="resetSearch">
<el-icon style="margin-right: 10px"> <span class="iconfont icon-RectangleCopy1"></span>
<Refresh/>
</el-icon>
重置 重置
</div> </div>
<div class="btn" @click="searchGoods"> <div class="default-btn" @click="searchGoods" style="margin-left: 24px">
<el-icon style="margin-right: 10px"> <span class="iconfont icon-RectangleCopy"></span>
<Search/>
</el-icon>
搜索 搜索
</div> </div>
</div> </div>

View File

@ -66,16 +66,12 @@
</el-form> </el-form>
</div> </div>
<div class="right"> <div class="right">
<div class="btn" @click="resetSearch"> <div class="default-btn" @click="resetSearch">
<el-icon style="margin-right: 10px"> <span class="iconfont icon-RectangleCopy1"></span>
<Refresh/>
</el-icon>
重置 重置
</div> </div>
<div class="btn" @click="init"> <div class="default-btn" @click="init" style="margin-left: 24px">
<el-icon style="margin-right: 10px"> <span class="iconfont icon-RectangleCopy"></span>
<Search/>
</el-icon>
搜索 搜索
</div> </div>
</div> </div>
@ -86,7 +82,7 @@
</div> </div>
<div class="content_list"> <div class="content_list">
<el-scrollbar> <el-scrollbar>
<el-table :data="tableData" style="width: 100%" @row-click="open_edit" <el-table :data="tableData" style="width: 100%;height: 100%" @row-click="open_edit"
:header-cell-style="{ backgroundColor: '#F1F5FB' }"> :header-cell-style="{ backgroundColor: '#F1F5FB' }">
<el-table-column fixed label="采购单号" show-overflow-tooltip> <el-table-column fixed label="采购单号" show-overflow-tooltip>
<template #default="scope"> <template #default="scope">

View File

@ -13,16 +13,12 @@
</el-form> </el-form>
</div> </div>
<div class="right"> <div class="right">
<div class="btn" @click="resetSearch"> <div class="default-btn" @click="resetSearch">
<el-icon style="margin-right: 10px"> <span class="iconfont icon-RectangleCopy1"></span>
<Refresh/>
</el-icon>
重置 重置
</div> </div>
<div class="btn" @click="getSupplier"> <div class="default-btn" @click="getSupplier" style="margin-left: 24px">
<el-icon style="margin-right: 10px"> <span class="iconfont icon-RectangleCopy"></span>
<Search/>
</el-icon>
搜索 搜索
</div> </div>
</div> </div>

View File

@ -73,11 +73,16 @@
formatListTime(listItem.lastVisitTime) || "-" formatListTime(listItem.lastVisitTime) || "-"
}} }}
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="证件类型">{{certTypeList.find((item:any)=>item.id==listItem.certType)?.name}}</el-descriptions-item>> <el-descriptions-item label="证件类型">
{{ certTypeList.find((item: any) => item.id == listItem.certType)?.name }}
</el-descriptions-item>
>
<el-descriptions-item label="证件号码">{{ listItem.certNo || "-" }}</el-descriptions-item> <el-descriptions-item label="证件号码">{{ listItem.certNo || "-" }}</el-descriptions-item>
<el-descriptions-item label="积分"><span>{{ listItem.integralBalance }}</span> <el-descriptions-item label="积分"><span>{{ listItem.integralBalance }}</span>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="地址">{{ areaName}}{{areaName?'/'+listItem.address : listItem.address || "-" }}</el-descriptions-item> <el-descriptions-item label="地址">
{{ areaName }}{{ areaName ? '/' + listItem.address : listItem.address || "-" }}
</el-descriptions-item>
<el-descriptions-item label="既往史">{{ listItem.beforeMedicalHistory || "-" }}</el-descriptions-item> <el-descriptions-item label="既往史">{{ listItem.beforeMedicalHistory || "-" }}</el-descriptions-item>
<el-descriptions-item label="过敏史">{{ listItem.allergyHistory || "-" }}</el-descriptions-item> <el-descriptions-item label="过敏史">{{ listItem.allergyHistory || "-" }}</el-descriptions-item>
<el-descriptions-item label="备注">{{ listItem.remark || "-" }}</el-descriptions-item> <el-descriptions-item label="备注">{{ listItem.remark || "-" }}</el-descriptions-item>
@ -86,10 +91,12 @@
</div> </div>
</div> </div>
</Panel> </Panel>
<Panel title="消费记录" class="right-list"> <div class="right-list">
<div class="list-content"> <Panel title="消费记录">
<div class="panel-content" style="display: flex;flex-direction: column;height: 100%;padding: 0 24px;">
<div class="list"> <div class="list">
<el-table :data="tableData" :header-cell-style="{ backgroundColor: '#F1F5FB' }" style="width: 100%" <el-table :data="tableData" :header-cell-style="{ backgroundColor: '#F1F5FB' }"
style="width: 100%;height: 100%"
@cell-click="openDetail"> @cell-click="openDetail">
<el-table-column label="单号" prop="code" show-overflow-tooltip> <el-table-column label="单号" prop="code" show-overflow-tooltip>
</el-table-column> </el-table-column>
@ -142,6 +149,7 @@
</Panel> </Panel>
</div> </div>
</div> </div>
</div>
<VipEdit ref="refEdit" @close="init"></VipEdit> <VipEdit ref="refEdit" @close="init"></VipEdit>
<VipLevelEdit ref="levelEditRef" @close="init"></VipLevelEdit> <VipLevelEdit ref="levelEditRef" @close="init"></VipLevelEdit>
<Mask :width="600" :height="400" :is-show="isGrant" @close="isGrant=false" :title="'发放积分'"> <Mask :width="600" :height="400" :is-show="isGrant" @close="isGrant=false" :title="'发放积分'">
@ -596,34 +604,19 @@ const certTypeList=ref<any>(Object.entries(psnCertTypes).map(([id,name])=>({id,n
display: flex; display: flex;
flex-direction: column; flex-direction: column;
min-height: 0; min-height: 0;
.list-content {
display: flex;
flex-direction: column;
padding: 0 24px;
height: 100%;
.list { .list {
flex: 1; flex: 1;
display: flex; min-height: 0;
flex-direction: column;
} }
.bottom { .bottom {
width: 100%; width: 100%;
height: 60px; height: 60px;
background-color: #FFF; background-color: #FFF;
box-sizing: border-box; box-sizing: border-box;
padding: 10px; padding: 10px;
position: relative;
border-top: 1px solid #EEE; border-top: 1px solid #EEE;
display: flex;
.page_btn_list { justify-content: flex-end;
position: absolute;
left: 0;
top: 10px;
}
}
} }
} }
} }

View File

@ -13,12 +13,17 @@
</div> </div>
<div class="tip"> <div class="tip">
<div class="search_input"> <div class="search_input">
<el-input v-model="search_keyword" placeholder="名称/编号" :suffix-icon="Search" size="large" clearable @change="change_search"/> <el-input v-model="search_keyword" placeholder="名称/编号" :suffix-icon="Search" size="large" clearable
@change="change_search"/>
</div> </div>
<div class="search_btn"><div class="default-btn" @click="change_search">搜索</div></div> <div class="search_btn">
<div class="default-btn" @click="change_search">
<span class="iconfont icon-RectangleCopy"></span>
搜索
</div>
</div>
<div class="middel"> <div class="middel">
</div> </div>
<div class="op_btn"> <div class="op_btn">
<el-dropdown placement="bottom"> <el-dropdown placement="bottom">
@ -77,6 +82,7 @@ import {ElNotification, type TabsPaneContext} from 'element-plus'
import {post} from '@/utils/request.ts' import {post} from '@/utils/request.ts'
import {Search} from '@element-plus/icons-vue' import {Search} from '@element-plus/icons-vue'
import Mask from "@/components/common/Mask.vue"; import Mask from "@/components/common/Mask.vue";
let isUpdate1312 = ref(false) let isUpdate1312 = ref(false)
let isUpdate1318 = ref(false) let isUpdate1318 = ref(false)
let isUpdate1319 = ref(false) let isUpdate1319 = ref(false)
@ -253,6 +259,7 @@ let download = (ver: any, type: any) => {
height: 100%; height: 100%;
padding: 20px; padding: 20px;
} }
.container-wrapper { .container-wrapper {
box-sizing: border-box; box-sizing: border-box;
padding: 20px; padding: 20px;
@ -273,17 +280,21 @@ let download = (ver: any, type: any) => {
.tip { .tip {
display: flex; display: flex;
.search_input { .search_input {
flex: 1; flex: 1;
} }
.search_btn { .search_btn {
width: 140px; width: 140px;
padding-left: 10px; padding-left: 10px;
padding-right: 10px; padding-right: 10px;
} }
.middel { .middel {
width: 200px; width: 200px;
} }
.op_btn { .op_btn {
width: 120px; width: 120px;
} }