dev
This commit is contained in:
parent
b47c0ee658
commit
44d92e37da
|
|
@ -10,7 +10,7 @@
|
|||
"dependencies": {
|
||||
"axios": "^1.8.4",
|
||||
"echarts": "^5.6.0",
|
||||
"element-plus": "^2.9.7",
|
||||
"element-plus": "^2.9.9",
|
||||
"pinia": "^3.0.1",
|
||||
"vue": "^3.5.13",
|
||||
"vue-router": "^4.5.0"
|
||||
|
|
@ -2511,9 +2511,9 @@
|
|||
"license": "ISC"
|
||||
},
|
||||
"node_modules/element-plus": {
|
||||
"version": "2.9.7",
|
||||
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.9.7.tgz",
|
||||
"integrity": "sha512-6vjZh5SXBncLhUwJGTVKS5oDljfgGMh6J4zVTeAZK3YdMUN76FgpvHkwwFXocpJpMbii6rDYU3sgie64FyPerQ==",
|
||||
"version": "2.9.9",
|
||||
"resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.9.9.tgz",
|
||||
"integrity": "sha512-gN553+xr7ETkhJhH26YG0fERmd2BSCcQKslbtR8fats0Mc0yCtZOXr00bmoPOt5xGzhuRN1TWc9+f1pCaiA0/Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ctrl/tinycolor": "^3.4.1",
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
"dependencies": {
|
||||
"axios": "^1.8.4",
|
||||
"echarts": "^5.6.0",
|
||||
"element-plus": "^2.9.7",
|
||||
"element-plus": "^2.9.9",
|
||||
"pinia": "^3.0.1",
|
||||
"vue": "^3.5.13",
|
||||
"vue-router": "^4.5.0"
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
},
|
||||
"user": {
|
||||
"name": "智慧医疗诊所",
|
||||
"avatar": "avatar.png",
|
||||
"logo": "/static/images/default_logo.png",
|
||||
"version": "1.0.0"
|
||||
}
|
||||
}
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
<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>
|
||||
<div class="btn">
|
||||
<el-button :icon="Right" style="float: right;color: #fff" @click="logout" type="text">退出登录</el-button>
|
||||
<el-button :icon="Right" style="float: right;color: #fff" @click="logout" text>退出登录</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -22,8 +22,6 @@ _width.value = width == null ? 1200 : width;
|
|||
_height.value = height == null ? 800 : height;
|
||||
_close.value = close == null ? true : close;
|
||||
|
||||
console.log(_width, _height, _isShow);
|
||||
|
||||
watch(() => isShow, (newVal) => {
|
||||
_isShow.value = newVal == null ? false : newVal;
|
||||
});
|
||||
|
|
|
|||
|
|
@ -3,24 +3,33 @@ import Panel from "@/components/common/Panel.vue";
|
|||
import {post} from "@/utils/request.ts";
|
||||
import {onMounted, ref, defineModel} from "vue";
|
||||
import {formatDate} from "@/utils/dateUtils.ts";
|
||||
import {loadConfig} from "@/utils/config.ts";
|
||||
|
||||
const decryptedText = ref<any>({})
|
||||
const ciphertext = ref<any>('')
|
||||
const init = async () => {
|
||||
ciphertext.value = await post("common/auth/get");
|
||||
decryptedText.value = await post("common/auth/check");
|
||||
console.log(decryptedText.value)
|
||||
}
|
||||
onMounted(async () => {
|
||||
await init()
|
||||
if(localStorage.getItem('logoUrl')){
|
||||
getImageUrl(localStorage.getItem('logoUrl'))
|
||||
}
|
||||
})
|
||||
const userMessage = defineModel<any>()
|
||||
const imageUrl = ref<any>()
|
||||
const getImageUrl = (url: any) => {
|
||||
loadConfig().then(res => {
|
||||
imageUrl.value = res.base_url + 'file/getImage/' + url
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<Panel title="药房基本信息" class="info">
|
||||
<div class="info-content">
|
||||
<img class="image" src="/static/images/default_logo.png" alt="app">
|
||||
<img class="image" :src="imageUrl? imageUrl:userMessage.logo" alt="app">
|
||||
<div class="app_info-content-text">
|
||||
<el-tooltip
|
||||
effect="dark"
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
</span>
|
||||
<span class="price">¥{{item.selectedPrice || '0' }}元</span>
|
||||
<span class="delete">
|
||||
<el-button type="text" @click="deleteItem(item.id)">
|
||||
<el-button text @click="deleteItem(item.id)">
|
||||
<el-icon><CircleClose/></el-icon>
|
||||
</el-button>
|
||||
</span>
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
<span class="code">{{ item.itemSocialCode }}</span>
|
||||
<span class="price">¥{{ item.unitPrice }}元</span>
|
||||
<span class="delete">
|
||||
<el-button type="text" @click="deleteItem(item.id)">
|
||||
<el-button text @click="deleteItem(item.id)">
|
||||
<el-icon><CircleClose/></el-icon>
|
||||
</el-button>
|
||||
</span>
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@
|
|||
<el-form-item>
|
||||
<el-input v-model="form.purchaseUnitPrice">
|
||||
<template #append>
|
||||
<el-button type="text" @click="imageURL">¥</el-button>
|
||||
<el-button text @click="imageURL">¥</el-button>
|
||||
</template>
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
|
|
|||
|
|
@ -1,121 +1,139 @@
|
|||
<template>
|
||||
<el-form :model="userInfo" label-width="auto" :rules="rules" ref="ruleFormRef">
|
||||
<el-descriptions
|
||||
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="memberInfo.name"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">
|
||||
<el-form-item>
|
||||
<el-input v-model="memberInfo.gender"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="年龄">
|
||||
<el-form-item>
|
||||
<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="memberInfo.role"
|
||||
placeholder="选择角色"
|
||||
size="large"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in roleList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号">
|
||||
<el-form-item>
|
||||
<el-input v-model="memberInfo.idCardNumber"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="科室">
|
||||
<el-form-item>
|
||||
<el-select
|
||||
v-model="memberInfo.sectionId"
|
||||
placeholder="选择科室"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in sectionList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="医保人员代码">
|
||||
<el-form-item>
|
||||
<el-input v-model="memberInfo.socialMemberCode"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="备注">
|
||||
<el-form-item>
|
||||
<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)=>{memberInfo.electronicSignature=url}"></UpLoad>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<div class="demo-button">
|
||||
<el-button type="primary" @click="save()">保存</el-button>
|
||||
<el-button @click="onSubmit">取消</el-button>
|
||||
<el-button v-if="props.id" type="danger" @click="deleteDetail">删除</el-button>
|
||||
<Mask :is-show="isShow" @close="exit" :width="800" :height="600" title="成员管理" :show-footer="true">
|
||||
<div style="padding: 24px">
|
||||
<el-form :model="userInfo" label-width="auto" :rules="rules" ref="ruleFormRef">
|
||||
<el-descriptions
|
||||
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="memberInfo.name"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="性别">
|
||||
<el-form-item>
|
||||
<el-select
|
||||
v-model="memberInfo.gender"
|
||||
placeholder="选择性别"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in ['男', '女']"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="年龄">
|
||||
<el-form-item>
|
||||
<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="memberInfo.role"
|
||||
placeholder="选择角色"
|
||||
size="large"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in roleList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="身份证号">
|
||||
<el-form-item>
|
||||
<el-input v-model="memberInfo.idCardNumber"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="科室">
|
||||
<el-form-item>
|
||||
<el-select
|
||||
v-model="memberInfo.sectionId"
|
||||
placeholder="选择科室"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in sectionList"
|
||||
:key="item.id"
|
||||
:label="item.name"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="医保人员代码">
|
||||
<el-form-item>
|
||||
<el-input v-model="memberInfo.socialMemberCode"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="备注">
|
||||
<el-form-item>
|
||||
<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)=>{memberInfo.electronicSignature=url}"></UpLoad>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-form>
|
||||
</div>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="bottom">
|
||||
<el-button type="primary" @click="save()">保存</el-button>
|
||||
<el-button @click="exit">取消</el-button>
|
||||
<el-button v-if="props.id" type="danger" @click="deleteDetail">删除</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</Mask>
|
||||
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {defineProps, defineEmits, ref, onMounted} from 'vue'
|
||||
import {post} from "@/utils/request.ts";
|
||||
import {loadConfig} from "@/utils/config.ts";
|
||||
import depts from "@/assets/config/directory/depts.json"
|
||||
import UpLoad from "@/components/UpLoad.vue";
|
||||
import {ElMessage} from 'element-plus'
|
||||
import Mask from "@/components/common/Mask.vue";
|
||||
|
||||
const props = defineProps({
|
||||
id: {
|
||||
|
|
@ -170,77 +188,65 @@ const memberInfo = ref<any>({
|
|||
memo: '',// 备注
|
||||
password: "",
|
||||
})
|
||||
const userInfo= ref<any>({
|
||||
const userInfo = ref<any>({
|
||||
username: "", // 账号
|
||||
name: "",
|
||||
password: "",
|
||||
})
|
||||
const rules= {
|
||||
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 isShow = ref(false)
|
||||
const emit = defineEmits(['close'])
|
||||
const exit = () => {
|
||||
memberInfo.value = {}
|
||||
userInfo.value = {}
|
||||
isShow.value = false
|
||||
emit('close')
|
||||
}
|
||||
const ruleFormRef = ref<any>('')
|
||||
const save = () => {
|
||||
let form={
|
||||
memberInfo:memberInfo.value,
|
||||
userInfo:userInfo.value,
|
||||
let form = {
|
||||
memberInfo: memberInfo.value,
|
||||
userInfo: userInfo.value,
|
||||
}
|
||||
ruleFormRef.value.validate((valid: any) => {
|
||||
if (valid) {
|
||||
if (props.id) {
|
||||
post("organization/member/edit", {data: form}).then((res) => {
|
||||
onSubmit()
|
||||
memberInfo.value = {}
|
||||
userInfo.value = {}
|
||||
post("organization/member/edit", {data: form}).then(() => {
|
||||
exit()
|
||||
ElMessage.success('已修改')
|
||||
})
|
||||
} else {
|
||||
post("organization/member/add", {data: form}).then((res) => {
|
||||
onSubmit()
|
||||
memberInfo.value = {}
|
||||
post("organization/member/add", {data: form}).then(() => {
|
||||
exit()
|
||||
ElMessage.success('已添加')
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
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,
|
||||
})),
|
||||
};
|
||||
}
|
||||
});
|
||||
const uploadRef = ref<any>('')
|
||||
const init = (id: any) => {
|
||||
const getById = () => {
|
||||
memberInfo.value = {}
|
||||
userInfo.value = {}
|
||||
post("organization/member/getById", {id}).then((res: any) => {
|
||||
post("organization/member/getById", {id: props.id}).then((res: any) => {
|
||||
memberInfo.value = res.memberInfo
|
||||
if(res.userInfo){
|
||||
if (res.userInfo) {
|
||||
userInfo.value = res.userInfo
|
||||
}
|
||||
if(memberInfo.value.electronicSignature){
|
||||
uploadRef.value?.getImageUrl(memberInfo.value.electronicSignature)
|
||||
if (memberInfo.value.electronicSignature) {
|
||||
uploadRef.value?.getImageUrl(memberInfo.value.electronicSignature)
|
||||
}
|
||||
})
|
||||
}
|
||||
const uploadURL = ref('')
|
||||
const imageURL= ref('')
|
||||
onMounted(() => {
|
||||
loadConfig().then((res: any) => {
|
||||
uploadURL.value = res.base_url + "file/upload";
|
||||
|
|
@ -254,17 +260,25 @@ const list = () => {
|
|||
})
|
||||
}
|
||||
const deleteDetail = () => {
|
||||
post("organization/member/delete", {id: props.id}).then((res: any) => {
|
||||
onSubmit()
|
||||
post("organization/member/delete", {id: props.id}).then(() => {
|
||||
exit()
|
||||
ElMessage.error('已删除');
|
||||
})
|
||||
}
|
||||
const init = () => {
|
||||
isShow.value = true
|
||||
if(props.id){
|
||||
getById()
|
||||
}
|
||||
}
|
||||
defineExpose({init})
|
||||
</script>
|
||||
<style scoped>
|
||||
.demo-button {
|
||||
.bottom {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
margin-top: 20px;
|
||||
align-items: center;
|
||||
padding: 0 24px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,121 +1,130 @@
|
|||
<template>
|
||||
<el-form :model="form" label-width="auto">
|
||||
<el-descriptions
|
||||
:column="4"
|
||||
direction="vertical"
|
||||
border
|
||||
>
|
||||
<el-descriptions-item label="科室名称">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.name"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="科室类别">
|
||||
<el-form-item>
|
||||
<el-cascader :props="{ checkStrictly: true }" v-model="form.caty" :options="options"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="开始日期">
|
||||
<el-form-item>
|
||||
<div class="demo-date-picker">
|
||||
<el-date-picker
|
||||
v-model="form.beginDate"
|
||||
type="date"
|
||||
placeholder="请选择开始日期"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="结束日期">
|
||||
<el-form-item>
|
||||
<div class="demo-date-picker">
|
||||
<el-date-picker
|
||||
v-model="form.endDate"
|
||||
type="date"
|
||||
placeholder="请选择结束日期"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="成立时间">
|
||||
<el-form-item>
|
||||
<div class="demo-date-picker">
|
||||
<el-date-picker
|
||||
v-model="form.creationDate"
|
||||
type="date"
|
||||
placeholder="请选择成立时间"
|
||||
:default-value="new Date(2010, 9, 1)"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="简介">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.info" type="text" :show-word-limit="true" :clearable="true" :size="'large'"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="负责人姓名">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.resperName"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="负责人电话">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.resperTel"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="医疗服务范围">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.medServScp"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="批准床位数">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.bedCnt" type="number"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="医保认可床位数量">
|
||||
<el-form-item>
|
||||
<el-input v-model.number="form.socialBedCnt" type="number"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="医师人数">
|
||||
<el-form-item>
|
||||
<el-input v-model.number="form.drPsncnt" type="number"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="药师人数">
|
||||
<el-form-item>
|
||||
<el-input v-model.number="form.pharPsncnt" type="number"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="护士人数">
|
||||
<el-form-item>
|
||||
<el-input v-model.number="form.nursPsncnt" type="number"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="技术人员人数">
|
||||
<el-form-item>
|
||||
<el-input v-model.number="form.tecnPsncnt" type="number"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="备注">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.memo" type="text" :show-word-limit="true" :clearable="true" />
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<div class="demo-button">
|
||||
<el-button type="primary" @click="save()">保存</el-button>
|
||||
<el-button @click="onSubmit">取消</el-button>
|
||||
<el-button v-if="props.id" @click="deleteDetail" type="danger">删除</el-button>
|
||||
<Mask :is-show="isShow" @close="exit" :height="570" :title="props.id?'编辑':'新增'" :show-footer="true">
|
||||
<div style="padding: 24px">
|
||||
<el-form :model="form" label-width="auto">
|
||||
<el-descriptions
|
||||
:column="4"
|
||||
direction="vertical"
|
||||
border
|
||||
>
|
||||
<el-descriptions-item label="科室名称">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.name"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="科室类别">
|
||||
<el-form-item>
|
||||
<el-cascader :props="{ checkStrictly: true }" v-model="form.caty" :options="options"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="开始日期">
|
||||
<el-form-item>
|
||||
<div class="demo-date-picker">
|
||||
<el-date-picker
|
||||
v-model="form.beginDate"
|
||||
type="date"
|
||||
placeholder="请选择开始日期"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="结束日期">
|
||||
<el-form-item>
|
||||
<div class="demo-date-picker">
|
||||
<el-date-picker
|
||||
v-model="form.endDate"
|
||||
type="date"
|
||||
placeholder="请选择结束日期"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="成立时间">
|
||||
<el-form-item>
|
||||
<div class="demo-date-picker">
|
||||
<el-date-picker
|
||||
v-model="form.creationDate"
|
||||
type="date"
|
||||
placeholder="请选择成立时间"
|
||||
:default-value="new Date(2010, 9, 1)"
|
||||
/>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="简介">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.info" type="text" :show-word-limit="true" :clearable="true" :size="'large'"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="负责人姓名">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.resperName"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="负责人电话">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.resperTel"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="医疗服务范围">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.medServScp"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="批准床位数">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.bedCnt" type="number"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="医保认可床位数量">
|
||||
<el-form-item>
|
||||
<el-input v-model.number="form.socialBedCnt" type="number"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="医师人数">
|
||||
<el-form-item>
|
||||
<el-input v-model.number="form.drPsncnt" type="number"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="药师人数">
|
||||
<el-form-item>
|
||||
<el-input v-model.number="form.pharPsncnt" type="number"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="护士人数">
|
||||
<el-form-item>
|
||||
<el-input v-model.number="form.nursPsncnt" type="number"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="技术人员人数">
|
||||
<el-form-item>
|
||||
<el-input v-model.number="form.tecnPsncnt" type="number"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="备注">
|
||||
<el-form-item>
|
||||
<el-input v-model="form.memo" type="text" :show-word-limit="true" :clearable="true"/>
|
||||
</el-form-item>
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-form>
|
||||
</div>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<div class="bottom">
|
||||
<el-button type="primary" @click="save()">保存</el-button>
|
||||
<el-button @click="exit">取消</el-button>
|
||||
<el-button v-if="props.id" @click="deleteDetail" type="danger">删除</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</Mask>
|
||||
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {defineProps, onMounted, ref} from 'vue'
|
||||
import {post} from "@/utils/request.ts";
|
||||
import depts from "@/assets/config/directory/depts.json"
|
||||
import Mask from "@/components/common/Mask.vue";
|
||||
import {ElMessage} from "element-plus";
|
||||
|
||||
// do not use same name with ref
|
||||
const props = defineProps({
|
||||
|
|
@ -142,21 +151,29 @@ const form = ref<any>({
|
|||
tecnPsncnt: '',
|
||||
memo: '',
|
||||
})
|
||||
const isShow = ref<any>(false)
|
||||
const emit = defineEmits(['onSubmit'])
|
||||
const onSubmit = () => {
|
||||
const exit = () => {
|
||||
form.value = {}
|
||||
isShow.value = false
|
||||
emit('onSubmit')
|
||||
}
|
||||
|
||||
const openDialog= () => {
|
||||
isShow.value = true
|
||||
if (props.id) {
|
||||
init(props.id)
|
||||
}
|
||||
}
|
||||
const save = () => {
|
||||
if (props.id) {
|
||||
post("organization/section/edit", {data: form.value}).then((res) => {
|
||||
onSubmit()
|
||||
form.value = {}
|
||||
exit()
|
||||
ElMessage.success('已修改')
|
||||
})
|
||||
} else {
|
||||
post("organization/section/add", {data: form.value}).then((res) => {
|
||||
onSubmit()
|
||||
form.value = {}
|
||||
exit()
|
||||
ElMessage.success('已添加')
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -180,18 +197,20 @@ const init = (id: any) => {
|
|||
})
|
||||
|
||||
}
|
||||
const deleteDetail=()=>{
|
||||
post("organization/section/delete", {id:props.id}).then((res: any) => {
|
||||
onSubmit()
|
||||
const deleteDetail = () => {
|
||||
post("organization/section/delete", {id: props.id}).then((res: any) => {
|
||||
exit()
|
||||
ElMessage.error('已删除');
|
||||
})
|
||||
}
|
||||
defineExpose({init})
|
||||
defineExpose({openDialog})
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.demo-button{
|
||||
.bottom {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
margin-top: 20px;
|
||||
align-items: center;
|
||||
padding: 0 24px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,10 +1,15 @@
|
|||
import { ref, computed } from 'vue'
|
||||
|
||||
import { ref } from 'vue'
|
||||
import { defineStore } from 'pinia'
|
||||
|
||||
export const singStatus = defineStore('counter', () => {
|
||||
const singShow = ref<any>(null)
|
||||
function setSingShow(val:any){
|
||||
singShow.value = val
|
||||
}
|
||||
return { singShow,setSingShow}
|
||||
})
|
||||
export const useLogoStore = defineStore('logo', () => {
|
||||
const logoUrl = ref<string>("")
|
||||
function setLogoUrl(url: string) {
|
||||
logoUrl.value = url
|
||||
}
|
||||
function getLogoUrl() {
|
||||
return logoUrl.value
|
||||
}
|
||||
// 返回需要暴露的方法和变量
|
||||
return { logoUrl, setLogoUrl, getLogoUrl }
|
||||
})
|
||||
|
|
@ -44,12 +44,17 @@
|
|||
<el-input v-model="ruleForm.social_certUrl"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="16">
|
||||
<el-form-item label="数字签名" prop="social_cainfo">
|
||||
<el-input v-model="ruleForm.social_cainfo" type="textarea" :rows="5"/>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="上传logo">
|
||||
<UpLoad v-model="uploadURL" ref="uploadRef" @uploadSuccess="(url)=>{ruleForm.logourl=url}"></UpLoad>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-form-item label="数字签名" prop="social_cainfo">
|
||||
<el-input v-model="ruleForm.social_cainfo" type="textarea" :rows="5"/>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<div style="display: flex;justify-content: flex-end;padding: 0 24px">
|
||||
|
|
@ -64,6 +69,8 @@ import {onMounted, reactive, ref} from 'vue'
|
|||
import {ElMessage, type FormInstance, type FormRules} from 'element-plus'
|
||||
import {post} from "@/utils/request.ts";
|
||||
import Panel from "@/components/common/Panel.vue";
|
||||
import UpLoad from "@/components/UpLoad.vue";
|
||||
import {loadConfig} from "@/utils/config.ts";
|
||||
|
||||
const ruleFormRef = ref<FormInstance>()
|
||||
const ruleForm = reactive<any>({
|
||||
|
|
@ -74,12 +81,17 @@ const ruleForm = reactive<any>({
|
|||
social_insuplcAdmdvs: '',
|
||||
social_cainfo: '',
|
||||
social_url: "",
|
||||
social_certUrl: ""
|
||||
social_certUrl: "",
|
||||
logoUrl: "",
|
||||
})
|
||||
const uploadRef = ref<any>()
|
||||
onMounted(() => {
|
||||
loadConfig().then((res: any) => {
|
||||
uploadURL.value = res.base_url + "file/upload";
|
||||
})
|
||||
uploadRef.value?.getImageUrl(localStorage.getItem('logoUrl'))
|
||||
post("common/config/list", null).then((list: any) => {
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
console.log(list[i].k)
|
||||
ruleForm[list[i].k] = list[i].val
|
||||
}
|
||||
})
|
||||
|
|
@ -94,16 +106,16 @@ const rules = reactive<FormRules<any>>({
|
|||
social_url: {required: true, message: '医保接口不能为空', trigger: 'blur'},
|
||||
social_certUrl: {required: true, message: '电子平转增接口不能为空', trigger: 'blur'},
|
||||
})
|
||||
|
||||
const submitForm = async (formEl: FormInstance | undefined) => {
|
||||
if (!formEl) return
|
||||
await formEl.validate((valid, fields) => {
|
||||
if (valid) {
|
||||
post("common/config/edit", ruleForm).then((res: any) => {
|
||||
ElMessage.success("保存成功")
|
||||
if (ruleForm.logourl) {
|
||||
localStorage.setItem('logoUrl', ruleForm.logourl)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
console.log('error submit!', fields)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
@ -117,12 +129,16 @@ const options = Array.from({length: 10000}).map((_, idx) => ({
|
|||
value: `${idx + 1}`,
|
||||
label: `${idx + 1}`,
|
||||
}))
|
||||
//上传图片
|
||||
const uploadURL = ref<any>()
|
||||
|
||||
</script>
|
||||
<style scoped lang="scss">
|
||||
.container-wrapper{
|
||||
padding:0 24px;
|
||||
.container-wrapper {
|
||||
padding: 0 24px;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.form {
|
||||
width: 100%;
|
||||
padding: 0 24px;
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@
|
|||
<div class="title-btn">
|
||||
<el-button type="primary" @click="init()">查询</el-button>
|
||||
<el-button type="primary" @click="resetSearch">重置</el-button>
|
||||
<el-button type="primary" :icon="Plus" @click="isShow=true">新增</el-button>
|
||||
<el-button type="primary" :icon="Plus" @click="openDialog">新增</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -72,14 +72,11 @@
|
|||
/>
|
||||
</div>
|
||||
</div>
|
||||
<Mask :is-show="isShow" @close="isShow=false" :width="800" :height="600" title="成员管理">
|
||||
<MemberEdit :id="id" ref="memberEditRef" @onSubmit="init()"></MemberEdit>
|
||||
</Mask>
|
||||
<MemberEdit :id="id" ref="memberEditRef" @close="init()"></MemberEdit>
|
||||
</div>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {onMounted, ref, nextTick} from "vue"
|
||||
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";
|
||||
|
|
@ -91,9 +88,11 @@ const tableData = ref<any>([]);
|
|||
const memberEditRef = ref<any>(null)
|
||||
const rowClick = (row: any) => {
|
||||
id.value = row.memberInfo.id
|
||||
isShow.value = true
|
||||
openDialog()
|
||||
}
|
||||
const openDialog= () => {
|
||||
nextTick(() => {
|
||||
memberEditRef.value?.init(id.value)
|
||||
memberEditRef.value?.init()
|
||||
})
|
||||
}
|
||||
const roleList = [
|
||||
|
|
|
|||
|
|
@ -12,14 +12,15 @@
|
|||
<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-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="resetSearch">重置</el-button>
|
||||
<el-button type="primary" :icon="Plus" @click="isShow=true">新增</el-button>
|
||||
<el-button type="primary" :icon="Plus" @click="openDialog">新增</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table">
|
||||
|
|
@ -62,9 +63,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<Mask :is-show="isShow" @close="init()" :height="570" :title="id?'编辑':'新增'">
|
||||
<SectionEdit :id="id" ref="sectionRef" @onSubmit="init()"></SectionEdit>
|
||||
</Mask>
|
||||
<SectionEdit :id="id" ref="sectionRef" @onSubmit="init()"></SectionEdit>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {nextTick, onMounted, ref} from "vue"
|
||||
|
|
@ -77,28 +76,15 @@ import depts from "@/assets/config/directory/depts.json";
|
|||
import {Plus} from "@element-plus/icons-vue";
|
||||
|
||||
const id = ref<any>("")
|
||||
const isShow = ref(false)
|
||||
const ChildMenuList = ref([
|
||||
{
|
||||
name: '首页',
|
||||
path: '/settings/index',
|
||||
},
|
||||
{
|
||||
name: '科室',
|
||||
path: '/settings/section',
|
||||
},
|
||||
{
|
||||
name: '成员',
|
||||
path: '/settings/member',
|
||||
}
|
||||
])
|
||||
const tableData = ref<any>([])
|
||||
const sectionRef = ref<any>()
|
||||
const rowClick = (row: any) => {
|
||||
id.value = row.id
|
||||
isShow.value = true
|
||||
openDialog()
|
||||
}
|
||||
const openDialog = () => {
|
||||
nextTick(() => {
|
||||
sectionRef.value?.init(row.id)
|
||||
sectionRef.value?.openDialog()
|
||||
})
|
||||
}
|
||||
onMounted(() => {
|
||||
|
|
@ -110,7 +96,6 @@ interface Dept {
|
|||
}
|
||||
|
||||
const init = () => {
|
||||
isShow.value = false
|
||||
post('organization/section/list', {page: page.value, size: pageSize.value, ...search.value}).then((res: any) => {
|
||||
tableData.value = res.list
|
||||
tableData.value.forEach((item: any) => {
|
||||
|
|
@ -155,6 +140,7 @@ const resetSearch = () => {
|
|||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
|
||||
.title {
|
||||
height: 60px;
|
||||
display: flex;
|
||||
|
|
|
|||
Loading…
Reference in New Issue