增加一键复制功能,修改返修申请权限判断,添加复制插件库

This commit is contained in:
Euni4U 2024-12-26 10:44:28 +08:00
parent be889c5e23
commit 31c40d68f6
5 changed files with 86 additions and 26 deletions

View File

@ -65,6 +65,7 @@
"url": "^0.11.3",
"video.js": "^7.21.5",
"vue": "3.4.21",
"vue-clipboard3": "^2.0.0",
"vue-dompurify-html": "^4.1.4",
"vue-i18n": "9.10.2",
"vue-qrcode": "^2.2.2",

View File

@ -128,6 +128,9 @@ importers:
vue:
specifier: 3.4.21
version: 3.4.21(typescript@5.3.3)
vue-clipboard3:
specifier: ^2.0.0
version: 2.0.0
vue-dompurify-html:
specifier: ^4.1.4
version: 4.1.4(vue@3.4.21(typescript@5.3.3))
@ -2621,6 +2624,9 @@ packages:
resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==}
engines: {node: '>=18'}
clipboard@2.0.11:
resolution: {integrity: sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==}
cliui@6.0.0:
resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
@ -2917,6 +2923,9 @@ packages:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
delegate@3.2.0:
resolution: {integrity: sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==, tarball: https://r2.cnpmjs.org/delegate/-/delegate-3.2.0.tgz}
destr@2.0.3:
resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==}
@ -3066,7 +3075,7 @@ packages:
engines: {node: '>=6'}
errno@0.1.8:
resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, tarball: https://r2.cnpmjs.org/errno/-/errno-0.1.8.tgz}
hasBin: true
error-ex@1.3.2:
@ -3477,6 +3486,9 @@ packages:
globjoin@0.1.4:
resolution: {integrity: sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==}
good-listener@1.2.2:
resolution: {integrity: sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==, tarball: https://r2.cnpmjs.org/good-listener/-/good-listener-1.2.2.tgz}
gopd@1.0.1:
resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
@ -3602,7 +3614,7 @@ packages:
engines: {node: '>= 4'}
image-size@0.5.5:
resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==, tarball: https://r2.cnpmjs.org/image-size/-/image-size-0.5.5.tgz}
engines: {node: '>=0.10.0'}
hasBin: true
@ -4101,7 +4113,7 @@ packages:
resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==}
make-dir@2.1.0:
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, tarball: https://r2.cnpmjs.org/make-dir/-/make-dir-2.1.0.tgz}
engines: {node: '>=6'}
map-cache@0.2.2:
@ -4166,7 +4178,7 @@ packages:
engines: {node: '>= 0.6'}
mime@1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, tarball: https://r2.cnpmjs.org/mime/-/mime-1.6.0.tgz}
engines: {node: '>=4'}
hasBin: true
@ -4833,6 +4845,9 @@ packages:
scule@1.3.0:
resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
select@1.1.2:
resolution: {integrity: sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==, tarball: https://r2.cnpmjs.org/select/-/select-1.1.2.tgz}
selection-update@0.1.2:
resolution: {integrity: sha512-4jzoJNh7VT2s2tvm/kUSskSw7pD0BVcrrGccbfOMK+3AXLBPz6nIy1yo+pbXgvNoTNII96Pq92+sAY+rF0LUAA==}
@ -4950,7 +4965,7 @@ packages:
engines: {node: '>=0.10.0'}
source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, tarball: https://r2.cnpmjs.org/source-map/-/source-map-0.6.1.tgz}
engines: {node: '>=0.10.0'}
split-string@3.1.0:
@ -5152,6 +5167,9 @@ packages:
through@2.3.8:
resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
tiny-emitter@2.1.0:
resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==, tarball: https://r2.cnpmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz}
tiny-svg@2.2.4:
resolution: {integrity: sha512-NOi39lBknf4UdDEahNkbEAJnzhu1ZcN2j75IS2vLRmIhsfxdZpTChfLKBcN1ShplVmPIXJAIafk6YY5/Aa80lQ==}
@ -5452,6 +5470,9 @@ packages:
terser:
optional: true
vue-clipboard3@2.0.0:
resolution: {integrity: sha512-Q9S7dzWGax7LN5iiSPcu/K1GGm2gcBBlYwmMsUc5/16N6w90cbKow3FnPmPs95sungns4yvd9/+JhbAznECS2A==}
vue-demi@0.14.7:
resolution: {integrity: sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA==}
engines: {node: '>=12'}
@ -8291,6 +8312,12 @@ snapshots:
slice-ansi: 5.0.0
string-width: 7.1.0
clipboard@2.0.11:
dependencies:
good-listener: 1.2.2
select: 1.1.2
tiny-emitter: 2.1.0
cliui@6.0.0:
dependencies:
string-width: 4.2.3
@ -8563,6 +8590,8 @@ snapshots:
delayed-stream@1.0.0: {}
delegate@3.2.0: {}
destr@2.0.3: {}
diagram-js-direct-editing@1.8.0(diagram-js@7.9.0):
@ -9326,6 +9355,10 @@ snapshots:
globjoin@0.1.4: {}
good-listener@1.2.2:
dependencies:
delegate: 3.2.0
gopd@1.0.1:
dependencies:
get-intrinsic: 1.2.4
@ -10632,6 +10665,8 @@ snapshots:
scule@1.3.0: {}
select@1.1.2: {}
selection-update@0.1.2: {}
semver@5.7.2:
@ -11017,6 +11052,8 @@ snapshots:
through@2.3.8: {}
tiny-emitter@2.1.0: {}
tiny-svg@2.2.4: {}
tiny-svg@3.0.1: {}
@ -11398,6 +11435,10 @@ snapshots:
sass: 1.75.0
terser: 5.30.4
vue-clipboard3@2.0.0:
dependencies:
clipboard: 2.0.11
vue-demi@0.14.7(vue@3.4.21(typescript@5.3.3)):
dependencies:
vue: 3.4.21(typescript@5.3.3)

5
src/types/vue-clipboard3.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
declare module 'vue-clipboard3' {
export default function useClipboard(): {
toClipboard: (text: string) => Promise<void>;
}
}

View File

@ -28,29 +28,24 @@
<!--头部 功能按钮-->
<el-header style="height: 40px; padding: 0px">
<el-button-group class="ml-4" style="margin-top: 4px; margin-left: 0px">
<el-button type="primary" plain
><el-icon><Filter /></el-icon> </el-button
>
<el-popover
placement="bottom"
title="分享二维码"
:width="250"
trigger="click"
:disabled="isshare"
>
<template #reference>
<el-button type="primary" plain :icon="Share" @click="shareclick()"
>分享</el-button
>
</template>
<div>
<div style="display: flex; flex-direction: column; align-items: center;">
<canvas ref="qrcodeRef" width="200" height="200"></canvas>
<el-button
type="primary"
style="margin-top: 10px; width: 120px;"
@click="touchCopy"
>复制链接</el-button>
</div>
<template #reference>
<el-button type="primary" plain :icon="Share" @click="shareclick()">分享</el-button>
</template>
</el-popover>
<el-button type="primary" plain>
<el-icon><RefreshLeft /></el-icon> </el-button
>
<el-button
type="primary"
plain
@ -585,6 +580,8 @@ import ECGReport from '@/views/ECG/ECGWaring/ECGReport.vue'
import { WarningApi, WarningVO } from '@/api/system/warning'
import ECGCopmareDialog from '@/views/ECG/ECGCompare.vue'
import ECGApplyforRepair from '@/views/ECG/ECGModify/ECGApplyforRepair.vue'
import useClipboard from "vue-clipboard3";//
const { toClipboard } = useClipboard();
/** 提交表单 */
const emit = defineEmits(['success']) // success
const message = useMessage() //
@ -867,7 +864,8 @@ function ECGApplyDialog() {
rowinfo.value,
Profilevo.value.orgId,
Profilevo.value.doctorname,
Profilevo.value.id
Profilevo.value.id,
applyFormVO.value.reportstatus
)
}
//
@ -891,7 +889,16 @@ function iscorrect() {
function Refresh() {
isrefresh.value = isrefresh.value ? false : true
}
//
function touchCopy () {
//
if (rowinfo.value.pdfurl) {
toClipboard(rowinfo.value.pdfurl)
message.alertSuccess('复制成功')
} else {
message.alertError('请先保存后再进行复制')
}
}
/** 申请后更新上级机构字段*/
const getuporghiorgid = async (id: number, orgId: string) => {
try {

View File

@ -86,10 +86,8 @@
<script setup lang="ts">
import { ref } from 'vue'
import { getUserProfile, ProfileVO } from '@/api/system/user/profile'
import { formatDate } from '@/utils/formatTime'
import { ProcessManageApi,ProcessManageVO } from '@/api/ECG/processManage'
const Profilevo = ref<ProfileVO>({} as ProfileVO) //
const { t } = useI18n() //
const message = useMessage() //
const dialogVisible = ref(false) //
@ -112,7 +110,8 @@ const formData = ref({
remark: '',
processstats:'',
refuseremark: '',
pname: ''
pname: '',
reviewStatus:''
})
const formRef = ref()
const rules = {
@ -141,13 +140,14 @@ const resetForm = () => {
remark: '',
processstats:'',
refuseremark: '',
pname: ''
pname: '',
reviewStatus:''
}
}
const opendiag = async (type: string, row: any, orgId: string, doctorname: string,id:string) => {
const opendiag = async (type: string, row: any, orgId: string, doctorname: string,id:string,reviewStatus:string) => {
resetForm()
const data = await ProcessManageApi.getPage({
examId: row.examId
@ -159,6 +159,11 @@ const opendiag = async (type: string, row: any, orgId: string, doctorname: strin
message.alertError('已申请')
return
}
if(reviewStatus !== '已审核'){
dialogVisible.value = false
message.alertError('未审核无法进行申请返修')
return
}
rowinfo.value = row
//
@ -168,6 +173,7 @@ const opendiag = async (type: string, row: any, orgId: string, doctorname: strin
formData.value.pname = row.pname
formData.value.applyDoctor = doctorname
formData.value.userId = id
formData.value.reviewStatus = reviewStatus
dialogTitle.value = t('action.' + type)
if(data?.list?.[0]?.processstats === 0){
dialogVisible.value = false