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

uat
caiyiling 2025-03-06 15:10:50 +08:00
commit d74da23d41
11 changed files with 565 additions and 341 deletions

View File

@ -56,6 +56,16 @@
</el-option>
</el-select>
</el-form-item>
<el-form-item
:label="$t('dictionary:file:form:ShowOrder')"
prop="ShowOrder"
>
<el-input-number
v-model="form.ShowOrder"
:step="1"
step-strictly
></el-input-number>
</el-form-item>
<el-form-item :label="$t('dictionary:file:form:IsEnable')">
<el-switch
v-model="form.IsEnable"
@ -115,6 +125,7 @@ export default {
Name: null,
NameCN: null,
SubIdentificationEnum: null,
ShowOrder: 0,
},
rules: {
Name: [

View File

@ -144,6 +144,12 @@
{{ $fd('SubIdentification', scope.row.SubIdentificationEnum) }}
</template>
</el-table-column>
<el-table-column
prop="ShowOrder"
:label="$t('dictionary:file:table:ShowOrder')"
show-overflow-tooltip
sortable="custom"
/>
<el-table-column
:label="$t('dictionary:file:table:IsEnable')"
prop="IsEnable"

View File

@ -160,25 +160,34 @@
show-overflow-tooltip
>
<template slot-scope="scope">
<el-tooltip
class="item"
effect="dark"
:content="$t('trials:staff:tip:userTypeDisabled')"
placement="top"
style="margin-right: 2px"
<el-button
v-if="
scope.row.TrialUserRoleList.some(
(item) => item.IsDeleted || item.IsUserRoleDisabled
)
Array.isArray(scope.row.TrialUserRoleList) &&
scope.row.TrialUserRoleList.length > 0
"
type="text"
@click.stop="openRoleList(scope.row)"
>
<i class="el-icon-warning icon-i"></i>
</el-tooltip>
<span>{{
scope.row.TrialUserRoleList.map(
(item) => item.UserTypeShortName
).join(', ')
}}</span>
<el-tooltip
class="item"
effect="dark"
:content="$t('trials:staff:tip:userTypeDisabled')"
placement="top"
style="margin-right: 2px"
v-if="
scope.row.TrialUserRoleList.some(
(item) => item.IsDeleted || item.IsUserRoleDisabled
)
"
>
<i class="el-icon-warning icon-i"></i>
</el-tooltip>
<span>{{
scope.row.TrialUserRoleList.map(
(item) => item.UserTypeShortName
).join(', ')
}}</span>
</el-button>
</template>
</el-table-column>
<el-table-column
@ -230,6 +239,89 @@
:limit.sync="searchData.PageSize"
@pagination="getList"
/>
<!-- 修改参与者人员角色 -->
<base-model v-if="role_model.visible" :config="role_model">
<template slot="dialog-body">
<el-table :data="roleList" style="width: 100%" max-height="300px">
<el-table-column type="index" width="60">
<template slot-scope="scope">
<span
style="
display: flex;
align-items: center;
justify-content: flex-end;
"
>
<el-tooltip
class="item"
effect="dark"
:content="$t('system:retrospect:tip:userTypeSysDisabled')"
placement="top"
style="margin-right: 3px"
v-if="scope.row.IsUserRoleDisabled"
>
<i
v-if="scope.row.IsUserRoleDisabled"
class="el-icon-warning icon-i"
></i>
</el-tooltip>
<span>{{ scope.$index + 1 }}</span>
</span>
</template>
</el-table-column>
<el-table-column
prop="UserTypeShortName"
:label="
$t(
'system:retrospect:table:UserTypeShortName'
)
"
/>
<el-table-column
prop="IsDeleted"
:label="
$t(
'system:retrospect:table:IsUserRoleDisabled'
)
"
>
<template slot-scope="scope">
<span> {{ $fd('IsDisable', scope.row.IsDeleted) }}</span>
</template>
</el-table-column>
<el-table-column
prop="IsDeleted"
:label="
$t(
'system:retrospect:table:enableTime'
)
"
min-width="120px"
>
<template slot-scope="scope">
<span>
{{ scope.row.CreateTime }}
</span>
</template>
</el-table-column>
<el-table-column
prop="IsDeleted"
:label="
$t(
'system:retrospect:table:forbiddenTime'
)
"
min-width="120px"
>
<template slot-scope="scope">
<span v-if="scope.row.IsDeleted">
{{ scope.row.UpdateTime }}
</span>
</template>
</el-table-column>
</el-table>
</template>
</base-model>
</box-content>
</template>
<script>
@ -239,6 +331,7 @@ import {
} from '@/api/admin.js'
import Pagination from '@/components/Pagination'
import BoxContent from '@/components/BoxContent'
import BaseModel from '@/components/BaseModel'
const searchDataDefault = () => {
return {
TrialCode: null,
@ -253,7 +346,7 @@ const searchDataDefault = () => {
}
}
export default {
components: { BoxContent, Pagination },
components: { BoxContent, Pagination, BaseModel },
props: {
userId: { type: String, default: '' },
},
@ -271,6 +364,13 @@ export default {
list: [],
total: 0,
userTypeOptions: [],
roleList: [],
role_model: {
visible: false,
title: this.$t('system:retrospect:dialogTitle:role'),
width: '800px',
},
}
},
mounted() {
@ -278,6 +378,10 @@ export default {
this.getList()
},
methods: {
openRoleList(row) {
this.roleList = row.TrialUserRoleList
this.role_model.visible = true
},
getUserTypeList() {
getUserTypeListByUserType(0).then((res) => {
if (res.IsSuccess) {

View File

@ -72,7 +72,7 @@
<!-- <el-button type="text" @click="isShow = !isShow">More</el-button> -->
<!-- Search -->
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
{{ $t("common:button:search") }}
{{ $t('common:button:search') }}
</el-button>
<!-- Reset -->
<el-button
@ -80,7 +80,7 @@
icon="el-icon-refresh-left"
@click="handleReset"
>
{{ $t("common:button:reset") }}
{{ $t('common:button:reset') }}
</el-button>
<!-- Export -->
<el-button
@ -90,7 +90,7 @@
:loading="exportLoading"
@click="handleExportTrial"
>
{{ $t("common:button:export") }}
{{ $t('common:button:export') }}
</el-button>
</el-form-item>
</el-form>
@ -102,7 +102,7 @@
type="primary"
@click="handleNew"
>
{{ $t("common:button:new") }}
{{ $t('common:button:new') }}
</el-button>
</span>
</template>
@ -293,10 +293,9 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@click="handleSelectSearch"
>Search</el-button>
<el-button type="primary" @click="handleSelectSearch"
>Search</el-button
>
<el-button type="primary" @click="handleReset">Reset</el-button>
<el-button type="primary" @click="isShow = false">Back</el-button>
</el-form-item>
@ -358,19 +357,23 @@
<el-tag
v-if="scope.row.TrialStatusStr === 'Initializing'"
type="info"
>{{ $fd("TrialStatusEnum", scope.row.TrialStatusStr) }}</el-tag>
>{{ $fd('TrialStatusEnum', scope.row.TrialStatusStr) }}</el-tag
>
<el-tag
v-if="scope.row.TrialStatusStr === 'Ongoing'"
type="primary"
>{{ $fd("TrialStatusEnum", scope.row.TrialStatusStr) }}</el-tag>
>{{ $fd('TrialStatusEnum', scope.row.TrialStatusStr) }}</el-tag
>
<el-tag
v-if="scope.row.TrialStatusStr === 'Completed'"
type="warning"
>{{ $fd("TrialStatusEnum", scope.row.TrialStatusStr) }}</el-tag>
>{{ $fd('TrialStatusEnum', scope.row.TrialStatusStr) }}</el-tag
>
<el-tag
v-if="scope.row.TrialStatusStr === 'Stopped'"
type="danger"
>{{ $fd("TrialStatusEnum", scope.row.TrialStatusStr) }}</el-tag>
>{{ $fd('TrialStatusEnum', scope.row.TrialStatusStr) }}</el-tag
>
</template>
</el-table-column>
<el-table-column
@ -437,7 +440,7 @@
min-width="160"
>
<template slot-scope="scope">
{{ scope.row.IR_ReadingCriterionList.join(", ") }}
{{ scope.row.IR_ReadingCriterionList.join(', ') }}
</template>
</el-table-column>
<el-table-column
@ -472,7 +475,7 @@
min-width="170"
>
<template slot-scope="scope">
{{ scope.row.IR_PMEmailList.join(", ") }}
{{ scope.row.IR_PMEmailList.join(', ') }}
</template>
</el-table-column>
<el-table-column
@ -579,7 +582,14 @@
:disabled="
(scope.row.TrialStatusStr === 'Initializing' &&
!hasPermi(['role:pm'])) ||
scope.row.IsDeleted || ((scope.row.TrialStatusStr === 'Completed' || scope.row.TrialStatusStr === 'Stopped') && !(hasPermi(['role:qa']) || hasPermi(['role:ea']) || hasPermi(['role:pm'])))
scope.row.IsDeleted ||
((scope.row.TrialStatusStr === 'Completed' ||
scope.row.TrialStatusStr === 'Stopped') &&
!(
hasPermi(['role:qa']) ||
hasPermi(['role:ea']) ||
hasPermi(['role:pm'])
))
"
:title="$t('trials:trials-list:action:panel')"
@click.stop="handleDetail(scope.row)"
@ -602,6 +612,18 @@
:title="$t('trials:trials-list:action:status')"
@click.stop="handleStatus(scope.row)"
/>
<!--项目文档-->
<el-button
v-hasPermi="[
'trials:trials-panel:trial-summary:trial-document:inspect',
'trials:trials-panel:trial-summary:trial-document:manage',
]"
circle
icon="el-icon-folder-opened"
:disabled="scope.row.IsDeleted"
:title="$t('trials:trials-list:action:trialDocument')"
@click.stop="toTrialDocument(scope.row)"
/>
<!-- 废除项目 -->
<el-button
v-hasPermi="['trials:trials-list:abolish']"
@ -609,7 +631,7 @@
icon="el-icon-delete"
:disabled="
scope.row.IsDeleted ||
scope.row.TrialStatusStr !== 'Initializing'
scope.row.TrialStatusStr !== 'Initializing'
"
:title="$t('trials:trials-list:action:abolition')"
@click.stop="handleAbandon(scope.row)"
@ -690,7 +712,7 @@
import {
abandonTrial,
ifTrialCanOngoing,
getTrialToBeDoneList
getTrialToBeDoneList,
} from '@/api/trials'
import { getTrialList_Export } from '@/api/export'
import store from '@/store'
@ -721,7 +743,7 @@ const searchDataDefault = () => {
Asc: false,
SortField: '',
CriterionType: null,
PM_EMail: null
PM_EMail: null,
}
}
export default {
@ -731,7 +753,7 @@ export default {
BaseContainer,
TrialForm,
TrialStatusForm,
DoneList
DoneList,
},
dicts: ['ReadingStandard', 'ReviewType', 'ReadingType'],
data() {
@ -756,7 +778,7 @@ export default {
{ value: 'I' },
{ value: 'II' },
{ value: 'III' },
{ value: 'IV' }
{ value: 'IV' },
],
expeditedOption: this.$d.TrialExpeditedState,
beginPickerOption: {
@ -766,7 +788,7 @@ export default {
} else {
return time.getTime() > Date.now()
}
}
},
},
endpickerOption: {
disabledDate: (time) => {
@ -778,20 +800,20 @@ export default {
} else {
return time.getTime() > Date.now()
}
}
}
},
},
}
},
computed: {
...mapGetters(['sponsorList', 'croList'])
...mapGetters(['sponsorList', 'croList']),
},
created() {
this.initPage()
},
mounted(){
this.$EventBus.$on("reload", (data) => {
mounted() {
this.$EventBus.$on('reload', (data) => {
window.location.reload()
});
})
},
methods: {
initPage() {
@ -864,7 +886,7 @@ export default {
this.$confirm(res.ErrorMessage, {
type: 'warning',
showCancelButton: false,
callback: (action) => {}
callback: (action) => {},
})
}
})
@ -883,7 +905,7 @@ export default {
handleAbandon(row) {
this.$confirm(this.$t('trials:trials-list:message:abolition'), {
type: 'warning',
distinguishCancelAndClose: true
distinguishCancelAndClose: true,
})
.then(() => {
this.currentRow = { ...row }
@ -909,19 +931,37 @@ export default {
})
},
rowClick(row, col) {
if ((row.TrialStatusStr === 'Initializing' && !this.hasPermi(['role:pm'])) || row.IsDeleted) {
if (
(row.TrialStatusStr === 'Initializing' &&
!this.hasPermi(['role:pm'])) ||
row.IsDeleted
) {
return
} else if ((row.TrialStatusStr === 'Completed' || row.TrialStatusStr === 'Stopped') && !(this.hasPermi(['role:qa']) || this.hasPermi(['role:ea']) || this.hasPermi(['role:pm']))) {
} else if (
(row.TrialStatusStr === 'Completed' ||
row.TrialStatusStr === 'Stopped') &&
!(
this.hasPermi(['role:qa']) ||
this.hasPermi(['role:ea']) ||
this.hasPermi(['role:pm'])
)
) {
return
}
this.$router.push({
path: `/trials/trials-panel?trialId=${row.Id}&trialCode=${row.TrialCode}&researchProgramNo=${row.ResearchProgramNo}`
path: `/trials/trials-panel?trialId=${row.Id}&trialCode=${row.TrialCode}&researchProgramNo=${row.ResearchProgramNo}`,
})
},
// panel
handleDetail(row) {
this.$router.push({
path: `/trials/trials-panel?trialId=${row.Id}&trialCode=${row.TrialCode}&researchProgramNo=${row.ResearchProgramNo}`
path: `/trials/trials-panel?trialId=${row.Id}&trialCode=${row.TrialCode}&researchProgramNo=${row.ResearchProgramNo}`,
})
},
//
toTrialDocument(row) {
this.$router.push({
path: `/trials/trials-panel/trial-summary/trial-document?trialId=${row.Id}&trialCode=${row.TrialCode}&researchProgramNo=${row.ResearchProgramNo}`,
})
},
//
@ -951,7 +991,7 @@ export default {
handleExportTrial() {
this.exportLoading = true
const data = {
...this.searchData
...this.searchData,
}
data.TrialIdList = this.selectArr.map((item) => item.Id)
return getTrialList_Export(data)
@ -961,7 +1001,7 @@ export default {
.catch(() => {
this.exportLoading = false
})
}
}
},
},
}
</script>

View File

@ -9,14 +9,14 @@
<!--style="margin:0"-->
<h4>
<!-- 提示 -->
{{ $t("trials:readingPeriod:cd:title:tips") }}
{{ $t('trials:readingPeriod:cd:title:tips') }}
</h4>
<h5>
<!-- 当前访视/阅片期需要采集临床数据名称请采集临床数据后按照模板上传并签名确认 -->
{{ tips1 }}
</h5>
<h5>
{{ $t("trials:readingPeriod:cd:title:tips2") }}
{{ $t('trials:readingPeriod:cd:title:tips2') }}
</h5>
</div>
<div class="top">
@ -28,7 +28,7 @@
:disabled="list.length === 0"
@click="handlePreview()"
>
{{ $t("trials:readingPeriod:cd:title:preview") }}
{{ $t('trials:readingPeriod:cd:title:preview') }}
</el-button>
<!-- 添加 -->
<el-button
@ -43,24 +43,22 @@
size="small"
@click="handleAdd"
>
{{ $t("common:button:add") }}
{{ $t('common:button:add') }}
</el-button>
<!--下载模板-->
<el-button
v-if="
otherInfo.IsCanAddClinicalData &&
hasPermi(['trials:trials-panel:subject:readingPeriod:edit']) &&
clinicalType === '2' &&
list.length > 0 &&
list[0].ReadingClinicalDataState !== 3 &&
!list[0].IsCRCApplicationRevoke &&
clinicalType === '1' &&
type !== 'consistencyAnalysis'
"
type="primary"
icon="el-icon-plus"
icon="el-icon-download"
size="small"
:disabled="list.length === 0"
@click="handleVerification(list[0], 'confirm')"
@click="downLoadTemplate"
>
{{ $t("trials:readingPeriod:cd:title:cdCheck") }}
{{ $t('trials:readingPeriod:cd:title:downLoadTemplate') }}
</el-button>
<el-button
v-if="
@ -102,7 +100,7 @@
min-width="100"
>
<template slot-scope="scope">
{{ $fd("ClinicalDataUploadRole", scope.row.UploadRole) }}
{{ $fd('ClinicalDataUploadRole', scope.row.UploadRole) }}
</template>
</el-table-column>
<!-- 数据级别 -->
@ -112,7 +110,7 @@
min-width="100"
>
<template slot-scope="scope">
{{ $fd("ClinicalLevel", scope.row.ClinicalDataLevel) }}
{{ $fd('ClinicalLevel', scope.row.ClinicalDataLevel) }}
</template>
</el-table-column>
<!-- 传输方式 -->
@ -122,7 +120,7 @@
min-width="120"
>
<template slot-scope="scope">
{{ $fd("ClinicalUploadType", scope.row.ClinicalUploadType) }}
{{ $fd('ClinicalUploadType', scope.row.ClinicalUploadType) }}
</template>
</el-table-column>
<!-- 文件数量 -->
@ -133,7 +131,7 @@
>
<template slot-scope="scope">
{{
scope.row.ClinicalUploadType === 0 ? "NA" : scope.row.FileCount
scope.row.ClinicalUploadType === 0 ? 'NA' : scope.row.FileCount
}}
</template>
</el-table-column>
@ -149,7 +147,7 @@
type="info"
>{{
$fd(
"ReadingClinicalDataState",
'ReadingClinicalDataState',
scope.row.ReadingClinicalDataState
)
}}</el-tag
@ -159,7 +157,7 @@
type="danger"
>{{
$fd(
"ReadingClinicalDataState",
'ReadingClinicalDataState',
scope.row.ReadingClinicalDataState
)
}}</el-tag
@ -169,7 +167,7 @@
type="primary"
>{{
$fd(
"ReadingClinicalDataState",
'ReadingClinicalDataState',
scope.row.ReadingClinicalDataState
)
}}</el-tag
@ -179,7 +177,7 @@
type="warning"
>{{
$fd(
"ReadingClinicalDataState",
'ReadingClinicalDataState',
scope.row.ReadingClinicalDataState
)
}}</el-tag
@ -296,10 +294,10 @@
>
<div slot="title">
<span style="font-size: 18px">{{
$t("common:dialogTitle:sign")
$t('common:dialogTitle:sign')
}}</span>
<span style="font-size: 12px; margin-left: 5px">{{
`(${$t("common:label:sign")}${currentUser})`
`(${$t('common:label:sign')}${currentUser})`
}}</span>
</div>
<SignForm
@ -325,7 +323,7 @@
:disabled="list.length === 0"
@click="handlePreview()"
>
{{ $t("trials:readingPeriod:cd:title:preview") }}
{{ $t('trials:readingPeriod:cd:title:preview') }}
</el-button>
<!-- 添加 -->
<el-button
@ -338,7 +336,7 @@
size="small"
@click="handleAdd"
>
{{ $t("common:button:add") }}
{{ $t('common:button:add') }}
</el-button>
</div>
<div class="main">
@ -361,7 +359,7 @@
show-overflow-tooltip
>
<template slot-scope="scope">
{{ $fd("ClinicalDataUploadRole", scope.row.UploadRole) }}
{{ $fd('ClinicalDataUploadRole', scope.row.UploadRole) }}
</template>
</el-table-column>
<!-- 数据级别 -->
@ -370,7 +368,7 @@
:label="$t('trials:readingPeriod:cd:table:dataLevel')"
>
<template slot-scope="scope">
{{ $fd("ClinicalLevel", scope.row.ClinicalDataLevel) }}
{{ $fd('ClinicalLevel', scope.row.ClinicalDataLevel) }}
</template>
</el-table-column>
<!-- 传输方式 -->
@ -379,7 +377,7 @@
:label="$t('trials:readingPeriod:cd:table:transferType')"
>
<template slot-scope="scope">
{{ $fd("ClinicalUploadType", scope.row.ClinicalUploadType) }}
{{ $fd('ClinicalUploadType', scope.row.ClinicalUploadType) }}
</template>
</el-table-column>
<!-- 文件数量 -->
@ -389,7 +387,7 @@
>
<template slot-scope="scope">
{{
scope.row.ClinicalUploadType === 0 ? "NA" : scope.row.FileCount
scope.row.ClinicalUploadType === 0 ? 'NA' : scope.row.FileCount
}}
</template>
</el-table-column>
@ -405,7 +403,7 @@
type="info"
>{{
$fd(
"ReadingClinicalDataState",
'ReadingClinicalDataState',
scope.row.ReadingClinicalDataState
)
}}</el-tag
@ -415,7 +413,7 @@
type="danger"
>{{
$fd(
"ReadingClinicalDataState",
'ReadingClinicalDataState',
scope.row.ReadingClinicalDataState
)
}}</el-tag
@ -425,7 +423,7 @@
type="primary"
>{{
$fd(
"ReadingClinicalDataState",
'ReadingClinicalDataState',
scope.row.ReadingClinicalDataState
)
}}</el-tag
@ -435,7 +433,7 @@
type="warning"
>{{
$fd(
"ReadingClinicalDataState",
'ReadingClinicalDataState',
scope.row.ReadingClinicalDataState
)
}}</el-tag
@ -550,10 +548,10 @@
>
<div slot="title">
<span style="font-size: 18px">{{
$t("common:dialogTitle:sign")
$t('common:dialogTitle:sign')
}}</span>
<span style="font-size: 12px; margin-left: 5px">{{
`(${$t("common:label:sign")}${currentUser})`
`(${$t('common:label:sign')}${currentUser})`
}}</span>
</div>
<SignForm
@ -574,35 +572,36 @@ import {
getTrialClinicalDataSelect,
getConsistencyAnalysisReadingClinicalDataList,
signConsistencyAnalysisReadingClinicalData,
} from "@/api/trials";
import AddOrEditCD from "./AddOrEditCD";
import Verification from "./Verification";
import SignForm from "@/views/trials/components/newSignForm";
import const_ from "@/const/sign-code";
import { getToken } from "@/utils/auth";
} from '@/api/trials'
import AddOrEditCD from './AddOrEditCD'
import Verification from './Verification'
import SignForm from '@/views/trials/components/newSignForm'
import const_ from '@/const/sign-code'
import { getToken } from '@/utils/auth'
import { downLoadFile } from '@/utils/stream.js'
export default {
name: "ClinicalData",
name: 'ClinicalData',
components: { AddOrEditCD, SignForm, Verification },
props: {
trialReadingCriterionId: {
type: String,
default() {
return "";
return ''
},
},
data: {
type: Object,
default() {
return {};
return {}
},
},
type: {
default: "readingPeriod",
default: 'readingPeriod',
},
},
watch: {
clinicalType() {
this.getList();
this.getList()
},
},
data() {
@ -613,36 +612,63 @@ export default {
list: [],
total: 0,
dialogVisible: false,
addOrUpdateCD: { title: "", visible: false },
verification: { title: "", visible: false },
addOrUpdateCD: { title: '', visible: false },
verification: { title: '', visible: false },
currentData: {},
currentOption: [],
signCode: "",
currentUser: zzSessionStorage.getItem("userName"),
signCode: '',
currentUser: zzSessionStorage.getItem('userName'),
signVisible: false,
otherInfo: {},
spanArr: [],
pos: 0,
tips1: null,
};
clinicalDatas: [],
}
},
mounted() {
if (!(this.data.IsVisit || this.data.IsBaseLine)) {
// this.clinicalType = this.$d.GetClinicalType[0].value.toString();
this.clinicalType = '1';
this.clinicalType = '1'
} else {
this.getList(true);
this.getList(true)
}
window.addEventListener("message", (res) => {
if (res.data.type === "pmConfirmClinical") {
this.getList();
window.addEventListener('message', (res) => {
if (res.data.type === 'pmConfirmClinical') {
this.getList()
}
});
})
},
methods: {
//
async downLoadTemplate() {
try {
let { files, name } = this.formatDownloadFile()
let res = await downLoadFile(files, name, 'zip')
} catch (err) {
console.log(err)
}
},
//
formatDownloadFile() {
let files = [],
name = `${this.$route.query.trialId}_${
this.data.CriterionName
}_template_${new Date().getTime()}.zip`
this.clinicalDatas.forEach((item) => {
if (item.Path) {
let obj = {
name: item.FileName,
url: this.OSSclientConfig.basePath + item.Path,
}
files.push(obj)
}
})
return { files, name }
},
getClinicalDatas() {
return new Promise((resolve, reject) => {
let message = "";
let message = ''
let currentData = Object.assign(
{},
{
@ -652,113 +678,114 @@ export default {
SubjectId: this.data.SubjectId,
IsBaseLine: this.data.IsBaseLine,
}
);
)
var param = {
trialId: currentData.TrialId,
IsVisit: currentData.IsVisit,
ReadingId: currentData.ReadingId,
SubjectId: currentData.SubjectId,
ReadingClinicalDataId: currentData.Id ? currentData.Id : "",
ReadingClinicalDataId: currentData.Id ? currentData.Id : '',
IsBaseLine: currentData.IsBaseLine,
TrialReadingCriterionId: this.trialReadingCriterionId,
};
}
getTrialClinicalDataSelect(param)
.then((res) => {
this.clinicalDatas = res.Result
res.Result.forEach((item, index) => {
if (index < 1) {
message += item.ClinicalDataSetName;
message += item.ClinicalDataSetName
} else {
message = message + "、" + item.ClinicalDataSetName;
message = message + '、' + item.ClinicalDataSetName
}
});
resolve(message);
})
resolve(message)
})
.catch(() => {
reject();
});
});
reject()
})
})
},
objectSpanMethod({ row, column, rowIndex, columnIndex }) {
if (columnIndex === 6 && row.IsNeedMerge) {
const _row = this.spanArr[rowIndex];
const _col = _row > 0 ? 1 : 0;
const _row = this.spanArr[rowIndex]
const _col = _row > 0 ? 1 : 0
return {
rowspan: _row,
colspan: _col,
};
}
}
},
getSpanArr(data) {
for (var i = 0; i < data.length; i++) {
if (i === 0) {
this.spanArr.push(1);
this.pos = 0;
this.spanArr.push(1)
this.pos = 0
} else {
//
if (data[i].IsNeedMerge === data[i - 1].IsNeedMerge) {
this.spanArr[this.pos] += 1;
this.spanArr.push(0);
this.spanArr[this.pos] += 1
this.spanArr.push(0)
} else {
this.spanArr.push(1);
this.pos = i;
this.spanArr.push(1)
this.pos = i
}
}
}
},
getList(is) {
this.loading = true;
if (this.type === "consistencyAnalysis") {
this.loading = true
if (this.type === 'consistencyAnalysis') {
let data = {
SubjectId: this.data.SubjectId,
VisitTaskId: this.data.Id,
TrialId: this.$route.query.trialId,
};
}
return getConsistencyAnalysisReadingClinicalDataList(data)
.then((res) => {
this.list = res.Result;
this.otherInfo = res.OtherInfo;
this.loading = false;
this.list = res.Result
this.otherInfo = res.OtherInfo
this.loading = false
})
.catch(() => {
this.loading = false;
});
this.loading = false
})
}
this.searchData.ReadingId = this.data.Id;
this.searchData.SubjectId = this.data.SubjectId;
this.searchData.IsVisit = this.data.IsVisit;
this.searchData.TrialId = this.data.TrialId;
this.searchData.IsBaseLine = this.data.IsBaseLine;
this.searchData.TrialReadingCriterionId = this.trialReadingCriterionId;
this.searchData.ReadingId = this.data.Id
this.searchData.SubjectId = this.data.SubjectId
this.searchData.IsVisit = this.data.IsVisit
this.searchData.TrialId = this.data.TrialId
this.searchData.IsBaseLine = this.data.IsBaseLine
this.searchData.TrialReadingCriterionId = this.trialReadingCriterionId
if (!is) {
this.searchData.GetClinicalType = this.clinicalType;
this.searchData.GetClinicalType = this.clinicalType
}
getReadingClinicalDataList(this.searchData)
.then(async (res) => {
this.list = res.Result;
let message = "";
this.list = res.Result
let message = ''
this.list.forEach((item, index) => {
if (index < 1) {
message += item.ClinicalDataSetName;
message += item.ClinicalDataSetName
} else {
message = message + "、" + item.ClinicalDataSetName;
message = message + '、' + item.ClinicalDataSetName
}
});
if (message === "" || !message) {
message = await this.getClinicalDatas();
})
if (message === '' || !message) {
message = await this.getClinicalDatas()
}
this.tips1 = this.$t("trials:readingPeriod:cd:title:tips1").replace(
"临床数据名称",
this.tips1 = this.$t('trials:readingPeriod:cd:title:tips1').replace(
'临床数据名称',
message
);
this.tips1 = this.tips1.replace("xxx", message);
this.pos = 0;
this.getSpanArr(this.list);
this.otherInfo = res.OtherInfo;
this.loading = false;
)
this.tips1 = this.tips1.replace('xxx', message)
this.pos = 0
this.getSpanArr(this.list)
this.otherInfo = res.OtherInfo
this.loading = false
})
.catch(() => {
this.loading = false;
});
this.loading = false
})
},
handleAdd() {
this.currentData = Object.assign(
@ -770,136 +797,136 @@ export default {
SubjectId: this.data.SubjectId,
IsBaseLine: this.data.IsBaseLine,
}
);
this.addOrUpdateCD.title = this.$t("common:button:new");
this.addOrUpdateCD.visible = true;
)
this.addOrUpdateCD.title = this.$t('common:button:new')
this.addOrUpdateCD.visible = true
},
handleEdit(row) {
this.currentData = { ...row };
this.currentData.TrialId = this.data.TrialId;
this.currentData.SubjectId = this.data.SubjectId;
if (this.type === "readingPeriod") {
this.currentData.ReadingId = this.data.Id;
this.currentData = { ...row }
this.currentData.TrialId = this.data.TrialId
this.currentData.SubjectId = this.data.SubjectId
if (this.type === 'readingPeriod') {
this.currentData.ReadingId = this.data.Id
}
this.currentData.IsVisit = this.data.IsVisit;
this.currentData.IsBaseLine = this.data.IsBaseLine;
this.addOrUpdateCD.title = this.$t("common:button:edit");
this.currentData.IsVisit = this.data.IsVisit
this.currentData.IsBaseLine = this.data.IsBaseLine
this.addOrUpdateCD.title = this.$t('common:button:edit')
this.currentOption = [
{
ClinicalDataSetName:
this.$i18n.locale === "zh"
this.$i18n.locale === 'zh'
? row.ClinicalDataSetName
: row.ClinicalDataSetEnName,
Id: row.ClinicalDataTrialSetId,
},
];
this.addOrUpdateCD.visible = true;
]
this.addOrUpdateCD.visible = true
},
handleVerification(row, type) {
if (type === "unconfirm") {
var token = getToken();
if (type === 'unconfirm') {
var token = getToken()
let routeData = this.$router.resolve({
path: `/clinicalData?type=unconfirm&ClinicalDataTrialSetId=${
row.ClinicalDataTrialSetId
}&subjectId=${this.data.SubjectId}&trialId=${
this.data.TrialId
}&readingId=${this.data.Id}&readingClinicalDataId=${
row.readingClinicalDataId || ""
row.readingClinicalDataId || ''
}&readModuleId=${row.ReadModuleId}&getClinicalType=${
this.clinicalType
}&isConfirm=1&IsOnlyGetCRCReadModule=1&TokenKey=${token}`,
});
if (this.type === "consistencyAnalysis") {
})
if (this.type === 'consistencyAnalysis') {
routeData = this.$router.resolve({
path: `/clinicalData?type=unconfirm&ClinicalDataTrialSetId=${
row.ClinicalDataTrialSetId
}&subjectId=${this.data.SubjectId}&trialId=${
this.data.TrialId
}&visitTaskId=${this.data.Id}&readingClinicalDataId=${
row.readingClinicalDataId || ""
row.readingClinicalDataId || ''
}&readModuleId=${row.ReadModuleId}&getClinicalType=${
this.clinicalType
}&isConfirm=1&IsOnlyGetCRCReadModule=1&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
});
})
}
window.open(routeData.href, "_blank");
return;
window.open(routeData.href, '_blank')
return
}
if (row.IsNeedMerge) {
var token = getToken();
var token = getToken()
let routeData = this.$router.resolve({
path: `/clinicalData?ClinicalDataTrialSetId=${
row.ClinicalDataTrialSetId
}&subjectId=${this.data.SubjectId}&trialId=${
this.data.TrialId
}&readingId=${this.data.Id}&readingClinicalDataId=${
row.readingClinicalDataId || ""
row.readingClinicalDataId || ''
}&readModuleId=${row.ReadModuleId}&getClinicalType=${
this.clinicalType
}&isConfirm=1&IsOnlyGetCRCReadModule=1&TokenKey=${token}`,
});
if (this.type === "consistencyAnalysis") {
})
if (this.type === 'consistencyAnalysis') {
routeData = this.$router.resolve({
path: `/clinicalData?ClinicalDataTrialSetId=${
row.ClinicalDataTrialSetId
}&subjectId=${this.data.SubjectId}&trialId=${
this.data.TrialId
}&visitTaskId=${this.data.Id}&readingClinicalDataId=${
row.readingClinicalDataId || ""
row.readingClinicalDataId || ''
}&readModuleId=${row.ReadModuleId}&getClinicalType=${
this.clinicalType
}&isConfirm=1&IsOnlyGetCRCReadModule=1&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
});
})
}
window.open(routeData.href, "_blank");
window.open(routeData.href, '_blank')
} else {
this.currentData = { ...row };
this.currentData.TrialId = this.data.TrialId;
this.currentData.SubjectId = this.data.SubjectId;
if (this.type === "readingPeriod") {
this.currentData.ReadingId = this.data.Id;
this.currentData = { ...row }
this.currentData.TrialId = this.data.TrialId
this.currentData.SubjectId = this.data.SubjectId
if (this.type === 'readingPeriod') {
this.currentData.ReadingId = this.data.Id
}
this.currentData.IsVisit = this.data.IsVisit;
this.currentData.IsBaseLine = this.data.IsBaseLine;
this.currentData.IsVisit = this.data.IsVisit
this.currentData.IsBaseLine = this.data.IsBaseLine
this.verification.title = this.$t(
"trials:readingPeriod:cd:title:cdCheck"
); // ''
this.verification.visible = true;
'trials:readingPeriod:cd:title:cdCheck'
) // ''
this.verification.visible = true
}
},
handleDelete(row) {
this.$confirm(this.$t("trials:readingPeriod:cd:message:delete"), {
type: "warning",
this.$confirm(this.$t('trials:readingPeriod:cd:message:delete'), {
type: 'warning',
distinguishCancelAndClose: true,
})
.then(() => {
this.loading = true;
this.loading = true
deleteReadingClinicalData(row.Id)
.then((res) => {
this.loading = false;
this.loading = false
if (res.IsSuccess) {
this.getList();
this.getList()
this.$message.success(
this.$t("common:message:deletedSuccessfully")
);
this.$t('common:message:deletedSuccessfully')
)
}
})
.catch(() => {
this.loading = false;
});
this.loading = false
})
})
.catch(() => {});
.catch(() => {})
},
handleSign(from) {
// this.currentData = { ...row }
this.currentData.IsBlind = from.IsBlind;
this.currentData.IsComplete = from.IsComplete;
const { CDQualityConfirmation } = const_.processSignature;
this.signCode = CDQualityConfirmation;
this.signVisible = true;
this.currentData.IsBlind = from.IsBlind
this.currentData.IsComplete = from.IsComplete
const { CDQualityConfirmation } = const_.processSignature
this.signCode = CDQualityConfirmation
this.signVisible = true
},
signConfirm(signInfo) {
this.loading = true;
this.loading = true
let params = {
data: {
readingClinicalDataId: this.currentData.Id,
@ -908,8 +935,8 @@ export default {
TrialReadingCriterionId: this.trialReadingCriterionId,
},
signInfo: signInfo,
};
if (this.type === "consistencyAnalysis") {
}
if (this.type === 'consistencyAnalysis') {
params = {
data: {
consistentClinicalDataId: this.currentData.Id,
@ -917,94 +944,90 @@ export default {
IsComplete: this.currentData.IsComplete,
},
signInfo: signInfo,
};
}
signConsistencyAnalysisReadingClinicalData(params)
.then((res) => {
this.loading = false;
this.loading = false
if (res.IsSuccess) {
this.$message.success(
this.$t("common:message:savedSuccessfully")
);
this.$refs["signForm"].btnLoading = false;
this.$message.success(this.$t('common:message:savedSuccessfully'))
this.$refs['signForm'].btnLoading = false
this.signVisible = false;
this.signVisible = false
this.getList();
this.$emit("getList");
this.getList()
this.$emit('getList')
this.$nextTick(() => {
this.verification.visible = false;
});
this.verification.visible = false
})
}
})
.catch((_) => {
this.loading = false;
this.$refs["signForm"].btnLoading = false;
});
this.loading = false
this.$refs['signForm'].btnLoading = false
})
} else {
ReadClinicalDataSign(params)
.then((res) => {
this.loading = false;
this.loading = false
if (res.IsSuccess) {
this.$message.success(
this.$t("common:message:savedSuccessfully")
);
this.$refs["signForm"].btnLoading = false;
this.$message.success(this.$t('common:message:savedSuccessfully'))
this.$refs['signForm'].btnLoading = false
this.signVisible = false;
this.signVisible = false
this.getList();
this.$emit("getList");
this.getList()
this.$emit('getList')
this.$nextTick(() => {
this.verification.visible = false;
});
this.verification.visible = false
})
}
})
.catch((_) => {
this.loading = false;
this.$refs["signForm"].btnLoading = false;
});
this.loading = false
this.$refs['signForm'].btnLoading = false
})
}
},
//
closeSignDialog(isSign, signInfo) {
if (isSign) {
this.signConfirm(signInfo);
this.signConfirm(signInfo)
} else {
this.signVisible = false;
this.loading = false;
this.signVisible = false
this.loading = false
}
},
handlePreview(readingClinicalDataId, row) {
if (row && row.IsNeedMerge) {
var token = getToken();
var token = getToken()
let routeData = this.$router.resolve({
path: `/clinicalData?ClinicalDataTrialSetId=${
row.ClinicalDataTrialSetId
}&subjectId=${this.data.SubjectId}&trialId=${
this.data.TrialId
}&readingId=${this.data.Id}&readingClinicalDataId=${
row.readingClinicalDataId || ""
row.readingClinicalDataId || ''
}&getClinicalType=${this.clinicalType}&readModuleId=${
row.ReadModuleId
}&IsOnlyGetCRCReadModule=1&TokenKey=${token}`,
});
if (this.type === "consistencyAnalysis") {
})
if (this.type === 'consistencyAnalysis') {
routeData = this.$router.resolve({
path: `/clinicalData?ClinicalDataTrialSetId=${
row.ClinicalDataTrialSetId
}&subjectId=${this.data.SubjectId}&trialId=${
this.data.TrialId
}&visitTaskId=${this.data.Id}&readingClinicalDataId=${
row.readingClinicalDataId || ""
row.readingClinicalDataId || ''
}&getClinicalType=${this.clinicalType}&readModuleId=${
row.ReadModuleId
}&IsOnlyGetCRCReadModule=1&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
});
})
}
window.open(routeData.href, "_blank");
window.open(routeData.href, '_blank')
} else {
var token = getToken();
var routeData;
var token = getToken()
var routeData
if (row) {
routeData = this.$router.resolve({
path: `/clinicalData?ClinicalDataTrialSetId=${
@ -1012,47 +1035,47 @@ export default {
}&subjectId=${this.data.SubjectId}&trialId=${
this.data.TrialId
}&readingId=${this.data.Id}&readingClinicalDataId=${
readingClinicalDataId || ""
readingClinicalDataId || ''
}&getClinicalType=${this.clinicalType}&TokenKey=${token}`,
});
if (this.type === "consistencyAnalysis") {
})
if (this.type === 'consistencyAnalysis') {
routeData = this.$router.resolve({
path: `/clinicalData?ClinicalDataTrialSetId=${
row.ClinicalDataTrialSetId
}&subjectId=${this.data.SubjectId}&trialId=${
this.data.TrialId
}&visitTaskId=${this.data.Id}&readingClinicalDataId=${
readingClinicalDataId || ""
readingClinicalDataId || ''
}&getClinicalType=${
this.clinicalType
}&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
});
})
}
} else {
routeData = this.$router.resolve({
path: `/clinicalData?subjectId=${this.data.SubjectId}&trialId=${
this.data.TrialId
}&readingId=${this.data.Id}&readingClinicalDataId=${
readingClinicalDataId || ""
readingClinicalDataId || ''
}&getClinicalType=${this.clinicalType}&TokenKey=${token}`,
});
if (this.type === "consistencyAnalysis") {
})
if (this.type === 'consistencyAnalysis') {
routeData = this.$router.resolve({
path: `/clinicalData?subjectId=${this.data.SubjectId}&trialId=${
this.data.TrialId
}&visitTaskId=${this.data.Id}&readingClinicalDataId=${
readingClinicalDataId || ""
readingClinicalDataId || ''
}&getClinicalType=${
this.clinicalType
}&TokenKey=${token}&&isGetAllConsistencyAnalysis=${0}`,
});
})
}
}
window.open(routeData.href, "_blank");
window.open(routeData.href, '_blank')
}
},
},
};
}
</script>
<style lang="scss" scoped>
.clinical-data_content {

View File

@ -3,7 +3,7 @@
<div class="title">
{{ TITLE }}
</div>
<el-form :inline="true" size="mini" class="base-search-form">
<el-form :inline="true" class="base-search-form topForm">
<el-form-item
:label="$t('trials:trialDocument:fileRecord:form:isConfirmRecord')"
v-if="isManage && hasEdit && !viewStatus"
@ -39,7 +39,6 @@
<el-form-item v-if="isManage && hasEdit && !viewStatus">
<el-button
type="primary"
size="mini"
@click="rowBtnStatus = 'save'"
v-if="rowBtnStatus === 'edit'"
>
@ -47,7 +46,6 @@
</el-button>
<el-button
type="primary"
size="mini"
:loading="rowBtnLoading"
@click="saveRowData"
v-if="rowBtnStatus === 'save'"
@ -56,9 +54,10 @@
</el-button>
</el-form-item>
</el-form>
<div class="line"></div>
<!-- 搜索框 -->
<div class="search" style="position: relative">
<el-form :inline="true" size="mini" class="base-search-form">
<el-form :inline="true" class="base-search-form">
<el-form-item
:label="$t('trials:trialDocument:fileRecord:search:name')"
>
@ -104,7 +103,6 @@
<el-button
type="primary"
:disabled="selectTable.length <= 0"
size="mini"
v-if="hasAccredit && isManage && !viewStatus"
@click.stop="auth"
>
@ -112,7 +110,6 @@
</el-button>
<el-button
type="primary"
size="mini"
v-if="hasEdit && isManage && !viewStatus"
@click.stop="openFile(false)"
>
@ -120,7 +117,6 @@
</el-button>
<el-button
type="primary"
size="mini"
v-if="hasEdit && isManage && !viewStatus"
@click.stop="openFile(true)"
>
@ -129,7 +125,6 @@
<el-button
type="primary"
icon="el-icon-bottom"
size="mini"
:disabled="selectTable.length <= 0"
v-if="hasDownLoad && isManage && !viewStatus"
@click.stop="downLoad"
@ -138,7 +133,6 @@
</el-button>
<el-button
type="primary"
size="mini"
v-if="hasDel && isManage && !viewStatus"
:disabled="selectTable.length <= 0"
@click.stop="delList"
@ -314,7 +308,6 @@
<el-button
icon="el-icon-view"
:title="$t('common:button:view')"
size="mini"
circle
:disabled="
!scope.row.TrialFileRecord || !scope.row.TrialFileRecord.FilePath
@ -325,7 +318,6 @@
v-if="hasDownLoad && isManage && !viewStatus"
icon="el-icon-download"
:title="$t('trials:trialDocument:fileRecord:button:download')"
size="mini"
circle
@click.stop="downLoad(false, scope.row.TrialFileRecord, 'file')"
/>
@ -333,7 +325,6 @@
v-if="hasDel && isManage && !viewStatus"
icon="el-icon-delete"
:title="$t('trials:trialDocument:fileRecord:button:delete')"
size="mini"
circle
@click.stop="handleDel(scope.row)"
/>

View File

@ -5,14 +5,14 @@
<i class="el-icon-folder-opened"></i>
<span>{{ $fd('ArchiveType', item.ArchiveTypeEnum) }}</span>
<i
class="el-icon-circle-plus menuAdd"
class="el-icon-circle-plus menuAdd"
:title="$t('trials:trialDocument:menu:add')"
@click.stop="addMenu(item.ArchiveTypeEnum)"
v-if="isManage && hasAdd && !viewStatus && item.ArchiveTypeEnum !== 5"
></i>
</div>
<div
:class="{ menu: true, selected: Id === data.Id }"
:class="{ menu: true, selected: menuId === data.Id }"
v-for="data in item.TrialFileTypeList"
:key="data.SysFileTypeId"
@click.stop="handleSelect(data, item.ArchiveTypeEnum)"
@ -126,7 +126,7 @@ export default {
type: Boolean,
default: true,
},
Id: {
menuId: {
type: String,
default: '',
},
@ -218,12 +218,49 @@ export default {
this.loading = false
if (res.IsSuccess) {
this.menu = res.Result.TrialFileTypeDataList
this.$nextTick(() => {
this.defaultSelect()
})
}
} catch (err) {
this.loading = false
console.log(err)
}
},
defaultSelect() {
if (!this.menu || this.menu.length <= 0) return false
if (this.menuId) {
let Id = this.menuId
let f = this.menu.some((item) => {
let flag = false
if (item.TrialFileTypeList && item.TrialFileTypeList.length > 0) {
flag = item.TrialFileTypeList.some((data) => {
if (data.Id === Id) {
this.$emit('update:menuId', null)
this.$nextTick(() => {
this.handleSelect(data, item.ArchiveTypeEnum)
})
}
return data.Id === Id
})
}
return flag
})
if (!f) {
this.$emit('update:menuId', null)
this.$nextTick(() => {
this.defaultSelect()
})
}
} else {
this.menu.some((item) => {
if (item.TrialFileTypeList && item.TrialFileTypeList.length > 0) {
this.handleSelect(item.TrialFileTypeList[0], item.ArchiveTypeEnum)
}
return item.TrialFileTypeList && item.TrialFileTypeList.length > 0
})
}
},
//
async changeIsEnble(val, item) {
try {
@ -242,7 +279,7 @@ export default {
},
//
handleSelect(data, ArchiveTypeEnum) {
this.$emit('update:Id', data.Id)
this.$emit('update:menuId', data.Id)
this.$emit('update:SubIdentificationEnum', data.SubIdentificationEnum)
this.$emit('update:ArchiveTypeEnum', ArchiveTypeEnum)
this.$emit('update:rowData', data)

View File

@ -3,7 +3,7 @@
<div class="title">
{{ TITLE }}
</div>
<el-form :inline="true" size="mini" class="base-search-form">
<el-form :inline="true" class="base-search-form topForm">
<el-form-item
:label="$t('trials:trialDocument:reportDoc:form:firstFinalDate')"
>
@ -52,7 +52,6 @@
<el-form-item v-if="isManage && hasEdit && !viewStatus">
<el-button
type="primary"
size="mini"
@click="rowBtnStatus = 'save'"
v-if="rowBtnStatus === 'edit'"
>
@ -60,7 +59,6 @@
</el-button>
<el-button
type="primary"
size="mini"
:loading="rowBtnLoading"
@click="saveRowData"
v-if="rowBtnStatus === 'save'"
@ -69,9 +67,10 @@
</el-button>
</el-form-item>
</el-form>
<div class="line"></div>
<!-- 搜索框 -->
<div class="search" style="position: relative">
<el-form :inline="true" size="mini" class="base-search-form">
<el-form :inline="true" class="base-search-form">
<el-form-item :label="$t('trials:trialDocument:reportDoc:search:name')">
<el-input v-model="searchData.Name" style="width: 100px" clearable />
</el-form-item>
@ -120,7 +119,6 @@
<el-button
type="primary"
:disabled="selectTable.length <= 0"
size="mini"
v-if="hasAccredit && isManage && !viewStatus"
@click.stop="auth"
>
@ -128,7 +126,6 @@
</el-button>
<el-button
type="primary"
size="mini"
v-if="hasAdd && isManage && !viewStatus"
@click.stop="handleAdd"
>
@ -137,7 +134,6 @@
<el-button
type="primary"
icon="el-icon-bottom"
size="mini"
:disabled="selectTable.length <= 0"
v-if="hasDownLoad && isManage && !viewStatus"
@click.stop="downLoad"
@ -349,6 +345,7 @@
:label="$t('trials:trialDocument:reportDoc:table:isAuthorizedView')"
show-overflow-tooltip
sortable="custom"
v-if="isManage && !viewStatus"
>
<template slot-scope="scope">
<el-switch
@ -381,7 +378,6 @@
<el-button
icon="el-icon-view"
:title="$t('common:button:view')"
size="mini"
circle
:disabled="
!scope.row.PDFFileRecord || !scope.row.PDFFileRecord.FilePath
@ -392,7 +388,6 @@
v-if="hasEdit && isManage && !viewStatus"
icon="el-icon-edit-outline"
:title="$t('common:button:edit')"
size="mini"
circle
@click.stop="handleEdit(scope.row)"
/>
@ -400,7 +395,6 @@
v-if="hasDownLoad && isManage && !viewStatus"
icon="el-icon-download"
:title="$t('trials:trialDocument:reportDoc:button:download')"
size="mini"
circle
@click.stop="downLoad(false, scope.row)"
/>
@ -408,7 +402,6 @@
v-if="hasDel && isManage && !viewStatus"
icon="el-icon-delete"
:title="$t('trials:trialDocument:reportDoc:button:delete')"
size="mini"
circle
@click.stop="handleDel(scope.row)"
/>

View File

@ -3,7 +3,7 @@
<div class="title">
{{ TITLE }}
</div>
<el-form :inline="true" size="mini" class="base-search-form">
<el-form :inline="true" class="base-search-form topForm">
<el-form-item
:label="$t('trials:trialDocument:temp:form:isEnable')"
v-if="isManage && hasEdit && !viewStatus"
@ -23,7 +23,6 @@
<el-form-item v-if="isManage && hasEdit && !viewStatus">
<el-button
type="primary"
size="mini"
@click="rowBtnStatus = 'save'"
v-if="rowBtnStatus === 'edit'"
>
@ -31,7 +30,6 @@
</el-button>
<el-button
type="primary"
size="mini"
:loading="rowBtnLoading"
@click="saveRowData"
v-if="rowBtnStatus === 'save'"
@ -40,9 +38,10 @@
</el-button>
</el-form-item>
</el-form>
<div class="line"></div>
<!-- 搜索框 -->
<div class="search" style="position: relative">
<el-form :inline="true" size="mini" class="base-search-form">
<el-form :inline="true" class="base-search-form">
<el-form-item :label="$t('trials:trialDocument:temp:search:name')">
<el-input
v-model="searchData.FileName"
@ -86,7 +85,6 @@
<el-button
type="primary"
:disabled="selectTable.length <= 0"
size="mini"
v-if="hasAccredit && isManage && !viewStatus"
@click.stop="auth"
>
@ -94,7 +92,6 @@
</el-button>
<el-button
type="primary"
size="mini"
v-if="hasEdit && isManage && !viewStatus"
@click.stop="openFile(false)"
>
@ -102,7 +99,6 @@
</el-button>
<el-button
type="primary"
size="mini"
v-if="hasEdit && isManage && !viewStatus"
@click.stop="openFile(true)"
>
@ -111,7 +107,6 @@
<el-button
type="primary"
icon="el-icon-bottom"
size="mini"
:disabled="selectTable.length <= 0"
v-if="hasDownLoad && isManage && !viewStatus"
@click.stop="downLoad"
@ -120,7 +115,6 @@
</el-button>
<el-button
type="primary"
size="mini"
v-if="hasDel && isManage && !viewStatus"
:disabled="selectTable.length <= 0"
@click.stop="delList"
@ -247,23 +241,38 @@
/>
<el-table-column :label="$t('common:action:action')" width="200">
<template slot-scope="scope">
<el-button
icon="el-icon-view"
:title="$t('common:button:view')"
size="mini"
circle
:disabled="
!scope.row.TrialFileRecord ||
!scope.row.TrialFileRecord.FilePath ||
!~scope.row.TrialFileRecord.FileFormat.indexOf('pdf')
"
@click.stop="preview(scope.row.TrialFileRecord)"
/>
<viewer
:ref="scope.row.TrialFileRecord.FilePath"
style="margin: 0 10px;display: inline-block;"
:images="[
`${OSSclientConfig.basePath}${scope.row.TrialFileRecord.FilePath}`,
]"
>
<el-button
icon="el-icon-view"
:title="$t('common:button:view')"
circle
:disabled="
!scope.row.TrialFileRecord ||
!scope.row.TrialFileRecord.FilePath ||
(!~scope.row.TrialFileRecord.FileFormat.indexOf('pdf') &&
!~scope.row.TrialFileRecord.FileFormat.indexOf('jpg') &&
!~scope.row.TrialFileRecord.FileFormat.indexOf('jpeg') &&
!~scope.row.TrialFileRecord.FileFormat.indexOf('png'))
"
@click.stop="preview(scope.row.TrialFileRecord)"
/>
<img
v-show="false"
crossorigin="anonymous"
:src="`${OSSclientConfig.basePath}${scope.row.TrialFileRecord.FilePath}`"
alt="Image"
/>
</viewer>
<el-button
v-if="hasDownLoad && isManage && !viewStatus"
icon="el-icon-download"
:title="$t('trials:trialDocument:temp:button:download')"
size="mini"
circle
@click.stop="downLoad(false, scope.row.TrialFileRecord, 'file')"
/>
@ -271,7 +280,6 @@
v-if="hasDel && isManage && !viewStatus"
icon="el-icon-delete"
:title="$t('trials:trialDocument:temp:button:delete')"
size="mini"
circle
@click.stop="handleDel(scope.row)"
/>
@ -661,11 +669,15 @@ export default {
//
preview(row) {
if (!row.FilePath) return false
this.$preview({
path: row.FilePath || row.fullPath,
type: 'pdf',
title: row.FileName,
})
if (!!~row.FileFormat.indexOf('pdf')) {
return this.$preview({
path: row.FilePath || row.fullPath,
type: 'pdf',
title: row.FileName,
})
}
this.$refs[row.FilePath].$viewer.show()
},
close() {
this.config.visible = false
@ -786,4 +798,9 @@ export default {
}
}
}
.topForm {
.el-form-item {
margin-right: 30px;
}
}
</style>

View File

@ -3,7 +3,7 @@
<div class="title">
{{ TITLE }}
</div>
<el-form :inline="true" size="mini" class="base-search-form">
<el-form :inline="true" class="base-search-form topForm">
<el-form-item
:label="$t('trials:trialDocument:trainRecord:form:isConfirmRecord')"
v-if="isManage && hasEdit && !viewStatus"
@ -39,7 +39,6 @@
<el-form-item v-if="isManage && hasEdit && !viewStatus">
<el-button
type="primary"
size="mini"
@click="rowBtnStatus = 'save'"
v-if="rowBtnStatus === 'edit'"
>
@ -47,7 +46,6 @@
</el-button>
<el-button
type="primary"
size="mini"
:loading="rowBtnLoading"
@click="saveRowData"
v-if="rowBtnStatus === 'save'"
@ -56,9 +54,10 @@
</el-button>
</el-form-item>
</el-form>
<div class="line"></div>
<!-- 搜索框 -->
<div class="search" style="position: relative">
<el-form :inline="true" size="mini" class="base-search-form">
<el-form :inline="true" class="base-search-form">
<!--培训日期-->
<el-form-item
:label="$t('trials:trialDocument:trainRecord:search:TrianingDate')"
@ -139,7 +138,6 @@
<el-button
type="primary"
:disabled="selectTable.length <= 0"
size="mini"
v-if="hasAccredit && isManage && !viewStatus"
@click.stop="auth"
>
@ -147,7 +145,6 @@
</el-button>
<el-button
type="primary"
size="mini"
v-if="hasEdit && isManage && !viewStatus"
@click.stop="openFile(false)"
>
@ -155,7 +152,6 @@
</el-button>
<el-button
type="primary"
size="mini"
v-if="hasEdit && isManage && !viewStatus"
@click.stop="openFile(true)"
>
@ -163,7 +159,6 @@
</el-button>
<el-button
type="primary"
size="mini"
v-if="hasAdd && isManage && !viewStatus"
@click.stop="handleAdd"
>
@ -172,7 +167,6 @@
<el-button
type="primary"
icon="el-icon-bottom"
size="mini"
:disabled="selectTable.length <= 0"
v-if="hasDownLoad && isManage && !viewStatus"
@click.stop="downLoad"
@ -366,7 +360,6 @@
<el-button
icon="el-icon-view"
:title="$t('common:button:view')"
size="mini"
circle
:disabled="
!scope.row.TrialFileRecord || !scope.row.TrialFileRecord.FilePath
@ -377,7 +370,6 @@
v-if="hasEdit && isManage && !viewStatus"
icon="el-icon-edit-outline"
:title="$t('common:button:edit')"
size="mini"
circle
@click.stop="handleEdit(scope.row)"
/>
@ -385,7 +377,6 @@
v-if="hasDownLoad && isManage && !viewStatus"
icon="el-icon-download"
:title="$t('trials:trialDocument:trainRecord:button:download')"
size="mini"
circle
@click.stop="downLoad(false, scope.row.TrialFileRecord, 'file')"
/>
@ -393,7 +384,6 @@
v-if="hasDel && isManage && !viewStatus"
icon="el-icon-delete"
:title="$t('trials:trialDocument:trainRecord:button:delete')"
size="mini"
circle
@click.stop="handleDel(scope.row)"
/>

View File

@ -26,7 +26,7 @@
<Menu
ref="Menu"
:viewStatus="viewStatus"
:Id.sync="Id"
:menuId.sync="Id"
:SubIdentificationEnum.sync="SubIdentificationEnum"
:ArchiveTypeEnum.sync="ArchiveTypeEnum"
:rowData.sync="rowData"
@ -82,7 +82,7 @@ export default {
components: { BaseContainer, Menu, reportDoc, fileRecord, trainRecord, temp },
data() {
return {
viewStatus: false,
viewStatus: true,
Id: null,
SubIdentificationEnum: null,
ArchiveTypeEnum: null,
@ -103,7 +103,7 @@ export default {
},
methods: {
handleChange() {
this.Id = null
// this.Id = null
this.SubIdentificationEnum = null
this.ArchiveTypeEnum = null
this.rowData = {}
@ -157,4 +157,16 @@ export default {
padding: 10px;
}
}
::v-deep .topForm {
.el-form-item {
margin-right: 30px;
margin-bottom: 22px;
}
}
::v-deep .line {
width: 100%;
height: 1px;
margin: 0 0 22px 0;
border-top: 1px solid #ebeef5;
}
</style>