dev
This commit is contained in:
parent
440849475b
commit
6714080a17
|
|
@ -11,8 +11,11 @@
|
||||||
<router-link to="/social" class="menu-item" active-class="active active7">医保</router-link>
|
<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="/statistics" class="menu-item" active-class="active active8">统计</router-link>
|
||||||
<router-link to="/settings" class="menu-item" active-class="active active9">设置</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>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</header>
|
</header>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -142,4 +145,15 @@ header {
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<script setup lang="ts">
|
<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>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<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"
|
<el-button type="primary" style="margin-top:10px" round class="btn" @click="openCreateSearch"
|
||||||
plain>
|
plain>
|
||||||
一键建档
|
一键建档
|
||||||
|
|
@ -8,7 +8,6 @@
|
||||||
</div>
|
</div>
|
||||||
<el-form :model="form" label-width="auto">
|
<el-form :model="form" label-width="auto">
|
||||||
<el-descriptions
|
<el-descriptions
|
||||||
:title="props.id?'编辑' : '新增'"
|
|
||||||
:column="3"
|
:column="3"
|
||||||
direction="vertical"
|
direction="vertical"
|
||||||
border
|
border
|
||||||
|
|
|
||||||
|
|
@ -189,16 +189,20 @@ const onSubmit = () => {
|
||||||
}
|
}
|
||||||
const ruleFormRef= ref<any>('')
|
const ruleFormRef= ref<any>('')
|
||||||
const save = () => {
|
const save = () => {
|
||||||
|
let form={
|
||||||
|
memberInfo:memberInfo.value,
|
||||||
|
userInfo:userInfo.value,
|
||||||
|
}
|
||||||
ruleFormRef.value.validate((valid: any) => {
|
ruleFormRef.value.validate((valid: any) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if (props.id) {
|
if (props.id) {
|
||||||
post("organization/member/edit", {data: memberInfo.value}).then((res) => {
|
post("organization/member/edit", {data: form}).then((res) => {
|
||||||
onSubmit()
|
onSubmit()
|
||||||
memberInfo.value = {}
|
memberInfo.value = {}
|
||||||
userInfo.value = {}
|
userInfo.value = {}
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
post("organization/member/add", {data: memberInfo.value}).then((res) => {
|
post("organization/member/add", {data: form}).then((res) => {
|
||||||
onSubmit()
|
onSubmit()
|
||||||
memberInfo.value = {}
|
memberInfo.value = {}
|
||||||
})
|
})
|
||||||
|
|
@ -223,8 +227,13 @@ const options = Object.entries(depts).map(([key, value]) => {
|
||||||
});
|
});
|
||||||
const uploadRef = ref<any>('')
|
const uploadRef = ref<any>('')
|
||||||
const init = (id: any) => {
|
const init = (id: any) => {
|
||||||
|
memberInfo.value = {}
|
||||||
|
userInfo.value = {}
|
||||||
post("organization/member/getById", {id}).then((res: any) => {
|
post("organization/member/getById", {id}).then((res: any) => {
|
||||||
memberInfo.value = res
|
memberInfo.value = res.memberInfo
|
||||||
|
if(res.userInfo){
|
||||||
|
userInfo.value = res.userInfo
|
||||||
|
}
|
||||||
if(memberInfo.value.electronicSignature){
|
if(memberInfo.value.electronicSignature){
|
||||||
uploadRef.value?.getImageUrl(memberInfo.value.electronicSignature)
|
uploadRef.value?.getImageUrl(memberInfo.value.electronicSignature)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container-wrapper">
|
<div class="container-wrapper">
|
||||||
<div class="top">
|
<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>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<el-table :data="dataList" style="width: 100%" @row-click="rowClick">
|
<el-table :data="dataList" style="width: 100%" @row-click="rowClick">
|
||||||
|
|
@ -37,12 +37,12 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
||||||
import Mask from "@/components/common/Mask.vue";
|
import Mask from "@/components/common/Mask.vue";
|
||||||
import AddApply from "@/components/inventory/apply/AddApply.vue";
|
import AddApply from "@/components/inventory/apply/AddApply.vue";
|
||||||
import {onMounted, ref} from "vue";
|
import {onMounted, ref} from "vue";
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import DetailApply from "@/components/inventory/apply/DetailApply.vue";
|
import DetailApply from "@/components/inventory/apply/DetailApply.vue";
|
||||||
|
import {Plus} from "@element-plus/icons-vue";
|
||||||
|
|
||||||
const is_add = ref(false)
|
const is_add = ref(false)
|
||||||
const is_detail = ref(false)
|
const is_detail = ref(false)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<div class="container-wrapper">
|
<div class="container-wrapper">
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<el-dropdown>
|
<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>
|
</el-dropdown>
|
||||||
</div>
|
</div>
|
||||||
<div class="content_list">
|
<div class="content_list">
|
||||||
|
|
@ -63,6 +63,7 @@ import {useRoute} from "vue-router";
|
||||||
import AddOrder from "@/components/inventory/purchase/AddOrder.vue";
|
import AddOrder from "@/components/inventory/purchase/AddOrder.vue";
|
||||||
import Mask from "@/components/common/Mask.vue";
|
import Mask from "@/components/common/Mask.vue";
|
||||||
import EditOrder from "@/components/inventory/purchase/EditOrder.vue";
|
import EditOrder from "@/components/inventory/purchase/EditOrder.vue";
|
||||||
|
import {Plus} from "@element-plus/icons-vue";
|
||||||
|
|
||||||
let tableData = ref([])
|
let tableData = ref([])
|
||||||
let is_add = ref(false)
|
let is_add = ref(false)
|
||||||
|
|
|
||||||
|
|
@ -119,6 +119,10 @@ const options = Array.from({length: 10000}).map((_, idx) => ({
|
||||||
}))
|
}))
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
.container-wrapper{
|
||||||
|
padding:0 24px;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
.form {
|
.form {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 0 24px;
|
padding: 0 24px;
|
||||||
|
|
|
||||||
|
|
@ -1,80 +1,59 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container-wrapper">
|
<div class="container-wrapper">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<el-select-v2
|
<div class="title-search">
|
||||||
v-model="state"
|
<el-form
|
||||||
filterable
|
:model="search"
|
||||||
remote
|
label-width="auto"
|
||||||
ref="selectRef"
|
:inline="true"
|
||||||
:remote-method="querySearchAsync"
|
class="demo-form-inline"
|
||||||
:options="options"
|
|
||||||
placeholder="输入关键字搜索"
|
|
||||||
style="width: 200px"
|
|
||||||
>
|
>
|
||||||
<template #prefix>
|
<el-form-item>
|
||||||
<div class="prefix-wrapper">
|
<el-input v-model="search.itemSocialCode" placeholder="医保码编码" style="width: 200px"></el-input>
|
||||||
<el-icon>
|
</el-form-item>
|
||||||
<Search/>
|
<el-form-item>
|
||||||
</el-icon>
|
<el-input v-model="search.itemName" placeholder="项目名称" style="width: 200px"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
<div class="title-btn">
|
||||||
<template #header>
|
<el-button type="primary" @click="initData()">查询</el-button>
|
||||||
<div class="header">
|
<el-button type="primary" @click="search={}">重置</el-button>
|
||||||
<div class="text">药品</div>
|
<el-button type="primary" :icon="Plus" @click="isShow=true">新建项目</el-button>
|
||||||
<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>
|
|
||||||
<el-button type="primary" @click="openSetMenu">组套</el-button>
|
<el-button type="primary" @click="openSetMenu">组套</el-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="content_list">
|
<div class="table">
|
||||||
<el-table :data="tableData" style="width: 100%" @row-click="rowClick">
|
<el-scrollbar>
|
||||||
|
<el-table :data="tableData" @row-click="rowClick">
|
||||||
<el-table-column prop="itemSocialCode" label="医保码编码" width="200"
|
<el-table-column prop="itemSocialCode" label="医保码编码" width="200"
|
||||||
:show-overflow-tooltip="true"></el-table-column>
|
:show-overflow-tooltip="true"></el-table-column>
|
||||||
<el-table-column prop="itemName" label="项目名称"></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="unit" label="单位"></el-table-column>
|
||||||
<el-table-column prop="purchaseUnitPrice" 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="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-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>
|
||||||
</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>
|
<ItemEdit :id="id" ref="ItemEditRef" @close="initData()"></ItemEdit>
|
||||||
</Mask>
|
</Mask>
|
||||||
<SetMenu ref="setMenuRef"></SetMenu>
|
<SetMenu ref="setMenuRef"></SetMenu>
|
||||||
|
|
@ -85,6 +64,8 @@ import {post} from "@/utils/request.ts";
|
||||||
import Mask from "@/components/common/Mask.vue";
|
import Mask from "@/components/common/Mask.vue";
|
||||||
import ItemEdit from "@/components/settings/ItemEdit.vue";
|
import ItemEdit from "@/components/settings/ItemEdit.vue";
|
||||||
import SetMenu from "@/components/settings/SetMenu.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 state = ref([])
|
||||||
const options = ref([
|
const options = ref([
|
||||||
|
|
@ -145,10 +126,11 @@ const rowClick = ((row: any) => {
|
||||||
|
|
||||||
const tableData = ref<any>([])
|
const tableData = ref<any>([])
|
||||||
const initData = () => {
|
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
|
tableData.value = res.list
|
||||||
|
total.value = res.total_count
|
||||||
})
|
})
|
||||||
id.value=''
|
id.value = ''
|
||||||
isShow.value = false
|
isShow.value = false
|
||||||
}
|
}
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
|
|
@ -160,52 +142,56 @@ const openSetMenu = () => {
|
||||||
setMenuRef.value?.init();
|
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>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.title {
|
.container-wrapper {
|
||||||
|
padding: 24px;
|
||||||
|
background: #fff;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.title {
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 60px;
|
height: 60px;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
.search_box {
|
.title-search {
|
||||||
//background-color: rgb(148.6, 212.3, 117.1);
|
|
||||||
background-color: #fff;
|
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
}
|
|
||||||
|
|
||||||
.header {
|
|
||||||
padding: 10px;
|
|
||||||
font-size: 18px;
|
|
||||||
display: flex;
|
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 {
|
.el-popper.is-pure {
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.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>
|
</style>
|
||||||
|
|
@ -1,25 +1,73 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container-wrapper">
|
<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 :data="tableData" style="width: 100%" @row-click="rowClick">
|
||||||
<el-table-column prop="date" label="日期" width="180">
|
<el-table-column prop="date" label="日期" width="180">
|
||||||
<template #default="scope">
|
<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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="name" label="姓名" width="180"/>
|
|
||||||
<el-table-column prop="role" label="角色" width="180">
|
<el-table-column prop="role" label="角色" width="180">
|
||||||
<template #default="scope">
|
<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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="sectionId" label="科室">
|
<el-table-column prop="sectionId" label="科室">
|
||||||
<template #default="scope">
|
<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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="memo" label="备注"/>
|
<el-table-column prop="memo" label="备注"/>
|
||||||
</el-table>
|
</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>
|
||||||
<Mask :is-show="isShow" @close="isShow=false" :width="800" :height="600" title="成员管理">
|
<Mask :is-show="isShow" @close="isShow=false" :width="800" :height="600" title="成员管理">
|
||||||
<MemberEdit :id="id" ref="memberEditRef" @onSubmit="init()"></MemberEdit>
|
<MemberEdit :id="id" ref="memberEditRef" @onSubmit="init()"></MemberEdit>
|
||||||
</Mask>
|
</Mask>
|
||||||
|
|
@ -31,16 +79,17 @@ import Mask from '@/components/common/Mask.vue'
|
||||||
import MemberEdit from "@/components/settings/MemberEdit.vue";
|
import MemberEdit from "@/components/settings/MemberEdit.vue";
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import {formatDate} from "@/utils/dateUtils.ts";
|
import {formatDate} from "@/utils/dateUtils.ts";
|
||||||
|
import {Plus} from "@element-plus/icons-vue";
|
||||||
|
|
||||||
const id = ref<any>("")
|
const id = ref<any>("")
|
||||||
const isShow = ref(false)
|
const isShow = ref(false)
|
||||||
const tableData = ref<any>([]);
|
const tableData = ref<any>([]);
|
||||||
const memberEditRef = ref<any>(null)
|
const memberEditRef = ref<any>(null)
|
||||||
const rowClick = (row: any) => {
|
const rowClick = (row: any) => {
|
||||||
id.value = row.id
|
id.value = row.memberInfo.id
|
||||||
isShow.value = true
|
isShow.value = true
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
memberEditRef.value?.init(row.id)
|
memberEditRef.value?.init(id.value)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const roleList = [
|
const roleList = [
|
||||||
|
|
@ -79,7 +128,7 @@ const roleList = [
|
||||||
]
|
]
|
||||||
const init = (() => {
|
const init = (() => {
|
||||||
isShow.value = false
|
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
|
tableData.value = res.list
|
||||||
list()
|
list()
|
||||||
})
|
})
|
||||||
|
|
@ -88,7 +137,6 @@ const deleteDoctor = (row: any) => {
|
||||||
post('organization/member/list ', {id}).then((res: any) => {
|
post('organization/member/list ', {id}).then((res: any) => {
|
||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
console.log(row)
|
|
||||||
}
|
}
|
||||||
const sectionList = ref<any>([]);
|
const sectionList = ref<any>([]);
|
||||||
const list = () => {
|
const list = () => {
|
||||||
|
|
@ -99,8 +147,45 @@ const list = () => {
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
init()
|
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>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@use "@/assets/scss/base.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>
|
</style>
|
||||||
|
|
@ -1,6 +1,28 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="container-wrapper">
|
<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 :data="tableData" style="width: 100%" @row-click="rowClick">
|
||||||
<el-table-column prop="bedCnt" label="病床数量" width="80"/>
|
<el-table-column prop="bedCnt" label="病床数量" width="80"/>
|
||||||
<el-table-column prop="beginDate" label="开始日期" width="100"/>
|
<el-table-column prop="beginDate" label="开始日期" width="100"/>
|
||||||
|
|
@ -27,6 +49,19 @@
|
||||||
<el-table-column prop="tecnPsncnt" label="技术人员人数"/>
|
<el-table-column prop="tecnPsncnt" label="技术人员人数"/>
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</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">
|
<Mask :is-show="isShow" @close="init()" :height="570">
|
||||||
<SectionEdit :id="id" ref="sectionRef" @onSubmit="init()"></SectionEdit>
|
<SectionEdit :id="id" ref="sectionRef" @onSubmit="init()"></SectionEdit>
|
||||||
</Mask>
|
</Mask>
|
||||||
|
|
@ -38,6 +73,8 @@ import SectionEdit from "@/components/settings/SectionEdit.vue";
|
||||||
import {post} from "@/utils/request.ts";
|
import {post} from "@/utils/request.ts";
|
||||||
import deptsObj from '@/assets/config/directory/depts.json'
|
import deptsObj from '@/assets/config/directory/depts.json'
|
||||||
import {formatDate} from '@/utils/dateUtils.ts'
|
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 id = ref<any>("")
|
||||||
const isShow = ref(false)
|
const isShow = ref(false)
|
||||||
|
|
@ -67,18 +104,72 @@ const rowClick = (row: any) => {
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
init()
|
init()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
interface Dept {
|
||||||
|
[key: string]: string | { name: string; children: { [key: string]: string } };
|
||||||
|
}
|
||||||
|
|
||||||
const init = () => {
|
const init = () => {
|
||||||
isShow.value = false
|
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 = res.list
|
||||||
tableData.value.forEach((item: any) => {
|
tableData.value.forEach((item: any) => {
|
||||||
item.caty = deptsObj[item.caty]
|
let dept: Dept = deptsObj
|
||||||
|
item.caty = dept[item.caty]
|
||||||
console.log(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>
|
</script>
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
@use "@/assets/scss/base.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>
|
</style>
|
||||||
Loading…
Reference in New Issue