|
@@ -3,25 +3,36 @@
|
|
|
<el-row :gutter="8" justify="space-between">
|
|
|
<el-col :xl="24" :lg="24" :md="24" :sm="24" :xs="24">
|
|
|
<el-card style="margin-bottom: 10px">
|
|
|
-
|
|
|
<template #header>
|
|
|
- <div class="card-header" style="text-align: center">
|
|
|
- <h1 class="text1">标本出库申请详情</h1>
|
|
|
+ <div class="card-header" style="text-align: center" >
|
|
|
+ <h1 class="text1">标本出库入库详情
|
|
|
+ <el-tag type="primary" style="margin-left: 10px;margin-top: -1px">
|
|
|
+ {{ statusText }}</el-tag>
|
|
|
+ </h1>
|
|
|
+ <div v-if="user.roles[0].id==113 && outboundData.status === 0 || user.roles[0].id==112 && outboundData.status === 1"
|
|
|
+ style="float: right;position: relative;top: -40px">
|
|
|
+ <el-button
|
|
|
+ @click="handleApproval"
|
|
|
+ type="danger"
|
|
|
+ size="large"
|
|
|
+ style="float:right; margin-left: 20px;margin-top:10px;margin-bottom:10px"
|
|
|
+ > 审 批
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</template>
|
|
|
+
|
|
|
<el-row>
|
|
|
<el-col :xl="11" :lg="11" :md="24" :sm="24" :xs="24">
|
|
|
<el-descriptions
|
|
|
:column="1"
|
|
|
- border
|
|
|
- :size="size"
|
|
|
v-if="outboundData"
|
|
|
- >
|
|
|
- <el-descriptions-item label="审批状态:" label-align="right"
|
|
|
- label-class-name="my-label">{{ StatusText }}
|
|
|
- </el-descriptions-item>
|
|
|
+ :size="size"
|
|
|
+ border>
|
|
|
<el-descriptions-item label="申请人姓名:" label-align="right"
|
|
|
- label-class-name="my-label">{{ outboundData.applicantName }}
|
|
|
+ label-class-name="my-label">{{
|
|
|
+ outboundData.applicantName
|
|
|
+ }}
|
|
|
</el-descriptions-item>
|
|
|
<el-descriptions-item label="申请单位:" label-align="right"
|
|
|
label-class-name="my-label">{{
|
|
@@ -29,68 +40,197 @@
|
|
|
}}
|
|
|
</el-descriptions-item>
|
|
|
<el-descriptions-item label="电话号码:" label-align="right"
|
|
|
- label-class-name="my-label">{{ outboundData.phoneNumber }}
|
|
|
+ label-class-name="my-label">{{
|
|
|
+ outboundData.phoneNumber
|
|
|
+ }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="研究项目名称:" label-align="right"
|
|
|
+ label-class-name="my-label">{{
|
|
|
+ outboundData.projectName
|
|
|
+ }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="项目开始时间:" label-align="right"
|
|
|
+ label-class-name="my-label">{{
|
|
|
+ outboundData.startTime
|
|
|
+ }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="项目结束时间:" label-align="right"
|
|
|
+ label-class-name="my-label">{{
|
|
|
+ outboundData.endTime
|
|
|
+ }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="一级审批时间:" label-align="right"
|
|
|
+ label-class-name="my-label">{{
|
|
|
+ outboundData.approvalTime
|
|
|
+ }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="一级审批员:" label-align="right"
|
|
|
+ label-class-name="my-label">{{
|
|
|
+ outboundData.approveUsers
|
|
|
+ }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="一级审批建议:" label-align="right"
|
|
|
+ label-class-name="my-label">{{
|
|
|
+ outboundData.processInstanceId
|
|
|
+ }}
|
|
|
</el-descriptions-item>
|
|
|
</el-descriptions>
|
|
|
</el-col>
|
|
|
<el-col :xl="10" :lg="10" :md="24" :sm="24" :xs="24">
|
|
|
<el-descriptions
|
|
|
:column="1"
|
|
|
- border
|
|
|
- :size="size"
|
|
|
v-if="outboundData"
|
|
|
- >
|
|
|
- <el-descriptions-item label="研究项目名称:" label-align="right"
|
|
|
- label-class-name="my-label">{{ outboundData.projectName }}
|
|
|
+ :size="size"
|
|
|
+ border>
|
|
|
+ <el-descriptions-item label="二级审批时间:" label-align="right"
|
|
|
+ label-class-name="my-label">{{
|
|
|
+ outboundData.twoApprovalTime
|
|
|
+ }}
|
|
|
</el-descriptions-item>
|
|
|
- <el-descriptions-item label="项目开始时间:" label-align="right"
|
|
|
- label-class-name="my-label">{{ outboundData.startTime }}
|
|
|
+ <el-descriptions-item label="二级审批员:" label-align="right"
|
|
|
+ label-class-name="my-label">{{
|
|
|
+ outboundData.twoApproveUsers
|
|
|
+ }}
|
|
|
</el-descriptions-item>
|
|
|
- <el-descriptions-item label="项目结束时间:" label-align="right"
|
|
|
- label-class-name="my-label">{{ outboundData.endTime }}
|
|
|
+ <el-descriptions-item label="二级审批建议" label-align="right"
|
|
|
+ label-class-name="my-label">{{
|
|
|
+ outboundData.rejectionReasons
|
|
|
+ }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="出库时间:" label-align="right"
|
|
|
+ label-class-name="my-label">{{ outboundData.outgoingTime }}
|
|
|
</el-descriptions-item>
|
|
|
- <el-descriptions-item label="出库备注信息:" label-align="right"
|
|
|
- label-class-name="my-label">{{ outboundData.outboundRemarks }}
|
|
|
+ <el-descriptions-item label="出库员:" label-align="right" label-class-name="my-label">
|
|
|
+ {{ outboundData.operator }}
|
|
|
</el-descriptions-item>
|
|
|
+
|
|
|
+ <el-descriptions-item label="退还日期:" label-align="right"
|
|
|
+ label-class-name="my-label">{{
|
|
|
+ outboundData.returnDate
|
|
|
+ }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="退还人:" label-align="right"
|
|
|
+ label-class-name="my-label">{{
|
|
|
+ outboundData.returner
|
|
|
+ }}
|
|
|
+ </el-descriptions-item>
|
|
|
+ <el-descriptions-item label="点收人:" label-align="right"
|
|
|
+ label-class-name="my-label">{{
|
|
|
+ outboundData.receiver
|
|
|
+ }}
|
|
|
+ </el-descriptions-item>
|
|
|
+
|
|
|
+ <el-descriptions-item label="回库备注信息:" label-align="right"
|
|
|
+ label-class-name="my-label">{{ outboundData.remarks }}
|
|
|
+ </el-descriptions-item>
|
|
|
+
|
|
|
+
|
|
|
</el-descriptions>
|
|
|
</el-col>
|
|
|
- <el-col :xl="2" :lg="2" :md="24" :sm="24" :xs="24">
|
|
|
+
|
|
|
+ <el-col :xl="3" :lg="3" :md="24" :sm="24" :xs="24">
|
|
|
<el-descriptions
|
|
|
v-if="outboundData"
|
|
|
direction="vertical"
|
|
|
+ :column="1"
|
|
|
:size="size"
|
|
|
border
|
|
|
-
|
|
|
>
|
|
|
+
|
|
|
<el-descriptions-item
|
|
|
- :width="200"
|
|
|
+ :rowspan="4"
|
|
|
+ :width="140"
|
|
|
label="申请附件"
|
|
|
align="center"
|
|
|
label-class-name="my-label"
|
|
|
class-name="my-content"
|
|
|
>
|
|
|
+ <!-- <div v-if="outboundData.attachments && outboundData.attachments.type && outboundData.attachments.type.includes('image')" class="image-container">-->
|
|
|
+ <!-- <el-image-->
|
|
|
+ <!-- class="h-80px w-80px"-->
|
|
|
+ <!-- lazy-->
|
|
|
+ <!-- :src="outboundData.attachments"-->
|
|
|
+ <!-- :preview-src-list="outboundData.attachments ? [outboundData.attachments] : []"-->
|
|
|
+ <!-- preview-teleported-->
|
|
|
+ <!-- fit="cover"-->
|
|
|
+ <!-- />-->
|
|
|
+ <!-- </div>-->
|
|
|
+ <!-- <el-link-->
|
|
|
+ <!-- v-else-if="outboundData.attachments"-->
|
|
|
+ <!-- type="primary"-->
|
|
|
+ <!-- :href="outboundData.attachments"-->
|
|
|
+ <!-- :underline="false"-->
|
|
|
+ <!-- target="_blank"-->
|
|
|
+ <!-- >下载</el-link>-->
|
|
|
<div class="demo-image__preview" v-if="outboundData && outboundData.attachments">
|
|
|
- <a :href="outboundData.attachments" download style="color: #dcb56d
|
|
|
- ; text-decoration: none;">下载附件</a>
|
|
|
+ <!-- <a :href="outboundData.attachments" style="color: #dcb56d-->
|
|
|
+ <!-- ; text-decoration: none;" download>下载附件</a>-->
|
|
|
+ <!-- <el-link type="primary" download :href="outboundData.attachments" :underline="false" target="_blank"-->
|
|
|
+ <!-- >下载</el-link-->
|
|
|
+ <!-- >-->
|
|
|
+ <el-image
|
|
|
+ v-if="outboundData.attachments.includes('image')"
|
|
|
+ class="h-80px w-80px"
|
|
|
+ lazy
|
|
|
+ :src="outboundData.attachments"
|
|
|
+ :preview-src-list="[outboundData.attachments]"
|
|
|
+ preview-teleported
|
|
|
+ fit="cover"
|
|
|
+ />
|
|
|
+ <el-link
|
|
|
+ v-else-if="outboundData.attachments.includes('pdf')"
|
|
|
+ type="primary"
|
|
|
+ :href="outboundData.attachments"
|
|
|
+ :underline="false"
|
|
|
+ target="_blank"
|
|
|
+ >预览</el-link
|
|
|
+ >
|
|
|
+ <el-link v-else type="primary" download :href="outboundData.attachments" :underline="false" target="_blank"
|
|
|
+ >下载</el-link
|
|
|
+ >
|
|
|
+
|
|
|
+
|
|
|
</div>
|
|
|
</el-descriptions-item>
|
|
|
- </el-descriptions>
|
|
|
- <!-- <div class="demo-image__preview" v-if="outboundData ">-->
|
|
|
- <!-- <el-image-->
|
|
|
+ <el-descriptions-item
|
|
|
+ :rowspan="4"
|
|
|
+ :width="140"
|
|
|
+ label="回库附件"
|
|
|
+ align="center"
|
|
|
+ label-class-name="my-label"
|
|
|
+ class-name="my-content"
|
|
|
+ >
|
|
|
|
|
|
- <!-- style=" align-items: center"-->
|
|
|
- <!-- :src="outboundData.attachments"-->
|
|
|
- <!-- :zoom-rate="1.2"-->
|
|
|
- <!-- :max-scale="7"-->
|
|
|
- <!-- :min-scale="0.2"-->
|
|
|
- <!-- :preview-src-list="outboundData.attachments"-->
|
|
|
- <!-- :initial-index="index"-->
|
|
|
- <!-- fit="cover"-->
|
|
|
- <!-- />-->
|
|
|
- <!-- </div>-->
|
|
|
+ <div class="demo-image__preview" v-if="outboundData && outboundData.sampleStatus">
|
|
|
+ <!-- <a :href="outboundData.sampleStatus" style="color: #dcb56d-->
|
|
|
+ <!-- ; text-decoration: none;" download>下载附件</a>-->
|
|
|
+ <el-image
|
|
|
+ v-if="outboundData.sampleStatus.includes('image')"
|
|
|
+ class="h-80px w-80px"
|
|
|
+ lazy
|
|
|
+ :src="outboundData.sampleStatus"
|
|
|
+ :preview-src-list="[outboundData.sampleStatus]"
|
|
|
+ preview-teleported
|
|
|
+ fit="cover"
|
|
|
+ />
|
|
|
+ <el-link
|
|
|
+ v-else-if="outboundData.sampleStatus.includes('pdf')"
|
|
|
+ type="primary"
|
|
|
+ :href="outboundData.sampleStatus"
|
|
|
+ :underline="false"
|
|
|
+ target="_blank"
|
|
|
+ >预览</el-link
|
|
|
+ >
|
|
|
+ <el-link v-else type="primary" download :href="outboundData.sampleStatus" :underline="false" target="_blank"
|
|
|
+ >下载</el-link
|
|
|
+ >
|
|
|
+
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </el-descriptions-item>
|
|
|
+ </el-descriptions>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
-
|
|
|
</el-card>
|
|
|
</el-col>
|
|
|
|
|
@@ -150,16 +290,7 @@
|
|
|
@pagination="getList"
|
|
|
/>
|
|
|
</el-col>
|
|
|
- <el-col>
|
|
|
- <div v-if="outboundData.status === 0 || outboundData.status === 1 ">
|
|
|
- <el-button
|
|
|
- @click="handleApproval"
|
|
|
- type="primary"
|
|
|
- style="float:right; margin-left: 20px;margin-top:10px;margin-bottom:10px"
|
|
|
- > 审批
|
|
|
- </el-button>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
+
|
|
|
</el-row>
|
|
|
</el-card>
|
|
|
</el-col>
|
|
@@ -179,7 +310,7 @@ import {formatDate} from "@/utils/formatTime";
|
|
|
import {reactive, ref, computed} from "vue";
|
|
|
import {DICT_TYPE} from "@/utils/dict";
|
|
|
import Approval from "@/views/museums/specimenoutbound/approval.vue"
|
|
|
-
|
|
|
+const user=ref('')
|
|
|
const size = ref<ComponentSize>('large')
|
|
|
let outboundData = ref(null); // 初始化响应式数据
|
|
|
const {query} = useRoute() // 查询参数
|
|
@@ -207,6 +338,7 @@ const getList = async () => {
|
|
|
const data = await SpecimenOutboundApi.getSpecimenOutboundDetailsPage(id, pageParams)
|
|
|
list.value = data.specimenInfoList.list
|
|
|
total.value = data.specimenInfoList.total
|
|
|
+ user.value =await SpecimenOutboundApi.getUserInfo()
|
|
|
} finally {
|
|
|
loading.value = false
|
|
|
}
|
|
@@ -226,15 +358,15 @@ const fetchData = async () => {
|
|
|
}
|
|
|
|
|
|
/**审批状态**/
|
|
|
-const StatusText = computed(() => {
|
|
|
+const statusText = computed(() => {
|
|
|
if (outboundData.value === null) {
|
|
|
return '';
|
|
|
}
|
|
|
switch (outboundData.value.status) {
|
|
|
case 0:
|
|
|
- return '待审批';
|
|
|
+ return '审批中';
|
|
|
case 1:
|
|
|
- return '一审通过';
|
|
|
+ return '二审中';
|
|
|
case 2:
|
|
|
return '一审驳回';
|
|
|
case 3:
|
|
@@ -242,7 +374,7 @@ const StatusText = computed(() => {
|
|
|
case 4:
|
|
|
return '已回库';
|
|
|
case 5:
|
|
|
- return '二审通过';
|
|
|
+ return '审批通过';
|
|
|
case 6:
|
|
|
return '二审驳回';
|
|
|
default:
|