部分问题修复

main
wangxiaoshuang 2024-04-19 14:58:52 +08:00
parent 7c56ec3c6a
commit f4c868aa4f
9 changed files with 953 additions and 735 deletions

View File

@ -1,33 +1,42 @@
<template>
<div id="app" style="position: relative">
<router-view />
<div v-show="show" v-adaptive @click="openI18n" style="position: fixed;bottom: 50px;left: 50px;z-index: 100000;width: 50px;height: 50px;background: #409eff88;line-height: 50px;text-align: center;color:#fff;border-radius: 50%;cursor: pointer">
<div
v-show="show"
v-adaptive
@click="openI18n"
style="
position: fixed;
bottom: 50px;
left: 50px;
z-index: 100000;
width: 50px;
height: 50px;
background: #409eff88;
line-height: 50px;
text-align: center;
color: #fff;
border-radius: 50%;
cursor: pointer;
"
>
i18n
</div>
<el-drawer
title="国际化"
:visible.sync="drawer"
direction="rtl"
size="80%">
<el-drawer title="国际化" :visible.sync="drawer" direction="rtl" size="80%">
<div style="width: 320px">
<el-form
label-width="100px"
size="small"
>
<el-form label-width="100px" size="small">
<el-form-item label="关键字">
<el-input v-model="key" @input="keyChange"/>
<el-input v-model="key" @input="keyChange" />
</el-form-item>
</el-form>
</div>
<el-table
:data="tableData"
v-adaptive="{bottomOffset:50}"
v-adaptive="{ bottomOffset: 50 }"
height="100"
style="width: 100%">
<el-table-column
prop="Code"
label="标签"
width="300">
style="width: 100%"
>
<el-table-column prop="Code" label="标签" width="300">
</el-table-column>
<!-- <el-table-column-->
<!-- prop="Description"-->
@ -38,131 +47,166 @@
<!-- {{scope.row.Description}}-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column
prop="Value"
label="英文">
<el-table-column prop="Value" label="英文">
<template slot-scope="scope">
<el-input v-model="scope.row.Value" @input="(e) => {$set(scope.row, 'Value', e)}" size="mini"></el-input>
<el-input
v-model="scope.row.Value"
@input="
(e) => {
$set(scope.row, 'Value', e);
}
"
size="mini"
></el-input>
</template>
</el-table-column>
<el-table-column
prop="ValueCN"
label="中文">
<el-table-column prop="ValueCN" label="中文">
<template slot-scope="scope">
<el-input v-model="scope.row.ValueCN" @input="(e) => {$set(scope.row, 'ValueCN', e)}" size="mini"></el-input>
<el-input
v-model="scope.row.ValueCN"
@input="
(e) => {
$set(scope.row, 'ValueCN', e);
}
"
size="mini"
></el-input>
</template>
</el-table-column>
</el-table>
<div style="text-align: right;padding-top: 10px;padding-right: 10px;">
<el-button size="mini" @click="drawer = false">取消
</el-button>
<el-button size="mini" type="primary" @click="handleSave"></el-button>
<div style="text-align: right; padding-top: 10px; padding-right: 10px">
<el-button size="mini" @click="drawer = false">取消 </el-button>
<el-button size="mini" type="primary" @click="handleSave"
>保存</el-button
>
</div>
</el-drawer>
</div>
</template>
<script>
import { batchAddOrUpdateFrontInternationalization, getFrontInternationalizationList } from '@/api/dictionary/dictionary'
import {
batchAddOrUpdateFrontInternationalization,
getFrontInternationalizationList,
} from "@/api/dictionary/dictionary";
import Vue from "vue";
import i18n from "./lang";
export default {
name: 'App',
data () {
name: "App",
data() {
return {
drawer: false,
tableData: [],
show: false,
key: null,
arr: []
}
arr: [],
};
},
mounted() {
// this.show = process.env.VUE_APP_OSS_PATH === '/hir_test/dist'
this.show = process.env.VUE_APP_OSS_PATH === "/hir_test/dist";
},
methods: {
changeValue(target, attr, e) {
this.$set(target, attr, e)
this.$set(target, attr, e);
},
keyChange(v) {
if (this.key) {
this.tableData = Object.assign([], this.arr.filter(v => ~v.Code.indexOf(this.key) || ~v.Value.indexOf(this.key) || ~v.ValueCN.indexOf(this.key)))
this.tableData = Object.assign(
[],
this.arr.filter(
(v) =>
~v.Code.indexOf(this.key) ||
~v.Value.indexOf(this.key) ||
~v.ValueCN.indexOf(this.key)
)
);
} else {
this.tableData = Object.assign([], this.arr)
this.tableData = Object.assign([], this.arr);
}
},
handleSave() {
this.$confirm('确定修改当前页面国际化内容?').then(() => {
batchAddOrUpdateFrontInternationalization(this.tableData).then(async res => {
var zhMessages = {}, enMessages = {}
var Internationalization = await getFrontInternationalizationList()
Vue.prototype.$tl = Internationalization.Result
this.tableData.forEach(v => {
// zhMessages[v.Description + '_' + v.Code] = v.ValueCN
// enMessages[v.Description + '_' + v.Code] = v.Value
zhMessages[v.Code] = v.ValueCN
enMessages[v.Code] = v.Value
})
i18n.mergeLocaleMessage('zh', zhMessages)
i18n.mergeLocaleMessage('en', enMessages)
this.drawer = false
this.$message.success('国际化修改成功')
})
})
this.$confirm("确定修改当前页面国际化内容?").then(() => {
batchAddOrUpdateFrontInternationalization(this.tableData).then(
async (res) => {
var zhMessages = {},
enMessages = {};
var Internationalization = await getFrontInternationalizationList();
Vue.prototype.$tl = Internationalization.Result;
this.tableData.forEach((v) => {
// zhMessages[v.Description + '_' + v.Code] = v.ValueCN
// enMessages[v.Description + '_' + v.Code] = v.Value
zhMessages[v.Code] = v.ValueCN;
enMessages[v.Code] = v.Value;
});
i18n.mergeLocaleMessage("zh", zhMessages);
i18n.mergeLocaleMessage("en", enMessages);
this.drawer = false;
this.$message.success("国际化修改成功");
}
);
});
},
openI18n() {
this.tableData = []
this.key = null
this.drawer = true
let arr = []
let tableData = this.$tl.map(v => {
let a = {...v}
this.tableData = [];
this.key = null;
this.drawer = true;
let arr = [];
let tableData = this.$tl.map((v) => {
let a = { ...v };
// if (!a.Description) {
// a.Description = this.$route.path
// }
return a
})
tableData = tableData.filter(v => {
return a;
});
tableData = tableData.filter((v) => {
// return ~this.$path.indexOf(v.Description + '_' + v.Code)
return ~this.$path.indexOf(v.Code)
})
this.$path.forEach(v => {
let o = tableData.find(a => {
return a.Code === v
})
return ~this.$path.indexOf(v.Code);
});
this.$path.forEach((v) => {
let o = tableData.find((a) => {
return a.Code === v;
});
if (o) {
arr.push(o)
arr.push(o);
} else {
arr.push({
Code: v,
Description: null,
Value: null,
ValueCN: null
})
ValueCN: null,
});
}
})
this.arr = arr
});
this.arr = arr;
if (this.key) {
this.tableData = Object.assign([], this.arr.filter(v => ~v.Code.indexOf(this.key) || ~v.Value.indexOf(this.key) || ~v.ValueCN.indexOf(this.key)))
this.tableData = Object.assign(
[],
this.arr.filter(
(v) =>
~v.Code.indexOf(this.key) ||
~v.Value.indexOf(this.key) ||
~v.ValueCN.indexOf(this.key)
)
);
} else {
this.tableData = Object.assign([], this.arr)
this.tableData = Object.assign([], this.arr);
}
console.log(JSON.stringify(this.$path))
console.log(JSON.stringify(this.tableData))
}
}
}
console.log(JSON.stringify(this.$path));
console.log(JSON.stringify(this.tableData));
},
},
};
</script>
<style lang="scss">
.el-tooltip__popper{
.el-tooltip__popper {
max-width: 400px;
}
.my_multiple{
.el-input--medium .el-input__inner{
height: 36px!important;
.my_multiple {
.el-input--medium .el-input__inner {
height: 36px !important;
}
.el-select__tags{
.el-select__tags {
flex-wrap: nowrap;
overflow: hidden;
white-space: nowrap;
@ -179,21 +223,21 @@ input[type="number"] {
-moz-appearance: textfield !important;
}
.viewer-fixed.viewer-container{
.viewer-fixed.viewer-container {
z-index: 10000;
}
textarea{
textarea {
white-space: break-spaces;
word-break: normal;
}
*{
word-break: normal!important;
* {
word-break: normal !important;
}
.box-body .el-button.is-circle:not(.is-disabled) i:before{
.box-body .el-button.is-circle:not(.is-disabled) i:before {
color: #428bca;
}
.box-body .el-button.is-circle i.el-icon-question:before{
.box-body .el-button.is-circle i.el-icon-question:before {
color: #fff;
}
</style>

View File

@ -15,12 +15,10 @@ const doResize = async (el, binding, vnode) => {
// 计算列表高度并设置
const height = window.innerHeight - el.getBoundingClientRect().top - bottomOffset
// $table.layout.setMaxHeight(height) bodyHeight
console.log($table);
console.log($table.layout.bodyHeight)
$table.bodyWrapper.style.height = `${$table.layout.bodyHeight}px`
$table.layout.setHeight(height)
// $table.bodyWrapper.style.cssText = `height:${$table.layout.bodyHeight - 20}px`
// $table.maxHeight = height
$table.doLayout()
let timer = setTimeout(() => { $table.doLayout(); timer = null; }, 500)
}
export default {

View File

@ -17,22 +17,42 @@
style="width: 100px"
/>
</el-form-item>
<!-- 患者编号 -->
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
<el-input
v-model="searchData.PatientIdStr"
style="width: 140px"
/>
</el-form-item>
<!-- 患者姓名 -->
<el-form-item
:label="$t('trials:uploadDicomList:table:patientName')"
>
<el-input
v-model="searchData.PatientName"
style="width: 140px"
/>
</el-form-item>
<!-- 任务名称 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:reviewTrack:table:taskName')"
>
<el-input v-model="searchData.TaskName" style="width: 140px" />
</el-form-item>
<!-- 任务状态 -->
<el-form-item :label="$t('trials:readTask:table:taskState')">
<el-select
v-model="searchData.TaskName"
v-model="searchData.TaskState"
clearable
filterable
style="width: 120px"
style="width: 150px"
>
<el-option
v-for="(item, index) of siteOptions"
:key="index"
:label="item.TrialSiteCode"
:value="item.SiteId"
v-for="item of $d.TaskState"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
@ -54,24 +74,6 @@
/>
</el-select>
</el-form-item>
<!-- 任务状态 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:readTask:table:taskState')"
>
<el-select
v-model="searchData.DoctorUserId"
clearable
style="width: 120px"
>
<el-option
v-for="item of DoctorUserList"
:key="'DoctorUserId' + item.DoctorUserId"
:value="item.DoctorUserId"
:label="`${item.UserName}(${item.FullName})`"
/>
</el-select>
</el-form-item>
<!-- 审核结果 -->
<el-form-item
style="margin-bottom: 10px"
@ -96,15 +98,15 @@
:label="$t('trials:auditRecord:table:isEnrollment')"
>
<el-select
v-model="searchData.DoctorUserId"
v-model="searchData.IsEnrollment"
clearable
style="width: 120px"
>
<el-option
v-for="item of DoctorUserList"
:key="'DoctorUserId' + item.DoctorUserId"
:value="item.DoctorUserId"
:label="`${item.UserName}(${item.FullName})`"
v-for="item of $d.YesOrNo"
:key="item.id"
:value="item.value"
:label="item.label"
/>
</el-select>
</el-form-item>
@ -114,15 +116,15 @@
:label="$t('trials:auditRecord:table:isPDConfirm')"
>
<el-select
v-model="searchData.DoctorUserId"
v-model="searchData.IsPDConfirm"
clearable
style="width: 120px"
>
<el-option
v-for="item of DoctorUserList"
:key="'DoctorUserId' + item.DoctorUserId"
:value="item.DoctorUserId"
:label="`${item.UserName}(${item.FullName})`"
v-for="item of $d.YesOrNo"
:key="item.id"
:value="item.value"
:label="item.label"
/>
</el-select>
</el-form-item>
@ -151,16 +153,9 @@
:data="list"
ref="myTable"
stripe
height="100%"
@sort-change="handleSortChange"
>
<!-- 任务编号 -->
<el-table-column
prop="TaskCode"
:label="$t('trials:reviewTrack:table:taskCode')"
width="120"
sortable="custom"
show-overflow-tooltip
/>
<!-- 受试者编号 -->
<el-table-column
prop="SubjectCode"
@ -169,21 +164,71 @@
sortable="custom"
show-overflow-tooltip
/>
<!-- 患者编号 -->
<el-table-column
prop="PatientList.PatientIdStr"
:label="$t('trials:uploadDicomList:table:pId')"
show-overflow-tooltip
>
<template slot-scope="scope">
<span
v-for="(item, index) in scope.row.PatientList"
:key="`${index}${item.PatientId}`"
>
{{
index === scope.row.PatientList.length - 1
? item.PatientIdStr
: `${item.PatientIdStr}, `
}}
</span>
</template>
</el-table-column>
<!-- 患者姓名 -->
<el-table-column
prop="SubjectShortName"
:label="$t('trials:researchStaff:table:Name')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 任务名称 -->
<el-table-column
prop="VisitTaskNum"
prop="TaskName"
:label="$t('trials:reviewTrack:table:taskName')"
width="140"
sortable="custom"
show-overflow-tooltip
>
</el-table-column>
<!-- 任务状态 -->
<el-table-column
prop="TaskState"
:label="$t('trials:readTask:table:taskState')"
min-width="120"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.TaskName }}
<el-tag
:type="
['primary', 'info', 'danger', 'warning', 'danger'][
scope.row.TaskState
]
"
>{{ $fd("TaskState", scope.row.TaskState) }}</el-tag
>
</template>
</el-table-column>
<!-- 阅片标准 -->
<el-table-column
prop="TrialReadingCriterionName"
:label="$t('trials:reviewTrack:table:criterionName')"
min-width="180"
sortable="custom"
show-overflow-tooltip
/>
<!-- 角色 -->
<el-table-column
prop="SubjectCode"
prop="UserTypeShortName"
:label="$t('trials:auditRecord:table:role')"
min-width="120"
sortable="custom"
@ -201,22 +246,6 @@
{{ scope.row.UserName }}({{ scope.row.FullName }})
</template>
</el-table-column>
<!-- 任务状态 -->
<el-table-column
prop="SubjectCode"
:label="$t('trials:readTask:table:taskState')"
min-width="120"
sortable="custom"
show-overflow-tooltip
/>
<!-- 阅片标准 -->
<el-table-column
prop="TrialReadingCriterionName"
:label="$t('trials:reviewTrack:table:criterionName')"
min-width="180"
sortable="custom"
show-overflow-tooltip
/>
<!-- 阅片完成时间 -->
<el-table-column
prop="SignTime"
@ -225,22 +254,6 @@
sortable="custom"
show-overflow-tooltip
/>
<!-- 创建人 -->
<el-table-column
prop="FirstAuditUserName"
:label="$t('trials:auditRecord:table:creator')"
width="130"
sortable="custom"
show-overflow-tooltip
/>
<!-- 创建时间 -->
<el-table-column
prop="FirstAuditTime"
:label="$t('trials:auditRecord:table:createTime')"
width="130"
sortable="custom"
show-overflow-tooltip
/>
<!-- 审核结果 -->
<el-table-column
prop="PIAuditState"
@ -250,54 +263,44 @@
show-overflow-tooltip
>
<template slot-scope="scope">
<el-tag v-if="scope.row.PIAuditState === 0" type="danger">{{
$fd("PIAuditState", scope.row.PIAuditState)
}}</el-tag>
<el-tag
v-else-if="scope.row.PIAuditState === 1"
type="primary"
v-if="
scope.row.PIAuditState >= 0 && scope.row.PIAuditState < 3
"
:type="
['danger', 'primary', 'warning'][scope.row.PIAuditState]
"
>{{ $fd("PIAuditState", scope.row.PIAuditState) }}</el-tag
>
<el-tag
v-else-if="scope.row.PIAuditState === 2"
type="warning"
>{{ $fd("PIAuditState", scope.row.PIAuditState) }}
</el-tag>
<span v-else>{{
$fd("PIAuditState", scope.row.PIAuditState)
}}</span>
</template>
</el-table-column>
<el-table-column
:label="$t('trials:globalReview:table:evaluationRes')"
align="center"
v-if="QuestionList.length > 0"
prop="item.QuestionId"
:label="item.QuestionName"
min-width="140"
v-for="(item, index) of QuestionList"
:key="'QuestionId' + index"
show-overflow-tooltip
>
<el-table-column
prop="item.QuestionId"
:label="item.QuestionName"
min-width="140"
v-for="(item, index) of QuestionList"
:key="'QuestionId' + index"
show-overflow-tooltip
>
<template slot-scope="scope">
{{
item.DictionaryCode
? $fd(
item.DictionaryCode,
parseInt(
scope.row.PIReadingResultList.find(
(v) => v.QuestionId === item.QuestionId
).Answer
)
<template slot-scope="scope">
{{
item.DictionaryCode
? $fd(
item.DictionaryCode,
parseInt(
scope.row.PIReadingResultList.find(
(v) => v.QuestionId === item.QuestionId
).Answer
)
: scope.row.PIReadingResultList.find(
(v) => v.QuestionId === item.QuestionId
).Answer
}}
</template>
</el-table-column>
)
: scope.row.PIReadingResultList.find(
(v) => v.QuestionId === item.QuestionId
).Answer
}}
</template>
</el-table-column>
<!-- 是否入组 -->
<el-table-column
@ -438,6 +441,8 @@ const searchDataDefault = () => {
ReadingTaskState: 2,
PIAuditState: null,
IsWaitPIAudit: null,
IsEnrollment: null,
IsPDConfirm: null,
};
};
export default {
@ -458,6 +463,8 @@ export default {
TrialReadingCriterionId: "0",
openWindow: null,
QuestionList: [],
PatientName: null,
PatientIdStr: null,
};
},
watch: {

View File

@ -17,16 +17,44 @@
style="width: 100px"
/>
</el-form-item>
<!-- 患者编号 -->
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
<el-input
v-model="searchData.PatientIdStr"
style="width: 140px"
/>
</el-form-item>
<!-- 患者姓名 -->
<el-form-item
:label="$t('trials:uploadDicomList:table:patientName')"
>
<el-input
v-model="searchData.PatientName"
style="width: 140px"
/>
</el-form-item>
<!-- 任务名称 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:reviewTrack:table:taskName')"
>
<el-input
v-model="searchData.TaskName"
style="width: 100px"
<el-input v-model="searchData.TaskName" style="width: 140px" />
</el-form-item>
<!-- 任务状态 -->
<el-form-item :label="$t('trials:readTask:table:taskState')">
<el-select
v-model="searchData.TaskState"
clearable
/>
filterable
style="width: 150px"
>
<el-option
v-for="item of $d.TaskState"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<!-- 阅片人 -->
<el-form-item
@ -46,28 +74,10 @@
/>
</el-select>
</el-form-item>
<!-- 任务状态 -->
<!-- 审核结果 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:reviewTrack:table:taskStatus')"
>
<el-select
v-model="searchData.TaskState"
clearable
style="width: 120px"
>
<el-option
v-for="item of $d.TaskState"
:key="'TaskState' + item.label"
:value="item.value"
:label="item.label"
/>
</el-select>
</el-form-item>
<!-- 审核状态 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:reviewTrack:table:auditStatus')"
:label="$t('trials:auditRecord:table:auditResult')"
>
<el-select
v-model="searchData.PIAuditState"
@ -88,13 +98,13 @@
:label="$t('trials:auditRecord:table:isEnrollment')"
>
<el-select
v-model="searchData.PIAuditState"
v-model="searchData.IsEnrollment"
clearable
style="width: 120px"
>
<el-option
v-for="item of $d.PIAuditState"
:key="'PIAuditState' + item.label"
v-for="item of $d.YesOrNo"
:key="item.id"
:value="item.value"
:label="item.label"
/>
@ -106,13 +116,13 @@
:label="$t('trials:auditRecord:table:isPDConfirm')"
>
<el-select
v-model="searchData.PIAuditState"
v-model="searchData.IsPDConfirm"
clearable
style="width: 120px"
>
<el-option
v-for="item of $d.PIAuditState"
:key="'PIAuditState' + item.label"
v-for="item of $d.YesOrNo"
:key="item.id"
:value="item.value"
:label="item.label"
/>
@ -146,75 +156,6 @@
stripe
@sort-change="handleSortChange"
>
<!-- 是否加急 -->
<el-table-column
prop="IsUrgent"
:label="$t('trials:reviewTrack:table:isUrgent')"
width="120"
sortable="custom"
align="center"
>
<template slot-scope="scope">
<!-- <el-tag v-if="scope.row.IsUrgent" type="danger">{{ $fd('YesOrNo', scope.row.IsUrgent) }}</el-tag>
<el-tag v-else type="primary">{{ $fd('YesOrNo', scope.row.IsUrgent) }}</el-tag> -->
<el-tooltip placement="top">
<div slot="content">
<span>{{
`${$t("trials:pendingReview:title:urgentReason")} ${$fd(
"TaskUrgentType",
scope.row.TaskUrgentType
)}`
}}</span
><br />
<span>{{
scope.row.TaskUrgentRemake
? `${$t("trials:pendingReview:title:urgentNote")} ${
scope.row.TaskUrgentRemake
}`
: ""
}}</span>
</div>
<div>
<el-button
v-if="scope.row.IsUrgent"
:disabled="
!(
!scope.row.TaskState &&
(scope.row.ReadingTaskState === 0 ||
scope.row.ReadingTaskState === 1)
) || !scope.row.IsCanEditUrgentState
"
type="danger"
size="mini"
@click="changeUrgentStatus(scope.row)"
>{{ $fd("YesOrNo", scope.row.IsUrgent) }}</el-button
>
</div>
</el-tooltip>
<el-button
v-if="!scope.row.IsUrgent"
:disabled="
!(
!scope.row.TaskState &&
(scope.row.ReadingTaskState === 0 ||
scope.row.ReadingTaskState === 1)
) || !scope.row.IsCanEditUrgentState
"
type="primary"
size="mini"
@click="changeUrgentStatus(scope.row)"
>{{ $fd("YesOrNo", scope.row.IsUrgent) }}</el-button
>
</template>
</el-table-column>
<!-- 任务编号 -->
<el-table-column
prop="TaskCode"
:label="$t('trials:reviewTrack:table:taskCode')"
width="120"
sortable="custom"
show-overflow-tooltip
/>
<!-- 受试者编号 -->
<el-table-column
prop="SubjectCode"
@ -223,78 +164,76 @@
sortable="custom"
show-overflow-tooltip
/>
<!-- 患者编号 -->
<el-table-column
prop="PatientList.PatientIdStr"
:label="$t('trials:uploadDicomList:table:pId')"
show-overflow-tooltip
>
<template slot-scope="scope">
<span
v-for="(item, index) in scope.row.PatientList"
:key="`${index}${item.PatientId}`"
>
{{
index === scope.row.PatientList.length - 1
? item.PatientIdStr
: `${item.PatientIdStr}, `
}}
</span>
</template>
</el-table-column>
<!-- 患者姓名 -->
<el-table-column
prop="SubjectShortName"
:label="$t('trials:researchStaff:table:Name')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 任务名称 -->
<el-table-column
prop="VisitTaskNum"
prop="TaskName"
:label="$t('trials:reviewTrack:table:taskName')"
width="140"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.TaskName }}
</template>
</el-table-column>
<!-- 盲态任务标识 -->
<!-- <el-table-column
prop="TaskBlindName"
:label="$t('trials:reviewTrack:table:blindName')"
width="160"
sortable="custom"
show-overflow-tooltip
/> -->
<!-- 任务创建时间 -->
<el-table-column
prop="CreateTime"
:label="$t('trials:reviewTrack:table:createTime')"
width="180"
sortable="custom"
show-overflow-tooltip
/>
<!-- 任务状态 -->
<el-table-column
prop="TaskState"
:label="$t('trials:reviewTrack:table:taskStatus')"
width="160"
:label="$t('trials:readTask:table:taskState')"
min-width="120"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">
<el-tag v-if="scope.row.TaskState === 0" type="primary">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
<el-tag v-if="scope.row.TaskState === 1" type="info">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
<el-tag v-if="scope.row.TaskState === 3" type="danger">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
<el-tag v-if="scope.row.TaskState === 4" type="warning">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
<el-tag v-if="scope.row.TaskState === 5" type="danger">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
<el-tag
:type="
['primary', 'info', 'danger', 'warning', 'danger'][
scope.row.TaskState
]
"
>{{ $fd("TaskState", scope.row.TaskState) }}</el-tag
>
</template>
</el-table-column>
<!-- 阅片标准 -->
<el-table-column
prop="TrialReadingCriterionName"
:label="$t('trials:reviewTrack:table:criterionName')"
min-width="180"
sortable="custom"
show-overflow-tooltip
/>
<!-- 角色 -->
<el-table-column
prop="UserTypeShortName"
:label="$t('trials:reviewTrack:table:role')"
width="100"
:label="$t('trials:auditRecord:table:role')"
min-width="120"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.UserTypeShortName }}
<!-- <el-tag v-if="scope.row.ArmEnum === 0" type="primary">{{ $fd('ArmEnum', scope.row.ArmEnum) }}</el-tag>
<el-tag v-if="scope.row.ArmEnum === 1" type="primary">{{ $fd('ArmEnum', scope.row.ArmEnum) }}</el-tag>
<el-tag v-if="scope.row.ArmEnum === 2" type="success">{{ $fd('ArmEnum', scope.row.ArmEnum) }}</el-tag>
<el-tag v-if="scope.row.ArmEnum === 3" type="info">{{ $fd('ArmEnum', scope.row.ArmEnum) }}</el-tag>
<el-tag v-if="scope.row.ArmEnum === 4" type="danger">{{ $fd('ArmEnum', scope.row.ArmEnum) }}</el-tag>
<el-tag v-if="scope.row.ArmEnum === 5" type="warning">{{ $fd('ArmEnum', scope.row.ArmEnum) }}</el-tag> -->
</template>
</el-table-column>
/>
<!-- 阅片人 -->
<el-table-column
prop="UserName"
@ -307,35 +246,6 @@
{{ scope.row.UserName }}({{ scope.row.FullName }})
</template>
</el-table-column>
<!-- 建议完成时间 -->
<el-table-column
prop="SuggesteFinishedTime"
:label="$t('trials:reviewTrack:table:suggesteFinishedTime')"
width="210"
sortable="custom"
show-overflow-tooltip
/>
<!-- 阅片状态 -->
<el-table-column
prop="ReadingTaskState"
:label="$t('trials:reviewTrack:table:readingStatus')"
width="160"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">
<el-tag
v-if="scope.row.ReadingTaskState === 2"
type="primary"
>{{
$fd("ReadingTaskState", scope.row.ReadingTaskState)
}}</el-tag
>
<el-tag v-else type="danger">{{
$fd("ReadingTaskState", scope.row.ReadingTaskState)
}}</el-tag>
</template>
</el-table-column>
<!-- 阅片完成时间 -->
<el-table-column
prop="SignTime"
@ -344,10 +254,10 @@
sortable="custom"
show-overflow-tooltip
/>
<!-- 申请状态 -->
<!-- 审核结果 -->
<el-table-column
prop="ReReadingApplyState"
:label="$t('trials:reviewTrack:table:applyStatus')"
prop="PIAuditState"
:label="$t('trials:auditRecord:table:auditResult')"
min-width="140"
sortable="custom"
show-overflow-tooltip
@ -355,87 +265,42 @@
<template slot-scope="scope">
<el-tag
v-if="
scope.row.ReReadingApplyState === 4 ||
scope.row.ReReadingApplyState === 5
scope.row.PIAuditState >= 0 && scope.row.PIAuditState < 3
"
:type="
['danger', 'primary', 'warning'][scope.row.PIAuditState]
"
type="danger"
>{{
$fd("ReReadingApplyState", scope.row.ReReadingApplyState)
}}</el-tag
>
<el-tag
v-if="scope.row.ReReadingApplyState === 2"
type="primary"
>{{
$fd("ReReadingApplyState", scope.row.ReReadingApplyState)
}}</el-tag
>
<el-tag
v-if="scope.row.ReReadingApplyState === 3"
type="warning"
>{{
$fd("ReReadingApplyState", scope.row.ReReadingApplyState)
}}</el-tag
>
</template>
</el-table-column>
<!-- 审核结果 -->
<el-table-column
prop="PIAuditState"
:label="$t('trials:pendingReview:table:auditResult')"
min-width="110"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">
<el-tag v-if="scope.row.PIAuditState === 0" type="danger">{{
$fd("PIAuditState", scope.row.PIAuditState)
}}</el-tag>
<el-tag
v-else-if="scope.row.PIAuditState === 1"
type="primary"
>{{ $fd("PIAuditState", scope.row.PIAuditState) }}</el-tag
>
<el-tag
v-else-if="scope.row.PIAuditState === 2"
type="warning"
>{{ $fd("PIAuditState", scope.row.PIAuditState) }}
</el-tag>
<span v-else>{{
$fd("PIAuditState", scope.row.PIAuditState)
}}</span>
</template>
</el-table-column>
<el-table-column
:label="$t('trials:globalReview:table:evaluationRes')"
align="center"
v-if="QuestionList.length > 0"
prop="item.QuestionId"
:label="item.QuestionName"
min-width="140"
v-for="(item, index) of QuestionList"
:key="'QuestionId' + index"
show-overflow-tooltip
>
<el-table-column
prop="item.QuestionId"
:label="item.QuestionName"
min-width="140"
v-for="(item, index) of QuestionList"
:key="'QuestionId1' + index"
show-overflow-tooltip
>
<template slot-scope="scope">
{{
item.DictionaryCode
? $fd(
item.DictionaryCode,
parseInt(
scope.row.PIReadingResultList.find(
(v) => v.QuestionId === item.QuestionId
).Answer
)
<template slot-scope="scope">
{{
item.DictionaryCode
? $fd(
item.DictionaryCode,
parseInt(
scope.row.PIReadingResultList.find(
(v) => v.QuestionId === item.QuestionId
).Answer
)
: scope.row.PIReadingResultList.find(
(v) => v.QuestionId === item.QuestionId
).Answer
}}
</template>
</el-table-column>
)
: scope.row.PIReadingResultList.find(
(v) => v.QuestionId === item.QuestionId
).Answer
}}
</template>
</el-table-column>
<!-- 是否入组 -->
<el-table-column
@ -648,14 +513,12 @@ import PdForm from "./components/PdForm";
import ChatForm from "./components/ChatForm";
const searchDataDefault = () => {
return {
SubjectCode: "",
TaskCode: "",
PageIndex: 1,
PageSize: 20,
Asc: true,
SortField: "",
TrialId: null,
SiteId: null,
SubjectId: null,
SubjectCode: null,
IsUrgent: null,
TaskName: null,
TaskState: null,
@ -663,6 +526,10 @@ const searchDataDefault = () => {
ReadingTaskState: 2,
PIAuditState: null,
IsWaitPIAudit: null,
IsEnrollment: null,
IsPDConfirm: null,
PatientIdStr: null,
PatientName: null,
};
};
export default {

View File

@ -5,21 +5,17 @@
>
<div slot="search-container" style="position: relative">
<el-form :inline="true">
<!-- 受试者编号 -->
<el-form-item :label="$t('trials:reviewTrack:table:subjectCode')">
<el-input v-model="searchData.SubjectCode" style="width: 100px" />
</el-form-item>
<!-- 患者编号 -->
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
<el-input
v-model="searchData.SubjectCode"
style="width: 130px"
clearable
/>
<el-input v-model="searchData.PatientIdStr" style="width: 140px" />
</el-form-item>
<!-- 患者姓名 -->
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
<el-input
v-model="searchData.SubjectCode"
style="width: 130px"
clearable
/>
<el-input v-model="searchData.PatientName" style="width: 140px" />
</el-form-item>
<!-- 访视名称 -->
<el-form-item
@ -110,21 +106,41 @@
height="100"
@sort-change="handleSortChange"
>
<!-- 受试者编号 -->
<el-table-column
prop="SubjectCode"
min-width="100"
:label="$t('trials:reviewTrack:table:subjectCode')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 患者编号 -->
<el-table-column
prop="SubjectCode"
prop="PatientIdStr"
min-width="100"
:label="$t('trials:uploadDicomList:table:pId')"
sortable="custom"
show-overflow-tooltip
/>
>
<template slot-scope="scope">
<span
v-for="(item, index) in scope.row.PatientList"
:key="`${index}${item.PatientId}`"
>
{{
index === scope.row.PatientList.length - 1
? item.PatientIdStr
: `${item.PatientIdStr}, `
}}
</span>
</template>
</el-table-column>
<!-- 患者姓名 -->
<el-table-column
prop="SubjectCode"
prop="SubjectShortName"
min-width="100"
:label="$t('trials:uploadDicomList:table:patientName')"
sortable="custom"
show-overflow-tooltip
sortable="custom"
/>
<!-- 访视名称 -->
<el-table-column
@ -567,6 +583,8 @@ import { getToken } from "@/utils/auth";
const searchDataDefault = () => {
return {
SubjectCode: "",
PatientIdStr: null,
PatientName: null,
SortField: "",
PageIndex: 1,
PageSize: 20,

View File

@ -5,21 +5,17 @@
>
<div slot="search-container">
<el-form :inline="true">
<!-- 受试者编号 -->
<el-form-item :label="$t('trials:reviewTrack:table:subjectCode')">
<el-input v-model="searchData.SubjectCode" style="width: 100px" />
</el-form-item>
<!-- 患者编号 -->
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
<el-input
v-model="searchData.SubjectCode"
style="width: 130px"
clearable
/>
<el-input v-model="searchData.PatientIdStr" style="width: 140px" />
</el-form-item>
<!-- 患者姓名 -->
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
<el-input
v-model="searchData.SubjectCode"
style="width: 130px"
clearable
/>
<el-input v-model="searchData.PatientName" style="width: 140px" />
</el-form-item>
<el-form-item>
<!-- 查询 -->
@ -46,17 +42,37 @@
@sort-change="handleSortChange"
>
<el-table-column type="index" width="40" align="left" />
<!-- 者编号 -->
<!-- 受试者编号 -->
<el-table-column
prop="SubjectCode"
min-width="100"
:label="$t('trials:uploadDicomList:table:pId')"
:label="$t('trials:reviewTrack:table:subjectCode')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 患者编号 -->
<el-table-column
prop="PatientIdStr"
min-width="100"
:label="$t('trials:uploadDicomList:table:pId')"
show-overflow-tooltip
>
<template slot-scope="scope">
<span
v-for="(item, index) in scope.row.PatientList"
:key="`${index}${item.PatientId}`"
>
{{
index === scope.row.PatientList.length - 1
? item.PatientIdStr
: `${item.PatientIdStr}, `
}}
</span>
</template>
</el-table-column>
<!-- 患者姓名 -->
<el-table-column
prop="SubjectCode"
prop="SubjectShortName"
min-width="100"
:label="$t('trials:uploadDicomList:table:patientName')"
show-overflow-tooltip
@ -147,6 +163,8 @@ import { getToken } from "@/utils/auth";
const searchDataDefault = () => {
return {
SubjectCode: "",
PatientIdStr: null,
PatientName: null,
PageIndex: 1,
PageSize: 20,
};

View File

@ -2,42 +2,129 @@
<BaseContainer>
<div slot="search-container">
<el-form :inline="true">
<!-- 中心编号 -->
<el-form-item :label="$t('trials:rereadTask:table:siteCode')">
<!-- 阅片标准 -->
<el-form-item :label="$t('trials:processCfg:form:criterion')">
<el-select
v-model="searchData.SiteId"
v-model="searchData.TrialReadingCriterionId"
clearable
filterable
style="width: 120px"
style="width: 150px"
>
<el-option
v-for="(i, index) of siteOptions"
:key="index"
:label="i.TrialSiteCode"
:value="i.SiteId"
v-for="item of trialCriterionList"
:key="item.TrialReadingCriterionId"
:label="item.TrialReadingCriterionName"
:value="item.TrialReadingCriterionId"
/>
</el-select>
</el-form-item>
<!-- 受试者编号 -->
<el-form-item :label="$t('trials:rereadTask:table:subjectCode')">
<el-form-item :label="$t('trials:reviewTrack:table:subjectCode')">
<el-input v-model="searchData.SubjectCode" style="width: 100px" />
</el-form-item>
<!-- <el-form-item style="margin-bottom:10px" label="访视/阅片期名称">
<el-input
v-model="searchData.TaskName"
style="width:100px;"
clearable
/>
</el-form-item> -->
<!-- 任务编号 -->
<el-form-item :label="$t('trials:rereadTask:table:taskCode')">
<el-input
v-model="searchData.TaskCode"
style="width: 130px"
clearable
/>
<!-- 患者编号 -->
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
<el-input v-model="searchData.PatientIdStr" style="width: 140px" />
</el-form-item>
<!-- 患者姓名 -->
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
<el-input v-model="searchData.PatientName" style="width: 140px" />
</el-form-item>
<!-- 任务名称 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:reviewTrack:table:taskName')"
>
<el-input v-model="searchData.TaskName" style="width: 140px" />
</el-form-item>
<!-- 任务状态 -->
<el-form-item :label="$t('trials:readTask:table:taskState')">
<el-select
v-model="searchData.TaskState"
clearable
filterable
style="width: 150px"
>
<el-option
v-for="item of $d.TaskState"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<!-- 阅片人 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:reviewTrack:table:reader')"
>
<el-select
v-model="searchData.DoctorUserId"
clearable
style="width: 120px"
>
<el-option
v-for="item of DoctorUserList"
:key="'DoctorUserId' + item.DoctorUserId"
:value="item.DoctorUserId"
:label="`${item.UserName}(${item.FullName})`"
/>
</el-select>
</el-form-item>
<!-- 审核结果 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:auditRecord:table:auditResult')"
>
<el-select
v-model="searchData.PIAuditState"
clearable
style="width: 120px"
>
<el-option
v-for="item of $d.PIAuditState"
:key="'PIAuditState' + item.label"
:value="item.value"
:label="item.label"
/>
</el-select>
</el-form-item>
<!-- 是否入组 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:auditRecord:table:isEnrollment')"
>
<el-select
v-model="searchData.IsEnrollment"
clearable
style="width: 120px"
>
<el-option
v-for="item of $d.YesOrNo"
:key="item.id"
:value="item.value"
:label="item.label"
/>
</el-select>
</el-form-item>
<!-- 是否PD -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:auditRecord:table:isPDConfirm')"
>
<el-select
v-model="searchData.IsPDConfirm"
clearable
style="width: 120px"
>
<el-option
v-for="item of $d.YesOrNo"
:key="item.id"
:value="item.value"
:label="item.label"
/>
</el-select>
</el-form-item>
<el-form-item>
<!-- 查询 -->
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
@ -64,52 +151,42 @@
@sort-change="handleSortChange"
>
<el-table-column type="index" width="40" align="left" />
<!-- 是否加急 -->
<el-table-column
prop="OriginalReReadingTask.IsUrgent"
:label="$t('trials:rereadTask:table:isUrgent')"
show-overflow-tooltip
sortable="custom"
min-width="100"
>
<template slot-scope="scope">
<el-tag
v-if="scope.row.OriginalReReadingTask.IsUrgent"
type="danger"
>{{
$fd("YesOrNo", scope.row.OriginalReReadingTask.IsUrgent)
}}</el-tag
>
<el-tag v-else type="primary">{{
$fd("YesOrNo", scope.row.OriginalReReadingTask.IsUrgent)
}}</el-tag>
</template>
</el-table-column>
<!-- 任务编号 -->
<el-table-column
prop="OriginalReReadingTask.TaskCode"
min-width="100"
:label="$t('trials:rereadTask:table:taskCode')"
sortable="custom"
show-overflow-tooltip
/>
<!-- 中心编号 -->
<el-table-column
prop="OriginalReReadingTask.TrialSiteCode"
:label="$t('trials:rereadTask:table:siteCode')"
min-width="100"
sortable="custom"
show-overflow-tooltip
/>
<!-- 受试者编号 -->
<el-table-column
prop="OriginalReReadingTask.SubjectCode"
prop="SubjectCode"
min-width="100"
:label="$t('trials:rereadTask:table:subjectCode')"
sortable="custom"
:label="$t('trials:reviewTrack:table:subjectCode')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 患者编号 -->
<el-table-column
prop="PatientIdStr"
min-width="100"
:label="$t('trials:uploadDicomList:table:pId')"
show-overflow-tooltip
>
<template slot-scope="scope">
<span
v-for="(item, index) in scope.row.PatientList"
:key="`${index}${item.PatientId}`"
>
{{
index === scope.row.PatientList.length - 1
? item.PatientIdStr
: `${item.PatientIdStr}, `
}}
</span>
</template>
</el-table-column>
<!-- 患者姓名 -->
<el-table-column
prop="SubjectShortName"
min-width="100"
:label="$t('trials:uploadDicomList:table:patientName')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 任务名称 -->
<el-table-column
prop="OriginalReReadingTask.TaskName"
@ -118,14 +195,6 @@
sortable="custom"
show-overflow-tooltip
/>
<!-- 阅片标准 -->
<el-table-column
prop="OriginalReReadingTask.TrialReadingCriterionName"
:label="$t('trials:rereadTask:table:criterionName')"
min-width="100"
show-overflow-tooltip
sortable="custom"
/>
<!-- 任务状态 -->
<el-table-column
prop="OriginalReReadingTask.TaskState"
@ -172,8 +241,17 @@
>
</template>
</el-table-column>
<!-- 任务类型 -->
<!-- 阅片标准 -->
<el-table-column
prop="OriginalReReadingTask.TrialReadingCriterionName"
:label="$t('trials:rereadTask:table:criterionName')"
min-width="100"
show-overflow-tooltip
sortable="custom"
/>
<!-- 任务类型 -->
<!-- <el-table-column
prop="OriginalReReadingTask.ReadingCategory"
min-width="100"
:label="$t('trials:rereadTask:table:readingCategory')"
@ -222,7 +300,7 @@
}}</el-tag
>
</template>
</el-table-column>
</el-table-column> -->
<!-- 完成阅片时间 -->
<el-table-column
prop="OriginalReReadingTask.SignTime"
@ -232,7 +310,7 @@
show-overflow-tooltip
/>
<!-- 重阅申请类型 -->
<el-table-column
<!-- <el-table-column
prop="RequestReReadingType"
min-width="100"
:label="$t('trials:rereadTask:table:requestReReadingType')"
@ -253,7 +331,7 @@
}}</el-tag>
</div>
</template>
</el-table-column>
</el-table-column> -->
<!-- 申请时间 -->
<el-table-column
prop="RequestReReadingTime"
@ -325,13 +403,13 @@
</template>
</el-table-column>
<!-- 新任务编号 -->
<el-table-column
<!-- <el-table-column
prop="ReReadingNewTaskCode"
:label="$t('trials:rereadTask:table:reReadingNewTaskCode')"
min-width="120"
sortable="custom"
show-overflow-tooltip
/>
/> -->
</el-table>
<!-- 分页组件 -->
<pagination
@ -417,6 +495,20 @@ const searchDataDefault = () => {
TaskCode: "",
PageIndex: 1,
PageSize: 20,
Asc: true,
SortField: "",
IsUrgent: null,
TaskName: null,
TaskState: null,
DoctorUserId: null,
ReadingTaskState: null,
PIAuditState: null,
IsWaitPIAudit: null,
IsEnrollment: null,
IsPDConfirm: null,
TrialReadingCriterionId: null,
PatientIdStr: null,
PatientName: null,
};
};
export default {

View File

@ -1,80 +1,160 @@
<template>
<BaseContainer>
<el-tabs v-model="TrialReadingCriterionId" type="border-card">
<el-tab-pane v-for="item of trialCriterionList" :key="item.TrialReadingCriterionId" :label="item.TrialReadingCriterionName" :name="item.TrialReadingCriterionId">
<el-tab-pane
v-for="item of trialCriterionList"
:key="item.TrialReadingCriterionId"
:label="item.TrialReadingCriterionName"
:name="item.TrialReadingCriterionId"
>
<div>
<div slot="search-container">
<el-form :inline="true">
<!-- 中心编号 -->
<el-form-item :label="$t('trials:reviewTrack:table:siteCode')">
<el-select v-model="searchData.SiteId" clearable filterable style="width:120px;">
<!-- 受试者编号 -->
<el-form-item :label="$t('trials:reviewTrack:table:subjectCode')">
<el-input
v-model="searchData.SubjectCode"
style="width: 100px"
/>
</el-form-item>
<!-- 患者编号 -->
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
<el-input
v-model="searchData.PatientIdStr"
style="width: 140px"
/>
</el-form-item>
<!-- 患者姓名 -->
<el-form-item
:label="$t('trials:uploadDicomList:table:patientName')"
>
<el-input
v-model="searchData.PatientName"
style="width: 140px"
/>
</el-form-item>
<!-- 任务名称 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:reviewTrack:table:taskName')"
>
<el-input v-model="searchData.TaskName" style="width: 140px" />
</el-form-item>
<!-- 任务状态 -->
<el-form-item :label="$t('trials:readTask:table:taskState')">
<el-select
v-model="searchData.TaskState"
clearable
filterable
style="width: 150px"
>
<el-option
v-for="(item,index) of siteOptions"
:key="index"
:label="item.TrialSiteCode"
:value="item.SiteId"
v-for="item of $d.TaskState"
:key="item.id"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<!-- 受试者编号 -->
<el-form-item :label="$t('trials:reviewTrack:table:subjectCode')">
<el-input v-model="searchData.SubjectCode" style="width:100px;" />
</el-form-item>
<!-- 任务名称 -->
<el-form-item style="margin-bottom:10px" :label="$t('trials:reviewTrack:table:taskName')">
<el-input
v-model="searchData.TaskName"
style="width:100px;"
clearable
/>
</el-form-item>
<!-- 阅片人 -->
<el-form-item style="margin-bottom:10px" :label="$t('trials:reviewTrack:table:reader')">
<el-select v-model="searchData.DoctorUserId" clearable style="width:120px;">
<el-option v-for="item of DoctorUserList" :key="'DoctorUserId' + item.DoctorUserId" :value="item.DoctorUserId" :label="`${item.UserName}(${item.FullName})`" />
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:reviewTrack:table:reader')"
>
<el-select
v-model="searchData.DoctorUserId"
clearable
style="width: 120px"
>
<el-option
v-for="item of DoctorUserList"
:key="'DoctorUserId' + item.DoctorUserId"
:value="item.DoctorUserId"
:label="`${item.UserName}(${item.FullName})`"
/>
</el-select>
</el-form-item>
<!-- 审核状态 -->
<el-form-item style="margin-bottom:10px" :label="$t('trials:reviewTrack:table:auditStatus')">
<el-select v-model="searchData.PIAuditState" clearable style="width:120px;">
<el-option v-for="item of $d.PIAuditState" :key="'PIAuditState' + item.label" :value="item.value" :label="item.label" />
<!-- 审核结果 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:auditRecord:table:auditResult')"
>
<el-select
v-model="searchData.PIAuditState"
clearable
style="width: 120px"
>
<el-option
v-for="item of $d.PIAuditState"
:key="'PIAuditState' + item.label"
:value="item.value"
:label="item.label"
/>
</el-select>
</el-form-item>
<el-form-item style="margin-bottom:10px">
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
{{ $t('common:button:search') }}
<!-- 是否入组 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:auditRecord:table:isEnrollment')"
>
<el-select
v-model="searchData.IsEnrollment"
clearable
style="width: 120px"
>
<el-option
v-for="item of $d.YesOrNo"
:key="item.id"
:value="item.value"
:label="item.label"
/>
</el-select>
</el-form-item>
<!-- 是否PD -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:auditRecord:table:isPDConfirm')"
>
<el-select
v-model="searchData.IsPDConfirm"
clearable
style="width: 120px"
>
<el-option
v-for="item of $d.YesOrNo"
:key="item.id"
:value="item.value"
:label="item.label"
/>
</el-select>
</el-form-item>
<el-form-item style="margin-bottom: 10px">
<el-button
type="primary"
icon="el-icon-search"
@click="handleSearch"
>
{{ $t("common:button:search") }}
</el-button>
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
{{ $t('common:button:reset') }}
<el-button
type="primary"
icon="el-icon-refresh-left"
@click="handleReset"
>
{{ $t("common:button:reset") }}
</el-button>
</el-form-item>
</el-form>
</div>
<div slot="main-container">
<el-table
v-adaptive="{bottomOffset:60}"
v-adaptive="{ bottomOffset: 60 }"
v-loading="loading"
:data="list"
stripe
height="100"
@sort-change="handleSortChange"
>
<!-- 任务编号 -->
<el-table-column
prop="TaskCode"
:label="$t('trials:reviewTrack:table:taskCode')"
width="120"
sortable="custom"
show-overflow-tooltip
/>
<!-- 中心编号 -->
<el-table-column
prop="TrialSiteCode"
:label="$t('trials:reviewTrack:table:siteCode')"
width="100"
sortable="custom"
show-overflow-tooltip
/>
<!-- 受试者编号 -->
<el-table-column
prop="SubjectCode"
@ -83,18 +163,76 @@
sortable="custom"
show-overflow-tooltip
/>
<!-- 患者编号 -->
<el-table-column
prop="PatientList.PatientIdStr"
:label="$t('trials:uploadDicomList:table:pId')"
show-overflow-tooltip
>
<template slot-scope="scope">
<span
v-for="(item, index) in scope.row.PatientList"
:key="`${index}${item.PatientId}`"
>
{{
index === scope.row.PatientList.length - 1
? item.PatientIdStr
: `${item.PatientIdStr}, `
}}
</span>
</template>
</el-table-column>
<!-- 患者姓名 -->
<el-table-column
prop="SubjectShortName"
:label="$t('trials:researchStaff:table:Name')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 任务名称 -->
<el-table-column
prop="VisitTaskNum"
prop="TaskName"
:label="$t('trials:reviewTrack:table:taskName')"
width="140"
sortable="custom"
show-overflow-tooltip
>
</el-table-column>
<!-- 任务状态 -->
<el-table-column
prop="TaskState"
:label="$t('trials:readTask:table:taskState')"
min-width="120"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.TaskName }}
<el-tag
:type="
['primary', 'info', 'danger', 'warning', 'danger'][
scope.row.TaskState
]
"
>{{ $fd("TaskState", scope.row.TaskState) }}</el-tag
>
</template>
</el-table-column>
<!-- 阅片标准 -->
<el-table-column
prop="TrialReadingCriterionName"
:label="$t('trials:reviewTrack:table:criterionName')"
min-width="180"
sortable="custom"
show-overflow-tooltip
/>
<!-- 角色 -->
<el-table-column
prop="UserTypeShortName"
:label="$t('trials:auditRecord:table:role')"
min-width="120"
sortable="custom"
show-overflow-tooltip
/>
<!-- 阅片人 -->
<el-table-column
prop="UserName"
@ -107,14 +245,6 @@
{{ scope.row.UserName }}({{ scope.row.FullName }})
</template>
</el-table-column>
<!-- 阅片标准 -->
<el-table-column
prop="TrialReadingCriterionName"
:label="$t('trials:reviewTrack:table:criterionName')"
min-width="180"
sortable="custom"
show-overflow-tooltip
/>
<!-- 阅片完成时间 -->
<el-table-column
prop="SignTime"
@ -123,36 +253,52 @@
sortable="custom"
show-overflow-tooltip
/>
<!-- 创建人 -->
<el-table-column
prop="FirstAuditUserName"
:label="$t('trials:auditRecord:table:creator')"
width="130"
sortable="custom"
show-overflow-tooltip
/>
<!-- 创建时间 -->
<el-table-column
prop="FirstAuditTime"
:label="$t('trials:auditRecord:table:createTime')"
width="130"
sortable="custom"
show-overflow-tooltip
/>
<!-- 审核状态 -->
<!-- 审核结果 -->
<el-table-column
prop="PIAuditState"
:label="$t('trials:reviewTrack:table:auditStatus')"
:label="$t('trials:auditRecord:table:auditResult')"
min-width="140"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">
<el-tag v-if="scope.row.PIAuditState === 0" type="danger">{{ $fd('PIAuditState', scope.row.PIAuditState) }}</el-tag>
<el-tag v-else-if="scope.row.PIAuditState === 1" type="primary">{{ $fd('PIAuditState', scope.row.PIAuditState) }}</el-tag>
<el-tag v-else-if="scope.row.PIAuditState === 2" type="warning">{{ $fd('PIAuditState', scope.row.PIAuditState) }}
</el-tag>
<span v-else>{{ $fd('PIAuditState', scope.row.PIAuditState) }}</span>
<el-tag
v-if="
scope.row.PIAuditState >= 0 && scope.row.PIAuditState < 3
"
:type="
['danger', 'primary', 'warning'][scope.row.PIAuditState]
"
>{{ $fd("PIAuditState", scope.row.PIAuditState) }}</el-tag
>
<span v-else>{{
$fd("PIAuditState", scope.row.PIAuditState)
}}</span>
</template>
</el-table-column>
<el-table-column
prop="item.QuestionId"
:label="item.QuestionName"
min-width="140"
v-for="(item, index) of QuestionList"
:key="'QuestionId' + index"
show-overflow-tooltip
>
<template slot-scope="scope">
{{
item.DictionaryCode
? $fd(
item.DictionaryCode,
parseInt(
scope.row.PIReadingResultList.find(
(v) => v.QuestionId === item.QuestionId
).Answer
)
)
: scope.row.PIReadingResultList.find(
(v) => v.QuestionId === item.QuestionId
).Answer
}}
</template>
</el-table-column>
<!-- 是否入组 -->
@ -165,9 +311,13 @@
>
<template slot-scope="scope">
<el-tag v-if="scope.row.IsEnrollment === true" type="primary">
{{ $fd('YesOrNo', scope.row.IsEnrollment) }}
{{ $fd("YesOrNo", scope.row.IsEnrollment) }}
</el-tag>
<el-tag v-else-if="scope.row.IsEnrollment === false" type="danger">{{ $fd('YesOrNo', scope.row.IsEnrollment) }}</el-tag>
<el-tag
v-else-if="scope.row.IsEnrollment === false"
type="danger"
>{{ $fd("YesOrNo", scope.row.IsEnrollment) }}</el-tag
>
</template>
</el-table-column>
<!-- 是否PD -->
@ -180,9 +330,13 @@
>
<template slot-scope="scope">
<el-tag v-if="scope.row.IsPDConfirm === true" type="primary">
{{ $fd('YesOrNo', scope.row.IsPDConfirm) }}
{{ $fd("YesOrNo", scope.row.IsPDConfirm) }}
</el-tag>
<el-tag v-else-if="scope.row.IsPDConfirm === false" type="danger">{{ $fd('YesOrNo', scope.row.IsPDConfirm) }}</el-tag>
<el-tag
v-else-if="scope.row.IsPDConfirm === false"
type="danger"
>{{ $fd("YesOrNo", scope.row.IsPDConfirm) }}</el-tag
>
</template>
</el-table-column>
<!-- 创建人 -->
@ -226,7 +380,13 @@
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
<pagination
class="page"
:total="total"
:page.sync="searchData.PageIndex"
:limit.sync="searchData.PageSize"
@pagination="getList"
/>
<!-- 审核记录 -->
<el-dialog
v-if="auditRecordVisible"
@ -234,13 +394,15 @@
append-to-body
:close-on-click-modal="false"
custom-class="base-dialog-wrapper"
:title="`${$t('trials:auditRecord:table:auditRecords')}${currentRow.SubjectCode} | ${currentRow.TaskName} | ${currentRow.UserName}`"
:title="`${$t('trials:auditRecord:table:auditRecords')}${
currentRow.SubjectCode
} | ${currentRow.TaskName} | ${currentRow.UserName}`"
width="600px"
>
<ChatForm
:row-data="currentRow"
@getList="getList"
@close="auditRecordVisible=false"
@close="auditRecordVisible = false"
/>
</el-dialog>
</div>
@ -250,34 +412,39 @@
</BaseContainer>
</template>
<script>
import { getPIReadingAuditList } from '@/api/reading'
import { getTrialCriterionList, getDoctorUserSelectList } from '@/api/trials/reading'
import { getTrialSiteSelect } from '@/api/trials'
import { getToken } from '@/utils/auth'
import BaseContainer from '@/components/BaseContainer'
import Pagination from '@/components/Pagination'
import ChatForm from './components/ChatForm'
import { getPIReadingAuditList } from "@/api/reading";
import {
getTrialCriterionList,
getDoctorUserSelectList,
} from "@/api/trials/reading";
import { getTrialSiteSelect } from "@/api/trials";
import { getToken } from "@/utils/auth";
import BaseContainer from "@/components/BaseContainer";
import Pagination from "@/components/Pagination";
import ChatForm from "./components/ChatForm";
const searchDataDefault = () => {
return {
SubjectCode: "",
TaskCode: "",
PageIndex: 1,
PageSize: 20,
Asc: true,
SortField: '',
TrialId: null,
SiteId: null,
SubjectId: null,
SubjectCode: null,
SortField: "",
IsUrgent: null,
TaskName: null,
TaskState: null,
DoctorUserId: null,
ReadingTaskState: 2,
PIAuditState: null,
IsWaitPIAudit: false
}
}
IsWaitPIAudit: null,
IsEnrollment: null,
IsPDConfirm: null,
PatientIdStr: null,
PatientName: null,
};
};
export default {
name: 'Reviewed',
name: "Reviewed",
components: { BaseContainer, Pagination, ChatForm },
data() {
return {
@ -285,101 +452,109 @@ export default {
list: [],
total: 0,
loading: false,
userListLoading: '',
trialId: '',
userListLoading: "",
trialId: "",
trialCriterionList: [],
siteOptions: [],
DoctorUserList: [],
auditRecordVisible: false,
openWindow: null,
TrialReadingCriterionId: '0'
}
TrialReadingCriterionId: "0",
QuestionList:[]
};
},
watch: {
TrialReadingCriterionId(v) {
if (v) {
this.getList()
this.getList();
}
}
},
},
mounted() {
this.trialId = this.$route.query.trialId
this.getTrialCriterionList()
this.getSite()
this.getDoctorUserSelectList()
this.trialId = this.$route.query.trialId;
this.getTrialCriterionList();
this.getSite();
this.getDoctorUserSelectList();
},
methods: {
getList() {
this.loading = true
this.searchData.TrialId = this.trialId
this.searchData.TrialReadingCriterionId = this.TrialReadingCriterionId
getPIReadingAuditList(this.searchData).then(res => {
this.loading = false
this.QuestionList = res.OtherInfo.OtherObj
this.$nextTick(() => {
setTimeout(() => {
this.list = res.Result.CurrentPageData
}, 100)
this.total = res.Result.TotalCount
if(this.$refs.myTable){
this.$refs.myTable.doLayout()
}
this.loading = true;
this.searchData.TrialId = this.trialId;
this.searchData.TrialReadingCriterionId = this.TrialReadingCriterionId;
getPIReadingAuditList(this.searchData)
.then((res) => {
this.loading = false;
this.QuestionList = res.OtherInfo.OtherObj;
this.$nextTick(() => {
setTimeout(() => {
this.list = res.Result.CurrentPageData;
}, 100);
this.total = res.Result.TotalCount;
if (this.$refs.myTable) {
this.$refs.myTable.doLayout();
}
});
})
}).catch(() => { this.loading = false })
.catch(() => {
this.loading = false;
});
},
handleAuditRecords(row) {
this.currentRow = { ...row }
this.auditRecordVisible = true
this.currentRow = { ...row };
this.auditRecordVisible = true;
},
//
handleView(row) {
if (this.openWindow) {
this.openWindow.close()
this.openWindow.close();
}
var token = getToken()
var path
var token = getToken();
var path;
if (row.ReadingTool === 0) {
path = `/readingDicoms?TrialReadingCriterionId=${row.TrialReadingCriterionId}&trialId=${this.trialId}&subjectCode=${row.SubjectCode}&subjectId=${row.SubjectId}&visitTaskId=${row.Id}&isReadingTaskViewInOrder=${row.IsReadingTaskViewInOrder}&criterionType=${row.CriterionType}&readingTool=${row.ReadingTool}&TokenKey=${token}`
path = `/readingDicoms?TrialReadingCriterionId=${row.TrialReadingCriterionId}&trialId=${this.trialId}&subjectCode=${row.SubjectCode}&subjectId=${row.SubjectId}&visitTaskId=${row.Id}&isReadingTaskViewInOrder=${row.IsReadingTaskViewInOrder}&criterionType=${row.CriterionType}&readingTool=${row.ReadingTool}&TokenKey=${token}`;
} else {
path = `/noneDicomReading?TrialReadingCriterionId=${row.TrialReadingCriterionId}&trialId=${this.trialId}&subjectCode=${row.SubjectCode}&subjectId=${row.SubjectId}&visitTaskId=${row.Id}&isReadingTaskViewInOrder=${row.IsReadingTaskViewInOrder}&criterionType=${row.CriterionType}&readingTool=${row.ReadingTool}&TokenKey=${token}`
path = `/noneDicomReading?TrialReadingCriterionId=${row.TrialReadingCriterionId}&trialId=${this.trialId}&subjectCode=${row.SubjectCode}&subjectId=${row.SubjectId}&visitTaskId=${row.Id}&isReadingTaskViewInOrder=${row.IsReadingTaskViewInOrder}&criterionType=${row.CriterionType}&readingTool=${row.ReadingTool}&TokenKey=${token}`;
}
this.openWindow = window.open(path, '_blank')
this.openWindow = window.open(path, "_blank");
},
getTrialCriterionList() {
getTrialCriterionList(this.trialId).then(res => {
this.trialCriterionList = res.Result
this.TrialReadingCriterionId = this.trialCriterionList[0].TrialReadingCriterionId
}).catch(() => {})
getTrialCriterionList(this.trialId)
.then((res) => {
this.trialCriterionList = res.Result;
this.TrialReadingCriterionId =
this.trialCriterionList[0].TrialReadingCriterionId;
})
.catch(() => {});
},
getDoctorUserSelectList() {
getDoctorUserSelectList(this.$route.query.trialId).then(res => {
this.DoctorUserList = res.Result
})
getDoctorUserSelectList(this.$route.query.trialId).then((res) => {
this.DoctorUserList = res.Result;
});
},
getSite() {
getTrialSiteSelect(this.trialId).then(res => {
this.siteOptions = res.Result
})
getTrialSiteSelect(this.trialId).then((res) => {
this.siteOptions = res.Result;
});
},
handleSearch() {
this.searchData.PageIndex = 1
this.getList()
this.searchData.PageIndex = 1;
this.getList();
},
handleReset() {
this.searchData = searchDataDefault()
this.getList()
this.searchData = searchDataDefault();
this.getList();
},
//
handleSortChange(column) {
if (column.order === 'ascending') {
this.searchData.Asc = true
if (column.order === "ascending") {
this.searchData.Asc = true;
} else {
this.searchData.Asc = false
this.searchData.Asc = false;
}
this.searchData.SortField = column.prop
this.searchData.PageIndex = 1
this.getList()
}
}
}
this.searchData.SortField = column.prop;
this.searchData.PageIndex = 1;
this.getList();
},
},
};
</script>

View File

@ -107,7 +107,6 @@ import {
addSubjectPatientStudyBinding,
addOrUpdateSubjectVisit,
} from "@/api/inspection.js";
import { getVisitStudyVerifyTime } from "@/api/trials/visit.js";
import visitSelect from "@/components/visitSelect";
export default {
name: "editVisitDialog",