Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
6fba365b12
|
|
@ -43,7 +43,7 @@ body {
|
|||
|
||||
.container-wrapper {
|
||||
height: 100%;
|
||||
//background-color: base.$background-color-panel;
|
||||
background-color: #fff;
|
||||
@include base.center-wrapper;
|
||||
//@include base.padding;
|
||||
@include base.border-radius;
|
||||
|
|
|
|||
|
|
@ -11,8 +11,11 @@
|
|||
<router-link to="/social" class="menu-item" active-class="active active7">医保</router-link>
|
||||
<router-link to="/statistics" class="menu-item" active-class="active active8">统计</router-link>
|
||||
<router-link to="/settings" class="menu-item" active-class="active active9">设置</router-link>
|
||||
<el-button style="float: right;color: #fff" @click="logout" type="text">退出登录</el-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</header>
|
||||
</template>
|
||||
|
||||
|
|
@ -142,4 +145,15 @@ header {
|
|||
}
|
||||
</style>
|
||||
<script setup lang="ts">
|
||||
import { useRouter } from 'vue-router'
|
||||
import { ElMessage } from 'element-plus'
|
||||
let logout = function () {
|
||||
localStorage.removeItem('token')
|
||||
useRouter().push("/manager/login")
|
||||
ElMessage({
|
||||
message: "退出成功,即将为您跳转到登陆页面",
|
||||
type: 'success',
|
||||
duration: 1000,
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
<template>
|
||||
<CloseBtn @click="exit"></CloseBtn>
|
||||
<el-descriptions title="新增领用" border label-width="100">
|
||||
<el-descriptions-item label="领用人" width="200">
|
||||
<el-input v-model="formData.name" disabled></el-input>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
<template>
|
||||
<CloseBtn @click="exit"></CloseBtn>
|
||||
<el-descriptions title="详情领用" border label-width="100">
|
||||
<el-descriptions-item label="领用人" width="200">
|
||||
<el-input v-model="formData.name" disabled></el-input>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,4 @@
|
|||
<template>
|
||||
|
||||
<CloseBtn @click="exit"></CloseBtn>
|
||||
<div class="edit-panel" v-loading="isLoading" element-loading-text="正在保存......">
|
||||
|
||||
<div class="top">
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
<template>
|
||||
<CloseBtn @click="exit"></CloseBtn>
|
||||
<div class="edit-panel" v-loading="isLoading" element-loading-text="正在保存......">
|
||||
<div class="top">
|
||||
<el-descriptions title="采购订单" border>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,5 @@
|
|||
<template>
|
||||
<CloseBtn @click="close"></CloseBtn>
|
||||
<el-descriptions
|
||||
title="新增供货商"
|
||||
direction="vertical"
|
||||
:column="1"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,89 @@
|
|||
<template>
|
||||
<div class="auth">
|
||||
<el-form ref="ruleFormRef" model="ciphertext" label-width="auto"
|
||||
class="demo-ruleForm" status-icon>
|
||||
<el-input
|
||||
v-model="ciphertext"
|
||||
maxlength="400"
|
||||
placeholder="Please input"
|
||||
show-word-limit
|
||||
:autosize="{ minRows: 8, maxRows: 20 }"
|
||||
type="textarea"
|
||||
@input="parsing"
|
||||
/>
|
||||
<div class="btn">
|
||||
<el-button type="primary" @click="save">保存</el-button>
|
||||
</div>
|
||||
</el-form>
|
||||
<el-descriptions title="解析后的数据" size="small" :column="2" border v-if="flag">
|
||||
<el-descriptions-item
|
||||
align="center"
|
||||
label="定点机构编码"
|
||||
:span="2"
|
||||
>
|
||||
{{ decryptedText.fixmedinsCode }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item
|
||||
align="center"
|
||||
label="证书创建时间"
|
||||
>
|
||||
{{ decryptedText.createDate }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item
|
||||
align="center"
|
||||
label="证书过期时间"
|
||||
>
|
||||
{{ decryptedText.expiryDate }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {post} from "@/utils/request.ts";
|
||||
import {onMounted, onUnmounted, ref} from "vue";
|
||||
import {ElMessage} from "element-plus";
|
||||
|
||||
const decryptedText = ref<any>({})
|
||||
const ciphertext = ref<string>('')
|
||||
const flag = ref<any>(false)
|
||||
|
||||
const parsing = () => {
|
||||
if (ciphertext.value) {
|
||||
post("common/config/parsing", {ciphertext: ciphertext.value}).then((res: any) => {
|
||||
decryptedText.value = res;
|
||||
flag.value = true;
|
||||
})
|
||||
} else {
|
||||
flag.value = false;
|
||||
}
|
||||
}
|
||||
const save = () => {
|
||||
if (ciphertext.value) {
|
||||
post("common/config/setcert", {encryptedText: ciphertext.value}).then((res: any) => {
|
||||
ElMessage.success("保存成功")
|
||||
})
|
||||
}
|
||||
}
|
||||
const get = () => {
|
||||
|
||||
}
|
||||
onMounted(async () => {
|
||||
post("common/config/get", {key: 'common_cert'}).then((res: any) => {
|
||||
ciphertext.value = res.val;
|
||||
parsing()
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.auth {
|
||||
margin: 0 auto;
|
||||
|
||||
.btn {
|
||||
margin: 24px 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -17,37 +17,37 @@
|
|||
:column="1"
|
||||
border
|
||||
>
|
||||
<el-descriptions-item label="主诉">
|
||||
<el-descriptions-item :width="140" label="主诉">
|
||||
<div>{{ formDate.mainAppeal}}</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="诊断">
|
||||
<el-descriptions-item :width="140" label="诊断">
|
||||
<div>{{ formDate.diagnosisSummary}}</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="现病史">
|
||||
<el-descriptions-item :width="140" label="现病史">
|
||||
<div>{{ formDate.nowMedicalHistory}}</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="既往史">
|
||||
<el-descriptions-item :width="140" label="既往史">
|
||||
<div>{{ formDate.beforeMedicalHistory}}</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="过敏史">
|
||||
<el-descriptions-item :width="140" label="过敏史">
|
||||
<div>{{ formDate.allergyHistory}}</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="体格检查">
|
||||
<el-descriptions-item :width="140" label="体格检查">
|
||||
<div>{{ formDate.exam}}</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="望闻问切" v-if="modelType==1">
|
||||
<el-descriptions-item :width="140" label="望闻问切" v-if="modelType==1">
|
||||
<div>{{ formDate.chinaAdjunctCheck}}</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="法制" v-if="modelType==1">
|
||||
<el-descriptions-item :width="140" label="法制" v-if="modelType==1">
|
||||
<div>{{ formDate.chinaDeal}}</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="口腔检查" v-if="modelType==2">
|
||||
<el-descriptions-item :width="140" label="口腔检查" v-if="modelType==2">
|
||||
<div>{{ formDate.mouthCheck}}</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="辅助检查" v-if="modelType==2 || modelType ==0">
|
||||
<el-descriptions-item :width="140" label="辅助检查" v-if="modelType==2 || modelType ==0">
|
||||
<div>{{ formDate.adjunctCheck}}</div>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="处置" v-if="modelType==0 || modelType ==2">
|
||||
<el-descriptions-item :width="140" label="处置" v-if="modelType==0 || modelType ==2">
|
||||
<div>{{ formDate.deal}}</div>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
import Panel from '../common/Panel.vue';
|
||||
import {defineEmits, defineModel,defineProps} from 'vue'
|
||||
const {status}=defineProps(['status'])
|
||||
const emit = defineEmits(['save','deleteItem']);
|
||||
const emit = defineEmits(['save','deleteItem','edit']);
|
||||
const save = () => {
|
||||
emit('save');
|
||||
};
|
||||
|
|
@ -10,7 +10,9 @@ const deleteItem = () => {
|
|||
emit('deleteItem');
|
||||
};
|
||||
const totalAmount = defineModel<any>()
|
||||
|
||||
const editItem= () => {
|
||||
emit('edit');
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
@ -20,7 +22,7 @@ const totalAmount = defineModel<any>()
|
|||
<div class="btn-group">
|
||||
<el-button v-if="status == 2" @click="deleteItem">取消接诊</el-button>
|
||||
<el-button v-if="status == 2" type="primary" @click="save">完成接诊</el-button>
|
||||
<el-button v-if="status == 3" type="primary">修改</el-button>
|
||||
<el-button v-if="status == 3" type="primary" @click="editItem">修改</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</Panel>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div>
|
||||
<div class="header" style="width: 100%;display: flex;justify-content: center">
|
||||
<div class="header" style="width: 100%;display: flex;justify-content: center;margin-bottom: 10px">
|
||||
<el-button type="primary" style="margin-top:10px" round class="btn" @click="openCreateSearch"
|
||||
plain>
|
||||
一键建档
|
||||
|
|
@ -8,7 +8,6 @@
|
|||
</div>
|
||||
<el-form :model="form" label-width="auto">
|
||||
<el-descriptions
|
||||
:title="props.id?'编辑' : '新增'"
|
||||
:column="3"
|
||||
direction="vertical"
|
||||
border
|
||||
|
|
|
|||
|
|
@ -1,30 +1,59 @@
|
|||
<template>
|
||||
<el-form :model="form" label-width="auto">
|
||||
<el-form :model="userInfo" label-width="auto" :rules="rules" ref="ruleFormRef">
|
||||
<el-descriptions
|
||||
:title="props.id?'编辑' : '新增'"
|
||||
title="基本信息"
|
||||
:column="3"
|
||||
direction="vertical"
|
||||
border
|
||||
>
|
||||
<el-descriptions-item label="账号">
|
||||
<el-form-item prop="username">
|
||||
<el-input v-model="userInfo.username"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="密码">
|
||||
<el-form-item prop="password">
|
||||
<el-input v-model="userInfo.password" show-password/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="用户名">
|
||||
<el-form-item>
|
||||
<el-input v-model="userInfo.name"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-form>
|
||||
<el-form :model="memberInfo" label-width="auto">
|
||||
<el-descriptions
|
||||
title="扩展信息"
|
||||
:column="3"
|
||||
direction="vertical"
|
||||
border
|
||||
>
|
||||
<el-descriptions-item label="姓名">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.name"/>
|
||||
<el-input v-model="memberInfo.name"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.gender"/>
|
||||
<el-input v-model="memberInfo.gender"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="年龄">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.age"/>
|
||||
<el-input v-model="memberInfo.age"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="手机号">
|
||||
<el-form-item>
|
||||
<el-input v-model="memberInfo.tel"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="角色">
|
||||
<el-form-item>
|
||||
<el-select
|
||||
v-model="form.role"
|
||||
v-model="memberInfo.role"
|
||||
placeholder="选择角色"
|
||||
size="large"
|
||||
>
|
||||
|
|
@ -39,18 +68,13 @@
|
|||
</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.idCardNumber"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="手机号">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.tel"/>
|
||||
<el-input v-model="memberInfo.idCardNumber"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="科室">
|
||||
<el-form-item>
|
||||
<el-select
|
||||
v-model="form.sectionId"
|
||||
v-model="memberInfo.sectionId"
|
||||
placeholder="选择科室"
|
||||
>
|
||||
<el-option
|
||||
|
|
@ -64,17 +88,17 @@
|
|||
</el-descriptions-item>
|
||||
<el-descriptions-item label="医保人员代码">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.socialMemberCode"/>
|
||||
<el-input v-model="memberInfo.socialMemberCode"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="备注">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.memo"/>
|
||||
<el-input v-model="memberInfo.memo"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="电子签名">
|
||||
<el-form-item>
|
||||
<UpLoad v-model="uploadURL" ref="uploadRef" @uploadSuccess="(url)=>{form.electronicSignature=url}"></UpLoad>
|
||||
<UpLoad v-model="uploadURL" ref="uploadRef" @uploadSuccess="(url)=>{memberInfo.electronicSignature=url}"></UpLoad>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
|
|
@ -133,7 +157,7 @@ const roleList = [
|
|||
label: '其他',
|
||||
},
|
||||
]
|
||||
const form = ref<any>({
|
||||
const memberInfo = ref<any>({
|
||||
name: "", // 姓名
|
||||
gender: "", // 性别
|
||||
age: "", // 年龄
|
||||
|
|
@ -144,25 +168,49 @@ const form = ref<any>({
|
|||
sectionId: "", // 科室id
|
||||
electronicSignature: "", // 电子签名
|
||||
memo: '',// 备注
|
||||
password: "",
|
||||
})
|
||||
const userInfo= ref<any>({
|
||||
username: "", // 账号
|
||||
name: "",
|
||||
password: "",
|
||||
})
|
||||
const rules= {
|
||||
username: [
|
||||
{required: true, message: '请输入账号', trigger: 'blur'},
|
||||
],
|
||||
password: [
|
||||
{required: true, message: '请输入密码', trigger: 'blur'},
|
||||
],
|
||||
}
|
||||
const emit = defineEmits(['onSubmit'])
|
||||
const onSubmit = () => {
|
||||
emit('onSubmit')
|
||||
}
|
||||
|
||||
const ruleFormRef= ref<any>('')
|
||||
const save = () => {
|
||||
let form={
|
||||
memberInfo:memberInfo.value,
|
||||
userInfo:userInfo.value,
|
||||
}
|
||||
ruleFormRef.value.validate((valid: any) => {
|
||||
if (valid) {
|
||||
if (props.id) {
|
||||
post("organization/member/edit", {data: form.value}).then((res) => {
|
||||
post("organization/member/edit", {data: form}).then((res) => {
|
||||
onSubmit()
|
||||
form.value = {}
|
||||
memberInfo.value = {}
|
||||
userInfo.value = {}
|
||||
})
|
||||
} else {
|
||||
post("organization/member/add", {data: form.value}).then((res) => {
|
||||
post("organization/member/add", {data: form}).then((res) => {
|
||||
onSubmit()
|
||||
form.value = {}
|
||||
memberInfo.value = {}
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
const options = Object.entries(depts).map(([key, value]) => {
|
||||
if (typeof value === 'string') {
|
||||
return {value: key, label: value};
|
||||
|
|
@ -179,10 +227,15 @@ const options = Object.entries(depts).map(([key, value]) => {
|
|||
});
|
||||
const uploadRef = ref<any>('')
|
||||
const init = (id: any) => {
|
||||
memberInfo.value = {}
|
||||
userInfo.value = {}
|
||||
post("organization/member/getById", {id}).then((res: any) => {
|
||||
form.value = res
|
||||
if(form.value.electronicSignature){
|
||||
uploadRef.value?.getImageUrl(form.value.electronicSignature)
|
||||
memberInfo.value = res.memberInfo
|
||||
if(res.userInfo){
|
||||
userInfo.value = res.userInfo
|
||||
}
|
||||
if(memberInfo.value.electronicSignature){
|
||||
uploadRef.value?.getImageUrl(memberInfo.value.electronicSignature)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,6 +7,10 @@ const router = createRouter({
|
|||
path: '/',
|
||||
redirect: '/home/index',
|
||||
},
|
||||
{
|
||||
path: '/manager/login',
|
||||
component: ()=>import('../views/Login.vue'),
|
||||
},
|
||||
{
|
||||
path: '/home',
|
||||
component: () => import('../views/Layout.vue'),
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ export async function initRequest(_router:any) {
|
|||
function post(path: string, data: any = {}, options: any = {}) {
|
||||
let config={catch_error: false,base_url:globalConfig.base_url}
|
||||
config={...config,...options}
|
||||
|
||||
let token = localStorage.getItem('token');
|
||||
let headers: Record<string, string> = {};
|
||||
if (token) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,338 @@
|
|||
<script setup lang="ts">
|
||||
import {ref} from 'vue'
|
||||
import {post} from '@/utils/request.ts'
|
||||
import {useRouter} from "vue-router";
|
||||
import {ElMessage} from "element-plus";
|
||||
import Mask from "@/components/common/Mask.vue";
|
||||
import Auth from "@/components/manger/Auth.vue";
|
||||
|
||||
const username = ref('')
|
||||
const password = ref('')
|
||||
const rememberMe = ref(false)
|
||||
const router = useRouter();
|
||||
|
||||
const handleLogin = () => {
|
||||
post("manager/user/login", {username: username.value, password: password.value}).then((token: any) => {
|
||||
localStorage.setItem('token', token)
|
||||
ElMessage({
|
||||
message: "登陆成功,即将为您跳转到首页",
|
||||
type: 'success',
|
||||
duration: 1000,
|
||||
onClose: () => {
|
||||
router.push("/home/index")
|
||||
}
|
||||
})
|
||||
|
||||
})
|
||||
}
|
||||
const isShowAuth = ref(false)
|
||||
const showAuth = () => {
|
||||
isShowAuth.value = true
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="login-container">
|
||||
<div class="particles-bg">
|
||||
<div class="particle particle-1"></div>
|
||||
<div class="particle particle-2"></div>
|
||||
<div class="particle particle-3"></div>
|
||||
<div class="particle particle-4"></div>
|
||||
</div>
|
||||
|
||||
<div class="login-card">
|
||||
<h1 class="title">欢迎使用药慧精灵</h1>
|
||||
<div class="input-group">
|
||||
<i class="fas fa-user input-icon"></i>
|
||||
<input
|
||||
v-model="username"
|
||||
type="text"
|
||||
placeholder="请输入用户名"
|
||||
class="input-field"
|
||||
>
|
||||
</div>
|
||||
|
||||
<div class="input-group">
|
||||
<i class="fas fa-lock input-icon"></i>
|
||||
<input
|
||||
v-model="password"
|
||||
type="password"
|
||||
placeholder="请输入密码"
|
||||
class="input-field"
|
||||
>
|
||||
</div>
|
||||
<div class="button">
|
||||
<button type="submit" class="login-button" @click="handleLogin">登录</button>
|
||||
<button class="auth-button" @click="showAuth">授权</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Mask :is-show="isShowAuth" @close="isShowAuth=false" :width="600" :height="600" title="授权">
|
||||
<Auth></Auth>
|
||||
</Mask>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.login-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
min-height: 100vh;
|
||||
background: #5078c8;
|
||||
}
|
||||
|
||||
// 修改粒子容器样式
|
||||
.particles-bg {
|
||||
position: fixed;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
// 修改粒子基础样式
|
||||
.particle {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
animation: float 12s infinite linear;
|
||||
filter: blur(1px);
|
||||
// 调整渐变颜色增加活力
|
||||
background: linear-gradient(145deg, #89c3fd 0%, #a8d8ff 100%);
|
||||
|
||||
// 增加伪元素创建更多粒子
|
||||
&::before, &::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 70%;
|
||||
height: 70%;
|
||||
border-radius: inherit;
|
||||
background: rgba(255, 255, 255, 0.4);
|
||||
}
|
||||
|
||||
// 新增粒子尺寸和位置
|
||||
&-1 {
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
top: 15%;
|
||||
left: 5%;
|
||||
animation-duration: 14s;
|
||||
}
|
||||
|
||||
&-2 {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
top: 70%;
|
||||
right: 10%;
|
||||
animation-duration: 16s;
|
||||
}
|
||||
|
||||
&-3 {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
top: 40%;
|
||||
right: 30%;
|
||||
animation-duration: 12s;
|
||||
}
|
||||
|
||||
&-4 {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
top: 65%;
|
||||
left: 15%;
|
||||
animation-duration: 18s;
|
||||
}
|
||||
|
||||
// 新增更多粒子(通过伪元素实现)
|
||||
&:nth-child(odd)::before {
|
||||
top: 20%;
|
||||
left: 20%;
|
||||
}
|
||||
|
||||
&:nth-child(even)::after {
|
||||
bottom: 20%;
|
||||
right: 20%;
|
||||
}
|
||||
}
|
||||
|
||||
// 优化动画效果
|
||||
@keyframes float {
|
||||
0%, 100% {
|
||||
transform: translate(0, 0) rotate(0deg) scale(1);
|
||||
opacity: 0.6;
|
||||
}
|
||||
33% {
|
||||
transform: translate(30px, -80px) rotate(120deg) scale(0.9);
|
||||
opacity: 0.8;
|
||||
}
|
||||
66% {
|
||||
transform: translate(-20px, 60px) rotate(240deg) scale(1.1);
|
||||
opacity: 0.4;
|
||||
}
|
||||
}
|
||||
|
||||
// 增加粒子数量(在原有4个基础上通过伪元素生成更多)
|
||||
.particles-bg::before,
|
||||
.particles-bg::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 50px;
|
||||
height: 50px;
|
||||
border-radius: 50%;
|
||||
background: linear-gradient(145deg, #c2e9fb 0%, #a1c4fd 100%);
|
||||
animation: miniFloat 10s infinite linear;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.particles-bg::before {
|
||||
top: 20%;
|
||||
right: 5%;
|
||||
animation-delay: 2s;
|
||||
}
|
||||
|
||||
.particles-bg::after {
|
||||
bottom: 30%;
|
||||
left: 8%;
|
||||
animation-delay: 5s;
|
||||
}
|
||||
|
||||
@keyframes miniFloat {
|
||||
0%, 100% {
|
||||
transform: translate(0, 0) scale(1);
|
||||
}
|
||||
50% {
|
||||
transform: translate(40px, -60px) scale(0.8);
|
||||
}
|
||||
}
|
||||
|
||||
/* 调整原有卡片层级 */
|
||||
.login-card {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
/* 保持原有样式 */
|
||||
}
|
||||
|
||||
.login-card {
|
||||
background: rgba(255, 255, 255, 0.95);
|
||||
padding: 2.5rem;
|
||||
border-radius: 20px;
|
||||
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
|
||||
width: 480px;
|
||||
transform: translateY(-10%);
|
||||
}
|
||||
|
||||
.title {
|
||||
text-align: center;
|
||||
font-size: 2rem;
|
||||
color: #2c3e50;
|
||||
margin-bottom: 2rem;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.input-group {
|
||||
position: relative;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
.input-icon {
|
||||
position: absolute;
|
||||
left: 1rem;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: #7f8c8d;
|
||||
}
|
||||
|
||||
.input-field {
|
||||
width: 100%;
|
||||
padding: 1rem 1rem 1rem 2.5rem;
|
||||
border: 2px solid #ecf0f1;
|
||||
border-radius: 8px;
|
||||
font-size: 1rem;
|
||||
transition: all 0.3s ease;
|
||||
|
||||
&:focus {
|
||||
border-color: #3498db;
|
||||
box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.1);
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
|
||||
.options {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
margin: 1.5rem 0;
|
||||
}
|
||||
|
||||
.remember-me {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
color: #7f8c8d;
|
||||
}
|
||||
|
||||
.forgot-password {
|
||||
color: #3498db;
|
||||
text-decoration: none;
|
||||
font-size: 0.9rem;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
.button{
|
||||
display: flex;
|
||||
}
|
||||
.login-button {
|
||||
flex: 1;
|
||||
padding: 1rem;
|
||||
background: linear-gradient(135deg, #3498db, #2980b9);
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
color: white;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: transform 0.2s ease;
|
||||
|
||||
&:hover {
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
&:active {
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
.auth-button{
|
||||
flex: 1;
|
||||
margin-left: 10px;
|
||||
padding: 1rem;
|
||||
background: linear-gradient(135deg, #3498db, #2980b9);
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
color: white;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: transform 0.2s ease;
|
||||
&:hover {
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
&:active {
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
.register-link {
|
||||
text-align: center;
|
||||
margin-top: 1.5rem;
|
||||
color: #7f8c8d;
|
||||
|
||||
a {
|
||||
color: #3498db;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<div class="container-wrapper">
|
||||
<div class="top">
|
||||
<el-button type="primary" @click="is_add = true">新增领用</el-button>
|
||||
<el-button type="primary" :icon="Plus" @click="is_add = true">新增领用</el-button>
|
||||
</div>
|
||||
<div class="content">
|
||||
<el-table :data="dataList" style="width: 100%" @row-click="rowClick">
|
||||
|
|
@ -28,21 +28,21 @@
|
|||
/>
|
||||
</div>
|
||||
</div>
|
||||
<Mask :width="1200" :height="600" :top="100" :is-show="is_add" @close="is_add=false">
|
||||
<Mask :width="1200" :height="600" :top="100" :is-show="is_add" @close="is_add=false" title="新增">
|
||||
<AddApply @close="closeAddApply"/>
|
||||
</Mask>
|
||||
<Mask :width="1200" :height="600" :top="100" :is-show="is_detail" @close="is_detail=false">
|
||||
<Mask :width="1200" :height="600" :top="100" :is-show="is_detail" @close="is_detail=false" title="编辑">
|
||||
<DetailApply :id="id" @close="closeDetailApply"/>
|
||||
</Mask>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
|
||||
import Mask from "@/components/common/Mask.vue";
|
||||
import AddApply from "@/components/inventory/apply/AddApply.vue";
|
||||
import {onMounted, ref} from "vue";
|
||||
import {post} from "@/utils/request.ts";
|
||||
import DetailApply from "@/components/inventory/apply/DetailApply.vue";
|
||||
import {Plus} from "@element-plus/icons-vue";
|
||||
|
||||
const is_add = ref(false)
|
||||
const is_detail = ref(false)
|
||||
|
|
@ -97,7 +97,7 @@ const rowClick = (row: any) => {
|
|||
@use "@/assets/scss/base.scss";
|
||||
.container-wrapper {
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
padding: 24px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
|
@ -115,12 +115,10 @@ const rowClick = (row: any) => {
|
|||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
border-bottom: 1px solid #EEE;
|
||||
.page_btn_list {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 10px;
|
||||
}
|
||||
border-top: 1px solid #EEE;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<div class="container-wrapper">
|
||||
<div class="top">
|
||||
<el-dropdown>
|
||||
<el-button type="primary" @click="openAdd">开始盘点</el-button>
|
||||
<el-button type="primary" :icon="Plus" @click="openAdd">开始盘点</el-button>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
<div class="content_list">
|
||||
|
|
@ -44,6 +44,7 @@ import {post} from "@/utils/request.ts";
|
|||
import Mask from "@/components/common/Mask.vue";
|
||||
import Add from "@/components/inventory/check/Add.vue";
|
||||
import Detail from "@/components/inventory/check/Detail.vue";
|
||||
import {Plus} from "@element-plus/icons-vue";
|
||||
|
||||
const tableData = ref([])
|
||||
const getCheck = () => {
|
||||
|
|
@ -95,27 +96,29 @@ const formatDate = (isoStr:any) => {
|
|||
</script>
|
||||
<style scoped lang="scss">
|
||||
@use "../../assets/scss/base.scss";
|
||||
|
||||
.container-wrapper {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
padding: 24px;
|
||||
|
||||
.content_list {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
margin-top: base.$margin-base;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
height: 60px;
|
||||
background-color: #FFF;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
border-bottom: 1px solid #EEE;
|
||||
.page_btn_list {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 10px;
|
||||
}
|
||||
border-top: 1px solid #EEE;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,22 +1,6 @@
|
|||
<template>
|
||||
<div class="container-wrapper">
|
||||
<div class="top">
|
||||
<el-dropdown>
|
||||
<el-button type="primary">新增商品
|
||||
<el-icon class="el-icon--right">
|
||||
<arrow-down/>
|
||||
</el-icon>
|
||||
</el-button>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item @click="open_edit(1301,0)">中西成药</el-dropdown-item>
|
||||
<el-dropdown-item @click="open_edit(1302,0)">中药饮片</el-dropdown-item>
|
||||
<el-dropdown-item @click="open_edit(1306,0)">医疗器材</el-dropdown-item>
|
||||
<el-dropdown-item @click="open_edit(0,0)">其他商品</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
<div class="search">
|
||||
<el-form :inline="true" :model="searchModel">
|
||||
<el-form-item>
|
||||
|
|
@ -79,8 +63,15 @@
|
|||
<el-checkbox v-model="status" label="不看已停用" size="large" @change="searchGoods"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="addBtn">
|
||||
<el-button type="primary" :icon="Plus" @click="open_edit(1301,0)">新增中西成药</el-button>
|
||||
<el-button type="primary" :icon="Plus" @click="open_edit(1302,0)">新增中药饮片</el-button>
|
||||
<el-button type="primary" :icon="Plus" @click="open_edit(1306,0)">新增医疗器材</el-button>
|
||||
<el-button type="primary" :icon="Plus" @click="open_edit(0,0)">新增其他商品</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content_goods" ref="content">
|
||||
<el-table :data="tableData" style="width: 100%;height: 100%" @row-click="openMack">
|
||||
<el-table :data="tableData" style="width: 100%;height: 100%;padding: 0 24px" @row-click="openMack">
|
||||
<el-table-column fixed prop="name" label="名称" width="200" show-overflow-tooltip/>
|
||||
<el-table-column fixed label="类型" width="200">
|
||||
<template #default="scope">
|
||||
|
|
@ -95,12 +86,12 @@
|
|||
<el-table-column fixed label="厂家" prop="producer" width="230" show-overflow-tooltip/>
|
||||
<el-table-column fixed label="进价" width="120">
|
||||
<template #default="scope">
|
||||
¥{{ scope.row.purchaseUnitPrice?.toFixed(2) }}
|
||||
¥{{ scope.row.purchaseUnitPrice.toFixed(2) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed label="售价" width="120">
|
||||
<template #default="scope">
|
||||
¥{{ scope.row.unitPrice?.toFixed(2) }}
|
||||
¥{{ scope.row.unitPrice.toFixed(2) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="标签" prop="producer" width="200">
|
||||
|
|
@ -116,7 +107,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="毛利率" width="120">
|
||||
<template #default="scope">
|
||||
{{ (scope.row.interestRate * 100)?.toFixed(2) }}%
|
||||
{{ (scope.row.interestRate * 100).toFixed(2) }}%
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
|
|
@ -140,7 +131,7 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="药品成本" prop="costPrice" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
¥{{ scope.row.costPrice?.toFixed(2) }}
|
||||
¥{{ scope.row.costPrice.toFixed(2) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="医保码" prop="hilistCode" show-overflow-tooltip></el-table-column>
|
||||
|
|
@ -167,10 +158,13 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Mask :is-show="is_add" :top="50" :height="900" @close="is_add = false" title="新建档案">
|
||||
<Mask :is-show="is_add" :top="50" :height="900">
|
||||
<Edit ref="editRef" @close="is_add = false;init()"/>
|
||||
</Mask>
|
||||
<Mask :is-show="open" :top="50" :height="600" @close="open=false" title="列表信息">
|
||||
<Mask :is-show="open" :top="50" :height="600">
|
||||
<div style="height: 50px">
|
||||
<CloseBtn @click="closeMack"></CloseBtn>
|
||||
</div>
|
||||
<el-tabs v-model="activeName" @tab-change="changeTab">
|
||||
<el-tab-pane label="商品信息" name="first">
|
||||
<Edit ref="editRef" @close="open = false;init()"/>
|
||||
|
|
@ -188,11 +182,12 @@
|
|||
import {nextTick, onMounted, ref} from "vue";
|
||||
import {ElTabPane} from "element-plus";
|
||||
import {post} from '@/utils/request.ts';
|
||||
import Mask from "@/components/common/Mask.vue";
|
||||
import Mask from "@/components/Mask.vue";
|
||||
import Edit from "@/components/inventory/goods/Edit.vue";
|
||||
import InventoryBatchDetail from "@/components/inventory/goods/InventoryBatchDetail.vue";
|
||||
import InventoryStatistics from "@/components/inventory/goods/InventoryStatistics.vue";
|
||||
import {ArrowDown, SemiSelect} from "@element-plus/icons-vue";
|
||||
import CloseBtn from "@/components/CloseBtn.vue";
|
||||
import {Plus, SemiSelect} from "@element-plus/icons-vue";
|
||||
|
||||
const inventoryNumber = ref(false)
|
||||
const status = ref(false)
|
||||
|
|
@ -398,21 +393,21 @@ const activeName = ref('first')
|
|||
height: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.tags {
|
||||
margin-left: 5px;
|
||||
}
|
||||
.top {
|
||||
height: 112px;
|
||||
padding: 24px 24px 0;
|
||||
background: #fff;
|
||||
|
||||
.search {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 10px;
|
||||
|
||||
.el-form-item {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.content_goods {
|
||||
width: 100%;
|
||||
|
|
@ -427,12 +422,15 @@ const activeName = ref('first')
|
|||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
border-bottom: 1px solid #EEE;
|
||||
border-top: 1px solid #EEE;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
|
||||
.page_btn_list {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 10px;
|
||||
}
|
||||
.tags {
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
@ -2,11 +2,11 @@
|
|||
<div class="container-wrapper">
|
||||
<div class="top">
|
||||
<el-dropdown>
|
||||
<el-button type="primary" @click="open_add(null)">新增采购</el-button>
|
||||
<el-button type="primary" :icon="Plus" @click="open_add(null)">新增采购</el-button>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
<div class="content_list">
|
||||
<el-table :data="tableData" style="width: 100%">
|
||||
<el-table :data="tableData" style="width: 100%" @row-click="open_add">
|
||||
<el-table-column fixed label="进货单号" width="250" show-overflow-tooltip>
|
||||
<template #default="scope">
|
||||
<div class="link">{{ scope.row.code }}</div>
|
||||
|
|
@ -21,20 +21,17 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="采购人" prop="managerUserName" width="100"></el-table-column>
|
||||
<el-table-column label="供应商" prop="supplierName" width="250"></el-table-column>
|
||||
<el-table-column prop="purchaseDate" label="采购时间" width="250">
|
||||
<el-table-column label="供应商" prop="supplierName"></el-table-column>
|
||||
<el-table-column prop="purchaseDate" label="采购时间">
|
||||
<template #default="scope">
|
||||
{{ formatDate(scope.row.purchaseDate) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="createDatetime" label="创建时间" width="250">
|
||||
<el-table-column prop="createDatetime" label="创建时间">
|
||||
<template #default="scope">
|
||||
{{ formatDate(scope.row.createDatetime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" min-width="120" #default="scope">
|
||||
<el-button link type="primary" size="small" @click="open_add(scope.row.code)">详情</el-button>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
|
|
@ -49,7 +46,7 @@
|
|||
/>
|
||||
</div>
|
||||
</div>
|
||||
<Mask :width="1200" :height="700" :top="100" :is-show="is_add">
|
||||
<Mask :width="1200" :height="700" :top="100" :is-show="is_add" @close="is_add=false" :title="open_code?'编辑':'新增'">
|
||||
<AddOrder v-if="!open_code" @close="closeAddOrder"/>
|
||||
<EditOrder v-else :code="open_code" @close="is_add=false" @updateOrderDetail="init"/>
|
||||
</Mask>
|
||||
|
|
@ -63,6 +60,7 @@ import {useRoute} from "vue-router";
|
|||
import AddOrder from "@/components/inventory/purchase/AddOrder.vue";
|
||||
import Mask from "@/components/common/Mask.vue";
|
||||
import EditOrder from "@/components/inventory/purchase/EditOrder.vue";
|
||||
import {Plus} from "@element-plus/icons-vue";
|
||||
|
||||
let tableData = ref([])
|
||||
let is_add = ref(false)
|
||||
|
|
@ -116,7 +114,7 @@ const formatDate = (isoStr: any) => {
|
|||
@use "@/assets/scss/base.scss";
|
||||
.container-wrapper {
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
padding: 24px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
|
@ -134,12 +132,10 @@ const formatDate = (isoStr: any) => {
|
|||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
border-bottom: 1px solid #EEE;
|
||||
.page_btn_list {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 10px;
|
||||
}
|
||||
border-top: 1px solid #EEE;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
.full_screen {
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
<div class="container-wrapper">
|
||||
<div class="top">
|
||||
<el-dropdown>
|
||||
<el-button type="primary" @click="openAdd">添加供应商</el-button>
|
||||
<el-button type="primary" :icon="Plus" @click="openAdd">添加供应商</el-button>
|
||||
</el-dropdown>
|
||||
</div>
|
||||
<div class="content_list">
|
||||
<el-table :data="tableData" style="width: 100%">
|
||||
<el-table :data="tableData" @row-click="editSupplier">
|
||||
<el-table-column label="供应商名称" prop="name" width="250">
|
||||
</el-table-column>
|
||||
<el-table-column label="启用状态" prop="turn" width="80">
|
||||
|
|
@ -15,16 +15,10 @@
|
|||
<el-tag type="info" v-else>已禁用</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="许可证号" prop="licenseCode" width="150"></el-table-column>
|
||||
<el-table-column label="许可证号" prop="licenseCode"></el-table-column>
|
||||
<el-table-column label="联系人" prop="contactName" width="100"></el-table-column>
|
||||
<el-table-column label="联系方式" prop="contactTel" width="150"></el-table-column>
|
||||
<el-table-column label="备注" width="250" prop="reamark"/>
|
||||
<el-table-column label="操作" width="150">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" size="small" @click="editSupplier(scope.row)">详情</el-button>
|
||||
</template>
|
||||
|
||||
</el-table-column>
|
||||
<el-table-column label="备注" prop="reamark"/>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
|
|
@ -39,7 +33,7 @@
|
|||
/>
|
||||
</div>
|
||||
</div>
|
||||
<Mask :width="400" :height="600" :is-show="showAdd" :top="100">
|
||||
<Mask :width="400" :height="600" :is-show="showAdd" :top="100" @close="showAdd = false" :title="id?'编辑':'添加'">
|
||||
<AddSupplier @close="showAdd = false" @saveSuccess="getSupplier()" ref="addSupplierRef"></AddSupplier>
|
||||
</Mask>
|
||||
</div>
|
||||
|
|
@ -49,6 +43,7 @@ import {nextTick, onMounted, ref, watch} from "vue";
|
|||
import {post} from "@/utils/request.ts";
|
||||
import Mask from "@/components/common/Mask.vue";
|
||||
import AddSupplier from "@/components/inventory/supplier/AddSupplier.vue";
|
||||
import {Plus} from "@element-plus/icons-vue";
|
||||
|
||||
const tableData = ref([])
|
||||
const getSupplier = () => {
|
||||
|
|
@ -67,7 +62,9 @@ const addSupplierRef = ref();
|
|||
const openAdd = () => {
|
||||
showAdd.value = true
|
||||
}
|
||||
const id = ref('')
|
||||
const editSupplier = (row: any) => {
|
||||
id.value = row.id
|
||||
openAdd()
|
||||
nextTick(() => {
|
||||
addSupplierRef.value.edit(row)
|
||||
|
|
@ -95,25 +92,10 @@ let changePage = (value: number) => {
|
|||
</script>
|
||||
<style scoped lang="scss">
|
||||
@use "@/assets/scss/base.scss";
|
||||
.bottom {
|
||||
width: 100%;
|
||||
height: 60px;
|
||||
background-color: #FFF;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
border-bottom: 1px solid #EEE;
|
||||
|
||||
.page_btn_list {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.container-wrapper {
|
||||
box-sizing: border-box;
|
||||
padding: 20px;
|
||||
padding: 24px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
|
@ -133,14 +115,10 @@ let changePage = (value: number) => {
|
|||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
position: relative;
|
||||
border-bottom: 1px solid #EEE;
|
||||
margin-top: base.$margin-base;
|
||||
|
||||
.page_btn_list {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 10px;
|
||||
}
|
||||
border-top: 1px solid #EEE;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
@ -19,7 +19,7 @@
|
|||
<PharmaceuticalConsumables v-else v-model="goodsList"></PharmaceuticalConsumables>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<Settlement v-if="status!=1" v-model="totalAmount" @deleteItem="deleteItem" @save="save" :status="status"></Settlement>
|
||||
<Settlement v-if="status!=1" v-model="totalAmount" @deleteItem="deleteItem" @save="save" :status="status" @edit="edit"></Settlement>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
|
|
@ -98,7 +98,6 @@ const getId = (item: any) => {
|
|||
status.value = 2
|
||||
})
|
||||
}
|
||||
|
||||
if (item.status == 3) {
|
||||
post(apiConfig.DoctorDetail, {
|
||||
regisId: item.id
|
||||
|
|
@ -119,8 +118,13 @@ const deleteItem = () => {
|
|||
const getStatus = (e: any) => {
|
||||
status.value = e
|
||||
}
|
||||
const edit=()=>{
|
||||
post('registration/changeStatus', {id: registerId.value, status: 2}).then((res: any) => {
|
||||
status.value = 2
|
||||
})
|
||||
}
|
||||
// 使用 watch 监听 goodsList 和 itemList 的变化
|
||||
watch([()=>goodsList.value, itemList], ([newGoodsList, newItemList]) => {
|
||||
watch([()=>goodsList.value, itemList,status], ([newGoodsList, newItemList,newStatus]) => {
|
||||
const pharmaceuticalTotalAmount = newItemList.reduce((pre: any, cur: any) => {
|
||||
return pre + cur.unitPrice
|
||||
}, 0);
|
||||
|
|
@ -129,7 +133,9 @@ watch([()=>goodsList.value, itemList], ([newGoodsList, newItemList]) => {
|
|||
return pre + cur.selectNum * cur.selectedPrice
|
||||
}, 0);
|
||||
totalAmount.value = pharmaceuticalTotalAmount + serviceTotalAmount;
|
||||
console.log(serviceTotalAmount)
|
||||
if (newStatus) {
|
||||
registerId.value=''
|
||||
}
|
||||
}, {deep: true});
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
|
|
|
|||
|
|
@ -119,6 +119,10 @@ const options = Array.from({length: 10000}).map((_, idx) => ({
|
|||
}))
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.container-wrapper{
|
||||
padding:0 24px;
|
||||
background: #fff;
|
||||
}
|
||||
.form {
|
||||
width: 100%;
|
||||
padding: 0 24px;
|
||||
|
|
|
|||
|
|
@ -1,80 +1,59 @@
|
|||
<template>
|
||||
<div class="container-wrapper">
|
||||
<div class="title">
|
||||
<el-select-v2
|
||||
v-model="state"
|
||||
filterable
|
||||
remote
|
||||
ref="selectRef"
|
||||
:remote-method="querySearchAsync"
|
||||
:options="options"
|
||||
placeholder="输入关键字搜索"
|
||||
style="width: 200px"
|
||||
<div class="title-search">
|
||||
<el-form
|
||||
:model="search"
|
||||
label-width="auto"
|
||||
:inline="true"
|
||||
class="demo-form-inline"
|
||||
>
|
||||
<template #prefix>
|
||||
<div class="prefix-wrapper">
|
||||
<el-icon>
|
||||
<Search/>
|
||||
</el-icon>
|
||||
<el-form-item>
|
||||
<el-input v-model="search.itemSocialCode" placeholder="医保码编码" style="width: 200px"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-input v-model="search.itemName" placeholder="项目名称" style="width: 200px"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
<template #header>
|
||||
<div class="header">
|
||||
<div class="text">药品</div>
|
||||
<div class="text">规格</div>
|
||||
<div class="text">库存</div>
|
||||
<div class="text">厂家</div>
|
||||
<div class="text">最近供应商</div>
|
||||
</div>
|
||||
</template>
|
||||
<template #default="{ item }">
|
||||
<div class="row" @click="handleSelect(item)">
|
||||
<div class="text" style="margin-left: 0">{{ item.name }}</div>
|
||||
<div class="text">{{ item.minPackagingNumber }}*{{ item.minPackagingUnit }}/{{ item.packagingUnit }}</div>
|
||||
<div class="text">
|
||||
{{ item.inventoryWholeNumber }}{{ item.packagingUnit }}
|
||||
<template v-if="item.inventoryFragmentNumber > 0">
|
||||
{{ item.inventoryFragmentNumber }}{{ item.minPackagingUnit }}
|
||||
</template>
|
||||
</div>
|
||||
<div class="text">{{ item.producer }}</div>
|
||||
<div class="text" style="margin-left: 15px">无</div>
|
||||
</div>
|
||||
</template>
|
||||
<template #footer>
|
||||
</template>
|
||||
</el-select-v2>
|
||||
<div class="search_box">
|
||||
<el-input
|
||||
v-model="state"
|
||||
placeholder="输入关键字搜索药品"
|
||||
clearable
|
||||
style="width: 200px"
|
||||
>
|
||||
<template #prefix>
|
||||
<el-icon>
|
||||
<Search/>
|
||||
</el-icon>
|
||||
</template>
|
||||
</el-input>
|
||||
</div>
|
||||
<div class="search_box">
|
||||
<el-button type="primary" @click="isShow=true">新建项目</el-button>
|
||||
<div class="title-btn">
|
||||
<el-button type="primary" @click="initData()">查询</el-button>
|
||||
<el-button type="primary" @click="search={}">重置</el-button>
|
||||
<el-button type="primary" :icon="Plus" @click="isShow=true">新建项目</el-button>
|
||||
<el-button type="primary" @click="openSetMenu">组套</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content_list">
|
||||
<el-table :data="tableData" style="width: 100%" @row-click="rowClick">
|
||||
<div class="table">
|
||||
<el-scrollbar>
|
||||
<el-table :data="tableData" @row-click="rowClick">
|
||||
<el-table-column prop="itemSocialCode" label="医保码编码" width="200"
|
||||
:show-overflow-tooltip="true"></el-table-column>
|
||||
<el-table-column prop="itemName" label="项目名称"></el-table-column>
|
||||
<el-table-column prop="unit" label="单位"></el-table-column>
|
||||
<el-table-column prop="purchaseUnitPrice" label="原价"></el-table-column>
|
||||
<el-table-column prop="unitPrice" label="售价"></el-table-column>
|
||||
<el-table-column prop="createDatetime" label="创建时间">
|
||||
<template #default="scope">
|
||||
{{ formatDate(scope.row.createDatetime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="page_btn_list">
|
||||
<el-pagination
|
||||
background
|
||||
layout="prev, pager, next"
|
||||
:page-size="pageSize"
|
||||
:current-page="page"
|
||||
:total="total"
|
||||
@current-change="changePage"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<Mask :is-show="isShow" @close="initData()">
|
||||
</div>
|
||||
<Mask :is-show="isShow" @close="initData()" :title="id?'项目编辑':'项目新增'">
|
||||
<ItemEdit :id="id" ref="ItemEditRef" @close="initData()"></ItemEdit>
|
||||
</Mask>
|
||||
<SetMenu ref="setMenuRef"></SetMenu>
|
||||
|
|
@ -85,6 +64,8 @@ import {post} from "@/utils/request.ts";
|
|||
import Mask from "@/components/common/Mask.vue";
|
||||
import ItemEdit from "@/components/settings/ItemEdit.vue";
|
||||
import SetMenu from "@/components/settings/SetMenu.vue";
|
||||
import {formatDate} from "@/utils/dateUtils.ts";
|
||||
import {Plus} from "@element-plus/icons-vue"
|
||||
|
||||
const state = ref([])
|
||||
const options = ref([
|
||||
|
|
@ -145,8 +126,9 @@ const rowClick = ((row: any) => {
|
|||
|
||||
const tableData = ref<any>([])
|
||||
const initData = () => {
|
||||
post('item/list', {page: 1, size: 20}).then((res: any) => {
|
||||
post('item/list', {page: page.value, size: pageSize.value}).then((res: any) => {
|
||||
tableData.value = res.list
|
||||
total.value = res.total_count
|
||||
})
|
||||
id.value = ''
|
||||
isShow.value = false
|
||||
|
|
@ -160,47 +142,34 @@ const openSetMenu = () => {
|
|||
setMenuRef.value?.init();
|
||||
});
|
||||
}
|
||||
const changePage = (val: any) => {
|
||||
page.value = val
|
||||
};
|
||||
const pageSize = ref(20);
|
||||
const page = ref(1);
|
||||
const total = ref(0);
|
||||
const search = ref<any>({})
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.container-wrapper {
|
||||
padding: 24px;
|
||||
background: #fff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.title {
|
||||
display: flex;
|
||||
height: 60px;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.search_box {
|
||||
//background-color: rgb(148.6, 212.3, 117.1);
|
||||
background-color: #fff;
|
||||
.title-search {
|
||||
padding: 10px;
|
||||
border-radius: 10px;
|
||||
box-sizing: border-box;
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.header {
|
||||
padding: 10px;
|
||||
font-size: 18px;
|
||||
display: flex;
|
||||
|
||||
.text {
|
||||
font-size: 16px;
|
||||
width: 200px;
|
||||
color: #6a6a6a;
|
||||
}
|
||||
}
|
||||
|
||||
.row {
|
||||
display: flex;
|
||||
max-height: 500px;
|
||||
|
||||
.text {
|
||||
font-size: 12px;
|
||||
width: 150px;
|
||||
margin-left: 10px;
|
||||
overflow: hidden; /* 隐藏超出部分 */
|
||||
text-overflow: ellipsis; /* 显示省略号 */
|
||||
white-space: nowrap; /* 防止换行 */
|
||||
}
|
||||
}
|
||||
|
||||
.el-popper.is-pure {
|
||||
|
|
@ -208,4 +177,21 @@ const openSetMenu = () => {
|
|||
}
|
||||
}
|
||||
|
||||
.table {
|
||||
flex: 1;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
height: 60px;
|
||||
background-color: #FFF;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
border-top: 1px solid #EEE;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
|
@ -1,26 +1,74 @@
|
|||
<template>
|
||||
<div class="container-wrapper">
|
||||
<el-button type="primary" @click="isShow=true">新增</el-button>
|
||||
<div class="title">
|
||||
<div class="title-search">
|
||||
<el-form
|
||||
:model="search"
|
||||
label-width="auto"
|
||||
:inline="true"
|
||||
class="demo-form-inline"
|
||||
>
|
||||
<el-form-item>
|
||||
<el-input v-model="search.name" placeholder="请输入姓名" style="width: 200px"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-select v-model="search.sectionId" placeholder="请选择" style="width: 200px">
|
||||
<el-option
|
||||
v-for="item in roleList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="title-btn">
|
||||
<el-button type="primary" @click="init()">查询</el-button>
|
||||
<el-button type="primary" @click="search={}">重置</el-button>
|
||||
<el-button type="primary" :icon="Plus" @click="isShow=true">新增</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="table">
|
||||
<el-table :data="tableData" style="width: 100%" @row-click="rowClick">
|
||||
<el-table-column prop="date" label="日期" width="180">
|
||||
<template #default="scope">
|
||||
{{formatDate(scope.row.createDatetime)}}
|
||||
{{ formatDate(scope.row.memberInfo.createDatetime) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="姓名" width="180">
|
||||
<template #default="scope">
|
||||
{{ scope.row.memberInfo.name }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="name" label="姓名" width="180"/>
|
||||
<el-table-column prop="role" label="角色" width="180">
|
||||
<template #default="scope">
|
||||
{{roleList.find((item: any) => item.value === scope.row.role)?.label||'-'}}
|
||||
{{ roleList.find((item: any) => item.value === scope.row.memberInfo.role)?.label || '-' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="sectionId" label="科室">
|
||||
<template #default="scope">
|
||||
{{sectionList.find((item: any) => item.id === scope.row.sectionId)?.name ||'-'}}
|
||||
{{ sectionList.find((item: any) => item.id === scope.row.memberInfo.sectionId)?.name || '-' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="memo" label="备注"/>
|
||||
</el-table>
|
||||
<Mask :is-show="isShow" @close="init()" :width="800" :height="600">
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="page_btn_list">
|
||||
<el-pagination
|
||||
background
|
||||
layout="prev, pager, next"
|
||||
:page-size="pageSize"
|
||||
:current-page="page"
|
||||
:total="total"
|
||||
@current-change="changePage"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<Mask :is-show="isShow" @close="isShow=false" :width="800" :height="600" title="成员管理">
|
||||
<MemberEdit :id="id" ref="memberEditRef" @onSubmit="init()"></MemberEdit>
|
||||
</Mask>
|
||||
</div>
|
||||
|
|
@ -31,16 +79,17 @@ import Mask from '@/components/common/Mask.vue'
|
|||
import MemberEdit from "@/components/settings/MemberEdit.vue";
|
||||
import {post} from "@/utils/request.ts";
|
||||
import {formatDate} from "@/utils/dateUtils.ts";
|
||||
import {Plus} from "@element-plus/icons-vue";
|
||||
|
||||
const id = ref<any>("")
|
||||
const isShow = ref(false)
|
||||
const tableData = ref<any>([]);
|
||||
const memberEditRef = ref<any>(null)
|
||||
const rowClick = (row: any) => {
|
||||
id.value = row.id
|
||||
id.value = row.memberInfo.id
|
||||
isShow.value = true
|
||||
nextTick(() => {
|
||||
memberEditRef.value?.init(row.id)
|
||||
memberEditRef.value?.init(id.value)
|
||||
})
|
||||
}
|
||||
const roleList = [
|
||||
|
|
@ -79,7 +128,7 @@ const roleList = [
|
|||
]
|
||||
const init = (() => {
|
||||
isShow.value = false
|
||||
post('organization/member/list ', {page: 1, size: 100}).then((res: any) => {
|
||||
post('organization/member/list ', {page: page.value, size: pageSize.value}).then((res: any) => {
|
||||
tableData.value = res.list
|
||||
list()
|
||||
})
|
||||
|
|
@ -88,7 +137,6 @@ const deleteDoctor = (row: any) => {
|
|||
post('organization/member/list ', {id}).then((res: any) => {
|
||||
init()
|
||||
})
|
||||
console.log(row)
|
||||
}
|
||||
const sectionList = ref<any>([]);
|
||||
const list = () => {
|
||||
|
|
@ -99,8 +147,45 @@ const list= ()=>{
|
|||
onMounted(() => {
|
||||
init()
|
||||
})
|
||||
const changePage = (val: any) => {
|
||||
page.value = val
|
||||
};
|
||||
const pageSize = ref(20);
|
||||
const page = ref(1);
|
||||
const total = ref(0);
|
||||
|
||||
const search = ref<any>({})
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
@use "@/assets/scss/base.scss";
|
||||
|
||||
.container-wrapper {
|
||||
background: #fff;
|
||||
padding: 24px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
|
||||
.title {
|
||||
height: 60px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
|
||||
.table {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
height: 60px;
|
||||
background-color: #FFF;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
border-top: 1px solid #EEE;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
@ -1,6 +1,28 @@
|
|||
<template>
|
||||
<div class="container-wrapper">
|
||||
<el-button type="primary" @click="isShow=true">新增</el-button>
|
||||
<div class="title">
|
||||
<div class="title-search">
|
||||
<el-form
|
||||
:model="search"
|
||||
label-width="auto"
|
||||
:inline="true"
|
||||
class="demo-form-inline"
|
||||
>
|
||||
<el-form-item>
|
||||
<el-input v-model="search.resperName" placeholder="负责人姓名" style="width: 200px"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-cascader :props="{ checkStrictly: true }" v-model="search.caty" :options="options" placeholder="科室类别"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="title-btn">
|
||||
<el-button type="primary" @click="init()">查询</el-button>
|
||||
<el-button type="primary" @click="search={}">重置</el-button>
|
||||
<el-button type="primary" :icon="Plus" @click="isShow=true">新增</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table">
|
||||
<el-table :data="tableData" style="width: 100%" @row-click="rowClick">
|
||||
<el-table-column prop="bedCnt" label="病床数量" width="80"/>
|
||||
<el-table-column prop="beginDate" label="开始日期" width="100"/>
|
||||
|
|
@ -27,6 +49,19 @@
|
|||
<el-table-column prop="tecnPsncnt" label="技术人员人数"/>
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="page_btn_list">
|
||||
<el-pagination
|
||||
background
|
||||
layout="prev, pager, next"
|
||||
:page-size="pageSize"
|
||||
:current-page="page"
|
||||
:total="total"
|
||||
@current-change="changePage"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Mask :is-show="isShow" @close="init()" :height="570">
|
||||
<SectionEdit :id="id" ref="sectionRef" @onSubmit="init()"></SectionEdit>
|
||||
</Mask>
|
||||
|
|
@ -38,6 +73,8 @@ import SectionEdit from "@/components/settings/SectionEdit.vue";
|
|||
import {post} from "@/utils/request.ts";
|
||||
import deptsObj from '@/assets/config/directory/depts.json'
|
||||
import {formatDate} from '@/utils/dateUtils.ts'
|
||||
import depts from "@/assets/config/directory/depts.json";
|
||||
import {Plus} from "@element-plus/icons-vue";
|
||||
|
||||
const id = ref<any>("")
|
||||
const isShow = ref(false)
|
||||
|
|
@ -67,18 +104,72 @@ const rowClick = (row: any) => {
|
|||
onMounted(() => {
|
||||
init()
|
||||
})
|
||||
|
||||
interface Dept {
|
||||
[key: string]: string | { name: string; children: { [key: string]: string } };
|
||||
}
|
||||
|
||||
const init = () => {
|
||||
isShow.value = false
|
||||
post('organization/section/list', {page: 1, size: 10}).then((res: any) => {
|
||||
post('organization/section/list', {page: page.value, size: pageSize.value}).then((res: any) => {
|
||||
tableData.value = res.list
|
||||
tableData.value.forEach((item: any) => {
|
||||
item.caty = deptsObj[item.caty]
|
||||
let dept: Dept = deptsObj
|
||||
item.caty = dept[item.caty]
|
||||
console.log(item.caty)
|
||||
})
|
||||
})
|
||||
}
|
||||
const changePage = (val: any) => {
|
||||
page.value = val
|
||||
};
|
||||
const pageSize = ref(20);
|
||||
const page = ref(1);
|
||||
const total = ref(0);
|
||||
const search = ref<any>({})
|
||||
const options = Object.entries(depts).map(([key, value]) => {
|
||||
if (typeof value === 'string') {
|
||||
return {value: key, label: value};
|
||||
} else {
|
||||
return {
|
||||
value: key,
|
||||
label: value.name,
|
||||
children: Object.entries(value.children).map(([childKey, childValue]) => ({
|
||||
value: childKey,
|
||||
label: childValue,
|
||||
})),
|
||||
};
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
@use "@/assets/scss/base.scss";
|
||||
|
||||
.container-wrapper {
|
||||
background: #fff;
|
||||
padding: 24px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
.title {
|
||||
height: 60px;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.table {
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.bottom {
|
||||
height: 60px;
|
||||
background-color: #FFF;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
border-top: 1px solid #EEE;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
Loading…
Reference in New Issue