返修审核

This commit is contained in:
旺仔 2024-12-25 11:56:26 +08:00
parent 2f3baa07fe
commit a958b24c90
2 changed files with 499 additions and 0 deletions

View File

@ -35,4 +35,7 @@ export const ProcessManageApi = {
delete: async (id: any) => {
return await request.delete({ url: `/system/process/delete?id=` + id })
},
examineProcess: async (id: any, examineType: any, refuseremark: any) => {
return await request.get({ url: `/system/process/examineProcess?id=` + id + `&examineType=` + examineType + `&refuseremark=` + refuseremark })
}
}

View File

@ -0,0 +1,496 @@
<template>
<div>
<ContentWrap>
<el-form
ref="queryFormRef"
:model="queryParams"
size="default"
label-width="78px"
label-position="right"
label-suffix=""
class="-mb-15px"
>
<el-row>
<el-col :span="8">
<el-form-item label="审核状态" prop="processstats" class="item-style">
<el-radio-group v-model="queryParams.processstats" class="item-width radio-group">
<el-radio value="" style="margin-left: 12px; margin-right: 18px"> 全部 </el-radio>
<el-radio value="0" style="margin-right: 18px"> 申请 </el-radio>
<el-radio value="1" style="margin-right: 6px"> 审核 </el-radio>
<el-radio value="2" style="margin-left: 12px; margin-right: 4px"> 拒绝 </el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="审核日期" prop="processDate_ge" class="item-style date-picker">
<el-date-picker
v-model="queryParams.processDate_ge"
type="date"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="开始日期"
class="item-width"
/>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item
label=""
label-width="0px"
prop="processDate_le"
class="item-style date-picker"
>
<el-date-picker
v-model="queryParams.processDate_le"
type="date"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="结束日期"
class="item-width"
/>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="申请日期" prop="applyDateTime_ge" class="item-style date-picker">
<el-date-picker
v-model="queryParams.applyDateTime_ge"
type="date"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="开始日期"
class="item-width"
/>
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item
label=""
label-width="0px"
prop="applyDateTime_le"
class="item-style date-picker"
>
<el-date-picker
v-model="queryParams.applyDateTime_le"
type="date"
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="结束日期"
class="item-width"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="登记号" prop="regId" class="item-style">
<el-input
v-model="queryParams.regId"
placeholder="请输入登记号"
clearable
class="item-width"
/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="患者姓名" prop="pname" class="item-style">
<el-input
v-model="queryParams.pname"
placeholder="请输入患者姓名"
clearable
class="item-width"
/>
</el-form-item>
</el-col>
<el-col :span="8" style="text-align: right">
<el-button
@click="handleQuery"
class="mr-14px"
style="background-color: rgba(56, 119, 246, 1); color: rgba(255, 255, 255, 1)"
>
<Icon icon="ep:search" class="mr-5px" /> 搜索
</el-button>
<el-button @click="resetQuery">
<Icon icon="ep:refresh" class="mr-5px" /> 重置
</el-button>
</el-col>
</el-row>
</el-form>
</ContentWrap>
<ContentWrap>
<el-table
v-loading="loading"
size="default"
border
:stripe="false"
:show-overflow-tooltip="true"
:data="list_infos"
:header-cell-style="{
background: 'rgb(235, 241, 250)',
height: '40px',
color: '#333333'
}"
:row-style="{ height: '40px' }"
height="max(calc(100vh - 400px),100px)"
>
<el-table-column label="序号" align="center" width="54px">
<template #default="scope"> {{ scope.$index + 1 }} </template>
</el-table-column>
<el-table-column label="登记号" align="center" prop="regId" width="240px" />
<el-table-column label="检查号" align="center" prop="examId" width="240px" />
<el-table-column label="患者姓名" align="center" prop="pname" width="130px" />
<el-table-column label="机构" align="center" prop="orgId_name" min-width="260px" />
<el-table-column
label="审核时间"
align="center"
prop="processDate"
:formatter="dateFormatter2"
width="150px"
/>
<el-table-column label="审核医生" align="center" prop="processDoctor" width="130px" />
<el-table-column label="审核机构" align="center" prop="processorgName" width="260px" />
<el-table-column
label="申请时间"
align="center"
prop="applyDateTime"
:formatter="dateFormatter2"
width="150px"
/>
<el-table-column label="申请医生" align="center" prop="applyDoctor" min-width="130px" />
<el-table-column label="申请原因" align="center" prop="processContent" min-width="280px" />
<el-table-column label="拒绝原因" align="center" prop="refuseremark" min-width="280px" />
<el-table-column label="备注" align="center" prop="remark" min-width="280px" />
<el-table-column
label="审核状态"
align="center"
prop="processstats"
fixed="right"
width="86px"
>
<template #default="scope">
<el-tag v-if="scope.row.processstats == '0'" effect="plain">申请</el-tag>
<el-tag v-else-if="scope.row.processstats == '1'" effect="plain" type="success"
>审核</el-tag
>
<el-tag v-else-if="scope.row.processstats == '2'" effect="plain" type="danger"
>拒绝</el-tag
>
<el-tag v-else effect="plain" type="info">暂无</el-tag>
</template>
</el-table-column>
<el-table-column
label="操作"
:show-overflow-tooltip="false"
align="center"
fixed="right"
width="120px"
>
<template #default="scope">
<div v-if="scope.row.processstats == '0'">
<el-button
link
@click="handleRowClick(scope.row, '1')"
style="color: rgb(56, 119, 246)"
>
审核
</el-button>
<el-button
link
@click="handleRowClick(scope.row, '2')"
style="color: rgb(56, 119, 246)"
>
拒绝
</el-button>
</div>
<div v-else style="color: #b1b3b8"></div>
</template>
</el-table-column>
</el-table>
<div>
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</div>
</ContentWrap>
<el-dialog
title="确定"
v-model="dialogExamine"
top="38vh"
width="400px"
:modal="false"
:close-on-click-modal="false"
draggable
append-to-body
destroy-on-close
>
<div v-loading="dialogExamine_loading">
<div style="font-size: 14.88px">请确定是否审核该数据</div>
<!-- footer -->
<div class="mt-14px">
<div style="text-align: right">
<el-button @click="dialogExamine = false"></el-button>
<el-button
type="primary"
@click="
async () => {
try {
dialogExamine_loading = true
let res = await ProcessManageApi.examineProcess(infoParams.id, '1', '')
if (res && res == '200') {
await getList()
dialogExamine = false
message.success('审核成功')
}
} catch (e) {
} finally {
dialogExamine_loading = false
}
}
"
>
</el-button>
</div>
</div>
</div>
</el-dialog>
<el-dialog
title="确定"
v-model="dialogExamine_no"
top="38vh"
width="560px"
:modal="false"
:close-on-click-modal="false"
draggable
append-to-body
destroy-on-close
@open="
async () => {
dialogExamine_no_msg = false
infoParams.refuseremark = null
}
"
>
<div v-loading="dialogExamine_no_loading">
<div>
<p class="-mt-4px mb-4px">
<span class="ml-3px" style="font-size: 14.08px">拒绝原因</span>
<span
class="mr-4px"
style="color: red; float: right; font-size: 12.48px"
v-show="dialogExamine_no_msg"
>
拒绝原因不能为空
</span>
</p>
<el-input
v-model="infoParams.refuseremark"
type="textarea"
:autosize="{ minRows: 6, maxRows: 12 }"
/>
</div>
<!-- footer -->
<div class="mt-14px">
<div style="text-align: right">
<el-button @click="dialogExamine_no = false"> </el-button>
<el-button
type="primary"
@click="
async () => {
dialogExamine_no_msg = false
let refuseremarkStr = infoParams.refuseremark
? infoParams.refuseremark.trim()
: ''
if (!refuseremarkStr) {
dialogExamine_no_msg = true
return
}
try {
dialogExamine_no_loading = true
let res = await ProcessManageApi.examineProcess(
infoParams.id,
'2',
infoParams.refuseremark
)
if (res && res == '200') {
await getList()
dialogExamine_no = false
message.success('操作成功')
}
} catch (e) {
} finally {
dialogExamine_no_loading = false
}
}
"
>
</el-button>
</div>
</div>
</div>
</el-dialog>
</div>
</template>
<script setup lang="ts">
import { dateFormatter2 } from '@/utils/formatTime'
import { getUserProfile } from '@/api/system/user/profile'
import { ProcessManageApi } from '@/api/ECG/processManage'
defineOptions({ name: 'ProcessManage' })
/*
* 李传洋
* 返修审核
**/
/** 导入内容 **/
/** 组件引用 **/
const queryFormRef = ref()
const infoFormRef = ref()
const dialogExamine = ref<boolean>(false)
const dialogExamine_loading = ref<boolean>(false)
const dialogExamine_no = ref<boolean>(false)
const dialogExamine_no_loading = ref<boolean>(false)
const dialogExamine_no_msg = ref<boolean>(false)
/** 数据结构 **/
const message = useMessage()
const userProfile = ref<any>({})
const age = ref<any>('')
//
const queryParams = ref({
pageNo: 1,
pageSize: 10,
orgId: '',
pname: '',
regId: '',
processstats: '',
processDate_ge: '',
processDate_le: '',
applyDateTime_ge: '',
applyDateTime_le: ''
})
const infoParams = ref<any>({})
//
const list_infos = ref<any[]>([])
const loading = ref(true)
const total = ref(0)
/****** 自定义内容 ******/
const calculateAge = async (birthdate) => {
if (!birthdate) {
age.value = ''
return
}
const today = new Date()
const birth = new Date(birthdate)
let yearsDiff = today.getFullYear() - birth.getFullYear()
// Check if the birthday hasn't occurred yet this year
const hasBirthdayPassed =
today.getMonth() > birth.getMonth() ||
(today.getMonth() === birth.getMonth() && today.getDate() >= birth.getDate())
if (!hasBirthdayPassed) {
yearsDiff--
}
age.value = yearsDiff
}
const resetDiagnosisInfo = async () => {
infoParams.value = {}
age.value = ''
infoFormRef.value?.clearValidate()
}
const getList = async () => {
resetDiagnosisInfo()
loading.value = true
try {
const data = await ProcessManageApi.getPage(queryParams.value)
list_infos.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/****** 可参考内容 ******/
/** 组件事件 **/
const handleQuery = async () => {
queryParams.value.pageNo = 1
getList()
}
const resetQuery = async () => {
queryParams.value = {
pageNo: 1,
pageSize: 10,
orgId: '',
regId: '',
pname: '',
processstats: '',
processDate_ge: '',
processDate_le: '',
applyDateTime_ge: '',
applyDateTime_le: ''
}
queryFormRef.value?.clearValidate()
handleQuery()
}
const handleRowClick = async (row, examineType) => {
if (
!(
userProfile.value &&
userProfile.value.isimageexamine &&
userProfile.value.isimageexamine.trim() == '1'
)
) {
message.warning('该用户没有审核权限')
return
}
resetDiagnosisInfo()
if (row) {
infoParams.value = row
}
if (examineType == '1') dialogExamine.value = true
else if (examineType == '2') dialogExamine_no.value = true
}
/** 钩子方法 **/
onMounted(async () => {
userProfile.value = await getUserProfile()
getList()
})
/** 防空作用域 **/
//console.log(null)
/** 导出内容 **/
/**
* 备注
*
* **/
</script>
<style lang="scss" scoped>
.el-form-item__label {
white-space: nowrap;
}
.item-style {
margin-bottom: 8px;
}
.item-width {
width: 100%;
}
.date-picker :deep(.item-width) {
width: 100%;
}
.radio-group {
border: 1px solid #ececec;
}
</style>