caiyiling 2024-05-08 10:14:22 +08:00
commit 0abd32bca3
12 changed files with 222 additions and 165 deletions

View File

@ -186,7 +186,6 @@ export default {
this.dialogVisible = true;
},
handleRemove(file) {
console.log(1111111111);
this.fileList = [];
this.$emit("update:path", null);
},

View File

@ -92,7 +92,7 @@
prop="CalledAE"
:label="$t('trials:inspection:table:CalledAE')"
show-overflow-tooltip
min-width="140"
min-width="120"
>
</el-table-column>
<!--Calling AE-->
@ -100,7 +100,7 @@
prop="CallingAE"
:label="$t('trials:inspection:table:CallingAE')"
show-overflow-tooltip
min-width="140"
min-width="120"
>
</el-table-column>
<!--序列数量-->
@ -109,7 +109,7 @@
prop="SeriesCount"
:label="$t('trials:audit:table:seriesCount')"
show-overflow-tooltip
min-width="140"
min-width="100"
sortable="custom"
></el-table-column>
<!--图像数量-->
@ -118,7 +118,7 @@
prop="InstanceCount"
:label="$t('trials:audit:table:instanceCount')"
show-overflow-tooltip
min-width="140"
min-width="100"
sortable="custom"
></el-table-column>
<!--检查日期-->
@ -127,7 +127,7 @@
prop="StudyTime"
:label="$t('trials:audit:table:studyDate')"
show-overflow-tooltip
min-width="140"
min-width="180"
sortable="custom"
></el-table-column>
<!--操作-->

View File

@ -4,7 +4,7 @@
ref="mar"
hspace="0"
direction="left"
width="500"
max-width="500"
@mouseout="start()"
@mouseover="stop()"
>

View File

