Merge branch 'main' into uat_us
commit
d70cffe306
|
@ -13,6 +13,7 @@
|
|||
v-model="searchData[item.prop]"
|
||||
:placeholder="item.placeholder"
|
||||
size="mini"
|
||||
clearable
|
||||
:style="{ width: item.width }"
|
||||
:readonly="item.readonly"
|
||||
/>
|
||||
|
@ -22,6 +23,7 @@
|
|||
v-model="searchData[item.prop]"
|
||||
:placeholder="item.placeholder"
|
||||
size="mini"
|
||||
clearable
|
||||
:style="{ width: item.width }"
|
||||
@change="item.change && item.change(that, searchData[item.prop])"
|
||||
>
|
||||
|
@ -37,6 +39,7 @@
|
|||
v-model="searchData[item.prop]"
|
||||
:placeholder="item.placeholder"
|
||||
size="mini"
|
||||
clearable
|
||||
:style="{ width: item.width }"
|
||||
@change="item.change && item.change(that, searchData[item.prop])"
|
||||
>
|
||||
|
@ -96,6 +99,7 @@
|
|||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd"
|
||||
:picker-options="item.pickerOption"
|
||||
clearable
|
||||
/>
|
||||
<!-- 时间 -->
|
||||
<el-time-select
|
||||
|
@ -104,6 +108,7 @@
|
|||
:placeholder="item.placeholder"
|
||||
type=""
|
||||
:style="{ width: item.width }"
|
||||
clearable
|
||||
/>
|
||||
<!-- 日期时间 -->
|
||||
<el-date-picker
|
||||
|
@ -114,6 +119,7 @@
|
|||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
:disabled="item.disable && item.disable(searchData[item.prop])"
|
||||
:style="{ width: item.width }"
|
||||
clearable
|
||||
/>
|
||||
<!-- 日期时间段 -->
|
||||
<el-date-picker
|
||||
|
|
|
@ -503,6 +503,18 @@ export default {
|
|||
this.loginByRole(this.$store.state.user.roles[0].Id)
|
||||
return
|
||||
}
|
||||
if (
|
||||
Array.isArray(this.$store.state.user.roles) &&
|
||||
this.$store.state.user.roles.filter((item) => item.IsUserRoleDisabled)
|
||||
.length ===
|
||||
this.$store.state.user.roles.length - 1
|
||||
) {
|
||||
let role = this.$store.state.user.roles.find(
|
||||
(item) => !item.IsUserRoleDisabled
|
||||
)
|
||||
this.loginByRole(role.Id)
|
||||
return
|
||||
}
|
||||
return (this.toggleRoleVisible = true)
|
||||
},
|
||||
cancel() {
|
||||
|
|
|
@ -73,7 +73,8 @@
|
|||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$t('system:userlist:table:UserType')"
|
||||
prop="UserTypeId"
|
||||
prop="Roles"
|
||||
v-if="type === 0"
|
||||
>
|
||||
<div style="display: flex; align-items: center">
|
||||
<el-select
|
||||
|
@ -85,7 +86,6 @@
|
|||
style="width: 100%"
|
||||
:disabled="user.CanEditUserType === false || type === 1"
|
||||
@change="handleChange"
|
||||
v-if="type === 0"
|
||||
>
|
||||
<template v-for="userType of userTypeOptions">
|
||||
<el-option
|
||||
|
@ -96,6 +96,14 @@
|
|||
/>
|
||||
</template>
|
||||
</el-select>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item
|
||||
:label="$t('system:userlist:table:UserType')"
|
||||
prop="userTypeId"
|
||||
v-else
|
||||
>
|
||||
<div style="display: flex; align-items: center">
|
||||
<el-select
|
||||
ref="userType"
|
||||
v-model="Roles"
|
||||
|
@ -105,7 +113,6 @@
|
|||
style="width: 100%"
|
||||
:disabled="user.CanEditUserType === false || type === 1"
|
||||
@change="handleChange"
|
||||
v-else
|
||||
>
|
||||
<template v-for="userType of userTypeOptions">
|
||||
<el-option
|
||||
|
|
|
@ -71,6 +71,8 @@ export default {
|
|||
<style lang="scss" scoped>
|
||||
.notice-marquee_wrapper{
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
/deep/ .el-dialog__header{
|
||||
padding: 10px;
|
||||
}
|
||||
|
|
|
@ -139,7 +139,11 @@ export default {
|
|||
return this.$store.state.user.roles
|
||||
},
|
||||
hasRole() {
|
||||
return this.roles && this.roles.length > 1
|
||||
return (
|
||||
this.roles &&
|
||||
this.roles.length > 1 &&
|
||||
this.roles.filter((item) => !item.IsUserRoleDisabled).length > 1
|
||||
)
|
||||
},
|
||||
},
|
||||
watch: {
|
||||
|
|
|
@ -119,7 +119,7 @@
|
|||
v-for="item in roles"
|
||||
:key="item.Id"
|
||||
:label="item.Id"
|
||||
:disabled="item.isUserRoleDisabled"
|
||||
:disabled="item.IsUserRoleDisabled"
|
||||
style="margin-bottom: 10px"
|
||||
>
|
||||
{{ item.UserTypeShortName }}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
<el-form-item :label="$t('trials:notice:table:notificationContent')">
|
||||
<el-input
|
||||
v-model="searchData.NoticeContent"
|
||||
style="width:100px;"
|
||||
style="width: 100px"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
@ -36,7 +36,11 @@
|
|||
<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>
|
||||
|
@ -44,7 +48,7 @@
|
|||
</template>
|
||||
<template slot="main-container">
|
||||
<el-table
|
||||
v-adaptive="{bottomOffset:60}"
|
||||
v-adaptive="{ bottomOffset: 60 }"
|
||||
v-loading="loading"
|
||||
:data="list"
|
||||
stripe
|
||||
|
@ -79,7 +83,15 @@
|
|||
sortable="custom"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="scope.row.ActualNoticeStateEnum === 0 ? 'info' : scope.row.ActualNoticeStateEnum === 1 ? 'success' : 'error'">
|
||||
<el-tag
|
||||
:type="
|
||||
scope.row.ActualNoticeStateEnum === 0
|
||||
? 'info'
|
||||
: scope.row.ActualNoticeStateEnum === 1
|
||||
? 'success'
|
||||
: 'error'
|
||||
"
|
||||
>
|
||||
{{ $fd('NoticeState', scope.row.ActualNoticeStateEnum) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
|
@ -113,7 +125,12 @@
|
|||
sortable="custom"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a :href="OSSclientConfig.basePath + scope.row.Path" target="_blank" style="color:#428bca">{{ scope.row.FileName }}</a>
|
||||
<a
|
||||
:href="OSSclientConfig.basePath + scope.row.Path"
|
||||
target="_blank"
|
||||
style="color: #428bca"
|
||||
>{{ scope.row.FileName }}</a
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
|
@ -124,11 +141,19 @@
|
|||
sortable="custom"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.IsRead">{{ $fd('YesOrNo', scope.row.IsRead) }}</el-tag>
|
||||
<el-tag v-else type="danger">{{ $fd('YesOrNo', scope.row.IsRead) }}</el-tag>
|
||||
<el-tag v-if="scope.row.IsRead">{{
|
||||
$fd('YesOrNo', scope.row.IsRead)
|
||||
}}</el-tag>
|
||||
<el-tag v-else type="danger">{{
|
||||
$fd('YesOrNo', scope.row.IsRead)
|
||||
}}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('common:action:action')" min-width="100" fixed="right">
|
||||
<el-table-column
|
||||
:label="$t('common:action:action')"
|
||||
min-width="100"
|
||||
fixed="right"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
circle
|
||||
|
@ -136,12 +161,17 @@
|
|||
icon="el-icon-info"
|
||||
@click="showDetail(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>
|
||||
</BaseContainer>
|
||||
</template>
|
||||
|
@ -157,9 +187,10 @@ const searchDataDefault = () => {
|
|||
ApplicableProjectEnum: null,
|
||||
NoticeModeEnum: null,
|
||||
NoticeStateEnum: null,
|
||||
Asc: true,
|
||||
Asc: false,
|
||||
SortField: 'PublishedTime',
|
||||
PageIndex: 1,
|
||||
PageSize: 20
|
||||
PageSize: 20,
|
||||
}
|
||||
}
|
||||
export default {
|
||||
|
@ -171,7 +202,7 @@ export default {
|
|||
searchData: searchDataDefault(),
|
||||
list: [],
|
||||
total: 0,
|
||||
loading: false
|
||||
loading: false,
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
@ -180,17 +211,21 @@ export default {
|
|||
methods: {
|
||||
getList() {
|
||||
this.loading = true
|
||||
getUserSystemNoticeList(this.searchData).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => { this.loading = false })
|
||||
getUserSystemNoticeList(this.searchData)
|
||||
.then((res) => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
},
|
||||
showDetail(row) {
|
||||
var currentNoticeType = this.$fd('NoteType', row.NoticeTypeEnum)
|
||||
if (row.IsRead || row.ActualNoticeStateEnum !== 1) {
|
||||
this.$alert(row.NoticeContent, currentNoticeType, {
|
||||
showConfirmButton: false
|
||||
showConfirmButton: false,
|
||||
})
|
||||
} else {
|
||||
const h = this.$createElement
|
||||
|
@ -200,18 +235,22 @@ export default {
|
|||
beforeClose: (action, instance, done) => {
|
||||
if (action === 'confirm') {
|
||||
instance.confirmButtonLoading = true
|
||||
setSystemNoticeHaveRead(row.Id).then(async res => {
|
||||
if (res.IsSuccess) {
|
||||
await this.$store.dispatch('global/getNoticeList')
|
||||
this.getList()
|
||||
}
|
||||
instance.confirmButtonLoading = false
|
||||
done()
|
||||
}).catch(() => { instance.confirmButtonLoading = false })
|
||||
setSystemNoticeHaveRead(row.Id)
|
||||
.then(async (res) => {
|
||||
if (res.IsSuccess) {
|
||||
await this.$store.dispatch('global/getNoticeList')
|
||||
this.getList()
|
||||
}
|
||||
instance.confirmButtonLoading = false
|
||||
done()
|
||||
})
|
||||
.catch(() => {
|
||||
instance.confirmButtonLoading = false
|
||||
})
|
||||
} else {
|
||||
done()
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
},
|
||||
|
@ -237,10 +276,9 @@ export default {
|
|||
this.searchData.SortField = column.prop
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
||||
|
|
|
@ -11,12 +11,7 @@
|
|||
<span>({{ record.CreateTime }}) </span>
|
||||
</p>
|
||||
<div class="info-content">
|
||||
<template v-if="[14, 30].includes(record.UserTypeEnumInt) && (record.MedicalDialogCloseEnum!== null || record.Content)">
|
||||
<div>{{ $t('trials:medicalFeedback:title:closeReasonEnum') }}{{ $fd('MedicalDialogCloseEnum',record.MedicalDialogCloseEnum) }}</div>
|
||||
<div v-if="record.Content">{{ $t('trials:medicalFeedback:title:closereasonRemarks') }}{{ record.Content }}</div>
|
||||
|
||||
</template>
|
||||
<template v-else-if="[14, 30].includes(record.UserTypeEnumInt) && record.Questioning">
|
||||
<template v-if="[14, 30].includes(record.UserTypeEnumInt) && record.Questioning">
|
||||
<div>
|
||||
<!-- 您好,根据医学审核反馈,该阅片任务的评估有如下问题需要您确认或澄清: -->
|
||||
{{ $t('trials:medicalFeedback:message:msg1') }}
|
||||
|
@ -60,11 +55,14 @@
|
|||
{{ $t('trials:medicalFeedback:message:msg4') }}
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="[14, 30].includes(record.UserTypeEnumInt)">
|
||||
<template v-if="[14, 30].includes(record.UserTypeEnumInt) && record.MedicalDialogCloseEnum!== null">
|
||||
<div>{{ $t('trials:medicalFeedback:title:closeReasonEnum') }}{{ $fd('MedicalDialogCloseEnum',record.MedicalDialogCloseEnum) }}</div>
|
||||
</template>
|
||||
<template v-if="[14, 30].includes(record.UserTypeEnumInt) && record.Content ">
|
||||
<div>{{ record.Content }}</div>
|
||||
</template>
|
||||
|
||||
<template v-else-if="[13].includes(record.UserTypeEnumInt)">
|
||||
<template v-if="[13].includes(record.UserTypeEnumInt)">
|
||||
<div>
|
||||
{{ $t('trials:medicalFeedback:title:isEndorse') }}{{ $fd('MedicalReviewDoctorUserIdea', record.DoctorUserIdeaEnum) }}
|
||||
</div>
|
||||
|
|
|
@ -11,12 +11,8 @@
|
|||
<span>({{ record.CreateTime }}) </span>
|
||||
</p>
|
||||
<div class="info-content">
|
||||
<template v-if="[14, 30].includes(record.UserTypeEnumInt) && (record.MedicalDialogCloseEnum!== null || record.Content)">
|
||||
<div>{{ $t('trials:medicalFeedback:title:closeReasonEnum') }}{{ $fd('MedicalDialogCloseEnum',record.MedicalDialogCloseEnum) }}</div>
|
||||
<div v-if="record.Content">{{ $t('trials:medicalFeedback:title:closereasonRemarks') }}{{ record.Content }}</div>
|
||||
|
||||
</template>
|
||||
<template v-else-if="[14, 30].includes(record.UserTypeEnumInt) && record.Questioning">
|
||||
<template v-if="[14, 30].includes(record.UserTypeEnumInt) && record.Questioning">
|
||||
<div>
|
||||
<!-- 您好,根据医学审核反馈,该阅片任务的评估有如下问题需要您确认或澄清: -->
|
||||
{{ $t('trials:medicalFeedback:message:msg1') }}
|
||||
|
@ -60,11 +56,14 @@
|
|||
{{ $t('trials:medicalFeedback:message:msg4') }}
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="[14, 30].includes(record.UserTypeEnumInt)">
|
||||
<template v-if="[14, 30].includes(record.UserTypeEnumInt) && record.MedicalDialogCloseEnum!== null">
|
||||
<div>{{ $t('trials:medicalFeedback:title:closeReasonEnum') }}{{ $fd('MedicalDialogCloseEnum',record.MedicalDialogCloseEnum) }}</div>
|
||||
</template>
|
||||
<template v-if="[14, 30].includes(record.UserTypeEnumInt) && record.Content">
|
||||
<div>{{ record.Content }}</div>
|
||||
</template>
|
||||
|
||||
<template v-else-if="[13].includes(record.UserTypeEnumInt)">
|
||||
<template v-if="[13].includes(record.UserTypeEnumInt)">
|
||||
<div>
|
||||
{{ $t('trials:medicalFeedback:title:isEndorse') }}{{ $fd('MedicalReviewDoctorUserIdea', record.DoctorUserIdeaEnum) }}
|
||||
</div>
|
||||
|
|
|
@ -260,7 +260,11 @@ export default {
|
|||
if (Object.keys(this.medicalReviewInfo).length > 0) {
|
||||
for (const k in this.form) {
|
||||
if (this.medicalReviewInfo.hasOwnProperty(k)) {
|
||||
this.form[k] = this.medicalReviewInfo[k];
|
||||
if (k === 'IsHaveQuestion' && this.medicalReviewInfo.AuditState === 0) {
|
||||
this.form[k] = null
|
||||
} else {
|
||||
this.form[k] = this.medicalReviewInfo[k]
|
||||
}
|
||||
}
|
||||
}
|
||||
this.fileList = [];
|
||||
|
|
|
@ -22,12 +22,15 @@
|
|||
<el-table-column
|
||||
v-for="item in exportInfo.DicList"
|
||||
:key="item.Code"
|
||||
:label="$i18n.locale === 'zh' ? item.ValueCN : item.Value">
|
||||
:label="$i18n.locale === 'zh' ? item.ValueCN : item.Value"
|
||||
|
||||
>
|
||||
<template v-slot="scope">
|
||||
<el-checkbox
|
||||
@change="() => changeState(scope, item.Code)"
|
||||
:checked="getCheckState(scope, item.Code)"
|
||||
:disabled="getDisabledState(scope.row, item)"
|
||||
v-show="!scope.row.IsGroup || !scope.row.HasChildren"
|
||||
>
|
||||
</el-checkbox>
|
||||
</template>
|
||||
|
@ -43,6 +46,7 @@
|
|||
v-model="scope.row.CDISCCode"
|
||||
size="mini"
|
||||
:disabled="scope.row.HasChildren || scope.row.IsTableQuestion"
|
||||
v-show="!scope.row.IsGroup || !scope.row.HasChildren"
|
||||
>
|
||||
</el-input>
|
||||
</template>
|
||||
|
@ -91,29 +95,7 @@ export default {
|
|||
async submit() {
|
||||
this.loading = true
|
||||
try {
|
||||
let params= {
|
||||
questionList: [],
|
||||
tableQuestionList: []
|
||||
}
|
||||
params.questionList = this.exportInfo.QuestionList.map(i => {
|
||||
return {
|
||||
questionId: i.QuestionId,
|
||||
tableQuestionId: i.TableQuestionId,
|
||||
exportResult: i.ExportResult,
|
||||
CDISCCode: i.CDISCCode
|
||||
}
|
||||
})
|
||||
this.exportInfo.QuestionList.forEach(i => {
|
||||
let childlist = i.Children.map(k => {
|
||||
return {
|
||||
questionId: i.QuestionId,
|
||||
tableQuestionId: k.TableQuestionId,
|
||||
exportResult: k.ExportResult,
|
||||
CDISCCode: k.CDISCCode
|
||||
}
|
||||
})
|
||||
params.tableQuestionList = params.tableQuestionList.concat(childlist)
|
||||
})
|
||||
let params = this.filterQuestions(this.exportInfo.QuestionList)
|
||||
let res = await setTrialQuestionExportResult(params)
|
||||
if (res.IsSuccess) {
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
|
@ -124,6 +106,36 @@ export default {
|
|||
console.log(e)
|
||||
}
|
||||
},
|
||||
filterQuestions(arr) {
|
||||
let params= {
|
||||
questionList: [],
|
||||
tableQuestionList: []
|
||||
}
|
||||
for (let i of arr) {
|
||||
if (!i.IsGroup && !i.IsTableQuestion) {
|
||||
params.questionList.push({
|
||||
questionId: i.QuestionId,
|
||||
tableQuestionId: i.TableQuestionId,
|
||||
exportResult: i.ExportResult,
|
||||
CDISCCode: i.CDISCCode
|
||||
})
|
||||
}
|
||||
if (i.TableQuestionId) {
|
||||
params.tableQuestionList.push({
|
||||
questionId: i.QuestionId,
|
||||
tableQuestionId: i.TableQuestionId,
|
||||
exportResult: i.ExportResult,
|
||||
CDISCCode: i.CDISCCode
|
||||
})
|
||||
}
|
||||
if (i.Children && i.Children.length > 0) {
|
||||
const childResults = this.filterQuestions(i.Children)
|
||||
params.questionList = params.questionList.concat(childResults.questionList)
|
||||
params.tableQuestionList = params.tableQuestionList.concat(childResults.tableQuestionList)
|
||||
}
|
||||
}
|
||||
return params;
|
||||
},
|
||||
// 获取状态
|
||||
getCheckState(item, code) {
|
||||
return item.row.ExportResult.indexOf(code) > -1
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
style="margin-right: 10px"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
|
@ -491,6 +492,7 @@ export default {
|
|||
.participant-container {
|
||||
height: 100%;
|
||||
.el-header {
|
||||
padding-right: 5px;
|
||||
.filter-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
/>
|
||||
<el-table-column
|
||||
:label="$t('trials:sysDocBeSigned:table:uploadTime')"
|
||||
prop="UpdateTime"
|
||||
prop="CreateTime"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
|
@ -168,7 +168,7 @@ const searchDataDefault = () => {
|
|||
pageIndex: 1,
|
||||
pageSize: 20,
|
||||
asc: false,
|
||||
sortField: 'UpdateTime',
|
||||
sortField: 'CreateTime',
|
||||
}
|
||||
}
|
||||
export default {
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
/>
|
||||
<el-table-column
|
||||
:label="$t('trials:sysDocBeSigned:table:uploadTime')"
|
||||
prop="UpdateTime"
|
||||
prop="CreateTime"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
|
@ -130,7 +130,7 @@ const searchDataDefault = () => {
|
|||
pageIndex: 1,
|
||||
pageSize: 20,
|
||||
asc: false,
|
||||
sortField: 'UpdateTime'
|
||||
sortField: 'CreateTime'
|
||||
}
|
||||
}
|
||||
export default {
|
||||
|
|
Loading…
Reference in New Issue