Merge branch 'uat' of https://gitea.frp.extimaging.com/XCKJ/irc_web into uat
continuous-integration/drone/push Build is passing Details

uat_us^2
caiyiling 2026-08-17 15:41:31 +08:00
commit b2ea219acc
5 changed files with 425 additions and 391 deletions

View File

@ -325,3 +325,21 @@ export function getTrialSiteSurveyList_Export(data) {
data
})
}
// 导出中心设备
export function getSiteSurveyEquipmentList_Export(data) {
return requestDownload({
url: `/ExcelExport/getSiteSurveyEquipmentList_Export`,
responseType: 'blob',
method: 'post',
data
})
}
// 导出中心调研基本信息
export function getSiteSurveyInfoList_Export(data) {
return requestDownload({
url: `/ExcelExport/getSiteSurveyInfoList_Export`,
responseType: 'blob',
method: 'post',
data
})
}

View File

@ -6,18 +6,28 @@
<!-- 中心编号 -->
<el-form-item :label="$t('trials:researchStaff:table:siteId')">
<el-select v-model="searchData.TrialSiteId" clearable filterable style="width:120px;">
<el-option
v-for="(item,index) of siteOptions"
:key="index"
:label="item.TrialSiteCode"
:value="item.TrialSiteId"
/>
<el-option v-for="(item, index) of siteOptions" :key="index" :label="item.TrialSiteCode"
:value="item.TrialSiteId" />
</el-select>
</el-form-item>
<!-- 中心名称 -->
<el-form-item :label="$t('trials:researchStaff:table:siteName')">
<el-input v-model="searchData.TrialSiteName" class="mr" clearable style="width:120px;" />
</el-form-item>
<!-- 状态 -->
<el-form-item :label="$t('trials:researchRecord:table:status')">
<el-select v-model="searchData.State" clearable filterable style="width: 120px">
<el-option v-for="(item, index) of $d.ResearchRecord" :key="index" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
<!-- 是否废除 -->
<!-- <el-form-item :label="$t('trials:researchRecord:table:isDeleted')">
<el-select v-model="searchData.IsDeleted" clearable filterable style="width: 120px">
<el-option v-for="item of $d.YesOrNo" v-show="item.raw.ValueCN !== ''" :key="`IsDeleted${item.value}`"
:label="item.label" :value="item.value" />
</el-select>
</el-form-item> -->
<el-form-item>
<!-- 查询 -->
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
@ -32,11 +42,7 @@
</el-form-item>
<!-- 导出 -->
<el-form-item>
<el-button
type="primary"
icon="el-icon-download"
:disabled="list.length === 0"
>
<el-button type="primary" icon="el-icon-download" :disabled="list.length === 0" @click="handleExport">
{{ $t('common:button:export') }}
</el-button>
</el-form-item>
@ -44,150 +50,162 @@
</template>
<template slot="main-container">
<el-table
ref="list"
v-loading="loading"
v-adaptive="{ bottomOffset: 55 }"
:data="list"
stripe
height="100"
@sort-change="handleSortByColumn"
>
<el-table ref="equipmentsList" v-loading="loading" v-adaptive="{ bottomOffset: 55 }" :data="list" stripe
height="100" @sort-change="handleSortByColumn">
<el-table-column type="index" width="50" />
<!-- 中心编号 -->
<el-table-column
prop="TrialSiteCode"
:label="$t('trials:researchStaff:table:siteId')"
show-overflow-tooltip
sortable="custom"
min-width="100"
>
<el-table-column prop="TrialSiteCode" :label="$t('trials:researchStaff:table:siteId')" show-overflow-tooltip
sortable="custom" min-width="100">
</el-table-column>
<!-- 中心名称 -->
<el-table-column
prop="TrialSiteName"
:label="$t('trials:researchStaff:table:siteName')"
show-overflow-tooltip
sortable="custom"
min-width="120"
>
<el-table-column prop="TrialSiteName" :label="$t('trials:researchStaff:table:siteName')" show-overflow-tooltip
sortable="custom" min-width="120">
</el-table-column>
<!-- 扫描设备 -->
<el-table-column
v-show="equipmentControlFieldList.includes('EquipmentTypeEnum')"
prop="EquipmentTypeEnum"
:label="$t('trials:equiptResearch:form:equipment')"
min-width="120"
show-overflow-tooltip>
<!-- 状态 -->
<el-table-column prop="State" :label="$t('trials:researchRecord:table:status')" min-width="150"
sortable="custom" show-overflow-tooltip>
<template slot-scope="scope">
{{ scope.row.OtherEquipmentType ? scope.row.OtherEquipmentType :
$fd('SiteSurvey_ScanEquipmentType', scope.row.EquipmentTypeEnum) }}
<el-tag v-if="scope.row.State === 0" type="primary">{{
$fd('ResearchRecord', scope.row.State)
}}</el-tag>
<el-tag v-if="scope.row.State === 1" type="info">{{
$fd('ResearchRecord', scope.row.State)
}}</el-tag>
<el-tag v-if="scope.row.State === 2" type="warning">{{
$fd('ResearchRecord', scope.row.State)
}}</el-tag>
<el-tag v-if="scope.row.State === 3" type="danger">{{
$fd('ResearchRecord', scope.row.State)
}}</el-tag>
</template>
</el-table-column>
<!-- 扫描参数 -->
<el-table-column
v-show="equipmentControlFieldList.includes('Parameters')"
prop="Parameters"
:label="$t('trials:equiptResearch:form:param')"
min-width="100"
show-overflow-tooltip />
<!-- 扫描仪器制造商名称 -->
<el-table-column
v-show="equipmentControlFieldList.includes('ManufacturerType')"
min-width="120"
prop="ManufacturerType"
:label="$t('trials:equiptResearch:form:manufacturer')"
show-overflow-tooltip>
<!-- 是否废除 -->
<!-- <el-table-column prop="IsDeleted" :label="$t('trials:researchRecord:table:isDeleted')" min-width="100"
sortable="custom" show-overflow-tooltip>
<template slot-scope="scope">
{{ scope.row.ManufacturerName ? scope.row.ManufacturerName : $fd('ManufacturerType',
scope.row.ManufacturerType) }}
<el-tag v-if="scope.row.IsDeleted" type="danger">{{
$fd('YesOrNo', scope.row.IsDeleted)
}}</el-tag>
<el-tag v-else type="primary">{{
$fd('YesOrNo', scope.row.IsDeleted)
}}</el-tag>
</template>
</el-table-column>
<!-- 扫描仪型号 -->
<el-table-column
v-show="equipmentControlFieldList.includes('ScannerType')"
min-width="120"
prop="ScannerType"
:label="$t('trials:equiptResearch:form:model')"
show-overflow-tooltip />
<!-- 磁场强度 -->
<el-table-column
v-show="equipmentControlFieldList.includes('MagneticFieldStrengthType')"
min-width="120"
prop="MagneticFieldStrengthType"
:label="$t('trials:equiptResearch:form:MagneticFieldStrengthType')"
show-overflow-tooltip >
<template slot-scope="scope">
{{ $fd('MagneticFieldStrengthType', scope.row.MagneticFieldStrengthType) }}
</template>
</el-table-column>
<!-- 体部线圈通道数 -->
<el-table-column
v-show="equipmentControlFieldList.includes('BodyCoilChannelCount')"
min-width="120"
prop="BodyCoilChannelCount"
:label="$t('trials:equiptResearch:form:BodyCoilChannelCount')"
show-overflow-tooltip >
<template slot-scope="scope">
{{ $fd('BodyCoilChannelCount', scope.row.BodyCoilChannelCount) }}
</template>
</el-table-column>
<!-- 是否具备专用的PDFF脂肪定量序列CSE-MRI序列 -->
<el-table-column
v-show="equipmentControlFieldList.includes('HasDedicatedPdfFatQuantificationSequence')"
min-width="120"
prop="HasDedicatedPdfFatQuantificationSequence"
:label="$t('trials:equiptResearch:form:HasDedicatedPdfFatQuantificationSequence')"
show-overflow-tooltip >
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.HasDedicatedPdfFatQuantificationSequence) }}
</template>
</el-table-column>
<!-- 专用的PDFF脂肪定量序列类型 -->
<el-table-column
v-show="equipmentControlFieldList.includes('PdfFatQuantificationSequenceType')"
min-width="120"
prop="PdfFatQuantificationSequenceType"
:label="$t('trials:equiptResearch:form:PdfFatQuantificationSequenceType')"
show-overflow-tooltip >
<template slot-scope="scope">
{{ scope.row.OtherSequenceSpecification ? scope.row.OtherSequenceSpecification :
$fd('PdfFatQuantificationSequenceType', scope.row.PdfFatQuantificationSequenceType) }}
</template>
</el-table-column>
<!-- 是否包含 T2/R2 校正用于铁沉积校正 -->
<el-table-column
v-show="equipmentControlFieldList.includes('HasT2R2Correction')"
min-width="120"
prop="HasT2R2Correction"
:label="$t('trials:equiptResearch:form:HasT2R2Correction')"
show-overflow-tooltip >
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.HasT2R2Correction) }}
</template>
</el-table-column>
<!-- 是否可完整导出 PDFF 参数图及全部原始 DICOM 数据 -->
<el-table-column
v-show="equipmentControlFieldList.includes('CanFullyExportPdfParameterMapsAndRawDicom')"
prop="CanFullyExportPdfParameterMapsAndRawDicom"
:label="$t('trials:equiptResearch:form:CanFullyExportPdfParameterMapsAndRawDicom')"
min-width="120"
show-overflow-tooltip >
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.CanFullyExportPdfParameterMapsAndRawDicom) }}
</template>
</el-table-column>
<!-- 备注 -->
<el-table-column
v-show="equipmentControlFieldList.includes('Note')"
min-width="120"
prop="Note"
:label="$t('trials:equiptResearch:form:precautions')"
show-overflow-tooltip />
</el-table-column> -->
<!-- 联系人 -->
<el-table-column prop="UserName" :label="$t('trials:researchForm:form:contactor')" show-overflow-tooltip
sortable="custom" min-width="100" />
<!-- 联系电话 -->
<el-table-column prop="Phone" :label="$t('trials:researchForm:form:contactorPhone')" show-overflow-tooltip
sortable="custom" min-width="100" />
<!-- 联系邮箱 -->
<el-table-column prop="Email" :label="$t('trials:researchForm:form:contactorEmail')" show-overflow-tooltip
sortable="custom" min-width="100" />
<template v-if="equipmentControlFieldList.includes('EquipmentTypeEnum')">
<!-- 扫描设备 -->
<el-table-column prop="EquipmentTypeEnum" :label="$t('trials:equiptResearch:form:equipment')" min-width="120"
show-overflow-tooltip>
<template slot-scope="scope">
{{ scope.row.OtherEquipmentType ? scope.row.OtherEquipmentType :
$fd('SiteSurvey_ScanEquipmentType', scope.row.EquipmentTypeEnum) }}
</template>
</el-table-column>
</template>
<template v-if="equipmentControlFieldList.includes('Parameters')">
<!-- 扫描参数 -->
<el-table-column prop="Parameters" :label="$t('trials:equiptResearch:form:param')" min-width="100"
show-overflow-tooltip />
</template>
<template v-if="equipmentControlFieldList.includes('ManufacturerType')">
<!-- 扫描仪器制造商名称 -->
<el-table-column min-width="120" prop="ManufacturerType"
:label="$t('trials:equiptResearch:form:manufacturer')" show-overflow-tooltip>
<template slot-scope="scope">
{{ scope.row.ManufacturerName ? scope.row.ManufacturerName : $fd('ManufacturerType',
scope.row.ManufacturerType) }}
</template>
</el-table-column>
</template>
<template v-if="equipmentControlFieldList.includes('ScannerType')">
<!-- 扫描仪型号 -->
<el-table-column min-width="120" prop="ScannerType" :label="$t('trials:equiptResearch:form:model')"
show-overflow-tooltip />
</template>
<template v-if="equipmentControlFieldList.includes('MagneticFieldStrengthType')">
<!-- 磁场强度 -->
<el-table-column min-width="120" prop="MagneticFieldStrengthType"
:label="$t('trials:equiptResearch:form:MagneticFieldStrengthType')" show-overflow-tooltip>
<template slot-scope="scope">
{{ $fd('MagneticFieldStrengthType', scope.row.MagneticFieldStrengthType) }}
</template>
</el-table-column>
</template>
<template v-if="equipmentControlFieldList.includes('BodyCoilChannelCount')">
<!-- 体部线圈通道数 -->
<el-table-column min-width="120" prop="BodyCoilChannelCount"
:label="$t('trials:equiptResearch:form:BodyCoilChannelCount')" show-overflow-tooltip>
<template slot-scope="scope">
{{ $fd('BodyCoilChannelCount', scope.row.BodyCoilChannelCount) }}
</template>
</el-table-column>
</template>
<template v-if="equipmentControlFieldList.includes('HasDedicatedPdfFatQuantificationSequence')">
<!-- 是否具备专用的PDFF脂肪定量序列CSE-MRI序列 -->
<el-table-column min-width="120" prop="HasDedicatedPdfFatQuantificationSequence"
:label="$t('trials:equiptResearch:form:HasDedicatedPdfFatQuantificationSequence')" show-overflow-tooltip>
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.HasDedicatedPdfFatQuantificationSequence) }}
</template>
</el-table-column>
</template>
<template v-if="equipmentControlFieldList.includes('PdfFatQuantificationSequenceType')">
<!-- 专用的PDFF脂肪定量序列类型 -->
<el-table-column min-width="120" prop="PdfFatQuantificationSequenceType"
:label="$t('trials:equiptResearch:form:PdfFatQuantificationSequenceType')" show-overflow-tooltip>
<template slot-scope="scope">
{{ scope.row.OtherSequenceSpecification ? scope.row.OtherSequenceSpecification :
$fd('PdfFatQuantificationSequenceType', scope.row.PdfFatQuantificationSequenceType) }}
</template>
</el-table-column>
</template>
<template v-if="equipmentControlFieldList.includes('HasT2R2Correction')">
<!-- 是否包含 T2/R2 校正用于铁沉积校正 -->
<el-table-column min-width="120" prop="HasT2R2Correction"
:label="$t('trials:equiptResearch:form:HasT2R2Correction')" show-overflow-tooltip>
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.HasT2R2Correction) }}
</template>
</el-table-column>
</template>
<template v-if="equipmentControlFieldList.includes('CanFullyExportPdfParameterMapsAndRawDicom')">
<!-- 是否可完整导出 PDFF 参数图及全部原始 DICOM 数据 -->
<el-table-column prop="CanFullyExportPdfParameterMapsAndRawDicom"
:label="$t('trials:equiptResearch:form:CanFullyExportPdfParameterMapsAndRawDicom')" min-width="120"
show-overflow-tooltip>
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.CanFullyExportPdfParameterMapsAndRawDicom) }}
</template>
</el-table-column>
</template>
<template v-if="equipmentControlFieldList.includes('Note')">
<!-- 备注 -->
<el-table-column min-width="120" prop="Note" :label="$t('trials:equiptResearch:form:remark')"
show-overflow-tooltip />
</template>
</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" />
</template>
</BaseContainer>
</template>
@ -196,9 +214,11 @@ import { getTrialSiteSelect } from '@/api/trials'
import { getSiteSurveyEquipmentList } from '@/api/research'
import BaseContainer from '@/components/BaseContainer'
import Pagination from '@/components/Pagination'
import { getSiteSurveyEquipmentList_Export } from '@/api/export'
const searchDataDefault = () => {
return {
SortField: '',
State: "",
Asc: true,
PageIndex: 1,
PageSize: 20,
@ -228,6 +248,9 @@ export default {
this.getSite()
},
methods: {
async handleExport() {
await getSiteSurveyEquipmentList_Export(this.searchData)
},
async getList() {
try {
this.loading = true
@ -242,20 +265,10 @@ export default {
EquipmentControlFieldList.forEach(item => {
this.equipmentControlFieldList.push(item.FiledName)
})
this.$nextTick(() => {
this.$refs.equipmentsList.doLayout()
})
}
} catch(e) {
console.log(e)
} finally {
this.loading = false
}
},
//
async handleExport() {
try {
this.searchData.TrialId = this.trialId
this.loading = true
const { SortField, Asc, PageIndex, PageSize, ...param } = { ...this.searchData }
await trialSiteUserSummaryListExport({ ...param })
} catch (e) {
console.log(e)
} finally {

View File

@ -14,6 +14,20 @@
<el-form-item :label="$t('trials:researchStaff:table:siteName')">
<el-input v-model="searchData.TrialSiteName" class="mr" clearable style="width:120px;" />
</el-form-item>
<!-- 状态 -->
<el-form-item :label="$t('trials:researchRecord:table:status')">
<el-select v-model="searchData.State" clearable filterable style="width: 120px">
<el-option v-for="(item, index) of $d.ResearchRecord" :key="index" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
<!-- 是否废除 -->
<!-- <el-form-item :label="$t('trials:researchRecord:table:isDeleted')">
<el-select v-model="searchData.IsDeleted" clearable filterable style="width: 120px">
<el-option v-for="item of $d.YesOrNo" v-show="item.raw.ValueCN !== ''" :key="`IsDeleted${item.value}`"
:label="item.label" :value="item.value" />
</el-select>
</el-form-item> -->
<el-form-item>
<!-- 查询 -->
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
@ -28,7 +42,7 @@
</el-form-item>
<!-- 导出 -->
<el-form-item>
<el-button type="primary" icon="el-icon-download" :disabled="list.length === 0">
<el-button type="primary" icon="el-icon-download" :disabled="list.length === 0" @click="handleExport">
{{ $t('common:button:export') }}
</el-button>
</el-form-item>
@ -36,8 +50,8 @@
</template>
<template slot="main-container">
<el-table ref="list" v-loading="loading" v-adaptive="{ bottomOffset: 55 }" :data="list" stripe height="100"
@sort-change="handleSortByColumn">
<el-table ref="questionsList" v-loading="loading" v-adaptive="{ bottomOffset: 55 }" :data="list" stripe
height="100" @sort-change="handleSortByColumn">
<el-table-column type="index" width="50" />
<!-- 项目编号 -->
@ -87,6 +101,36 @@
<!-- 中心名称 -->
<el-table-column prop="SiteName" :label="$t('trials:researchStaff:table:siteName')" show-overflow-tooltip
sortable="custom" min-width="100" />
<!-- 状态 -->
<el-table-column prop="State" :label="$t('trials:researchRecord:table:status')" min-width="150"
sortable="custom" show-overflow-tooltip>
<template slot-scope="scope">
<el-tag v-if="scope.row.State === 0" type="primary">{{
$fd('ResearchRecord', scope.row.State)
}}</el-tag>
<el-tag v-if="scope.row.State === 1" type="info">{{
$fd('ResearchRecord', scope.row.State)
}}</el-tag>
<el-tag v-if="scope.row.State === 2" type="warning">{{
$fd('ResearchRecord', scope.row.State)
}}</el-tag>
<el-tag v-if="scope.row.State === 3" type="danger">{{
$fd('ResearchRecord', scope.row.State)
}}</el-tag>
</template>
</el-table-column>
<!-- 是否废除 -->
<!-- <el-table-column prop="IsDeleted" :label="$t('trials:researchRecord:table:isDeleted')" min-width="100"
sortable="custom" show-overflow-tooltip>
<template slot-scope="scope">
<el-tag v-if="scope.row.IsDeleted" type="danger">{{
$fd('YesOrNo', scope.row.IsDeleted)
}}</el-tag>
<el-tag v-else type="primary">{{
$fd('YesOrNo', scope.row.IsDeleted)
}}</el-tag>
</template>
</el-table-column> -->
<!-- 联系人 -->
<el-table-column prop="UserName" :label="$t('trials:researchForm:form:contactor')" show-overflow-tooltip
sortable="custom" min-width="100" />
@ -97,7 +141,7 @@
<el-table-column prop="Email" :label="$t('trials:researchForm:form:contactorEmail')" show-overflow-tooltip
sortable="custom" min-width="100" />
<el-table-column v-show="otherInfo.IsSupportUploadFile" prop="SiteSurveyFile.FileName"
:label="$t('trials:researchForm:form:contactorEmail')" show-overflow-tooltip min-width="100">
:label="$t('trials:researchForm:form:SiteSurveyFile')" show-overflow-tooltip min-width="100">
<template slot-scope="scope">
<el-button v-if="scope.row.SiteSurveyFile && scope.row.SiteSurveyFile.FileName" type="text"
@click="viewFile(scope.row.SiteSurveyFile)">
@ -105,78 +149,100 @@
</el-button>
</template>
</el-table-column>
<!-- 平均刻盘周期 -->
<el-table-column v-show="!notShowFieldList.includes('AverageEngravingCycle')" prop="AverageEngravingCycle"
:label="$t('trials:researchForm:form:engravingCycle')" show-overflow-tooltip />
<!-- MRI-PDFF 是否为本中心该适应症的常规诊疗检查项目 -->
<el-table-column v-show="!notShowFieldList.includes('IsRoutineMRIPDEE')" prop="IsRoutineMRIPDEE"
:label="$t('trials:researchForm:form:IsRoutineMRIPDEE')" show-overflow-tooltip>
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.IsRoutineMRIPDEE) }}
</template>
</el-table-column>
<!-- MRI-PDFF 检查的检测周期含单次检查时长预约等待时长等 -->
<el-table-column
v-show="!notShowFieldList.includes('MRIPDFFScanTime') || !notShowFieldList.includes('MRIPDFFLeadTime') || !notShowFieldList.includes('MRIPDFFOther')"
:label="$t('trials:researchForm:form:IsRoutineMRIPDEE')">
<!-- 单次检查时长分钟 -->
<el-table-column v-show="!notShowFieldList.includes('MRIPDFFScanTime')" prop="MRIPDFFScanTime"
:label="$t('trials:researchForm:form:MRIPDFFScanTime')" show-overflow-tooltip />
<!-- 平均预约等待时长 -->
<el-table-column v-show="!notShowFieldList.includes('MRIPDFFLeadTime')" prop="MRIPDFFLeadTime"
:label="$t('trials:researchForm:form:MRIPDFFLeadTime')" show-overflow-tooltip />
<!-- 特殊情况备注-->
<el-table-column v-show="!notShowFieldList.includes('MRIPDFFOther')" prop="MRIPDFFOther"
:label="$t('trials:researchForm:form:MRIPDFFOther')" show-overflow-tooltip />
</el-table-column>
<!-- 如已选择研究者评估项目是否会授权影像科老师参与本试验如不单独授权是否可在试验中保持 1-2 名固定技师操作 -->
<el-table-column
v-show="!notShowFieldList.includes('IsAuthorizeRadiologistsParticipate') || !notShowFieldList.includes('AssignFixedTechnologists')"
prop="IsAuthorize" :label="$t('trials:researchForm:form:IsAuthorize')" show-overflow-tooltip>
<template slot-scope="scope">
<span v-if="scope.row.IsAuthorizeRadiologistsParticipate">
{{ $t('trials:researchForm:form:IsAuthorizeRadiologistsParticipate') }}
</span>
<span v-else-if="scope.row.AssignFixedTechnologists">
{{ $t('trials:researchForm:form:AssignFixedTechnologists') }}
</span>
</template>
</el-table-column>
<!-- 请确认参与本项目影像采集的影像技师具备对应的资质技师证对应设备的大型设备上岗证 -->
<el-table-column v-show="!notShowFieldList.includes('IsConfirmImagingTechnologist')"
prop="IsConfirmImagingTechnologist" :label="$t('trials:researchForm:form:isQualified')" show-overflow-tooltip>
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.IsConfirmImagingTechnologist) }}
</template>
</el-table-column>
<!-- 原因 -->
<el-table-column v-show="!notShowFieldList.includes('NotConfirmReson')" prop="NotConfirmReson"
:label="$t('trials:researchForm:form:notQualifiedReason')" show-overflow-tooltip />
<!-- 研究单位疗效评估人员类型 -->
<el-table-column v-show="!notShowFieldList.includes('EfficacyEvaluatorType')" prop="EfficacyEvaluatorType"
:label="$t('trials:researchForm:form:staffType')" show-overflow-tooltip />
<!-- 是否严格按照研究单位影像手册参数完成图像采集 -->
<el-table-column v-show="!notShowFieldList.includes('IsFollowStudyParameters')" prop="IsFollowStudyParameters"
:label="$t('trials:researchForm:form:isFollowStudyParam')" show-overflow-tooltip>
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.IsFollowStudyParameters) }}
</template>
</el-table-column>
<!-- 不能严格按照研究单位影像手册参数采集图像原因 -->
<el-table-column v-show="!notShowFieldList.includes('NotFollowReson')" prop="NotFollowReson"
:label="$t('trials:researchForm:form:notFollowStudyParam')" show-overflow-tooltip />
<!-- 是否严格按照影像手册参数完成刻盘 -->
<el-table-column v-show="!notShowFieldList.includes('ISStrictManualBurnFlag')" prop="ISStrictManualBurnFlag"
:label="$t('trials:researchForm:form:ISStrictManualBurnFlag')" show-overflow-tooltip>
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.ISStrictManualBurnFlag) }}
</template>
</el-table-column>
<!-- 不能严格按照影像手册参数完成刻盘原因 -->
<el-table-column v-show="!notShowFieldList.includes('NotStrictManualBurnFlagReason')"
prop="NotStrictManualBurnFlagReason" :label="$t('trials:researchForm:form:NotStrictManualBurnFlagReason')"
show-overflow-tooltip />
<template v-if="!notShowFieldList.includes('AverageEngravingCycle')">
<!-- 平均刻盘周期 -->
<el-table-column prop="AverageEngravingCycle" :label="$t('trials:researchForm:form:engravingCycle')"
show-overflow-tooltip />
</template>
<template v-if="!notShowFieldList.includes('IsRoutineMRIPDEE')">
<!-- MRI-PDFF 是否为本中心该适应症的常规诊疗检查项目 -->
<el-table-column prop="IsRoutineMRIPDEE" :label="$t('trials:researchForm:form:IsRoutineMRIPDEE')"
show-overflow-tooltip>
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.IsRoutineMRIPDEE) }}
</template>
</el-table-column>
</template>
<template
v-if="!notShowFieldList.includes('MRIPDFFScanTime') || !notShowFieldList.includes('MRIPDFFLeadTime') || !notShowFieldList.includes('MRIPDFFOther')">
<!-- MRI-PDFF 检查的检测周期含单次检查时长预约等待时长等 -->
<el-table-column :label="$t('trials:researchForm:form:IsRoutineMRIPDEE')">
<!-- 单次检查时长分钟 -->
<el-table-column v-show="!notShowFieldList.includes('MRIPDFFScanTime')" prop="MRIPDFFScanTime"
:label="$t('trials:researchForm:form:MRIPDFFScanTime')" show-overflow-tooltip />
<!-- 平均预约等待时长 -->
<el-table-column v-show="!notShowFieldList.includes('MRIPDFFLeadTime')" prop="MRIPDFFLeadTime"
:label="$t('trials:researchForm:form:MRIPDFFLeadTime')" show-overflow-tooltip />
<!-- 特殊情况备注-->
<el-table-column v-show="!notShowFieldList.includes('MRIPDFFOther')" prop="MRIPDFFOther"
:label="$t('trials:researchForm:form:MRIPDFFOther')" show-overflow-tooltip />
</el-table-column>
</template>
<template
v-if="!notShowFieldList.includes('IsAuthorizeRadiologistsParticipate') || !notShowFieldList.includes('AssignFixedTechnologists')">
<!-- 如已选择研究者评估项目是否会授权影像科老师参与本试验如不单独授权是否可在试验中保持 1-2 名固定技师操作 -->
<el-table-column prop="IsAuthorize" :label="$t('trials:researchForm:form:IsAuthorize')" show-overflow-tooltip>
<template slot-scope="scope">
<span v-if="scope.row.IsAuthorizeRadiologistsParticipate">
{{ $t('trials:researchForm:form:IsAuthorizeRadiologistsParticipate') }}
</span>
<span v-else-if="scope.row.AssignFixedTechnologists">
{{ $t('trials:researchForm:form:AssignFixedTechnologists') }}
</span>
</template>
</el-table-column>
</template>
<template v-if="!notShowFieldList.includes('IsConfirmImagingTechnologist')">
<!-- 请确认参与本项目影像采集的影像技师具备对应的资质技师证对应设备的大型设备上岗证 -->
<el-table-column prop="IsConfirmImagingTechnologist" :label="$t('trials:researchForm:form:isQualified')"
show-overflow-tooltip>
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.IsConfirmImagingTechnologist) }}
</template>
</el-table-column>
</template>
<template v-if="!notShowFieldList.includes('NotConfirmReson')">
<!-- 原因 -->
<el-table-column prop="NotConfirmReson" :label="$t('trials:researchForm:form:notQualifiedReason')"
show-overflow-tooltip />
</template>
<template v-if="!notShowFieldList.includes('EfficacyEvaluatorType')">
<!-- 研究单位疗效评估人员类型 -->
<el-table-column prop="EfficacyEvaluatorType" :label="$t('trials:researchForm:form:staffType')"
show-overflow-tooltip>
<template slot-scope="scope">
{{ $fd('EfficacyEvaluatorType', scope.row.EfficacyEvaluatorType) }}
</template>
</el-table-column>
</template>
<template v-if="!notShowFieldList.includes('IsFollowStudyParameters')">
<!-- 是否严格按照研究单位影像手册参数完成图像采集 -->
<el-table-column prop="IsFollowStudyParameters" :label="$t('trials:researchForm:form:isFollowStudyParam')"
show-overflow-tooltip>
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.IsFollowStudyParameters) }}
</template>
</el-table-column>
</template>
<template v-if="!notShowFieldList.includes('NotFollowReson')">
<!-- 不能严格按照研究单位影像手册参数采集图像原因 -->
<el-table-column prop="NotFollowReson" :label="$t('trials:researchForm:form:notFollowStudyParam')"
show-overflow-tooltip />
</template>
<template v-if="!notShowFieldList.includes('ISStrictManualBurnFlag')">
<!-- 是否严格按照影像手册参数完成刻盘 -->
<el-table-column prop="ISStrictManualBurnFlag" :label="$t('trials:researchForm:form:ISStrictManualBurnFlag')"
show-overflow-tooltip>
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.ISStrictManualBurnFlag) }}
</template>
</el-table-column>
</template>
<template v-if="!notShowFieldList.includes('NotStrictManualBurnFlagReason')">
<!-- 不能严格按照影像手册参数完成刻盘原因 -->
<el-table-column prop="NotStrictManualBurnFlagReason"
:label="$t('trials:researchForm:form:NotStrictManualBurnFlagReason')" show-overflow-tooltip />
</template>
</el-table>
<!-- 分页组件 -->
@ -190,10 +256,12 @@ import { getTrialSiteSelect } from '@/api/trials'
import { getSiteSurveyInfoList } from '@/api/research'
import BaseContainer from '@/components/BaseContainer'
import Pagination from '@/components/Pagination'
import { getSiteSurveyInfoList_Export } from '@/api/export'
const searchDataDefault = () => {
return {
SortField: '',
Asc: true,
State: "",
PageIndex: 1,
PageSize: 20,
TrialId: '',
@ -222,6 +290,9 @@ export default {
this.getSite()
},
methods: {
async handleExport() {
await getSiteSurveyInfoList_Export(this.searchData)
},
async getList() {
try {
this.loading = true
@ -232,6 +303,9 @@ export default {
this.total = res.Result.TotalCount
this.otherInfo = res.OtherInfo
this.notShowFieldList = res.OtherInfo.NotShowFieldList
this.$nextTick(() => {
this.$refs.questionsList.doLayout()
})
}
} catch (e) {
console.log(e)
@ -239,19 +313,6 @@ export default {
this.loading = false
}
},
//
async handleExport() {
try {
this.searchData.TrialId = this.trialId
this.loading = true
const { SortField, Asc, PageIndex, PageSize, ...param } = { ...this.searchData }
await trialSiteUserSummaryListExport({ ...param })
} catch (e) {
console.log(e)
} finally {
this.loading = false
}
},
// site
async getSite() {
try {

View File

@ -6,31 +6,33 @@
<!-- 中心编号 -->
<el-form-item :label="$t('trials:researchStaff:table:siteId')">
<el-select v-model="searchData.TrialSiteId" clearable filterable style="width:120px;">
<el-option
v-for="(item,index) of siteOptions"
:key="index"
:label="item.TrialSiteCode"
:value="item.TrialSiteId"
/>
<el-option v-for="(item, index) of siteOptions" :key="index" :label="item.TrialSiteCode"
:value="item.TrialSiteId" />
</el-select>
</el-form-item>
<!-- 状态 -->
<el-form-item :label="$t('trials:researchRecord:table:status')">
<el-select v-model="searchData.State" clearable filterable style="width: 120px">
<el-option v-for="(item, index) of $d.ResearchRecord" :key="index" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
<!-- 是否废除 -->
<!-- <el-form-item :label="$t('trials:researchRecord:table:isDeleted')">
<el-select v-model="searchData.IsDeleted" clearable filterable style="width: 120px">
<el-option v-for="item of $d.YesOrNo" v-show="item.raw.ValueCN !== ''" :key="`IsDeleted${item.value}`"
:label="item.label" :value="item.value" />
</el-select>
</el-form-item> -->
<!-- 姓名 -->
<el-form-item :label="$t('trials:researchStaff:table:Name')">
<el-input v-model="searchData.UserName" class="mr" clearable style="width:120px;" />
</el-form-item>
<!-- 角色 -->
<el-form-item :label="$t('trials:researchStaff:table:role')">
<el-select
v-model="searchData.TrialRoleCode"
style="width:120px;"
clearable
>
<el-option
v-for="item of dict.type.SiteSurvey_UserRoles"
:key="item.value"
:label="item.label"
:value="parseInt(item.raw.Code)"
/>
<el-select v-model="searchData.TrialRoleCode" style="width:120px;" clearable>
<el-option v-for="item of dict.type.SiteSurvey_UserRoles" :key="item.value" :label="item.label"
:value="parseInt(item.raw.Code)" />
</el-select>
</el-form-item>
<!-- 单位 -->
@ -39,42 +41,19 @@
</el-form-item>
<!-- 是否生成账号 -->
<el-form-item :label="$t('trials:researchStaff:table:isGenerateAccount')">
<el-select
v-model="searchData.IsGenerateAccount"
style="width:120px;"
clearable
>
<el-option v-for="item of $d.YesOrNo" :key="`IsGenerateAccount${item.value}`" :label="item.label" :value="item.value" />
<el-select v-model="searchData.IsGenerateAccount" style="width:120px;" clearable>
<el-option v-for="item of $d.YesOrNo" :key="`IsGenerateAccount${item.value}`" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
<!-- 用户类型 -->
<el-form-item :label="$t('trials:researchStaff:table:userType')">
<el-select
v-model="searchData.UserTypeId"
style="width:120px;"
clearable
>
<el-option
v-for="item of userTypeOptions"
:key="item.Id"
:label="item.UserTypeShortName"
:value="item.Id"
>
<el-select v-model="searchData.UserTypeId" style="width:120px;" clearable>
<el-option v-for="item of userTypeOptions" :key="item.Id" :label="item.UserTypeShortName" :value="item.Id">
<span>{{ item.UserType }}</span>
</el-option>
</el-select>
</el-form-item>
<!-- 状态 -->
<!-- <el-form-item :label="$t('trials:researchStaff:table:status')">
<el-select v-model="searchData.State" clearable filterable style="width:120px;">
<el-option
v-for="(item,index) of researchUserState"
:key="index"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item> -->
<el-form-item>
<!-- 查询 -->
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
@ -89,25 +68,15 @@
</el-form-item>
<!-- 发邮件 -->
<el-form-item>
<el-button
v-hasPermi="['trials:trials-panel:attachments:site-research:summary-record:sendEmail']"
type="primary"
icon="el-icon-message"
:loading="sendEmailLoading"
:disabled="selectArr.length === 0"
@click="handleSendEmail"
>
<el-button v-hasPermi="['trials:trials-panel:attachments:site-research:summary-record:sendEmail']"
type="primary" icon="el-icon-message" :loading="sendEmailLoading" :disabled="selectArr.length === 0"
@click="handleSendEmail">
{{ $t('trials:researchRecord:dialogButton:sendEmail') }}
</el-button>
</el-form-item>
<!-- 导出 -->
<el-form-item>
<el-button
type="primary"
icon="el-icon-download"
:disabled="list.length === 0"
@click="handleExport"
>
<el-button type="primary" icon="el-icon-download" :disabled="list.length === 0" @click="handleExport">
{{ $t('common:button:export') }}
</el-button>
</el-form-item>
@ -116,96 +85,74 @@
<template slot="main-container">
<!-- 系统文件列表 -->
<el-table
ref="researchUsers"
v-loading="loading"
v-adaptive="{bottomOffset:55}"
:data="list"
stripe
height="100"
@selection-change="handleSelectChange"
@sort-change="handleSortByColumn"
>
<el-table-column
type="selection"
width="50"
:selectable="handleSelectTable"
/>
<el-table ref="researchUsers" v-loading="loading" v-adaptive="{ bottomOffset: 55 }" :data="list" stripe
height="100" @selection-change="handleSelectChange" @sort-change="handleSortByColumn">
<el-table-column type="selection" width="50" :selectable="handleSelectTable" />
<el-table-column type="index" width="50" />
<!-- 中心编号 -->
<el-table-column
prop="TrialSiteSurvey.TrialSiteCode"
:label="$t('trials:researchStaff:table:siteId')"
show-overflow-tooltip
sortable="custom"
min-width="100"
>
<el-table-column prop="TrialSiteSurvey.TrialSiteCode" :label="$t('trials:researchStaff:table:siteId')"
show-overflow-tooltip sortable="custom" min-width="100">
<template slot-scope="scope">{{ `${scope.row.TrialSiteSurvey.TrialSiteCode}` }}</template>
</el-table-column>
<!-- 中心名称 -->
<el-table-column
prop="TrialSiteSurvey.SiteName"
:label="$t('trials:researchStaff:table:siteName')"
show-overflow-tooltip
sortable="custom"
min-width="120"
>
<el-table-column prop="TrialSiteSurvey.SiteName" :label="$t('trials:researchStaff:table:siteName')"
show-overflow-tooltip sortable="custom" min-width="120">
<template slot-scope="scope">{{ `${scope.row.TrialSiteSurvey.SiteName}` }}</template>
</el-table-column>
<!-- 状态 -->
<el-table-column prop="State" :label="$t('trials:researchRecord:table:status')" min-width="150"
sortable="custom" show-overflow-tooltip>
<template slot-scope="scope">
<el-tag v-if="scope.row.State === 0" type="primary">{{
$fd('ResearchRecord', scope.row.State)
}}</el-tag>
<el-tag v-if="scope.row.State === 1" type="info">{{
$fd('ResearchRecord', scope.row.State)
}}</el-tag>
<el-tag v-if="scope.row.State === 2" type="warning">{{
$fd('ResearchRecord', scope.row.State)
}}</el-tag>
<el-tag v-if="scope.row.State === 3" type="danger">{{
$fd('ResearchRecord', scope.row.State)
}}</el-tag>
</template>
</el-table-column>
<!-- 是否废除 -->
<!-- <el-table-column prop="IsDeleted" :label="$t('trials:researchRecord:table:isDeleted')" min-width="100"
sortable="custom" show-overflow-tooltip>
<template slot-scope="scope">
<el-tag v-if="scope.row.IsDeleted" type="danger">{{
$fd('YesOrNo', scope.row.IsDeleted)
}}</el-tag>
<el-tag v-else type="primary">{{
$fd('YesOrNo', scope.row.IsDeleted)
}}</el-tag>
</template>
</el-table-column> -->
<!-- 姓名 -->
<el-table-column
prop="LastName"
:label="$t('trials:researchStaff:table:Name')"
show-overflow-tooltip
sortable="custom"
min-width="100"
>
<el-table-column prop="LastName" :label="$t('trials:researchStaff:table:Name')" show-overflow-tooltip
sortable="custom" min-width="100">
<template slot-scope="scope">{{ `${scope.row.LastName} / ${scope.row.FirstName}` }}</template>
</el-table-column>
<!-- 角色 -->
<el-table-column
prop="TrialRoleCode"
:label="$t('trials:researchStaff:table:role')"
show-overflow-tooltip
sortable="custom"
min-width="100"
>
<el-table-column prop="TrialRoleCode" :label="$t('trials:researchStaff:table:role')" show-overflow-tooltip
sortable="custom" min-width="100">
<template slot-scope="scope">
{{ $fd('SiteSurvey_UserRoles',scope.row.TrialRoleCode) }}
{{ $fd('SiteSurvey_UserRoles', scope.row.TrialRoleCode) }}
</template>
</el-table-column>
<!-- 电话号码 -->
<el-table-column
prop="Phone"
:label="$t('trials:researchStaff:table:phone')"
show-overflow-tooltip
sortable="custom"
min-width="120"
/>
<el-table-column prop="Phone" :label="$t('trials:researchStaff:table:phone')" show-overflow-tooltip
sortable="custom" min-width="120" />
<!-- 邮箱 -->
<el-table-column
prop="Email"
:label="$t('trials:researchStaff:table:email')"
show-overflow-tooltip
sortable="custom"
min-width="150"
/>
<el-table-column prop="Email" :label="$t('trials:researchStaff:table:email')" show-overflow-tooltip
sortable="custom" min-width="150" />
<!-- 单位 -->
<el-table-column
prop="OrganizationName"
:label="$t('trials:researchStaff:table:organization')"
show-overflow-tooltip
sortable="custom"
min-width="100"
/>
<el-table-column prop="OrganizationName" :label="$t('trials:researchStaff:table:organization')"
show-overflow-tooltip sortable="custom" min-width="100" />
<!-- 是否生成账号 -->
<el-table-column
prop="IsGenerateAccount"
:label="$t('trials:researchStaff:table:isGenerateAccount')"
show-overflow-tooltip
sortable="custom"
min-width="130"
>
<el-table-column prop="IsGenerateAccount" :label="$t('trials:researchStaff:table:isGenerateAccount')"
show-overflow-tooltip sortable="custom" min-width="130">
<template slot-scope="scope">
{{ $fd('YesOrNo', scope.row.IsGenerateAccount) }}
</template>
@ -223,21 +170,11 @@
<!-- </el-table-column>-->
<!-- 用户类型 -->
<el-table-column
prop="UserType"
:label="$t('trials:researchStaff:table:userType')"
show-overflow-tooltip
sortable="custom"
min-width="100"
/>
<el-table-column prop="UserType" :label="$t('trials:researchStaff:table:userType')" show-overflow-tooltip
sortable="custom" min-width="100" />
<!-- 是否加入 -->
<el-table-column
prop="IsJoin"
:label="$t('trials:researchStaff:table:isJoin')"
show-overflow-tooltip
sortable="custom"
min-width="100"
>
<el-table-column prop="IsJoin" :label="$t('trials:researchStaff:table:isJoin')" show-overflow-tooltip
sortable="custom" min-width="100">
<template slot-scope="scope">
<el-tag v-if="scope.row.IsJoin" type="info">{{ $fd('IsJoin', scope.row.IsJoin) }}</el-tag>
<el-tag v-else type="danger">{{ $fd('IsJoin', scope.row.IsJoin) }}</el-tag>
@ -246,7 +183,8 @@
</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" />
</template>
</BaseContainer>
</template>

View File

@ -57,7 +57,11 @@ export default {
},
computed: {
isAudit() {
return (this.hasPermi(['role:spm', 'role:cpm', 'role:apm']) && this.activeStatus === 1) || (this.hasPermi(['role:pm']) && this.activeStatus === 2)
if (this.isSPMJoin) {
return (this.hasPermi(['role:spm', 'role:cpm', 'role:apm']) && this.activeStatus === 1) || (this.hasPermi(['role:pm']) && this.activeStatus === 2)
} else {
return this.hasPermi(['role:pm']) && this.activeStatus === 1
}
}
},
mounted() {