10 Commits

Author SHA1 Message Date
wangxiaoshuang 3e680d0033 临床数据上传依赖,排序改为枚举值
continuous-integration/drone/push Build is passing
2025-02-11 14:39:01 +08:00
wangxiaoshuang af343d43d8 邮件模板预览样式调整
continuous-integration/drone/push Build is passing
2025-02-11 14:17:41 +08:00
wangxiaoshuang 4b9216229c 国际化编辑新增迭代版本、状态
continuous-integration/drone/push Build is passing
2025-02-11 13:13:39 +08:00
wangxiaoshuang 2952762ce7 切换角色、项目返回时清除项目路由缓存
continuous-integration/drone/push Build is passing
2025-02-10 10:42:10 +08:00
caiyiling 361aed4a0c dicom文件上传批量验证提示更改
continuous-integration/drone/push Build is passing
2025-02-10 09:22:44 +08:00
caiyiling 19b419c29e 一致性核查更改
continuous-integration/drone/push Build is passing
2025-02-08 15:06:11 +08:00
caiyiling 7e9a9b62f6 样式调整
continuous-integration/drone/push Build is passing
2025-02-08 14:10:00 +08:00
caiyiling 3921f369c3 阅片单元样式调整
continuous-integration/drone/push Build is passing
2025-02-08 13:07:46 +08:00
caiyiling 0ffe7ff1a7 Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is passing
2025-02-08 11:31:23 +08:00
caiyiling 5ec969c2f9 临床数据补充英文模板及界面样式调整 2025-02-08 11:30:07 +08:00
16 changed files with 222 additions and 40 deletions
+8 -6
View File
@@ -40,7 +40,7 @@
<el-form-item :label="$t('il8n:search:keyword')">
<el-input v-model="key" @input="keyChange" />
</el-form-item>
<el-form-item :label="$t('il8n:search:state')" v-if="il8nExternal">
<el-form-item :label="$t('il8n:search:state')">
<el-select
v-model="State"
clearable
@@ -105,11 +105,7 @@
></el-input>
</template>
</el-table-column>
<el-table-column
prop="ValueCN"
:label="$t('il8n:table:state')"
v-if="il8nExternal"
>
<el-table-column prop="ValueCN" :label="$t('il8n:table:state')">
<template slot-scope="scope">
<el-select
v-model="scope.row.State"
@@ -126,6 +122,8 @@
</el-select>
</template>
</el-table-column>
<el-table-column prop="Version" :label="$t('il8n:table:Version')">
</el-table-column>
</el-table>
<div style="text-align: right; padding-top: 10px; padding-right: 10px">
<el-button size="mini" @click="drawer = false">取消 </el-button>
@@ -246,6 +244,7 @@ export default {
openI18n(ARRAY) {
this.tableData = []
this.il8nExternal = false
this.State = null
this.key = null
this.drawer = true
let arr = []
@@ -266,6 +265,7 @@ export default {
Value: item.Value,
ValueCN: item.ValueCN,
State: item.State,
Version: item.Version,
}
})
this.tableData = Object.assign([], tableData)
@@ -296,6 +296,8 @@ export default {
Description: null,
Value: null,
ValueCN: null,
State: 0,
Version: this.$version.Version,
})
}
})
+1
View File
@@ -149,6 +149,7 @@ export default {
return isShow
},
goBack() {
zzSessionStorage.removeItem('lastWorkbench')
this.$router.push({ path: '/trials/trials-list' })
},
selectTrials(v) {
+1
View File
@@ -92,6 +92,7 @@ export default {
try {
if (!this.form.userRoleId)
return this.$message.warning(this.$t('toggleRole:ruleMessage:select'))
zzSessionStorage.removeItem('lastWorkbench')
this.$emit('save', this.form.userRoleId)
} catch (err) {
console.log(err)
@@ -109,6 +109,15 @@
{{ scope.row.FileName }}
</template>
</el-table-column>
<el-table-column
prop="EnFileName"
label="模板英文名称"
show-overflow-tooltip
>
<template slot-scope="scope">
{{ scope.row.EnFileName }}
</template>
</el-table-column>
<el-table-column
prop="IsEnable"
label="状态"
@@ -136,10 +145,20 @@
问题配置
</el-button>
<el-button
v-if="$i18n.locale === 'zh'"
type="primary"
size="mini"
:disabled="!scope.row.FileName"
@click="handleDownloadTpl(scope.row)"
@click="handleDownloadTpl(scope.row.Path)"
>
下载
</el-button>
<el-button
v-else
type="primary"
size="mini"
:disabled="!scope.row.EnFileName"
@click="handleDownloadTpl(scope.row.EnPath)"
>
下载
</el-button>
@@ -258,8 +277,8 @@ export default {
}).catch(() => { this.loading = false })
})
},
handleDownloadTpl(row) {
window.open(this.OSSclientConfig.basePath + row.Path, '_blank')
handleDownloadTpl(path) {
window.open(this.OSSclientConfig.basePath + path, '_blank')
},
// 排序
handleSortByColumn(column) {
@@ -113,6 +113,34 @@
</div>
</el-form-item>
<el-form-item v-if="form.ClinicalUploadType === 1" label="英文模板: ">
<div class="upload-container">
<el-upload
class="upload-demo"
action
accept=".doc,.docx"
:before-upload="beforeUploadEnFile"
:http-request="handleUploadEnFile"
:on-preview="handlePreview"
:on-remove="handleRemoveEnFile"
:show-file-list="true"
:file-list="enFileList"
:limit="1"
:on-exceed="handleExceed"
:disabled="form.Type === ''"
>
<el-button size="small" type="primary">选择</el-button>
<span
slot="tip"
style="margin-left:10px;"
class="el-upload__tip"
>
(必须是doc/docx格式)
</span>
</el-upload>
</div>
</el-form-item>
<el-form-item v-if="form.Id !== ''" label="是否启用">
<el-switch v-model="form.IsEnable" />
</el-form-item>
@@ -160,6 +188,8 @@ export default {
UploadRole: null,
FileName: '',
Path: '',
EnFileName: '',
EnPath: '',
IsEnable: true,
CriterionEnumList: []
},
@@ -173,6 +203,7 @@ export default {
loading: false,
btnLoading: false,
fileList: [],
enFileList: [],
systemCriterionSelectList: []
}
},
@@ -195,6 +226,14 @@ export default {
}
]
}
if (this.data.EnPath) {
this.enFileList = [
{
name: this.data.EnFileName,
path: this.data.EnPath
}
]
}
}
},
save() {
@@ -249,6 +288,32 @@ export default {
handleExceed(files, fileList) {
this.$message.warning(`只允许上传一个文件`)
},
beforeUploadEnFile(file) {
// 检测文件类型是否符合要求
if (this.checkFileSuffix(file.name)) {
this.enFileList = []
return true
} else {
this.$alert('(必须是doc/docx格式)')
return false
}
},
async handleUploadEnFile(param) {
this.loading = true
var fileBlob = await this.fileToBlob(param.file)
const res = await this.OSSclient.put(`/System/ClinicalDataTemplate/${param.file.name}`, fileBlob)
this.form.EnFileName = res.name
this.form.EnPath = this.$getObjectName(res.url)
let file = { name: res.name, path: this.$getObjectName(res.url), url:this.$getObjectName(res.url) }
this.enFileList.push(file)
this.loading = false
},
handleRemoveEnFile() {
this.enFileList = []
this.form.EnPath = ''
this.form.EnFileName = ''
},
checkFileSuffix(fileName) {
var typeArr = ['doc', 'docx']
var extendName = fileName.substring(fileName.lastIndexOf('.') + 1).toLocaleLowerCase()
@@ -450,11 +450,11 @@
flex-wrap: wrap;
"
>
<div>
<div style="min-width: 50%">
<h3>邮件内容模版CN</h3>
<div v-html="previewHTML"></div>
</div>
<div>
<div style="min-width: 50%">
<h3>邮件内容模版EN</h3>
<div v-html="previewHTMLEN"></div>
</div>
@@ -231,6 +231,7 @@ export default {
this.$store
.dispatch('user/loginByRole', { userRoleId: this.userRoleId })
.then((res) => {
zzSessionStorage.removeItem('lastWorkbench')
window.location.reload()
})
.catch(() => {
@@ -194,6 +194,7 @@
</el-table-column>
<!-- DICOM AE -->
<el-table-column
v-if="isPACSConnect"
prop="CallingAEList"
:label="$t('trials:sitesList:table:AE')"
show-overflow-tooltip
@@ -254,6 +255,7 @@
@click="handleEdit(scope.row)"
/>
<el-button
v-if="isPACSConnect"
circle
:title="$t('common:button:config')"
icon="el-icon-setting"
@@ -635,6 +637,7 @@ export default {
},
trialId: '',
TrialSiteSelectList: [],
isPACSConnect: false
}
},
mounted() {
@@ -709,6 +712,7 @@ export default {
this.listLoading = false
this.list = res.Result.CurrentPageData
this.total = res.Result.TotalCount
this.isPACSConnect = res.OtherInfo.IsPACSConnectAndIsTrialPACSConfirmed
})
.catch(() => {
this.listLoading = false
@@ -23,11 +23,11 @@
</el-radio>
</el-radio-group>
</el-form-item>
<el-collapse v-model="activeNames">
<el-collapse v-model="activeNames" style="border-top:none;">
<el-collapse-item
v-for="(item, index) of QuestionList"
:key="item.ReadingQuestionTrialId"
style="position: relative"
style="position: relative;padding:0 10px;"
:name="item.ReadingQuestionTrialId"
>
<div slot="title">
@@ -145,6 +145,37 @@
</el-upload>
</div>
</el-form-item>
<!-- 英文模板 -->
<el-form-item
v-if="form.ClinicalUploadType === 1"
:label="$t('trials:processCfg:title:enModule')"
>
<div class="upload-container">
<el-upload
class="upload-demo"
action
accept=".doc,.docx"
:before-upload="beforeUploadEnFile"
:http-request="handleUploadEnFile"
:on-preview="handlePreview"
:on-remove="handleRemoveEnFile"
:show-file-list="true"
:file-list="enFileList"
:limit="1"
:on-exceed="handleExceed"
:disabled="form.Type === ''"
>
<!-- 选择 -->
<el-button size="small" type="primary">{{
$t('trials:processCfg:button:select')
}}</el-button>
<span slot="tip" style="margin-left: 10px" class="el-upload__tip">
<!-- (必须是doc/docx格式) -->
{{ $t('system:tip:file:docx') }}
</span>
</el-upload>
</div>
</el-form-item>
</div>
<div class="base-dialog-footer" style="text-align: right; margin-top: 10px">
<el-form-item>
@@ -204,6 +235,8 @@ export default {
UploadRole: null,
FileName: '',
Path: '',
EnFileName: '',
EnPath: '',
TrialCriterionIdList: [],
},
rules: {
@@ -253,6 +286,7 @@ export default {
loading: false,
btnLoading: false,
fileList: [],
enFileList: [],
trialCriterionSelectList: [],
criterionList: [],
}
@@ -287,13 +321,22 @@ export default {
this.form[k] = this.data[k]
}
}
if (!this.data.Path) return
this.fileList = [
{
name: this.data.FileName,
path: this.data.Path,
},
]
if (this.data.Path) {
this.fileList = [
{
name: this.data.FileName,
path: this.data.Path,
},
]
}
if (this.data.EnPath) {
this.enFileList = [
{
name: this.data.EnFileName,
path: this.data.EnPath,
},
]
}
}
},
save() {
@@ -356,6 +399,40 @@ export default {
handleExceed(files, fileList) {
this.$message.warning(this.$t('trials:processCfg:title:onlyOneFile')) // `只允许上传一个文件`
},
async handleUploadEnFile(param) {
this.loading = true
const file = await this.fileToBlob(param.file)
const res = await this.OSSclient.put(
`/TrialConfig/${this.trialId}/ClinicalData/${param.file.name}`,
file
)
// console.log(res)
const file1 = {
name: param.file.name,
path: this.form.Path,
url: this.$getObjectName(res.url),
}
this.enFileList.push(file1)
this.form.EnPath = this.$getObjectName(res.url)
this.form.EnFileName = param.file.name
this.loading = false
},
beforeUploadEnFile(file) {
// 检测文件类型是否符合要求
if (this.checkFileSuffix(file.name)) {
this.enFileList = []
return true
} else {
this.$alert(this.$t('trials:processCfg:title:docFormat')) // '(必须是doc/docx格式)'
return false
}
},
handleRemoveEnFile() {
this.enFileList = []
this.form.EnPath = ''
this.form.EnFileName = ''
},
checkFileSuffix(fileName) {
var typeArr = ['doc', 'docx']
var extendName = fileName
@@ -769,11 +769,18 @@
<template slot-scope="scope">
<!-- 下载 -->
<el-button
v-if="scope.row.FileName && scope.row.ClinicalUploadType"
v-if="scope.row.FileName && scope.row.ClinicalUploadType && $i18n.locale === 'zh'"
circle
:title="$t('common:button:download')"
icon="el-icon-download"
@click="handleDownloadTpl(scope.row)"
@click="handleDownloadTpl(scope.row.Path)"
>
</el-button>
<el-button
v-if="scope.row.FileName && scope.row.ClinicalUploadType && $i18n.locale === 'en'"
circle
icon="el-icon-download"
@click="handleDownloadTpl(scope.row.EnPath)"
>
</el-button>
<el-button
@@ -1713,8 +1720,8 @@ export default {
})
})
},
handleDownloadTpl(row) {
window.open(this.OSSclientConfig.basePath + row.Path)
handleDownloadTpl(path) {
window.open(this.OSSclientConfig.basePath + path)
// this.listLoading = true
// DownloadTrialClinicalFile(row.Id).then(data => {
// this.listLoading = false
@@ -5,7 +5,6 @@
:model="form"
size="small"
:rules="rules"
label-width="110px"
:inline="true"
>
<div class="base-dialog-body">
@@ -39,7 +38,6 @@
</el-col>
</el-form-item>
<!-- 数据内容:label="$t('trials:readingPeriod:cd:form:data')" -->
<el-form-item>
<!-- 多文件上传 -->
<form id="inputForm" ref="uploadForm">
<div class="form-group">
@@ -52,7 +50,7 @@
display: inline-block;
"
>
<el-button type="primary" style="width: 56px" size="small">
<el-button type="primary" size="small">
{{ $t('trials:uploadClinicalData:button:selectFile') }}
</el-button>
<input
@@ -83,7 +81,7 @@
:data="fileList"
class="dicomFiles-table"
height="300"
style="width: 100%"
style="width: 100%;margin-top:5px;"
border
>
<el-table-column type="index" width="40" />
@@ -108,7 +106,7 @@
}}</span>
</template>
</el-table-column>
<el-table-column :label="$t('common:action:action')" width="100">
<el-table-column :label="$t('common:action:action')">
<template slot-scope="scope">
<!-- 删除 -->
<el-button
@@ -128,7 +126,6 @@
</template>
</el-table-column>
</el-table>
</el-form-item>
</div>
<div class="base-dialog-footer" style="text-align: right; margin-top: 10px">
<el-form-item>
@@ -93,11 +93,13 @@
<el-table-column
prop="ClinicalDataSetName"
:label="$t('trials:readingPeriod:cd:table:clinicalDataName')"
min-width="100"
/>
<el-table-column
prop="UploadRole"
:label="$t('trials:studyList:table:uploader')"
show-overflow-tooltip
min-width="100"
>
<template slot-scope="scope">
{{ $fd("ClinicalDataUploadRole", scope.row.UploadRole) }}
@@ -107,6 +109,7 @@
<el-table-column
prop="ClinicalDataLevel"
:label="$t('trials:readingPeriod:cd:table:dataLevel')"
min-width="100"
>
<template slot-scope="scope">
{{ $fd("ClinicalLevel", scope.row.ClinicalDataLevel) }}
@@ -116,6 +119,7 @@
<el-table-column
prop="ClinicalUploadType"
:label="$t('trials:readingPeriod:cd:table:transferType')"
min-width="120"
>
<template slot-scope="scope">
{{ $fd("ClinicalUploadType", scope.row.ClinicalUploadType) }}
@@ -125,6 +129,7 @@
<el-table-column
prop="FileCount"
:label="$t('trials:readingPeriod:cd:table:fileCount')"
min-width="120"
>
<template slot-scope="scope">
{{
@@ -247,7 +252,7 @@
:visible.sync="addOrUpdateCD.visible"
:close-on-click-modal="false"
:title="addOrUpdateCD.title"
width="500px"
width="600px"
append-to-body
custom-class="base-dialog-wrapper"
>
@@ -503,7 +508,7 @@
:visible.sync="addOrUpdateCD.visible"
:close-on-click-modal="false"
:title="addOrUpdateCD.title"
width="500px"
width="600px"
append-to-body
custom-class="base-dialog-wrapper"
>
@@ -623,7 +628,8 @@ export default {
},
mounted() {
if (!(this.data.IsVisit || this.data.IsBaseLine)) {
this.clinicalType = this.$d.GetClinicalType[0].value.toString();
// this.clinicalType = this.$d.GetClinicalType[0].value.toString();
this.clinicalType = '1';
} else {
this.getList(true);
}
@@ -136,7 +136,6 @@
:prop="`Plan${i-1}`"
label=""
width="240"
show-overflow-tooltip
>
<template slot-scope="scope">
<div v-if="i<=scope.row.Data.length">
@@ -162,7 +161,7 @@
</div>
<div style="display: flex;justify-content: space-between;border-bottom: 1px solid #d9d9d9;margin-bottom: 8px;padding-bottom: 8px">
<div>{{ $fd('ModuleTypeEnum',scope.row.Data[i-1].ModuleType) }}</div>
<div style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;width: 110px;text-align: right;">
<div style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;width: 110px;text-align: right;" :title="$fd('ReadModuleEnum',scope.row.Data[i-1].ReadingStatus)">
{{ $fd('ReadModuleEnum',scope.row.Data[i-1].ReadingStatus) }}
</div>
</div>
@@ -322,6 +321,7 @@
:visible.sync="clinicalDataVisible"
:close-on-click-modal="false"
append-to-body
width="70%"
>
<ClinicalData :trial-reading-criterion-id="TrialReadingCriterionId" :trial-id="trialId" :data="currentData" @getList="getList"/>
</el-dialog>
@@ -154,21 +154,23 @@
v-else-if="scope.row.CheckChallengeState === 1"
type="danger"
>
{{
{{ $fd('CheckChallengeState', 1) }}
<!-- {{
userTypeEnumInt === 2
? $fd('CheckChallengeState', 1)
: $fd('CheckChallengeState', 2)
}}
}} -->
</el-tag>
<el-tag
v-else-if="scope.row.CheckChallengeState === 2"
type="danger"
>
{{
{{ $fd('CheckChallengeState', 2) }}
<!-- {{
userTypeEnumInt === 2
? $fd('CheckChallengeState', 2)
: $fd('CheckChallengeState', 1)
}}
}} -->
</el-tag>
<el-tag v-else-if="scope.row.CheckChallengeState === 3">{{
$fd('CheckChallengeState', scope.row.CheckChallengeState)
@@ -1459,7 +1459,7 @@ export default {
</div>`
this.$alert(
content,
this.$t('trials:uploadDicomList:label:prompt'),
'',
{
confirmButtonText: this.$t(
'trials:uploadDicomList:label:confirm'