意见反馈
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
fc6d0c7b35
commit
c13fe6b521
|
|
@ -3,15 +3,16 @@ import FEEDBACKCOMP from "./index.vue";
|
||||||
const FBConstructor = Vue.extend(FEEDBACKCOMP);
|
const FBConstructor = Vue.extend(FEEDBACKCOMP);
|
||||||
|
|
||||||
const FB = options => {
|
const FB = options => {
|
||||||
const { cancelBack } = options;
|
const { type, cancelBack, trialId = null, Id = null } = options;
|
||||||
// if (!UserId) throw `UserId is requred.but ${UserId}`
|
if (!type) throw `type is requred.but ${type}`
|
||||||
const id = `FB${new Date().getTime()}`;
|
const id = `FB${new Date().getTime()}`;
|
||||||
const instance = new FBConstructor();
|
const instance = new FBConstructor();
|
||||||
instance.id = id;
|
instance.id = id;
|
||||||
instance.vm = instance.$mount();
|
instance.vm = instance.$mount();
|
||||||
if (instance.vm.visible) return;
|
if (instance.vm.visible) return;
|
||||||
document.body.appendChild(instance.vm.$el);
|
document.body.appendChild(instance.vm.$el);
|
||||||
instance.vm.open();
|
console.log(type);
|
||||||
|
instance.vm.open({ type, trialId, Id });
|
||||||
instance.vm.$on("success", (Id) => {
|
instance.vm.$on("success", (Id) => {
|
||||||
});
|
});
|
||||||
instance.vm.$on("closed", () => {
|
instance.vm.$on("closed", () => {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<!--FEEDBACK-->
|
<!--FEEDBACK-->
|
||||||
<div v-if="visible" @click.stop="()=>false">
|
<div v-if="visible" @click.stop="() => false">
|
||||||
<el-dialog
|
<el-dialog
|
||||||
:visible.sync="visible"
|
:visible.sync="visible"
|
||||||
v-dialogDrag
|
v-dialogDrag
|
||||||
|
|
@ -18,6 +18,7 @@
|
||||||
:model="form"
|
:model="form"
|
||||||
:inline="true"
|
:inline="true"
|
||||||
class="trialsForm"
|
class="trialsForm"
|
||||||
|
v-if="type === 'detail'"
|
||||||
>
|
>
|
||||||
<el-form-item :label="$t('feedBack:trials:code')">
|
<el-form-item :label="$t('feedBack:trials:code')">
|
||||||
<span>2024-06-28 15:00</span>
|
<span>2024-06-28 15:00</span>
|
||||||
|
|
@ -41,7 +42,7 @@
|
||||||
label-width="100px"
|
label-width="100px"
|
||||||
>
|
>
|
||||||
<!-- 影像异常tip -->
|
<!-- 影像异常tip -->
|
||||||
<p class="tip">
|
<p class="tip" v-if="type === 'imgfail'">
|
||||||
<i
|
<i
|
||||||
class="el-icon-warning-outline"
|
class="el-icon-warning-outline"
|
||||||
style="color: #f56c6c; font-size: 24px"
|
style="color: #f56c6c; font-size: 24px"
|
||||||
|
|
@ -49,16 +50,27 @@
|
||||||
<span> 影像异常导致无法阅片</span>
|
<span> 影像异常导致无法阅片</span>
|
||||||
</p>
|
</p>
|
||||||
<!-- 问题反馈 -->
|
<!-- 问题反馈 -->
|
||||||
<el-form-item :label="$t('feedBack:form:feedBack')" prop="feedBack">
|
<el-form-item
|
||||||
<el-select v-model="form.value" style="width: 100%">
|
:label="$t('feedBack:form:feedBack')"
|
||||||
|
prop="feedBack"
|
||||||
|
v-if="type === 'feedback' && trialId"
|
||||||
|
>
|
||||||
|
<el-select v-model="form.type" style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in options"
|
v-for="item in options"
|
||||||
:key="item.value"
|
:key="item.id"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value"
|
:value="item.value"
|
||||||
>
|
>
|
||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<!-- 问题反馈 -->
|
||||||
|
<el-form-item
|
||||||
|
:label="$t('feedBack:form:feedBack')"
|
||||||
|
prop="feedBack"
|
||||||
|
v-if="type === 'detail'"
|
||||||
|
>
|
||||||
<span>影像异常导致无法阅片</span>
|
<span>影像异常导致无法阅片</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 问题描述 -->
|
<!-- 问题描述 -->
|
||||||
|
|
@ -66,21 +78,34 @@
|
||||||
:label="$t('feedBack:form:description')"
|
:label="$t('feedBack:form:description')"
|
||||||
prop="description"
|
prop="description"
|
||||||
>
|
>
|
||||||
<el-input v-model="form.Code" type="textarea" :rows="4" />
|
<el-input
|
||||||
|
v-model="form.Code"
|
||||||
|
type="textarea"
|
||||||
|
:rows="4"
|
||||||
|
:disabled="type === 'detail'"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 截图 -->
|
<!-- 截图 -->
|
||||||
<el-form-item :label="$t('feedBack:form:screenshot')" prop="screenshot">
|
<el-form-item :label="$t('feedBack:form:screenshot')" prop="screenshot">
|
||||||
<uploadImage
|
<uploadImage
|
||||||
:path.sync="form.HospitalLogoPath"
|
:path.sync="form.HospitalLogoPath"
|
||||||
:disabled="disabled"
|
:disabled="type === 'detail'"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 反馈时间 -->
|
<!-- 反馈时间 -->
|
||||||
<el-form-item :label="$t('feedBack:form:time')" prop="screenshot">
|
<el-form-item
|
||||||
|
:label="$t('feedBack:form:time')"
|
||||||
|
prop="screenshot"
|
||||||
|
v-if="type === 'detail'"
|
||||||
|
>
|
||||||
<span>2024-06-28 15:00</span>
|
<span>2024-06-28 15:00</span>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 状态 -->
|
<!-- 状态 -->
|
||||||
<el-form-item :label="$t('feedBack:form:status')" prop="screenshot">
|
<el-form-item
|
||||||
|
:label="$t('feedBack:form:status')"
|
||||||
|
prop="screenshot"
|
||||||
|
v-if="type === 'detail'"
|
||||||
|
>
|
||||||
<el-switch
|
<el-switch
|
||||||
v-model="form.status"
|
v-model="form.status"
|
||||||
active-color="#13ce66"
|
active-color="#13ce66"
|
||||||
|
|
@ -89,11 +114,12 @@
|
||||||
:inactive-value="false"
|
:inactive-value="false"
|
||||||
:active-text="$fd('FeedBackStatus', true)"
|
:active-text="$fd('FeedBackStatus', true)"
|
||||||
:inactive-text="$fd('FeedBackStatus', false)"
|
:inactive-text="$fd('FeedBackStatus', false)"
|
||||||
|
:disabled="level < 8"
|
||||||
>
|
>
|
||||||
</el-switch>
|
</el-switch>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div slot="footer">
|
<div slot="footer" v-if="type !== 'detail'">
|
||||||
<!-- 取消 -->
|
<!-- 取消 -->
|
||||||
<el-button size="small" @click.stop="cancel">
|
<el-button size="small" @click.stop="cancel">
|
||||||
{{ $t("feedBack:button:cancel") }}
|
{{ $t("feedBack:button:cancel") }}
|
||||||
|
|
@ -122,11 +148,16 @@ export default {
|
||||||
visible: false,
|
visible: false,
|
||||||
loading: false,
|
loading: false,
|
||||||
options: [],
|
options: [],
|
||||||
|
type: null, // detail 表格详情 feedback 填写反馈 imgfail 影像异常
|
||||||
|
trialId: null,
|
||||||
|
Id: null,
|
||||||
form: {
|
form: {
|
||||||
Code: null,
|
Code: null,
|
||||||
UserId: null,
|
UserId: null,
|
||||||
EMail: null,
|
EMail: null,
|
||||||
username: null,
|
username: null,
|
||||||
|
HospitalLogoPath: [],
|
||||||
|
type: 0,
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
Code: [
|
Code: [
|
||||||
|
|
@ -154,13 +185,30 @@ export default {
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
disabled() {
|
level() {
|
||||||
return false;
|
if (this.hasPermi(["role:dev", "role:admin"])) {
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
if (this.hasPermi(["role:pm"])) {
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
if (this.hasPermi(["role:ir", "role:crc"])) {
|
||||||
|
return 7;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
open(data) {
|
open(data) {
|
||||||
|
let { type, trialId, Id } = data;
|
||||||
|
this.type = type;
|
||||||
|
this.trialId = trialId;
|
||||||
|
this.Id = Id;
|
||||||
this.visible = true;
|
this.visible = true;
|
||||||
|
if (!Id) {
|
||||||
|
this.title = this.setTitle();
|
||||||
|
}
|
||||||
|
this.setTypeOption();
|
||||||
},
|
},
|
||||||
cancel() {
|
cancel() {
|
||||||
this.visible = false;
|
this.visible = false;
|
||||||
|
|
@ -169,6 +217,21 @@ export default {
|
||||||
async save() {
|
async save() {
|
||||||
this.cancel();
|
this.cancel();
|
||||||
},
|
},
|
||||||
|
setTypeOption() {
|
||||||
|
if (!this.trialId) return (this.options = []);
|
||||||
|
if (this.hasPermi(["role:ir"]))
|
||||||
|
return (this.option = this.$d.FeedBackTypeToIR);
|
||||||
|
if (this.hasPermi(["role:crc"]))
|
||||||
|
return (this.option = this.$d.FeedBackTypeToCRC);
|
||||||
|
},
|
||||||
|
setTitle(code, name) {
|
||||||
|
if (this.hasPermi(["role:pm"])) {
|
||||||
|
return `${this.$t("feedBack:form:title:pm")}(${code},${name})`;
|
||||||
|
}
|
||||||
|
if (this.hasPermi(["role:ir", "role:crc"])) {
|
||||||
|
return `${this.$t("feedBack:form:title")}`;
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
class="upload-demo"
|
class="upload-demo"
|
||||||
:class="{ uploadDisabled: disabled ? true : false }"
|
:class="{ uploadDisabled: disabled ? true : false }"
|
||||||
action
|
action
|
||||||
|
multiple
|
||||||
:http-request="uploadFile"
|
:http-request="uploadFile"
|
||||||
:before-upload="beforeUpload"
|
:before-upload="beforeUpload"
|
||||||
:file-list="fileList"
|
:file-list="fileList"
|
||||||
|
|
@ -70,7 +71,7 @@ export default {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
remove(file, fileList) {
|
remove(file, fileList) {
|
||||||
this.$emit("update:path", null);
|
// this.$emit("update:path", null);
|
||||||
},
|
},
|
||||||
fileToBlob(file) {
|
fileToBlob(file) {
|
||||||
// 创建 FileReader 对象
|
// 创建 FileReader 对象
|
||||||
|
|
@ -125,6 +126,11 @@ export default {
|
||||||
let res = await this.uploadToOSS(fileName, file);
|
let res = await this.uploadToOSS(fileName, file);
|
||||||
this.btnDisabled = false;
|
this.btnDisabled = false;
|
||||||
if (!res) return;
|
if (!res) return;
|
||||||
|
this.fileList.push({
|
||||||
|
url: this.OSSclientConfig.basePath + res.name,
|
||||||
|
path: res.name,
|
||||||
|
uid: param.file.uid,
|
||||||
|
});
|
||||||
this.$emit("update:path", [...this.path, res.name]);
|
this.$emit("update:path", [...this.path, res.name]);
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
|
|
@ -159,7 +165,7 @@ export default {
|
||||||
handleRemove(file) {
|
handleRemove(file) {
|
||||||
let index = this.fileList.findIndex((item) => item.uid === file.uid);
|
let index = this.fileList.findIndex((item) => item.uid === file.uid);
|
||||||
this.fileList.splice(index, 1);
|
this.fileList.splice(index, 1);
|
||||||
let arr = this.fileList.map((item) => item.name);
|
let arr = this.fileList.map((item) => item.path);
|
||||||
this.$emit("update:path", arr);
|
this.$emit("update:path", arr);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -294,7 +294,7 @@ export default {
|
||||||
],
|
],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
list: [],
|
list: [{ PublishUserName: 1 }],
|
||||||
total: 0,
|
total: 0,
|
||||||
loading: false,
|
loading: false,
|
||||||
datetimerange: [],
|
datetimerange: [],
|
||||||
|
|
@ -357,8 +357,11 @@ export default {
|
||||||
this.getList();
|
this.getList();
|
||||||
},
|
},
|
||||||
// 获取详情
|
// 获取详情
|
||||||
getDetail() {
|
getDetail(row) {
|
||||||
this.$FB();
|
this.$FB({
|
||||||
|
type: "detail",
|
||||||
|
Id: row.Id,
|
||||||
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
>
|
>
|
||||||
<i class="el-icon-chat-dot-square icon"></i>
|
<i class="el-icon-chat-dot-square icon"></i>
|
||||||
<transition name="fade">
|
<transition name="fade">
|
||||||
<div class="checkBox" v-show="visible" @click.stop="()=>false">
|
<div class="checkBox" v-show="visible" @click.stop="() => false">
|
||||||
<span @click.stop="openFeedBack">{{
|
<span @click.stop="openFeedBack">{{
|
||||||
$t("triials:feedBack:botton:opinion")
|
$t("triials:feedBack:botton:opinion")
|
||||||
}}</span>
|
}}</span>
|
||||||
|
|
@ -59,6 +59,8 @@ export default {
|
||||||
openFeedBack() {
|
openFeedBack() {
|
||||||
this.lock = true;
|
this.lock = true;
|
||||||
this.$FB({
|
this.$FB({
|
||||||
|
type: "feedback",
|
||||||
|
trialId: this.$route.query.trialId,
|
||||||
cancelBack: () => {
|
cancelBack: () => {
|
||||||
this.lock = false;
|
this.lock = false;
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -140,6 +140,7 @@
|
||||||
align="center"
|
align="center"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
|
<i class="el-icon-question fbBox" @click.stop="openFeedBack(scope.row)"></i>
|
||||||
<!-- <el-tag v-if="scope.row.IsUrgent" type="danger">{{ $fd('YesOrNo', scope.row.IsUrgent) }}</el-tag>
|
<!-- <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-tag v-else type="primary">{{ $fd('YesOrNo', scope.row.IsUrgent) }}</el-tag> -->
|
||||||
<el-tooltip placement="top">
|
<el-tooltip placement="top">
|
||||||
|
|
@ -1075,6 +1076,13 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 打开意见反馈
|
||||||
|
openFeedBack(row){
|
||||||
|
this.$FB({
|
||||||
|
type:"detail",
|
||||||
|
Id:row.Id
|
||||||
|
})
|
||||||
|
},
|
||||||
handleExport() {
|
handleExport() {
|
||||||
this.exportVisible = true
|
this.exportVisible = true
|
||||||
},
|
},
|
||||||
|
|
@ -1334,4 +1342,10 @@ export default {
|
||||||
/deep/ .el-descriptions-item__label.has-colon:after{
|
/deep/ .el-descriptions-item__label.has-colon:after{
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
.fbBox{
|
||||||
|
float: left;
|
||||||
|
font-size: 32px;
|
||||||
|
color:#F56C6C;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -1,137 +1,188 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="trial-information">
|
<div class="trial-information">
|
||||||
<el-descriptions :column="2" border style="width:1000px;">
|
<el-descriptions :column="2" border style="width: 1000px">
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:trialId')">
|
<el-descriptions-item :label="$t('trials:trials-list:form:trialId')">
|
||||||
{{trialInfo.TrialCode}}
|
{{ trialInfo.TrialCode }}
|
||||||
<el-tag v-show="trialInfo.TrialStatusStr" size="small" style="margin-left:10px;">
|
<el-tag
|
||||||
( {{ $fd('TrialStatusEnum',trialInfo.TrialStatusStr) }} )
|
v-show="trialInfo.TrialStatusStr"
|
||||||
|
size="small"
|
||||||
|
style="margin-left: 10px"
|
||||||
|
>
|
||||||
|
( {{ $fd("TrialStatusEnum", trialInfo.TrialStatusStr) }} )
|
||||||
</el-tag>
|
</el-tag>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:trialType')">
|
<el-descriptions-item :label="$t('trials:trials-list:form:trialType')">
|
||||||
{{ $fd('TrialType', trialInfo.TrialType) }}
|
{{ $fd("TrialType", trialInfo.TrialType) }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:experimentName')" :contentStyle="{'max-width': '300px'}">
|
<el-descriptions-item
|
||||||
|
:label="$t('trials:trials-list:form:experimentName')"
|
||||||
|
:contentStyle="{ 'max-width': '300px' }"
|
||||||
|
>
|
||||||
{{ trialInfo.ExperimentName }}
|
{{ trialInfo.ExperimentName }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:researchNumber')" :contentStyle="{'max-width': '300px'}">
|
<el-descriptions-item
|
||||||
|
:label="$t('trials:trials-list:form:researchNumber')"
|
||||||
|
:contentStyle="{ 'max-width': '300px' }"
|
||||||
|
>
|
||||||
{{ trialInfo.ResearchProgramNo }}
|
{{ trialInfo.ResearchProgramNo }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:researchUnit')">
|
<el-descriptions-item :label="$t('trials:trials-list:form:researchUnit')">
|
||||||
{{trialInfo.MainResearchUnit}}
|
{{ trialInfo.MainResearchUnit }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:pi')">
|
<el-descriptions-item :label="$t('trials:trials-list:form:pi')">
|
||||||
{{ trialInfo.HeadPI }}
|
{{ trialInfo.HeadPI }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:sponsor')">
|
<el-descriptions-item :label="$t('trials:trials-list:form:sponsor')">
|
||||||
{{trialInfo.Sponsor}}
|
{{ trialInfo.Sponsor }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:cro')">
|
<el-descriptions-item :label="$t('trials:trials-list:form:cro')">
|
||||||
{{ trialInfo.CRO }}
|
{{ trialInfo.CRO }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:declarationType')">
|
<el-descriptions-item
|
||||||
<span v-if="trialInfo.DeclarationTypeEnumList">{{trialInfo.DeclarationTypeEnumList.map(v => $fd('DeclarationType', v)).join(', ')}}</span>
|
:label="$t('trials:trials-list:form:declarationType')"
|
||||||
|
>
|
||||||
|
<span v-if="trialInfo.DeclarationTypeEnumList">{{
|
||||||
|
trialInfo.DeclarationTypeEnumList.map((v) =>
|
||||||
|
$fd("DeclarationType", v)
|
||||||
|
).join(", ")
|
||||||
|
}}</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:phase')">
|
<el-descriptions-item :label="$t('trials:trials-list:form:phase')">
|
||||||
{{ trialInfo.Phase }}
|
{{ trialInfo.Phase }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:indicationType')">
|
<el-descriptions-item
|
||||||
{{$fd('IndicationType', trialInfo.IndicationTypeId, 'id')}}
|
:label="$t('trials:trials-list:form:indicationType')"
|
||||||
|
>
|
||||||
|
{{ $fd("IndicationType", trialInfo.IndicationTypeId, "id") }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:indication')">
|
<el-descriptions-item :label="$t('trials:trials-list:form:indication')">
|
||||||
{{$fd('Indication', trialInfo.IndicationEnum)}}{{trialInfo.Indication}}
|
{{ $fd("Indication", trialInfo.IndicationEnum)
|
||||||
|
}}{{ trialInfo.Indication }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:modality')">
|
<el-descriptions-item :label="$t('trials:trials-list:form:modality')">
|
||||||
{{trialInfo.Modalitys}}
|
{{ trialInfo.Modalitys }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:siteCount')">
|
<el-descriptions-item :label="$t('trials:trials-list:form:siteCount')">
|
||||||
{{ trialInfo.PlanSiteCount }}
|
{{ trialInfo.PlanSiteCount }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:patientsNum')">
|
<el-descriptions-item :label="$t('trials:trials-list:form:patientsNum')">
|
||||||
{{trialInfo.ExpectedPatients}}
|
{{ trialInfo.ExpectedPatients }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:timePointsPerPatient')">
|
<el-descriptions-item
|
||||||
|
:label="$t('trials:trials-list:form:timePointsPerPatient')"
|
||||||
|
>
|
||||||
{{ trialInfo.TimePointsPerPatient }}
|
{{ trialInfo.TimePointsPerPatient }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item :span="2" :label="$t('trials:trials-list:form:visitCount')">
|
<el-descriptions-item
|
||||||
{{trialInfo.PlanVisitCount}}
|
:span="2"
|
||||||
|
:label="$t('trials:trials-list:form:visitCount')"
|
||||||
|
>
|
||||||
|
{{ trialInfo.PlanVisitCount }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
<el-descriptions-item
|
||||||
<el-descriptions-item :span="2" :label="$t('trials:trials-list:form:criterion')">
|
:span="2"
|
||||||
|
:label="$t('trials:trials-list:form:criterion')"
|
||||||
|
>
|
||||||
{{ trialInfo.Criterion }}
|
{{ trialInfo.Criterion }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<!-- <el-descriptions-item :label="$t('trials:trials-list:form:reviewMode')">-->
|
<!-- <el-descriptions-item :label="$t('trials:trials-list:form:reviewMode')">-->
|
||||||
<!-- <span>{{$fd('ReadingType', trialInfo.ReadingType)}}</span>-->
|
<!-- <span>{{$fd('ReadingType', trialInfo.ReadingType)}}</span>-->
|
||||||
<!-- </el-descriptions-item>-->
|
<!-- </el-descriptions-item>-->
|
||||||
|
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:expedited')">
|
<el-descriptions-item :label="$t('trials:trials-list:form:expedited')">
|
||||||
{{$fd('YesOrNoForInt', trialInfo.Expedited)}}
|
{{ $fd("YesOrNoForInt", trialInfo.Expedited) }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:projectCycle')">
|
<el-descriptions-item :label="$t('trials:trials-list:form:projectCycle')">
|
||||||
{{ trialInfo.ProjectCycle }}
|
{{ trialInfo.ProjectCycle }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:totalReviewers')">
|
<el-descriptions-item
|
||||||
{{trialInfo.TotalReviewers}}
|
:label="$t('trials:trials-list:form:totalReviewers')"
|
||||||
|
>
|
||||||
|
{{ trialInfo.TotalReviewers }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="$t('trials:trials-list:form:typeofReviewers')">
|
<el-descriptions-item
|
||||||
<span v-if="trialInfo.AttendedReviewerTypeEnumList">{{trialInfo.AttendedReviewerTypeEnumList.map(v => $fd('AttendedReviewerType', v)).join(', ')}}</span>
|
:label="$t('trials:trials-list:form:typeofReviewers')"
|
||||||
|
>
|
||||||
|
<span v-if="trialInfo.AttendedReviewerTypeEnumList">{{
|
||||||
|
trialInfo.AttendedReviewerTypeEnumList.map((v) =>
|
||||||
|
$fd("AttendedReviewerType", v)
|
||||||
|
).join(", ")
|
||||||
|
}}</span>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
</el-descriptions>
|
</el-descriptions>
|
||||||
|
|
||||||
|
<el-badge :value="200" :max="99" class="inBox">
|
||||||
|
<i class="el-icon-message" @click.stop="openFeedBack"></i>
|
||||||
|
</el-badge>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { getTrialInfo } from '@/api/trials'
|
import { getTrialInfo } from "@/api/trials";
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
trialInfo: {},
|
trialInfo: {},
|
||||||
trialId: '',
|
trialId: "",
|
||||||
trialStatus: '',
|
trialStatus: "",
|
||||||
formLoading: false
|
formLoading: false,
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.trialId = this.$route.query.trialId
|
this.trialId = this.$route.query.trialId;
|
||||||
this.initForm()
|
this.initForm();
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
initForm() {
|
initForm() {
|
||||||
this.formLoading = true
|
this.formLoading = true;
|
||||||
getTrialInfo(this.trialId).then(res => {
|
getTrialInfo(this.trialId)
|
||||||
this.formLoading = false
|
.then((res) => {
|
||||||
this.trialInfo = res.Result
|
this.formLoading = false;
|
||||||
this.trialInfo.ReviewTypeList = this.trialInfo.ReviewTypeList.length > 0 ? this.trialInfo.ReviewTypeList.join(', ') : ''
|
this.trialInfo = res.Result;
|
||||||
var modalityArr = []
|
this.trialInfo.ReviewTypeList =
|
||||||
res.Result.ModalityIds.map(i=>{
|
this.trialInfo.ReviewTypeList.length > 0
|
||||||
modalityArr.push(this.$fd('Modality',i,'id'))
|
? this.trialInfo.ReviewTypeList.join(", ")
|
||||||
|
: "";
|
||||||
|
var modalityArr = [];
|
||||||
|
res.Result.ModalityIds.map((i) => {
|
||||||
|
modalityArr.push(this.$fd("Modality", i, "id"));
|
||||||
|
});
|
||||||
|
this.trialInfo.ModalityList = modalityArr.join(", ");
|
||||||
|
this.trialInfo.Criterion =
|
||||||
|
res.Result.CriterionList && res.Result.CriterionList.length > 0
|
||||||
|
? res.Result.CriterionList.join(", ")
|
||||||
|
: "";
|
||||||
|
// this.trialInfo.Expedited = this.$fd('Trial_BasicInfo', res.Result.Expedited)
|
||||||
|
// this.trialInfo.AttendedReviewerType = this.$fd('Trial_BasicInfo', res.Result.AttendedReviewerType)
|
||||||
})
|
})
|
||||||
this.trialInfo.ModalityList = modalityArr.join(', ')
|
.catch(() => {
|
||||||
this.trialInfo.Criterion = res.Result.CriterionList && res.Result.CriterionList.length > 0
|
this.formLoading = false;
|
||||||
? res.Result.CriterionList.join(', ')
|
});
|
||||||
: ''
|
},
|
||||||
// this.trialInfo.Expedited = this.$fd('Trial_BasicInfo', res.Result.Expedited)
|
// 打开反馈意见列表
|
||||||
// this.trialInfo.AttendedReviewerType = this.$fd('Trial_BasicInfo', res.Result.AttendedReviewerType)
|
openFeedBack() {
|
||||||
}).catch(() => { this.formLoading = false })
|
this.$FBT();
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.trial-information{
|
.trial-information {
|
||||||
min-height: 100%;
|
min-height: 100%;
|
||||||
padding: 10px 0 0 10px;
|
padding: 10px 0 0 10px;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
}
|
}
|
||||||
|
.inBox {
|
||||||
|
font-size: 32px;
|
||||||
|
margin-top: 30px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue