Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is passing Details

main
caiyiling 2026-05-13 14:07:49 +08:00
commit dd919f123e
9 changed files with 262 additions and 558 deletions

View File

@ -450,6 +450,7 @@ export default {
let index = 0; let index = 0;
if (seriesId) { if (seriesId) {
index = this.seriesList.findIndex(item => item.seriesId === seriesId) index = this.seriesList.findIndex(item => item.seriesId === seriesId)
this.refreshImage(this.seriesList[index])
} }
this.$refs.dicomViewer.loadImageStack(this.seriesList[index], this.labels[this.tpCode]) this.$refs.dicomViewer.loadImageStack(this.seriesList[index], this.labels[this.tpCode])
this.firstInstanceId = this.seriesList[index].imageIds[0] this.firstInstanceId = this.seriesList[index].imageIds[0]

View File

@ -22,6 +22,11 @@
</el-upload> </el-upload>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item :label="$t('dictionary:signature:form:DocLanguageType')" prop="DocLanguageType">
<el-select v-model="form.DocLanguageType" style="width: 100%">
<el-option v-for="item of $d.DocLanguageType" :key="item.id" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item :label="$t('dictionary:signature:form:NeedConfirmedUserTypeIdList')" <el-form-item :label="$t('dictionary:signature:form:NeedConfirmedUserTypeIdList')"
prop="NeedConfirmedUserTypeIdList"> prop="NeedConfirmedUserTypeIdList">
<el-select v-model="form.NeedConfirmedUserTypeIdList" style="width: 100%" multiple> <el-select v-model="form.NeedConfirmedUserTypeIdList" style="width: 100%" multiple>
@ -83,6 +88,7 @@ export default {
DocUserSignType: 0, DocUserSignType: 0,
CurrentStaffTrainDays: 1, CurrentStaffTrainDays: 1,
NewStaffTrainDays: 14, NewStaffTrainDays: 14,
DocLanguageType: null
}, },
rules: { rules: {
FileTypeId: [ FileTypeId: [
@ -92,6 +98,13 @@ export default {
trigger: ['blur'], trigger: ['blur'],
}, },
], ],
DocLanguageType: [
{
required: true,
message: this.$t('common:ruleMessage:select'),
trigger: ['blur'],
},
],
SignViewMinimumMinutes: [ SignViewMinimumMinutes: [
{ {
required: true, required: true,
@ -143,6 +156,9 @@ export default {
this.form.DocUserSignType = this.data.DocUserSignType this.form.DocUserSignType = this.data.DocUserSignType
this.form.CurrentStaffTrainDays = this.data.CurrentStaffTrainDays this.form.CurrentStaffTrainDays = this.data.CurrentStaffTrainDays
this.form.NewStaffTrainDays = this.data.NewStaffTrainDays this.form.NewStaffTrainDays = this.data.NewStaffTrainDays
this.form.DocLanguageType = this.data.DocLanguageType
} else {
this.form.DocLanguageType = this.$i18n.locale !== 'zh' ? 1 : 0
} }
this.loading = false this.loading = false
}, },

View File

@ -26,6 +26,11 @@
<el-form-item :label="$t('dictionary:signature:search:Name')"> <el-form-item :label="$t('dictionary:signature:search:Name')">
<el-input v-model="searchData.Name" style="width: 130px" clearable /> <el-input v-model="searchData.Name" style="width: 130px" clearable />
</el-form-item> </el-form-item>
<el-form-item :label="$t('dictionary:signature:search:DocLanguageType')">
<el-select v-model="searchData.DocLanguageType" style="width: 150px" clearable>
<el-option v-for="item of $d.DocLanguageType" :key="item.id" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item :label="$t('dictionary:signature:table:NeedConfirmedUserTypes')"> <el-form-item :label="$t('dictionary:signature:table:NeedConfirmedUserTypes')">
<el-select v-model="searchData.UserTypeId" style="width: 150px" clearable> <el-select v-model="searchData.UserTypeId" style="width: 150px" clearable>
<el-option v-for="item of userTypeOptions" :key="item.Id" :label="item.UserTypeShortName" <el-option v-for="item of userTypeOptions" :key="item.Id" :label="item.UserTypeShortName"
@ -90,6 +95,12 @@
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="DocLanguageType" :label="$t('dictionary:signature:table:DocLanguageType')"
show-overflow-tooltip sortable="custom" min-width="120px">
<template slot-scope="scope">
<span>{{ $fd('DocLanguageType', scope.row.DocLanguageType) }}</span>
</template>
</el-table-column>
<el-table-column prop="SignViewMinimumMinutes" :label="$t('dictionary:signature:table:SignViewMinimumMinutes')" <el-table-column prop="SignViewMinimumMinutes" :label="$t('dictionary:signature:table:SignViewMinimumMinutes')"
show-overflow-tooltip sortable="custom" min-width="200px" /> show-overflow-tooltip sortable="custom" min-width="200px" />
<el-table-column prop="CurrentStaffTrainDays" :label="$t('dictionary:signature:table:CurrentStaffTrainDays')" <el-table-column prop="CurrentStaffTrainDays" :label="$t('dictionary:signature:table:CurrentStaffTrainDays')"
@ -161,7 +172,7 @@
<!-- 新增/编辑 --> <!-- 新增/编辑 -->
<el-dialog v-if="editVisible" :visible.sync="editVisible" :close-on-click-modal="false" :title="title" <el-dialog v-if="editVisible" :visible.sync="editVisible" :close-on-click-modal="false" :title="title"
width="600px" custom-class="base-dialog-wrapper"> width="600px" custom-class="base-dialog-wrapper">
<TemplateForm :data="currentRow" @closeDialog="closeDialog" @getList="getList" /> <TemplateForm :data="currentRow" @closeDialog="closeDialog" v-if="editVisible" @getList="getList" />
</el-dialog> </el-dialog>
<!--附件列表--> <!--附件列表-->
<attachmentList v-if="config.visible" :config="config" :rowData="currentRow" :SystemDocumentId="SystemDocumentId" <attachmentList v-if="config.visible" :config="config" :rowData="currentRow" :SystemDocumentId="SystemDocumentId"
@ -200,6 +211,7 @@ const searchDataDefault = () => {
IsDeleted: null, IsDeleted: null,
DocUserSignType: null, DocUserSignType: null,
UserTypeId: null, UserTypeId: null,
DocLanguageType: null,
Name: '', Name: '',
PageIndex: 1, PageIndex: 1,
PageSize: 20, PageSize: 20,

View File

@ -1,13 +1,6 @@
<template> <template>
<el-form <el-form ref="siteForm" v-loading="loading" :model="form" :rules="rules" class="demo-ruleForm" size="small"
ref="siteForm" label-width="150px">
v-loading="loading"
:model="form"
:rules="rules"
class="demo-ruleForm"
size="small"
label-width="150px"
>
<div class="base-dialog-body"> <div class="base-dialog-body">
<!-- Site Code --> <!-- Site Code -->
<el-form-item :label="$t('institutions:sites:label:siteCode')" v-if="form.Id" prop="SiteCode"> <el-form-item :label="$t('institutions:sites:label:siteCode')" v-if="form.Id" prop="SiteCode">
@ -15,17 +8,11 @@
</el-form-item> </el-form-item>
<!-- 中心名称 --> <!-- 中心名称 -->
<el-form-item <el-form-item :label="$t('institutions:sites:label:siteName')" prop="SiteName">
:label="$t('institutions:sites:label:siteName')"
prop="SiteName"
>
<el-input v-model="form.SiteName" /> <el-input v-model="form.SiteName" />
</el-form-item> </el-form-item>
<!-- 中心名称CN --> <!-- 中心名称CN -->
<el-form-item <el-form-item :label="$t('institutions:sites:label:siteNameCN')" prop="SiteNameCN">
:label="$t('institutions:sites:label:siteNameCN')"
prop="SiteNameCN"
>
<el-input v-model="form.SiteNameCN" /> <el-input v-model="form.SiteNameCN" />
</el-form-item> </el-form-item>
<!-- Alias Name --> <!-- Alias Name -->
@ -38,7 +25,9 @@
</el-form-item> --> </el-form-item> -->
<!-- Country --> <!-- Country -->
<el-form-item :label="$t('institutions:sites:label:country')" prop="Country"> <el-form-item :label="$t('institutions:sites:label:country')" prop="Country">
<el-input v-model="form.Country" /> <el-select v-model="form.Country" style="width: 100%">
<el-option v-for="item of $d.SiteCountry" :key="item.id" :label="item.label" :value="item.label" />
</el-select>
</el-form-item> </el-form-item>
<!-- City --> <!-- City -->
<el-form-item :label="$t('institutions:sites:label:city')" prop="City"> <el-form-item :label="$t('institutions:sites:label:city')" prop="City">
@ -50,17 +39,8 @@
</el-form-item> </el-form-item>
<!-- Affiliated Hospital --> <!-- Affiliated Hospital -->
<el-form-item :label="$t('institutions:sites:label:affiliatedHospital')"> <el-form-item :label="$t('institutions:sites:label:affiliatedHospital')">
<el-select <el-select v-model="form.HospitalId" clearable style="width: 100%">
v-model="form.HospitalId" <el-option v-for="item in hospitalList" :key="item.Id" :label="item.HospitalName" :value="item.Id" />
clearable
style="width: 100%"
>
<el-option
v-for="item in hospitalList"
:key="item.Id"
:label="item.HospitalName"
:value="item.Id"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- Director Name --> <!-- Director Name -->
@ -82,20 +62,10 @@
</div> </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-form-item>
<el-button <el-button :disabled="btnLoading" size="small" type="primary" @click="handleCancel">{{
:disabled="btnLoading" $t('common:button:cancel') }}</el-button>
size="small" <el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">{{ $t('common:button:save')
type="primary" }}</el-button>
@click="handleCancel"
>{{ $t('common:button:cancel') }}</el-button
>
<el-button
size="small"
type="primary"
:loading="btnLoading"
@click="handleSave"
>{{ $t('common:button:save') }}</el-button
>
</el-form-item> </el-form-item>
</div> </div>
</el-form> </el-form>

View File

@ -1,44 +1,28 @@
<template> <template>
<el-form <el-form ref="userForm" size="small" :model="user" :rules="userFormRules" label-width="150px" style="width: 800px">
ref="userForm"
size="small"
:model="user"
:rules="userFormRules"
label-width="150px"
style="width: 800px"
>
<el-card class="Basic" shadow="never" size="small"> <el-card class="Basic" shadow="never" size="small">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>{{ $t('system:userlist:title:Information') }}</span> <span>{{ $t('system:userlist:title:Information') }}</span>
</div> </div>
<el-form-item <el-form-item v-if="user.UserCode" :label="$t('system:userlist:table:S/N')" prop="UserCode">
v-if="user.UserCode"
:label="$t('system:userlist:table:S/N')"
prop="UserCode"
>
<el-input v-model="user.UserCode" disabled /> <el-input v-model="user.UserCode" disabled />
</el-form-item> </el-form-item>
<el-form-item <el-form-item :label="$t('system:userlist:table:UserName')" class="my_new_pwd" prop="UserName">
:label="$t('system:userlist:table:UserName')"
class="my_new_pwd"
prop="UserName"
>
<el-input v-model="user.UserName" /> <el-input v-model="user.UserName" />
</el-form-item> </el-form-item>
<el-form-item <el-form-item :label="$t('system:userlist:table:LastName')" prop="LastName">
:label="$t('system:userlist:table:LastName')"
prop="LastName"
>
<el-input v-model="user.LastName" /> <el-input v-model="user.LastName" />
</el-form-item> </el-form-item>
<el-form-item <el-form-item :label="$t('system:userlist:table:FirstName')" prop="FirstName">
:label="$t('system:userlist:table:FirstName')"
prop="FirstName"
>
<el-input v-model="user.FirstName" /> <el-input v-model="user.FirstName" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('system:userlist:table:UserWorkLanguage')" prop="UserWorkLanguage">
<el-select v-model="user.UserWorkLanguage" style="width: 100%">
<el-option v-for="item of $d.UserWorkLanguage" :key="item.id" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<!-- <el-form-item :label="$t('system:userlist:table:Gender')" prop="Sex" style="margin-right:40px;"> <!-- <el-form-item :label="$t('system:userlist:table:Gender')" prop="Sex" style="margin-right:40px;">
<el-radio-group v-model="user.Sex"> <el-radio-group v-model="user.Sex">
<el-radio :label="1">Male</el-radio> <el-radio :label="1">Male</el-radio>
@ -51,105 +35,47 @@
<el-form-item :label="$t('system:userlist:table:Phone')" prop="Phone"> <el-form-item :label="$t('system:userlist:table:Phone')" prop="Phone">
<el-input v-model="user.Phone" /> <el-input v-model="user.Phone" />
</el-form-item> </el-form-item>
<el-form-item <el-form-item v-if="type == 1" :label="$t('system:userlist:table:Disable')">
v-if="type == 1" <el-switch v-model="user.Status" :active-value="1" :inactive-value="0" />
:label="$t('system:userlist:table:Disable')"
>
<el-switch
v-model="user.Status"
:active-value="1"
:inactive-value="0"
/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('system:userlist:table:IsTestUser')"> <el-form-item :label="$t('system:userlist:table:IsTestUser')">
<el-radio-group v-model="user.IsTestUser"> <el-radio-group v-model="user.IsTestUser">
<el-radio <el-radio v-for="item of $d.YesOrNo" :key="item.id" :label="item.value">{{ item.label }}</el-radio>
v-for="item of $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 <el-form-item :label="$t('system:userlist:table:UserType')" prop="Roles" v-if="type === 0">
:label="$t('system:userlist:table:UserType')"
prop="Roles"
v-if="type === 0"
>
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<el-select <el-select ref="userType" v-model="user.Roles" size="small" placeholder="Please select" multiple
ref="userType" style="width: 100%" :disabled="user.CanEditUserType === false || type === 1" @change="handleChange">
v-model="user.Roles"
size="small"
placeholder="Please select"
multiple
style="width: 100%"
:disabled="user.CanEditUserType === false || type === 1"
@change="handleChange"
>
<template v-for="userType of userTypeOptions"> <template v-for="userType of userTypeOptions">
<el-option <el-option v-if="![4, 6, 20].includes(userType.UserTypeEnum)" :key="userType.Id"
v-if="![4, 6, 20].includes(userType.UserTypeEnum)" :label="userType.UserType" :value="userType.Id" />
:key="userType.Id"
:label="userType.UserType"
:value="userType.Id"
/>
</template> </template>
</el-select> </el-select>
</div> </div>
</el-form-item> </el-form-item>
<el-form-item <el-form-item :label="$t('system:userlist:table:UserType')" prop="userTypeId" v-else>
:label="$t('system:userlist:table:UserType')"
prop="userTypeId"
v-else
>
<div style="display: flex; align-items: center"> <div style="display: flex; align-items: center">
<el-select <el-select ref="userType" v-model="Roles" size="small" placeholder="Please select" multiple
ref="userType" style="width: 100%" :disabled="user.CanEditUserType === false || type === 1" @change="handleChange">
v-model="Roles"
size="small"
placeholder="Please select"
multiple
style="width: 100%"
:disabled="user.CanEditUserType === false || type === 1"
@change="handleChange"
>
<template v-for="userType of userTypeOptions"> <template v-for="userType of userTypeOptions">
<el-option <el-option v-if="![4, 6, 20].includes(userType.UserTypeEnum)" :key="userType.Id"
v-if="![4, 6, 20].includes(userType.UserTypeEnum)" :label="userType.UserType" :value="userType.Id" />
:key="userType.Id"
:label="userType.UserType"
:value="userType.Id"
/>
</template> </template>
</el-select> </el-select>
<el-button <el-button type="primary" size="small" style="margin-left: 5px" v-if="type === 1" @click.stop="openRoleList">
type="primary"
size="small"
style="margin-left: 5px"
v-if="type === 1"
@click.stop="openRoleList"
>
{{ $t('system:userlist:button:roles') }} {{ $t('system:userlist:button:roles') }}
</el-button> </el-button>
</div> </div>
</el-form-item> </el-form-item>
</el-card> </el-card>
<el-card <el-card class="Affiliation" shadow="never" style="margin-top: 10px" size="small">
class="Affiliation"
shadow="never"
style="margin-top: 10px"
size="small"
>
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>{{ $t('system:userlist:title:Affiliation') }}</span> <span>{{ $t('system:userlist:title:Affiliation') }}</span>
</div> </div>
<el-form-item prop="IsZhiZhun"> <el-form-item prop="IsZhiZhun">
<el-radio-group <el-radio-group v-model="user.IsZhiZhun" @change="OrgnizationTypeChanged">
v-model="user.IsZhiZhun"
@change="OrgnizationTypeChanged"
>
<el-radio :label="true">{{ <el-radio :label="true">{{
$t('system:userlist:title:Internal') $t('system:userlist:title:Internal')
}}</el-radio> }}</el-radio>
@ -158,43 +84,22 @@
}}</el-radio> }}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item <el-form-item v-show="user.IsZhiZhun === false" :label="$t('system:userlist:table:OrganizationName')">
v-show="user.IsZhiZhun === false"
:label="$t('system:userlist:table:OrganizationName')"
>
<el-input v-model="user.OrganizationName" /> <el-input v-model="user.OrganizationName" />
</el-form-item> </el-form-item>
<el-form-item <el-form-item :label="$t('system:userlist:table:Department')" prop="DepartmentName">
:label="$t('system:userlist:table:Department')"
prop="DepartmentName"
>
<el-input v-model="user.DepartmentName" /> <el-input v-model="user.DepartmentName" />
</el-form-item> </el-form-item>
<el-form-item <el-form-item :label="$t('system:userlist:table:Position')" prop="PositionName">
:label="$t('system:userlist:table:Position')"
prop="PositionName"
>
<el-input v-model="user.PositionName" /> <el-input v-model="user.PositionName" />
</el-form-item> </el-form-item>
</el-card> </el-card>
<el-form-item> <el-form-item>
<el-button <el-button type="primary" size="small" :disabled="isDisabled" style="margin: 10px 15px" @click="handleSave">{{
type="primary" $t('common:button:save') }}</el-button>
size="small"
:disabled="isDisabled"
style="margin: 10px 15px"
@click="handleSave"
>{{ $t('common:button:save') }}</el-button
>
</el-form-item> </el-form-item>
<roleList <roleList v-if="visible" :visible.sync="visible" :userId="userId" :list="userRoleList"
v-if="visible" :userTypeOptions="userTypeOptions" @getRoleList="getRoleList" />
:visible.sync="visible"
:userId="userId"
:list="userRoleList"
:userTypeOptions="userTypeOptions"
@getRoleList="getRoleList"
/>
</el-form> </el-form>
</template> </template>
<script> <script>
@ -365,11 +270,11 @@ export default {
callback( callback(
lang === 'zh' lang === 'zh'
? new Error( ? new Error(
'1新建账号用户名字符长度最小为4个字符最大为16个字符只可使用字母、数字、下划线' '1新建账号用户名字符长度最小为4个字符最大为16个字符只可使用字母、数字、下划线'
) )
: new Error( : new Error(
'For a new account, the username must have:1) At least 4 characters;2) At most 16 characters;3)Only letters, numbers, and underscores are allowed.' 'For a new account, the username must have:1) At least 4 characters;2) At most 16 characters;3)Only letters, numbers, and underscores are allowed.'
) )
) )
} else { } else {
callback() callback()
@ -379,6 +284,7 @@ export default {
userRoleList: [], userRoleList: [],
Roles: [], Roles: [],
user: { user: {
UserWorkLanguage: null,
Roles: [], Roles: [],
UserRoleList: [], UserRoleList: [],
UserName: '', UserName: '',
@ -399,6 +305,13 @@ export default {
UserName: [ UserName: [
{ required: true, validator: validatePassword, trigger: 'blur' }, { required: true, validator: validatePassword, trigger: 'blur' },
], ],
UserWorkLanguage: [
{
required: true,
message: 'Please Select',
trigger: ['blur', 'change'],
},
],
Roles: [ Roles: [
{ {
required: true, required: true,

View File

@ -1,67 +1,42 @@
<template> <template>
<box-content> <box-content>
<div class="search" style="position: relative"> <div class="search" style="position: relative">
<SearchForm <SearchForm :that="this" :search-data="searchData" :search-form="searchForm" :search-handle="searchHandle"
:that="this" @search="handleSearch" @reset="handleReset" @new="handleAddUser" />
:search-data="searchData"
:search-form="searchForm"
:search-handle="searchHandle"
@search="handleSearch"
@reset="handleReset"
@new="handleAddUser"
/>
</div> </div>
<base-table <base-table v-loading="loading" :columns="columns" :list="users" :search-data="searchData" :total="total"
v-loading="loading" @getList="getList" @editCb="handleEditUser" @sendCb="addNewUserSendEmail" @deleteCb="handleDeleteUser"
:columns="columns" @sortByColumn="sortByColumn">
:list="users"
:search-data="searchData"
:total="total"
@getList="getList"
@editCb="handleEditUser"
@sendCb="addNewUserSendEmail"
@deleteCb="handleDeleteUser"
@sortByColumn="sortByColumn"
>
<!-- 选择自定义slot --> <!-- 选择自定义slot -->
<template slot="tip-slot" slot-scope="{ scope }"> <template slot="tip-slot" slot-scope="{ scope }">
<i <i v-if="
v-if=" diffTime(scope.row.LastLoginTime) >= 90 &&
diffTime(scope.row.LastLoginTime) >= 90 && diffTime(scope.row.LastChangePassWordTime) >= 90
diffTime(scope.row.LastChangePassWordTime) >= 90 " class="el-icon-warning" style="color: #f56c6c"
" :title="$t('system:userlist:tip:overTimeAndoverTimePassWord')" />
class="el-icon-warning" <i v-else-if="diffTime(scope.row.LastLoginTime) >= 90" class="el-icon-warning" style="color: #f56c6c"
style="color: #f56c6c" :title="$t('system:userlist:tip:overTime')" />
:title="$t('system:userlist:tip:overTimeAndoverTimePassWord')" <i v-else-if="diffTime(scope.row.LastChangePassWordTime) >= 90" class="el-icon-warning" style="color: #f56c6c"
/> :title="$t('system:userlist:tip:overTimePassWord')" />
<i
v-else-if="diffTime(scope.row.LastLoginTime) >= 90"
class="el-icon-warning"
style="color: #f56c6c"
:title="$t('system:userlist:tip:overTime')"
/>
<i
v-else-if="diffTime(scope.row.LastChangePassWordTime) >= 90"
class="el-icon-warning"
style="color: #f56c6c"
:title="$t('system:userlist:tip:overTimePassWord')"
/>
</template> </template>
<template slot="genderSlot" slot-scope="{ scope }"> <template slot="genderSlot" slot-scope="{ scope }">
{{ scope.row.Sex ? 'Male' : 'Female' }} {{ scope.row.Sex ? 'Male' : 'Female' }}
</template> </template>
<template slot="UserWorkLanguageSlot" slot-scope="{ scope }">
{{ $fd('UserWorkLanguage', scope.row.UserWorkLanguage) }}
</template>
<template slot="UserTypeSlot" slot-scope="{ scope }"> <template slot="UserTypeSlot" slot-scope="{ scope }">
{{ {{
Array.isArray(scope.row.UserRoleList) && Array.isArray(scope.row.UserRoleList) &&
scope.row.UserRoleList.length > 0 scope.row.UserRoleList.length > 0
? scope.row.UserRoleList.filter((item) => !item.IsUserRoleDisabled) ? scope.row.UserRoleList.filter((item) => !item.IsUserRoleDisabled)
.map((item) => item.UserTypeShortName) .map((item) => item.UserTypeShortName)
.join(', ') .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 }">
{{ {{
@ -155,6 +130,14 @@ export default {
sortable: 'custom', sortable: 'custom',
showOverflowTooltip: true, showOverflowTooltip: true,
}, },
{
// prop: 'UserWorkLanguage',
label: this.$t('system:userlist:table:UserWorkLanguage'),
minWidth: 120,
slot: 'UserWorkLanguageSlot',
sortable: 'custom',
showOverflowTooltip: true,
},
// { // {
// prop: 'Sex', // prop: 'Sex',
// label: this.$t('system:userlist:table:Gender'), // label: this.$t('system:userlist:table:Gender'),
@ -287,6 +270,15 @@ export default {
width: '120px', width: '120px',
placeholder: '', placeholder: '',
}, },
{
type: 'Select',
label: this.$t('system:userlist:label:UserWorkLanguage'),
prop: 'UserWorkLanguage',
width: '100px',
options: [], //
props: { label: 'label', value: 'value' }, //
placeholder: '',
},
{ {
type: 'Input', type: 'Input',
label: this.$t('system:userlist:label:Phone'), label: this.$t('system:userlist:label:Phone'),
@ -476,8 +468,10 @@ export default {
// //
async getInfo() { async getInfo() {
const res = await getUserTypeList() const res = await getUserTypeList()
const index = this.findItemIndex('UserType') let index = this.findItemIndex('UserType')
this.$set(this.searchForm[index], 'options', res.Result) this.$set(this.searchForm[index], 'options', res.Result)
index = this.findItemIndex('UserWorkLanguage')
this.$set(this.searchForm[index], 'options', this.$d.UserWorkLanguage)
}, },
handleAddUser() { handleAddUser() {
this.$router.push({ path: '/system/user/add' }) this.$router.push({ path: '/system/user/add' })

View File

@ -127,7 +127,7 @@
</el-switch> </el-switch>
<span style="margin-left: 5px;">{{ <span style="margin-left: 5px;">{{
$t('trials:reading:Segmentations:title:InactiveSegmentationsShow') $t('trials:reading:Segmentations:title:InactiveSegmentationsShow')
}}</span> }}</span>
</div> </div>
</div> </div>
<template v-if="segmentList.length > 0"> <template v-if="segmentList.length > 0">
@ -173,9 +173,9 @@
</el-button> </el-button>
</div> </div>
</div> </div>
<div class="addSegmentBox" @click.stop="addSegment" <div class="addSegmentBox"
style="display: flex;align-items: center;justify-content: space-between;"> style="display: flex;align-items: center;justify-content: space-between;">
<span v-if="readingTaskState < 2"><i class="el-icon-plus"></i> <span v-if="readingTaskState < 2" @click.stop="addSegment"><i class="el-icon-plus"></i>
{{ $t('trials:reading:Segmentations:button:addSegment') }} {{ $t('trials:reading:Segmentations:button:addSegment') }}
</span> </span>
<span style="width: 10px;" v-else></span> <span style="width: 10px;" v-else></span>
@ -302,7 +302,7 @@
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" @click.stop="restoreSegmentationVersion(scope.row)">{{ <el-button type="text" @click.stop="restoreSegmentationVersion(scope.row)">{{
$t('trials:reading:Segmentations:button:recovery') $t('trials:reading:Segmentations:button:recovery')
}}</el-button> }}</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -797,7 +797,9 @@ export default {
}, },
async restoreSegmentationVersion(row) { async restoreSegmentationVersion(row) {
try { try {
let confirm = await this.$confirm(this.$t('trials:reading:Segmentations:confirm:CurrentDataIsLoss')) this.popoverId = null
let message = this.$t('trials:reading:Segmentations:confirm:CurrentDataIsLoss').replace("xxx", row.Version)
let confirm = await this.$confirm(message)
if (!confirm) return false if (!confirm) return false
let data = { let data = {
SegmentationId: this.segmentationId, SegmentationId: this.segmentationId,
@ -863,6 +865,7 @@ export default {
}, },
async recoverySegmentGroup() { async recoverySegmentGroup() {
try { try {
this.popoverId = null
let res = await this.getSegmentationVersionList(this.segmentationId) let res = await this.getSegmentationVersionList(this.segmentationId)
if (!res) return this.$message.warning(this.$t("trials:reading:Segmentations:message:getSegmentationVersionFail")) if (!res) return this.$message.warning(this.$t("trials:reading:Segmentations:message:getSegmentationVersionFail"))
this.visible = true this.visible = true

View File

@ -226,10 +226,12 @@ async function readingSegmentByConfig(series, visitInfo, viewportId, segmentatio
) )
} }
function selectSegmentation(viewportId, segmentationId) { function selectSegmentation(viewportId, segmentationId) {
if (!segmentation.state.getSegmentation(segmentationId)) return false
segmentation.activeSegmentation.setActiveSegmentation(viewportId, segmentationId) segmentation.activeSegmentation.setActiveSegmentation(viewportId, segmentationId)
} }
function selectSegment(viewportId, segmentationId, segmentIndex) { function selectSegment(viewportId, segmentationId, segmentIndex) {
if (!segmentIndex || !segmentationId) return false if (!segmentIndex || !segmentationId) return false
if (!segmentation.state.getSegmentation(segmentationId)) return false
selectSegmentation(viewportId, segmentationId) selectSegmentation(viewportId, segmentationId)
segmentation.segmentIndex.setActiveSegmentIndex(segmentationId, segmentIndex); segmentation.segmentIndex.setActiveSegmentIndex(segmentationId, segmentIndex);
} }

View File

@ -10,29 +10,24 @@
<el-form-item :label="$t('trials:sitesList:table:siteName')"> <el-form-item :label="$t('trials:sitesList:table:siteName')">
<el-input v-model="listQuery.TrialSiteName" class="mr" clearable /> <el-input v-model="listQuery.TrialSiteName" class="mr" clearable />
</el-form-item> </el-form-item>
<el-form-item :label="$t('trials:sitesList:table:Country')">
<el-select v-model="listQuery.Country" clearable class="mr">
<el-option v-for="item of $d.SiteCountry" :key="item.id" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<!-- 中心别名 --> <!-- 中心别名 -->
<!-- <el-form-item :label="$t('trials:sitesList:table:siteAliasName')"> <!-- <el-form-item :label="$t('trials:sitesList:table:siteAliasName')">
<el-input v-model="listQuery.TrialSiteAliasName" class="mr" clearable /> <el-input v-model="listQuery.TrialSiteAliasName" class="mr" clearable />
</el-form-item> --> </el-form-item> -->
<!-- 关键词 --> <!-- 关键词 -->
<el-form-item :label="$t('trials:sitesList:form:keyWord')"> <el-form-item :label="$t('trials:sitesList:form:keyWord')">
<el-input <el-input v-model="listQuery.UserKeyInfo" style="width: 200px" class="mr" clearable
v-model="listQuery.UserKeyInfo" :placeholder="$t('trials:sitesList:formPlaceholder:keyWord')" />
style="width: 200px"
class="mr"
clearable
:placeholder="$t('trials:sitesList:formPlaceholder:keyWord')"
/>
</el-form-item> </el-form-item>
<!-- 状态 --> <!-- 状态 -->
<el-form-item :label="$t('trials:sitesList:table:status')"> <el-form-item :label="$t('trials:sitesList:table:status')">
<el-select v-model="listQuery.IsDeleted" clearable class="mr"> <el-select v-model="listQuery.IsDeleted" clearable class="mr">
<el-option <el-option v-for="item of $d.IsSiteDisable" :key="item.label" :label="item.label" :value="item.value" />
v-for="item of $d.IsSiteDisable"
:key="item.label"
:label="item.label"
:value="item.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -41,114 +36,61 @@
{{ $t('common:button:search') }} {{ $t('common:button:search') }}
</el-button> </el-button>
<!-- 重置 --> <!-- 重置 -->
<el-button <el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
type="primary"
icon="el-icon-refresh-left"
@click="handleReset"
>
{{ $t('common:button:reset') }} {{ $t('common:button:reset') }}
</el-button> </el-button>
<!-- 中心调研 --> <!-- 中心调研 -->
<el-button <el-button v-hasPermi="[
v-hasPermi="[ 'trials:trials-panel:setting:personnel-manage:questionnaire-record',
'trials:trials-panel:setting:personnel-manage:questionnaire-record', ]" type="primary" icon="el-icon-info" @click="handleResearchList">
]"
type="primary"
icon="el-icon-info"
@click="handleResearchList"
>
{{ $t('trials:sitesList:button:siteResearch') }} {{ $t('trials:sitesList:button:siteResearch') }}
</el-button> </el-button>
<!-- 添加中心 --> <!-- 添加中心 -->
<el-button <el-button v-hasPermi="[
v-hasPermi="[ 'trials:trials-panel:setting:personnel-manage:add-site',
'trials:trials-panel:setting:personnel-manage:add-site', ]" type="primary" icon="el-icon-plus" @click="handleAdd">
]"
type="primary"
icon="el-icon-plus"
@click="handleAdd"
>
{{ $t('trials:sitesList:dialogTitle:assignSite') }} {{ $t('trials:sitesList:dialogTitle:assignSite') }}
</el-button> </el-button>
<el-button <el-button type="primary" icon="el-icon-download" :disabled="list.length === 0"
type="primary" @click="handleResearchListExport">
icon="el-icon-download"
:disabled="list.length === 0"
@click="handleResearchListExport"
>
{{ $t('common:button:export') }} {{ $t('common:button:export') }}
</el-button> </el-button>
<!-- 下载模板 --> <!-- 下载模板 -->
<el-button <el-button type="primary" icon="el-icon-download" v-hasPermi="[
type="primary" 'trials:trials-panel:setting:personnel-manage:download',
icon="el-icon-download" ]" @click="handleDownload">
v-hasPermi="[
'trials:trials-panel:setting:personnel-manage:download',
]"
@click="handleDownload"
>
{{ $t('common:button:downloadTpl') }} {{ $t('common:button:downloadTpl') }}
</el-button> </el-button>
<el-button <el-button v-hasPermi="['trials:trials-panel:setting:personnel-manage:upload']" type="primary"
v-hasPermi="['trials:trials-panel:setting:personnel-manage:upload']" icon="el-icon-upload2" @click="handleUpload">
type="primary"
icon="el-icon-upload2"
@click="handleUpload"
>
{{ $t('common:button:upload') }} {{ $t('common:button:upload') }}
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<el-table <el-table v-loading="listLoading" :data="list" stripe @sort-change="handleSortByColumn">
v-loading="listLoading"
:data="list"
stripe
@sort-change="handleSortByColumn"
>
<el-table-column type="index" width="50" /> <el-table-column type="index" width="50" />
<!-- 中心编号 --> <!-- 中心编号 -->
<el-table-column <el-table-column prop="TrialSiteCode" :label="$t('trials:sitesList:table:siteId')" show-overflow-tooltip
prop="TrialSiteCode" sortable="custom" width="120">
:label="$t('trials:sitesList:table:siteId')"
show-overflow-tooltip
sortable="custom"
width="120"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span v-if="!!scope.row.TrialSiteCode">{{ <span v-if="!!scope.row.TrialSiteCode">{{
scope.row.TrialSiteCode scope.row.TrialSiteCode
}}</span> }}</span>
<i <i v-else class="el-icon-warning" style="color: #f44336; font-size: 14px" />
v-else
class="el-icon-warning"
style="color: #f44336; font-size: 14px"
/>
</template> </template>
</el-table-column> </el-table-column>
<!-- 中心名称 --> <!-- 中心名称 -->
<el-table-column <el-table-column prop="TrialSiteName" :label="$t('trials:sitesList:table:siteName')" show-overflow-tooltip
prop="TrialSiteName" sortable="custom" min-width="120" />
:label="$t('trials:sitesList:table:siteName')"
show-overflow-tooltip
sortable="custom"
min-width="120"
/>
<!-- 中心别名 --> <!-- 中心别名 -->
<el-table-column <el-table-column prop="TrialSiteAliasName" :label="$t('trials:sitesList:table:siteAliasName')"
prop="TrialSiteAliasName" show-overflow-tooltip sortable="custom" min-width="120" />
:label="$t('trials:sitesList:table:siteAliasName')" <el-table-column prop="Country" :label="$t('trials:sitesList:table:Country')" show-overflow-tooltip
show-overflow-tooltip sortable="custom" min-width="120" />
sortable="custom"
min-width="120"
/>
<!-- 参与者 --> <!-- 参与者 -->
<el-table-column <el-table-column prop="UserNameList" :label="$t('trials:sitesList:table:staff')" show-overflow-tooltip
prop="UserNameList" min-width="100">
:label="$t('trials:sitesList:table:staff')"
show-overflow-tooltip
min-width="100"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button size="small" type="text" @click="getCrcList(scope.row)"> <el-button size="small" type="text" @click="getCrcList(scope.row)">
{{ {{
@ -160,29 +102,14 @@
</template> </template>
</el-table-column> </el-table-column>
<!-- Subjects --> <!-- Subjects -->
<el-table-column <el-table-column prop="SubjectCount" min-width="100" :label="$t('trials:site:table:subjects')"
prop="SubjectCount" show-overflow-tooltip sortable="custom" />
min-width="100"
:label="$t('trials:site:table:subjects')"
show-overflow-tooltip
sortable="custom"
/>
<!-- Visits --> <!-- Visits -->
<el-table-column <el-table-column prop="VisitCount" min-width="100" :label="$t('trials:site:table:visits')" show-overflow-tooltip
prop="VisitCount" sortable="custom" />
min-width="100"
:label="$t('trials:site:table:visits')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 状态 --> <!-- 状态 -->
<el-table-column <el-table-column prop="IsDeleted" :label="$t('trials:sitesList:table:status')" show-overflow-tooltip sortable
prop="IsDeleted" min-width="100">
:label="$t('trials:sitesList:table:status')"
show-overflow-tooltip
sortable
min-width="100"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.IsDeleted" type="danger">{{ <el-tag v-if="scope.row.IsDeleted" type="danger">{{
$fd('IsSiteDisable', scope.row.IsDeleted) $fd('IsSiteDisable', scope.row.IsDeleted)
@ -193,21 +120,11 @@
</template> </template>
</el-table-column> </el-table-column>
<!-- DICOM AE --> <!-- DICOM AE -->
<el-table-column <el-table-column v-if="isPACSConnect" prop="CallingAEList" :label="$t('trials:sitesList:table:AE')"
v-if="isPACSConnect" show-overflow-tooltip sortable min-width="100">
prop="CallingAEList"
:label="$t('trials:sitesList:table:AE')"
show-overflow-tooltip
sortable
min-width="100"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button v-if="scope.row.CallingAEList.length > 0" size="small" type="text"
v-if="scope.row.CallingAEList.length > 0" @click="handleConfig(scope.row, 'view')">
size="small"
type="text"
@click="handleConfig(scope.row, 'view')"
>
{{ {{
scope.row.CallingAEList.length > 0 scope.row.CallingAEList.length > 0
? scope.row.CallingAEList.join(', ') ? scope.row.CallingAEList.join(', ')
@ -217,63 +134,32 @@
</template> </template>
</el-table-column> </el-table-column>
<!-- 授权时间 --> <!-- 授权时间 -->
<el-table-column <el-table-column prop="EnabledTime" :label="$t('trials:sitesList:table:timeAdded')" show-overflow-tooltip sortable
prop="EnabledTime" min-width="150" />
:label="$t('trials:sitesList:table:timeAdded')" <el-table-column v-if="
show-overflow-tooltip hasPermi([
sortable 'trials:trials-panel:setting:personnel-manage:edit-site',
min-width="150" 'trials:trials-panel:setting:personnel-manage:remove-site',
/> 'trials:trials-panel:setting:personnel-manage:edit-dicom',
<el-table-column ])
v-if=" " :label="$t('common:action:action')" min-width="120">
hasPermi([
'trials:trials-panel:setting:personnel-manage:edit-site',
'trials:trials-panel:setting:personnel-manage:remove-site',
'trials:trials-panel:setting:personnel-manage:edit-dicom',
])
"
:label="$t('common:action:action')"
min-width="120"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button circle :title="$t('trials:sitesList:action:assign')" icon="el-icon-user"
circle :disabled="scope.row.IsDeleted" @click="getCrcList(scope.row)" />
:title="$t('trials:sitesList:action:assign')"
icon="el-icon-user"
:disabled="scope.row.IsDeleted"
@click="getCrcList(scope.row)"
/>
<!-- Edit --> <!-- Edit -->
<el-button <el-button v-hasPermi="[
v-hasPermi="[ 'trials:trials-panel:setting:personnel-manage:edit-site',
'trials:trials-panel:setting:personnel-manage:edit-site', ]" circle :title="$t('common:button:edit')" icon="el-icon-edit-outline" @click="handleEdit(scope.row)" />
]" <el-button v-if="isPACSConnect" circle :title="$t('common:button:config')" icon="el-icon-setting" v-hasPermi="[
circle 'trials:trials-panel:setting:personnel-manage:edit-dicom',
:title="$t('common:button:edit')" ]" @click="handleConfig(scope.row, 'add')" />
icon="el-icon-edit-outline"
@click="handleEdit(scope.row)"
/>
<el-button
v-if="isPACSConnect"
circle
:title="$t('common:button:config')"
icon="el-icon-setting"
v-hasPermi="[
'trials:trials-panel:setting:personnel-manage:edit-dicom',
]"
@click="handleConfig(scope.row, 'add')"
/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div class="pagination" style="text-align: right"> <div class="pagination" style="text-align: right">
<pagination <pagination :total="total" :page.sync="listQuery.PageIndex" :limit.sync="listQuery.PageSize"
:total="total" @pagination="getList" />
:page.sync="listQuery.PageIndex"
:limit.sync="listQuery.PageSize"
@pagination="getList"
/>
</div> </div>
<!-- 给site分配crc --> <!-- 给site分配crc -->
@ -286,67 +172,37 @@
<!-- 修改site信息 --> <!-- 修改site信息 -->
<base-model v-if="edit_model.visible" :config="edit_model"> <base-model v-if="edit_model.visible" :config="edit_model">
<template slot="dialog-body"> <template slot="dialog-body">
<el-form <el-form ref="editForm" :model="form" label-width="100px" :rules="rules">
ref="editForm"
:model="form"
label-width="100px"
:rules="rules"
>
<!-- 中心编号 --> <!-- 中心编号 -->
<el-form-item <el-form-item :label="$t('trials:sitesList:table:siteId')" prop="TrialSiteCode">
:label="$t('trials:sitesList:table:siteId')"
prop="TrialSiteCode"
>
<el-input v-model="form.TrialSiteCode" /> <el-input v-model="form.TrialSiteCode" />
</el-form-item> </el-form-item>
<!-- 中心名称 --> <!-- 中心名称 -->
<el-form-item <el-form-item :label="$t('trials:sitesList:table:siteName')" prop="TrialSiteName">
:label="$t('trials:sitesList:table:siteName')" <el-autocomplete clearable class="inline-input" style="width: 100%" v-model="form.TrialSiteName"
prop="TrialSiteName" :fetch-suggestions="querySearch" @select="handleSelect" placeholder=""
> @change="handleChange"></el-autocomplete>
<el-autocomplete
clearable
class="inline-input"
style="width: 100%"
v-model="form.TrialSiteName"
:fetch-suggestions="querySearch"
@select="handleSelect"
placeholder=""
@change="handleChange"
></el-autocomplete>
</el-form-item> </el-form-item>
<!-- 中心别称 --> <!-- 中心别称 -->
<el-form-item <el-form-item :label="$t('trials:sitesList:table:siteAliasName')" prop="TrialSiteAliasName">
:label="$t('trials:sitesList:table:siteAliasName')"
prop="TrialSiteAliasName"
>
<el-input v-model="form.TrialSiteAliasName" /> <el-input v-model="form.TrialSiteAliasName" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('trials:sitesList:table:Country')" prop="Country">
<el-select v-model="form.Country" style="width: 100%">
<el-option v-for="item of $d.SiteCountry" :key="item.id" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<!-- 状态 --> <!-- 状态 -->
<el-form-item :label="$t('trials:sitesList:table:status')"> <el-form-item :label="$t('trials:sitesList:table:status')">
<el-switch <el-switch v-model="form.IsDeleted" :active-value="false" :inactive-value="true" />
v-model="form.IsDeleted"
:active-value="false"
:inactive-value="true"
/>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
<template slot="dialog-footer"> <template slot="dialog-footer">
<el-button <el-button type="primary" size="small" :disabled="saveBtnLoading" @click="edit_model.visible = false">
type="primary"
size="small"
:disabled="saveBtnLoading"
@click="edit_model.visible = false"
>
{{ $t('common:button:cancel') }} {{ $t('common:button:cancel') }}
</el-button> </el-button>
<el-button <el-button type="primary" size="small" :loading="saveBtnLoading" @click="handleUpdateSiteID">
type="primary"
size="small"
:loading="saveBtnLoading"
@click="handleUpdateSiteID"
>
{{ $t('common:button:save') }} {{ $t('common:button:save') }}
</el-button> </el-button>
</template> </template>
@ -357,29 +213,14 @@
<template slot="dialog-body"> <template slot="dialog-body">
<span style="margin-right: 5px;">{{ $t('trials:internalStaff:table:status') }}:</span> <span style="margin-right: 5px;">{{ $t('trials:internalStaff:table:status') }}:</span>
<el-radio-group v-model="staffStatus"> <el-radio-group v-model="staffStatus">
<el-radio <el-radio v-for="item of $d.IsUserExitTrial" :key="item.label" :label="item.value">{{ item.label }}</el-radio>
v-for="item of $d.IsUserExitTrial"
:key="item.label"
:label="item.value"
>{{ item.label }}</el-radio
>
</el-radio-group> </el-radio-group>
</template> </template>
<template slot="dialog-footer"> <template slot="dialog-footer">
<el-button <el-button :disabled="btnLoading" size="small" type="primary" @click="status_model.visible = false">
:disabled="btnLoading"
size="small"
type="primary"
@click="status_model.visible = false"
>
{{ $t('common:button:cancel') }} {{ $t('common:button:cancel') }}
</el-button> </el-button>
<el-button <el-button size="small" type="primary" :loading="btnLoading" @click="saveStatus">
size="small"
type="primary"
:loading="btnLoading"
@click="saveStatus"
>
{{ $t('common:button:save') }} {{ $t('common:button:save') }}
</el-button> </el-button>
</template> </template>
@ -389,72 +230,34 @@
<base-model v-if="siteOfcrc_model.visible" :config="siteOfcrc_model"> <base-model v-if="siteOfcrc_model.visible" :config="siteOfcrc_model">
<template slot="dialog-body"> <template slot="dialog-body">
<div style="text-align: right"> <div style="text-align: right">
<el-button <el-button v-hasPermi="[
v-hasPermi="[ 'trials:trials-panel:setting:personnel-manage:assign-staff',
'trials:trials-panel:setting:personnel-manage:assign-staff', ]" type="primary" icon="el-icon-plus" size="small" @click="crc_model.visible = true">
]"
type="primary"
icon="el-icon-plus"
size="small"
@click="crc_model.visible = true"
>
{{ $t('common:button:add') }} {{ $t('common:button:add') }}
</el-button> </el-button>
</div> </div>
<el-table <el-table v-loading="userListLoading" :data="userList" height="400" size="small">
v-loading="userListLoading"
:data="userList"
height="400"
size="small"
>
<!-- 姓名 --> <!-- 姓名 -->
<el-table-column <el-table-column prop="FullName" :label="$t('trials:internalStaff:table:name')" min-width="100"
prop="FullName" show-overflow-tooltip />
:label="$t('trials:internalStaff:table:name')"
min-width="100"
show-overflow-tooltip
/>
<!-- 用户名 --> <!-- 用户名 -->
<el-table-column <el-table-column prop="UserName" :label="$t('trials:internalStaff:table:uid')" min-width="100"
prop="UserName" show-overflow-tooltip />
:label="$t('trials:internalStaff:table:uid')"
min-width="100"
show-overflow-tooltip
/>
<!-- 用户类型 --> <!-- 用户类型 -->
<el-table-column <el-table-column prop="UserType" :label="$t('trials:internalStaff:table:userType')" min-width="100"
prop="UserType" show-overflow-tooltip />
:label="$t('trials:internalStaff:table:userType')"
min-width="100"
show-overflow-tooltip
/>
<!-- 电话 --> <!-- 电话 -->
<el-table-column <el-table-column prop="Phone" :label="$t('trials:internalStaff:table:phone')" show-overflow-tooltip
prop="Phone" min-width="100" />
:label="$t('trials:internalStaff:table:phone')"
show-overflow-tooltip
min-width="100"
/>
<!-- 邮箱 --> <!-- 邮箱 -->
<el-table-column <el-table-column prop="EMail" :label="$t('trials:internalStaff:table:email')" show-overflow-tooltip
prop="EMail" min-width="100" />
:label="$t('trials:internalStaff:table:email')"
show-overflow-tooltip
min-width="100"
/>
<!-- 单位 --> <!-- 单位 -->
<el-table-column <el-table-column prop="OrganizationName" :label="$t('trials:internalStaff:table:organization')"
prop="OrganizationName" min-width="100" />
:label="$t('trials:internalStaff:table:organization')"
min-width="100"
/>
<!-- 状态 --> <!-- 状态 -->
<el-table-column <el-table-column prop="IsDeleted" :label="$t('trials:internalStaff:table:status')" show-overflow-tooltip
prop="IsDeleted" min-width="100">
:label="$t('trials:internalStaff:table:status')"
show-overflow-tooltip
min-width="100"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag v-if="scope.row.IsDeleted" type="danger">{{ <el-tag v-if="scope.row.IsDeleted" type="danger">{{
$fd('IsUserExitTrial', scope.row.IsDeleted) $fd('IsUserExitTrial', scope.row.IsDeleted)
@ -464,37 +267,18 @@
}}</el-tag> }}</el-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column prop="CreateTime" :label="$t('trials:internalStaff:table:authorizationTime')"
prop="CreateTime" show-overflow-tooltip sortable="custom" min-width="210" />
:label="$t('trials:internalStaff:table:authorizationTime')" <el-table-column prop="DeletedTime" :label="$t('trials:internalStaff:table:disableTime')"
show-overflow-tooltip show-overflow-tooltip sortable min-width="210" />
sortable="custom" <el-table-column v-hasPermi="[
min-width="210" 'trials:trials-panel:setting:personnel-manage:assign-staff',
/> ]" :label="$t('common:action:action')" width="100">
<el-table-column
prop="DeletedTime"
:label="$t('trials:internalStaff:table:disableTime')"
show-overflow-tooltip
sortable
min-width="210"
/>
<el-table-column
v-hasPermi="[
'trials:trials-panel:setting:personnel-manage:assign-staff',
]"
:label="$t('common:action:action')"
width="100"
>
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button v-hasPermi="[
v-hasPermi="[ 'trials:trials-panel:setting:personnel-manage:assign-staff',
'trials:trials-panel:setting:personnel-manage:assign-staff', ]" circle :title="$t('trials:internalStaff:action:status')" icon="el-icon-edit-outline"
]" @click="handleStatus(scope.row)" />
circle
:title="$t('trials:internalStaff:action:status')"
icon="el-icon-edit-outline"
@click="handleStatus(scope.row)"
/>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -503,10 +287,7 @@
<!-- 导入 --> <!-- 导入 -->
<base-model v-if="upload_model.visible" :config="upload_model"> <base-model v-if="upload_model.visible" :config="upload_model">
<template slot="dialog-body"> <template slot="dialog-body">
<UploadExcel <UploadExcel @closeDialog="upload_model.visible = false" @getList="getList" />
@closeDialog="upload_model.visible = false"
@getList="getList"
/>
</template> </template>
</base-model> </base-model>
<!--dicom AE--> <!--dicom AE-->
@ -583,6 +364,7 @@ export default {
TrialSiteCode: '', TrialSiteCode: '',
TrialSiteName: '', TrialSiteName: '',
TrialSiteAliasName: '', TrialSiteAliasName: '',
Country: '',
IsDeleted: true, IsDeleted: true,
}, },
upload_model: { upload_model: {
@ -634,6 +416,13 @@ export default {
trigger: 'blur', trigger: 'blur',
}, },
], ],
Country: [
{
required: true,
message: this.$t('common:ruleMessage:select'),
trigger: 'blur',
},
],
}, },
trialId: '', trialId: '',
TrialSiteSelectList: [], TrialSiteSelectList: [],
@ -656,10 +445,12 @@ export default {
? item.AliasName ? item.AliasName
: item.SiteName : item.SiteName
this.form.SiteId = item.SiteId this.form.SiteId = item.SiteId
this.form.Country = item.Country
}, },
handleChange(v) { handleChange(v) {
if (v) return if (v) return
this.form.TrialSiteAliasName = '' this.form.TrialSiteAliasName = ''
this.form.Country = this.$i18n.locale !== 'zh' ? this.$fd("SiteCountry", 1) : this.$fd("SiteCountry", 0)
}, },
querySearch(queryString, cb) { querySearch(queryString, cb) {
var TrialSiteSelectList = this.TrialSiteSelectList var TrialSiteSelectList = this.TrialSiteSelectList
@ -728,6 +519,7 @@ export default {
this.form[key] = true this.form[key] = true
} }
}) })
this.form.Country = this.$i18n.locale !== 'zh' ? this.$fd("SiteCountry", 1) : this.$fd("SiteCountry", 0)
this.edit_model.visible = true this.edit_model.visible = true
}, },
// siteCRC // siteCRC
@ -764,6 +556,7 @@ export default {
trialSiteCode: this.form.TrialSiteCode, trialSiteCode: this.form.TrialSiteCode,
trialSiteAliasName: this.form.TrialSiteAliasName, trialSiteAliasName: this.form.TrialSiteAliasName,
isDeleted: this.form.IsDeleted, isDeleted: this.form.IsDeleted,
Country: this.form.Country,
} }
if (this.edit_model.model_type === 'add') { if (this.edit_model.model_type === 'add') {
addTrialSites([param]) addTrialSites([param])