Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
6c50257972
|
@ -120,6 +120,7 @@
|
||||||
v-if="item.type === 'Daterange'"
|
v-if="item.type === 'Daterange'"
|
||||||
v-model="searchData[item.prop]"
|
v-model="searchData[item.prop]"
|
||||||
type="datetimerange"
|
type="datetimerange"
|
||||||
|
:default-time="['00:00:00', '23:59:59']"
|
||||||
:range-separator="$t('baseForm:daterange:rangeSeparator')"
|
:range-separator="$t('baseForm:daterange:rangeSeparator')"
|
||||||
:start-placeholder="$t('baseForm:daterange:startPlaceholder')"
|
:start-placeholder="$t('baseForm:daterange:startPlaceholder')"
|
||||||
:end-placeholder="$t('baseForm:daterange:startendPlaceholder')"
|
:end-placeholder="$t('baseForm:daterange:startendPlaceholder')"
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
type="primary"
|
type="primary"
|
||||||
size="small"
|
size="small"
|
||||||
@click="save"
|
@click="save"
|
||||||
|
:disabled="saveDisabled"
|
||||||
:loading="loading"
|
:loading="loading"
|
||||||
v-if="hasRole"
|
v-if="hasRole"
|
||||||
>
|
>
|
||||||
|
@ -78,6 +79,9 @@ export default {
|
||||||
hasRole() {
|
hasRole() {
|
||||||
return this.roles && this.roles.length > 0
|
return this.roles && this.roles.length > 0
|
||||||
},
|
},
|
||||||
|
saveDisabled() {
|
||||||
|
return this.form.userRoleId === zzSessionStorage.getItem('userId')
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
cancel() {
|
cancel() {
|
||||||
|
@ -98,11 +102,13 @@ export default {
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.roles {
|
.roles {
|
||||||
width: 100%;
|
max-width: 365px;
|
||||||
|
width: fit-content;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-content: center;
|
align-content: center;
|
||||||
justify-content: center;
|
// justify-content: center;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
margin: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
/deep/ .el-radio__original {
|
/deep/ .el-radio__original {
|
||||||
|
@ -113,4 +119,7 @@ export default {
|
||||||
.el-radio__inner {
|
.el-radio__inner {
|
||||||
box-shadow: none !important;
|
box-shadow: none !important;
|
||||||
}
|
}
|
||||||
|
.el-radio {
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
|
@ -14,13 +14,13 @@
|
||||||
|
|
||||||
<div class="right-menu">
|
<div class="right-menu">
|
||||||
<div class="navbar-flex-wrapper">
|
<div class="navbar-flex-wrapper">
|
||||||
<template v-if="device!=='mobile'">
|
<template v-if="device !== 'mobile'">
|
||||||
<screenfull id="screenfull" class="right-menu-item hover-effect" />
|
<screenfull id="screenfull" class="right-menu-item hover-effect" />
|
||||||
</template>
|
</template>
|
||||||
<!-- <div class="avatar-container">
|
<!-- <div class="avatar-container">
|
||||||
<img src="@/assets/avatar.png" class="user-avatar">
|
<img src="@/assets/avatar.png" class="user-avatar">
|
||||||
</div> -->
|
</div> -->
|
||||||
<div style="margin-left:20px;">
|
<div style="margin-left: 20px">
|
||||||
<el-dropdown class="dropdown-container" trigger="click">
|
<el-dropdown class="dropdown-container" trigger="click">
|
||||||
<span class="el-dropdown-link">
|
<span class="el-dropdown-link">
|
||||||
{{ `${name} (${userTypeShortName})` }}
|
{{ `${name} (${userTypeShortName})` }}
|
||||||
|
@ -30,10 +30,20 @@
|
||||||
</span>
|
</span>
|
||||||
<el-dropdown-menu slot="dropdown" class="user-dropdown">
|
<el-dropdown-menu slot="dropdown" class="user-dropdown">
|
||||||
<el-dropdown-item v-if="!isReviewer">
|
<el-dropdown-item v-if="!isReviewer">
|
||||||
<span style="display:block;" @click="editInfo">{{$t('system:navbar:button:Profile')}}</span>
|
<span style="display: block" @click="editInfo">{{
|
||||||
|
$t('system:navbar:button:Profile')
|
||||||
|
}}</span>
|
||||||
|
</el-dropdown-item>
|
||||||
|
<!-- 切换角色 -->
|
||||||
|
<el-dropdown-item divided v-if="hasRole">
|
||||||
|
<span style="display: block" @click="openToggleRole">{{
|
||||||
|
$t('system:navbar:button:toggleRole')
|
||||||
|
}}</span>
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
<el-dropdown-item divided>
|
<el-dropdown-item divided>
|
||||||
<span style="display:block;" @click="logout">{{$t('system:navbar:button:Log Out')}}</span>
|
<span style="display: block" @click="logout">{{
|
||||||
|
$t('system:navbar:button:Log Out')
|
||||||
|
}}</span>
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
|
@ -41,38 +51,119 @@
|
||||||
<TopLang></TopLang>
|
<TopLang></TopLang>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<toggleRole
|
||||||
|
v-if="toggleRoleVisible"
|
||||||
|
:visible.sync="toggleRoleVisible"
|
||||||
|
:loading="toggleRoleLoading"
|
||||||
|
@save="loginByRole"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import {mapGetters, mapMutations} from 'vuex'
|
import { mapGetters, mapMutations } from 'vuex'
|
||||||
import Breadcrumb from '@/components/Breadcrumb'
|
import Breadcrumb from '@/components/Breadcrumb'
|
||||||
import Hamburger from '@/components/Hamburger'
|
import Hamburger from '@/components/Hamburger'
|
||||||
import Screenfull from '@/components/Screenfull'
|
import Screenfull from '@/components/Screenfull'
|
||||||
import TopLang from './topLang'
|
import TopLang from './topLang'
|
||||||
|
import toggleRole from '@/components/toggleRole'
|
||||||
|
import { resetRouter } from '@/router'
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
Breadcrumb,
|
Breadcrumb,
|
||||||
Hamburger,
|
Hamburger,
|
||||||
Screenfull,
|
Screenfull,
|
||||||
TopLang
|
TopLang,
|
||||||
|
toggleRole,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
isReviewer: false,
|
isReviewer: false,
|
||||||
userTypeShortName: zzSessionStorage.getItem('userTypeShortName')
|
toggleRoleVisible: false,
|
||||||
|
toggleRoleLoading: false,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(['sidebar', 'name', 'device'])
|
...mapGetters(['sidebar', 'name', 'device', 'userTypeShortName']),
|
||||||
|
roles() {
|
||||||
|
return this.$store.state.user.roles
|
||||||
|
},
|
||||||
|
hasRole() {
|
||||||
|
return this.roles && this.roles.length > 1
|
||||||
|
},
|
||||||
},
|
},
|
||||||
created() {
|
created() {
|
||||||
// this.isReviewer = JSON.parse(zzSessionStorage.getItem('IsReviewer'))
|
// this.isReviewer = JSON.parse(zzSessionStorage.getItem('IsReviewer'))
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations({ setLanguage: 'lang/setLanguage' }),
|
...mapMutations({ setLanguage: 'lang/setLanguage' }),
|
||||||
|
openToggleRole() {
|
||||||
|
this.$store.dispatch('user/getUserInfo').then((res) => {
|
||||||
|
this.toggleRoleVisible = true
|
||||||
|
})
|
||||||
|
},
|
||||||
|
loginByRole(userRoleId) {
|
||||||
|
if (this.$store.state.user.userId === userRoleId) {
|
||||||
|
this.toggleRoleVisible = false
|
||||||
|
this.toggleRoleLoading = false
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
this.toggleRoleLoading = true
|
||||||
|
this.$store
|
||||||
|
.dispatch('user/loginByRole', { userRoleId })
|
||||||
|
.then((res) => {
|
||||||
|
if (res) {
|
||||||
|
this.$store
|
||||||
|
.dispatch('permission/generateRoutes')
|
||||||
|
.then(async (res) => {
|
||||||
|
if (res && res.length > 0) {
|
||||||
|
resetRouter()
|
||||||
|
await this.$store.dispatch('global/getNoticeList')
|
||||||
|
this.$router.addRoutes(res)
|
||||||
|
this.toggleRoleLoading = false
|
||||||
|
if (this.loginType === 'DevOps') {
|
||||||
|
this.$router.replace({ path: res[0].path })
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (this.hasPermi(['role:radmin'])) {
|
||||||
|
this.$router.replace({ path: res[0].path })
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (
|
||||||
|
this.hasPermi([
|
||||||
|
'role:air',
|
||||||
|
'role:rpm',
|
||||||
|
'role:rcrc',
|
||||||
|
'role:rir',
|
||||||
|
])
|
||||||
|
) {
|
||||||
|
history.replaceState(null, null, '/trials/trials-list')
|
||||||
|
history.go(0)
|
||||||
|
} else {
|
||||||
|
history.replaceState(null, null, '/trials/trials-workbench')
|
||||||
|
history.go(0)
|
||||||
|
}
|
||||||
|
this.toggleRoleVisible = false
|
||||||
|
this.toggleRoleLoading = false
|
||||||
|
this.$EventBus.$emit('reload')
|
||||||
|
} else {
|
||||||
|
// 此账户暂未配置菜单权限,请联系管理员处理后再登录。
|
||||||
|
this.toggleRoleLoading = false
|
||||||
|
this.$message.warning(this.$t('login:message:login2'))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err)
|
||||||
|
this.toggleRoleLoading = false
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
this.toggleRoleLoading = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.toggleRoleLoading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
toggleSideBar() {
|
toggleSideBar() {
|
||||||
this.$store.dispatch('app/toggleSideBar')
|
this.$store.dispatch('app/toggleSideBar')
|
||||||
},
|
},
|
||||||
|
@ -91,16 +182,16 @@ export default {
|
||||||
editInfo() {
|
editInfo() {
|
||||||
this.$router.push({ name: 'BaiscInfo' })
|
this.$router.push({ name: 'BaiscInfo' })
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.navbar-flex-wrapper{
|
.navbar-flex-wrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
.navbar {
|
.navbar {
|
||||||
height: 50px;
|
height: 50px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
|
@ -308,6 +308,8 @@ export default {
|
||||||
Img1,
|
Img1,
|
||||||
toggleRoleVisible: false,
|
toggleRoleVisible: false,
|
||||||
toggleRoleLoading: false,
|
toggleRoleLoading: false,
|
||||||
|
|
||||||
|
LoginState: 0,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
@ -383,10 +385,12 @@ export default {
|
||||||
loginIn(Id) {
|
loginIn(Id) {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
this.showCode = false
|
this.showCode = false
|
||||||
|
this.LoginState = 0
|
||||||
if (Id) this.loginForm.UserId = Id
|
if (Id) this.loginForm.UserId = Id
|
||||||
this.$store
|
this.$store
|
||||||
.dispatch('user/login', this.loginForm)
|
.dispatch('user/login', this.loginForm)
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
|
this.LoginState = res.BasicInfo.LoginState
|
||||||
if (res.BasicInfo.IsFirstAdd) {
|
if (res.BasicInfo.IsFirstAdd) {
|
||||||
// 当前用户为首次登录,请先修改密码之后再次登录
|
// 当前用户为首次登录,请先修改密码之后再次登录
|
||||||
this.$message.success(this.$t('login:message:login1'))
|
this.$message.success(this.$t('login:message:login1'))
|
||||||
|
@ -422,11 +426,12 @@ export default {
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
} else if (res.BasicInfo.LoginState === 2) {
|
|
||||||
// 本次登录的IP或设备与上次不一致,请确认'
|
|
||||||
// this.$alert(this.$t('login:message:login4'), this.$t('common:title:warning'))
|
|
||||||
this.$message.warning(this.$t('login:message:login4'))
|
|
||||||
}
|
}
|
||||||
|
// else if (res.BasicInfo.LoginState === 2) {
|
||||||
|
// // 本次登录的IP或设备与上次不一致,请确认'
|
||||||
|
// // this.$alert(this.$t('login:message:login4'), this.$t('common:title:warning'))
|
||||||
|
// this.$message.warning(this.$t('login:message:login4'))
|
||||||
|
// }
|
||||||
if (
|
if (
|
||||||
Array.isArray(this.$store.state.user.roles) &&
|
Array.isArray(this.$store.state.user.roles) &&
|
||||||
this.$store.state.user.roles.length === 1
|
this.$store.state.user.roles.length === 1
|
||||||
|
@ -455,6 +460,9 @@ export default {
|
||||||
if (res && res.length > 0) {
|
if (res && res.length > 0) {
|
||||||
this.$store.dispatch('global/getNoticeList')
|
this.$store.dispatch('global/getNoticeList')
|
||||||
this.$router.addRoutes(res)
|
this.$router.addRoutes(res)
|
||||||
|
if (this.LoginState === 2) {
|
||||||
|
this.$message.warning(this.$t('login:message:login4'))
|
||||||
|
}
|
||||||
if (this.loginType === 'DevOps') {
|
if (this.loginType === 'DevOps') {
|
||||||
this.$router.replace({ path: res[0].path })
|
this.$router.replace({ path: res[0].path })
|
||||||
return
|
return
|
||||||
|
|
|
@ -49,6 +49,8 @@ export default {
|
||||||
title: this.$t('system:loginLog:dialog:title'),
|
title: this.$t('system:loginLog:dialog:title'),
|
||||||
width: '500px',
|
width: '500px',
|
||||||
top: '10vh',
|
top: '10vh',
|
||||||
|
appendToBody: true,
|
||||||
|
bodyStyle: `min-height: 100px; max-height: 650px;overflow-y: auto;padding: 10px;border: 1px solid #e0e0e0;`,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -86,4 +88,9 @@ export default {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
::v-deep .el-form-item__label {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -123,13 +123,13 @@
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
sortable="custom"
|
sortable="custom"
|
||||||
/>
|
/>
|
||||||
<el-table-column
|
<!-- <el-table-column
|
||||||
:label="$t('system:loginLog:table:LoginFaildName')"
|
:label="$t('system:loginLog:table:LoginFaildName')"
|
||||||
prop="LoginFaildName"
|
prop="LoginFaildName"
|
||||||
min-width="180"
|
min-width="180"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
sortable="custom"
|
sortable="custom"
|
||||||
/>
|
/> -->
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:label="$t('system:loginLog:table:LoginUserName')"
|
:label="$t('system:loginLog:table:LoginUserName')"
|
||||||
prop="ActionUserName"
|
prop="ActionUserName"
|
||||||
|
@ -137,6 +137,13 @@
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
sortable="custom"
|
sortable="custom"
|
||||||
/>
|
/>
|
||||||
|
<el-table-column
|
||||||
|
:label="$t('system:loginLog:table:Aetionlserlype')"
|
||||||
|
prop="ActionUserType"
|
||||||
|
min-width="100"
|
||||||
|
show-overflow-tooltip
|
||||||
|
sortable="custom"
|
||||||
|
/>
|
||||||
<!-- <el-table-column
|
<!-- <el-table-column
|
||||||
:label="$t('system:loginLog:table:LoginUserType')"
|
:label="$t('system:loginLog:table:LoginUserType')"
|
||||||
prop="LoginUserTypeEnum"
|
prop="LoginUserTypeEnum"
|
||||||
|
|
|
@ -89,7 +89,7 @@
|
||||||
>
|
>
|
||||||
<template v-for="userType of userTypeOptions">
|
<template v-for="userType of userTypeOptions">
|
||||||
<el-option
|
<el-option
|
||||||
v-if="userType.UserTypeEnum !== 20"
|
v-if="![4, 6, 20].includes(userType.UserTypeEnum)"
|
||||||
:key="userType.Id"
|
:key="userType.Id"
|
||||||
:label="userType.UserType"
|
:label="userType.UserType"
|
||||||
:value="userType.Id"
|
:value="userType.Id"
|
||||||
|
@ -109,7 +109,7 @@
|
||||||
>
|
>
|
||||||
<template v-for="userType of userTypeOptions">
|
<template v-for="userType of userTypeOptions">
|
||||||
<el-option
|
<el-option
|
||||||
v-if="userType.UserTypeEnum !== 20"
|
v-if="![4, 6, 20].includes(userType.UserTypeEnum)"
|
||||||
:key="userType.Id"
|
:key="userType.Id"
|
||||||
:label="userType.UserType"
|
:label="userType.UserType"
|
||||||
:value="userType.Id"
|
:value="userType.Id"
|
||||||
|
|
|
@ -155,7 +155,8 @@ export default {
|
||||||
roleList() {
|
roleList() {
|
||||||
let arr = this.list.map((item) => item.UserTypeId)
|
let arr = this.list.map((item) => item.UserTypeId)
|
||||||
return this.userTypeOptions.filter(
|
return this.userTypeOptions.filter(
|
||||||
(item) => !arr.includes(item.Id) && item.UserTypeEnum !== 20
|
(item) =>
|
||||||
|
!arr.includes(item.Id) && ![4, 6, 20].includes(item.UserTypeEnum)
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -40,13 +40,13 @@
|
||||||
Array.isArray(scope.row.UserRoleList) &&
|
Array.isArray(scope.row.UserRoleList) &&
|
||||||
scope.row.UserRoleList.length > 0
|
scope.row.UserRoleList.length > 0
|
||||||
? scope.row.UserRoleList.map((item) => item.UserTypeShortName).join(
|
? scope.row.UserRoleList.map((item) => item.UserTypeShortName).join(
|
||||||
','
|
', '
|
||||||
)
|
)
|
||||||
: ''
|
: ''
|
||||||
}}
|
}}
|
||||||
</template>
|
</template>
|
||||||
<template slot="roleSlot" slot-scope="{ scope }">
|
<template slot="roleSlot" slot-scope="{ scope }">
|
||||||
{{ scope.row.RoleNameList.map((role) => role.RoleName).join(',') }}
|
{{ scope.row.RoleNameList.map((role) => role.RoleName).join(', ') }}
|
||||||
</template>
|
</template>
|
||||||
<template slot="isZhiZhunSlot" slot-scope="{ scope }">
|
<template slot="isZhiZhunSlot" slot-scope="{ scope }">
|
||||||
{{
|
{{
|
||||||
|
@ -95,8 +95,12 @@ const searchDataDefault = () => {
|
||||||
RealName: '',
|
RealName: '',
|
||||||
BeginCreateTime: '',
|
BeginCreateTime: '',
|
||||||
EndCreateTime: '',
|
EndCreateTime: '',
|
||||||
|
EndLastLoginTime: null,
|
||||||
|
EndLastChangePassWordTime: null,
|
||||||
|
BeginLastChangePassWordTime: null,
|
||||||
CreateTimeArr: [],
|
CreateTimeArr: [],
|
||||||
LastLoginTimeArr: [],
|
LastLoginTimeArr: [],
|
||||||
|
LastChangePassWordTimeArr: [],
|
||||||
SortField: 'CreateTime',
|
SortField: 'CreateTime',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -202,6 +206,13 @@ export default {
|
||||||
sortable: 'custom',
|
sortable: 'custom',
|
||||||
showOverflowTooltip: true,
|
showOverflowTooltip: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
prop: 'LastChangePassWordTime',
|
||||||
|
label: this.$t('system:userlist:table:LastChangePassWordTime'),
|
||||||
|
minWidth: 250,
|
||||||
|
sortable: 'custom',
|
||||||
|
showOverflowTooltip: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
prop: 'CreateTime',
|
prop: 'CreateTime',
|
||||||
label: this.$t('system:userlist:table:createTime'),
|
label: this.$t('system:userlist:table:createTime'),
|
||||||
|
@ -213,7 +224,7 @@ export default {
|
||||||
type: 'operate',
|
type: 'operate',
|
||||||
label: this.$t('common:action:action'),
|
label: this.$t('common:action:action'),
|
||||||
minWidth: 200,
|
minWidth: 200,
|
||||||
fixed:"right",
|
fixed: 'right',
|
||||||
operates: [
|
operates: [
|
||||||
{
|
{
|
||||||
name: this.$t('common:button:edit'),
|
name: this.$t('common:button:edit'),
|
||||||
|
@ -338,6 +349,13 @@ export default {
|
||||||
width: '400px',
|
width: '400px',
|
||||||
placeholder: '',
|
placeholder: '',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type: 'Daterange',
|
||||||
|
label: this.$t('system:userlist:label:LastChangePassWordTime'),
|
||||||
|
prop: 'LastChangePassWordTimeArr',
|
||||||
|
width: '400px',
|
||||||
|
placeholder: '',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
type: 'Daterange',
|
type: 'Daterange',
|
||||||
label: this.$t('system:userlist:label:CreateTime'),
|
label: this.$t('system:userlist:label:CreateTime'),
|
||||||
|
@ -442,6 +460,12 @@ export default {
|
||||||
this.searchData.BeginLastLoginTime = this.searchData.LastLoginTimeArr[0]
|
this.searchData.BeginLastLoginTime = this.searchData.LastLoginTimeArr[0]
|
||||||
this.searchData.EndLastLoginTime = this.searchData.LastLoginTimeArr[1]
|
this.searchData.EndLastLoginTime = this.searchData.LastLoginTimeArr[1]
|
||||||
}
|
}
|
||||||
|
if (this.searchData.LastChangePassWordTimeArr.length > 0) {
|
||||||
|
this.searchData.BeginLastChangePassWordTime =
|
||||||
|
this.searchData.LastChangePassWordTimeArr[0]
|
||||||
|
this.searchData.EndLastChangePassWordTime =
|
||||||
|
this.searchData.LastChangePassWordTimeArr[1]
|
||||||
|
}
|
||||||
this.getList()
|
this.getList()
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
@ -127,7 +127,7 @@
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
<!-- 修改 -->
|
<!-- 修改 -->
|
||||||
<el-button
|
<el-button
|
||||||
:disabled="!userRoleId"
|
:disabled="!userRoleId || saveDisabled"
|
||||||
class="saveBtn"
|
class="saveBtn"
|
||||||
:loading="toggleRoleLoading"
|
:loading="toggleRoleLoading"
|
||||||
type="primary"
|
type="primary"
|
||||||
|
@ -215,6 +215,9 @@ export default {
|
||||||
hasRole() {
|
hasRole() {
|
||||||
return this.roles && this.roles.length > 1
|
return this.roles && this.roles.length > 1
|
||||||
},
|
},
|
||||||
|
saveDisabled() {
|
||||||
|
return this.userRoleId === zzSessionStorage.getItem('userId')
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 切换角色
|
// 切换角色
|
||||||
|
@ -336,4 +339,12 @@ export default {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-radio-group {
|
||||||
|
margin-top: 12px;
|
||||||
|
}
|
||||||
|
.el-radio {
|
||||||
|
width: 60px;
|
||||||
|
}
|
||||||
|
</style>
|
|
@ -307,23 +307,21 @@
|
||||||
</div>
|
</div>
|
||||||
</el-upload>
|
</el-upload>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="adInfo.ReadingTaskState < 2">
|
|
||||||
<div style="text-align: center">
|
|
||||||
<el-button type="primary" @click="skipTask">
|
|
||||||
<!-- 跳过 -->
|
|
||||||
{{ $t("trials:readingReport:button:skip") }}
|
|
||||||
</el-button>
|
|
||||||
<!-- 保存 -->
|
|
||||||
<el-button type="primary" @click="handleSave">{{
|
|
||||||
$t("common:button:save")
|
|
||||||
}}</el-button>
|
|
||||||
<!-- 提交 -->
|
|
||||||
<el-button type="primary" @click="handleSubmit">{{
|
|
||||||
$t("common:button:submit")
|
|
||||||
}}</el-button>
|
|
||||||
</div>
|
|
||||||
</el-form-item>
|
|
||||||
</el-form>
|
</el-form>
|
||||||
|
<div style="text-align: center;width:100%" v-if="adInfo.ReadingTaskState < 2">
|
||||||
|
<el-button type="primary" @click="skipTask">
|
||||||
|
<!-- 跳过 -->
|
||||||
|
{{ $t("trials:readingReport:button:skip") }}
|
||||||
|
</el-button>
|
||||||
|
<!-- 保存 -->
|
||||||
|
<el-button type="primary" @click="handleSave">{{
|
||||||
|
$t("common:button:save")
|
||||||
|
}}</el-button>
|
||||||
|
<!-- 提交 -->
|
||||||
|
<el-button type="primary" @click="handleSubmit">{{
|
||||||
|
$t("common:button:submit")
|
||||||
|
}}</el-button>
|
||||||
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<el-card
|
<el-card
|
||||||
|
|
|
@ -140,7 +140,7 @@
|
||||||
<span>{{
|
<span>{{
|
||||||
scope.row.TrialUserRoleList.map(
|
scope.row.TrialUserRoleList.map(
|
||||||
(item) => item.UserTypeShortName
|
(item) => item.UserTypeShortName
|
||||||
).join(',')
|
).join(', ')
|
||||||
}}</span>
|
}}</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<el-container class="participant-container">
|
<el-container class="participant-container">
|
||||||
<el-header style="height:50px">
|
<el-header style="height: 50px">
|
||||||
<div class="filter-container">
|
<div class="filter-container">
|
||||||
<!-- 姓名 -->
|
<!-- 姓名 -->
|
||||||
<span>{{ $t('trials:externalStaff:table:name') }}:</span>
|
<span>{{ $t('trials:externalStaff:table:name') }}:</span>
|
||||||
|
@ -12,23 +12,54 @@
|
||||||
<span>{{ $t('trials:externalStaff:table:phone') }}:</span>
|
<span>{{ $t('trials:externalStaff:table:phone') }}:</span>
|
||||||
<el-input v-model="listQuery.Phone" size="mini" class="mr" clearable />
|
<el-input v-model="listQuery.Phone" size="mini" class="mr" clearable />
|
||||||
<!-- 查询 -->
|
<!-- 查询 -->
|
||||||
<el-button type="primary" size="mini" icon="el-icon-search" @click="handleSearch">
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
size="mini"
|
||||||
|
icon="el-icon-search"
|
||||||
|
@click="handleSearch"
|
||||||
|
>
|
||||||
{{ $t('common:button:search') }}
|
{{ $t('common:button:search') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 重置 -->
|
<!-- 重置 -->
|
||||||
<el-button size="mini" type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
<el-button
|
||||||
|
size="mini"
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-refresh-left"
|
||||||
|
@click="handleReset"
|
||||||
|
>
|
||||||
{{ $t('common:button:reset') }}
|
{{ $t('common:button:reset') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 权限配置 -->
|
<!-- 权限配置 -->
|
||||||
<el-button type="primary" size="mini" style="margin-left:auto" :loading="assignLoadStatus" @click="openPermission">
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
size="mini"
|
||||||
|
style="margin-left: auto"
|
||||||
|
:loading="assignLoadStatus"
|
||||||
|
@click="openPermission"
|
||||||
|
>
|
||||||
{{ $t('trials:staff:button:permissionConfiguration') }}
|
{{ $t('trials:staff:button:permissionConfiguration') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 发送邮件 -->
|
<!-- 发送邮件 -->
|
||||||
<el-button type="primary" size="mini" style="margin-left:10px" :disabled="selectArr.length === 0" :loading="assignLoadStatus" icon="el-icon-message" @click="sendEmail">
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
size="mini"
|
||||||
|
style="margin-left: 10px"
|
||||||
|
:disabled="selectArr.length === 0"
|
||||||
|
:loading="assignLoadStatus"
|
||||||
|
icon="el-icon-message"
|
||||||
|
@click="sendEmail"
|
||||||
|
>
|
||||||
{{ $t('trials:staff:button:sendEmail') }}
|
{{ $t('trials:staff:button:sendEmail') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 添加 -->
|
<!-- 添加 -->
|
||||||
<el-button type="primary" icon="el-icon-plus" size="mini" style="margin-left:10px" :loading="assignLoadStatus" @click="handleAdd">
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-plus"
|
||||||
|
size="mini"
|
||||||
|
style="margin-left: 10px"
|
||||||
|
:loading="assignLoadStatus"
|
||||||
|
@click="handleAdd"
|
||||||
|
>
|
||||||
{{ $t('trials:staff:button:addExternalStaff') }}
|
{{ $t('trials:staff:button:addExternalStaff') }}
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
@ -57,7 +88,9 @@
|
||||||
sortable="custom"
|
sortable="custom"
|
||||||
min-width="100"
|
min-width="100"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">{{ scope.row.LastName + ' / ' + scope.row.FirstName }}</template>
|
<template slot-scope="scope">{{
|
||||||
|
scope.row.LastName + ' / ' + scope.row.FirstName
|
||||||
|
}}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="UserType"
|
prop="UserType"
|
||||||
|
@ -67,7 +100,13 @@
|
||||||
min-width="120"
|
min-width="120"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
{{ userTypeOptions.length > 0 ? userTypeOptions.find((v) => { return v.Id == scope.row.UserTypeId }).UserTypeShortName : '' }}
|
{{
|
||||||
|
userTypeOptions.length > 0
|
||||||
|
? userTypeOptions.find((v) => {
|
||||||
|
return v.Id == scope.row.UserTypeId
|
||||||
|
}).UserTypeShortName
|
||||||
|
: ''
|
||||||
|
}}
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
|
@ -100,9 +139,15 @@
|
||||||
sortable="custom"
|
sortable="custom"
|
||||||
min-width="120"
|
min-width="120"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">{{ $fd('IsJoin', scope.row.IsJoin) }}</template>
|
<template slot-scope="scope">{{
|
||||||
|
$fd('IsJoin', scope.row.IsJoin)
|
||||||
|
}}</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column :label="$t('common:action:action')" fixed="right" min-width="150">
|
<el-table-column
|
||||||
|
:label="$t('common:action:action')"
|
||||||
|
fixed="right"
|
||||||
|
min-width="150"
|
||||||
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
circle
|
circle
|
||||||
|
@ -116,23 +161,57 @@
|
||||||
</el-table>
|
</el-table>
|
||||||
</div>
|
</div>
|
||||||
</el-main>
|
</el-main>
|
||||||
<StaffExternalAdd ref="StaffExternalAdd" :user-type-options="userTypeOptions" @getList="refeshList" />
|
<StaffExternalAdd
|
||||||
|
ref="StaffExternalAdd"
|
||||||
|
:user-type-options="userTypeOptions"
|
||||||
|
@getList="refeshList"
|
||||||
|
/>
|
||||||
<base-model v-if="model_config.visible" :config="model_config">
|
<base-model v-if="model_config.visible" :config="model_config">
|
||||||
<template slot="dialog-body">
|
<template slot="dialog-body">
|
||||||
<el-form :model="permission" :rules="permissionRole" ref="permissionForm" label-width="140px" class="demo-ruleForm">
|
<el-form
|
||||||
<el-form-item :label="$t('trials:externalStaff:form:IsSPMJoinReReadingApproval')" prop="IsSPMJoinReReadingApproval">
|
:model="permission"
|
||||||
|
:rules="permissionRole"
|
||||||
|
ref="permissionForm"
|
||||||
|
label-width="140px"
|
||||||
|
class="demo-ruleForm"
|
||||||
|
>
|
||||||
|
<el-form-item
|
||||||
|
:label="$t('trials:externalStaff:form:IsSPMJoinReReadingApproval')"
|
||||||
|
prop="IsSPMJoinReReadingApproval"
|
||||||
|
>
|
||||||
<el-radio-group v-model="permission.IsSPMJoinReReadingApproval">
|
<el-radio-group v-model="permission.IsSPMJoinReReadingApproval">
|
||||||
<el-radio v-for="item in $d.YesOrNo" :key="item.id" :label="item.value">{{ item.label }}</el-radio>
|
<el-radio
|
||||||
|
v-for="item in $d.YesOrNo"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.value"
|
||||||
|
>{{ item.label }}</el-radio
|
||||||
|
>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('trials:externalStaff:form:IsSPMJoinReviewerSelect')" prop="IsSPMJoinReviewerSelect">
|
<el-form-item
|
||||||
|
:label="$t('trials:externalStaff:form:IsSPMJoinReviewerSelect')"
|
||||||
|
prop="IsSPMJoinReviewerSelect"
|
||||||
|
>
|
||||||
<el-radio-group v-model="permission.IsSPMJoinReviewerSelect">
|
<el-radio-group v-model="permission.IsSPMJoinReviewerSelect">
|
||||||
<el-radio v-for="item in $d.YesOrNo" :key="item.id" :label="item.value">{{ item.label }}</el-radio>
|
<el-radio
|
||||||
|
v-for="item in $d.YesOrNo"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.value"
|
||||||
|
>{{ item.label }}</el-radio
|
||||||
|
>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item :label="$t('trials:externalStaff:form:IsSPMJoinSiteSurvey')" prop="IsSPMJoinSiteSurvey">
|
<el-form-item
|
||||||
|
:label="$t('trials:externalStaff:form:IsSPMJoinSiteSurvey')"
|
||||||
|
prop="IsSPMJoinSiteSurvey"
|
||||||
|
>
|
||||||
<el-radio-group v-model="permission.IsSPMJoinSiteSurvey">
|
<el-radio-group v-model="permission.IsSPMJoinSiteSurvey">
|
||||||
<el-radio v-for="item in $d.YesOrNo" :key="item.id" :label="item.value">{{ item.label }}</el-radio>
|
<el-radio
|
||||||
|
v-for="item in $d.YesOrNo"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.value"
|
||||||
|
>{{ item.label }}</el-radio
|
||||||
|
>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
|
@ -159,7 +238,14 @@
|
||||||
</el-container>
|
</el-container>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import { getTrialExternalUserList, addTrialUsers, getUserTypeList, sendExternalUserJoinEmail, getTrialConfigInfo, configTrialSPMInfo } from '@/api/trials'
|
import {
|
||||||
|
getTrialExternalUserList,
|
||||||
|
addTrialUsers,
|
||||||
|
getUserTypeList,
|
||||||
|
sendExternalUserJoinEmail,
|
||||||
|
getTrialConfigInfo,
|
||||||
|
configTrialSPMInfo,
|
||||||
|
} from '@/api/trials'
|
||||||
import { deleteTrialExternalUser } from '@/api/trials/setting.js'
|
import { deleteTrialExternalUser } from '@/api/trials/setting.js'
|
||||||
import StaffExternalAdd from './staffExternalAdd'
|
import StaffExternalAdd from './staffExternalAdd'
|
||||||
import BaseModel from '@/components/BaseModel'
|
import BaseModel from '@/components/BaseModel'
|
||||||
|
@ -167,11 +253,11 @@ const getListQueryDefault = () => {
|
||||||
return {
|
return {
|
||||||
Phone: '',
|
Phone: '',
|
||||||
Email: '',
|
Email: '',
|
||||||
Name: ''
|
Name: '',
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
export default {
|
export default {
|
||||||
components: { StaffExternalAdd,BaseModel },
|
components: { StaffExternalAdd, BaseModel },
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
list: [],
|
list: [],
|
||||||
|
@ -181,17 +267,26 @@ export default {
|
||||||
assignLoadStatus: false,
|
assignLoadStatus: false,
|
||||||
// isAdmin: JSON.parse(zzSessionStorage.getItem('IsAdmin')),
|
// isAdmin: JSON.parse(zzSessionStorage.getItem('IsAdmin')),
|
||||||
userTypeOptions: [],
|
userTypeOptions: [],
|
||||||
stateList: ['WaitSent', 'HasSend', 'UserConfirmed', 'UserReject', 'OverTime'],
|
stateList: [
|
||||||
|
'WaitSent',
|
||||||
|
'HasSend',
|
||||||
|
'UserConfirmed',
|
||||||
|
'UserReject',
|
||||||
|
'OverTime',
|
||||||
|
],
|
||||||
trialId: '',
|
trialId: '',
|
||||||
model_config:{
|
model_config: {
|
||||||
visible: false, title: this.$t('trials:staff:dialogTitle:permissionConfiguration'), width: '500px', appendToBody: true
|
visible: false,
|
||||||
|
title: this.$t('trials:staff:dialogTitle:permissionConfiguration'),
|
||||||
|
width: '500px',
|
||||||
|
appendToBody: true,
|
||||||
},
|
},
|
||||||
permission:{
|
permission: {
|
||||||
IsSPMJoinReReadingApproval: false,
|
IsSPMJoinReReadingApproval: false,
|
||||||
IsSPMJoinReviewerSelect: false,
|
IsSPMJoinReviewerSelect: false,
|
||||||
IsSPMJoinSiteSurvey: false,
|
IsSPMJoinSiteSurvey: false,
|
||||||
},
|
},
|
||||||
permissionRole:{}
|
permissionRole: {},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
@ -201,42 +296,42 @@ export default {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
// 获取权限配置
|
// 获取权限配置
|
||||||
async getPermission(){
|
async getPermission() {
|
||||||
try{
|
try {
|
||||||
let res = await getTrialConfigInfo(this.trialId);
|
let res = await getTrialConfigInfo(this.trialId)
|
||||||
if(res.IsSuccess){
|
if (res.IsSuccess) {
|
||||||
Object.keys(this.permission).forEach(key=>{
|
Object.keys(this.permission).forEach((key) => {
|
||||||
this.permission[key] = res.Result[key]
|
this.permission[key] = res.Result[key]
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}catch(err){
|
} catch (err) {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 打开权限配置弹窗
|
// 打开权限配置弹窗
|
||||||
async openPermission(){
|
async openPermission() {
|
||||||
try{
|
try {
|
||||||
await this.getPermission();
|
await this.getPermission()
|
||||||
this.model_config.visible = true;
|
this.model_config.visible = true
|
||||||
}catch(err){
|
} catch (err) {
|
||||||
console.log(err);
|
console.log(err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 保存权限配置
|
// 保存权限配置
|
||||||
async savePermission(){
|
async savePermission() {
|
||||||
try{
|
try {
|
||||||
let validate =await this.$refs.permissionForm.validate();
|
let validate = await this.$refs.permissionForm.validate()
|
||||||
if(!validate) return false;
|
if (!validate) return false
|
||||||
this.assignLoadStatus = true;
|
this.assignLoadStatus = true
|
||||||
let data = Object.assign({ Id: this.trialId },this.permission)
|
let data = Object.assign({ Id: this.trialId }, this.permission)
|
||||||
let res = await configTrialSPMInfo(data);
|
let res = await configTrialSPMInfo(data)
|
||||||
this.assignLoadStatus = false;
|
this.assignLoadStatus = false
|
||||||
if(res.IsSuccess){
|
if (res.IsSuccess) {
|
||||||
this.model_config.visible = false;
|
this.model_config.visible = false
|
||||||
this.$message.success(this.$t("common:message:updatedSuccessfully"))
|
this.$message.success(this.$t('common:message:updatedSuccessfully'))
|
||||||
}
|
}
|
||||||
}catch(err){
|
} catch (err) {
|
||||||
this.assignLoadStatus = false;
|
this.assignLoadStatus = false
|
||||||
console.log(err)
|
console.log(err)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -249,83 +344,108 @@ export default {
|
||||||
},
|
},
|
||||||
handleEdit(row) {
|
handleEdit(row) {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs['StaffExternalAdd'].openDialog(this.$t('trials:externalStaff:dialogTitle:edit'), row)
|
this.$refs['StaffExternalAdd'].openDialog(
|
||||||
|
this.$t('trials:externalStaff:dialogTitle:edit'),
|
||||||
|
row
|
||||||
|
)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
handleAdd() {
|
handleAdd() {
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.$refs['StaffExternalAdd'].openDialog(this.$t('trials:externalStaff:dialogTitle:add'), {})
|
this.$refs['StaffExternalAdd'].openDialog(
|
||||||
|
this.$t('trials:externalStaff:dialogTitle:add'),
|
||||||
|
{}
|
||||||
|
)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
deleteTrialExternalUser(row) {
|
deleteTrialExternalUser(row) {
|
||||||
this.$confirm(this.$t('trials:externalStaff:message:delete'), {
|
this.$confirm(this.$t('trials:externalStaff:message:delete'), {
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
distinguishCancelAndClose: true
|
distinguishCancelAndClose: true,
|
||||||
|
}).then(() => {
|
||||||
|
this.loading = true
|
||||||
|
deleteTrialExternalUser(row.Id, row.IsSystemUser, row.SystemUserId)
|
||||||
|
.then((res) => {
|
||||||
|
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||||
|
this.getList()
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
})
|
})
|
||||||
.then(() => {
|
|
||||||
this.loading = true
|
|
||||||
deleteTrialExternalUser(row.Id, row.IsSystemUser, row.SystemUserId)
|
|
||||||
.then(res => {
|
|
||||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
|
||||||
this.getList()
|
|
||||||
this.loading = false
|
|
||||||
}).catch(() => { this.loading = false })
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
sendEmail() {
|
sendEmail() {
|
||||||
const loading = this.$loading({
|
const loading = this.$loading({
|
||||||
target: document.querySelector('.participant-table-list'),
|
target: document.querySelector('.participant-table-list'),
|
||||||
fullscreen: false,
|
fullscreen: false,
|
||||||
lock: true
|
lock: true,
|
||||||
})
|
})
|
||||||
// var BaseUrl = document.domain + `/#/login`
|
// var BaseUrl = document.domain + `/#/login`
|
||||||
var BaseUrl = `${location.protocol}//${location.host}/login`
|
var BaseUrl = `${location.protocol}//${location.host}/login`
|
||||||
var joinUrl = `${location.protocol}//${location.host}/email-recompose`
|
var joinUrl = `${location.protocol}//${location.host}/email-recompose`
|
||||||
var sendEmailUserArr = this.selectArr.map((v) => { return { Id: v.Id, Email: v.Email, IsSystemUser: v.IsSystemUser, SystemUserId: v.SystemUserId } })
|
var sendEmailUserArr = this.selectArr.map((v) => {
|
||||||
|
return {
|
||||||
|
Id: v.Id,
|
||||||
|
Email: v.Email,
|
||||||
|
IsSystemUser: v.IsSystemUser,
|
||||||
|
SystemUserId: v.SystemUserId,
|
||||||
|
UserTypeId: v.UserTypeId,
|
||||||
|
}
|
||||||
|
})
|
||||||
sendExternalUserJoinEmail({
|
sendExternalUserJoinEmail({
|
||||||
TrialId: this.trialId,
|
TrialId: this.trialId,
|
||||||
SendUsers: sendEmailUserArr,
|
SendUsers: sendEmailUserArr,
|
||||||
BaseUrl: BaseUrl,
|
BaseUrl: BaseUrl,
|
||||||
RouteUrl: joinUrl
|
RouteUrl: joinUrl,
|
||||||
}).then(() => {
|
})
|
||||||
loading.close()
|
.then(() => {
|
||||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
loading.close()
|
||||||
this.getList()
|
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||||
this.$emit('getList')
|
this.getList()
|
||||||
}).catch(() => { loading.close() })
|
this.$emit('getList')
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
loading.close()
|
||||||
|
})
|
||||||
},
|
},
|
||||||
getList() {
|
getList() {
|
||||||
const loading = this.$loading({
|
const loading = this.$loading({
|
||||||
target: document.querySelector('.participant-table-list'),
|
target: document.querySelector('.participant-table-list'),
|
||||||
fullscreen: false,
|
fullscreen: false,
|
||||||
lock: true
|
lock: true,
|
||||||
})
|
})
|
||||||
this.listQuery.TrialId = this.trialId
|
this.listQuery.TrialId = this.trialId
|
||||||
getTrialExternalUserList(this.listQuery).then(res => {
|
getTrialExternalUserList(this.listQuery)
|
||||||
loading.close()
|
.then((res) => {
|
||||||
this.list = res.Result
|
loading.close()
|
||||||
}).catch(() => { loading.close() })
|
this.list = res.Result
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
loading.close()
|
||||||
|
})
|
||||||
},
|
},
|
||||||
handleAssign() {
|
handleAssign() {
|
||||||
this.$confirm(this.$t('trials:externalStaff:message:add'), {
|
this.$confirm(this.$t('trials:externalStaff:message:add'), {
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
distinguishCancelAndClose: true
|
distinguishCancelAndClose: true,
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
const loading = this.$loading({
|
const loading = this.$loading({
|
||||||
target: document.querySelector('.participant-table-list'),
|
target: document.querySelector('.participant-table-list'),
|
||||||
fullscreen: false,
|
fullscreen: false,
|
||||||
lock: true
|
lock: true,
|
||||||
})
|
})
|
||||||
this.assignLoadStatus = true
|
this.assignLoadStatus = true
|
||||||
addTrialUsers(this.selectArr)
|
addTrialUsers(this.selectArr)
|
||||||
.then(res => {
|
.then((res) => {
|
||||||
this.assignLoadStatus = false
|
this.assignLoadStatus = false
|
||||||
loading.close()
|
loading.close()
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
this.$emit('closeDialog')
|
this.$emit('closeDialog')
|
||||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||||
}
|
}
|
||||||
}).catch(() => {
|
})
|
||||||
|
.catch(() => {
|
||||||
loading.close()
|
loading.close()
|
||||||
this.assignLoadStatus = false
|
this.assignLoadStatus = false
|
||||||
})
|
})
|
||||||
|
@ -360,35 +480,35 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getUserType() {
|
getUserType() {
|
||||||
getUserTypeList(1).then(res => {
|
getUserTypeList(1).then((res) => {
|
||||||
this.userTypeOptions = res.Result
|
this.userTypeOptions = res.Result
|
||||||
})
|
})
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.participant-container{
|
.participant-container {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
.el-header{
|
.el-header {
|
||||||
.filter-container{
|
.filter-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
span{
|
span {
|
||||||
font-size:13px;
|
font-size: 13px;
|
||||||
margin-right:5px;
|
margin-right: 5px;
|
||||||
}
|
}
|
||||||
.mr{
|
.mr {
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
width: 120px;
|
width: 120px;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.el-main{
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
.el-footer{
|
|
||||||
padding: 0 20px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
.el-main {
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
.el-footer {
|
||||||
|
padding: 0 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -72,12 +72,10 @@
|
||||||
"
|
"
|
||||||
:label="item.value"
|
:label="item.value"
|
||||||
v-if="
|
v-if="
|
||||||
(JudgyInfo.ArbitrationRule === 1 &&
|
item.value < 4 ||
|
||||||
(item.value < 4 ||
|
(item.value > 3 &&
|
||||||
(item.value > 3 &&
|
(QuestionList[index].Type === 'number' ||
|
||||||
(QuestionList[index].Type === 'number' ||
|
QuestionList[index].Type === 'calculation'))
|
||||||
QuestionList[index].Type === 'calculation')))) ||
|
|
||||||
(JudgyInfo.ArbitrationRule === 2 && item.value < 4)
|
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
{{ item.label }}
|
{{ item.label }}
|
||||||
|
|
|
@ -135,14 +135,14 @@
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
sortable="custom"
|
sortable="custom"
|
||||||
/> -->
|
/> -->
|
||||||
<el-table-column
|
<!-- <el-table-column
|
||||||
v-if="!isMine"
|
v-if="!isMine"
|
||||||
:label="$t('trials:loginLog:table:incorrectUserName')"
|
:label="$t('trials:loginLog:table:incorrectUserName')"
|
||||||
prop="LoginFaildName"
|
prop="LoginFaildName"
|
||||||
min-width="90"
|
min-width="90"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
sortable="custom"
|
sortable="custom"
|
||||||
/>
|
/> -->
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:label="$t('trials:loginLog:table:userName')"
|
:label="$t('trials:loginLog:table:userName')"
|
||||||
prop="ActionUserName"
|
prop="ActionUserName"
|
||||||
|
@ -150,6 +150,13 @@
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
sortable="custom"
|
sortable="custom"
|
||||||
/>
|
/>
|
||||||
|
<el-table-column
|
||||||
|
:label="$t('trials:loginLog:table:Aetionlserlype')"
|
||||||
|
prop="ActionUserType"
|
||||||
|
min-width="100"
|
||||||
|
show-overflow-tooltip
|
||||||
|
sortable="custom"
|
||||||
|
/>
|
||||||
<!-- <el-table-column
|
<!-- <el-table-column
|
||||||
:label="$t('trials:loginLog:table:userType')"
|
:label="$t('trials:loginLog:table:userType')"
|
||||||
prop="LoginUserTypeEnum"
|
prop="LoginUserTypeEnum"
|
||||||
|
|
|
@ -742,7 +742,10 @@
|
||||||
</el-button>
|
</el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div class="tip" v-if="[0].includes($store.state.trials.config.CollectImagesEnum)">
|
<div
|
||||||
|
class="tip"
|
||||||
|
v-if="[0].includes($store.state.trials.config.CollectImagesEnum)"
|
||||||
|
>
|
||||||
<i class="el-icon-warning-outline"></i>
|
<i class="el-icon-warning-outline"></i>
|
||||||
<div v-html="$t('trials:uploadedDicoms:tip:message')"></div>
|
<div v-html="$t('trials:uploadedDicoms:tip:message')"></div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1754,12 +1757,10 @@ export default {
|
||||||
this.selected.TrialId = this.subjectRowData.TrialId
|
this.selected.TrialId = this.subjectRowData.TrialId
|
||||||
this.selected.SubjectId = this.subjectRowData.SubjectId
|
this.selected.SubjectId = this.subjectRowData.SubjectId
|
||||||
this.isShow = true
|
this.isShow = true
|
||||||
console.log(res)
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
handleView2(row) {
|
handleView2(row) {
|
||||||
console.log(row)
|
|
||||||
this.rowData = { ...row }
|
this.rowData = { ...row }
|
||||||
this.openType = 'look'
|
this.openType = 'look'
|
||||||
this.preview.visible = true
|
this.preview.visible = true
|
||||||
|
@ -1914,7 +1915,6 @@ export default {
|
||||||
this.list = res.Result.CurrentPageData
|
this.list = res.Result.CurrentPageData
|
||||||
this.total = res.Result.TotalCount
|
this.total = res.Result.TotalCount
|
||||||
this.otherInfo = res.OtherInfo
|
this.otherInfo = res.OtherInfo
|
||||||
console.log(this.otherInfo)
|
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
this.loading = false
|
this.loading = false
|
||||||
|
@ -2053,9 +2053,16 @@ export default {
|
||||||
this.otherInfo.ClinicalInformationTransmissionEnum > 0 &&
|
this.otherInfo.ClinicalInformationTransmissionEnum > 0 &&
|
||||||
this.rowData.IsBaseLine
|
this.rowData.IsBaseLine
|
||||||
) {
|
) {
|
||||||
const { ClinicalDataConfirmation } = const_.processSignature
|
getVisitClinicalDataName({ id: this.rowData.Id })
|
||||||
this.signCode = ClinicalDataConfirmation
|
.then((res) => {
|
||||||
this.signVisible = true
|
this.signReplaceText = res.Result.ClinicalDataName
|
||||||
|
const { ClinicalDataConfirmation } = const_.processSignature
|
||||||
|
this.signCode = ClinicalDataConfirmation
|
||||||
|
this.signVisible = true
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err)
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
this.submit()
|
this.submit()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue