病例库影像

main
SWX\10484 4 days ago
parent 480c0c6531
commit 358e845342
  1. 621
      src/views/cases/detail.vue

@ -6,63 +6,43 @@
<el-card class="left-card" shadow="never">
<div slot="header" class="card-header">
<span>超声影像</span>
<el-button
type="text"
icon="el-icon-plus"
@click="handleOpenFile"
:disabled="
form.status != 1 && form.status != 5 && form.status != 15
"
>
<el-button type="text" icon="el-icon-plus" @click="handleOpenFile" :disabled="form.status != 1 && form.status != 5 && form.status != 15
">
新增
</el-button>
</div>
<el-table
:data="form.attachment"
:show-header="false"
height="calc(100vh - 239px)"
@row-dblclick="handleAttachmentClick"
>
<el-table :data="form.attachment" :show-header="false" height="calc(100vh - 239px)"
@row-dblclick="handleAttachmentClick">
<el-table-column align="center">
<template slot-scope="scope">
<div
class="img-wrapper"
@click="handleImageClick(scope.row)"
@dblclick="handleAttachmentClick(scope.row)"
>
<el-image
:src="
$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS +
<div class="img-wrapper" @click="handleImageClick(scope.row)"
@dblclick="handleAttachmentClick(scope.row)">
<el-image v-if="!isVideoFile(scope.row)" :src="$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS +
scope.row.bucket_compress +
'/' +
scope.row.object_compress
" fit="cover" style="width: 100px; height: 80px; pointer-events: none" />
<div v-else class="video-thumb-wrapper">
<video :src="$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS +
scope.row.bucket_compress +
'/' +
scope.row.object_compress
"
fit="cover"
style="width: 100px; height: 80px; pointer-events: none"
/>
" preload="metadata"
style="width: 100px; height: 80px; object-fit: cover; pointer-events: none" />
<i class="el-icon-video-play video-play-icon"></i>
</div>
</div>
<div class="img-status">上传完成</div>
<el-button
type="text"
icon="el-icon-delete"
@click="handleDeleteImg(scope.row, scope.$index)"
v-if="
<el-button type="text" icon="el-icon-delete" @click="handleDeleteImg(scope.row, scope.$index)" v-if="
form.status == 1 || form.status == 5 || form.status == 15
"
>
">
删除
</el-button>
</template>
</el-table-column>
</el-table>
<input
ref="fileInput"
type="file"
multiple
accept="image/*"
style="display: none"
@change="handleFileChange"
/>
<input ref="fileInput" type="file" multiple accept="image/*,video/*" style="display: none"
@change="handleFileChange" />
</el-card>
</el-col>
<!-- 中间报告表单 -->
@ -87,56 +67,34 @@
}}
</span>
<div class="btn-group">
<el-button
type="text"
icon="el-icon-check"
@click="handlePass()"
v-if="form.status == 10 && form.reviewer_id == userInfo.id"
>
<el-button type="text" icon="el-icon-check" @click="handlePass()"
v-if="form.status == 10 && form.reviewer_id == userInfo.id">
审核通过
</el-button>
<el-button
type="text"
icon="el-icon-close"
@click="handleReject()"
v-if="form.status == 10 && form.reviewer_id == userInfo.id"
>
<el-button type="text" icon="el-icon-close" @click="handleReject()"
v-if="form.status == 10 && form.reviewer_id == userInfo.id">
审核拒绝
</el-button>
<el-button
type="text"
icon="el-icon-check"
@click="
<el-button type="text" icon="el-icon-check" @click="
handleSave(
'您确定暂存病例吗,暂存会保存您当前的内容修改',
{ ...form, submit_type: 0 },
'暂存成功'
)
"
v-if="form.status == 1 || form.status == 5 || form.status == 15"
>
" v-if="form.status == 1 || form.status == 5 || form.status == 15">
暂存
</el-button>
<el-button
type="text"
icon="el-icon-check"
@click="
<el-button type="text" icon="el-icon-check" @click="
handleSave(
'您确定提交病例吗,提交成功之后不可再编辑',
{ ...form, submit_type: 1 },
'提交成功'
)
"
v-if="form.status == 1 || form.status == 5 || form.status == 15"
>
" v-if="form.status == 1 || form.status == 5 || form.status == 15">
提交
</el-button>
<el-button
type="text"
icon="el-icon-printer"
@click="handlePrint"
v-if="form.status == 10 || form.status == 20"
>
<el-button type="text" icon="el-icon-printer" @click="handlePrint"
v-if="form.status == 10 || form.status == 20">
打印
</el-button>
<el-button type="text" icon="el-icon-close" @click="handleClose">
@ -152,15 +110,13 @@
<el-form ref="form" :model="form" label-width="90px">
<el-row :gutter="20" class="green-line" id="anchor-top">
<el-col :span="20">
<div
style="
<div style="
text-align: center;
vertical-align: middle;
color: #606266;
box-sizing: border-box;
font-weight: 700;
"
>
">
远程超声检查报告
</div>
</el-col>
@ -188,11 +144,7 @@
</el-form-item>
</el-col>
<el-col :span="3">
<el-form-item
label="年龄"
prop="patient_age"
label-width="60px"
>
<el-form-item label="年龄" prop="patient_age" label-width="60px">
{{ form.patient_age }}
{{
form.patient_age_type
@ -235,7 +187,7 @@
</el-col>
<el-col :span="24">
<el-form-item label="检查设备" prop="equipments">
{{ form.equipments.map((i) => i.name).join("|") }}
{{form.equipments.map((i) => i.name).join("|")}}
</el-form-item>
</el-col>
<el-col :span="24" class="green-line">
@ -251,125 +203,81 @@
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col
:span="6"
v-for="(item, idx) in form.attachment"
:key="idx"
v-show="item.showInDoc == 1"
>
<el-form-item>
<el-image
:src="
$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS +
<!-- 影像区域 -->
<el-row :gutter="20" class="imaging-row">
<el-row :span="24" style="display: flex;justify-content: center;">
<el-form-item class="imaging-item" v-for="(item, idx) in form.attachment"
v-show="item.showInDoc == 1" :key="idx">
<el-image v-if="!isVideoFile(item)" :src="$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS +
item.bucket_compress +
'/' +
item.object_compress
"
fit="cover"
:preview-src-list="[
" fit="cover" :preview-src-list="[
$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS +
item.bucket_compress +
'/' +
item.object_compress,
]"
style="width: 100px; height: 80px"
/>
]" style="width: 100px; height: 80px" />
<div v-else class="video-thumb-wrapper">
<video :src="$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS +
item.bucket_compress +
'/' +
item.object_compress
" preload="metadata" controls style="width: 100px; height: 80px; object-fit: cover" />
</div>
</el-form-item>
</el-col>
</el-row>
<!-- <el-col :span="6">
</el-col> -->
<el-col :span="24" id="anchor-comment">
<el-form-item label="超声所见">
<el-input
v-model="form.text_comment"
type="textarea"
:rows="9"
:readonly="
form.status != 1 &&
<el-input v-model="form.text_comment" type="textarea" :rows="9" :readonly="form.status != 1 &&
form.status != 5 &&
form.status != 15
"
/>
" />
</el-form-item>
</el-col>
<el-col :span="24" id="anchor-conclusion">
<el-form-item label="检查结论">
<el-input
v-model="form.text_conclusion"
type="textarea"
:rows="4"
:readonly="
form.status != 1 &&
<el-input v-model="form.text_conclusion" type="textarea" :rows="4" :readonly="form.status != 1 &&
form.status != 5 &&
form.status != 15
"
/>
" />
</el-form-item>
</el-col>
<el-col :span="24" id="anchor-expert">
<el-form-item label="专家意见" />
</el-col>
<el-col
:span="24"
v-for="(item, idx) in form.experts"
:key="idx"
class="expert-item"
>
<el-col :span="24" v-for="(item, idx) in form.experts" :key="idx" class="expert-item">
<el-form-item :label="item.expert_name">
<el-input
v-model="item.user_comment"
type="textarea"
:rows="3"
:readonly="
(form.status != 1 &&
<el-input v-model="item.user_comment" type="textarea" :rows="3" :readonly="(form.status != 1 &&
form.status != 5 &&
form.status != 15) ||
item.confirm > 0 ||
item.expert_id != userInfo.id
"
/>
" />
<div class="expert-btns">
<el-button
type="text"
icon="el-icon-document-copy"
:disabled="
(form.status != 1 &&
<el-button type="text" icon="el-icon-document-copy" :disabled="(form.status != 1 &&
form.status != 5 &&
form.status != 15) ||
!item.user_comment ||
!item.user_comment.trim()
"
@click="handleCopyAllExpertComments(item)"
>
" @click="handleCopyAllExpertComments(item)">
全部复制
</el-button>
<el-button
type="text"
icon="el-icon-check"
:disabled="
form.status != 1 &&
<el-button type="text" icon="el-icon-check" :disabled="form.status != 1 &&
form.status != 5 &&
form.status != 15
"
v-if="
" v-if="
item.confirm == 0 && item.expert_id == userInfo.id
"
>
">
一键同意
</el-button>
<el-button
type="text"
icon="el-icon-check"
disabled
v-else-if="item.confirm > 0"
>
<el-button type="text" icon="el-icon-check" disabled v-else-if="item.confirm > 0">
专家已确认
</el-button>
<el-button
type="text"
icon="el-icon-warning"
disabled
v-else
>
<el-button type="text" icon="el-icon-warning" disabled v-else>
待确认
</el-button>
</div>
@ -384,31 +292,17 @@
<el-col :span="6">
<el-form-item label="审核人">
<el-select
v-model="form.reviewer_id"
clearable
filterable
style="width: 100%"
:disabled="
form.status != 1 &&
<el-select v-model="form.reviewer_id" clearable filterable style="width: 100%" :disabled="form.status != 1 &&
form.status != 5 &&
form.status != 15
"
>
<el-option
v-for="item in reviewersList"
:key="item.id"
:label="item.name"
:value="item.id"
>
">
<el-option v-for="item in reviewersList" :key="item.id" :label="item.name" :value="item.id">
<span style="float: left">{{ item.name }}</span>
<span
style="
<span style="
float: right;
color: #8492a6;
font-size: 13px;
"
>
">
{{ item.username }}
</span>
</el-option>
@ -417,15 +311,10 @@
</el-col>
<el-col :span="12" id="anchor-bottom">
<el-form-item>
<el-checkbox
:checked="form.negative === 0"
:disabled="
form.status != 1 &&
<el-checkbox :checked="form.negative === 0" :disabled="form.status != 1 &&
form.status != 5 &&
form.status != 15
"
@change="(val) => (form.negative = val ? 0 : 1)"
>
" @change="(val) => (form.negative = val ? 0 : 1)">
阳性
</el-checkbox>
</el-form-item>
@ -435,39 +324,19 @@
</div>
<div class="anchor-nav">
<el-button type="text" />
<el-button
type="primary"
circle
@click="scrollToAnchor('anchor-top')"
>
<el-button type="primary" circle @click="scrollToAnchor('anchor-top')">
</el-button>
<el-button
type="primary"
circle
@click="scrollToAnchor('anchor-comment')"
>
<el-button type="primary" circle @click="scrollToAnchor('anchor-comment')">
</el-button>
<el-button
type="primary"
circle
@click="scrollToAnchor('anchor-conclusion')"
>
<el-button type="primary" circle @click="scrollToAnchor('anchor-conclusion')">
</el-button>
<el-button
type="primary"
circle
@click="scrollToAnchor('anchor-expert')"
>
<el-button type="primary" circle @click="scrollToAnchor('anchor-expert')">
</el-button>
<el-button
type="primary"
circle
@click="scrollToAnchor('anchor-bottom')"
>
<el-button type="primary" circle @click="scrollToAnchor('anchor-bottom')">
</el-button>
</div>
@ -480,100 +349,42 @@
<el-tabs v-model="activeTab">
<el-tab-pane label="部位模板" name="template">
<div class="template-buttons">
<el-button
type="text"
icon="el-icon-plus"
@click="openTemplateDialog({})"
:disabled="
form.status != 1 && form.status != 5 && form.status != 15
"
>
<el-button type="text" icon="el-icon-plus" @click="openTemplateDialog({})" :disabled="form.status != 1 && form.status != 5 && form.status != 15
">
新增
</el-button>
<el-button
type="text"
icon="el-icon-delete"
@click="deleteTemplate(templateForm)"
:disabled="
form.status != 1 &&
<el-button type="text" icon="el-icon-delete" @click="deleteTemplate(templateForm)" :disabled="form.status != 1 &&
form.status != 5 &&
templateForm.id != undefined
"
>
">
删除
</el-button>
<el-button
type="text"
icon="el-icon-edit"
@click="openTemplateDialog(templateForm)"
:disabled="
form.status != 1 &&
<el-button type="text" icon="el-icon-edit" @click="openTemplateDialog(templateForm)" :disabled="form.status != 1 &&
form.status != 5 &&
templateForm.id != undefined
"
>
">
编辑
</el-button>
</div>
<el-form
label-position="top"
:model="templateForm"
class="template-form"
>
<el-form label-position="top" :model="templateForm" class="template-form">
<el-form-item>
<el-select
v-model="templateForm.id"
style="width: 100%"
@change="changeTemplate"
:disabled="
form.status != 1 && form.status != 5 && form.status != 15
"
>
<el-option
v-for="item in templateList"
:key="item.id"
:label="item.name"
:value="item.id"
/>
<el-select v-model="templateForm.id" style="width: 100%" @change="changeTemplate" :disabled="form.status != 1 && form.status != 5 && form.status != 15
">
<el-option v-for="item in templateList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="超声所见">
<el-input
v-model="templateForm.comment"
type="textarea"
readonly
:rows="13"
placeholder="请输入超声所见"
/>
<el-button
type="text"
icon="el-icon-check"
@click="handleComment"
style="float: right"
:disabled="
form.status != 1 && form.status != 5 && form.status != 15
"
>
<el-input v-model="templateForm.comment" type="textarea" readonly :rows="13" placeholder="请输入超声所见" />
<el-button type="text" icon="el-icon-check" @click="handleComment" style="float: right" :disabled="form.status != 1 && form.status != 5 && form.status != 15
">
应用
</el-button>
</el-form-item>
<el-form-item label="检查结论">
<el-input
v-model="templateForm.conclusion"
type="textarea"
readonly
:rows="4"
placeholder="请输入检查结论"
/>
<el-button
type="text"
icon="el-icon-check"
@click="handleCnclusion"
style="float: right"
:disabled="
form.status != 1 && form.status != 5 && form.status != 15
"
>
<el-input v-model="templateForm.conclusion" type="textarea" readonly :rows="4"
placeholder="请输入检查结论" />
<el-button type="text" icon="el-icon-check" @click="handleCnclusion" style="float: right" :disabled="form.status != 1 && form.status != 5 && form.status != 15
">
应用
</el-button>
</el-form-item>
@ -582,45 +393,26 @@
<!-- 片语功能改造 -->
<el-tab-pane label="片语" name="phrase">
<div class="phrase-buttons">
<el-button
type="text"
icon="el-icon-plus"
@click="
<el-button type="text" icon="el-icon-plus" @click="
handleAddPhrase({
id: 0,
phrase: '',
})
"
:disabled="
form.status != 1 && form.status != 5 && form.status != 15
"
>
" :disabled="form.status != 1 && form.status != 5 && form.status != 15
">
新增
</el-button>
</div>
<el-table
:data="phraseList"
style="width: 100%"
:show-header="false"
height="calc(100vh - 266px)"
>
<el-table-column
prop="phrase"
label="内容"
show-overflow-tooltip
/>
<el-table :data="phraseList" style="width: 100%" :show-header="false" height="calc(100vh - 266px)">
<el-table-column prop="phrase" label="内容" show-overflow-tooltip />
<el-table-column label="操作" width="50">
<template slot-scope="scope">
<el-dropdown
:disabled="
form.status != 1 &&
<el-dropdown :disabled="form.status != 1 &&
form.status != 5 &&
form.status != 15
"
@command="
" @command="
(command) => handlePhraseCommand(command, scope.row)
"
>
">
<el-button type="text" icon="el-icon-more" />
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="edit">
@ -647,32 +439,12 @@
</el-row>
<!-- 模板弹窗新增 + 编辑 共用 -->
<el-dialog
:title="dialogTitle"
:visible.sync="templateDialogOpen"
width="33%"
>
<el-form
:model="newTemplateForm"
:rules="templateFormRules"
ref="templateFormRef"
label-width="80px"
>
<el-dialog :title="dialogTitle" :visible.sync="templateDialogOpen" width="33%">
<el-form :model="newTemplateForm" :rules="templateFormRules" ref="templateFormRef" label-width="80px">
<el-form-item label="检查部位" prop="part_id">
<el-select
v-model="newTemplateForm.part_id"
style="width: 100%"
placeholder="请选择检查部位"
filterable
clearable
>
<el-select v-model="newTemplateForm.part_id" style="width: 100%" placeholder="请选择检查部位" filterable clearable>
<el-option-group v-for="group in partIdList" :key="group.id">
<el-option
v-for="item in group.child"
:key="item.id"
:label="item.name"
:value="item.id"
>
<el-option v-for="item in group.child" :key="item.id" :label="item.name" :value="item.id">
<span style="float: left">{{ item.name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">
{{ group.name }}
@ -682,26 +454,13 @@
</el-select>
</el-form-item>
<el-form-item label="标题" prop="name">
<el-input
v-model="newTemplateForm.name"
placeholder="请输入模板标题"
/>
<el-input v-model="newTemplateForm.name" placeholder="请输入模板标题" />
</el-form-item>
<el-form-item label="超声所见">
<el-input
type="textarea"
:rows="6"
v-model="newTemplateForm.comment"
placeholder="请输入超声所见"
/>
<el-input type="textarea" :rows="6" v-model="newTemplateForm.comment" placeholder="请输入超声所见" />
</el-form-item>
<el-form-item label="检查结论">
<el-input
type="textarea"
:rows="6"
v-model="newTemplateForm.conclusion"
placeholder="请输入检查结论"
/>
<el-input type="textarea" :rows="6" v-model="newTemplateForm.conclusion" placeholder="请输入检查结论" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -711,19 +470,9 @@
</el-dialog>
<!-- 片语弹窗创建 + 更新 共用 -->
<el-dialog :title="phraseTitle" :visible.sync="phraseOpen" width="33%">
<el-form
ref="phraseFormRef"
:model="phraseForm"
:rules="phraseRules"
label-width="60px"
>
<el-form ref="phraseFormRef" :model="phraseForm" :rules="phraseRules" label-width="60px">
<el-form-item label="内容" prop="phrase">
<el-input
type="textarea"
:rows="10"
v-model="phraseForm.phrase"
placeholder="请输入片语内容"
/>
<el-input type="textarea" :rows="10" v-model="phraseForm.phrase" placeholder="请输入片语内容" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -733,27 +482,12 @@
</el-dialog>
<!-- 分享弹窗 - 选择联系人 -->
<CreateGroupDialog
ref="createGroupDialogRef"
title="选择人员"
:min-select-count="1"
@confirm="handleShareToContacts"
/>
<CreateGroupDialog ref="createGroupDialogRef" title="选择人员" :min-select-count="1" @confirm="handleShareToContacts" />
<!-- 驳回原因弹窗 -->
<el-dialog title="审核拒绝" :visible.sync="rejectDialogOpen" width="30%">
<el-form
:model="rejectReason"
label-width="80px"
ref="rejectFormRef"
:rules="rejectRules"
>
<el-form :model="rejectReason" label-width="80px" ref="rejectFormRef" :rules="rejectRules">
<el-form-item label="拒绝理由" prop="comment">
<el-input
type="textarea"
:rows="4"
v-model="rejectReason.comment"
placeholder="请输入拒绝理由"
/>
<el-input type="textarea" :rows="4" v-model="rejectReason.comment" placeholder="请输入拒绝理由" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -764,16 +498,12 @@
<!-- 打印预览弹窗 -->
<UltrasoundReportPrint ref="UltrasoundReportPrintRef" />
<!-- 图片预览弹窗 -->
<el-dialog
:visible.sync="imagePreviewVisible"
title="影像预览"
width="80%"
top="3vh"
destroy-on-close
>
<!-- 图片/视频预览弹窗 -->
<el-dialog :visible.sync="imagePreviewVisible" title="影像预览" width="80%" top="3vh" destroy-on-close>
<div class="image-preview-body">
<img :src="imagePreviewUrl" alt="预览" />
<img v-if="imagePreviewType === 'image'" :src="imagePreviewUrl" alt="预览" />
<video v-else-if="imagePreviewType === 'video'" :src="imagePreviewUrl" controls autoplay
style="max-width: 100%; max-height: 75vh; outline: none" />
</div>
</el-dialog>
</div>
@ -901,6 +631,7 @@ export default {
// ====================== ======================
imagePreviewVisible: false,
imagePreviewUrl: "",
imagePreviewType: "image", // 'image' | 'video'
imageClickTimer: null,
};
},
@ -971,6 +702,20 @@ export default {
],
},
},
{
description: "Videos",
accept: {
"video/*": [
".mp4",
".avi",
".mov",
".wmv",
".flv",
".mkv",
".webm",
],
},
},
],
});
//
@ -992,10 +737,12 @@ export default {
this.$refs.fileInput.click();
},
async handleFileChange(event) {
const file = event.target.files[0];
if (!file) return;
const files = event.target.files;
if (!files || files.length === 0) return;
try {
for (const file of files) {
await this.uploadImageToMinIO(file);
}
} catch (error) {
console.error("超声影像上传失败:", error);
this.$modal.msgError("超声影像上传失败: " + error.message);
@ -1027,7 +774,7 @@ export default {
objectName,
file,
{},
(percent) => {}
(percent) => { }
);
console.log("MinIO 上传成功:", result);
@ -1057,10 +804,33 @@ export default {
clearTimeout(this.imageClickTimer);
this.imageClickTimer = null;
}
//
if (this.isVideoFile(row)) {
this.imagePreviewUrl =
this.$store.state.user.netConfig.MINIO_ENDPOINT_HTTPS +
row.bucket_compress +
"/" +
row.object_compress;
this.imagePreviewType = "video";
this.imagePreviewVisible = true;
return;
}
//
row.showInDoc = 1;
},
// 300ms
//
isVideoFile(row) {
const videoExts = ["mp4", "avi", "mov", "wmv", "flv", "mkv", "webm"];
const ext = (row.object_compress || "")
.split(".")
.pop()
.toLowerCase();
return videoExts.includes(ext);
},
// 300ms
handleImageClick(row) {
//
if (this.isVideoFile(row)) return;
if (this.imageClickTimer) {
clearTimeout(this.imageClickTimer);
this.imageClickTimer = null;
@ -1073,6 +843,7 @@ export default {
row.bucket_compress +
"/" +
row.object_compress;
this.imagePreviewType = "image";
this.imagePreviewVisible = true;
}, 300);
},
@ -1083,7 +854,7 @@ export default {
this.form.attachment.splice(index, 1);
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
.catch(() => { });
},
//
handlePass() {
@ -1100,7 +871,7 @@ export default {
this.$modal.msgSuccess("审核通过成功");
this.getReportInfo(this.form.id);
})
.catch(() => {});
.catch(() => { });
},
// -
handleReject() {
@ -1217,7 +988,7 @@ export default {
this.getReportInfo(form.id);
this.$modal.msgSuccess(msg);
})
.catch(() => {});
.catch(() => { });
},
//
handlePrint() {
@ -1259,7 +1030,7 @@ export default {
.then(() => {
this.$router.back();
})
.catch(() => {});
.catch(() => { });
} else {
this.$router.back();
}
@ -1411,7 +1182,7 @@ export default {
this.loadTemplateList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
.catch(() => { });
},
// -
handleComment() {
@ -1480,7 +1251,7 @@ export default {
this.loadPhraseList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
.catch(() => { });
},
applyPhrase(row) {
postReportPhraseCount({ phrase_id: row.id }).then((res) => {
@ -1611,9 +1382,11 @@ export default {
background: #f0f0f0 !important;
}
}
.el-form-item {
margin-bottom: 5px !important;
}
/* 内部滚动区域高度自适应 */
.report-form {
height: calc(100vh - 239px);
@ -1699,6 +1472,7 @@ export default {
padding: 5px;
box-sizing: border-box;
}
/* 锚点导航:垂直排列,靠右固定,不滚动 */
.anchor-nav {
display: flex;
@ -1729,4 +1503,47 @@ export default {
display: inline-block;
cursor: pointer;
}
//
.video-thumb-wrapper {
position: relative;
display: inline-block;
width: 100px;
height: 80px;
cursor: pointer;
border-radius: 4px;
overflow: hidden;
background: #000;
video {
display: block;
width: 100%;
height: 100%;
}
}
//
.video-play-icon {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 28px;
color: rgba(255, 255, 255, 0.9);
pointer-events: none;
text-shadow: 0 0 4px rgba(0, 0, 0, 0.5);
}
//
.imaging-row {
justify-content: center;
}
.imaging-item {
::v-deep .el-form-item__content {
display: flex;
justify-content: center;
margin: 0 20px !important;
}
}
</style>
Loading…
Cancel
Save