Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
commit
a3e17bbefe
|
@ -1357,6 +1357,37 @@ export function deleteAttachment(data) {
|
|||
data
|
||||
})
|
||||
}
|
||||
// 项目文档-获取历史记录列表
|
||||
export function getTrialHistoryRecordFileList(data) {
|
||||
return request({
|
||||
url: `/TrialHistoryRecordFile/getTrialHistoryRecordFileList`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 项目文档-新增/修改历史记录
|
||||
export function addOrUpdateTrialHistoryRecordFile(data) {
|
||||
return request({
|
||||
url: `/TrialHistoryRecordFile/addOrUpdateTrialHistoryRecordFile`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 项目文档-批量新增历史记录
|
||||
export function batchAddTrialHistoryRecordFile(data) {
|
||||
return request({
|
||||
url: `/TrialHistoryRecordFile/batchAddTrialHistoryRecordFile`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 项目文档-删除历史记录
|
||||
export function deleteTrialHistoryRecordFile(id) {
|
||||
return request({
|
||||
url: `/TrialHistoryRecordFile/deleteTrialHistoryRecordFile/${id}`,
|
||||
method: 'delete',
|
||||
})
|
||||
}
|
||||
// 邮件管理-批量修改邮件
|
||||
export function batchUpdateEmail(data) {
|
||||
return request({
|
||||
|
|
|
@ -4173,4 +4173,28 @@ export function setTrialShowInspection(data) {
|
|||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 影像汇总-获取列表
|
||||
export function getTrialVisitImageStatList(data) {
|
||||
return request({
|
||||
url: `/DownloadAndUpload/getTrialVisitImageStatList`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 影像汇总-获取统计
|
||||
export function getTrialVisitImageStatInfo(params) {
|
||||
return request({
|
||||
url: `/DownloadAndUpload/getTrialVisitImageStatInfo`,
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
// 影像汇总-影像下载
|
||||
export function getExportSubjectVisitImageList(data) {
|
||||
return request({
|
||||
url: `/DownloadAndUpload/getExportSubjectVisitImageList`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -62,8 +62,9 @@
|
|||
<!-- 用户类型 -->
|
||||
<el-form-item :label="$t('trials:signRecords:table:userType')" v-if="!isDoc">
|
||||
<el-select v-model="searchData.UserTypeId" clearable filterable style="width: 120px">
|
||||
<el-option v-for="item of userTypeOptions" v-show="item.UserTypeEnum !== 26 && item.UserTypeEnum !== 27"
|
||||
:key="item.Id" :label="item.UserTypeShortName" :value="item.Id">
|
||||
<el-option v-for="item of userTypeOptions"
|
||||
v-show="isSystem || (item.UserTypeEnum !== 26 && item.UserTypeEnum !== 27)" :key="item.Id"
|
||||
:label="item.UserTypeShortName" :value="item.Id">
|
||||
<span>{{ item.UserType }}</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
|
|
|
@ -352,7 +352,8 @@
|
|||
</el-transfer> -->
|
||||
<el-table ref="multipleTable" :data="$d.Modality" stripe height="450" row-key="id" class="criterion-table"
|
||||
@selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" align="left" width="45" :reserve-selection="true" />
|
||||
<el-table-column type="selection" align="left" width="45" :reserve-selection="true"
|
||||
:selectable="selectableModality" />
|
||||
<el-table-column prop="value" :label="$t('trials:logincCfg:form:modality')" />
|
||||
</el-table>
|
||||
</div>
|
||||
|
@ -404,7 +405,8 @@
|
|||
</el-button>
|
||||
<el-table ref="studyNameTable" v-loading="listLoading" :data="trialStudyNameList" stripe height="400"
|
||||
row-key="Name" @selection-change="handleStudyNameSelectionChange">
|
||||
<el-table-column type="selection" align="left" width="45" :reserve-selection="true" />
|
||||
<el-table-column type="selection" align="left" width="45" :reserve-selection="true"
|
||||
:selectable="selectableStudyName" />
|
||||
<el-table-column prop="Name" :label="$t('trials:logincCfg:form:studyName')">
|
||||
<template slot-scope="scope">
|
||||
<div class="bodyPartName">
|
||||
|
@ -412,6 +414,7 @@
|
|||
isEN ? scope.row.EnName : scope.row.Name
|
||||
}}</span>
|
||||
<el-button circle icon="el-icon-delete" :title="$t('trials:logincCfg:form:StudyName:del')"
|
||||
:disabled="form.StudyUseStudyNameList.includes(row.Name) || form.StudyUseStudyNameList.includes(row.EnName)"
|
||||
@click.stop="handleDelStudyName(scope.row)" />
|
||||
</div>
|
||||
</template>
|
||||
|
@ -503,6 +506,8 @@ export default {
|
|||
IsTrialBasicLogicConfirmed: false,
|
||||
TrialObjectNameList: [],
|
||||
TrialObjectNameConfigStr: '',
|
||||
StudyUseModalityList: [],
|
||||
StudyUseStudyNameList: []
|
||||
// ClinicalDataSetNames: [],
|
||||
// ClinicalDataTrialSetIds: [],
|
||||
// ClinicalDataSetNamesStr: ''
|
||||
|
@ -709,6 +714,12 @@ export default {
|
|||
},
|
||||
},
|
||||
methods: {
|
||||
selectableStudyName(row) {
|
||||
return !this.form.StudyUseStudyNameList.includes(row.Name) || !this.form.StudyUseStudyNameList.includes(row.EnName)
|
||||
},
|
||||
selectableModality(row) {
|
||||
return !this.form.StudyUseModalityList.includes(row.value)
|
||||
},
|
||||
selectableBodyPart(row) {
|
||||
return !row.IsStudyUse
|
||||
},
|
||||
|
|
|
@ -50,8 +50,9 @@
|
|||
</el-form-item>
|
||||
<!-- 操作名 -->
|
||||
<el-form-item :label="$t('trials:auditRecord:table:operationName')">
|
||||
<el-select v-model="searchData.Description" style="width:120px" filterable clearable>
|
||||
<el-option v-for="item of DescriptionOptions" :value="item" :label="item" :key="item" />
|
||||
<el-select v-model="searchData.FrontAuditConfigId" style="width:120px" filterable clearable>
|
||||
<el-option v-for="item of DescriptionOptions" :value="item.FrontAuditConfigId" :label="item.Description"
|
||||
:key="item.FrontAuditConfigId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 是否签名 -->
|
||||
|
@ -646,6 +647,7 @@ const searchDataDefault = () => {
|
|||
StartTime: null,
|
||||
EndTime: null,
|
||||
Description: null,
|
||||
FrontAuditConfigId: null,
|
||||
OpByUserName: null,
|
||||
BatchId: null,
|
||||
TrialReadingCriterionId: null,
|
||||
|
@ -761,7 +763,7 @@ export default {
|
|||
}
|
||||
},
|
||||
getModuleTypeDescriptionList(v) {
|
||||
this.searchData.Description = null
|
||||
this.searchData.FrontAuditConfigId = null
|
||||
if (!v) return false
|
||||
let params = {
|
||||
moduleTypeId: v,
|
||||
|
@ -842,6 +844,9 @@ export default {
|
|||
return
|
||||
}
|
||||
if (v.DataType === 'ImageList') {
|
||||
if(obj[v.Code]){
|
||||
obj[v.Code] = obj[v.Code].filter(s => s && s.trim())
|
||||
}
|
||||
if (obj[v.Code] && obj[v.Code].length > 0) {
|
||||
// obj[v.Code].forEach((o,i) => {
|
||||
// var uo = upObj && upObj.length > 0 ? upObj[v.Code][i] : 0
|
||||
|
|
|
@ -0,0 +1,357 @@
|
|||
<template>
|
||||
<BaseContainer class="image-summary-wrapper">
|
||||
<template slot="search-container">
|
||||
<el-form :inline="true">
|
||||
<!-- 中心 -->
|
||||
<el-form-item :label="$t('trials:imageSummary:table:siteNo')">
|
||||
<el-select v-model="searchData.TrialSiteId" clearable filterable>
|
||||
<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:imageSummary:table:subject')">
|
||||
<el-input v-model="searchData.SubjectCode" />
|
||||
</el-form-item>
|
||||
<!-- 拍片时间 -->
|
||||
<el-form-item :label="$t('trials:imageSummary:table:operateTime')">
|
||||
<el-date-picker v-model="timeList" @change="changeTimeList" value-format="yyyy-MM-dd HH:mm:ss"
|
||||
:default-time="['00:00:00', '23:59:59']" type="datetimerange">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
|
||||
{{ $t('common:button:search') }}
|
||||
</el-button>
|
||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
||||
{{ $t('common:button:reset') }}
|
||||
</el-button>
|
||||
<el-button type="primary" @click="handleExport">
|
||||
{{ $t('common:button:export') }}
|
||||
</el-button>
|
||||
<el-button type="primary" @click="handleExportImage(false)" :disabled="selectArr.length <= 0"
|
||||
v-if="hasPermi(['trials:trials-panel:trial-summary:image-summary:export'])">
|
||||
{{ $t('trials:imageSummary:button:export_dicom') }}
|
||||
</el-button>
|
||||
<el-button type="primary" @click="handleExportImage(true)" :disabled="selectArr.length <= 0"
|
||||
v-if="hasPermi(['trials:trials-panel:trial-summary:image-summary:export'])">
|
||||
{{ $t('trials:imageSummary:button:export_image') }}
|
||||
</el-button>
|
||||
<el-button type="primary" @click="statistics">
|
||||
{{ $t('trials:imageSummary:button:statistics') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
<template slot="main-container">
|
||||
<el-table v-adaptive="{ bottomOffset: 60 }" v-loading="loading" :data="list" @sort-change="handleSortChange"
|
||||
@selection-change="handleSelectionChange" stripe height="100"
|
||||
:default-sort="{ prop: 'CreateTime', order: 'descending' }">
|
||||
<el-table-column type="selection" width="55" />
|
||||
<!-- 中心编号 -->
|
||||
<el-table-column prop="TrialSiteCode" min-width="100" :label="$t('trials:imageSummary:table:siteNo')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<!-- 受试者 -->
|
||||
<el-table-column prop="SubjectCode" min-width="100" :label="$t('trials:imageSummary:table:subject')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<!-- 访视 -->
|
||||
<el-table-column prop="VisitName" min-width="120" :label="$t('trials:imageSummary:table:visit')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<!-- 检查数量 -->
|
||||
<el-table-column prop="TotalStudyCount" min-width="120"
|
||||
:label="$t('trials:imageSummary:table:TotalStudyCount')" show-overflow-tooltip sortable="custom" />
|
||||
<!-- 影像类型 -->
|
||||
<el-table-column prop="VisitName" min-width="120" :label="$t('trials:imageSummary:table:imageType')"
|
||||
show-overflow-tooltip sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.IsHaveDicom" type="primary">{{
|
||||
$fd('IsDicom', true)
|
||||
}}</el-tag>
|
||||
<el-tag v-if="scope.row.IsHaveNoneDicom" type="primary">{{
|
||||
$fd('IsDicom', false)
|
||||
}}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 影像数量 -->
|
||||
<el-table-column prop="TotalImageCount" min-width="120"
|
||||
:label="$t('trials:imageSummary:table:TotalImageCount')" show-overflow-tooltip sortable="custom" />
|
||||
<!-- 影像大小 -->
|
||||
<el-table-column prop="TotalImageSizeStr" min-width="120"
|
||||
:label="$t('trials:imageSummary:table:TotalImageSizeStr')" show-overflow-tooltip
|
||||
sortable="custom" />
|
||||
<!-- 最早拍片日期 -->
|
||||
<el-table-column prop="EarliestScanDate" min-width="120"
|
||||
:label="$t('trials:imageSummary:table:EarliestScanDate')" show-overflow-tooltip sortable="custom" />
|
||||
<!-- 最晚拍片日期 -->
|
||||
<el-table-column prop="LatestScanDate" min-width="120"
|
||||
:label="$t('trials:imageSummary:table:LatestScanDate')" show-overflow-tooltip sortable="custom" />
|
||||
<el-table-column prop="" fixed="right" :label="$t('common:action:action')" show-overflow-tooltip
|
||||
v-if="hasPermi(['trials:trials-panel:trial-summary:image-summary:toUpload', 'trials:tab:uploadMonitor'])">
|
||||
<template slot-scope="scope">
|
||||
<!-- 详情 -->
|
||||
<el-button icon="el-icon-position" circle @click="toUpload(scope.row)"
|
||||
:title="$t('trials:imageSummary:action:toUpload')" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
|
||||
@pagination="getList" />
|
||||
<div class="remark">
|
||||
<span>{{ $t('trials:imageSummary:remark:TotalImageSizeStr') }}</span>
|
||||
<span class="size">{{ image_size.TotalImageSizeStr }}</span>,
|
||||
<span>{{ $t('trials:imageSummary:remark:SubjectImageAVGSizeStr') }}</span>
|
||||
<span class="size">{{ image_size.SubjectImageAVGSizeStr }} </span>,
|
||||
<span>{{ $t('trials:imageSummary:remark:SubjectVisitImageAVGSizeStr') }}</span>
|
||||
<span class="size">{{ image_size.SubjectVisitImageAVGSizeStr }}</span>,
|
||||
<span>{{ $t('trials:imageSummary:remark:CheckImageSize') }}</span>
|
||||
<span class="size">{{ image_size.CheckImageSize }} </span>
|
||||
</div>
|
||||
</template>
|
||||
</BaseContainer>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from '@/components/Pagination'
|
||||
import BaseContainer from '@/components/BaseContainer'
|
||||
import { getTrialSiteSelect, getTrialVisitImageStatList, getTrialVisitImageStatInfo, getExportSubjectVisitImageList } from '@/api/trials'
|
||||
import { downLoadFile } from '@/utils/stream.js'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
SortField: '',
|
||||
Asc: false,
|
||||
PageIndex: 1,
|
||||
PageSize: 20,
|
||||
TrialSiteId: null,
|
||||
SubjectCode: null,
|
||||
BeginScanDate: null,
|
||||
EndScanDate: null
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: "imageSummary",
|
||||
components: { Pagination, BaseContainer },
|
||||
data() {
|
||||
return {
|
||||
total: 0,
|
||||
loading: false,
|
||||
searchData: searchDataDefault(),
|
||||
ResearchProgramNo: null,
|
||||
list: [],
|
||||
siteOptions: [],
|
||||
timeList: [],
|
||||
selectArr: [],
|
||||
image_size: {
|
||||
TotalImageSizeStr: null,
|
||||
SubjectImageAVGSizeStr: null,
|
||||
SubjectVisitImageAVGSizeStr: null,
|
||||
CheckImageSize: null
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.getSite()
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
async getList() {
|
||||
try {
|
||||
this.searchData.TrialId = this.$route.query.trialId
|
||||
this.loading = true
|
||||
let res = await getTrialVisitImageStatList(this.searchData)
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}
|
||||
} catch (err) {
|
||||
this.loading = false
|
||||
console.log(err)
|
||||
}
|
||||
},
|
||||
// 导出表格
|
||||
handleExport() { },
|
||||
// 导出影像或关键图
|
||||
async handleExportImage(IsKeyImage = false) {
|
||||
try {
|
||||
let data = {
|
||||
TrialId: this.$route.query.trialId,
|
||||
IsKeyImage
|
||||
}
|
||||
data.SubjectVisitIdList = this.selectArr.map(item => item.SubjectVisitId)
|
||||
if (!IsKeyImage) {
|
||||
let confirm = await this.$confirm(this.$t('trials:imageSummary:confirm:space').replace('xxx', this.image_size.CheckImageSize))
|
||||
if (!confirm) return false
|
||||
}
|
||||
let res = await getExportSubjectVisitImageList(data)
|
||||
if (res.IsSuccess) {
|
||||
this.downLoad(IsKeyImage, res.Result)
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
},
|
||||
// 下载
|
||||
async downLoad(IsKeyImage = false, row) {
|
||||
try {
|
||||
let { files, name } = this.formatDownloadFile(IsKeyImage, row)
|
||||
let res = await downLoadFile(files, name, 'zip')
|
||||
// }
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
},
|
||||
// 格式化下载文件路径
|
||||
formatDownloadFile(IsKeyImage = false, row) {
|
||||
let files = [],
|
||||
name = `${this.$route.query.researchProgramNo}.zip`;
|
||||
if (!IsKeyImage) {
|
||||
//中心ID/受试者ID/访视名/Study ID_Study Date_Modality/文件
|
||||
row.VisitList.forEach(visit => {
|
||||
if (visit.StudyList && visit.StudyList.length > 0) {
|
||||
visit.StudyList.forEach(study => {
|
||||
if (study.SeriesList && study.SeriesList.length > 0) {
|
||||
study.SeriesList.forEach(serie => {
|
||||
if (serie.InstancePathList && serie.InstancePathList.length > 0) {
|
||||
serie.InstancePathList.forEach(instance => {
|
||||
let instanceArr = instance.Path.split("/")
|
||||
let fileName = instanceArr[instanceArr.length - 1]
|
||||
let obj = {
|
||||
name: `${visit.TrialSiteCode}/${visit.SubjectCode}/${visit.VisitName}/${study.StudyCode}_${study.StudyTime}_${serie.Modality}/${fileName}`,
|
||||
url: this.OSSclientConfig.basePath + instance.Path,
|
||||
}
|
||||
files.push(obj)
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
if (visit.NoneDicomStudyList && visit.NoneDicomStudyList.length > 0) {
|
||||
visit.NoneDicomStudyList.forEach(noneDicomStudy => {
|
||||
if (noneDicomStudy.FileList && noneDicomStudy.FileList.length > 0) {
|
||||
noneDicomStudy.FileList.forEach(file => {
|
||||
let obj = {
|
||||
name: `${visit.TrialSiteCode}/${visit.SubjectCode}/${visit.VisitName}/${noneDicomStudy.StudyCode}_${noneDicomStudy.ImageDate}_${noneDicomStudy.Modality}/${file.FileName}`,
|
||||
url: this.OSSclientConfig.basePath + file.Path,
|
||||
}
|
||||
files.push(obj)
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
} else {
|
||||
//项目研究方案号(评估标准)/中心ID/受试者ID/访视名/阅片人角色-裁判选择标记/文件名
|
||||
row.forEach(item => {
|
||||
['QuestionMarkPictureList', 'TableQuestionRowPictureList'].forEach(key => {
|
||||
if (item[key] && item[key].length > 0) {
|
||||
item[key].forEach(data => {
|
||||
['PicturePath', 'otherPicturePath'].forEach(imgKey => {
|
||||
if (data[imgKey]) {
|
||||
let arr = data[imgKey].split("/")
|
||||
let fileName = arr[arr.length - 1]
|
||||
let obj = {
|
||||
name: `${item.CriterionName}/${item.TrialSiteCode}/${item.SubjectCode}/${item.VisitName}/${this.$fd('ArmEnum', item.ArmEnum)}_${this.$fd('YesOrNo', item.IsJudgeSelect)}/${fileName}`,
|
||||
url: this.OSSclientConfig.basePath + data[imgKey],
|
||||
}
|
||||
files.push(obj)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
return { files, name }
|
||||
},
|
||||
// 获取统计数据
|
||||
async statistics() {
|
||||
try {
|
||||
let params = {
|
||||
TrialId: this.$route.query.trialId
|
||||
}
|
||||
this.loading = true
|
||||
let res = await getTrialVisitImageStatInfo(params)
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
this.image_size.TotalImageSizeStr = res.Result.TotalImageSizeStr;
|
||||
this.image_size.SubjectImageAVGSizeStr = res.Result.SubjectImageAVGSizeStr;
|
||||
this.image_size.SubjectVisitImageAVGSizeStr = res.Result.SubjectVisitImageAVGSizeStr;
|
||||
}
|
||||
} catch (err) {
|
||||
this.loading = false
|
||||
console.log(err)
|
||||
}
|
||||
},
|
||||
// 跳转至上传记录页
|
||||
toUpload(row) {
|
||||
let query = this.$route.query
|
||||
query.siteId = row.TrialSiteId
|
||||
query.subjectCode = row.SubjectCode
|
||||
query.visitNum = row.VisitNum
|
||||
this.$router.push({
|
||||
path: '/trials/trials-panel/trial-summary/upload-monitor',
|
||||
query
|
||||
})
|
||||
},
|
||||
handleSelectionChange(selection) {
|
||||
this.selectArr = selection
|
||||
let num = this.selectArr.reduce((sum, item) => sum + item.TotalImageSize, 0)
|
||||
if (num <= 0) return this.image_size.CheckImageSize = null
|
||||
this.image_size.CheckImageSize = (num / 1024 / 1024).toFixed(3) + 'MB'
|
||||
},
|
||||
// 获取site下拉框数据
|
||||
getSite() {
|
||||
getTrialSiteSelect(this.$route.query.trialId).then(res => {
|
||||
this.siteOptions = res.Result
|
||||
})
|
||||
},
|
||||
changeTimeList() {
|
||||
if (this.timeList) {
|
||||
this.searchData.BeginScanDate = this.timeList[0]
|
||||
this.searchData.EndScanDate = this.timeList[1]
|
||||
} else {
|
||||
this.searchData.BeginScanDate = null
|
||||
this.searchData.EndScanDate = null
|
||||
}
|
||||
|
||||
},
|
||||
handleReset() {
|
||||
this.searchData = searchDataDefault()
|
||||
this.timeList = []
|
||||
this.getList()
|
||||
},
|
||||
handleSearch() {
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
handleSortChange(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.searchData.Asc = true
|
||||
} else {
|
||||
this.searchData.Asc = false
|
||||
}
|
||||
this.searchData.SortField = column.prop
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.image-summary-wrapper {
|
||||
position: relative;
|
||||
|
||||
.remark {
|
||||
position: absolute;
|
||||
left: 5px;
|
||||
bottom: 7px;
|
||||
font-size: 12px;
|
||||
|
||||
.size {
|
||||
display: inline-block;
|
||||
min-width: 100px;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -4,52 +4,25 @@
|
|||
{{ TITLE }}
|
||||
</div>
|
||||
<el-form :inline="true" class="base-search-form topForm">
|
||||
<el-form-item
|
||||
:label="$t('trials:trialDocument:fileRecord:form:isConfirmRecord')"
|
||||
v-if="isManage && hasEdit && !viewStatus"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="DATA.IsConfirmRecord"
|
||||
:disabled="rowBtnStatus === 'edit'"
|
||||
>
|
||||
<el-radio
|
||||
:label="item.value"
|
||||
v-for="item in $d.YesOrNo"
|
||||
:key="item.id"
|
||||
>{{ item.label }}
|
||||
<el-form-item :label="$t('trials:trialDocument:fileRecord:form:isConfirmRecord')"
|
||||
v-if="isManage && hasEdit && !viewStatus">
|
||||
<el-radio-group v-model="DATA.IsConfirmRecord" :disabled="rowBtnStatus === 'edit'">
|
||||
<el-radio :label="item.value" v-for="item in $d.YesOrNo" :key="item.id">{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$t('trials:trialDocument:fileRecord:form:isEnable')"
|
||||
v-if="isManage && hasEdit && !viewStatus"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="DATA.IsEnable"
|
||||
:disabled="rowBtnStatus === 'edit'"
|
||||
>
|
||||
<el-radio
|
||||
:label="item.value"
|
||||
v-for="item in $d.YesOrNo"
|
||||
:key="item.id"
|
||||
>{{ item.label }}
|
||||
<el-form-item :label="$t('trials:trialDocument:fileRecord:form:isEnable')"
|
||||
v-if="isManage && hasEdit && !viewStatus">
|
||||
<el-radio-group v-model="DATA.IsEnable" :disabled="rowBtnStatus === 'edit'">
|
||||
<el-radio :label="item.value" v-for="item in $d.YesOrNo" :key="item.id">{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="isManage && hasEdit && !viewStatus">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="rowBtnStatus = 'save'"
|
||||
v-if="rowBtnStatus === 'edit'"
|
||||
>
|
||||
<el-button type="primary" @click="rowBtnStatus = 'save'" v-if="rowBtnStatus === 'edit'">
|
||||
{{ $t('common:button:edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
:loading="rowBtnLoading"
|
||||
@click="saveRowData"
|
||||
v-if="rowBtnStatus === 'save'"
|
||||
>
|
||||
<el-button type="primary" :loading="rowBtnLoading" @click="saveRowData" v-if="rowBtnStatus === 'save'">
|
||||
{{ $t('common:button:save') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
|
@ -58,32 +31,14 @@
|
|||
<!-- 搜索框 -->
|
||||
<div class="search" style="position: relative">
|
||||
<el-form :inline="true" class="base-search-form">
|
||||
<el-form-item
|
||||
:label="$t('trials:trialDocument:fileRecord:search:name')"
|
||||
>
|
||||
<el-input
|
||||
v-model="searchData.FileName"
|
||||
style="width: 100px"
|
||||
clearable
|
||||
/>
|
||||
<el-form-item :label="$t('trials:trialDocument:fileRecord:search:name')">
|
||||
<el-input v-model="searchData.FileName" style="width: 100px" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$t('trials:trialDocument:fileRecord:search:isAuthorizedView')"
|
||||
v-if="isManage && !viewStatus"
|
||||
>
|
||||
<el-select
|
||||
v-if="!viewStatus"
|
||||
v-model="searchData.IsAuthorizedView"
|
||||
style="width: 100px"
|
||||
placeholder=""
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in $d.YesOrNo"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
<el-form-item :label="$t('trials:trialDocument:fileRecord:search:isAuthorizedView')"
|
||||
v-if="isManage && !viewStatus">
|
||||
<el-select v-if="!viewStatus" v-model="searchData.IsAuthorizedView" style="width: 100px" placeholder=""
|
||||
clearable>
|
||||
<el-option v-for="item in $d.YesOrNo" :key="item.id" :label="item.label" :value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
@ -91,134 +46,70 @@
|
|||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
|
||||
{{ $t('common:button:search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
||||
{{ $t('common:button:reset') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="isManage && !viewStatus">
|
||||
<el-button
|
||||
type="primary"
|
||||
:disabled="selectTable.length <= 0"
|
||||
v-if="hasAccredit && isManage && !viewStatus"
|
||||
@click.stop="auth"
|
||||
>
|
||||
<el-button type="primary" :disabled="selectTable.length <= 0" v-if="hasAccredit && isManage && !viewStatus"
|
||||
@click.stop="auth">
|
||||
{{ $t('trials:trialDocument:fileRecord:button:accredit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
v-if="hasEdit && isManage && !viewStatus"
|
||||
@click.stop="openFile(false)"
|
||||
>
|
||||
<el-button type="primary" v-if="hasEdit && isManage && !viewStatus" @click.stop="openFile(false)">
|
||||
{{ $t('trials:trialDocument:fileRecord:button:uploadFile') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
v-if="hasEdit && isManage && !viewStatus"
|
||||
@click.stop="openFile(true)"
|
||||
>
|
||||
<el-button type="primary" v-if="hasEdit && isManage && !viewStatus" @click.stop="openFile(true)">
|
||||
{{ $t('trials:trialDocument:fileRecord:button:uploadFolder') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-bottom"
|
||||
:disabled="selectTable.length <= 0"
|
||||
v-if="hasDownLoad && isManage && !viewStatus"
|
||||
@click.stop="downLoad"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-bottom" :disabled="selectTable.length <= 0"
|
||||
v-if="hasDownLoad && isManage && !viewStatus" @click.stop="downLoad">
|
||||
{{ $t('trials:trialDocument:fileRecord:button:downLoadFile') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
v-if="hasDel && isManage && !viewStatus"
|
||||
:disabled="selectTable.length <= 0"
|
||||
@click.stop="delList"
|
||||
>
|
||||
<el-button type="primary" v-if="hasDel && isManage && !viewStatus" :disabled="selectTable.length <= 0"
|
||||
@click.stop="delList">
|
||||
{{ $t('trials:trialDocument:fileRecord:button:del') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{ bottomOffset: 75 }"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
style="width: 100%"
|
||||
@sort-change="handleSortByColumn"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
v-if="isManage && !viewStatus"
|
||||
/>
|
||||
<el-table v-loading="loading" v-adaptive="{ bottomOffset: 75 }" :data="list" stripe height="100" style="width: 100%"
|
||||
@sort-change="handleSortByColumn" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" v-if="isManage && !viewStatus" />
|
||||
<el-table-column type="index" v-else />
|
||||
|
||||
<!--名称-->
|
||||
<el-table-column
|
||||
prop="FileName"
|
||||
:label="$t('trials:trialDocument:fileRecord:table:name')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
>
|
||||
<el-table-column prop="FileName" :label="$t('trials:trialDocument:fileRecord:table:name')" show-overflow-tooltip
|
||||
sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<div
|
||||
v-if="
|
||||
scope.row.TrialFileRecord &&
|
||||
scope.row.TrialFileRecord.TrialFileTypeId
|
||||
"
|
||||
style="display: flex; align-items: center"
|
||||
>
|
||||
<div v-if="
|
||||
scope.row.TrialFileRecord &&
|
||||
scope.row.TrialFileRecord.TrialFileTypeId
|
||||
" style="display: flex; align-items: center">
|
||||
<span class="fileName">{{
|
||||
scope.row.TrialFileRecord.FileName
|
||||
}}</span>
|
||||
<div v-if="isManage && !viewStatus" class="fileBtnBox">
|
||||
<i
|
||||
class="el-icon-view"
|
||||
@click.stop="preview(scope.row.TrialFileRecord)"
|
||||
/>
|
||||
<i
|
||||
class="el-icon-download"
|
||||
v-if="hasDownLoad"
|
||||
@click.stop="downLoad(false, scope.row.TrialFileRecord, 'file')"
|
||||
/>
|
||||
<i
|
||||
class="el-icon-delete"
|
||||
v-if="hasDel"
|
||||
@click.stop="delFile(scope.row, 'Trial')"
|
||||
/>
|
||||
<i class="el-icon-view" @click.stop="preview(scope.row.TrialFileRecord)" />
|
||||
<i class="el-icon-download" v-if="hasDownLoad"
|
||||
@click.stop="downLoad(false, scope.row.TrialFileRecord, 'file')" />
|
||||
<i class="el-icon-delete" v-if="hasDel" @click.stop="delFile(scope.row, 'Trial')" />
|
||||
</div>
|
||||
</div>
|
||||
<i
|
||||
v-else-if="isManage && !viewStatus && hasEdit"
|
||||
class="el-icon-upload2"
|
||||
style="cursor: pointer; color: #409eff"
|
||||
@click.stop="upload(scope.row, 'Trial', ['.pdf'])"
|
||||
/>
|
||||
<i v-else-if="isManage && !viewStatus && hasEdit" class="el-icon-upload2"
|
||||
style="cursor: pointer; color: #409eff" @click.stop="upload(scope.row, 'Trial', ['.pdf'])" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="fileType"
|
||||
:label="$t('trials:trialDocument:fileRecord:table:fileType')"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column prop="fileType" :label="$t('trials:trialDocument:fileRecord:table:fileType')"
|
||||
show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.TrialFileRecord">{{
|
||||
scope.row.TrialFileRecord.FileFormat
|
||||
}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="fileType"
|
||||
:label="$t('trials:trialDocument:fileRecord:table:fileSize')"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column prop="fileType" :label="$t('trials:trialDocument:fileRecord:table:fileSize')"
|
||||
show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.TrialFileRecord">{{
|
||||
scope.row.TrialFileRecord.FileSize
|
||||
|
@ -228,133 +119,52 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<!--历史记录-->
|
||||
<el-table-column
|
||||
prop="HistoryFileRecord"
|
||||
:label="$t('trials:trialDocument:fileRecord:table:historyFileRecord')"
|
||||
show-overflow-tooltip
|
||||
v-if="isManage && !viewStatus"
|
||||
>
|
||||
<el-table-column prop="HistoryFileRecord" :label="$t('trials:trialDocument:fileRecord:table:historyFileRecord')"
|
||||
show-overflow-tooltip v-if="isManage && !viewStatus">
|
||||
<template slot-scope="scope">
|
||||
<div
|
||||
v-if="
|
||||
scope.row.HistoryFileRecord &&
|
||||
scope.row.HistoryFileRecord.TrialFileTypeId
|
||||
"
|
||||
style="display: flex; align-items: center"
|
||||
>
|
||||
<span class="fileName">{{
|
||||
scope.row.HistoryFileRecord.FileName
|
||||
}}</span>
|
||||
<div v-if="isManage && !viewStatus" class="fileBtnBox">
|
||||
<i
|
||||
class="el-icon-download"
|
||||
v-if="hasDownLoad"
|
||||
@click.stop="
|
||||
downLoad(false, scope.row.HistoryFileRecord, 'file')
|
||||
"
|
||||
/>
|
||||
<i
|
||||
class="el-icon-delete"
|
||||
v-if="hasDel"
|
||||
@click.stop="delFile(scope.row, 'History')"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<i
|
||||
v-else-if="isManage && !viewStatus"
|
||||
class="el-icon-upload2"
|
||||
style="cursor: pointer; color: #409eff"
|
||||
@click.stop="upload(scope.row, 'History', ['.zip'])"
|
||||
/>
|
||||
<el-button type="text" @click.stop="openHistory(scope.row)">
|
||||
{{ scope.row.HistoryCount }}
|
||||
<i class="el-icon-upload2" />
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="IsAuthorizedView"
|
||||
:label="$t('trials:trialDocument:fileRecord:table:isAuthorizedView')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
v-if="isManage && !viewStatus"
|
||||
>
|
||||
<el-table-column prop="IsAuthorizedView" :label="$t('trials:trialDocument:fileRecord:table:isAuthorizedView')"
|
||||
show-overflow-tooltip sortable="custom" v-if="isManage && !viewStatus">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
:disabled="!scope.row.TrialFileRecord"
|
||||
v-if="isManage && !viewStatus && hasEdit"
|
||||
v-model="scope.row.IsAuthorizedView"
|
||||
@change="(val) => auth(false, scope.row, val)"
|
||||
:active-value="true"
|
||||
:inactive-value="false"
|
||||
:active-text="$fd('YesOrNo', true)"
|
||||
:inactive-text="$fd('YesOrNo', false)"
|
||||
>
|
||||
<el-switch :disabled="!scope.row.TrialFileRecord" v-if="isManage && !viewStatus && hasEdit"
|
||||
v-model="scope.row.IsAuthorizedView" @change="(val) => auth(false, scope.row, val)" :active-value="true"
|
||||
:inactive-value="false" :active-text="$fd('YesOrNo', true)" :inactive-text="$fd('YesOrNo', false)">
|
||||
</el-switch>
|
||||
<span v-else>{{ $fd('YesOrNo', scope.row.IsAuthorizedView) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="UpdateTime"
|
||||
:label="$t('trials:trialDocument:fileRecord:table:updateTime')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
:label="$t('trials:trialDocument:fileRecord:table:createTime')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="UpdateTime" :label="$t('trials:trialDocument:fileRecord:table:updateTime')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<el-table-column prop="CreateTime" :label="$t('trials:trialDocument:fileRecord:table:createTime')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<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')"
|
||||
circle
|
||||
:disabled="
|
||||
!scope.row.TrialFileRecord || !scope.row.TrialFileRecord.FilePath
|
||||
"
|
||||
@click.stop="preview(scope.row.TrialFileRecord)"
|
||||
/>
|
||||
<el-button
|
||||
v-if="hasDownLoad && isManage && !viewStatus"
|
||||
icon="el-icon-download"
|
||||
:title="$t('trials:trialDocument:fileRecord:button:downLoadFile')"
|
||||
circle
|
||||
:disabled="
|
||||
!scope.row.TrialFileRecord || !scope.row.TrialFileRecord.FilePath
|
||||
"
|
||||
@click.stop="downLoad(false, scope.row.TrialFileRecord, 'file')"
|
||||
/>
|
||||
<el-button
|
||||
v-if="hasDel && isManage && !viewStatus"
|
||||
icon="el-icon-delete"
|
||||
:title="$t('trials:trialDocument:fileRecord:button:delete')"
|
||||
circle
|
||||
@click.stop="handleDel(scope.row)"
|
||||
/>
|
||||
<el-button icon="el-icon-view" :title="$t('common:button:view')" circle :disabled="!scope.row.TrialFileRecord || !scope.row.TrialFileRecord.FilePath
|
||||
" @click.stop="preview(scope.row.TrialFileRecord)" />
|
||||
<el-button v-if="hasDownLoad && isManage && !viewStatus" icon="el-icon-download"
|
||||
:title="$t('trials:trialDocument:fileRecord:button:downLoadFile')" circle :disabled="!scope.row.TrialFileRecord || !scope.row.TrialFileRecord.FilePath
|
||||
" @click.stop="downLoad(false, scope.row.TrialFileRecord, 'file')" />
|
||||
<el-button v-if="hasDel && isManage && !viewStatus" icon="el-icon-delete"
|
||||
:title="$t('trials:trialDocument:fileRecord:button:delete')" circle @click.stop="handleDel(scope.row)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination
|
||||
class="page"
|
||||
:total="total"
|
||||
:page.sync="searchData.PageIndex"
|
||||
:limit.sync="searchData.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
<upload-files
|
||||
:config="config"
|
||||
:faccept="faccept"
|
||||
:uploadPath="uploadPath"
|
||||
:limitLength="limitLength"
|
||||
v-if="config.visible"
|
||||
@close="close"
|
||||
@uplaodFile="uplaodFile"
|
||||
/>
|
||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
|
||||
@pagination="getList" />
|
||||
<upload-files :config="config" :faccept="faccept" :uploadPath="uploadPath" :limitLength="limitLength"
|
||||
v-if="config.visible" @close="close" @uplaodFile="uplaodFile" />
|
||||
<history-file-list :config="file_config" :rowData="fileData" :uploadPath="uploadPath" @getList="getList" />
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
<script>
|
||||
import {
|
||||
addOrUpdateTrialFileType,
|
||||
getTrialNormalRecordList,
|
||||
|
@ -369,6 +179,7 @@ import { deepClone } from '@/utils/index.js'
|
|||
import Pagination from '@/components/Pagination'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import uploadFiles from '../uploadFiles.vue'
|
||||
import historyFileList from '../historyFileList.vue'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
IsAuthorizedView: null,
|
||||
|
@ -381,7 +192,7 @@ const searchDataDefault = () => {
|
|||
}
|
||||
export default {
|
||||
name: 'fileRecord',
|
||||
components: { BoxContent, Pagination, uploadFiles },
|
||||
components: { BoxContent, Pagination, uploadFiles, historyFileList },
|
||||
props: {
|
||||
viewStatus: {
|
||||
type: Boolean,
|
||||
|
@ -426,9 +237,25 @@ export default {
|
|||
limitLength: 0,
|
||||
|
||||
DATA: {},
|
||||
|
||||
fileData: {},
|
||||
file_config: {
|
||||
visible: false,
|
||||
title: this.$t('trials:trialDocument:historyFileList:title'),
|
||||
width: '800px',
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openHistory(row) {
|
||||
this.fileData = {
|
||||
Name: row.TrialFileRecord ? row.TrialFileRecord.FileName : '',
|
||||
Id: row.Id,
|
||||
TrialFileTypeId: this.rowData.Id
|
||||
}
|
||||
this.file_config.visible = true
|
||||
},
|
||||
// 新增列表数据
|
||||
async uplaodFile(list) {
|
||||
console.log(list, 'list')
|
||||
|
@ -775,7 +602,7 @@ export default {
|
|||
this.DATA = Object.assign({}, this.rowData)
|
||||
},
|
||||
immediate: true,
|
||||
deep:true
|
||||
deep: true
|
||||
},
|
||||
},
|
||||
created() {
|
||||
|
@ -823,34 +650,39 @@ export default {
|
|||
])
|
||||
},
|
||||
TITLE() {
|
||||
return `${this.$fd('ArchiveType', this.ArchiveTypeEnum)} — ${
|
||||
this.isEN ? this.rowData.Name : this.rowData.NameCN
|
||||
}`
|
||||
return `${this.$fd('ArchiveType', this.ArchiveTypeEnum)} — ${this.isEN ? this.rowData.Name : this.rowData.NameCN
|
||||
}`
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
<style lang="scss" scoped>
|
||||
.title {
|
||||
line-height: 40px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.fileName {
|
||||
display: inline-block;
|
||||
max-width: calc(100% - 60px);
|
||||
white-space: nowrap; /* 文本不换行 */
|
||||
overflow: hidden; /* 超出部分隐藏 */
|
||||
white-space: nowrap;
|
||||
/* 文本不换行 */
|
||||
overflow: hidden;
|
||||
/* 超出部分隐藏 */
|
||||
text-overflow: ellipsis;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
.fileBtnBox {
|
||||
display: inline-block;
|
||||
width: 50px;
|
||||
|
||||
i {
|
||||
cursor: pointer;
|
||||
color: #409eff;
|
||||
margin-right: 3px;
|
||||
|
||||
&:last-child {
|
||||
margin: 0;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,351 @@
|
|||
<template>
|
||||
<div v-if="config.visible">
|
||||
<base-model :config="config">
|
||||
<template slot="dialog-body">
|
||||
<el-form ref="form" :model="rowData" label-width="80px" style="width: 80%;display: inline-block;">
|
||||
<el-form-item :label="`${$t('trials:trialDocument:table:Name')}: `">
|
||||
<span class="name text-ellipsis" :title="rowData.Name">{{ rowData.Name }}</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-button size="mini" type="primary" style="float:right" @click.stop="openFile(true)">
|
||||
{{ $t('trials:trialDocument:historyFileList:button:addFolder') }}</el-button>
|
||||
<div style="float:right;padding: 0 5px;width: 10px;height: 10px;"></div>
|
||||
<el-button size="mini" type="primary" style="float:right" @click.stop="openFile(false)">
|
||||
{{ $t('trials:trialDocument:historyFileList:button:addFile') }}</el-button>
|
||||
<el-table :data="list" style="width: 100%" max-height="300px" v-loading="loading"
|
||||
@sort-change="handleSortByColumn" @cell-mouse-enter="handleCellMouseEnter">
|
||||
<el-table-column type="index" width="60" />
|
||||
<el-table-column prop="FileName" :label="$t('trials:trialDocument:historyFileList:FileName')"
|
||||
sortable="custom" width="200px">
|
||||
<template slot-scope="scope">
|
||||
<div v-if="renameId !== scope.row.Id" class="name_box">
|
||||
<span class="name" :title="scope.row.FileName">{{ scope.row.FileName }}</span>
|
||||
<i class="el-icon-edit icon_edit" @click="addRenameId(scope.row)"
|
||||
:title="$t('trials:trialDocument:historyFileList:icon:rename')" />
|
||||
</div>
|
||||
|
||||
|
||||
<el-input v-model="scope.row.FileName" :ref="`renameInp_${scope.row.Id}`" :autofocus="true"
|
||||
class="renameInp" @blur="save(scope.row)" v-else />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="FileFormat" :label="$t('trials:trialDocument:historyFileList:FileType')"
|
||||
sortable="custom" />
|
||||
<el-table-column prop="FileSize" :label="$t('trials:trialDocument:historyFileList:FileSize')"
|
||||
sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<span>{{
|
||||
scope.row.FileSize && scope.row.FileSize > 0
|
||||
? `${(scope.row.FileSize / 1024 / 1024).toFixed(3)}MB`
|
||||
: ''
|
||||
}}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="CreateTime" :label="$t('trials:trialDocument:historyFileList:CreateTime')"
|
||||
sortable="custom" />
|
||||
<el-table-column :label="$t('common:action:action')" min-width="120px">
|
||||
<template slot-scope="scope">
|
||||
<el-button size="mini" type="text" @click.stop="preview(scope.row)">
|
||||
{{ $t('common:button:preview') }}
|
||||
</el-button>
|
||||
<el-button size="mini" type="text" @click.stop="del(scope.row)">
|
||||
{{ $t('common:button:delete') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
</base-model>
|
||||
<viewer ref="picture_perview4" style="margin: 0 10px"
|
||||
v-if="rowDATA.FileFormat && ['png', 'jpg', 'jpeg'].includes(rowDATA.FileFormat.toLowerCase())"
|
||||
:images="[`${OSSclientConfig.basePath}${rowDATA.FilePath}`]" :options="viewerOptions">
|
||||
|
||||
<img v-show="false" :src="`${OSSclientConfig.basePath}${rowDATA.FilePath}`" alt="Image" />
|
||||
</viewer>
|
||||
<upload-files :config="upload_config" :faccept="faccept" :uploadPath="uploadPath" v-if="upload_config.visible"
|
||||
@close="close" @uplaodFile="uplaodFile" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import BaseModel from '@/components/BaseModel'
|
||||
import uploadFiles from './uploadFiles.vue'
|
||||
import { addOrUpdateTrialHistoryRecordFile, batchAddTrialHistoryRecordFile, getTrialHistoryRecordFileList, deleteTrialHistoryRecordFile } from '@/api/dictionary'
|
||||
const defaultSearchData = () => {
|
||||
return {
|
||||
PageIndex: 1,
|
||||
PageSize: 1000,
|
||||
Asc: false,
|
||||
OffLine: null,
|
||||
SortField: null
|
||||
}
|
||||
}
|
||||
export default {
|
||||
components: {
|
||||
BaseModel,
|
||||
uploadFiles
|
||||
},
|
||||
props: {
|
||||
config: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {
|
||||
visible: false,
|
||||
title: this.$t('trials:trialDocument:historyFileList:title'),
|
||||
width: '800px',
|
||||
}
|
||||
}
|
||||
},
|
||||
rowData: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
},
|
||||
uploadPath: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
searchData: defaultSearchData(),
|
||||
visible: false,
|
||||
title: null,
|
||||
list: [],
|
||||
rowDATA: {},
|
||||
loading: false,
|
||||
viewerOptions: {
|
||||
toolbar: {
|
||||
zoomIn: true,
|
||||
zoomOut: true,
|
||||
reset: true,
|
||||
prev: false,
|
||||
next: false,
|
||||
rotateLeft: true,
|
||||
rotateRight: true,
|
||||
flipHorizontal: true,
|
||||
flipVertical: true,
|
||||
}
|
||||
},
|
||||
upload_config: {
|
||||
visible: false,
|
||||
showClose: true,
|
||||
width: '800px',
|
||||
title: '',
|
||||
appendToBody: false,
|
||||
isFolder: false,
|
||||
},
|
||||
faccept: ['.jpg',
|
||||
'.jpeg',
|
||||
'.png',
|
||||
'.pdf',
|
||||
'.ppt',
|
||||
'.pptx',
|
||||
'.doc',
|
||||
'.docx',
|
||||
'.xls',
|
||||
'.xlsx',
|
||||
".mp4",
|
||||
".zip"],
|
||||
renameId: null
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
'rowData.Id': {
|
||||
handler() {
|
||||
if (this.rowData.Id) {
|
||||
console.log(this.rowData)
|
||||
this.getList()
|
||||
}
|
||||
},
|
||||
deep: true,
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 单行hover移入
|
||||
handleCellMouseEnter(row) {
|
||||
this.hoverId = row.Id
|
||||
},
|
||||
addRenameId(row) {
|
||||
this.renameId = row.Id
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs[`renameInp_${row.Id}`]) {
|
||||
this.$refs[`renameInp_${row.Id}`].focus()
|
||||
}
|
||||
})
|
||||
},
|
||||
close() {
|
||||
this.upload_config.visible = false
|
||||
},
|
||||
getAllList() {
|
||||
this.getList()
|
||||
this.$emit("getList")
|
||||
},
|
||||
openAudit(row) {
|
||||
this.form = Object.assign({}, row)
|
||||
this.visible = true
|
||||
},
|
||||
async save(row) {
|
||||
try {
|
||||
if (!row.FileName) {
|
||||
this.$message.warning(this.$t("trials:trialDocument:historyFileList:message:fileNameMust"))
|
||||
return this.addRenameId(row)
|
||||
}
|
||||
|
||||
this.renameId = null
|
||||
let res = await addOrUpdateTrialHistoryRecordFile(row)
|
||||
if (res.IsSuccess) {
|
||||
this.getList()
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
},
|
||||
async del(row) {
|
||||
try {
|
||||
let confirm = await this.$confirm(this.$t("trials:trialDocument:historyFileList:message:del"))
|
||||
if (!confirm) return false
|
||||
this.loading = true
|
||||
let res = await deleteTrialHistoryRecordFile(row.Id)
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
this.getAllList()
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
this.loading = false
|
||||
}
|
||||
},
|
||||
async uplaodFile(list) {
|
||||
console.log(list, 'list')
|
||||
try {
|
||||
let arr = []
|
||||
list.forEach(item => {
|
||||
let obj = Object.assign({}, item)
|
||||
obj.TrialFileTypeId = this.rowData.TrialFileTypeId
|
||||
obj.TrialRecordId = this.rowData.Id
|
||||
arr.push(obj)
|
||||
});
|
||||
this.loading = true
|
||||
let res = await batchAddTrialHistoryRecordFile(arr)
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
this.getAllList()
|
||||
}
|
||||
} catch (err) {
|
||||
this.loading = false
|
||||
console.log(err)
|
||||
}
|
||||
},
|
||||
openFile(isFolder = false) {
|
||||
this.upload_config.title = this.$t(
|
||||
'trials:trialDocument:fileRecord:form:title:uploadFile'
|
||||
)
|
||||
this.upload_config.visible = true
|
||||
this.upload_config.isFolder = isFolder
|
||||
},
|
||||
async getList() {
|
||||
try {
|
||||
if (!this.rowData.Id) return false
|
||||
this.searchData.TrialRecordId = this.rowData.Id
|
||||
let res = await getTrialHistoryRecordFileList(this.searchData)
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
this.list = res.Result.CurrentPageData
|
||||
}
|
||||
} catch (err) {
|
||||
this.loading = false
|
||||
console.log(err)
|
||||
}
|
||||
},
|
||||
preview(data) {
|
||||
// return this.perview_visible = true
|
||||
this.rowDATA = Object.assign({}, data)
|
||||
if (['.ppt',
|
||||
'.pptx',
|
||||
'.doc',
|
||||
'.docx',
|
||||
'.xls',
|
||||
'.xlsx'].includes(`.${data.FileFormat.toLowerCase()}`)) {
|
||||
this.$onlyOffice({
|
||||
path: data.FilePath,
|
||||
type: data.FileFormat,
|
||||
title: data.Name
|
||||
})
|
||||
}
|
||||
if (['.jpg',
|
||||
'.jpeg',
|
||||
'.png'].includes(`.${data.FileFormat.toLowerCase()}`)) {
|
||||
this.$nextTick(() => {
|
||||
this.$refs['picture_perview4'].$viewer.show()
|
||||
})
|
||||
}
|
||||
if (['.pdf'].includes(`.${data.FileFormat.toLowerCase()}`)) {
|
||||
this.$preview({
|
||||
path: data.Path || data.FilePath,
|
||||
type: 'pdf',
|
||||
title: data.Name,
|
||||
})
|
||||
}
|
||||
if (['.mp4'].includes(`.${data.FileFormat.toLowerCase()}`)) {
|
||||
this.$video({
|
||||
path: data.Path || data.FilePath,
|
||||
type: 'mp4',
|
||||
title: data.Name,
|
||||
})
|
||||
}
|
||||
},
|
||||
// 排序
|
||||
handleSortByColumn(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.searchData.Asc = true
|
||||
} else {
|
||||
this.searchData.Asc = false
|
||||
}
|
||||
this.searchData.SortField = column.prop
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
},
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.name {
|
||||
display: block;
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.name_box {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
width: calc(100% - 20px);
|
||||
|
||||
.name {
|
||||
max-width: calc(100% - 60px);
|
||||
white-space: nowrap;
|
||||
/* 文本不换行 */
|
||||
overflow: hidden;
|
||||
/* 超出部分隐藏 */
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
|
||||
.icon_edit {
|
||||
cursor: pointer;
|
||||
color: rgba(0, 0, 0, 0.3);
|
||||
margin-left: 2px;
|
||||
|
||||
&:hover {
|
||||
color: rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
}
|
||||
|
||||
.renameInp {
|
||||
::v-deep .el-input__inner {
|
||||
line-height: 23px;
|
||||
height: 23px;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -1,131 +1,64 @@
|
|||
<template>
|
||||
<base-model :config="config">
|
||||
<div slot="dialog-body">
|
||||
<el-form
|
||||
ref="reportDocForm"
|
||||
:model="form"
|
||||
label-width="140px"
|
||||
size="small"
|
||||
:rules="rules"
|
||||
>
|
||||
<el-form ref="reportDocForm" :model="form" label-width="140px" size="small" :rules="rules">
|
||||
<div class="base-dialog-body">
|
||||
<el-form-item
|
||||
v-if="!config.upload"
|
||||
:label="$t('trials:trialDocument:reportDoc:form:name')"
|
||||
prop="Name"
|
||||
>
|
||||
<el-form-item v-if="!config.upload" :label="$t('trials:trialDocument:reportDoc:form:name')" prop="Name">
|
||||
<el-input v-model="form.Name" />
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="!config.upload"
|
||||
:label="$t('trials:trialDocument:reportDoc:form:version')"
|
||||
prop="Version"
|
||||
>
|
||||
<el-form-item v-if="!config.upload" :label="$t('trials:trialDocument:reportDoc:form:version')" prop="Version">
|
||||
<el-input v-model="form.Version" />
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="!config.upload"
|
||||
:label="$t('trials:trialDocument:reportDoc:form:isAuthorizedView')"
|
||||
prop="IsAuthorizedView"
|
||||
>
|
||||
<el-switch
|
||||
v-model="form.IsAuthorizedView"
|
||||
:active-value="true"
|
||||
:inactive-value="false"
|
||||
:active-text="$fd('YesOrNo', true)"
|
||||
:inactive-text="$fd('YesOrNo', false)"
|
||||
>
|
||||
<el-form-item v-if="!config.upload" :label="$t('trials:trialDocument:reportDoc:form:isAuthorizedView')"
|
||||
prop="IsAuthorizedView">
|
||||
<el-switch v-model="form.IsAuthorizedView" :active-value="true" :inactive-value="false"
|
||||
:active-text="$fd('YesOrNo', true)" :inactive-text="$fd('YesOrNo', false)">
|
||||
</el-switch>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="!config.upload || config.upload === 'PDF'"
|
||||
:label="$t('trials:trialDocument:reportDoc:form:pdfFileRecord')"
|
||||
prop="PDFFileRecord"
|
||||
>
|
||||
<el-upload
|
||||
class="upload-demo"
|
||||
action
|
||||
:before-upload="(param) => beforeUpload(param, 'PDF', '.pdf')"
|
||||
:http-request="(param) => handleUploadFile(param, 'PDF')"
|
||||
:on-remove="() => handleRemoveFile('PDF')"
|
||||
:limit="1"
|
||||
accept=".pdf"
|
||||
:file-list="PDFFile"
|
||||
>
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
:disabled="
|
||||
!!form.PDFFileRecord && !!form.PDFFileRecord.FilePath
|
||||
"
|
||||
>{{ $t('common:button:upload') }}
|
||||
<el-form-item v-if="!config.upload || config.upload === 'PDF'"
|
||||
:label="$t('trials:trialDocument:reportDoc:form:pdfFileRecord')" prop="PDFFileRecord">
|
||||
<el-upload class="upload-demo" action :before-upload="(param) => beforeUpload(param, 'PDF', '.pdf')"
|
||||
:http-request="(param) => handleUploadFile(param, 'PDF')" :on-remove="() => handleRemoveFile('PDF')"
|
||||
:limit="1" accept=".pdf" :file-list="PDFFile">
|
||||
<el-button size="small" type="primary" :disabled="!!form.PDFFileRecord && !!form.PDFFileRecord.FilePath
|
||||
">{{ $t('common:button:upload') }}
|
||||
</el-button>
|
||||
<span slot="tip" class="el-upload__tip">
|
||||
{{ $t('trials:trialDocument:reportDoc:rule:mustPDF') }}
|
||||
</span>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="!config.upload || config.upload === 'Word'"
|
||||
:label="$t('trials:trialDocument:reportDoc:form:wordFileRecord')"
|
||||
>
|
||||
<el-upload
|
||||
class="upload-demo"
|
||||
action
|
||||
:before-upload="(param) => beforeUpload(param, 'Word', '.docx')"
|
||||
:http-request="(param) => handleUploadFile(param, 'Word')"
|
||||
:on-remove="() => handleRemoveFile('Word')"
|
||||
:limit="1"
|
||||
accept=".docx"
|
||||
:file-list="WordFile"
|
||||
>
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
:disabled="
|
||||
!!form.WordFileRecord && !!form.WordFileRecord.FilePath
|
||||
"
|
||||
>{{ $t('common:button:upload') }}
|
||||
<el-form-item v-if="!config.upload || config.upload === 'Word'"
|
||||
:label="$t('trials:trialDocument:reportDoc:form:wordFileRecord')">
|
||||
<el-upload class="upload-demo" action :before-upload="(param) => beforeUpload(param, 'Word', '.docx')"
|
||||
:http-request="(param) => handleUploadFile(param, 'Word')" :on-remove="() => handleRemoveFile('Word')"
|
||||
:limit="1" accept=".docx" :file-list="WordFile">
|
||||
<el-button size="small" type="primary" :disabled="!!form.WordFileRecord && !!form.WordFileRecord.FilePath
|
||||
">{{ $t('common:button:upload') }}
|
||||
</el-button>
|
||||
<span slot="tip" class="el-upload__tip">
|
||||
{{ $t('trials:trialDocument:reportDoc:rule:mustDOCX') }}
|
||||
</span>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
v-if="!config.upload || config.upload === 'Sign'"
|
||||
:label="$t('trials:trialDocument:reportDoc:form:signFileRecord')"
|
||||
:prop="
|
||||
rowData.IsConfirmRecord &&
|
||||
(!config.upload || config.upload === 'Sign')
|
||||
<el-form-item v-if="!config.upload || config.upload === 'Sign'"
|
||||
:label="$t('trials:trialDocument:reportDoc:form:signFileRecord')" :prop="rowData.IsConfirmRecord &&
|
||||
(!config.upload || config.upload === 'Sign')
|
||||
? 'SignFileRecord'
|
||||
: ''
|
||||
"
|
||||
>
|
||||
<el-upload
|
||||
class="upload-demo"
|
||||
action
|
||||
:before-upload="(param) => beforeUpload(param, 'Sign', '.pdf')"
|
||||
:http-request="(param) => handleUploadFile(param, 'Sign')"
|
||||
:on-remove="() => handleRemoveFile('Sign')"
|
||||
:limit="1"
|
||||
accept=".pdf"
|
||||
:file-list="SignFile"
|
||||
>
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
:disabled="
|
||||
!!form.SignFileRecord && !!form.SignFileRecord.FilePath
|
||||
"
|
||||
>{{ $t('common:button:upload') }}
|
||||
">
|
||||
<el-upload class="upload-demo" action :before-upload="(param) => beforeUpload(param, 'Sign', '.pdf')"
|
||||
:http-request="(param) => handleUploadFile(param, 'Sign')" :on-remove="() => handleRemoveFile('Sign')"
|
||||
:limit="1" accept=".pdf" :file-list="SignFile">
|
||||
<el-button size="small" type="primary" :disabled="!!form.SignFileRecord && !!form.SignFileRecord.FilePath
|
||||
">{{ $t('common:button:upload') }}
|
||||
</el-button>
|
||||
<span slot="tip" class="el-upload__tip">
|
||||
{{ $t('trials:trialDocument:reportDoc:rule:mustPDF') }}
|
||||
</span>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
<!-- <el-form-item
|
||||
v-if="!config.upload || config.upload === 'History'"
|
||||
:label="$t('trials:trialDocument:reportDoc:form:historyFileRecord')"
|
||||
>
|
||||
|
@ -151,7 +84,7 @@
|
|||
{{ $t('trials:trialDocument:reportDoc:rule:mustZIP') }}
|
||||
</span>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
|
@ -165,7 +98,7 @@
|
|||
</div>
|
||||
</base-model>
|
||||
</template>
|
||||
<script>
|
||||
<script>
|
||||
import baseModel from '@/components/BaseModel'
|
||||
import { addOrUpdateTrialFinalRecord } from '@/api/dictionary'
|
||||
export default {
|
||||
|
|
|
@ -4,65 +4,30 @@
|
|||
{{ TITLE }}
|
||||
</div>
|
||||
<el-form :inline="true" class="base-search-form topForm">
|
||||
<el-form-item
|
||||
:label="$t('trials:trialDocument:reportDoc:form:firstFinalDate')"
|
||||
>
|
||||
<el-date-picker
|
||||
:disabled="!isManage || rowBtnStatus === 'edit'"
|
||||
v-model="DATA.FirstFinalDate"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd"
|
||||
placeholder=""
|
||||
>
|
||||
<el-form-item :label="$t('trials:trialDocument:reportDoc:form:firstFinalDate')">
|
||||
<el-date-picker :disabled="!isManage || rowBtnStatus === 'edit'" v-model="DATA.FirstFinalDate" type="date"
|
||||
value-format="yyyy-MM-dd" format="yyyy-MM-dd" placeholder="">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$t('trials:trialDocument:reportDoc:form:isConfirmRecord')"
|
||||
v-if="isManage && hasEdit && !viewStatus"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="DATA.IsConfirmRecord"
|
||||
:disabled="rowBtnStatus === 'edit'"
|
||||
>
|
||||
<el-radio
|
||||
:label="item.value"
|
||||
v-for="item in $d.YesOrNo"
|
||||
:key="item.id"
|
||||
>{{ item.label }}
|
||||
<el-form-item :label="$t('trials:trialDocument:reportDoc:form:isConfirmRecord')"
|
||||
v-if="isManage && hasEdit && !viewStatus">
|
||||
<el-radio-group v-model="DATA.IsConfirmRecord" :disabled="rowBtnStatus === 'edit'">
|
||||
<el-radio :label="item.value" v-for="item in $d.YesOrNo" :key="item.id">{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$t('trials:trialDocument:reportDoc:form:isEnable')"
|
||||
v-if="isManage && hasEdit && !viewStatus"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="DATA.IsEnable"
|
||||
:disabled="rowBtnStatus === 'edit'"
|
||||
>
|
||||
<el-radio
|
||||
:label="item.value"
|
||||
v-for="item in $d.YesOrNo"
|
||||
:key="item.id"
|
||||
>{{ item.label }}
|
||||
<el-form-item :label="$t('trials:trialDocument:reportDoc:form:isEnable')"
|
||||
v-if="isManage && hasEdit && !viewStatus">
|
||||
<el-radio-group v-model="DATA.IsEnable" :disabled="rowBtnStatus === 'edit'">
|
||||
<el-radio :label="item.value" v-for="item in $d.YesOrNo" :key="item.id">{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="isManage && hasEdit && !viewStatus">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="rowBtnStatus = 'save'"
|
||||
v-if="rowBtnStatus === 'edit'"
|
||||
>
|
||||
<el-button type="primary" @click="rowBtnStatus = 'save'" v-if="rowBtnStatus === 'edit'">
|
||||
{{ $t('common:button:edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
:loading="rowBtnLoading"
|
||||
@click="saveRowData"
|
||||
v-if="rowBtnStatus === 'save'"
|
||||
>
|
||||
<el-button type="primary" :loading="rowBtnLoading" @click="saveRowData" v-if="rowBtnStatus === 'save'">
|
||||
{{ $t('common:button:save') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
|
@ -74,32 +39,14 @@
|
|||
<el-form-item :label="$t('trials:trialDocument:reportDoc:search:name')">
|
||||
<el-input v-model="searchData.Name" style="width: 100px" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$t('trials:trialDocument:reportDoc:search:version')"
|
||||
>
|
||||
<el-input
|
||||
v-model="searchData.Version"
|
||||
style="width: 100px"
|
||||
clearable
|
||||
/>
|
||||
<el-form-item :label="$t('trials:trialDocument:reportDoc:search:version')">
|
||||
<el-input v-model="searchData.Version" style="width: 100px" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$t('trials:trialDocument:reportDoc:search:isAuthorizedView')"
|
||||
v-if="isManage && !viewStatus"
|
||||
>
|
||||
<el-select
|
||||
v-if="!viewStatus"
|
||||
v-model="searchData.IsAuthorizedView"
|
||||
style="width: 100px"
|
||||
placeholder=""
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in $d.YesOrNo"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
<el-form-item :label="$t('trials:trialDocument:reportDoc:search:isAuthorizedView')"
|
||||
v-if="isManage && !viewStatus">
|
||||
<el-select v-if="!viewStatus" v-model="searchData.IsAuthorizedView" style="width: 100px" placeholder=""
|
||||
clearable>
|
||||
<el-option v-for="item in $d.YesOrNo" :key="item.id" :label="item.label" :value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
@ -107,321 +54,143 @@
|
|||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
|
||||
{{ $t('common:button:search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
||||
{{ $t('common:button:reset') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="isManage && !viewStatus">
|
||||
<el-button
|
||||
type="primary"
|
||||
:disabled="selectTable.length <= 0"
|
||||
v-if="hasAccredit && isManage && !viewStatus"
|
||||
@click.stop="auth"
|
||||
>
|
||||
<el-button type="primary" :disabled="selectTable.length <= 0" v-if="hasAccredit && isManage && !viewStatus"
|
||||
@click.stop="auth">
|
||||
{{ $t('trials:trialDocument:reportDoc:button:accredit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
v-if="hasAdd && isManage && !viewStatus"
|
||||
@click.stop="handleAdd"
|
||||
>
|
||||
<el-button type="primary" v-if="hasAdd && isManage && !viewStatus" @click.stop="handleAdd">
|
||||
{{ $t('trials:trialDocument:reportDoc:button:add') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-bottom"
|
||||
:disabled="selectTable.length <= 0"
|
||||
v-if="hasDownLoad && isManage && !viewStatus"
|
||||
@click.stop="downLoad"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-bottom" :disabled="selectTable.length <= 0"
|
||||
v-if="hasDownLoad && isManage && !viewStatus" @click.stop="downLoad">
|
||||
{{ $t('trials:trialDocument:reportDoc:button:downLoadFile') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{ bottomOffset: 75 }"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
style="width: 100%"
|
||||
@sort-change="handleSortByColumn"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
v-if="isManage && !viewStatus"
|
||||
/>
|
||||
<el-table v-loading="loading" v-adaptive="{ bottomOffset: 75 }" :data="list" stripe height="100" style="width: 100%"
|
||||
@sort-change="handleSortByColumn" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" v-if="isManage && !viewStatus" />
|
||||
<el-table-column type="index" v-else />
|
||||
|
||||
<el-table-column
|
||||
prop="Name"
|
||||
:label="$t('trials:trialDocument:reportDoc:table:name')"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Version"
|
||||
:label="$t('trials:trialDocument:reportDoc:table:version')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="Name" :label="$t('trials:trialDocument:reportDoc:table:name')" sortable="custom"
|
||||
show-overflow-tooltip />
|
||||
<el-table-column prop="Version" :label="$t('trials:trialDocument:reportDoc:table:version')" show-overflow-tooltip
|
||||
sortable="custom" />
|
||||
<!--定稿PDF-->
|
||||
<el-table-column
|
||||
prop="PDFFileRecord"
|
||||
:label="$t('trials:trialDocument:reportDoc:table:pdfFileRecord')"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column prop="PDFFileRecord" :label="$t('trials:trialDocument:reportDoc:table:pdfFileRecord')"
|
||||
show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<div
|
||||
v-if="
|
||||
scope.row.PDFFileRecord && scope.row.PDFFileRecord.TrialFileTypeId
|
||||
"
|
||||
style="display: flex; align-items: center"
|
||||
>
|
||||
<div v-if="
|
||||
scope.row.PDFFileRecord && scope.row.PDFFileRecord.TrialFileTypeId
|
||||
" style="display: flex; align-items: center">
|
||||
<span class="fileName">{{ scope.row.PDFFileRecord.FileName }}</span>
|
||||
<div v-if="isManage && !viewStatus" class="fileBtnBox">
|
||||
<i
|
||||
class="el-icon-view"
|
||||
@click.stop="preview(scope.row.PDFFileRecord)"
|
||||
/>
|
||||
<i
|
||||
class="el-icon-download"
|
||||
v-if="hasDownLoad"
|
||||
@click.stop="downLoad(false, scope.row.PDFFileRecord, 'file')"
|
||||
/>
|
||||
<i
|
||||
class="el-icon-delete"
|
||||
v-if="hasDel"
|
||||
@click.stop="delFile(scope.row, 'PDF')"
|
||||
/>
|
||||
<i class="el-icon-view" @click.stop="preview(scope.row.PDFFileRecord)" />
|
||||
<i class="el-icon-download" v-if="hasDownLoad"
|
||||
@click.stop="downLoad(false, scope.row.PDFFileRecord, 'file')" />
|
||||
<i class="el-icon-delete" v-if="hasDel" @click.stop="delFile(scope.row, 'PDF')" />
|
||||
</div>
|
||||
</div>
|
||||
<i
|
||||
v-else-if="isManage && !viewStatus && hasEdit"
|
||||
class="el-icon-upload2"
|
||||
style="cursor: pointer; color: #409eff"
|
||||
@click.stop="upload(scope.row, 'PDF')"
|
||||
/>
|
||||
<i v-else-if="isManage && !viewStatus && hasEdit" class="el-icon-upload2"
|
||||
style="cursor: pointer; color: #409eff" @click.stop="upload(scope.row, 'PDF')" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--定稿WORD-->
|
||||
<el-table-column
|
||||
prop="WordFileRecord"
|
||||
:label="$t('trials:trialDocument:reportDoc:table:wordFileRecord')"
|
||||
show-overflow-tooltip
|
||||
v-if="isManage && !viewStatus"
|
||||
>
|
||||
<el-table-column prop="WordFileRecord" :label="$t('trials:trialDocument:reportDoc:table:wordFileRecord')"
|
||||
show-overflow-tooltip v-if="isManage && !viewStatus">
|
||||
<template slot-scope="scope">
|
||||
<div
|
||||
v-if="
|
||||
scope.row.WordFileRecord &&
|
||||
scope.row.WordFileRecord.TrialFileTypeId
|
||||
"
|
||||
style="display: flex; align-items: center"
|
||||
>
|
||||
<div v-if="
|
||||
scope.row.WordFileRecord &&
|
||||
scope.row.WordFileRecord.TrialFileTypeId
|
||||
" style="display: flex; align-items: center">
|
||||
<span class="fileName">{{
|
||||
scope.row.WordFileRecord.FileName
|
||||
}}</span>
|
||||
<div v-if="isManage && !viewStatus" class="fileBtnBox">
|
||||
<i
|
||||
class="el-icon-download"
|
||||
v-if="hasDownLoad"
|
||||
@click.stop="downLoad(false, scope.row.WordFileRecord, 'file')"
|
||||
/>
|
||||
<i
|
||||
class="el-icon-delete"
|
||||
v-if="hasDel"
|
||||
@click.stop="delFile(scope.row, 'Word')"
|
||||
/>
|
||||
<i class="el-icon-download" v-if="hasDownLoad"
|
||||
@click.stop="downLoad(false, scope.row.WordFileRecord, 'file')" />
|
||||
<i class="el-icon-delete" v-if="hasDel" @click.stop="delFile(scope.row, 'Word')" />
|
||||
</div>
|
||||
</div>
|
||||
<i
|
||||
v-else-if="isManage && !viewStatus && hasEdit"
|
||||
class="el-icon-upload2"
|
||||
style="cursor: pointer; color: #409eff"
|
||||
@click.stop="upload(scope.row, 'Word')"
|
||||
/>
|
||||
<i v-else-if="isManage && !viewStatus && hasEdit" class="el-icon-upload2"
|
||||
style="cursor: pointer; color: #409eff" @click.stop="upload(scope.row, 'Word')" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--签字页-->
|
||||
<el-table-column
|
||||
prop="SignFileRecord"
|
||||
:label="$t('trials:trialDocument:reportDoc:table:signFileRecord')"
|
||||
show-overflow-tooltip
|
||||
v-if="isManage && !viewStatus"
|
||||
>
|
||||
<el-table-column prop="SignFileRecord" :label="$t('trials:trialDocument:reportDoc:table:signFileRecord')"
|
||||
show-overflow-tooltip v-if="isManage && !viewStatus">
|
||||
<template slot-scope="scope">
|
||||
<div
|
||||
v-if="
|
||||
scope.row.SignFileRecord &&
|
||||
scope.row.SignFileRecord.TrialFileTypeId
|
||||
"
|
||||
style="display: flex; align-items: center"
|
||||
>
|
||||
<div v-if="
|
||||
scope.row.SignFileRecord &&
|
||||
scope.row.SignFileRecord.TrialFileTypeId
|
||||
" style="display: flex; align-items: center">
|
||||
<span class="fileName">{{
|
||||
scope.row.SignFileRecord.FileName
|
||||
}}</span>
|
||||
<div v-if="isManage && !viewStatus" class="fileBtnBox">
|
||||
<i
|
||||
class="el-icon-view"
|
||||
@click.stop="preview(scope.row.SignFileRecord)"
|
||||
/>
|
||||
<i
|
||||
class="el-icon-download"
|
||||
v-if="hasDownLoad"
|
||||
@click.stop="downLoad(false, scope.row.SignFileRecord, 'file')"
|
||||
/>
|
||||
<i
|
||||
class="el-icon-delete"
|
||||
v-if="hasDel"
|
||||
@click.stop="delFile(scope.row, 'Sign')"
|
||||
/>
|
||||
<i class="el-icon-view" @click.stop="preview(scope.row.SignFileRecord)" />
|
||||
<i class="el-icon-download" v-if="hasDownLoad"
|
||||
@click.stop="downLoad(false, scope.row.SignFileRecord, 'file')" />
|
||||
<i class="el-icon-delete" v-if="hasDel" @click.stop="delFile(scope.row, 'Sign')" />
|
||||
</div>
|
||||
</div>
|
||||
<i
|
||||
v-else-if="isManage && !viewStatus && hasEdit"
|
||||
class="el-icon-upload2"
|
||||
style="cursor: pointer; color: #409eff"
|
||||
@click.stop="upload(scope.row, 'Sign')"
|
||||
/>
|
||||
<i v-else-if="isManage && !viewStatus && hasEdit" class="el-icon-upload2"
|
||||
style="cursor: pointer; color: #409eff" @click.stop="upload(scope.row, 'Sign')" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--历史记录-->
|
||||
<el-table-column
|
||||
prop="HistoryFileRecord"
|
||||
:label="$t('trials:trialDocument:reportDoc:table:historyFileRecord')"
|
||||
show-overflow-tooltip
|
||||
v-if="isManage && !viewStatus"
|
||||
>
|
||||
<el-table-column prop="HistoryFileRecord" :label="$t('trials:trialDocument:reportDoc:table:historyFileRecord')"
|
||||
show-overflow-tooltip v-if="isManage && !viewStatus">
|
||||
<template slot-scope="scope">
|
||||
<div
|
||||
v-if="
|
||||
scope.row.HistoryFileRecord &&
|
||||
scope.row.HistoryFileRecord.TrialFileTypeId
|
||||
"
|
||||
style="display: flex; align-items: center"
|
||||
>
|
||||
<span class="fileName">{{
|
||||
scope.row.HistoryFileRecord.FileName
|
||||
}}</span>
|
||||
<div v-if="isManage && !viewStatus" class="fileBtnBox">
|
||||
<i
|
||||
class="el-icon-download"
|
||||
v-if="hasDownLoad"
|
||||
@click.stop="
|
||||
downLoad(false, scope.row.HistoryFileRecord, 'file')
|
||||
"
|
||||
/>
|
||||
<i
|
||||
class="el-icon-delete"
|
||||
v-if="hasDel"
|
||||
@click.stop="delFile(scope.row, 'History')"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<i
|
||||
v-else-if="isManage && !viewStatus && hasEdit"
|
||||
class="el-icon-upload2"
|
||||
style="cursor: pointer; color: #409eff"
|
||||
@click.stop="upload(scope.row, 'History')"
|
||||
/>
|
||||
<el-button type="text" @click.stop="openHistory(scope.row)">
|
||||
{{ scope.row.HistoryCount }}
|
||||
<i class="el-icon-upload2" />
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="IsAuthorizedView"
|
||||
:label="$t('trials:trialDocument:reportDoc:table:isAuthorizedView')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
v-if="isManage && !viewStatus"
|
||||
>
|
||||
<el-table-column prop="IsAuthorizedView" :label="$t('trials:trialDocument:reportDoc:table:isAuthorizedView')"
|
||||
show-overflow-tooltip sortable="custom" v-if="isManage && !viewStatus">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
v-if="isManage && !viewStatus && hasEdit"
|
||||
v-model="scope.row.IsAuthorizedView"
|
||||
@change="(val) => auth(false, scope.row, val)"
|
||||
:active-value="true"
|
||||
:inactive-value="false"
|
||||
:active-text="$fd('YesOrNo', true)"
|
||||
:inactive-text="$fd('YesOrNo', false)"
|
||||
>
|
||||
<el-switch v-if="isManage && !viewStatus && hasEdit" v-model="scope.row.IsAuthorizedView"
|
||||
@change="(val) => auth(false, scope.row, val)" :active-value="true" :inactive-value="false"
|
||||
:active-text="$fd('YesOrNo', true)" :inactive-text="$fd('YesOrNo', false)">
|
||||
</el-switch>
|
||||
<span v-else>{{ $fd('YesOrNo', scope.row.IsAuthorizedView) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="UpdateTime"
|
||||
:label="$t('trials:trialDocument:reportDoc:table:updateTime')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
:label="$t('trials:trialDocument:reportDoc:table:createTime')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="UpdateTime" :label="$t('trials:trialDocument:reportDoc:table:updateTime')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<el-table-column prop="CreateTime" :label="$t('trials:trialDocument:reportDoc:table:createTime')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<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')"
|
||||
circle
|
||||
:disabled="
|
||||
!scope.row.PDFFileRecord || !scope.row.PDFFileRecord.FilePath
|
||||
"
|
||||
@click.stop="preview(scope.row.PDFFileRecord)"
|
||||
/>
|
||||
<el-button
|
||||
v-if="hasEdit && isManage && !viewStatus"
|
||||
icon="el-icon-edit-outline"
|
||||
:title="$t('common:button:edit')"
|
||||
circle
|
||||
@click.stop="handleEdit(scope.row)"
|
||||
/>
|
||||
<el-button
|
||||
v-if="hasDownLoad && isManage && !viewStatus"
|
||||
icon="el-icon-download"
|
||||
:title="$t('trials:trialDocument:reportDoc:button:download')"
|
||||
circle
|
||||
@click.stop="downLoad(false, scope.row)"
|
||||
/>
|
||||
<el-button
|
||||
v-if="hasDel && isManage && !viewStatus"
|
||||
icon="el-icon-delete"
|
||||
:title="$t('trials:trialDocument:reportDoc:button:delete')"
|
||||
circle
|
||||
@click.stop="handleDel(scope.row)"
|
||||
/>
|
||||
<el-button icon="el-icon-view" :title="$t('common:button:view')" circle :disabled="!scope.row.PDFFileRecord || !scope.row.PDFFileRecord.FilePath
|
||||
" @click.stop="preview(scope.row.PDFFileRecord)" />
|
||||
<el-button v-if="hasEdit && isManage && !viewStatus" icon="el-icon-edit-outline"
|
||||
:title="$t('common:button:edit')" circle @click.stop="handleEdit(scope.row)" />
|
||||
<el-button v-if="hasDownLoad && isManage && !viewStatus" icon="el-icon-download"
|
||||
:title="$t('trials:trialDocument:reportDoc:button:download')" circle
|
||||
@click.stop="downLoad(false, scope.row)" />
|
||||
<el-button v-if="hasDel && isManage && !viewStatus" icon="el-icon-delete"
|
||||
:title="$t('trials:trialDocument:reportDoc:button:delete')" circle @click.stop="handleDel(scope.row)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination
|
||||
class="page"
|
||||
:total="total"
|
||||
:page.sync="searchData.PageIndex"
|
||||
:limit.sync="searchData.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
<reportDoc-form
|
||||
:ArchiveTypeEnum="ArchiveTypeEnum"
|
||||
:rowData="rowData"
|
||||
:config="config"
|
||||
:data="selectData"
|
||||
v-if="config.visible"
|
||||
@close="close"
|
||||
@getList="getList"
|
||||
/>
|
||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
|
||||
@pagination="getList" />
|
||||
<reportDoc-form :ArchiveTypeEnum="ArchiveTypeEnum" :rowData="rowData" :config="config" :data="selectData"
|
||||
v-if="config.visible" @close="close" @getList="getList" />
|
||||
<history-file-list :config="file_config" :rowData="fileData" :uploadPath="uploadPath" @getList="getList" />
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
|
@ -437,6 +206,7 @@ import { deepClone } from '@/utils/index.js'
|
|||
import Pagination from '@/components/Pagination'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import reportDocForm from './form.vue'
|
||||
import historyFileList from '../historyFileList.vue'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
IsAuthorizedView: null,
|
||||
|
@ -450,7 +220,7 @@ const searchDataDefault = () => {
|
|||
}
|
||||
export default {
|
||||
name: 'reportDoc',
|
||||
components: { BoxContent, Pagination, reportDocForm },
|
||||
components: { BoxContent, Pagination, reportDocForm, historyFileList },
|
||||
props: {
|
||||
viewStatus: {
|
||||
type: Boolean,
|
||||
|
@ -491,9 +261,30 @@ export default {
|
|||
},
|
||||
selectData: {},
|
||||
DATA: {},
|
||||
|
||||
fileData: {},
|
||||
file_config: {
|
||||
visible: false,
|
||||
title: this.$t('trials:trialDocument:historyFileList:title'),
|
||||
width: '800px',
|
||||
},
|
||||
uploadPath: null
|
||||
}
|
||||
},
|
||||
created() {
|
||||
let typeArr = ['', 'Report', 'Doc', 'Record', 'Reviewer', 'Template']
|
||||
let types = typeArr[this.ArchiveTypeEnum]
|
||||
this.uploadPath = `/${this.$route.query.trialId}/Document/${types}`
|
||||
},
|
||||
methods: {
|
||||
openHistory(row) {
|
||||
this.fileData = {
|
||||
Name: row.Name,
|
||||
Id: row.Id,
|
||||
TrialFileTypeId: this.rowData.Id
|
||||
}
|
||||
this.file_config.visible = true
|
||||
},
|
||||
// 上传单个文件
|
||||
upload(row, key) {
|
||||
this.selectData = deepClone(row)
|
||||
|
@ -771,7 +562,7 @@ export default {
|
|||
this.DATA = Object.assign({}, this.rowData)
|
||||
},
|
||||
immediate: true,
|
||||
deep:true
|
||||
deep: true
|
||||
},
|
||||
},
|
||||
computed: {
|
||||
|
@ -814,9 +605,8 @@ export default {
|
|||
])
|
||||
},
|
||||
TITLE() {
|
||||
return `${this.$fd('ArchiveType', this.ArchiveTypeEnum)} — ${
|
||||
this.isEN ? this.rowData.Name : this.rowData.NameCN
|
||||
}`
|
||||
return `${this.$fd('ArchiveType', this.ArchiveTypeEnum)} — ${this.isEN ? this.rowData.Name : this.rowData.NameCN
|
||||
}`
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -827,21 +617,27 @@ export default {
|
|||
font-weight: bold;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.fileName {
|
||||
display: inline-block;
|
||||
max-width: calc(100% - 60px);
|
||||
white-space: nowrap; /* 文本不换行 */
|
||||
overflow: hidden; /* 超出部分隐藏 */
|
||||
white-space: nowrap;
|
||||
/* 文本不换行 */
|
||||
overflow: hidden;
|
||||
/* 超出部分隐藏 */
|
||||
text-overflow: ellipsis;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
.fileBtnBox {
|
||||
display: inline-block;
|
||||
width: 50px;
|
||||
|
||||
i {
|
||||
cursor: pointer;
|
||||
color: #409eff;
|
||||
margin-right: 3px;
|
||||
|
||||
&:last-child {
|
||||
margin: 0;
|
||||
}
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
</span>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="!config.upload || config.upload === 'History'" :label="$t('trials:trialDocument:trainRecord:form:historyFileRecord')
|
||||
<!-- <el-form-item v-if="!config.upload || config.upload === 'History'" :label="$t('trials:trialDocument:trainRecord:form:historyFileRecord')
|
||||
">
|
||||
<el-upload class="upload-demo" action :before-upload="(param) => beforeUpload(param, 'History', '.zip')"
|
||||
:http-request="(param) => handleUploadFile(param, 'History')"
|
||||
|
@ -45,7 +45,7 @@
|
|||
{{ $t('trials:trialDocument:trainRecord:rule:mustZIP') }}
|
||||
</span>
|
||||
</el-upload>
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
</div>
|
||||
</el-form>
|
||||
</div>
|
||||
|
|
|
@ -4,52 +4,25 @@
|
|||
{{ TITLE }}
|
||||
</div>
|
||||
<el-form :inline="true" class="base-search-form topForm">
|
||||
<el-form-item
|
||||
:label="$t('trials:trialDocument:trainRecord:form:isConfirmRecord')"
|
||||
v-if="isManage && hasEdit && !viewStatus"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="DATA.IsConfirmRecord"
|
||||
:disabled="rowBtnStatus === 'edit'"
|
||||
>
|
||||
<el-radio
|
||||
:label="item.value"
|
||||
v-for="item in $d.YesOrNo"
|
||||
:key="item.id"
|
||||
>{{ item.label }}
|
||||
<el-form-item :label="$t('trials:trialDocument:trainRecord:form:isConfirmRecord')"
|
||||
v-if="isManage && hasEdit && !viewStatus">
|
||||
<el-radio-group v-model="DATA.IsConfirmRecord" :disabled="rowBtnStatus === 'edit'">
|
||||
<el-radio :label="item.value" v-for="item in $d.YesOrNo" :key="item.id">{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$t('trials:trialDocument:trainRecord:form:isEnable')"
|
||||
v-if="isManage && hasEdit && !viewStatus"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="DATA.IsEnable"
|
||||
:disabled="rowBtnStatus === 'edit'"
|
||||
>
|
||||
<el-radio
|
||||
:label="item.value"
|
||||
v-for="item in $d.YesOrNo"
|
||||
:key="item.id"
|
||||
>{{ item.label }}
|
||||
<el-form-item :label="$t('trials:trialDocument:trainRecord:form:isEnable')"
|
||||
v-if="isManage && hasEdit && !viewStatus">
|
||||
<el-radio-group v-model="DATA.IsEnable" :disabled="rowBtnStatus === 'edit'">
|
||||
<el-radio :label="item.value" v-for="item in $d.YesOrNo" :key="item.id">{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="isManage && hasEdit && !viewStatus">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="rowBtnStatus = 'save'"
|
||||
v-if="rowBtnStatus === 'edit'"
|
||||
>
|
||||
<el-button type="primary" @click="rowBtnStatus = 'save'" v-if="rowBtnStatus === 'edit'">
|
||||
{{ $t('common:button:edit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
:loading="rowBtnLoading"
|
||||
@click="saveRowData"
|
||||
v-if="rowBtnStatus === 'save'"
|
||||
>
|
||||
<el-button type="primary" :loading="rowBtnLoading" @click="saveRowData" v-if="rowBtnStatus === 'save'">
|
||||
{{ $t('common:button:save') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
|
@ -59,371 +32,155 @@
|
|||
<div class="search" style="position: relative">
|
||||
<el-form :inline="true" class="base-search-form">
|
||||
<!--培训日期-->
|
||||
<el-form-item
|
||||
:label="$t('trials:trialDocument:trainRecord:search:TrianingDate')"
|
||||
>
|
||||
<el-date-picker
|
||||
style="width: 240px"
|
||||
v-model="TrianingDate"
|
||||
type="daterange"
|
||||
:range-separator="$t('baseForm:daterange:rangeSeparator')"
|
||||
start-placeholder=""
|
||||
end-placeholder=""
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd"
|
||||
>
|
||||
<el-form-item :label="$t('trials:trialDocument:trainRecord:search:TrianingDate')">
|
||||
<el-date-picker style="width: 240px" v-model="TrianingDate" type="daterange"
|
||||
:range-separator="$t('baseForm:daterange:rangeSeparator')" start-placeholder="" end-placeholder=""
|
||||
format="yyyy-MM-dd" value-format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$t('trials:trialDocument:trainRecord:search:name')"
|
||||
>
|
||||
<el-input
|
||||
v-model="searchData.FileName"
|
||||
style="width: 100px"
|
||||
clearable
|
||||
/>
|
||||
<el-form-item :label="$t('trials:trialDocument:trainRecord:search:name')">
|
||||
<el-input v-model="searchData.FileName" style="width: 100px" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="
|
||||
$t('trials:trialDocument:trainRecord:search:isAuthorizedView')
|
||||
"
|
||||
v-if="isManage && !viewStatus"
|
||||
>
|
||||
<el-select
|
||||
v-if="!viewStatus"
|
||||
v-model="searchData.IsAuthorizedView"
|
||||
style="width: 100px"
|
||||
placeholder=""
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item in $d.YesOrNo"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
<el-form-item :label="$t('trials:trialDocument:trainRecord:search:isAuthorizedView')
|
||||
" v-if="isManage && !viewStatus">
|
||||
<el-select v-if="!viewStatus" v-model="searchData.IsAuthorizedView" style="width: 100px" placeholder=""
|
||||
clearable>
|
||||
<el-option v-for="item in $d.YesOrNo" :key="item.id" :label="item.label" :value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!--更新时间-->
|
||||
<el-form-item
|
||||
:label="$t('trials:trialDocument:trainRecord:search:UpdateTime')"
|
||||
style="margin-bottom: 10px"
|
||||
>
|
||||
<el-date-picker
|
||||
style="width: 240px"
|
||||
v-model="UpdateTime"
|
||||
type="daterange"
|
||||
:range-separator="$t('baseForm:daterange:rangeSeparator')"
|
||||
start-placeholder=""
|
||||
end-placeholder=""
|
||||
format="yyyy-MM-dd"
|
||||
value-format="yyyy-MM-dd"
|
||||
>
|
||||
<el-form-item :label="$t('trials:trialDocument:trainRecord:search:UpdateTime')" style="margin-bottom: 10px">
|
||||
<el-date-picker style="width: 240px" v-model="UpdateTime" type="daterange"
|
||||
:range-separator="$t('baseForm:daterange:rangeSeparator')" start-placeholder="" end-placeholder=""
|
||||
format="yyyy-MM-dd" value-format="yyyy-MM-dd">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
|
||||
{{ $t('common:button:search') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
||||
{{ $t('common:button:reset') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="isManage && !viewStatus">
|
||||
<el-button
|
||||
type="primary"
|
||||
:disabled="selectTable.length <= 0"
|
||||
v-if="hasAccredit && isManage && !viewStatus"
|
||||
@click.stop="auth"
|
||||
>
|
||||
<el-button type="primary" :disabled="selectTable.length <= 0" v-if="hasAccredit && isManage && !viewStatus"
|
||||
@click.stop="auth">
|
||||
{{ $t('trials:trialDocument:trainRecord:button:accredit') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
v-if="hasEdit && isManage && !viewStatus"
|
||||
@click.stop="openFile(false)"
|
||||
>
|
||||
<el-button type="primary" v-if="hasEdit && isManage && !viewStatus" @click.stop="openFile(false)">
|
||||
{{ $t('trials:trialDocument:trainRecord:button:uploadFile') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
v-if="hasEdit && isManage && !viewStatus"
|
||||
@click.stop="openFile(true)"
|
||||
>
|
||||
<el-button type="primary" v-if="hasEdit && isManage && !viewStatus" @click.stop="openFile(true)">
|
||||
{{ $t('trials:trialDocument:trainRecord:button:uploadFolder') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
v-if="hasAdd && isManage && !viewStatus"
|
||||
@click.stop="handleAdd"
|
||||
>
|
||||
<el-button type="primary" v-if="hasAdd && isManage && !viewStatus" @click.stop="handleAdd">
|
||||
{{ $t('trials:trialDocument:trainRecord:button:add') }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-bottom"
|
||||
:disabled="selectTable.length <= 0"
|
||||
v-if="hasDownLoad && isManage && !viewStatus"
|
||||
@click.stop="downLoad"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-bottom" :disabled="selectTable.length <= 0"
|
||||
v-if="hasDownLoad && isManage && !viewStatus" @click.stop="downLoad">
|
||||
{{ $t('trials:trialDocument:trainRecord:button:downLoadFile') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{ bottomOffset: 75 }"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
style="width: 100%"
|
||||
@sort-change="handleSortByColumn"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
width="55"
|
||||
v-if="isManage && !viewStatus"
|
||||
/>
|
||||
<el-table v-loading="loading" v-adaptive="{ bottomOffset: 75 }" :data="list" stripe height="100" style="width: 100%"
|
||||
@sort-change="handleSortByColumn" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" v-if="isManage && !viewStatus" />
|
||||
<el-table-column type="index" v-else />
|
||||
|
||||
<el-table-column
|
||||
prop="TrianingDate"
|
||||
:label="$t('trials:trialDocument:trainRecord:table:TrianingDate')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
>
|
||||
<el-table-column prop="TrianingDate" :label="$t('trials:trialDocument:trainRecord:table:TrianingDate')"
|
||||
show-overflow-tooltip sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-tooltip
|
||||
v-if="!scope.row.TrianingDate"
|
||||
class="item"
|
||||
effect="dark"
|
||||
:content="$t('trials:trialDocument:trainRecord:tip:noTrianingDate')"
|
||||
placement="top"
|
||||
>
|
||||
<i
|
||||
class="el-icon-warning"
|
||||
style="cursor: pointer; color: #f56c6c"
|
||||
></i>
|
||||
<el-tooltip v-if="!scope.row.TrianingDate" class="item" effect="dark"
|
||||
:content="$t('trials:trialDocument:trainRecord:tip:noTrianingDate')" placement="top">
|
||||
<i class="el-icon-warning" style="cursor: pointer; color: #f56c6c"></i>
|
||||
</el-tooltip>
|
||||
<span v-else>{{ scope.row.TrianingDate }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="TrianingCount"
|
||||
:label="$t('trials:trialDocument:trainRecord:table:TrianingCount')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="TrianingState"
|
||||
:label="$t('trials:trialDocument:trainRecord:table:TrianingState')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="Note"
|
||||
:label="$t('trials:trialDocument:trainRecord:table:Note')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="TrianingCount" :label="$t('trials:trialDocument:trainRecord:table:TrianingCount')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<el-table-column prop="TrianingState" :label="$t('trials:trialDocument:trainRecord:table:TrianingState')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<el-table-column prop="Note" :label="$t('trials:trialDocument:trainRecord:table:Note')" show-overflow-tooltip
|
||||
sortable="custom" />
|
||||
<!--文件名称-->
|
||||
<el-table-column
|
||||
prop="FileName"
|
||||
:label="$t('trials:trialDocument:trainRecord:table:name')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
>
|
||||
<el-table-column prop="FileName" :label="$t('trials:trialDocument:trainRecord:table:name')" show-overflow-tooltip
|
||||
sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<div
|
||||
v-if="
|
||||
scope.row.TrialFileRecord &&
|
||||
scope.row.TrialFileRecord.TrialFileTypeId
|
||||
"
|
||||
style="display: flex; align-items: center"
|
||||
>
|
||||
<div v-if="
|
||||
scope.row.TrialFileRecord &&
|
||||
scope.row.TrialFileRecord.TrialFileTypeId
|
||||
" style="display: flex; align-items: center">
|
||||
<span class="fileName">{{
|
||||
scope.row.TrialFileRecord.FileName
|
||||
}}</span>
|
||||
<div v-if="isManage && !viewStatus" class="fileBtnBox">
|
||||
<i
|
||||
class="el-icon-view"
|
||||
@click.stop="preview(scope.row.TrialFileRecord)"
|
||||
/>
|
||||
<i
|
||||
class="el-icon-download"
|
||||
v-if="hasDownLoad"
|
||||
@click.stop="downLoad(false, scope.row.TrialFileRecord, 'file')"
|
||||
/>
|
||||
<i
|
||||
class="el-icon-delete"
|
||||
v-if="hasDel"
|
||||
@click.stop="delFile(scope.row, 'Trial')"
|
||||
/>
|
||||
<i class="el-icon-view" @click.stop="preview(scope.row.TrialFileRecord)" />
|
||||
<i class="el-icon-download" v-if="hasDownLoad"
|
||||
@click.stop="downLoad(false, scope.row.TrialFileRecord, 'file')" />
|
||||
<i class="el-icon-delete" v-if="hasDel" @click.stop="delFile(scope.row, 'Trial')" />
|
||||
</div>
|
||||
</div>
|
||||
<i
|
||||
v-else-if="isManage && !viewStatus && hasEdit"
|
||||
class="el-icon-upload2"
|
||||
style="cursor: pointer; color: #409eff"
|
||||
@click.stop="upload(scope.row, 'Trial')"
|
||||
/>
|
||||
<i v-else-if="isManage && !viewStatus && hasEdit" class="el-icon-upload2"
|
||||
style="cursor: pointer; color: #409eff" @click.stop="upload(scope.row, 'Trial')" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<!--历史记录-->
|
||||
<el-table-column
|
||||
prop="HistoryFileRecord"
|
||||
:label="$t('trials:trialDocument:trainRecord:table:historyFileRecord')"
|
||||
show-overflow-tooltip
|
||||
v-if="isManage && !viewStatus"
|
||||
>
|
||||
<el-table-column prop="HistoryFileRecord" :label="$t('trials:trialDocument:trainRecord:table:historyFileRecord')"
|
||||
show-overflow-tooltip v-if="isManage && !viewStatus">
|
||||
<template slot-scope="scope">
|
||||
<div
|
||||
v-if="
|
||||
scope.row.HistoryFileRecord &&
|
||||
scope.row.HistoryFileRecord.TrialFileTypeId
|
||||
"
|
||||
style="display: flex; align-items: center"
|
||||
>
|
||||
<span class="fileName">{{
|
||||
scope.row.HistoryFileRecord.FileName
|
||||
}}</span>
|
||||
<div v-if="isManage && !viewStatus" class="fileBtnBox">
|
||||
<i
|
||||
class="el-icon-download"
|
||||
v-if="hasDownLoad"
|
||||
@click.stop="
|
||||
downLoad(false, scope.row.HistoryFileRecord, 'file')
|
||||
"
|
||||
/>
|
||||
<i
|
||||
class="el-icon-delete"
|
||||
v-if="hasDel"
|
||||
@click.stop="delFile(scope.row, 'History')"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<i
|
||||
v-else-if="isManage && !viewStatus"
|
||||
class="el-icon-upload2"
|
||||
style="cursor: pointer; color: #409eff"
|
||||
@click.stop="upload(scope.row, 'History')"
|
||||
/>
|
||||
<el-button type="text" @click.stop="openHistory(scope.row)">
|
||||
{{ scope.row.HistoryCount }}
|
||||
<i class="el-icon-upload2" />
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column
|
||||
prop="IsAuthorizedView"
|
||||
:label="$t('trials:trialDocument:trainRecord:table:isAuthorizedView')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
v-if="isManage && !viewStatus"
|
||||
>
|
||||
<el-table-column prop="IsAuthorizedView" :label="$t('trials:trialDocument:trainRecord:table:isAuthorizedView')"
|
||||
show-overflow-tooltip sortable="custom" v-if="isManage && !viewStatus">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
:disabled="!scope.row.TrianingDate"
|
||||
v-if="isManage && !viewStatus && hasEdit"
|
||||
v-model="scope.row.IsAuthorizedView"
|
||||
@change="(val) => auth(false, scope.row, val)"
|
||||
:active-value="true"
|
||||
:inactive-value="false"
|
||||
:active-text="$fd('YesOrNo', true)"
|
||||
:inactive-text="$fd('YesOrNo', false)"
|
||||
>
|
||||
<el-switch :disabled="!scope.row.TrianingDate" v-if="isManage && !viewStatus && hasEdit"
|
||||
v-model="scope.row.IsAuthorizedView" @change="(val) => auth(false, scope.row, val)" :active-value="true"
|
||||
:inactive-value="false" :active-text="$fd('YesOrNo', true)" :inactive-text="$fd('YesOrNo', false)">
|
||||
</el-switch>
|
||||
<span v-else>{{ $fd('YesOrNo', scope.row.IsAuthorizedView) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="UpdateTime"
|
||||
:label="$t('trials:trialDocument:trainRecord:table:updateTime')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
:label="$t('trials:trialDocument:trainRecord:table:createTime')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="UpdateTime" :label="$t('trials:trialDocument:trainRecord:table:updateTime')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<el-table-column prop="CreateTime" :label="$t('trials:trialDocument:trainRecord:table:createTime')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<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')"
|
||||
circle
|
||||
:disabled="
|
||||
!scope.row.TrialFileRecord || !scope.row.TrialFileRecord.FilePath
|
||||
"
|
||||
@click.stop="preview(scope.row.TrialFileRecord)"
|
||||
/>
|
||||
<el-button
|
||||
v-if="hasEdit && isManage && !viewStatus"
|
||||
icon="el-icon-edit-outline"
|
||||
:title="$t('common:button:edit')"
|
||||
circle
|
||||
@click.stop="handleEdit(scope.row)"
|
||||
/>
|
||||
<el-button
|
||||
v-if="hasDownLoad && isManage && !viewStatus"
|
||||
icon="el-icon-download"
|
||||
:title="
|
||||
$t('trials:trialDocument:trainRecord:button:downLoadFile')
|
||||
"
|
||||
circle
|
||||
:disabled="
|
||||
!scope.row.TrialFileRecord || !scope.row.TrialFileRecord.FilePath
|
||||
"
|
||||
@click.stop="downLoad(false, scope.row.TrialFileRecord, 'file')"
|
||||
/>
|
||||
<el-button
|
||||
v-if="hasDel && isManage && !viewStatus"
|
||||
icon="el-icon-delete"
|
||||
:title="$t('trials:trialDocument:trainRecord:button:delete')"
|
||||
circle
|
||||
@click.stop="handleDel(scope.row)"
|
||||
/>
|
||||
<el-button icon="el-icon-view" :title="$t('common:button:view')" circle :disabled="!scope.row.TrialFileRecord || !scope.row.TrialFileRecord.FilePath
|
||||
" @click.stop="preview(scope.row.TrialFileRecord)" />
|
||||
<el-button v-if="hasEdit && isManage && !viewStatus" icon="el-icon-edit-outline"
|
||||
:title="$t('common:button:edit')" circle @click.stop="handleEdit(scope.row)" />
|
||||
<el-button v-if="hasDownLoad && isManage && !viewStatus" icon="el-icon-download" :title="$t('trials:trialDocument:trainRecord:button:downLoadFile')
|
||||
" circle :disabled="!scope.row.TrialFileRecord || !scope.row.TrialFileRecord.FilePath
|
||||
" @click.stop="downLoad(false, scope.row.TrialFileRecord, 'file')" />
|
||||
<el-button v-if="hasDel && isManage && !viewStatus" icon="el-icon-delete"
|
||||
:title="$t('trials:trialDocument:trainRecord:button:delete')" circle @click.stop="handleDel(scope.row)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination
|
||||
class="page"
|
||||
:total="total"
|
||||
:page.sync="searchData.PageIndex"
|
||||
:limit.sync="searchData.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
<upload-files
|
||||
:config="config"
|
||||
:faccept="faccept"
|
||||
:uploadPath="uploadPath"
|
||||
:limitLength="limitLength"
|
||||
v-if="config.visible"
|
||||
@close="close"
|
||||
@uplaodFile="uplaodFile"
|
||||
/>
|
||||
<trainRecord-form
|
||||
:ArchiveTypeEnum="ArchiveTypeEnum"
|
||||
:rowData="rowData"
|
||||
:config="update_config"
|
||||
:data="selectData"
|
||||
v-if="update_config.visible"
|
||||
@close="updateClose"
|
||||
@getList="getList"
|
||||
/>
|
||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
|
||||
@pagination="getList" />
|
||||
<upload-files :config="config" :faccept="faccept" :uploadPath="uploadPath" :limitLength="limitLength"
|
||||
v-if="config.visible" @close="close" @uplaodFile="uplaodFile" />
|
||||
<trainRecord-form :ArchiveTypeEnum="ArchiveTypeEnum" :rowData="rowData" :config="update_config" :data="selectData"
|
||||
v-if="update_config.visible" @close="updateClose" @getList="getList" />
|
||||
<history-file-list :config="file_config" :rowData="fileData" :uploadPath="uploadPath" @getList="getList" />
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
<script>
|
||||
import {
|
||||
addOrUpdateTrialFileType,
|
||||
getTrialTrianingRecordList,
|
||||
|
@ -438,6 +195,7 @@ import Pagination from '@/components/Pagination'
|
|||
import BoxContent from '@/components/BoxContent'
|
||||
import uploadFiles from '../uploadFiles.vue'
|
||||
import trainRecordForm from './form.vue'
|
||||
import historyFileList from '../historyFileList.vue'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
IsAuthorizedView: null,
|
||||
|
@ -454,7 +212,7 @@ const searchDataDefault = () => {
|
|||
}
|
||||
export default {
|
||||
name: 'trainRecord',
|
||||
components: { BoxContent, Pagination, uploadFiles, trainRecordForm },
|
||||
components: { BoxContent, Pagination, uploadFiles, trainRecordForm, historyFileList },
|
||||
props: {
|
||||
viewStatus: {
|
||||
type: Boolean,
|
||||
|
@ -509,9 +267,24 @@ export default {
|
|||
upload: null,
|
||||
},
|
||||
DATA: {},
|
||||
|
||||
fileData: {},
|
||||
file_config: {
|
||||
visible: false,
|
||||
title: this.$t('trials:trialDocument:historyFileList:title'),
|
||||
width: '800px',
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openHistory(row) {
|
||||
this.fileData = {
|
||||
Name: row.TrialFileRecord ? row.TrialFileRecord.FileName : '',
|
||||
Id: row.Id,
|
||||
TrialFileTypeId: this.rowData.Id
|
||||
}
|
||||
this.file_config.visible = true
|
||||
},
|
||||
// 新增列表数据
|
||||
async uplaodFile(list) {
|
||||
console.log(list, 'list')
|
||||
|
@ -870,7 +643,7 @@ export default {
|
|||
this.DATA = Object.assign({}, this.rowData)
|
||||
},
|
||||
immediate: true,
|
||||
deep:true
|
||||
deep: true
|
||||
},
|
||||
},
|
||||
created() {
|
||||
|
@ -918,9 +691,8 @@ export default {
|
|||
])
|
||||
},
|
||||
TITLE() {
|
||||
return `${this.$fd('ArchiveType', this.ArchiveTypeEnum)} — ${
|
||||
this.isEN ? this.rowData.Name : this.rowData.NameCN
|
||||
}`
|
||||
return `${this.$fd('ArchiveType', this.ArchiveTypeEnum)} — ${this.isEN ? this.rowData.Name : this.rowData.NameCN
|
||||
}`
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -931,21 +703,27 @@ export default {
|
|||
font-weight: bold;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.fileName {
|
||||
display: inline-block;
|
||||
max-width: calc(100% - 60px);
|
||||
white-space: nowrap; /* 文本不换行 */
|
||||
overflow: hidden; /* 超出部分隐藏 */
|
||||
white-space: nowrap;
|
||||
/* 文本不换行 */
|
||||
overflow: hidden;
|
||||
/* 超出部分隐藏 */
|
||||
text-overflow: ellipsis;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
.fileBtnBox {
|
||||
display: inline-block;
|
||||
width: 50px;
|
||||
|
||||
i {
|
||||
cursor: pointer;
|
||||
color: #409eff;
|
||||
margin-right: 3px;
|
||||
|
||||
&:last-child {
|
||||
margin: 0;
|
||||
}
|
||||
|
|
|
@ -5,45 +5,20 @@
|
|||
<el-form :inline="true">
|
||||
<!-- 中心编号 -->
|
||||
<el-form-item :label="$t('trials:uploadMonitor: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-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-select>
|
||||
</el-form-item>
|
||||
<!-- 受试者编号 -->
|
||||
<el-form-item :label="$t('trials:uploadMonitor:table:subjectId')">
|
||||
<el-input
|
||||
v-model="searchData.SubjectInfo"
|
||||
style="width: 120px"
|
||||
clearable
|
||||
/>
|
||||
<el-input v-model="searchData.SubjectInfo" style="width: 120px" clearable />
|
||||
</el-form-item>
|
||||
<!-- 访视名称 -->
|
||||
<el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:uploadMonitor:table:visitName')"
|
||||
>
|
||||
<el-select
|
||||
v-model="searchData.VisitPlanArray"
|
||||
style="width: 140px"
|
||||
clearable
|
||||
multiple
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) of visitPlanOptions"
|
||||
:key="index"
|
||||
:label="item.VisitName"
|
||||
:value="item.VisitNum"
|
||||
>
|
||||
<el-form-item class="my_multiple" :label="$t('trials:uploadMonitor:table:visitName')">
|
||||
<el-select v-model="searchData.VisitPlanArray" style="width: 140px" clearable multiple>
|
||||
<el-option v-for="(item, index) of visitPlanOptions" :key="index" :label="item.VisitName"
|
||||
:value="item.VisitNum">
|
||||
<span style="float: left">{{ item.VisitName }}</span>
|
||||
</el-option>
|
||||
<el-option key="Other" label="Out of Plan" value="1.11" />
|
||||
|
@ -54,50 +29,25 @@
|
|||
<el-input v-model="searchData.StudyCode" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('trials:uploadMonitor:table:imageType')">
|
||||
<el-select
|
||||
v-model="searchData.IsDicom"
|
||||
style="width: 120px"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item of $d.IsDicom"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
:key="`RoleName${item.value}`"
|
||||
/>
|
||||
<el-select v-model="searchData.IsDicom" style="width: 120px" clearable>
|
||||
<el-option v-for="item of $d.IsDicom" :label="item.label" :value="item.value"
|
||||
:key="`RoleName${item.value}`" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('trials:uploadMonitor:table:uploader')">
|
||||
<el-input
|
||||
v-model="searchData.Uploader"
|
||||
style="width: 120px"
|
||||
clearable
|
||||
/>
|
||||
<el-input v-model="searchData.Uploader" style="width: 120px" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('trials:uploadMonitor:table:uploadStatus')">
|
||||
<el-select
|
||||
v-model="searchData.IsSuccess"
|
||||
style="width: 120px"
|
||||
clearable
|
||||
>
|
||||
<el-option
|
||||
v-for="item of $d.YesOrNo"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
:key="`RoleName${item.value}`"
|
||||
/>
|
||||
<el-select v-model="searchData.IsSuccess" style="width: 120px" clearable>
|
||||
<el-option v-for="item of $d.YesOrNo" :label="item.label" :value="item.value"
|
||||
:key="`RoleName${item.value}`" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('trials:uploadMonitor:table:uploadTime')">
|
||||
<el-date-picker
|
||||
v-model="datetimerange"
|
||||
type="datetimerange"
|
||||
:default-time="['00:00:00', '23:59:59']"
|
||||
<el-date-picker v-model="datetimerange" type="datetimerange" :default-time="['00:00:00', '23:59:59']"
|
||||
:start-placeholder="$t('trials:loginLog:table:beginTime')"
|
||||
:end-placeholder="$t('trials:loginLog:table:endTime')"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
@change="handleDatetimeChange"
|
||||
/>
|
||||
:end-placeholder="$t('trials:loginLog:table:endTime')" value-format="yyyy-MM-dd HH:mm:ss"
|
||||
@change="handleDatetimeChange" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<!-- 查询 -->
|
||||
|
@ -105,234 +55,119 @@
|
|||
{{ $t('common:button:search') }}
|
||||
</el-button>
|
||||
<!-- 重置 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
||||
{{ $t('common:button:reset') }}
|
||||
</el-button>
|
||||
<!--导出-->
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-download"
|
||||
@click="handleExport"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-download" @click="handleExport">
|
||||
{{ $t('common:button:export') }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
<template slot="main-container">
|
||||
<el-table
|
||||
v-adaptive="{ bottomOffset: 60 }"
|
||||
v-loading="loading"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
@sort-change="handleSortByColumn"
|
||||
:default-sort="{ prop: 'ArchiveFinishedTime', order: 'descending' }"
|
||||
>
|
||||
<el-table v-adaptive="{ bottomOffset: 60 }" v-loading="loading" :data="list" stripe height="100"
|
||||
@sort-change="handleSortByColumn" :default-sort="{ prop: 'ArchiveFinishedTime', order: 'descending' }">
|
||||
<el-table-column type="index" width="40" align="left" />
|
||||
<!-- 中心编号 -->
|
||||
<el-table-column
|
||||
prop="TrialSiteCode"
|
||||
min-width="100"
|
||||
:label="$t('trials:uploadMonitor:table:siteId')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="TrialSiteCode" min-width="100" :label="$t('trials:uploadMonitor:table:siteId')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<!-- 受试者编号 -->
|
||||
<el-table-column
|
||||
prop="SubjectCode"
|
||||
min-width="130"
|
||||
:label="$t('trials:uploadMonitor:table:subjectId')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="SubjectCode" min-width="130" :label="$t('trials:uploadMonitor:table:subjectId')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<!-- 访视名 -->
|
||||
<el-table-column
|
||||
prop="VisitName"
|
||||
min-width="130"
|
||||
:label="$t('trials:uploadMonitor:table:visitName')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="VisitName" min-width="130" :label="$t('trials:uploadMonitor:table:visitName')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<!-- 检查编号 -->
|
||||
<el-table-column
|
||||
prop="StudyCode"
|
||||
min-width="130"
|
||||
:label="$t('trials:uploadMonitor:table:studyId')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="StudyCode" min-width="130" :label="$t('trials:uploadMonitor:table:studyId')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<!-- 影像类型 -->
|
||||
<el-table-column
|
||||
prop="IsDicom"
|
||||
min-width="130"
|
||||
:label="$t('trials:uploadMonitor:table:imageType')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
>
|
||||
<el-table-column prop="IsDicom" min-width="130" :label="$t('trials:uploadMonitor:table:imageType')"
|
||||
show-overflow-tooltip sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('IsDicom', scope.row.IsDicom) }}
|
||||
<el-tag type="primary">{{ $fd('IsDicom', scope.row.IsDicom) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 上传人 -->
|
||||
<el-table-column
|
||||
prop="Uploader"
|
||||
min-width="130"
|
||||
:label="$t('trials:uploadMonitor:table:uploader')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="Uploader" min-width="130" :label="$t('trials:uploadMonitor:table:uploader')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<!-- IP -->
|
||||
<el-table-column
|
||||
prop="IP"
|
||||
min-width="100"
|
||||
:label="$t('trials:uploadMonitor:table:ip')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="IP" min-width="100" :label="$t('trials:uploadMonitor:table:ip')" show-overflow-tooltip
|
||||
sortable="custom" />
|
||||
<!-- 文件数 -->
|
||||
<el-table-column
|
||||
prop="FileCount"
|
||||
min-width="120"
|
||||
:label="$t('trials:uploadMonitor:table:fileCount')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="FileCount" min-width="120" :label="$t('trials:uploadMonitor:table:fileCount')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<!-- 文件大小 -->
|
||||
<el-table-column
|
||||
prop="FileSize"
|
||||
min-width="130"
|
||||
:label="$t('trials:uploadMonitor:table:fileSize')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
>
|
||||
<el-table-column prop="FileSize" min-width="130" :label="$t('trials:uploadMonitor:table:fileSize')"
|
||||
show-overflow-tooltip sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
{{ fileSizeFormatter(scope.row.FileSize) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 是否有重复文件 -->
|
||||
<el-table-column
|
||||
prop="IsDicomReUpload"
|
||||
min-width="150"
|
||||
:label="$t('trials:uploadMonitor:table:isRepetition')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
>
|
||||
<el-table-column prop="IsDicomReUpload" min-width="150" :label="$t('trials:uploadMonitor:table:isRepetition')"
|
||||
show-overflow-tooltip sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('YesOrNo', scope.row.IsDicomReUpload) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 是否上传成功 -->
|
||||
<el-table-column
|
||||
prop="IsSuccess"
|
||||
min-width="150"
|
||||
:label="$t('trials:uploadMonitor:table:uploadStatus')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
>
|
||||
<el-table-column prop="IsSuccess" min-width="150" :label="$t('trials:uploadMonitor:table:uploadStatus')"
|
||||
show-overflow-tooltip sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.IsSuccess" type="primary">
|
||||
{{ $fd('YesOrNo', scope.row.IsSuccess) }}</el-tag
|
||||
>
|
||||
{{ $fd('YesOrNo', scope.row.IsSuccess) }}</el-tag>
|
||||
<el-tag v-else type="danger">
|
||||
{{ $fd('YesOrNo', scope.row.IsSuccess) }}</el-tag
|
||||
>
|
||||
{{ $fd('YesOrNo', scope.row.IsSuccess) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 开始时间 -->
|
||||
<el-table-column
|
||||
prop="UploadStartTime"
|
||||
min-width="140"
|
||||
:label="$t('trials:uploadMonitor:table:beginTime')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
>
|
||||
<el-table-column prop="UploadStartTime" min-width="140" :label="$t('trials:uploadMonitor:table:beginTime')"
|
||||
show-overflow-tooltip sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.UploadStartTimeStr }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 结束时间 -->
|
||||
<el-table-column
|
||||
prop="ArchiveFinishedTime"
|
||||
min-width="140"
|
||||
:label="$t('trials:uploadMonitor:table:endTime')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
>
|
||||
<el-table-column prop="ArchiveFinishedTime" min-width="140" :label="$t('trials:uploadMonitor:table:endTime')"
|
||||
show-overflow-tooltip sortable="custom">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.ArchiveFinishedTime }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 总共用时 -->
|
||||
<el-table-column
|
||||
prop="TotalMillisecondsInterval"
|
||||
min-width="100"
|
||||
:label="$t('trials:uploadMonitor:table:totalTime')"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<el-table-column prop="TotalMillisecondsInterval" min-width="100"
|
||||
:label="$t('trials:uploadMonitor:table:totalTime')" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.TimeInterval }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:label="$t('common:action:action')"
|
||||
width="80"
|
||||
fixed="right"
|
||||
>
|
||||
<el-table-column :label="$t('common:action:action')" width="80" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<!-- 查看 -->
|
||||
<el-button
|
||||
circle
|
||||
:title="$t('trials:readTask:button:view')"
|
||||
:disabled="!scope.row.RecordPath"
|
||||
icon="el-icon-view"
|
||||
@click="handleLook(scope.row)"
|
||||
/>
|
||||
<el-button circle :title="$t('trials:readTask:button:view')" :disabled="!scope.row.RecordPath"
|
||||
icon="el-icon-view" @click="handleLook(scope.row)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!-- 分页组件 -->
|
||||
<pagination
|
||||
class="page"
|
||||
:total="total"
|
||||
:page.sync="searchData.PageIndex"
|
||||
:limit.sync="searchData.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize"
|
||||
@pagination="getList" />
|
||||
</template>
|
||||
<el-dialog
|
||||
v-if="lookVisible"
|
||||
:title="$t('trials:uploadMonitor:dagTitle:look')"
|
||||
:visible.sync="lookVisible"
|
||||
width="800px"
|
||||
append-to-body
|
||||
:close-on-click-modal="false"
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<el-dialog v-if="lookVisible" :title="$t('trials:uploadMonitor:dagTitle:look')" :visible.sync="lookVisible"
|
||||
width="800px" append-to-body :close-on-click-modal="false" custom-class="base-dialog-wrapper">
|
||||
<div style="max-height: 500px; overflow-y: auto; padding: 0 20px">
|
||||
<div
|
||||
style="
|
||||
<div style="
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
margin-bottom: 20px;
|
||||
"
|
||||
>
|
||||
<span
|
||||
>{{ $t('trials:uploadDicomList:table:FailedNumber') }}:
|
||||
{{ lookText.Failed.length }}</span
|
||||
>
|
||||
<span
|
||||
>{{ $t('trials:uploadDicomList:table:ExistedNumber') }}:
|
||||
{{ lookText.Existed.length }}</span
|
||||
>
|
||||
<span
|
||||
>{{ $t('trials:uploadDicomList:table:UploadedNumber') }}:
|
||||
{{ lookText.Uploaded.length }}</span
|
||||
>
|
||||
">
|
||||
<span>{{ $t('trials:uploadDicomList:table:FailedNumber') }}:
|
||||
{{ lookText.Failed.length }}</span>
|
||||
<span>{{ $t('trials:uploadDicomList:table:ExistedNumber') }}:
|
||||
{{ lookText.Existed.length }}</span>
|
||||
<span>{{ $t('trials:uploadDicomList:table:UploadedNumber') }}:
|
||||
{{ lookText.Uploaded.length }}</span>
|
||||
</div>
|
||||
<div style="margin-bottom: 10px; font-size: 12px">
|
||||
<div style="font-size: 14px; margin-bottom: 5px">
|
||||
|
@ -379,6 +214,7 @@ import { getStudyUploadMonitor_Export } from '@/api/export'
|
|||
import Pagination from '@/components/Pagination'
|
||||
import BaseContainer from '@/components/BaseContainer'
|
||||
import BaseModel from '@/components/BaseModel'
|
||||
import { changeURLStatic } from '@/utils/history.js'
|
||||
import axios from 'axios'
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
|
@ -421,10 +257,26 @@ export default {
|
|||
if (this.$route.query.studyCode) {
|
||||
this.searchData.StudyCode = this.$route.query.studyCode
|
||||
}
|
||||
if (this.$route.query.siteId) {
|
||||
this.searchData.TrialSiteId = this.$route.query.siteId
|
||||
}
|
||||
if (this.$route.query.subjectCode) {
|
||||
this.searchData.SubjectInfo = this.$route.query.subjectCode
|
||||
}
|
||||
if (this.$route.query.visitNum || this.$route.query.visitNum === 0) {
|
||||
this.searchData.VisitPlanArray = [Number(this.$route.query.visitNum)]
|
||||
}
|
||||
this.getList()
|
||||
this.getVisitPlanOptions()
|
||||
this.clearnUrl()
|
||||
},
|
||||
methods: {
|
||||
clearnUrl() {
|
||||
changeURLStatic('siteId', '')
|
||||
changeURLStatic('subjectCode', '')
|
||||
changeURLStatic('visitNum', '')
|
||||
|
||||
},
|
||||
async handleLook(row) {
|
||||
this.lookVisible = true
|
||||
var htmlUrl = this.OSSclientConfig.basePath + row.RecordPath
|
||||
|
@ -482,8 +334,8 @@ export default {
|
|||
},
|
||||
handleExport() {
|
||||
getStudyUploadMonitor_Export(this.searchData)
|
||||
.then((res) => {})
|
||||
.catch(() => {})
|
||||
.then((res) => { })
|
||||
.catch(() => { })
|
||||
},
|
||||
handleDatetimeChange(val) {
|
||||
if (val) {
|
||||
|
|
Loading…
Reference in New Issue