修改用户信息界面 增加机构字典和科室字典
This commit is contained in:
parent
e0d05c12d6
commit
f1d586c0cf
54
src/api/system/department/index.ts
Normal file
54
src/api/system/department/index.ts
Normal file
@ -0,0 +1,54 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
// 科室管理 VO
|
||||
export interface DepartmentVO {
|
||||
id: string // 主键
|
||||
departmentName: string // 科室名称
|
||||
createPerson: string // 创建人
|
||||
createDate: Date // 创建时间
|
||||
departmentRemark: string // 科室备注
|
||||
deletePerson: string // 删除操作人
|
||||
deleteDate: Date // 删除时间
|
||||
departmentAddress: string // 科室具体位置
|
||||
orgId: string // 机构ID
|
||||
departmentCode: string // 科室代号:科室短号
|
||||
isDelete: string // 删除标记:1为删除
|
||||
}
|
||||
|
||||
// 科室管理 API
|
||||
export const DepartmentApi = {
|
||||
// 查询科室管理分页
|
||||
getDepartmentPage: async (params: any) => {
|
||||
return await request.get({ url: `/system/department/page`, params })
|
||||
},
|
||||
|
||||
// 查询科室管理详情
|
||||
getDepartment: async (id: number) => {
|
||||
return await request.get({ url: `/system/department/get?id=` + id })
|
||||
},
|
||||
|
||||
// 查询科室相关数据字典
|
||||
getDepartmentList: async () => {
|
||||
return await request.get({ url: `/system/department/getlist` })
|
||||
},
|
||||
|
||||
// 新增科室管理
|
||||
createDepartment: async (data: DepartmentVO) => {
|
||||
return await request.post({ url: `/system/department/create`, data })
|
||||
},
|
||||
|
||||
// 修改科室管理
|
||||
updateDepartment: async (data: DepartmentVO) => {
|
||||
return await request.put({ url: `/system/department/update`, data })
|
||||
},
|
||||
|
||||
// 删除科室管理
|
||||
deleteDepartment: async (id: number) => {
|
||||
return await request.delete({ url: `/system/department/delete?id=` + id })
|
||||
},
|
||||
|
||||
// 导出科室管理 Excel
|
||||
exportDepartment: async (params) => {
|
||||
return await request.download({ url: `/system/department/export-excel`, params })
|
||||
},
|
||||
}
|
@ -27,7 +27,11 @@ export const OrgApi = {
|
||||
getOrg: async (id: number) => {
|
||||
return await request.get({ url: `/org/org/get?id=` + id })
|
||||
},
|
||||
|
||||
// 查询机构管理字典
|
||||
getOrglist: async () => {
|
||||
return await request.get({ url: `/org/org/getlist` })
|
||||
},
|
||||
|
||||
// 新增机构管理
|
||||
createOrg: async (data: OrgVO) => {
|
||||
return await request.post({ url: `/org/org/create`, data })
|
||||
|
@ -15,6 +15,7 @@ export interface UserVO {
|
||||
remark: string
|
||||
loginDate: Date
|
||||
createTime: Date
|
||||
orgId:string
|
||||
}
|
||||
|
||||
// 查询用户管理列表
|
||||
|
@ -91,6 +91,7 @@ export default defineComponent({
|
||||
textColor="var(--left-menu-text-color)"
|
||||
activeTextColor="var(--left-menu-text-active-color)"
|
||||
onSelect={menuSelect}
|
||||
|
||||
>
|
||||
{{
|
||||
default: () => {
|
||||
|
@ -8,16 +8,16 @@
|
||||
:inline="true"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="登记来源" prop="regSource">
|
||||
<el-form-item label="登记来源" prop="regSource">
|
||||
<el-select
|
||||
v-model="queryParams.regSource"
|
||||
placeholder="请选择来源"
|
||||
clearable
|
||||
class="!w-200px"
|
||||
>
|
||||
<el-option label="门诊" value="门诊" />
|
||||
<el-option label="住院" value="住院" />
|
||||
<el-option label="体检" value="体检" />
|
||||
<el-option label="门诊" value="门诊" />
|
||||
<el-option label="住院" value="住院" />
|
||||
<el-option label="体检" value="体检" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
@ -63,7 +63,7 @@
|
||||
class="!w-150px"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
<el-form-item label="检查单号" prop="examId">
|
||||
<el-input
|
||||
v-model="queryParams.examId"
|
||||
@ -73,10 +73,8 @@
|
||||
class="!w-150px"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
|
||||
<!-- <el-form-item label="检查日期" prop="examDate">
|
||||
|
||||
<!-- <el-form-item label="检查日期" prop="examDate">
|
||||
<el-date-picker
|
||||
v-model="queryParams.examDate"
|
||||
value-format="YYYY-MM-DD HH:mm:ss"
|
||||
@ -87,7 +85,7 @@
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item> -->
|
||||
<!-- <el-form-item label="检查项目名称" prop="examItemName">
|
||||
<!-- <el-form-item label="检查项目名称" prop="examItemName">
|
||||
<el-input
|
||||
v-model="queryParams.examItemName"
|
||||
placeholder="请输入检查项目名称"
|
||||
@ -103,33 +101,29 @@
|
||||
clearable
|
||||
class="!w-200px"
|
||||
>
|
||||
<el-option label="未分检" value="未分检" />
|
||||
<el-option label="未检查" value="未检查" />
|
||||
<el-option label="已检查" value="已检查" />
|
||||
<el-option label="已放弃" value="已放弃" />
|
||||
<el-option label="未分检" value="未分检" />
|
||||
<el-option label="未检查" value="未检查" />
|
||||
<el-option label="已检查" value="已检查" />
|
||||
<el-option label="已放弃" value="已放弃" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="执行科室" prop="deviceDepartment">
|
||||
<el-select
|
||||
v-model="queryParams.deviceDepartment"
|
||||
v-model="queryParams.deviceDepartment"
|
||||
placeholder="请选择执行科室"
|
||||
clearable
|
||||
class="!w-200px"
|
||||
>
|
||||
<el-option label="影像科" value="影像科" />
|
||||
|
||||
<el-option v-for="item in fordepartementData" :key="item.id" :label="item.departmentName" :value="item.departmentName" />
|
||||
<!-- <el-option label="影像科" value="影像科" /> -->
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||
<!-- <el-button
|
||||
<!-- <el-button
|
||||
type="primary"
|
||||
plain
|
||||
@click="openForm('create')"
|
||||
@ -155,20 +149,29 @@
|
||||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 批量分检
|
||||
</el-button>
|
||||
<el-button @click="resetQuery" type="primary"
|
||||
><Icon icon="ep:refresh" class="mr-5px" /> 同步</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" @selection-change="handleSelectionChange" >
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
:data="list"
|
||||
:stripe="true"
|
||||
:show-overflow-tooltip="true"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column label="主键" align="center" prop="id" v-if="false"/>
|
||||
<el-table-column label="主键" align="center" prop="id" v-if="false" />
|
||||
<el-table-column label="登记单号" align="center" prop="regId" width="100px" />
|
||||
<el-table-column label="登记来源" align="center" prop="regSource" width="100px"/>
|
||||
<el-table-column label="登记来源" align="center" prop="regSource" width="100px" />
|
||||
<el-table-column label="检查单号" align="center" prop="examId" />
|
||||
<el-table-column label="患者姓名" align="center" prop="pname" width="100px"/>
|
||||
<el-table-column label="性别" align="center" prop="gender" width="100px"/>
|
||||
<el-table-column label="患者姓名" align="center" prop="pname" width="100px" />
|
||||
<el-table-column label="性别" align="center" prop="gender" width="100px" />
|
||||
<el-table-column
|
||||
label="出生日期"
|
||||
align="center"
|
||||
@ -184,10 +187,10 @@
|
||||
:formatter="dateFormatter"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column label="检查项目名称" align="center" prop="examItemName" width="140px"/>
|
||||
<el-table-column label="检查设备ID" align="center" prop="deviceId" v-if="false"/>
|
||||
<el-table-column label="检查设备" align="center" prop="deviceName" width="130px"/>
|
||||
<el-table-column label="联系电话" align="center" prop="contactTel" />
|
||||
<el-table-column label="检查项目名称" align="center" prop="examItemName" width="140px" />
|
||||
<el-table-column label="检查设备ID" align="center" prop="deviceId" v-if="false" />
|
||||
<el-table-column label="检查设备" align="center" prop="deviceName" width="130px" />
|
||||
<el-table-column label="联系电话" align="center" prop="contactTel" />
|
||||
<el-table-column
|
||||
label="登记时间"
|
||||
align="center"
|
||||
@ -202,9 +205,15 @@
|
||||
:formatter="dateFormatter"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column label="开单医生" align="center" prop="billgDoctor" width="100px"/>
|
||||
<el-table-column label="开单医生" align="center" prop="billgDoctor" width="100px" />
|
||||
<el-table-column label="检查状态" align="center" prop="examStatus" width="100px" />
|
||||
<el-table-column label="开单医生科室" align="center" prop="billDoctorDepartment" :label-class-name="'no-wrap'" v-if="false" />
|
||||
<el-table-column
|
||||
label="开单医生科室"
|
||||
align="center"
|
||||
prop="billDoctorDepartment"
|
||||
:label-class-name="'no-wrap'"
|
||||
v-if="false"
|
||||
/>
|
||||
<el-table-column
|
||||
label="此条记录的创建时间"
|
||||
align="center"
|
||||
@ -213,15 +222,17 @@
|
||||
width="180px"
|
||||
v-if="false"
|
||||
/>
|
||||
<el-table-column label="检查项目代码" align="center" prop="examItemCode" v-if="false"/>
|
||||
<el-table-column label="检查项目代码" align="center" prop="examItemCode" v-if="false" />
|
||||
<el-table-column label="机构ID" align="center" prop="orgId" v-if="false" />
|
||||
<el-table-column label="分检医生" align="center" prop="sortDoctor" width="100px"/>
|
||||
<el-table-column label="分检医生" align="center" prop="sortDoctor" width="100px" />
|
||||
<el-table-column label="操作" align="center">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="openForm('分检', scope.row.pname,scope.row.orgId,scope.row.id,scope.row.examStatus)"
|
||||
@click="
|
||||
openForm('分检', scope.row.pname, scope.row.orgId, scope.row.id, scope.row.examStatus)
|
||||
"
|
||||
v-hasPermi="['applyregistration:applyform:update']"
|
||||
>
|
||||
分检
|
||||
@ -229,19 +240,13 @@
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.id,scope.row.examStatus)"
|
||||
@click="handleDelete(scope.row.id, scope.row.examStatus)"
|
||||
v-hasPermi="['applyregistration:applyform:delete']"
|
||||
>
|
||||
作废
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="openPrintForm(scope.row.id)"
|
||||
>
|
||||
导引单
|
||||
</el-button>
|
||||
|
||||
<el-button link type="danger" @click="openPrintForm(scope.row.id)"> 导引单 </el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@ -263,22 +268,23 @@
|
||||
<script setup lang="ts">
|
||||
import { dateFormatter } from '@/utils/formatTime'
|
||||
import download from '@/utils/download'
|
||||
import { ApplyformApi, ApplyformVO,UPFJApplyformVO } from '@/api/applyregistration/applyform'
|
||||
import { ApplyformApi, ApplyformVO, UPFJApplyformVO } from '@/api/applyregistration/applyform'
|
||||
import ApplyformForm from './ApplyformForm.vue'
|
||||
import { fa } from 'element-plus/es/locale';
|
||||
import GuidePrint from './GuidePrint.vue';
|
||||
import { getUserProfile, ProfileVO } from '@/api/system/user/profile'
|
||||
import { fa } from 'element-plus/es/locale'
|
||||
import GuidePrint from './GuidePrint.vue'
|
||||
import { getUserProfile, ProfileVO } from '@/api/system/user/profile'
|
||||
import { DepartmentApi, DepartmentVO } from '@/api/system/department'
|
||||
|
||||
/** 申请登记记录 列表 */
|
||||
defineOptions({ name: 'Applyform' })
|
||||
|
||||
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref<ApplyformVO[]>([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
//科室数据
|
||||
const fordepartementData = ref<any[]>([])
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
@ -302,12 +308,12 @@ const queryParams = reactive({
|
||||
examItemCode: undefined,
|
||||
orgId: undefined,
|
||||
sortDoctor: undefined,
|
||||
deviceDepartment:undefined,
|
||||
departmentCode:undefined,
|
||||
deviceDepartment: undefined,
|
||||
departmentCode: undefined
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
const Profilevo = ref<ProfileVO>({} as ProfileVO); //当前登录人信息
|
||||
const Profilevo = ref<ProfileVO>({} as ProfileVO) //当前登录人信息
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
@ -315,10 +321,11 @@ const getList = async () => {
|
||||
const data = await ApplyformApi.getApplyformPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
//科室字典
|
||||
fordepartementData.value=await DepartmentApi.getDepartmentList()
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
@ -335,90 +342,81 @@ const resetQuery = () => {
|
||||
|
||||
/** 添加/修改操作 */
|
||||
const formRef = ref()
|
||||
const openForm = (type: string,pname:string ,orgid: string,ID:number,status:string) => {
|
||||
if(status=="未分检")
|
||||
{
|
||||
formRef.value.open(type, orgid,pname,ID,Profilevo.value.username,[])
|
||||
const openForm = (type: string, pname: string, orgid: string, ID: number, status: string) => {
|
||||
if (status == '未分检') {
|
||||
formRef.value.open(type, orgid, pname, ID, Profilevo.value.username, [])
|
||||
} else {
|
||||
message.warning('只有未分检才可以进行分检操作')
|
||||
}
|
||||
else
|
||||
{
|
||||
message.warning("只有未分检才可以进行分检操作")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/** 打印导引单 */
|
||||
const Print = ref();
|
||||
const openPrintForm = (ID:number) => {
|
||||
|
||||
const Print = ref()
|
||||
const openPrintForm = (ID: number) => {
|
||||
Print.value.open(ID)
|
||||
}
|
||||
|
||||
//批量相关
|
||||
const selectedRows = ref<any[]>([]); // 存储当前选中的行
|
||||
const previouslySelectedRows = ref<any[]>([]); // 存储先前选中的行
|
||||
const selectedRows = ref<any[]>([]) // 存储当前选中的行
|
||||
const previouslySelectedRows = ref<any[]>([]) // 存储先前选中的行
|
||||
const handleSelectionChange = (selection) => {
|
||||
// 更新当前选中的行
|
||||
selectedRows.value = selection;
|
||||
// 更新当前选中的行
|
||||
selectedRows.value = selection
|
||||
|
||||
// 检查哪些行被取消勾选
|
||||
const unselectedRows = previouslySelectedRows.value.filter(prevRow => !selection.some(newRow => newRow.id === prevRow.id));
|
||||
// 检查哪些行被取消勾选
|
||||
const unselectedRows = previouslySelectedRows.value.filter(
|
||||
(prevRow) => !selection.some((newRow) => newRow.id === prevRow.id)
|
||||
)
|
||||
|
||||
// 输出取消勾选的行
|
||||
unselectedRows.forEach(row => {
|
||||
console.log(`Row ${row.id} was unselected.`);
|
||||
// 这里可以添加你的逻辑来处理取消勾选的行
|
||||
});
|
||||
// 输出取消勾选的行
|
||||
unselectedRows.forEach((row) => {
|
||||
console.log(`Row ${row.id} was unselected.`)
|
||||
// 这里可以添加你的逻辑来处理取消勾选的行
|
||||
})
|
||||
|
||||
// 更新先前选中的行为当前选中的行,以备下次比较
|
||||
previouslySelectedRows.value = selection;
|
||||
console.log(previouslySelectedRows.value)
|
||||
// 更新先前选中的行为当前选中的行,以备下次比较
|
||||
previouslySelectedRows.value = selection
|
||||
console.log(previouslySelectedRows.value)
|
||||
}
|
||||
|
||||
/** 批量分检按钮操作 */
|
||||
const batchhandle = async (username:string) => {
|
||||
const batchhandle = async (username: string) => {
|
||||
try {
|
||||
let orgid:string=""
|
||||
let orgid: string = ''
|
||||
|
||||
previouslySelectedRows.value.forEach(row => {
|
||||
|
||||
if(row.examStatus!="未分检")
|
||||
{
|
||||
message.warning("存在已经分检数据,重新选择")
|
||||
previouslySelectedRows.value.forEach((row) => {
|
||||
if (row.examStatus != '未分检') {
|
||||
message.warning('存在已经分检数据,重新选择')
|
||||
throw new Error('End Loop')
|
||||
}
|
||||
orgid=row.orgId
|
||||
|
||||
});
|
||||
|
||||
console.log(`orgid ${orgid} was unselected.`);
|
||||
console.log(`username ${username} was unselected.`);
|
||||
formRef.value.open("批量", orgid,'',0,username,previouslySelectedRows.value)
|
||||
|
||||
} catch {}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/** 作废按钮操作 */
|
||||
const handleDelete = async (id: number,status:string) => {
|
||||
try {
|
||||
|
||||
if(status=="已检查")
|
||||
{
|
||||
message.warning("已进行检查,不允许进行作废操作")
|
||||
orgid = row.orgId
|
||||
})
|
||||
if (previouslySelectedRows.value.length <= 0) {
|
||||
message.warning('请选择需要分检的患者')
|
||||
return
|
||||
}
|
||||
if(status=="已放弃")
|
||||
{
|
||||
message.warning("已作废,无需再次作废")
|
||||
console.log(`orgid ${orgid} was unselected.`)
|
||||
console.log(`username ${username} was unselected.`)
|
||||
formRef.value.open('批量', orgid, '', 0, username, previouslySelectedRows.value)
|
||||
} catch {}
|
||||
}
|
||||
|
||||
/** 作废按钮操作 */
|
||||
const handleDelete = async (id: number, status: string) => {
|
||||
try {
|
||||
if (status == '已检查') {
|
||||
message.warning('已进行检查,不允许进行作废操作')
|
||||
return
|
||||
}
|
||||
if (status == '已放弃') {
|
||||
message.warning('已作废,无需再次作废')
|
||||
return
|
||||
}
|
||||
// 作废的二次确认
|
||||
await message.delConfirm("是否作废选择内容")
|
||||
await message.delConfirm('是否作废选择内容')
|
||||
// 发起作废
|
||||
await ApplyformApi.cancelApplyform(id)
|
||||
message.success("作废成功")
|
||||
message.success('作废成功')
|
||||
// 刷新列表
|
||||
await getList()
|
||||
} catch {}
|
||||
@ -440,9 +438,7 @@ const handleExport = async () => {
|
||||
}
|
||||
//获取当前登录人信息
|
||||
const getlogininfo = async () => {
|
||||
|
||||
Profilevo.value= await getUserProfile()
|
||||
|
||||
Profilevo.value = await getUserProfile()
|
||||
}
|
||||
|
||||
/** 初始化 **/
|
||||
@ -450,4 +446,4 @@ onMounted(() => {
|
||||
getlogininfo()
|
||||
getList()
|
||||
})
|
||||
</script>
|
||||
</script>
|
||||
|
@ -46,8 +46,15 @@
|
||||
<el-form-item label="第三方软件的制造商" prop="softwareManufacturer" label-width="160px">
|
||||
<el-input v-model="formData.softwareManufacturer" placeholder="请输入第三方软件的制造商" />
|
||||
</el-form-item>
|
||||
<el-form-item label="机构编码" prop="orgId" label-width="160px">
|
||||
<el-input v-model="formData.orgId" placeholder="请输入机构编码" />
|
||||
<el-form-item label="机构名称" prop="orgId" label-width="160px">
|
||||
<el-select v-model="formData.orgId" placeholder="请选择机构" clearable>
|
||||
<el-option
|
||||
v-for="item in fororglistData"
|
||||
:key="item.orgID"
|
||||
:label="item.orgName"
|
||||
:value="item.orgID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注信息" prop="remark" label-width="160px">
|
||||
<el-input v-model="formData.remark" placeholder="请输入备注信息" />
|
||||
@ -61,6 +68,7 @@
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { ApiconfigApi, ApiconfigVO } from '@/api/system/apiconfig'
|
||||
import { OrgApi } from '@/api/system/org'
|
||||
|
||||
/** 接口配置 表单 */
|
||||
defineOptions({ name: 'ApiconfigForm' })
|
||||
@ -68,6 +76,8 @@ defineOptions({ name: 'ApiconfigForm' })
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
//机构数据
|
||||
const fororglistData = ref<any[]>([])
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
@ -102,6 +112,8 @@ const open = async (type: string, id?: number) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = t('action.' + type)
|
||||
formType.value = type
|
||||
// 获取机构字典数据
|
||||
fororglistData.value = await OrgApi.getOrglist()
|
||||
resetForm()
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
@ -126,17 +138,14 @@ const submitForm = async () => {
|
||||
try {
|
||||
const data = formData.value as unknown as ApiconfigVO
|
||||
if (formType.value === 'create') {
|
||||
re.value = await ApiconfigApi.createApiconfig(data)
|
||||
re.value = await ApiconfigApi.createApiconfig(data)
|
||||
|
||||
if (re.value==='Api代码重复') {
|
||||
if (re.value === 'Api代码重复') {
|
||||
message.error(re.value)
|
||||
return
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
message.success(t('common.createSuccess'))
|
||||
}
|
||||
|
||||
} else {
|
||||
await ApiconfigApi.updateApiconfig(data)
|
||||
message.success(t('common.updateSuccess'))
|
||||
|
143
src/views/system/department/DepartmentForm.vue
Normal file
143
src/views/system/department/DepartmentForm.vue
Normal file
@ -0,0 +1,143 @@
|
||||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible">
|
||||
<el-form
|
||||
ref="formRef"
|
||||
:model="formData"
|
||||
:rules="formRules"
|
||||
label-width="100px"
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-form-item label="科室名称" prop="departmentName">
|
||||
<el-input v-model="formData.departmentName" placeholder="请输入科室名称" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="科室备注" prop="departmentRemark">
|
||||
<el-input v-model="formData.departmentRemark" placeholder="请输入科室备注" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="科室具体位置" prop="departmentAddress">
|
||||
<el-input v-model="formData.departmentAddress" placeholder="请输入科室具体位置" />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="科室代号" prop="departmentCode">
|
||||
<el-input v-model="formData.departmentCode" placeholder="请输入科室代号" />
|
||||
</el-form-item>
|
||||
<el-form-item label="机构名称" prop="orgId">
|
||||
<el-select v-model="formData.orgId" placeholder="请选择机构" clearable>
|
||||
<el-option
|
||||
v-for="item in fororglistData"
|
||||
:key="item.orgID"
|
||||
:label="item.orgName"
|
||||
:value="item.orgID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="submitForm" type="primary" :disabled="formLoading">确 定</el-button>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
</template>
|
||||
</Dialog>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { DepartmentApi, DepartmentVO } from '@/api/system/department'
|
||||
import { OrgApi } from '@/api/system/org'
|
||||
|
||||
/** 科室管理 表单 */
|
||||
defineOptions({ name: 'DepartmentForm' })
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
//机构数据
|
||||
const fororglistData = ref<any[]>([])
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||
const formData = ref({
|
||||
id: undefined,
|
||||
departmentName: undefined,
|
||||
createPerson: undefined,
|
||||
createDate: undefined,
|
||||
departmentRemark: undefined,
|
||||
deletePerson: undefined,
|
||||
deleteDate: undefined,
|
||||
departmentAddress: undefined,
|
||||
orgId: undefined,
|
||||
departmentCode: undefined,
|
||||
isDelete: undefined
|
||||
})
|
||||
const formRules = reactive({
|
||||
departmentName: [{ required: true, message: '请输入科室名称', trigger: 'blur' }],
|
||||
orgId: [{ required: true, message: '请选择机构', trigger: 'blur' }],
|
||||
departmentCode: [{ required: true, message: '请输入科室代号', trigger: 'blur' }]
|
||||
})
|
||||
const formRef = ref() // 表单 Ref
|
||||
//当前登录人
|
||||
const name = ref()
|
||||
|
||||
/** 打开弹窗 */
|
||||
const open = async (type: string, username: string, id?: number) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = t('action.' + type)
|
||||
formType.value = type
|
||||
name.value = username
|
||||
// 获取机构字典数据
|
||||
fororglistData.value = await OrgApi.getOrglist()
|
||||
resetForm()
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
formLoading.value = true
|
||||
try {
|
||||
formData.value = await DepartmentApi.getDepartment(id)
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||
|
||||
/** 提交表单 */
|
||||
const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调
|
||||
const submitForm = async () => {
|
||||
// 校验表单
|
||||
await formRef.value.validate()
|
||||
// 提交请求
|
||||
formLoading.value = true
|
||||
try {
|
||||
formData.value.createPerson = name.value
|
||||
const data = formData.value as unknown as DepartmentVO
|
||||
if (formType.value === 'create') {
|
||||
await DepartmentApi.createDepartment(data)
|
||||
message.success(t('common.createSuccess'))
|
||||
} else {
|
||||
await DepartmentApi.updateDepartment(data)
|
||||
message.success(t('common.updateSuccess'))
|
||||
}
|
||||
dialogVisible.value = false
|
||||
// 发送操作成功的事件
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
formData.value = {
|
||||
id: undefined,
|
||||
departmentName: undefined,
|
||||
createPerson: undefined,
|
||||
createDate: undefined,
|
||||
departmentRemark: undefined,
|
||||
deletePerson: undefined,
|
||||
deleteDate: undefined,
|
||||
departmentAddress: undefined,
|
||||
orgId: undefined,
|
||||
departmentCode: undefined,
|
||||
isDelete: undefined
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
</script>
|
197
src/views/system/department/index.vue
Normal file
197
src/views/system/department/index.vue
Normal file
@ -0,0 +1,197 @@
|
||||
<template>
|
||||
<ContentWrap>
|
||||
<!-- 搜索工作栏 -->
|
||||
<el-form
|
||||
class="-mb-15px"
|
||||
:model="queryParams"
|
||||
ref="queryFormRef"
|
||||
:inline="true"
|
||||
label-width="68px"
|
||||
>
|
||||
<el-form-item label="科室名称" prop="departmentName">
|
||||
<el-input
|
||||
v-model="queryParams.departmentName"
|
||||
placeholder="请输入科室名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
class="!w-240px"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item>
|
||||
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
|
||||
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
@click="openForm('create',Profilevo.username)"
|
||||
v-hasPermi="['system:department:create']"
|
||||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||
</el-button>
|
||||
<el-button
|
||||
type="success"
|
||||
plain
|
||||
@click="handleExport"
|
||||
:loading="exportLoading"
|
||||
v-hasPermi="['system:department:export']"
|
||||
>
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 列表 -->
|
||||
<ContentWrap>
|
||||
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true">
|
||||
<el-table-column label="主键" align="center" prop="id" v-if="false"/>
|
||||
<el-table-column label="科室名称" align="center" prop="departmentName" />
|
||||
<el-table-column label="创建人" align="center" prop="createPerson" />
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
align="center"
|
||||
prop="createDate"
|
||||
:formatter="dateFormatter"
|
||||
width="180px"
|
||||
/>
|
||||
<el-table-column label="科室备注" align="center" prop="departmentRemark" />
|
||||
<el-table-column label="删除操作人" align="center" prop="deletePerson" v-if="false"/>
|
||||
<el-table-column
|
||||
label="删除时间"
|
||||
align="center"
|
||||
prop="deleteDate"
|
||||
:formatter="dateFormatter"
|
||||
width="180px"
|
||||
v-if="false"
|
||||
/>
|
||||
<el-table-column label="科室具体位置" align="center" prop="departmentAddress" />
|
||||
<el-table-column label="机构编码" align="center" prop="orgId" />
|
||||
<el-table-column label="科室代号" align="center" prop="departmentCode" />
|
||||
<el-table-column label="删除标记:1为删除" align="center" prop="isDelete" v-if="false"/>
|
||||
<el-table-column label="操作" align="center">
|
||||
<template #default="scope">
|
||||
<el-button
|
||||
link
|
||||
type="primary"
|
||||
@click="openForm('update',Profilevo.username, scope.row.id)"
|
||||
v-hasPermi="['system:department:update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
<el-button
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.id)"
|
||||
v-hasPermi="['system:department:delete']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页 -->
|
||||
<Pagination
|
||||
:total="total"
|
||||
v-model:page="queryParams.pageNo"
|
||||
v-model:limit="queryParams.pageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</ContentWrap>
|
||||
|
||||
<!-- 表单弹窗:添加/修改 -->
|
||||
<DepartmentForm ref="formRef" @success="getList" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { dateFormatter } from '@/utils/formatTime'
|
||||
import download from '@/utils/download'
|
||||
import { DepartmentApi, DepartmentVO } from '@/api/system/department'
|
||||
import DepartmentForm from './DepartmentForm.vue'
|
||||
import { getUserProfile, ProfileVO } from '@/api/system/user/profile'
|
||||
/** 科室管理 列表 */
|
||||
defineOptions({ name: 'Department' })
|
||||
|
||||
const message = useMessage() // 消息弹窗
|
||||
const { t } = useI18n() // 国际化
|
||||
//当前登录人信息
|
||||
const Profilevo = ref<ProfileVO>({} as ProfileVO)
|
||||
const loading = ref(true) // 列表的加载中
|
||||
const list = ref<DepartmentVO[]>([]) // 列表的数据
|
||||
const total = ref(0) // 列表的总页数
|
||||
const queryParams = reactive({
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
departmentName: undefined,
|
||||
orgId: undefined,
|
||||
})
|
||||
const queryFormRef = ref() // 搜索的表单
|
||||
const exportLoading = ref(false) // 导出的加载中
|
||||
|
||||
/** 查询列表 */
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
try {
|
||||
const data = await DepartmentApi.getDepartmentPage(queryParams)
|
||||
list.value = data.list
|
||||
total.value = data.total
|
||||
} finally {
|
||||
loading.value = false
|
||||
}
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
const handleQuery = () => {
|
||||
queryParams.pageNo = 1
|
||||
getList()
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
const resetQuery = () => {
|
||||
queryFormRef.value.resetFields()
|
||||
handleQuery()
|
||||
}
|
||||
|
||||
/** 添加/修改操作 */
|
||||
const formRef = ref()
|
||||
const openForm = (type: string, username:string, id?: number) => {
|
||||
formRef.value.open(type,username, id)
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
const handleDelete = async (id: number) => {
|
||||
try {
|
||||
// 删除的二次确认
|
||||
await message.delConfirm()
|
||||
// 发起删除
|
||||
await DepartmentApi.deleteDepartment(id)
|
||||
message.success(t('common.delSuccess'))
|
||||
// 刷新列表
|
||||
await getList()
|
||||
} catch {}
|
||||
}
|
||||
|
||||
/** 导出按钮操作 */
|
||||
const handleExport = async () => {
|
||||
try {
|
||||
// 导出的二次确认
|
||||
await message.exportConfirm()
|
||||
// 发起导出
|
||||
exportLoading.value = true
|
||||
const data = await DepartmentApi.exportDepartment(queryParams)
|
||||
download.excel(data, '科室管理.xls')
|
||||
} catch {
|
||||
} finally {
|
||||
exportLoading.value = false
|
||||
}
|
||||
}
|
||||
//获取当前登录人信息
|
||||
const getlogininfo = async () => {
|
||||
Profilevo.value = await getUserProfile()
|
||||
}
|
||||
/** 初始化 **/
|
||||
onMounted(() => {
|
||||
getlogininfo()
|
||||
getList()
|
||||
})
|
||||
</script>
|
@ -69,8 +69,14 @@
|
||||
<el-option label="主任医师" value="主任医师" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="机构编号" prop="orgId">
|
||||
<el-input v-model="formData.orgId" placeholder="请输入机构ID" />
|
||||
<el-form-item label="机构名称" prop="orgId">
|
||||
<el-select
|
||||
v-model="formData.orgId"
|
||||
placeholder="请选择机构"
|
||||
clearable
|
||||
>
|
||||
<el-option v-for="item in fororglistData" :key="item.orgID" :label="item.orgName" :value="item.orgID" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
@ -83,6 +89,8 @@
|
||||
import { Api, VO, baseFile } from '@/api/system/doctor'
|
||||
import { error } from 'console'
|
||||
import type { UploadProps, UploadUserFile } from 'element-plus'
|
||||
import { OrgApi } from '@/api/system/org'
|
||||
|
||||
//存放base64
|
||||
const imageBase64 = ref()
|
||||
//存放要上传的文件名称
|
||||
@ -90,7 +98,8 @@ const imagefilename = ref()
|
||||
|
||||
/** 医生管理 表单 */
|
||||
defineOptions({ name: 'Form' })
|
||||
|
||||
//机构数据
|
||||
const fororglistData = ref<any[]>([])
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
@ -127,6 +136,9 @@ const open = async (type: string, id?: number) => {
|
||||
dialogTitle.value = t('action.' + type)
|
||||
formType.value = type
|
||||
resetForm()
|
||||
// 获取机构字典数据
|
||||
fororglistData.value=await OrgApi.getOrglist()
|
||||
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
formLoading.value = true
|
||||
|
@ -42,8 +42,15 @@
|
||||
<el-form-item label="检查部位代码" prop="examPartCode" label-width="111px">
|
||||
<el-input v-model="formData.examPartCode" placeholder="请选择检查部位代码" />
|
||||
</el-form-item>
|
||||
<el-form-item label="机构编号" prop="orgId" label-width="111px">
|
||||
<el-input v-model="formData.orgId" placeholder="请输入机构编号" />
|
||||
<el-form-item label="机构名称" prop="orgId" label-width="111px">
|
||||
<el-select v-model="formData.orgId" placeholder="请选择机构" clearable>
|
||||
<el-option
|
||||
v-for="item in fororglistData"
|
||||
:key="item.orgID"
|
||||
:label="item.orgName"
|
||||
:value="item.orgID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="第三方系统的检查项目的CODE" prop="thirdPartyExamItemCode" v-if="false">
|
||||
<el-input
|
||||
@ -76,13 +83,15 @@
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { examitemsApi, examitemsVO } from '@/api/system/examitems'
|
||||
|
||||
import { OrgApi } from '@/api/system/org'
|
||||
/** 检查部位 表单 */
|
||||
defineOptions({ name: 'ExamitemsForm' })
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
//机构数据
|
||||
const fororglistData = ref<any[]>([])
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
@ -115,6 +124,8 @@ const open = async (type: string, id?: number) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = t('action.' + type)
|
||||
formType.value = type
|
||||
// 获取机构字典数据
|
||||
fororglistData.value = await OrgApi.getOrglist()
|
||||
resetForm()
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
@ -140,21 +151,20 @@ const submitForm = async () => {
|
||||
const re = ref()
|
||||
if (formType.value === 'create') {
|
||||
re.value = await examitemsApi.createexamitems(data)
|
||||
if (re.value ==='项目ID已经存在') {
|
||||
message.error(re.value)
|
||||
return
|
||||
} else {
|
||||
message.success(t('common.createSuccess'))
|
||||
}
|
||||
|
||||
if (re.value === '项目ID已经存在') {
|
||||
message.error(re.value)
|
||||
return
|
||||
} else {
|
||||
message.success(t('common.createSuccess'))
|
||||
}
|
||||
} else {
|
||||
await examitemsApi.updateexamitems(data)
|
||||
message.success(t('common.updateSuccess'))
|
||||
}
|
||||
dialogVisible.value = false
|
||||
|
||||
// 发送操作成功的事件
|
||||
emit('success')
|
||||
|
||||
// 发送操作成功的事件
|
||||
emit('success')
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
}
|
||||
|
@ -116,7 +116,7 @@
|
||||
type="primary"
|
||||
plain
|
||||
@click="openForm('create')"
|
||||
v-hasPermi="['org:org:create']"
|
||||
v-hasPermi="['org::create']"
|
||||
>
|
||||
<Icon icon="ep:plus" class="mr-5px" /> 新增
|
||||
</el-button>
|
||||
@ -126,7 +126,7 @@
|
||||
plain
|
||||
@click="handleExport"
|
||||
:loading="exportLoading"
|
||||
v-hasPermi="['org:org:export']"
|
||||
v-hasPermi="['org::export']"
|
||||
>
|
||||
<Icon icon="ep:download" class="mr-5px" /> 导出
|
||||
</el-button>
|
||||
@ -162,7 +162,7 @@
|
||||
link
|
||||
type="primary"
|
||||
@click="openForm('update', scope.row.orgID)"
|
||||
v-hasPermi="['org:org:update']"
|
||||
v-hasPermi="['org::update']"
|
||||
>
|
||||
编辑
|
||||
</el-button>
|
||||
@ -170,7 +170,7 @@
|
||||
link
|
||||
type="primary"
|
||||
@click="openOrgSuperiorForm(scope.row.orgID)"
|
||||
v-hasPermi="['org:org:update']"
|
||||
v-hasPermi="['org::update']"
|
||||
>
|
||||
上级机构设置
|
||||
</el-button>
|
||||
@ -178,7 +178,7 @@
|
||||
link
|
||||
type="primary"
|
||||
@click="openorgwxForm(scope.row.orgID)"
|
||||
v-hasPermi="['org:org:update']"
|
||||
v-hasPermi="['org::update']"
|
||||
>
|
||||
微信通知设置
|
||||
</el-button>
|
||||
@ -186,7 +186,7 @@
|
||||
link
|
||||
type="danger"
|
||||
@click="handleDelete(scope.row.orgID)"
|
||||
v-hasPermi="['org:org:delete']"
|
||||
v-hasPermi="['org::delete']"
|
||||
>
|
||||
删除
|
||||
</el-button>
|
||||
|
@ -81,6 +81,21 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="机构名称" prop="orgId" >
|
||||
<el-select v-model="formData.orgId" placeholder="请选择机构" clearable>
|
||||
<el-option
|
||||
v-for="item in fororglistData"
|
||||
:key="item.orgID"
|
||||
:label="item.orgName"
|
||||
:value="item.orgID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="备注">
|
||||
@ -103,12 +118,13 @@ import * as PostApi from '@/api/system/post'
|
||||
import * as DeptApi from '@/api/system/dept'
|
||||
import * as UserApi from '@/api/system/user'
|
||||
import { FormRules } from 'element-plus'
|
||||
|
||||
import { OrgApi } from '@/api/system/org'
|
||||
defineOptions({ name: 'SystemUserForm' })
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
//机构数据
|
||||
const fororglistData = ref<any[]>([])
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
@ -125,12 +141,14 @@ const formData = ref({
|
||||
postIds: [],
|
||||
remark: '',
|
||||
status: CommonStatusEnum.ENABLE,
|
||||
roleIds: []
|
||||
roleIds: [],
|
||||
orgId:''
|
||||
})
|
||||
const formRules = reactive<FormRules>({
|
||||
username: [{ required: true, message: '用户名称不能为空', trigger: 'blur' }],
|
||||
nickname: [{ required: true, message: '用户昵称不能为空', trigger: 'blur' }],
|
||||
password: [{ required: true, message: '用户密码不能为空', trigger: 'blur' }],
|
||||
orgId: [{ required: true, message: '机构不能为空', trigger: 'blur' }],
|
||||
email: [
|
||||
{
|
||||
type: 'email',
|
||||
@ -155,6 +173,8 @@ const open = async (type: string, id?: number) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = t('action.' + type)
|
||||
formType.value = type
|
||||
// 获取机构字典数据
|
||||
fororglistData.value = await OrgApi.getOrglist()
|
||||
resetForm()
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
@ -212,7 +232,8 @@ const resetForm = () => {
|
||||
postIds: [],
|
||||
remark: '',
|
||||
status: CommonStatusEnum.ENABLE,
|
||||
roleIds: []
|
||||
roleIds: [],
|
||||
orgId:''
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
v-loading="formLoading"
|
||||
>
|
||||
<el-form-item label="微信号userid" prop="wxUserid" label-width="130px" style="">
|
||||
<el-input v-model="formData.wxUserid" placeholder="请输入微信号userid" :disabled="true"/>
|
||||
<el-input v-model="formData.wxUserid" placeholder="请输入微信号userid" :disabled="true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="电话号码" prop="bindTel" label-width="130px">
|
||||
<el-input v-model="formData.bindTel" placeholder="请输入电话号码" />
|
||||
@ -27,8 +27,15 @@
|
||||
<el-form-item label="备注" prop="remark" label-width="130px">
|
||||
<el-input v-model="formData.remark" placeholder="请输入备注" />
|
||||
</el-form-item>
|
||||
<el-form-item label="机构编码" prop="orgId" label-width="130px">
|
||||
<el-input v-model="formData.orgId" placeholder="请输入机构编码" />
|
||||
<el-form-item label="机构名称" prop="orgId" label-width="130px">
|
||||
<el-select v-model="formData.orgId" placeholder="请选择机构" clearable>
|
||||
<el-option
|
||||
v-for="item in fororglistData"
|
||||
:key="item.orgID"
|
||||
:label="item.orgName"
|
||||
:value="item.orgID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
@ -39,6 +46,7 @@
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { WxApi, WxVO } from '@/api/system/wx'
|
||||
import { OrgApi } from '@/api/system/org'
|
||||
|
||||
/** 微信通知管理 表单 */
|
||||
defineOptions({ name: 'WxForm' })
|
||||
@ -46,6 +54,8 @@ defineOptions({ name: 'WxForm' })
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
//机构数据
|
||||
const fororglistData = ref<any[]>([])
|
||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||
const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
@ -57,10 +67,9 @@ const formData = ref({
|
||||
personName: undefined,
|
||||
createDate: undefined,
|
||||
remark: undefined,
|
||||
orgId: undefined,
|
||||
orgId: undefined
|
||||
})
|
||||
const formRules = reactive({
|
||||
|
||||
wxUserid: [{ required: true, message: '请输入微信号userid', trigger: 'blur' }],
|
||||
bindTel: [{ required: true, message: '请输入电话号码', trigger: 'blur' }],
|
||||
personName: [{ required: true, message: '请输入所属人的姓名', trigger: 'blur' }],
|
||||
@ -73,6 +82,8 @@ const open = async (type: string, id?: number) => {
|
||||
dialogVisible.value = true
|
||||
dialogTitle.value = t('action.' + type)
|
||||
formType.value = type
|
||||
// 获取机构字典数据
|
||||
fororglistData.value = await OrgApi.getOrglist()
|
||||
resetForm()
|
||||
// 修改时,设置数据
|
||||
if (id) {
|
||||
@ -119,8 +130,8 @@ const resetForm = () => {
|
||||
personName: undefined,
|
||||
createDate: undefined,
|
||||
remark: undefined,
|
||||
orgId: undefined,
|
||||
orgId: undefined
|
||||
}
|
||||
formRef.value?.resetFields()
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
|
@ -1,5 +1,11 @@
|
||||
<template>
|
||||
<Dialog :title="dialogTitle" v-model="dialogVisible" class="custom-dialog">
|
||||
<el-dialog
|
||||
v-model="dialogVisible"
|
||||
:title="dialogTitle"
|
||||
class="my-custom-close-icon"
|
||||
:fullscreen="true"
|
||||
>
|
||||
<!-- <Dialog :title="dialogTitle" v-model="dialogVisible" class="custom-dialog"> -->
|
||||
<!-- <el-form
|
||||
ref="Print"
|
||||
:model=applyFormVO
|
||||
@ -7,13 +13,12 @@
|
||||
label-width="100px"
|
||||
v-loading="formLoading"
|
||||
> -->
|
||||
<div class="container">
|
||||
<div class="left">
|
||||
<div class="my-container">
|
||||
<div class="my-left">
|
||||
<el-select
|
||||
v-model="fordevicemValue"
|
||||
placeholder="请选择模版类别"
|
||||
clearable
|
||||
class="!w-230px"
|
||||
@change="handleselectchange"
|
||||
@clear="selectclear"
|
||||
>
|
||||
@ -22,11 +27,11 @@
|
||||
<el-option label="体检" value="体检模版" />
|
||||
</el-select>
|
||||
|
||||
<el-tabs type="border-card" style="height: 931px">
|
||||
<el-tabs type="border-card" style="height: calc(100% - 32px)">
|
||||
<el-tab-pane label="通用模版">
|
||||
<!-- 树 -->
|
||||
<el-tree
|
||||
style="min-width: 195px"
|
||||
style="min-width: 195px;"
|
||||
v-loading="formLoading"
|
||||
class="treeStyle"
|
||||
:check-on-click-node="true"
|
||||
@ -57,108 +62,118 @@
|
||||
:show-checkbox="false"
|
||||
:check-strictly="true"
|
||||
@node-click="handleTreeNodeClick"
|
||||
|
||||
ref="priselectTree"
|
||||
:expand-on-click-node="false"
|
||||
/>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
<div class="middle">
|
||||
<div class="my-middle">
|
||||
<!--用户信息区域-->
|
||||
|
||||
<el-tabs
|
||||
v-model="activeName"
|
||||
class="demo-tabs"
|
||||
type="border-card"
|
||||
style="height: 963px"
|
||||
style="height: 100%"
|
||||
@tab-change="handleTabChange"
|
||||
>
|
||||
<el-tab-pane label="用户信息" name="first">
|
||||
<el-form
|
||||
:model="applyFormVO"
|
||||
label-width="auto"
|
||||
style="max-width: 900px"
|
||||
:inline="true"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="检查号">
|
||||
<el-input v-model="applyFormVO.examId" style="width: 180px" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓名">
|
||||
<el-input v-model="applyFormVO.pname" style="width: 180px" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="性别">
|
||||
<el-input v-model="applyFormVO.gender" style="width: 180px" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="出生日期">
|
||||
<el-date-picker
|
||||
v-model="applyFormVO.birthday"
|
||||
type="date"
|
||||
placeholder="出生日期"
|
||||
size="default"
|
||||
style="width: 180px"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="检查时间">
|
||||
<el-date-picker
|
||||
v-model="applyFormVO.examDate"
|
||||
type="datetime"
|
||||
placeholder="检查时间"
|
||||
size="default"
|
||||
style="width: 180px"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="检查项目名称">
|
||||
<el-input
|
||||
v-model="applyFormVO.examItemName"
|
||||
style="width: 180px"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<div class="my-app-container">
|
||||
<el-form
|
||||
:model="applyFormVO"
|
||||
label-width="auto"
|
||||
style="max-width: 900px"
|
||||
:inline="true"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="检查号" style="font-weight: bold">
|
||||
<el-input
|
||||
v-model="applyFormVO.examId"
|
||||
style="width: 190px"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="姓名" style="font-weight: bold">
|
||||
<el-input v-model="applyFormVO.pname" style="width: 190px" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="性别" style="font-weight: bold">
|
||||
<el-input
|
||||
v-model="applyFormVO.gender"
|
||||
style="width: 190px"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="出生日期" style="font-weight: bold">
|
||||
<el-date-picker
|
||||
v-model="applyFormVO.birthday"
|
||||
type="date"
|
||||
placeholder="出生日期"
|
||||
size="default"
|
||||
style="width: 190px"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="检查时间" style="font-weight: bold">
|
||||
<el-date-picker
|
||||
v-model="applyFormVO.examDate"
|
||||
type="datetime"
|
||||
placeholder="检查时间"
|
||||
size="default"
|
||||
style="width: 190px"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="检查项目名称" style="font-weight: bold">
|
||||
<el-input
|
||||
v-model="applyFormVO.examItemName"
|
||||
style="width: 190px"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="申请时间" style="font-weight: bold">
|
||||
<el-date-picker
|
||||
v-model="applyFormVO.applicationDate"
|
||||
type="datetime"
|
||||
placeholder="检查时间"
|
||||
size="default"
|
||||
style="width: 190px"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="申请单号" style="font-weight: bold">
|
||||
<el-input v-model="applyFormVO.regId" style="width: 190px" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="送检科室" style="font-weight: bold">
|
||||
<el-input
|
||||
v-model="applyFormVO.billDoctorDepartment"
|
||||
style="width: 190px"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="申请时间">
|
||||
<el-date-picker
|
||||
v-model="applyFormVO.applicationDate"
|
||||
type="datetime"
|
||||
placeholder="检查时间"
|
||||
size="default"
|
||||
style="width: 180px"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="申请单号">
|
||||
<el-input v-model="applyFormVO.regId" style="width: 180px" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="送检科室">
|
||||
<el-input
|
||||
v-model="applyFormVO.billDoctorDepartment"
|
||||
style="width: 180px"
|
||||
:disabled="true"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<el-divider />
|
||||
<!--图片显示区域-->
|
||||
<div class="demo-image">
|
||||
@ -190,25 +205,25 @@
|
||||
</el-card>
|
||||
</div>
|
||||
<el-divider />
|
||||
<label style="text-align: center">检查所见</label>
|
||||
<label style="text-align: center; font-size: 17px; font-weight: bold">检查所见</label>
|
||||
<el-input
|
||||
v-model="sj"
|
||||
style="max-width: 100%; width: 100%"
|
||||
:rows="4"
|
||||
style="width: 100%"
|
||||
:rows="8"
|
||||
type="textarea"
|
||||
placeholder="检查所见"
|
||||
/>
|
||||
<el-divider />
|
||||
<label>诊断结论</label>
|
||||
<label style="font-size: 17px; font-weight: bold">诊断结论</label>
|
||||
<el-input
|
||||
v-model="zdjl"
|
||||
style="width: 100%"
|
||||
:rows="4"
|
||||
:rows="8"
|
||||
type="textarea"
|
||||
placeholder="诊断结论"
|
||||
/>
|
||||
<el-divider />
|
||||
<label>报告备注</label>
|
||||
<label style="font-size: 17px; font-weight: bold">报告备注</label>
|
||||
<el-input v-model="notes" style="width: 100%" placeholder="" />
|
||||
<el-radio-group
|
||||
v-model="radio1"
|
||||
@ -239,8 +254,6 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
<!--:disabled="applyFormVO.reportstatus === '已审核' ? true : false"-->
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
@ -252,8 +265,8 @@
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="报告" name="report">
|
||||
<!--报告区域-->
|
||||
<div class="flex-center" id="printMe">
|
||||
<div class="ultrasound-report" id="PDF" style="height: 750px">
|
||||
<div class="flex-center" id="printMe" style="height: 100%">
|
||||
<div class="ultrasound-report" id="PDF">
|
||||
<h2>超声检查报告单</h2>
|
||||
<hr />
|
||||
<div class="patient-info">
|
||||
@ -300,7 +313,7 @@
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
class="ignore-print"
|
||||
class="ignore-print"
|
||||
style="width: 100px"
|
||||
:disabled="formLoading"
|
||||
@click="() => htmlToPdf.getPdf('超声报告单', '#PDF')"
|
||||
@ -312,57 +325,52 @@
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
<div class="right" style="border: 1px solid #dcdfe6; padding: 2px; height: 960px">
|
||||
<div class="my-right" style="border: 1px solid #dcdfe6; height: 100%">
|
||||
<!--图片区域-->
|
||||
<div>
|
||||
<div style="width: 100%">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
style="width: 220px"
|
||||
style="width: 100%"
|
||||
@click="upimagedeleteor()"
|
||||
:disabled="applyFormVO.reportstatus === '已审核' ? true : false"
|
||||
>图像删除</el-button
|
||||
>
|
||||
</div>
|
||||
<div>
|
||||
<div style="width: 100%">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
style="width: 220px"
|
||||
style="width: 100%"
|
||||
@click="getimages"
|
||||
:disabled="applyFormVO.reportstatus === '已审核' ? true : false"
|
||||
>图像刷新</el-button
|
||||
>
|
||||
</div>
|
||||
<div class="image-container">
|
||||
<div class="image-wrapper">
|
||||
<div class="image-item-container" v-for="image in images" :key="image.id">
|
||||
<el-image
|
||||
class="image-item"
|
||||
:src="image.imgUrl"
|
||||
@dblclick="selectImage(image.imgUrl, image.id)"
|
||||
@click="chooseImage($event, image.id)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="image-container image-wrapper image-item-container">
|
||||
<el-image
|
||||
class="image-item"
|
||||
v-for="image in images"
|
||||
:key="image.id"
|
||||
:src="image.imgUrl"
|
||||
@dblclick="selectImage(image.imgUrl, image.id)"
|
||||
@click="chooseImage($event, image.id)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- </el-form> -->
|
||||
<template #footer>
|
||||
<el-button @click="dialogVisible = false">关闭</el-button>
|
||||
</template>
|
||||
</Dialog>
|
||||
</el-dialog>
|
||||
<!-- </Dialog> -->
|
||||
<!-- 弹窗-->
|
||||
<el-dialog v-model="dialogTableVisible" title="选择结论添加方式" width="300" align-center>
|
||||
<el-dialog v-model="dialogTableVisible" title="选择结论添加方式" width="320" align-center>
|
||||
<div>
|
||||
<el-button @click="handleButtonClick('覆盖')" type="primary">覆盖</el-button>
|
||||
<el-button @click="handleButtonClick('追加')" type="success">追加</el-button>
|
||||
<el-button @click="dialogTableVisible = false" type="info">关闭</el-button>
|
||||
<el-button @click="handleButtonClick('覆盖')" type="primary" style="font-size: 20px;">覆盖</el-button>
|
||||
<el-button @click="handleButtonClick('追加')" type="success" style="font-size: 20px;">追加</el-button>
|
||||
<el-button @click="dialogTableVisible = false" type="info" style="font-size: 20px;">关闭</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ApplyformApi, ApplyformVO, UPFJApplyformVO } from '@/api/applyregistration/applyform'
|
||||
import { ultrasoniccomApi, updateexamineimageVO } from '@/api/ultrasoniccom'
|
||||
@ -386,10 +394,8 @@ const dialogTitle = ref('') // 弹窗的标题
|
||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||
const examineFormVO = ref<PatientexamlistVO>({} as PatientexamlistVO)
|
||||
|
||||
|
||||
//点击节点更新使用时间
|
||||
const clickuptime =async (pid:string)=>
|
||||
{
|
||||
const clickuptime = async (pid: string) => {
|
||||
await ultrasoniccomApi.upreporttemplatetime(pid)
|
||||
}
|
||||
|
||||
@ -409,7 +415,7 @@ const handleButtonClick = (buttonName) => {
|
||||
sj.value = lssj + strsj
|
||||
}
|
||||
dialogTableVisible.value = false
|
||||
console.log("获取到父节点"+pid);
|
||||
console.log('获取到父节点' + pid)
|
||||
clickuptime(pid)
|
||||
}
|
||||
|
||||
@ -654,13 +660,13 @@ const treeDefaultProps = {
|
||||
//当前选中节点的值
|
||||
let strzdjl: string = ''
|
||||
let strsj: string = ''
|
||||
let pid:string=''//当前节点的父id
|
||||
let pid: string = '' //当前节点的父id
|
||||
// 树节点选中事件
|
||||
const handleTreeNodeClick = async (data) => {
|
||||
strzdjl = data.diagResults
|
||||
strsj = data.examDescription
|
||||
pid=data.pid
|
||||
console.log("父节点"+data.pid)
|
||||
pid = data.pid
|
||||
console.log('父节点' + data.pid)
|
||||
dialogTableVisible.value = true
|
||||
}
|
||||
//下拉选择事件
|
||||
@ -751,15 +757,12 @@ const getlogininfo = async () => {
|
||||
Profilevo.value = await getUserProfile()
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/** 重置表单 */
|
||||
const resetForm = () => {
|
||||
applyFormVO.value={} as PatientexamlistVO
|
||||
pid=''
|
||||
strzdjl= ''
|
||||
strsj = ''
|
||||
applyFormVO.value = {} as PatientexamlistVO
|
||||
pid = ''
|
||||
strzdjl = ''
|
||||
strsj = ''
|
||||
activeName.value = 'first'
|
||||
deleteimageid.value = ''
|
||||
updateexamineimage.value = []
|
||||
@ -802,24 +805,28 @@ const chooseImage = (event, id: number) => {
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.container {
|
||||
.my-container {
|
||||
display: flex;
|
||||
height: 950px;
|
||||
height: 1200px;
|
||||
}
|
||||
|
||||
.left {
|
||||
flex: 0 0 200px; /* 固定宽度 */
|
||||
.my-container * {
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.my-left {
|
||||
width: 20%;
|
||||
background: lightblue;
|
||||
}
|
||||
|
||||
.middle {
|
||||
flex: 1; /* 占据剩余空间 */
|
||||
.my-middle {
|
||||
width: 60%;
|
||||
margin-left: 2px;
|
||||
background: rgb(238, 240, 238);
|
||||
}
|
||||
|
||||
.right {
|
||||
flex: 0 0 200px; /* 固定宽度 */
|
||||
.my-right {
|
||||
width: 20%;
|
||||
background: rgb(255, 255, 255);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@ -834,6 +841,13 @@ const chooseImage = (event, id: number) => {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.my-app-container {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
}
|
||||
|
||||
.demo-image {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
@ -859,16 +873,17 @@ const chooseImage = (event, id: number) => {
|
||||
|
||||
.image-wrapper {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center; /* 水平居中 */
|
||||
align-items: center; /* 垂直居中 */
|
||||
gap: 10px; /* 设置图像之间的间距 */
|
||||
width: 100%;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.image-item {
|
||||
/* 可选:设置图像的宽度和高度 */
|
||||
width: 200px;
|
||||
height: 200px;
|
||||
width: 80%;
|
||||
height: 80%;
|
||||
cursor: pointer;
|
||||
transition: transform 0.3s ease; /* 添加过渡效果 */
|
||||
}
|
||||
@ -896,17 +911,19 @@ const chooseImage = (event, id: number) => {
|
||||
.form-item {
|
||||
flex: 1; /* 均分宽度,使两个输入框平分容器的宽度 */
|
||||
margin-right: 20px;
|
||||
font-weight:bold
|
||||
}
|
||||
|
||||
/* 报告样式 */
|
||||
.ultrasound-report {
|
||||
font-family: Arial, sans-serif;
|
||||
max-width: 800px;
|
||||
width: 90%;
|
||||
margin: 20px auto;
|
||||
padding: 20px;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 8px;
|
||||
position: relative;
|
||||
height: 900px;
|
||||
}
|
||||
|
||||
.ultrasound-report h1,
|
||||
@ -954,4 +971,9 @@ const chooseImage = (event, id: number) => {
|
||||
flex-basis: 25%;
|
||||
/* 设置其他样式属性,如 padding、margin 等 */
|
||||
}
|
||||
|
||||
.my-custom-close-icon .el-dialog__close {
|
||||
font-size: 40px; /* 自定义图标大小 */
|
||||
color: red; /* 自定义图标颜色 */
|
||||
}
|
||||
</style>
|
||||
|
Loading…
Reference in New Issue
Block a user