@ -121,6 +121,7 @@
:key="item.Id"
:label="item.CriterionName"
:value="item.CriterionType"
:title="item.Description"
/>
</el-select>
</el-form-item>
@ -277,11 +278,11 @@ export default {
message: `${this.$t("common:ruleMessage:maxLength")} 200`,
trigger: "blur",
},
{
pattern: /^[\u4e00-\u9fa5a-zA-Z\/\\]+$/,
message: this.$t("trisals:trials-list:formRule:onlyEN"),
trigger: "blur",
},
// {
// pattern: /^[\u4e00-\u9fa5a-zA-Z\/\\]+$/,
// message: this.$t("trisals:trials-list:formRule:onlyEN"),
// trigger: "blur",
// },
],
TrialType: [
{

View File

@ -145,12 +145,14 @@
prop="TrialCode"
:label="$t('trials:trials-list:table:trialId')"
show-overflow-tooltip
min-width="100"
sortable="custom"
/>
<el-table-column
prop="ResearchProgramNo"
:label="$t('trials:trials-list:table:researchNumber')"
show-overflow-tooltip
min-width="120"
sortable="custom"
/>
@ -158,12 +160,14 @@
prop="ExperimentName"
:label="$t('trials:trials-list:table:experimentName')"
show-overflow-tooltip
min-width="100"
sortable="custom"
/>
<el-table-column
prop="Sponsor"
:label="$t('trials:trials-list:table:sponsor')"
min-width="100"
show-overflow-tooltip
sortable="custom"
/>
@ -225,20 +229,28 @@
show-overflow-tooltip
v-if="hasPermi(['role:pm', 'role:pi', 'role:sr'])"
/>
<!--到期日-->
<el-table-column
prop="AuthorizationDate"
:label="$t('trials:trials-list:table:dateAuthorized')"
show-overflow-tooltip
min-width="180"
sortable="custom"
/>
<!-- <el-table-column
prop="CreateTime"
:label="$t('trials:trials-list:table:createDate')"
show-overflow-tooltip
sortable="custom"
/>
/> -->
<!--授权时长-->
<el-table-column
<!-- <el-table-column
prop="AuthorizationDuration"
:label="$t('trials:trials-list:form:projectCycle')"
show-overflow-tooltip
sortable="custom"
/>
<el-table-column label="" min-width="150" align="left" fixed="right">
/> -->
<el-table-column label="" min-width="200" align="left" fixed="right">
<template slot-scope="scope">
<!-- 详情 -->
<el-button

View File

@ -108,7 +108,7 @@
height="100"
@sort-change="handleSortByColumn"
>
<el-table-column width="40">
<el-table-column min-width="20">
<template slot-scope="scope">
<i
v-if="
@ -127,6 +127,7 @@
:label="$t('trials:uploadMonitor:table:subjectId')"
show-overflow-tooltip
sortable="custom"
min-width="120"
/>
<!-- 患者编号 -->
<el-table-column
@ -153,6 +154,7 @@
:label="$t('trials:researchStaff:table:Name')"
show-overflow-tooltip
sortable="custom"
min-width="100"
/>
<!-- 性别 -->
<el-table-column
@ -171,6 +173,7 @@
:label="$t('trials:uploadMonitor:table:visitName')"
show-overflow-tooltip
sortable="custom"
min-width="100"
>
<template slot-scope="scope">
<el-button type="text" @click="handleOpenStudyDialog(scope.row)">
@ -184,6 +187,7 @@
:label="$t('trials:trials-panel:table:EarliestScanDate')"
show-overflow-tooltip
sortable="custom"
min-width="140"
/>
<!-- 最晚拍片日期 -->
<el-table-column
@ -191,6 +195,7 @@
:label="$t('trials:linkedRP:table:latestScanDate')"
show-overflow-tooltip
sortable="custom"
min-width="120"
/>
<!-- 状态 -->
<el-table-column
@ -217,6 +222,7 @@
prop="PackState"
:label="$t('trials:hirVisit:table:PackState')"
show-overflow-tooltip
min-width="100"
sortable="custom"
>
<template slot-scope="scope">
@ -238,19 +244,20 @@
prop="SubmitTime"
:label="$t('trials:crcUpload:table:submitTime')"
show-overflow-tooltip
min-width="100"
sortable="custom"
/>
<!--操作-->
<el-table-column
:label="$t('common:action:action')"
min-width="100"
min-width="200"
fixed="right"
v-if="
hasPermi([
'trials:trials-panel:hirVisit:edit',
'trials:trials-panel:hirVisit:submit',
'trials:trials-panel:hirVisit:remove',
'trials:trials-panel:hirVisit:downlaod',
'trials:trials-panel:hirVisit:download',
])
"
>

View File

@ -8,7 +8,7 @@
:rules="rules"
class="audit-form"
>
<div class="base-dialog-body" style="min-height: 500px;">
<div class="base-dialog-body" style="min-height: 500px">
<!-- 是否认可 -->
<el-form-item
:label="$t('trials:auditRecord:table:auditResult')"
@ -31,14 +31,14 @@
<!-- 不认可原因 -->
<el-form-item
v-if="form.PIAuditState===1"
v-if="form.PIAuditState === 1"
:label="$t('trials:pendingReview:title:notAgreeReason')"
prop="NotAgreeReason"
>
<el-input
v-model="form.NotAgreeReason"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"
:autosize="{ minRows: 2, maxRows: 4 }"
:placeholder="$t('common:ruleMessage:specify')"
maxlength="500"
show-word-limit
@ -52,16 +52,14 @@
<el-input
v-model="form.PIAuditNote"
type="textarea"
:autosize="{ minRows: 2, maxRows: 4}"
:autosize="{ minRows: 2, maxRows: 4 }"
:placeholder="$t('common:ruleMessage:specify')"
maxlength="500"
show-word-limit
/>
</el-form-item>
<!-- 相关截图 -->
<el-form-item
:label="$t('trials:pendingReview:title:screenshots')"
>
<el-form-item :label="$t('trials:pendingReview:title:screenshots')">
<el-upload
action=""
:accept="accept"
@ -73,13 +71,13 @@
:file-list="fileList"
>
<i slot="default" class="el-icon-plus" />
<div slot="file" slot-scope="{file}">
<div slot="file" slot-scope="{ file }">
<img
class="el-upload-list__item-thumbnail"
:src="OSSclientConfig.basePath + file.url"
alt=""
crossorigin="anonymous"
>
/>
<span class="el-upload-list__item-actions">
<span
class="el-upload-list__item-preview"
@ -97,42 +95,35 @@
</span>
</div>
</el-upload>
<el-dialog
append-to-body
:visible.sync="imgVisible"
width="600px"
>
<el-dialog append-to-body :visible.sync="imgVisible" width="600px">
<el-image :src="OSSclientConfig.basePath + imageUrl" width="100%">
<div slot="placeholder" class="image-slot">
{{ $t('trials:medicalFeedback:message:loading') }}<span class="dot">...</span>
{{ $t("trials:medicalFeedback:message:loading")
}}<span class="dot">...</span>
</div>
</el-image>
</el-dialog>
</el-form-item>
<!-- 阅片结果 -->
<el-form-item
:label="$t('trials:auditRecord:table:readingResult')"
>
<el-button type="text" @click="handleView">{{ $t('common:button:view') }}</el-button>
<el-form-item :label="$t('trials:auditRecord:table:readingResult')">
<el-button type="text" @click="handleView">{{
$t("common:button:view")
}}</el-button>
</el-form-item>
</div>
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
<el-form-item style="text-align:right;">
<div class="base-dialog-footer" style="text-align: right; margin-top: 10px">
<el-form-item style="text-align: right">
<!-- 取消 -->
<el-button
size="small"
type="primary"
@click="handleClose"
>
{{ $t('common:button:cancel') }}
<el-button size="small" type="primary" @click="handleClose">
{{ $t("common:button:cancel") }}
</el-button>
<!-- 保存 -->
<el-button
size="small"
type="primary"
@click="handleSave"
>
{{ rowData.PIAuditState?$t('trials:pendingReview:button:modify'):$t('trials:pendingReview:button:confirm') }}
<el-button size="small" type="primary" @click="handleSave">
{{
rowData.PIAuditState
? $t("trials:pendingReview:button:modify")
: $t("trials:pendingReview:button:confirm")
}}
</el-button>
</el-form-item>
</div>
@ -140,178 +131,223 @@
</template>
<script>
// import { iRSendMedicalReviewDialog, UploadMedicalReviewImage } from '@/api/trials'
import { pIAuditTask } from '@/api/reading'
import { pIAuditTask } from "@/api/reading";
export default {
name: 'FeedbackFrom',
name: "FeedbackFrom",
props: {
rowData: {
type: Object,
default() {
return {}
}
}
return {};
},
},
},
data() {
return {
form: {
VisitTaskId: '',
VisitTaskId: "",
NotAgreeReason: null,
PIAuditNote: '',
PIAuditNote: "",
PIAuditImagePathList: [],
PIAuditState: null
PIAuditState: null,
},
rules: {
PIAuditState: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: 'blur', type: 'number', min: 1 }],
PIAuditState: [
{
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: "blur",
type: "number",
min: 1,
},
],
NotAgreeReason: [
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
{ max: 500, message: `${this.$t('common:ruleMessage:maxLength')} 500` }],
{
required: true,
message: this.$t("common:ruleMessage:specify"),
trigger: "blur",
},
{
max: 500,
message: `${this.$t("common:ruleMessage:maxLength")} 500`,
},
],
PIAuditNote: [
{ max: 500, message: `${this.$t('common:ruleMessage:maxLength')} 500` }]
{
max: 500,
message: `${this.$t("common:ruleMessage:maxLength")} 500`,
},
],
},
loading: false,
accept: '.png,.jpg,.jpeg',
accept: ".png,.jpg,.jpeg",
imgVisible: false,
imageUrl: '',
imageUrl: "",
uploadDisabled: false,
listLoading: false,
fileList: [],
userTypeEnumInt: zzSessionStorage.getItem('userTypeEnumInt') * 1
}
userTypeEnumInt: zzSessionStorage.getItem("userTypeEnumInt") * 1,
};
},
mounted() {
this.initForm()
this.initForm();
},
methods: {
initForm() {
this.loading = true
this.loading = true;
if (Object.keys(this.rowData).length > 0) {
for (const k in this.form) {
if (this.rowData.hasOwnProperty(k)) {
if (k === 'PIAuditImagePathList' && this.rowData.PIAuditImagePathList) {
this.rowData.PIAuditImagePathList.map(filePath => {
if (!filePath) return
this.fileList.push({ url: filePath })
})
if (
k === "PIAuditImagePathList" &&
this.rowData.PIAuditImagePathList
) {
this.rowData.PIAuditImagePathList.map((filePath) => {
if (!filePath) return;
this.fileList.push({ url: filePath });
});
} else {
this.form[k] = this.rowData[k]
this.form[k] = this.rowData[k];
}
}
}
}
this.loading = false
this.loading = false;
},
// qc
handleSave() {
this.$refs.auditForm.validate(valid => {
if (!valid) return
this.loading = true
var files = []
this.fileList.map(file => {
this.$refs.auditForm.validate((valid) => {
if (!valid) return;
this.loading = true;
var files = [];
this.fileList.map((file) => {
if (file && file.url) {
files.push(file.url)
files.push(file.url);
}
})
this.form.PIAuditImagePathList = files
this.form.VisitTaskId = this.rowData.Id
pIAuditTask(this.form).then(res => {
this.loading = false
if (res.IsSuccess) {
//
this.$emit('close')
this.$emit('getList')
this.$message.success(this.$t('common:message:savedSuccessfully'))
}
}).catch(() => { this.loading = false })
})
});
this.form.PIAuditImagePathList = files;
this.form.VisitTaskId = this.rowData.Id;
pIAuditTask(this.form)
.then((res) => {
this.loading = false;
if (res.IsSuccess) {
//
this.$emit("close");
this.$emit("getList");
this.$message.success(
this.$t("common:message:savedSuccessfully")
);
}
})
.catch(() => {
this.loading = false;
});
});
},
handlePIAuditStateChange(val) {
this.form.NotAgreeReason = ''
this.form.NotAgreeReason = "";
},
handleClose() {
this.$emit('close')
this.$emit("close");
},
handleBeforeUpload(file) {
//
if (this.checkFileSuffix(file.name)) {
return true
return true;
} else {
var msg = this.$t('trials:medicalFeedback:message:format')
msg = msg.replace('xxx', this.accept)
this.$alert(msg)
return false
var msg = this.$t("trials:medicalFeedback:message:format");
msg = msg.replace("xxx", this.accept);
this.$alert(msg);
return false;
}
},
checkFileSuffix(fileName) {
var index = fileName.lastIndexOf('.')
var suffix = fileName.substring(index + 1, fileName.length)
if (this.accept.toLocaleLowerCase().search(suffix.toLocaleLowerCase()) === -1) {
return false
var index = fileName.lastIndexOf(".");
var suffix = fileName.substring(index + 1, fileName.length);
if (
this.accept.toLocaleLowerCase().search(suffix.toLocaleLowerCase()) ===
-1
) {
return false;
} else {
return true
return true;
}
},
async uploadScreenshots(param) {
try {
this.loading = true
var file = await this.fileToBlob(param.file)
var trialId = this.$route.query.trialId
const res = await this.OSSclient.put(`/${trialId}/PIReview/${param.file.name}`, file)
this.fileList.push({ name: param.file.name, url: this.$getObjectName(res.url) })
this.loading = false
this.loading = true;
var file = await this.fileToBlob(param.file);
var trialId = this.$route.query.trialId;
const res = await this.OSSclient.put(
`/${trialId}/PIReview/${param.file.name}`,
file
);
console.log(res);
this.fileList.push({
name: param.file.name,
path: res.name,
fullPath: this.OSSclientConfig.basePath + res.name,
url: res.name,
});
// this.fileList.push({
// name: param.file.name,
// url: this.$getObjectName(res.url),
// });
this.loading = false;
} catch (e) {
console.log(e)
this.loading = false
console.log(e);
this.loading = false;
}
},
fileToBlob(file) {
// FileReader
const reader = new FileReader()
return new Promise(resolve => {
const reader = new FileReader();
return new Promise((resolve) => {
// FileReader load
reader.addEventListener('load', (e) => {
let blob
if (typeof e.target.result === 'object') {
blob = new Blob([e.target.result])
reader.addEventListener("load", (e) => {
let blob;
if (typeof e.target.result === "object") {
blob = new Blob([e.target.result]);
} else {
blob = e.target.result
blob = e.target.result;
}
resolve(blob)
})
resolve(blob);
});
// FileReader ArrayBuffer File
reader.readAsArrayBuffer(file)
})
reader.readAsArrayBuffer(file);
});
},
//
handlePictureCardPreview(file) {
this.imageUrl = file.url
this.imgVisible = true
this.imageUrl = file.url;
this.imgVisible = true;
},
//
handleRemove(file, fileList) {
var idx = this.fileList.findIndex(i => i.url === file.url)
if (idx === -1) return
this.fileList.splice(idx, 1)
var idx = this.fileList.findIndex((i) => i.url === file.url);
if (idx === -1) return;
this.fileList.splice(idx, 1);
},
handleView() {
this.$emit('viewReaingResult')
}
}
}
this.$emit("viewReaingResult");
},
},
};
</script>
<style lang="scss" scoped>
.audit-form{
.disabled{
>>>.el-upload--picture-card {
display: none;
.audit-form {
.disabled {
>>> .el-upload--picture-card {
display: none;
}
}
}
>>> .el-upload-list__item {
>>> .el-upload-list__item {
transition: none !important;
}
>>> .el-upload-list__item-thumbnail {
/* 图片在方框内显示长边 */
object-fit: scale-down !important;
/* 图片在方框内显示长边 */
object-fit: scale-down !important;
}
}
</style>

View File

@ -223,7 +223,7 @@
show-overflow-tooltip
/>
<!-- 申请状态 -->
<el-table-column
<!-- <el-table-column
v-if="!hasPermi(['role:air'])"
prop="ReReadingApplyState"
:label="$t('trials:readTask:table:reReadingApplyState')"
@ -249,17 +249,19 @@
$fd("ReReadingApplyState", scope.row.ReReadingApplyState)
}}</el-tag>
</template>
</el-table-column>
</el-table-column> -->
<!--操作-->
<el-table-column
:label="$t('common:action:action')"
width="250"
min-width="100"
fixed="right"
v-if="
hasPermi(['trials:readTask:view']) ||
hasPermi(['trials:readTask:reread']) ||
hasPermi(['trials:readTask:report']) ||
hasPermi(['trials:readTask:auditRecord'])
hasPermi([
'trials:readTask:view',
'trials:readTask:reread',
'trials:readTask:report',
'trials:readTask:auditRecord',
])
"
>
<template slot-scope="scope">

View File

@ -193,21 +193,21 @@
</template>
</el-table-column>
<!-- 授权时间 -->
<el-table-column
<!-- <el-table-column
prop="CreateTime"
:label="$t('trials:staff:table:authorizationTime')"
show-overflow-tooltip
sortable
width="180"
/>
/> -->
<!-- 禁用时间 -->
<el-table-column
<!-- <el-table-column
prop="DeletedTime"
:label="$t('trials:staff:table:disableTime')"
show-overflow-tooltip
sortable
min-width="60"
/>
/> -->
<el-table-column
v-if="hasPermi(['trials:trials-panel:setting:personnel-manage:status'])"

View File

@ -111,13 +111,13 @@
min-width="100"
/>
<!-- 用户名 -->
<!-- <el-table-column
<el-table-column
prop="UserName"
:label="$t('trials:staff:table:uid')"
show-overflow-tooltip
sortable="custom"
min-width="100"
/> -->
/>
<!-- 电话 -->
<el-table-column
prop="Phone"
@ -139,7 +139,7 @@
prop="OrganizationName"
:label="$t('trials:staff:table:organization')"
show-overflow-tooltip
min-width="100"
min-width="150"
sortable="custom"
/>
<!-- 用户类型 -->

View File

@ -94,14 +94,14 @@
height="100"
@sort-change="handleSortByColumn"
>
<el-table-column type="index" width="40" />
<el-table-column type="index" width="30" />
<!-- 受试者编号 -->
<el-table-column
prop="SubjectCode"
:label="$t('trials:subject:table:subjectId')"
show-overflow-tooltip
sortable="custom"
min-width="100"
min-width="120"
/>
<!-- 患者编号 -->
<el-table-column
@ -214,7 +214,7 @@
</el-table-column>
<el-table-column
:label="$t('common:action:action')"
min-width="120"
min-width="150"
fixed="right"
>
<template slot-scope="scope">

View File

@ -151,15 +151,15 @@
{{ $fd("UserType", scope.row.LoginUserTypeEnum) }}
</template>
</el-table-column>
<el-table-column
<!-- <el-table-column
v-if="!isMine"
:label="$t('trials:loginLog:table:optUserName')"
prop="optUserName"
min-width="90"
show-overflow-tooltip
sortable="custom"
/>
<el-table-column
/> -->
<!-- <el-table-column
v-if="!isMine"
:label="$t('trials:loginLog:table:optUserType')"
prop="OptUserTypeEnum"
@ -170,7 +170,7 @@
<template slot-scope="scope">
{{ $fd("UserType", scope.row.OptUserTypeEnum) }}
</template>
</el-table-column>
</el-table-column> -->
<el-table-column
:label="$t('trials:loginLog:table:createTime')"
prop="CreateTime"