irc_web/.svn/pristine/00/002c7b21491fd6c071d6b047963...

273 lines
8.2 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div v-loading="loading">
<div style="padding: 0 20px;">
<div class="info-content" v-html="crcMessageInfo.TalkContent" />
</div>
<div>
<div style="padding: 10px;background: #f3f3f3;border-radius: 10px;margin-top: 10px">
<div style="display:flex;margin-bottom: 10px;justify-content: space-between;align-items: center">
<div>
请准确核实后录入当前访视的实际影像检查记录:
</div>
<el-button type="primary" size="mini" @click="addMsg">添加</el-button>
</div>
<el-table
:data="msgList">
<el-table-column type="index" width="40" />
<el-table-column
prop=""
label="检查日期"
show-overflow-tooltip
>
<template slot-scope="scope">
{{scope.row.StudyDate}}
</template>
</el-table-column>
<el-table-column
prop=""
label="检查类型"
show-overflow-tooltip
>
<template slot-scope="scope">
{{scope.row.Modality}}
</template>
</el-table-column>
<el-table-column
prop=""
label="已提交"
show-overflow-tooltip
>
<template slot-scope="scope">
{{$fd('YesOrNo', scope.row.IsJoin)}}
</template>
</el-table-column>
<el-table-column
prop=""
label="实际存在"
show-overflow-tooltip
>
<template slot-scope="scope">
<el-switch
:disabled="!scope.row.IsJoin"
v-model="scope.row.IsCheck"
@change="compareStudy"
>
</el-switch>
</template>
</el-table-column>
<el-table-column
prop=""
width="100px"
label="操作"
fixed="right"
>
<template slot-scope="scope">
<el-button :disabled="scope.row.IsJoin" @click="moveMsg(scope.$index)" size="small" type="text">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-form ref="revenusForm"
size="small"
label-width="400px"
:label-position="'top'"
:rules="rules"
:model="form">
<el-form-item v-if="isLackOf" label="IRC与实际情况影像检查不一致的原因为" prop="reason">
<el-checkbox-group v-model="form.reason" style="display: flex;flex-direction: column">
<el-checkbox style="display: block" label="EDC按疗效评估数据记录影像检查信息;">EDC按疗效评估数据记录影像检查信息</el-checkbox>
<el-checkbox style="display: block" label="EDC录入错误;">EDC录入错误</el-checkbox>
<el-checkbox style="display: block" label="IRC数据上传错误申请回退并重新上传;">IRC数据上传错误申请回退并重新上传</el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-form>
</div>
</div>
<div class="function">
<!-- 发送 -->
<el-button
type="primary"
@click="handleReply"
>
{{ $t('trials:consistencyCheck:button:sendMessage') }}
</el-button>
</div>
<el-dialog
v-if="studyVisible"
:visible.sync="studyVisible"
v-dialogDrag
:close-on-click-modal="false"
append-to-body
custom-class="base-dialog-wrapper"
:width="'500px'"
title="添加检查"
>
<el-form>
<div class="base-dialog-body">
<el-form-item label-width="80px" label="检查日期">
<el-date-picker
v-model="typeInfo.StudyDate"
style="width: 100%"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期">
</el-date-picker>
</el-form-item>
<el-form-item label-width="80px" label="检查类型">
<el-select
v-model="typeInfo.Modality"
style="width: 100%"
>
<el-option v-for="item of $d.Modality" :label="item.raw.Value" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</div>
<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="handleCancel"> {{ $t('common:button:cancel') }}</el-button>
<el-button size="small" type="primary" @click="handleSave">
{{ $t('common:button:save') }}
</el-button>
</el-form-item>
</div>
</el-form>
</el-dialog>
</div>
</template>
<script>
export default {
name: 'CrcSendMessage',
props: {
crcMessageInfo: {
type: Object,
default() {
return {
TalkContent: null,
}
}
}
},
data() {
return {
loading: false,
msgList: [],
studyVisible: false,
typeInfo: {
StudyDate: null,
Modality: null,
IsJoin: false,
IsCheck: true
},
isLackOf: false,
EDCList: [],
IRCList: [],
form: {
reason: []
},
rules: {
reason: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }]
}
}
},
mounted() {
this.crcMessageInfo.ParamInfoList.forEach(v => {
this.msgList.push({...v, IsJoin: true, Ischeck: false})
})
this.compareStudy()
},
methods: {
compareStudy() {
var isLackOf = false
this.IRCList = []
this.msgList.forEach(v => {
if (v.IsJoin !== v.IsCheck) {
isLackOf = true
this.IRCList.push(v)
}
})
this.isLackOf = isLackOf
},
handleCancel() {
this.studyVisible = false
this.typeInfo = {
StudyDate: null,
Modality: null
}
},
handleSave() {
if (!this.typeInfo.StudyDate || !this.typeInfo.Modality) {
this.$message.error('请选择检查日期和检查类型')
return
}
this.msgList.push({...this.typeInfo})
this.compareStudy()
this.studyVisible = false
this.typeInfo = {
StudyDate: null,
Modality: null,
IsJoin: false,
IsCheck: true
}
},
closeLoading() {
this.loading = false
},
addMsg() {
this.studyVisible = true
},
moveMsg(index) {
this.$confirm('确定删除该条检查记录?').then(res => {
this.msgList.splice(index, 1)
this.compareStudy()
})
},
handleReply() {
if (this.msgList.length === 0) {
this.$message.error('请录入真实的检查情况')
return
}
this.$refs.revenusForm.validate((valid) => {
if (!valid) return
var TalkContent = ''
TalkContent += '经核实,该受试者当前访视的实际影像检查如下:<br>'
this.msgList.forEach((v, i) => {
TalkContent += `${i+1}.${v.StudyDate}的${v.Modality}影像检查<br>`
})
if (this.isLackOf) {
TalkContent += '<br>'
TalkContent += 'IRC与实际情况不一致影像检查如下<br>'
this.IRCList.forEach((v, i) => {
TalkContent += `${i+1}.${v.StudyDate}的${v.Modality}影像检查(${v.IsJoin && !v.IsCheck ? 'IRC多余': 'IRC缺少'}<br>`
})
if (this.form.reason.length > 0) {
TalkContent += '<br>'
TalkContent += 'IRC与实际情况影像检查不一致的原因为<br>'
this.form.reason.forEach((v, i) => {
TalkContent += `${i+1}.${v}<br>`
})
}
} else {
TalkContent += `<br>IRC与实际情况影像检查一致`
}
console.log(TalkContent)
this.$emit('sendMessage', TalkContent, this.closeLoading)
})
}
}
}
</script>
<style scoped>
.function{
margin-top: 10px;
text-align: right;
}
>>>.el-form--label-top .el-form-item__label{
padding-bottom: 0;
padding-top: 20px;
}
</style>