9 Commits

Author SHA1 Message Date
caiyiling 7e52005dab Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is passing
2024-12-23 13:35:06 +08:00
caiyiling 5866535fb5 系统标准配置更改 2024-12-23 13:34:46 +08:00
wangxiaoshuang 862c6d64cc 简历医院信息维护
continuous-integration/drone/push Build is passing
2024-12-23 13:13:44 +08:00
wangxiaoshuang 2c0c2e8111 培训文件显示创建时间,不展示更新时间
continuous-integration/drone/push Build is passing
2024-12-20 11:03:46 +08:00
wangxiaoshuang c24c98b334 列表label名修改
continuous-integration/drone/push Build is passing
2024-12-19 11:45:21 +08:00
caiyiling 97caeae753 系统标准配置更改
continuous-integration/drone/push Build is passing
2024-12-19 11:02:34 +08:00
caiyiling 6725f6e276 Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is passing
2024-12-18 18:05:54 +08:00
caiyiling 38ad4e72a2 系统标准配置更改 2024-12-18 18:05:28 +08:00
wangxiaoshuang c9c4826274 对于DICOM和非DICOM的Tab可以根据配置来控制显示
continuous-integration/drone/push Build is passing
2024-12-18 17:08:27 +08:00
19 changed files with 852 additions and 222 deletions
-1
View File
@@ -26,7 +26,6 @@ router.beforeEach(async (to, from, next) => {
to.query.trialId !==
store.state.trials.config.trialId
) {
console.log(to.query.path)
let res = await getTrialExtralConfig({
TrialId: to.query.trialId,
})
@@ -98,7 +98,7 @@
</el-table-column>
<el-table-column
prop="UpdateTime"
label="更新时间"
label="上传时间"
show-overflow-tooltip
sortable="custom"
/>
@@ -108,7 +108,7 @@
</el-table-column>
<el-table-column
prop="UpdateTime"
label="更新时间"
label="上传时间"
show-overflow-tooltip
sortable="custom"
/>
@@ -104,8 +104,8 @@
</template>
</el-table-column>
<el-table-column
prop="UpdateTime"
label="更新时间"
prop="CreateTime"
label="创建时间"
show-overflow-tooltip
sortable="custom"
/>
@@ -111,7 +111,7 @@
</el-table-column>
<el-table-column
prop="UpdateTime"
label="更新时间"
label="上传时间"
show-overflow-tooltip
sortable="custom"
/>
@@ -9,8 +9,19 @@
>
<div class="base-dialog-body">
<el-form-item label="Site: ">
<el-select v-model="form.SiteId" style="width: 100%" clearable filterable @change="siteChange">
<el-option v-for="item of siteList" :value="item.Id" :key="item.Id" :label="item.SiteName">
<el-select
v-model="form.SiteId"
style="width: 100%"
clearable
filterable
@change="siteChange"
>
<el-option
v-for="item of siteList"
:value="item.Id"
:key="item.Id"
:label="item.SiteName"
>
</el-option>
</el-select>
</el-form-item>
@@ -20,10 +31,16 @@
<el-form-item label="Hospital EN: " prop="HospitalName">
<el-input v-model="form.HospitalName" />
</el-form-item>
<el-form-item label="Affiliated University CN: " prop="UniversityAffiliatedCN">
<el-form-item
label="Affiliated University CN: "
prop="UniversityAffiliatedCN"
>
<el-input v-model="form.UniversityAffiliatedCN" />
</el-form-item>
<el-form-item label="Affiliated University EN: " prop="UniversityAffiliated">
<el-form-item
label="Affiliated University EN: "
prop="UniversityAffiliated"
>
<el-input v-model="form.UniversityAffiliated" />
</el-form-item>
<el-form-item label="Country CN: " prop="CountryCN">
@@ -45,10 +62,22 @@
<el-input v-model="form.City" />
</el-form-item>
</div>
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
<div class="base-dialog-footer" style="text-align: right; margin-top: 10px">
<el-form-item>
<el-button :disabled="btnLoading" size="small" type="primary" @click="handleCancel">Cancel</el-button>
<el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">Save</el-button>
<el-button
:disabled="btnLoading"
size="small"
type="primary"
@click="handleCancel"
>Cancel</el-button
>
<el-button
size="small"
type="primary"
:loading="btnLoading"
@click="handleSave"
>Save</el-button
>
</el-form-item>
</div>
</el-form>
@@ -63,14 +92,14 @@ export default {
type: Object,
default() {
return {}
}
},
},
model: {
type: Object,
default() {
return {}
}
}
},
},
},
data() {
return {
@@ -87,23 +116,36 @@ export default {
Province: '',
ProvinceCN: '',
City: '',
CityCN: ''
CityCN: '',
},
siteList: [],
rules: {
HospitalNameCN: [{ required: true, message: 'Please specify', trigger: 'blur' }, { max: 50, message: 'The maximum length is 50' }],
UniversityAffiliated: [{ max: 100, message: 'The maximum length is 100' }],
UniversityAffiliatedCN: [{ max: 100, message: 'The maximum length is 100' }],
Country: [{ required: true, message: 'Please specify', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' }],
CountryCN: [{ max: 50, message: 'The maximum length is 50' }],
Province: [{ required: true, message: 'Please specify', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' }],
ProvinceCN: [{ max: 50, message: 'The maximum length is 50' }],
City: [{ required: true, message: 'Please specify', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' }],
CityCN: [{ max: 50, message: 'The maximum length is 50' }]
}
HospitalNameCN: [
{ required: true, message: 'Please specify', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' },
],
UniversityAffiliated: [
{ max: 100, message: 'The maximum length is 100' },
],
UniversityAffiliatedCN: [
{ max: 100, message: 'The maximum length is 100' },
],
Country: [{ max: 50, message: 'The maximum length is 50' }],
CountryCN: [
{ required: true, message: 'Please specify', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' },
],
Province: [{ max: 50, message: 'The maximum length is 50' }],
ProvinceCN: [
{ required: true, message: 'Please specify', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' },
],
City: [{ max: 50, message: 'The maximum length is 50' }],
CityCN: [
{ required: true, message: 'Please specify', trigger: 'blur' },
{ max: 50, message: 'The maximum length is 50' },
],
},
}
},
mounted() {
@@ -114,7 +156,7 @@ export default {
},
methods: {
siteChange(v) {
this.siteList.forEach(o => {
this.siteList.forEach((o) => {
if (o.Id === v) {
this.form.CityCN = o.City
this.form.HospitalNameCN = o.SiteNameCN
@@ -125,34 +167,37 @@ export default {
})
},
getAllSiteList() {
getAllSiteList().then(res => {
this.siteList = res.Result
console.log(this.siteList)
}).catch(() => {
reject()
})
getAllSiteList()
.then((res) => {
this.siteList = res.Result
console.log(this.siteList)
})
.catch(() => {
reject()
})
},
handleSave() {
this.$refs.hospitalForm.validate(valid => {
this.$refs.hospitalForm.validate((valid) => {
if (!valid) return
this.btnLoading = true
addOrUpdateHospital(this.form).then(res => {
this.btnLoading = false
if (res.IsSuccess) {
this.$message.success('Saved successfully')
this.$refs['hospitalForm'].resetFields()
this.$emit('getList')
this.$emit('close')
}
}).catch(() => {
this.btnLoading = false
})
addOrUpdateHospital(this.form)
.then((res) => {
this.btnLoading = false
if (res.IsSuccess) {
this.$message.success('Saved successfully')
this.$refs['hospitalForm'].resetFields()
this.$emit('getList')
this.$emit('close')
}
})
.catch(() => {
this.btnLoading = false
})
})
},
handleCancel() {
this.$emit('close')
}
}
},
},
}
</script>
@@ -446,6 +446,7 @@
/>
</el-select>
</el-form-item>
<el-form-item v-if="form.QuestionGenre === 3" label="默认值">
<el-select v-model="form.DefaultValue" clearable>
<el-option
@@ -598,6 +599,27 @@
/>
</el-select>
</el-form-item>
<el-form-item
v-if="form.Type === 'table' || form.Type === 'basicTable'"
label="关联字典"
>
<el-select
v-model="form.DictionaryCode"
clearable
@change="
() => {
form.DefaultValue = null
}
"
>
<el-option
v-for="item of dicList"
:key="item.Id"
:label="item.Code"
:value="item.Code"
/>
</el-select>
</el-form-item>
<el-form-item
v-if="form.Type === 'upload'"
label="最大上传个数"
@@ -855,6 +877,7 @@ export default {
btnLoading: false,
parentOptions: [],
parentTriggerValOptions: [],
reParentTriggerValOptions: [],
groupOptions: [],
isParentExistGroup: false,
lesionTypes: [],
@@ -890,6 +913,7 @@ export default {
mounted() {
this.initForm()
this.getCalculateQuestions('number')
},
methods: {
typeValueChange(v) {
@@ -905,6 +929,14 @@ export default {
}
})
},
getBasicConfigSelect() {
getCriterionDictionaryList({
CriterionId: this.criterionId,
SystemCriterionId: this.criterionId
}).then(res => {
this.dicList = res.Result
})
},
getCalculateQuestions(type) {
getSystemCalculateQuestions({
systemCriterionId: this.criterionId,
@@ -944,6 +976,7 @@ export default {
await this.getParentQuestions()
await this.getLesionTypeDictionary()
await this.getLesionType()
await this.getBasicConfigSelect()
if (Object.keys(this.data).length > 0) {
for (const k in this.form) {
if (this.data.hasOwnProperty(k)) {
@@ -969,8 +1002,15 @@ export default {
})
if (index !== -1) {
if (this.parentOptions[index].QuestionGenre === 3) {
this.parentTriggerValOptions =
this.$d[this.parentOptions[index].DictionaryCode]
// this.parentTriggerValOptions =
// this.$d[this.parentOptions[index].DictionaryCode]
let dicCode = this.parentOptions[index].DictionaryCode
let res = await getCriterionDictionary({ReadingCriterionId: this.data.ReadingQuestionCriterionSystemId,DictionaryCode: dicCode})
this.parentTriggerValOptions = res.Result[dicCode].map(i=>{
return {id: i.Id, label: this.$i18n.locale === 'zh' ? i.ValueCN : i.Value, value: i.Code}
})
} else {
const options = []
this.parentOptions[index].TypeValue.split('|').forEach(
@@ -988,8 +1028,13 @@ export default {
})
if (index !== -1) {
if (this.parentOptions[index].QuestionGenre === 3) {
this.reParentTriggerValOptions =
this.$d[this.parentOptions[index].DictionaryCode]
// this.reParentTriggerValOptions =
// this.$d[this.parentOptions[index].DictionaryCode]
let dicCode = this.parentOptions[index].DictionaryCode
let res = await getCriterionDictionary({ReadingCriterionId: this.data.ReadingQuestionCriterionSystemId,DictionaryCode: dicCode})
this.reParentTriggerValOptions = res.Result[dicCode].map(i=>{
return {id: i.Id, label: this.$i18n.locale === 'zh' ? i.ValueCN : i.Value, value: i.Code}
})
} else {
const options = []
this.parentOptions[index].TypeValue.split('|').forEach(
@@ -1180,15 +1225,21 @@ export default {
}
form.ParentTriggerValue = ''
},
relevanceQuestionChange(val, form) {
async relevanceQuestionChange(val, form) {
if (val) {
var index = this.parentOptions.findIndex((item) => {
return item.QuestionId === val
})
if (index !== -1) {
if (this.parentOptions[index].QuestionGenre === 3) {
this.reParentTriggerValOptions =
this.$d[this.parentOptions[index].DictionaryCode]
// this.reParentTriggerValOptions =
// this.$d[this.parentOptions[index].DictionaryCode]
let dicCode = this.parentOptions[index].DictionaryCode
let res = await getCriterionDictionary({ReadingCriterionId: this.data.ReadingQuestionCriterionSystemId,DictionaryCode: dicCode})
this.reParentTriggerValOptions = res.Result[dicCode].map(i=>{
return {id: i.Id, label: this.$i18n.locale === 'zh' ? i.ValueCN : i.Value, value: i.Code}
})
} else {
var options = []
this.parentOptions[index].TypeValue.split('|').forEach(
@@ -710,7 +710,13 @@ export default {
})
if (index !== -1) {
if (this.parentOptions[index].QuestionGenre === 3) {
this.parentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode]
// this.parentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode]
let dicCode = this.parentOptions[index].DictionaryCode
let res = await getCriterionDictionary({ReadingCriterionId: this.criterionId, DictionaryCode: dicCode})
this.parentTriggerValOptions = res.Result[dicCode].map(i=>{
return {id: i.Id, label: this.$i18n.locale === 'zh' ? i.ValueCN : i.Value, value: i.Code}
})
} else {
const options = []
this.parentOptions[index].TypeValue.split('|').forEach((item, index) => {
@@ -726,8 +732,12 @@ export default {
})
if (i !== -1) {
if (this.parentOptions[i].QuestionGenre === 3) {
console.log(this.$d[this.parentOptions[i].DictionaryCode])
this.reParentTriggerValOptions = this.$d[this.parentOptions[i].DictionaryCode]
// this.reParentTriggerValOptions = this.$d[this.parentOptions[i].DictionaryCode]
let dicCode = this.parentOptions[i].DictionaryCode
let res = await getCriterionDictionary({ReadingCriterionId: this.criterionId, DictionaryCode: dicCode})
this.reParentTriggerValOptions = res.Result[dicCode].map(i=>{
return {id: i.Id, label: this.$i18n.locale === 'zh' ? i.ValueCN : i.Value, value: i.Code}
})
} else {
const options = []
this.parentOptions[i].TypeValue.split('|').forEach((item, index) => {
@@ -805,14 +815,20 @@ export default {
form.RelevanceValue = ''
}
},
parentQuestionChange(val, form) {
async parentQuestionChange(val, form) {
if (val) {
var index = this.parentOptions.findIndex(item => {
return item.QuestionId === val
})
if (index !== -1) {
if (this.parentOptions[index].QuestionGenre === 3) {
this.parentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode]
// this.parentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode]
let dicCode = this.parentOptions[index].DictionaryCode
let res = await getCriterionDictionary({ReadingCriterionId: this.criterionId, DictionaryCode: dicCode})
this.parentTriggerValOptions = res.Result[dicCode].map(i=>{
return {id: i.Id, label: this.$i18n.locale === 'zh' ? i.ValueCN : i.Value, value: i.Code}
})
} else {
const options = []
this.parentOptions[index].TypeValue.split('|').forEach((item, index) => {
@@ -824,16 +840,20 @@ export default {
}
form.ParentTriggerValue = ''
},
relevanceQuestionChange(val, form) {
async relevanceQuestionChange(val, form) {
if (val) {
var index = this.parentOptions.findIndex(item => {
return item.QuestionId === val
})
console.log(this.$d[this.parentOptions[index].DictionaryCode], this.parentOptions[index].QuestionGenre)
if (index !== -1) {
if (this.parentOptions[index].QuestionGenre === 3) {
console.log(this.$d[this.parentOptions[index].DictionaryCode])
this.reParentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode]
// this.reParentTriggerValOptions = this.$d[this.parentOptions[index].DictionaryCode]
let dicCode = this.parentOptions[index].DictionaryCode
let res = await getCriterionDictionary({ReadingCriterionId: this.criterionId, DictionaryCode: dicCode})
this.reParentTriggerValOptions = res.Result[dicCode].map(i=>{
return {id: i.Id, label: this.$i18n.locale === 'zh' ? i.ValueCN : i.Value, value: i.Code}
})
} else {
const options = []
this.parentOptions[index].TypeValue.split('|').forEach((item, index) => {
-1
View File
@@ -456,7 +456,6 @@ export default {
},
// 输入框输入事件
setPassword(val) {
console.log(val)
if (this.isShowPassword) {
this.loginForm.password = val
} else {
@@ -569,22 +569,30 @@
:label="$t('system:EducationTraining:table:Hospital')"
prop="Hospital"
>
<el-select
v-model="postgraduateForm.HospitalId"
filterable
placeholder=""
>
<el-option
v-for="(item, index) in hospitalList"
:key="index"
:label="isEN ? item.HospitalName : item.HospitalNameCN"
:value="item.Id"
>
<span>
{{ isEN ? item.HospitalName : item.HospitalNameCN }}
</span>
</el-option>
</el-select>
<el-row type="flex" justify="space-between">
<el-col :span="11">
<el-autocomplete
clearable
class="inline-input"
style="width: 100%"
v-model="postgraduateForm.Hospital"
:fetch-suggestions="querySearch"
@select="handleSelect"
placeholder="Please specify in English"
></el-autocomplete>
</el-col>
<el-col :span="11">
<el-autocomplete
clearable
class="inline-input"
style="width: 100%"
v-model="postgraduateForm.HospitalCN"
:fetch-suggestions="querySearchCN"
@select="handleSelect"
placeholder="请用中文注明"
></el-autocomplete>
</el-col>
</el-row>
</el-form-item>
<el-form-item
:label="$t('system:EducationTraining:table:University')"
@@ -1043,6 +1051,8 @@ export default {
},
isDisabled: false,
loading: false,
hospitalSelectList: [],
hospitalSelectListCN: [],
}
},
computed: {
@@ -1051,11 +1061,71 @@ export default {
return this.$i18n.locale !== 'zh'
},
},
watch: {
hospitalList: {
handler() {
if (!Array.isArray(this.hospitalList) || this.hospitalList.length <= 0)
return false
this.hospitalSelectList = []
this.hospitalList.forEach((item) => {
this.hospitalSelectList.push({
value: item.HospitalName,
...item,
})
this.hospitalSelectListCN.push({
value: item.HospitalNameCN,
...item,
})
})
},
deep: true,
},
},
mounted() {
this.initPage()
store.dispatch('global/getHospital')
},
methods: {
handleSelect(value) {
const item = value
if (item) {
this.postgraduateForm.Hospital = item.HospitalName
this.postgraduateForm.HospitalCN = item.HospitalNameCN
}
},
querySearch(queryString, cb) {
var hospitalList = this.hospitalSelectList
var results = queryString
? hospitalList.filter(this.createFilter(queryString))
: hospitalList
// 调用 callback 返回建议列表的数据
cb(results)
},
querySearchCN(queryString, cb) {
var hospitalList = this.hospitalSelectListCN
var results = queryString
? hospitalList.filter(this.createFilter(queryString, false))
: hospitalList
// 调用 callback 返回建议列表的数据
cb(results)
},
createFilter(queryString, isEN = true) {
return (hospitalList) => {
if (isEN) {
return (
hospitalList.HospitalName.toLowerCase().indexOf(
queryString.toLowerCase()
) >= 0
)
} else {
return (
hospitalList.HospitalNameCN.toLowerCase().indexOf(
queryString.toLowerCase()
) >= 0
)
}
}
},
initPage() {
const id = this.$route.query.Id || this.reviewerId
if (id) {
+171 -26
View File
@@ -14,27 +14,32 @@
<el-col :span="14">
<el-form-item
:label="$t('system:reviewer:label:Hospital')"
prop="HospitalId"
prop="HospitalName"
>
<el-select
v-model="employmentForm.HospitalId"
placeholder="select"
:disabled="$route.query.ReviewStatus === '1'"
<el-autocomplete
clearable
class="inline-input"
style="width: 100%"
size="small"
@change="handleHospitalChange"
>
<el-option
v-for="(item, index) in hospitalList"
:key="index"
:label="isEN ? item.HospitalName : item.HospitalNameCN"
:value="item.Id"
>
<span>
{{ isEN ? item.HospitalName : item.HospitalNameCN }}
</span>
</el-option>
</el-select>
v-model="employmentForm.HospitalName"
:fetch-suggestions="querySearch"
@select="handleSelect"
placeholder="Please specify in English"
@change="handleChange"
></el-autocomplete>
</el-form-item>
</el-col>
<el-col :span="14">
<el-form-item prop="HospitalNameCN">
<el-autocomplete
clearable
class="inline-input"
style="width: 100%"
v-model="employmentForm.HospitalNameCN"
:fetch-suggestions="querySearchCN"
@select="handleSelect"
placeholder="请用中文注明"
@change="handleChange"
></el-autocomplete>
</el-form-item>
</el-col>
</el-row>
@@ -43,12 +48,25 @@
<el-col :span="14">
<el-form-item
:label="$t('system:reviewer:label:AffiliatedUniversity')"
prop="UniversityAffiliated"
>
<el-input
disabled
v-model="UniversityAffiliated"
v-model="employmentForm.UniversityAffiliated"
type="textarea"
autosize
placeholder="Please specify in English"
size="small"
:maxlength="4000"
/>
</el-form-item>
</el-col>
<el-col :span="14">
<el-form-item prop="UniversityAffiliated">
<el-input
v-model="employmentForm.UniversityAffiliatedCN"
type="textarea"
autosize
placeholder="请用中文注明"
size="small"
:maxlength="4000"
/>
@@ -59,15 +77,23 @@
<el-col :span="14">
<el-form-item :label="$t('system:reviewer:label:City')">
<el-input
disabled
v-model="City"
v-model="employmentForm.City"
size="small"
:maxlength="400"
placeholder="Please specify in English"
/>
</el-form-item>
</el-col>
<el-col :span="14">
<el-form-item>
<el-input
v-model="employmentForm.CityCN"
size="small"
placeholder="请用中文注明"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<!-- <el-row>
<el-col :span="14">
<el-form-item :label="$t('system:reviewer:label:State/Province')">
<el-input
@@ -90,7 +116,7 @@
/>
</el-form-item>
</el-col>
</el-row>
</el-row> -->
<el-row>
<el-col :span="14">
@@ -321,14 +347,34 @@ export default {
Physician: '',
PhysicianCN: '',
PhysicianOriginal: null,
HospitalName: '',
HospitalNameCN: '',
WorkPartTime: null,
WorkPartTimeEn: null,
UniversityAffiliated: null,
UniversityAffiliatedCN: null,
City: null,
CityCN: null,
},
UniversityAffiliated: '',
City: '',
Province: '',
Country: '',
employmentRules: {
HospitalName: [
{
required: true,
message: this.$t('common:ruleMessage:specify'),
trigger: ['blur', 'change'],
},
],
HospitalNameCN: [
{
required: true,
message: this.$t('common:ruleMessage:specify'),
trigger: ['blur', 'change'],
},
],
DepartmentId: [
{
required: true,
@@ -435,6 +481,8 @@ export default {
otherId: 'ef84e9cb-f1a6-49d7-b6da-34be2c12abd5',
loading: false,
dictionaryList: {},
hospitalSelectList: [],
hospitalSelectListCN: [],
}
},
computed: {
@@ -446,7 +494,83 @@ export default {
mounted() {
this.initEmployment()
},
watch: {
hospitalList: {
handler() {
if (!Array.isArray(this.hospitalList) || this.hospitalList.length <= 0)
return false
this.hospitalSelectList = []
this.hospitalList.forEach((item) => {
this.hospitalSelectList.push({
value: item.HospitalName,
...item,
})
this.hospitalSelectListCN.push({
value: item.HospitalNameCN,
...item,
})
})
},
deep: true,
},
},
methods: {
handleSelect(value) {
const item = value
if (item) {
this.employmentForm.HospitalName = item.HospitalName
this.employmentForm.HospitalNameCN = item.HospitalNameCN
this.employmentForm.UniversityAffiliated = item.UniversityAffiliated
this.employmentForm.City = item.City
this.employmentForm.UniversityAffiliatedCN = item.UniversityAffiliatedCN
this.employmentForm.CityCN = item.CityCN
} else {
this.employmentForm.UniversityAffiliated = null
this.employmentForm.City = null
this.employmentForm.UniversityAffiliatedCN = null
this.employmentForm.CityCN = null
}
},
handleChange(v) {
if (v) return
this.employmentForm.UniversityAffiliated = null
this.employmentForm.City = null
this.employmentForm.UniversityAffiliatedCN = null
this.employmentForm.CityCN = null
},
querySearch(queryString, cb) {
var hospitalList = this.hospitalSelectList
var results = queryString
? hospitalList.filter(this.createFilter(queryString))
: hospitalList
// 调用 callback 返回建议列表的数据
cb(results)
},
querySearchCN(queryString, cb) {
var hospitalList = this.hospitalSelectListCN
var results = queryString
? hospitalList.filter(this.createFilter(queryString, false))
: hospitalList
// 调用 callback 返回建议列表的数据
cb(results)
},
createFilter(queryString, isEN = true) {
return (hospitalList) => {
if (isEN) {
return (
hospitalList.HospitalName.toLowerCase().indexOf(
queryString.toLowerCase()
) >= 0
)
} else {
return (
hospitalList.HospitalNameCN.toLowerCase().indexOf(
queryString.toLowerCase()
) >= 0
)
}
}
},
RankChange(val) {
var o = this.$d.Rank.find((v) => {
return v.id === val
@@ -515,6 +639,14 @@ export default {
: ''
param.HospitalId = this.employmentForm.HospitalId
param.HospitalName = this.employmentForm.HospitalName
param.HospitalNameCN = this.employmentForm.HospitalNameCN
param.UniversityAffiliated = this.employmentForm.UniversityAffiliated
param.UniversityAffiliatedCN =
this.employmentForm.UniversityAffiliatedCN
param.City = this.employmentForm.City
param.CityCN = this.employmentForm.CityCN
updateEmploymentInfo(param)
.then((res) => {
this.isDisabled = false
@@ -551,9 +683,22 @@ export default {
PositionOther,
PositionOtherCN,
HospitalId,
HospitalName,
HospitalNameCN,
WorkPartTime,
WorkPartTimeEn,
UniversityAffiliated,
UniversityAffiliatedCN,
City,
CityCN,
} = res.Result
this.employmentForm.HospitalName = HospitalName
this.employmentForm.HospitalNameCN = HospitalNameCN
this.employmentForm.UniversityAffiliated = UniversityAffiliated
this.employmentForm.UniversityAffiliatedCN = UniversityAffiliatedCN
this.employmentForm.City = City
this.employmentForm.CityCN = CityCN
this.employmentForm.WorkPartTime = WorkPartTime
this.employmentForm.WorkPartTimeEn = WorkPartTimeEn
this.employmentForm.Id = id
@@ -150,20 +150,32 @@
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:continuingTraining:form:hospital')"
prop="HospitalId"
prop="Hospital"
v-if="isEN"
>
<el-select v-model="form.HospitalId" filterable placeholder="">
<el-option
v-for="(item, index) in hospitalList"
:key="index"
:label="isEN ? item.HospitalName : item.HospitalNameCN"
:value="item.Id"
>
<span>
{{ isEN ? item.HospitalName : item.HospitalNameCN }}
</span>
</el-option>
</el-select>
<el-autocomplete
clearable
class="inline-input"
style="width: 100%"
v-model="form.Hospital"
:fetch-suggestions="querySearch"
@select="handleSelect"
placeholder=""
></el-autocomplete>
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:continuingTraining:form:hospital')"
prop="Hospital"
v-else
>
<el-autocomplete
clearable
class="inline-input"
style="width: 100%"
v-model="form.HospitalCN"
:fetch-suggestions="querySearch"
placeholder=""
></el-autocomplete>
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:continuingTraining:form:school')"
@@ -283,6 +295,8 @@ const defaultForm = () => {
Major: '',
MajorCN: '',
HospitalId: null,
HospitalCN: null,
Hospital: null,
School: '',
SchoolCN: '',
City: '',
@@ -418,6 +432,7 @@ export default {
},
loading: false,
daterange: [],
hospitalSelectList: [],
}
},
computed: {
@@ -426,7 +441,55 @@ export default {
mounted() {
store.dispatch('global/getHospital')
},
watch: {
hospitalList: {
handler() {
if (!Array.isArray(this.hospitalList) || this.hospitalList.length <= 0)
return false
this.hospitalSelectList = []
this.hospitalList.forEach((item) => {
if (this.isEN) {
this.hospitalSelectList.push({
value: item.HospitalName,
...item,
})
} else {
this.hospitalSelectList.push({
value: item.HospitalNameCN,
...item,
})
}
})
},
deep: true,
},
},
methods: {
querySearch(queryString, cb) {
var hospitalList = this.hospitalSelectList
var results = queryString
? hospitalList.filter(this.createFilter(queryString))
: hospitalList
// 调用 callback 返回建议列表的数据
cb(results)
},
createFilter(queryString) {
return (hospitalList) => {
if (this.isEN) {
return (
hospitalList.HospitalName.toLowerCase().indexOf(
queryString.toLowerCase()
) >= 0
)
} else {
return (
hospitalList.HospitalNameCN.toLowerCase().indexOf(
queryString.toLowerCase()
) >= 0
)
}
}
},
openEdit(row) {
this.form = defaultForm()
this.daterange = []
@@ -458,6 +521,11 @@ export default {
if (this.reviewerId) {
this.form.DoctorId = this.reviewerId
}
let data = Object.assign({}, this.form)
if (!this.hospitalList.find((item) => item.Id === data.HospitalId)) {
data.Hospital = data.HospitalId
data.HospitalId = null
}
this.loading = true
let res = await addOrUpdatePostgraduateInfo(this.form)
this.loading = false
@@ -209,25 +209,35 @@
</div>
<el-form-item
:label="$t('curriculumVitae:info:form:hospital')"
prop="HospitalId"
prop="HospitalName"
v-if="isEN"
>
<el-select
v-model="form.HospitalId"
filterable
<el-autocomplete
clearable
class="inline-input"
style="width: 100%"
v-model="form.HospitalName"
:fetch-suggestions="querySearch"
@select="handleSelect"
placeholder=""
@change="handleHospitalChange"
>
<el-option
v-for="(item, index) in hospitalList"
:key="index"
:label="isEN ? item.HospitalName : item.HospitalNameCN"
:value="item.Id"
>
<span>
{{ isEN ? item.HospitalName : item.HospitalNameCN }}
</span>
</el-option>
</el-select>
@change="handleChange"
></el-autocomplete>
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:info:form:hospital')"
prop="HospitalNameCN"
v-else
>
<el-autocomplete
clearable
class="inline-input"
style="width: 100%"
v-model="form.HospitalNameCN"
:fetch-suggestions="querySearch"
@select="handleSelect"
placeholder=""
@change="handleChange"
></el-autocomplete>
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:info:form:AffiliatedUniversity')"
@@ -235,7 +245,6 @@
v-if="isEN"
>
<el-input
disabled
v-model="form.UniversityAffiliated"
type="textarea"
autosize
@@ -249,7 +258,6 @@
v-else
>
<el-input
disabled
v-model="form.UniversityAffiliatedCN"
type="textarea"
autosize
@@ -261,10 +269,16 @@
:label="$t('curriculumVitae:info:form:City')"
v-if="isEN"
>
<el-input disabled v-model="form.City" size="small" />
<el-input
v-model="form.City"
size="small"
/>
</el-form-item>
<el-form-item :label="$t('curriculumVitae:info:form:City')" v-else>
<el-input disabled v-model="form.CityCN" size="small" />
<el-input
v-model="form.CityCN"
size="small"
/>
</el-form-item>
<el-form-item
:label="$t('curriculumVitae:info:form:department')"
@@ -433,6 +447,8 @@ const defaultForm = () => {
RankOther: '',
RankOtherCN: '',
HospitalId: '',
HospitalName: null,
HospitalNameCN: null,
WorkPartTime: null,
WorkPartTimeEn: null,
UniversityAffiliated: null,
@@ -616,11 +632,18 @@ export default {
trigger: 'blur',
},
],
HospitalId: [
HospitalName: [
{
required: true,
message: this.$t('common:ruleMessage:select'),
trigger: 'blur',
message: this.$t('common:ruleMessage:specify'),
trigger: ['blur', 'change'],
},
],
HospitalNameCN: [
{
required: true,
message: this.$t('common:ruleMessage:specify'),
trigger: ['blur', 'change'],
},
],
UniversityAffiliated: [
@@ -648,16 +671,72 @@ export default {
loading: false,
dictionaryList: {},
otherId: 'ef84e9cb-f1a6-49d7-b6da-34be2c12abd5',
hospitalSelectList: [],
}
},
computed: {
...mapGetters(['hospitalList']),
},
watch: {
hospitalList: {
handler() {
if (!Array.isArray(this.hospitalList) || this.hospitalList.length <= 0)
return false
this.hospitalSelectList = []
this.hospitalList.forEach((item) => {
if (this.isEN) {
this.hospitalSelectList.push({
value: item.HospitalName,
...item,
})
} else {
this.hospitalSelectList.push({
value: item.HospitalNameCN,
...item,
})
}
})
},
deep: true,
},
},
mounted() {
this.getDicData()
store.dispatch('global/getHospital')
},
methods: {
handleChange(v) {
if (v) return
this.form.UniversityAffiliated = null
this.form.City = null
this.form.UniversityAffiliatedCN = null
this.form.CityCN = null
},
querySearch(queryString, cb) {
var hospitalList = this.hospitalSelectList
var results = queryString
? hospitalList.filter(this.createFilter(queryString))
: hospitalList
// 调用 callback 返回建议列表的数据
cb(results)
},
createFilter(queryString) {
return (hospitalList) => {
if (this.isEN) {
return (
hospitalList.HospitalName.toLowerCase().indexOf(
queryString.toLowerCase()
) >= 0
)
} else {
return (
hospitalList.HospitalNameCN.toLowerCase().indexOf(
queryString.toLowerCase()
) >= 0
)
}
}
},
openEdit() {
this.form = defaultForm()
Object.keys(this.form).forEach((key) => {
@@ -666,8 +745,6 @@ export default {
}
})
this.model_cfg.visible = true
console.log(this.form)
console.log(this.DATA)
},
handleCancle() {
this.form = defaultForm()
@@ -680,8 +757,13 @@ export default {
if (this.reviewerId) {
this.form.Id = this.reviewerId
}
let data = Object.assign({}, this.form)
if (!this.hospitalList.find((item) => item.Id === data.HospitalId)) {
data.HospitalName = data.HospitalId
data.HospitalId = null
}
this.loading = true
let res = await addOrUpdateDoctorBasicInfoAndEmployment(this.form)
let res = await addOrUpdateDoctorBasicInfoAndEmployment(data)
this.loading = false
if (res.IsSuccess) {
this.$emit('update:reviewerId', res.Result.Id)
@@ -701,13 +783,18 @@ export default {
})
.catch(() => {})
},
handleHospitalChange(value) {
const item = this.hospitalList.filter((item) => item.Id === value)
if (item.length) {
this.form.UniversityAffiliated = item[0].UniversityAffiliated
this.form.City = item[0].City
this.form.UniversityAffiliatedCN = item[0].UniversityAffiliatedCN
this.form.CityCN = item[0].CityCN
handleSelect(value) {
const item = value
if (item) {
this.form.UniversityAffiliated = item.UniversityAffiliated
this.form.City = item.City
this.form.UniversityAffiliatedCN = item.UniversityAffiliatedCN
this.form.CityCN = item.CityCN
} else {
this.form.UniversityAffiliated = null
this.form.City = null
this.form.UniversityAffiliatedCN = null
this.form.CityCN = null
}
},
},
@@ -1,5 +1,5 @@
<template>
<box-content style="height: 100%;background: #fff;">
<box-content style="height: 100%; background: #fff">
<!-- 搜索框 -->
<div class="search">
<el-form :inline="true" class="base-search-form">
@@ -8,7 +8,7 @@
<el-select
v-model="searchData.FileTypeId"
clearable
style="width:150px;"
style="width: 150px"
>
<el-option
v-for="item of $d.Trial_Document"
@@ -20,14 +20,14 @@
</el-form-item>
<!-- 文件名称 -->
<el-form-item :label="$t('trials:attachment:table:fileName')">
<el-input v-model="searchData.Name" style="width:100px;" />
<el-input v-model="searchData.Name" style="width: 100px" />
</el-form-item>
<!-- 培训状态 -->
<el-form-item :label="$t('trials:attachment:table:isDeleted')">
<el-select
clearable
v-model="searchData.IsDeleted"
style="width:150px;"
style="width: 150px"
>
<el-option
v-for="item of $d.TrainingStatus"
@@ -42,11 +42,18 @@
<el-select
v-model="searchData.UserTypeId"
clearable
style="width:100%;"
style="width: 100%"
>
<el-option
v-for="item of userTypeOptions"
v-show="item.UserTypeEnum !== 1 && item.UserTypeEnum !== 8 && item.UserTypeEnum !== 20 && item.UserTypeEnum !== 26 && item.UserTypeEnum !== 27 && item.UserTypeEnum !== 31"
v-show="
item.UserTypeEnum !== 1 &&
item.UserTypeEnum !== 8 &&
item.UserTypeEnum !== 20 &&
item.UserTypeEnum !== 26 &&
item.UserTypeEnum !== 27 &&
item.UserTypeEnum !== 31
"
:key="item.Id"
:label="item.UserTypeShortName"
:value="item.Id"
@@ -55,20 +62,23 @@
</el-option>
</el-select>
</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>
<span style="margin-left:auto;">
<span style="margin-left: auto">
<!-- 新增 -->
<el-button
v-hasPermi="['trials:trials-panel:setting:attachment:add']"
@@ -85,7 +95,7 @@
<el-table
ref="attachmentList"
v-loading="loading"
v-adaptive="{bottomOffset:60}"
v-adaptive="{ bottomOffset: 60 }"
:data="list"
stripe
height="100"
@@ -125,8 +135,12 @@
min-width="100"
>
<template slot-scope="scope">
<el-tag v-if="scope.row.IsDeleted" type="danger">{{ $fd('TrainingStatus', !scope.row.IsDeleted) }}</el-tag>
<el-tag v-else type="primary">{{ $fd('TrainingStatus', !scope.row.IsDeleted) }}</el-tag>
<el-tag v-if="scope.row.IsDeleted" type="danger">{{
$fd('TrainingStatus', !scope.row.IsDeleted)
}}</el-tag>
<el-tag v-else type="primary">{{
$fd('TrainingStatus', !scope.row.IsDeleted)
}}</el-tag>
</template>
</el-table-column>
<!-- 需要签署的用户类型 -->
@@ -137,7 +151,11 @@
min-width="100"
>
<template slot-scope="scope">
{{ scope.row.NeedConfirmedUserTypes?scope.row.NeedConfirmedUserTypes.join(', '):'' }}
{{
scope.row.NeedConfirmedUserTypes
? scope.row.NeedConfirmedUserTypes.join(', ')
: ''
}}
</template>
</el-table-column>
<!-- 描述 -->
@@ -148,14 +166,21 @@
min-width="300"
/> -->
<!-- 更新时间 -->
<el-table-column
<!-- <el-table-column
prop="UpdateTime"
:label="$t('trials:attachment:table:updateTime')"
show-overflow-tooltip
sortable="custom"
min-width="160"
/> -->
<!--创建时间-->
<el-table-column
prop="CreateTime"
:label="$t('trials:attachment:table:CreateTime')"
show-overflow-tooltip
sortable="custom"
min-width="160"
/>
<el-table-column
:label="$t('common:action:action')"
min-width="140"
@@ -192,7 +217,13 @@
</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"
/>
<!-- 新增/编辑 -->
<el-dialog
@@ -203,7 +234,11 @@
width="800px"
custom-class="base-dialog-wrapper"
>
<AttachmentForm :data="currentRow" @closeDialog="closeDialog" @getList="getList" />
<AttachmentForm
:data="currentRow"
@closeDialog="closeDialog"
@getList="getList"
/>
</el-dialog>
<!-- 预览文件 -->
@@ -215,16 +250,25 @@
append-to-body
custom-class="base-dialog-wrapper"
>
<div class="base-modal-body" style="border:2px solid #ccc;padding: 10px">
<PreviewFile v-if="previewVisible" :file-path="currentPath" :file-type="currentType" />
<div
class="base-modal-body"
style="border: 2px solid #ccc; padding: 10px"
>
<PreviewFile
v-if="previewVisible"
:file-path="currentPath"
:file-type="currentType"
/>
</div>
</el-dialog>
</box-content>
</template>
<script>
import { getTrialDocumentList, userAbandonDoc, getTrialUserTypeList } from '@/api/trials'
import {
getTrialDocumentList,
userAbandonDoc,
getTrialUserTypeList,
} from '@/api/trials'
import BoxContent from '@/components/BoxContent'
import Pagination from '@/components/Pagination'
import AttachmentForm from './components/attachmentForm'
@@ -238,7 +282,7 @@ const searchDataDefault = () => {
SortField: '',
Asc: false,
IsDeleted: null,
UserTypeId: null
UserTypeId: null,
}
}
export default {
@@ -258,7 +302,7 @@ export default {
currentPath: '',
currentType: '',
trialId: '',
userTypeOptions: []
userTypeOptions: [],
}
},
mounted() {
@@ -271,31 +315,38 @@ export default {
getList() {
this.loading = true
this.searchData.TrialId = this.trialId
getTrialDocumentList(this.searchData).then(res => {
this.loading = false
const { CurrentPageData, TotalCount } = res.Result
CurrentPageData.forEach(item => {
item.NeedConfirmedUserTypes = []
item.NeedConfirmedUserTypeeIds = []
item.NeedConfirmedUserTypeList.forEach((i) => {
item.NeedConfirmedUserTypes.push(i.UserTypeShortName)
item.NeedConfirmedUserTypeeIds.push(i.NeedConfirmUserTypeId)
getTrialDocumentList(this.searchData)
.then((res) => {
this.loading = false
const { CurrentPageData, TotalCount } = res.Result
CurrentPageData.forEach((item) => {
item.NeedConfirmedUserTypes = []
item.NeedConfirmedUserTypeeIds = []
item.NeedConfirmedUserTypeList.forEach((i) => {
item.NeedConfirmedUserTypes.push(i.UserTypeShortName)
item.NeedConfirmedUserTypeeIds.push(i.NeedConfirmUserTypeId)
})
})
this.list = CurrentPageData
this.total = TotalCount
})
.catch(() => {
this.loading = false
})
this.list = CurrentPageData
this.total = TotalCount
}).catch(() => {
this.loading = false
})
},
// 获取用户类型下拉数据
getUserType() {
getTrialUserTypeList().then(res => {
this.userTypeOptions = res.Result
if (this.form.Id) {
this.form.NeedConfirmedUserTypeIdList = this.data.NeedConfirmedUserTypeeIds
}
}).catch(() => { this.loading = false })
getTrialUserTypeList()
.then((res) => {
this.userTypeOptions = res.Result
if (this.form.Id) {
this.form.NeedConfirmedUserTypeIdList =
this.data.NeedConfirmedUserTypeeIds
}
})
.catch(() => {
this.loading = false
})
},
// 新增
handleAdd() {
@@ -307,7 +358,9 @@ export default {
handlePreview(row) {
const { Name, FullFilePath } = row
this.currentPath = FullFilePath
this.currentType = row.Name ? Name.substring(Name.lastIndexOf('.') + 1).toLocaleLowerCase() : ''
this.currentType = row.Name
? Name.substring(Name.lastIndexOf('.') + 1).toLocaleLowerCase()
: ''
this.previewVisible = true
},
// 编辑
@@ -320,19 +373,25 @@ export default {
handleRepeal(row) {
this.$confirm(this.$t('trials:attachment:message:abolish'), {
type: 'warning',
distinguishCancelAndClose: true
distinguishCancelAndClose: true,
})
.then(() => {
this.loading = true
userAbandonDoc(row.Id, false)
.then(res => {
.then((res) => {
this.loading = false
if (res.IsSuccess) {
this.getList()
this.$message.success(this.$t('trials:trials-list:message:abolitionSuccessfully'))
this.$message.success(
this.$t('trials:trials-list:message:abolitionSuccessfully')
)
}
}).catch(() => { this.loading = false })
}).catch(() => {})
})
.catch(() => {
this.loading = false
})
})
.catch(() => {})
},
// 关闭编辑弹窗
closeDialog() {
@@ -361,7 +420,7 @@ export default {
this.searchData.SortField = column.prop
this.searchData.PageIndex = 1
this.getList()
}
}
},
},
}
</script>
@@ -121,6 +121,24 @@
</el-radio>
</el-radio-group>
</el-form-item>
<!-- 采集影像 -->
<el-form-item
:label="$t('trials:processCfg:form:CollectImagesEnum')"
prop="CollectImagesEnum"
>
<el-radio-group
v-model="form.CollectImagesEnum"
:disabled="form.IsTrialProcessConfirmed && !isEdit"
>
<el-radio
v-for="item of $d.CollectImagesType"
:key="item.id"
:label="item.value"
>
{{ item.label }}
</el-radio>
</el-radio-group>
</el-form-item>
<!-- 修约小数位数 -->
<!-- <el-form-item
:label="$t('trials:processCfg:form:digitPlaces')"
@@ -1157,6 +1175,7 @@ export default {
ClinicalDataTrialSetIds: [],
ClinicalDataSetNamesStr: '',
QCProcessEnum: null,
CollectImagesEnum: null,
IsImageConsistencyVerification: null,
ReadingMode: null,
// ImagePlatform: null,
@@ -1189,6 +1208,13 @@ export default {
trigger: 'blur',
},
],
CollectImagesEnum: [
{
required: true,
message: this.$t('common:ruleMessage:select'),
trigger: ['blur', 'change'],
},
],
QCProcessEnum: [
{
required: true,
@@ -1455,6 +1481,14 @@ export default {
this.initialForm.IsImageConsistencyVerification
),
},
{
Name: this.$t('trials:processCfg:form:CollectImagesEnum'), // 采集影像
NewVal: this.$fd('CollectImagesType', this.form.CollectImagesEnum),
OldVal: this.$fd(
'CollectImagesType',
this.initialForm.CollectImagesEnum
),
},
// {
// Name: this.$t('trials:processCfg:form:criterion'), // 阅片标准
// NewVal: criterions.length > 0 ? criterions.join(', ') : '',
@@ -169,6 +169,7 @@
<el-tab-pane
:label="$t('trials:uploadedDicoms:tab:uploadDicoms')"
name="dicom"
v-if="[0, 1].includes($store.state.trials.config.CollectImagesEnum)"
>
<upload-dicom-files
v-if="uploadVisible"
@@ -183,6 +184,7 @@
<el-tab-pane
:label="$t('trials:uploadNonDicoms:tab:uploadNonDicoms')"
name="non-dicom"
v-if="[0, 2].includes($store.state.trials.config.CollectImagesEnum)"
>
<upload-non-dicom-files
v-if="activeName === 'non-dicom'"
@@ -473,6 +475,13 @@ export default {
this.uploadBtnLoading = false
if (res.IsSuccess) {
dicomStore.studyList = []
if (
[0, 1].includes(this.$store.state.trials.config.CollectImagesEnum)
) {
this.activeName = 'dicom'
} else {
this.activeName = 'non-dicom'
}
this.uploadVisible = true
}
})
@@ -118,6 +118,7 @@
<el-tab-pane
:label="$t('trials:uploadedDicoms:tab:uploadDicoms')"
name="dicom"
v-if="[0, 1].includes($store.state.trials.config.CollectImagesEnum)"
>
<upload-dicom-files :data="data" :subject-id="data.SubjectId" :subject-visit-id="data.Id" @close="closeUpload" @getList="reFreshList" />
</el-tab-pane>
@@ -125,6 +126,7 @@
<el-tab-pane
:label="$t('trials:uploadNonDicoms:tab:uploadNonDicoms')"
name="non-dicom"
v-if="[0, 2].includes($store.state.trials.config.CollectImagesEnum)"
>
<upload-non-dicom-files v-if="activeName==='non-dicom'" :data="data" :allow-add-or-edit="true" :body-parts="bodyParts" :modalities="modalities" :subject-visit-id="data.Id" @getList="reFreshList" />
</el-tab-pane>
@@ -347,6 +349,11 @@ export default {
this.uploadBtnLoading = false;
if (res.IsSuccess) {
dicomStore.studyList = [];
if ([0, 1].includes(this.$store.state.trials.config.CollectImagesEnum)) {
this.activeName = 'dicom'
} else {
this.activeName = 'non-dicom'
}
this.uploadVisible = true;
}
})
@@ -742,15 +742,16 @@
</el-button>
</el-form-item>
</el-form>
<div class="tip">
<!-- <div class="tip">
<i class="el-icon-warning-outline"></i>
<div v-html="$t('trials:uploadedDicoms:tip:message')"></div>
</div>
</div> -->
<el-tabs v-model="activeName" type="border-card" style="flex: 1">
<!-- DICOM影像上传 -->
<el-tab-pane
:label="$t('trials:uploadedDicoms:tab:uploadDicoms')"
name="dicom"
v-if="[0, 1].includes($store.state.trials.config.CollectImagesEnum)"
>
<upload-dicom-files2
:data="rowData"
@@ -766,6 +767,7 @@
<el-tab-pane
:label="$t('trials:uploadNonDicoms:tab:uploadNonDicoms')"
name="non-dicom"
v-if="[0, 2].includes($store.state.trials.config.CollectImagesEnum)"
>
<upload-non-dicom-files
v-if="activeName === 'non-dicom'"
@@ -890,8 +892,16 @@
</el-form-item>
</el-form>
<!-- DICOM影像 -->
<h4 class="box-title">{{ $t('trials:crcUpload:label:dicom') }}</h4>
<el-card class="box-card">
<h4
class="box-title"
v-if="[0, 1].includes($store.state.trials.config.CollectImagesEnum)"
>
{{ $t('trials:crcUpload:label:dicom') }}
</h4>
<el-card
class="box-card"
v-if="[0, 1].includes($store.state.trials.config.CollectImagesEnum)"
>
<StudyInfo
v-if="rowData.Id"
:data="rowData"
@@ -900,10 +910,17 @@
/>
</el-card>
<!-- 非DICOM影像 -->
<h4 class="box-title" style="margin-top: 10px">
<h4
class="box-title"
style="margin-top: 10px"
v-if="[0, 2].includes($store.state.trials.config.CollectImagesEnum)"
>
{{ $t('trials:crcUpload:label:noneDicom') }}
</h4>
<el-card class="box-card">
<el-card
class="box-card"
v-if="[0, 2].includes($store.state.trials.config.CollectImagesEnum)"
>
<UploadNonDicomFiles
v-if="rowData.Id"
:data="rowData"
@@ -1929,7 +1946,12 @@ export default {
},
CRChandleUpload2(row) {
dicomStore.studyList = []
this.activeName = 'dicom'
if ([0, 1].includes(this.$store.state.trials.config.CollectImagesEnum)) {
this.activeName = 'dicom'
} else {
this.activeName = 'non-dicom'
}
this.rowData = { ...row }
this.$store.state.trials.checkTaskId = row.Id
this.uploadVisible = true
@@ -860,18 +860,33 @@
</el-form>
<div>
<!-- DICOM影像 -->
<h4 class="box-title">{{ $t('trials:audit:tab:dicoms') }}</h4>
<el-card class="box-card">
<h4
class="box-title"
v-if="[0, 1].includes($store.state.trials.config.CollectImagesEnum)"
>
{{ $t('trials:audit:tab:dicoms') }}
</h4>
<el-card
class="box-card"
v-if="[0, 1].includes($store.state.trials.config.CollectImagesEnum)"
>
<DicomFiles v-if="rowData.Id" :data="rowData" />
</el-card>
</div>
<div>
<!-- 非DICOM影像 -->
<h4 class="box-title" style="margin-top: 10px">
<h4
class="box-title"
style="margin-top: 10px"
v-if="[0, 2].includes($store.state.trials.config.CollectImagesEnum)"
>
{{ $t('trials:audit:tab:nonDicoms') }}
</h4>
<el-card class="box-card">
<el-card
class="box-card"
v-if="[0, 2].includes($store.state.trials.config.CollectImagesEnum)"
>
<UploadNonDicomFiles
v-if="rowData.Id"
:body-parts="OtherInfo.BodyPartTypes"