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

main
caiyiling 2024-05-09 10:16:49 +08:00
commit 0718008904
11 changed files with 395 additions and 357 deletions

View File

@ -29,11 +29,12 @@ export function getInstitutionList(typeId) {
})
}
export function addUser(param) {
export function addUser(param, confirm = false) {
return request({
url: `/user/addUser`,
method: 'post',
data: param
data: param,
confirm
})
}

View File

@ -18,7 +18,7 @@ service.interceptors.request.use(
path = router && router.app && router.app._route && router.app._route.path
config.headers['Content-Type'] = 'application/json;charset=UTF-8'
var language = zzSessionStorage.getItem('lang')
config.headers['Accept-Language'] = language === 'en'?'en-US,en;q=0.5':'zh-CN,zh;q=0.9'
config.headers['Accept-Language'] = language === 'en' ? 'en-US,en;q=0.5' : 'zh-CN,zh;q=0.9'
if (store.getters.token) {
config.headers.Authorization = `Bearer ${store.getters.token}`
}
@ -30,7 +30,7 @@ service.interceptors.request.use(
if (store.state.user.userId !== zzSessionStorage.getItem('userId')) {
window.location.href = `/login`
zzSessionStorage.removeItem('lastWorkbench')
Alert(store.state.lang.language === 'en'? 'The same browser only allows one user account to be logged in at a time.' : '同一浏览器只允许同时登陆一个账户', {
Alert(store.state.lang.language === 'en' ? 'The same browser only allows one user account to be logged in at a time.' : '同一浏览器只允许同时登陆一个账户', {
type: 'warning',
})
}
@ -55,11 +55,11 @@ service.interceptors.response.use(
isConfirm = true
return Promise.resolve(res)
} else if (res.IsSuccess === false) {
if (res.Code !== 5) {
MessageBox.confirm(res.ErrorMessage, {
if (res.Code !== 5 && !response.config.confirm) {
MessageBox.confirm(res.ErrorMessage, {
type: 'warning',
showCancelButton: false,
callback: action => {}
callback: action => { }
})
}
return Promise.reject(res)
@ -80,24 +80,24 @@ service.interceptors.response.use(
})
}
switch (status) {
case 400: message = store.state.lang.language === 'en'? 'Request error' : '请求错误'; break
case 401: message = store.state.lang.language === 'en'? 'Not authorized or login timed out. Please log in again.' : '未授权或登陆超时,请重新登录'; break
case 400: message = store.state.lang.language === 'en' ? 'Request error' : '请求错误'; break
case 401: message = store.state.lang.language === 'en' ? 'Not authorized or login timed out. Please log in again.' : '未授权或登陆超时,请重新登录'; break
case 403: message = error.response.data.ErrorMessage; break
case 404: message = store.state.lang.language === 'en'? 'Request address error' : `请求地址出错`; break
case 405: message = store.state.lang.language === 'en'? 'Interface parameter error or request method inconsistency' : `接口参数传递错误,或者请求方法不一致`; break
case 408: message = store.state.lang.language === 'en'? 'Request timed out' : '请求超时'; break
case 429: message = store.state.lang.language === 'en'? 'The application service limits the traffic. Your requests are too frequent. Please try again later.' : '应用服务限流,您的请求过于频繁,请稍后再试'; break
case 500: message = store.state.lang.language === 'en'? 'Internal server error, and unable to complete the request. Software release might be in process. Please contact the administrator.' : '服务器内部错误,无法完成请求;可能正在发布中,请联系管理员处理'; break
case 501: message = store.state.lang.language === 'en'? 'Service has not been implemented.' : '服务未实现'; break
case 502: message = store.state.lang.language === 'en'? 'System is being upgraded. Please wait patiently.' : '系统正在升级,请耐心等待。'; break
case 503: message = store.state.lang.language === 'en'? 'Service is not available' : '服务不可用'; break
case 504: message = store.state.lang.language === 'en'? 'Gateway timed out' : '网关超时'; break
case 505: message = store.state.lang.language === 'en'? 'HTTP version is not supported' : 'HTTP版本不受支持'; break
case 404: message = store.state.lang.language === 'en' ? 'Request address error' : `请求地址出错`; break
case 405: message = store.state.lang.language === 'en' ? 'Interface parameter error or request method inconsistency' : `接口参数传递错误,或者请求方法不一致`; break
case 408: message = store.state.lang.language === 'en' ? 'Request timed out' : '请求超时'; break
case 429: message = store.state.lang.language === 'en' ? 'The application service limits the traffic. Your requests are too frequent. Please try again later.' : '应用服务限流,您的请求过于频繁,请稍后再试'; break
case 500: message = store.state.lang.language === 'en' ? 'Internal server error, and unable to complete the request. Software release might be in process. Please contact the administrator.' : '服务器内部错误,无法完成请求;可能正在发布中,请联系管理员处理'; break
case 501: message = store.state.lang.language === 'en' ? 'Service has not been implemented.' : '服务未实现'; break
case 502: message = store.state.lang.language === 'en' ? 'System is being upgraded. Please wait patiently.' : '系统正在升级,请耐心等待。'; break
case 503: message = store.state.lang.language === 'en' ? 'Service is not available' : '服务不可用'; break
case 504: message = store.state.lang.language === 'en' ? 'Gateway timed out' : '网关超时'; break
case 505: message = store.state.lang.language === 'en' ? 'HTTP version is not supported' : 'HTTP版本不受支持'; break
default: break
}
if (error.response.status === 401) {
if (store.getters.token) {
if(message !== ''){
if (message !== '') {
Message({
message: message,
type: 'warning',
@ -112,26 +112,26 @@ service.interceptors.response.use(
})
} else {
Message({
message: store.state.lang.language === 'en'? 'You are not authorized to access the interface' : '您无权访问接口',
message: store.state.lang.language === 'en' ? 'You are not authorized to access the interface' : '您无权访问接口',
type: 'warning',
showClose: true
})
}
} else {
if(message !== '' && isConfirm){
MessageBox.confirm(message, store.state.lang.language === 'en'? 'Warning' : '警告', {
if (message !== '' && isConfirm) {
MessageBox.confirm(message, store.state.lang.language === 'en' ? 'Warning' : '警告', {
type: 'warning',
showCancelButton: false,
callback: action => {}
callback: action => { }
})
}
}
}
if (!window.navigator.onLine && isConfirm) {
MessageBox.confirm(store.state.lang.language === 'en'? 'Please check your networkand try again later' : '请检查网络,稍后重试!', store.state.lang.language === 'en'? 'Warning' : '警告', {
MessageBox.confirm(store.state.lang.language === 'en' ? 'Please check your networkand try again later' : '请检查网络,稍后重试!', store.state.lang.language === 'en' ? 'Warning' : '警告', {
type: 'warning',
showCancelButton: false,
callback: action => {}
callback: action => { }
})
isConfirm = false
}

View File

@ -80,6 +80,7 @@
style="width: 100%"
:disabled="user.CanEditUserType === false"
clearable
@change="userTypeChange"
>
<template v-for="(userType, key) of userTypeOptions">
<el-option
@ -282,36 +283,41 @@ export default {
IsZhiZhunDisabled: false,
};
},
watch: {
"user.UserTypeId": {
handler() {
if (this.user.UserTypeId) {
let name = this.getUserType(this.user.UserTypeId);
if (["PM", "PI", "SR", "OA"].includes(name)) {
this.user.IsZhiZhun = true;
this.user.OrganizationName = this.hospitalName;
return (this.IsZhiZhunDisabled = true);
}
}
this.user.IsZhiZhun = false;
this.user.OrganizationName = null;
this.IsZhiZhunDisabled = false;
},
deep: true,
immediate: true,
},
},
created() {
this.getUserTypeList();
if (this.userId !== "") {
this.getUserInfo();
this.type = 1;
} else {
this.type = 0;
}
this.getUserTypeList();
this.getInfo();
},
methods: {
//
userTypeChange() {
this.AffiliationChange();
},
//
AffiliationChange(isFirstInfo = false) {
if (this.user.UserTypeId) {
let name = this.getUserType(this.user.UserTypeId);
if (["PM", "PI", "SR", "OA"].includes(name)) {
if (!isFirstInfo) {
this.user.IsZhiZhun = true;
this.user.OrganizationName = this.hospitalName;
}
if (this.user.IsZhiZhun) {
this.IsZhiZhunDisabled = true;
}
return;
}
if (!isFirstInfo) {
this.user.IsZhiZhun = false;
this.user.OrganizationName = null;
}
this.IsZhiZhunDisabled = false;
}
},
getUserType(id) {
let obj = this.userTypeOptions.find((item) => item.Id === id);
return obj.UserTypeShortName;
@ -381,6 +387,9 @@ export default {
return item;
}
}).filter((item) => item);
if (this.type === 1) {
this.getUserInfo();
}
}
});
},
@ -388,6 +397,7 @@ export default {
getUser(this.userId).then((res) => {
this.user = res.Result;
this.user.Status = parseFloat(this.user.Status);
this.AffiliationChange(true);
});
},
OrgnizationTypeChanged(val) {

View File

@ -154,7 +154,7 @@
type="number"
clearable
:max="200"
:min="0"
:min="1"
/>
</div>
</el-form-item>
@ -242,6 +242,13 @@ export default {
),
trigger: "blur",
},
{
pattern: /^[1-9]\d*$/,
message: this.$t(
"trials:trials-list:formRule:notDecimalsAuthorized"
),
trigger: "blur",
},
{
type: "number",
min: 1,
@ -249,24 +256,6 @@ export default {
message: this.$t("trials:trials-list:formRule:minMaxAuthorized"),
trigger: "blur",
},
{
validator: (rule, value, callback) => {
if (
value &&
(String(value).includes(".") ||
new RegExp(/\D/g).test(String(value)))
) {
callback(
new Error(
this.$t("trials:trials-list:formRule:notDecimalsAuthorized")
)
);
} else {
callback();
}
},
trigger: "blur",
},
],
//
CriterionTypeList: [
@ -284,7 +273,7 @@ export default {
trigger: "blur",
},
{
pattern: "^[\u4e00-\u9fa5a-zA-Z]+$",
pattern: /^[\u4e00-\u9fa5a-zA-Z]+$/,
message: this.$t("trisals:trials-list:formRule:onlyEN"),
trigger: "blur",
},

View File

@ -210,7 +210,10 @@ export default {
document.body.removeChild(eleLink);
},
downloadXmlFile() {
fileDownload(this.form.code, "_Activation_Code.lic");
fileDownload(
this.form.code,
this.data.TrialCode + "_Activation_Code.lic"
);
},
},
};

View File

@ -16,7 +16,7 @@
label-width="120px"
>
<div class="base-dialog-body">
<p>{{ $t("trials:activate:ApplyMessage") }}</p>
<p class="title">{{ $t("trials:activate:ApplyMessage") }}</p>
<!-- 单位名称 -->
<el-form-item
:label="$t('trials:trials-list:activate:organizationName')"
@ -94,7 +94,7 @@
>
</el-form-item>
<div v-if="isActivate">
<p>{{ $t("trials:activate:Message") }}</p>
<p class="title">{{ $t("trials:activate:Message") }}</p>
<!-- 单位名称 -->
<el-form-item
:label="$t('trials:trials-list:activate:organizationName')"
@ -318,7 +318,10 @@ export default {
},
//
async getCode() {
fileDownload(this.form.Authorization, "_Request_Code.req");
fileDownload(
this.form.Authorization,
this.form.TrialCode + "_Request_Code.req"
);
},
//
uploadFile(file) {
@ -379,4 +382,11 @@ export default {
display: flex;
align-items: center;
}
.title {
font-size: 16px;
font-weight: bold;
}
::v-deep .el-form-item__label {
font-weight: bold;
}
</style>

View File

@ -3,79 +3,89 @@
v-loading="loading"
style="height: 100%; background-color: #fff"
>
<div slot="search-container" style="position: relative">
<el-form :inline="true">
<!-- 阅片标准 -->
<el-form-item :label="$t('trials:processCfg:form:criterion')">
<el-select
v-model="searchData.TrialReadingCriterionId"
clearable
filterable
style="width: 150px"
>
<el-option
v-for="item of trialCriterionList"
:key="item.TrialReadingCriterionId"
:label="item.TrialReadingCriterionName"
:value="item.TrialReadingCriterionId"
/>
</el-select>
</el-form-item>
<!-- 受试者编号 -->
<el-form-item :label="$t('trials:reviewTrack:table:subjectCode')">
<el-input
v-model="searchData.SubjectCode"
style="width: 100px"
clearable
/>
</el-form-item>
<!-- 患者编号 -->
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
<el-input
v-model="searchData.PatientIdStr"
style="width: 140px"
clearable
/>
</el-form-item>
<!-- 患者姓名 -->
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
<el-input
v-model="searchData.PatientName"
style="width: 140px"
clearable
/>
</el-form-item>
<!-- 访视名称 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:adReview:table:visitName')"
>
<el-input
v-model="searchData.TaskName"
style="width: 140px"
clearable
/>
</el-form-item>
<!-- 任务状态 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:readTask:table:taskState')"
>
<el-select
v-model="searchData.TaskState"
clearable
style="width: 120px"
>
<el-option
v-for="i of $d.TaskState"
:key="'TaskState' + i.label"
:value="i.value"
:label="i.label"
/>
</el-select>
</el-form-item>
<!-- 任务类型 -->
<!-- <el-form-item
<el-tabs v-model="TrialReadingCriterionId" type="border-card">
<el-tab-pane
v-for="i in trialCriterionList"
:key="i.TrialReadingCriterionId"
:label="i.TrialReadingCriterionName"
:name="i.TrialReadingCriterionId"
>
<div v-if="TrialReadingCriterionId === i.TrialReadingCriterionId">
<div slot="search-container" style="position: relative">
<el-form :inline="true">
<!-- 阅片标准 -->
<!-- <el-form-item :label="$t('trials:processCfg:form:criterion')">
<el-select
v-model="searchData.TrialReadingCriterionId"
clearable
filterable
style="width: 150px"
>
<el-option
v-for="item of trialCriterionList"
:key="item.TrialReadingCriterionId"
:label="item.TrialReadingCriterionName"
:value="item.TrialReadingCriterionId"
/>
</el-select>
</el-form-item> -->
<!-- 受试者编号 -->
<el-form-item :label="$t('trials:reviewTrack:table:subjectCode')">
<el-input
v-model="searchData.SubjectCode"
style="width: 100px"
clearable
/>
</el-form-item>
<!-- 患者编号 -->
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
<el-input
v-model="searchData.PatientIdStr"
style="width: 140px"
clearable
/>
</el-form-item>
<!-- 患者姓名 -->
<el-form-item
:label="$t('trials:uploadDicomList:table:patientName')"
>
<el-input
v-model="searchData.PatientName"
style="width: 140px"
clearable
/>
</el-form-item>
<!-- 访视名称 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:adReview:table:visitName')"
>
<el-input
v-model="searchData.TaskName"
style="width: 140px"
clearable
/>
</el-form-item>
<!-- 任务状态 -->
<el-form-item
style="margin-bottom: 10px"
:label="$t('trials:readTask:table:taskState')"
>
<el-select
v-model="searchData.TaskState"
clearable
style="width: 120px"
>
<el-option
v-for="i of $d.TaskState"
:key="'TaskState' + i.label"
:value="i.value"
:label="i.label"
/>
</el-select>
</el-form-item>
<!-- 任务类型 -->
<!-- <el-form-item
style="margin-bottom: 10px"
:label="$t('trials:readTask:table:readingCategory')"
>
@ -92,123 +102,127 @@
/>
</el-select>
</el-form-item> -->
<!-- 签名时间 -->
<el-form-item :label="$t('trials:readTask:table:signTime')">
<el-date-picker
v-model="dateValue"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
clearable
:default-time="['00:00:00', '23:59:59']"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<!-- 查询 -->
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
{{ $t("common:button:search") }}
</el-button>
<!-- 重置 -->
<el-button
type="primary"
icon="el-icon-refresh-left"
@click="handleReset"
>
{{ $t("common:button:reset") }}
</el-button>
</el-form-item>
</el-form>
</div>
<div slot="main-container">
<el-table
v-adaptive="{ bottomOffset: 75 }"
:data="list"
stripe
height="100"
@sort-change="handleSortChange"
>
<!-- 受试者编号 -->
<el-table-column
prop="SubjectCode"
min-width="100"
:label="$t('trials:reviewTrack:table:subjectCode')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 患者编号 -->
<el-table-column
prop="PatientIdStr"
min-width="100"
:label="$t('trials:uploadDicomList:table:pId')"
show-overflow-tooltip
>
<template slot-scope="scope">
<span
v-for="(item, index) in scope.row.PatientList"
:key="`${index}${item.PatientId}`"
<!-- 签名时间 -->
<el-form-item :label="$t('trials:readTask:table:signTime')">
<el-date-picker
v-model="dateValue"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
clearable
:default-time="['00:00:00', '23:59:59']"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<!-- 查询 -->
<el-button
type="primary"
icon="el-icon-search"
@click="handleSearch"
>
{{ $t("common:button:search") }}
</el-button>
<!-- 重置 -->
<el-button
type="primary"
icon="el-icon-refresh-left"
@click="handleReset"
>
{{ $t("common:button:reset") }}
</el-button>
</el-form-item>
</el-form>
</div>
<div slot="main-container">
<el-table
v-adaptive="{ bottomOffset: 75 }"
:data="list"
stripe
height="100"
@sort-change="handleSortChange"
>
{{
index === scope.row.PatientList.length - 1
? item.PatientIdStr
: `${item.PatientIdStr}, `
}}
</span>
</template>
</el-table-column>
<!-- 患者姓名 -->
<el-table-column
prop="SubjectShortName"
min-width="100"
:label="$t('trials:uploadDicomList:table:patientName')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 访视名称 -->
<el-table-column
prop="TaskName"
:label="$t('trials:adReview:table:visitName')"
min-width="100"
sortable="custom"
show-overflow-tooltip
/>
<!-- 阅片标准 -->
<el-table-column
prop="TrialReadingCriterionName"
:label="$t('trials:adReview:table:TrialReadingCriterionName')"
min-width="100"
sortable="custom"
show-overflow-tooltip
/>
<!-- 任务状态 -->
<el-table-column
prop="TaskState"
:label="$t('trials:readTask:table:taskState')"
min-width="100"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">
<el-tag v-if="scope.row.TaskState === 0" type="primary">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
<el-tag v-if="scope.row.TaskState === 1" type="info">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
<el-tag v-if="scope.row.TaskState === 3" type="danger">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
<el-tag v-if="scope.row.TaskState === 4" type="warning">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
<el-tag v-if="scope.row.TaskState === 5" type="danger">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
</template>
</el-table-column>
<!-- 任务类型 -->
<!-- <el-table-column
<!-- 受试者编号 -->
<el-table-column
prop="SubjectCode"
min-width="100"
:label="$t('trials:reviewTrack:table:subjectCode')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 患者编号 -->
<el-table-column
prop="PatientIdStr"
min-width="100"
:label="$t('trials:uploadDicomList:table:pId')"
show-overflow-tooltip
>
<template slot-scope="scope">
<span
v-for="(item, index) in scope.row.PatientList"
:key="`${index}${item.PatientId}`"
>
{{
index === scope.row.PatientList.length - 1
? item.PatientIdStr
: `${item.PatientIdStr}, `
}}
</span>
</template>
</el-table-column>
<!-- 患者姓名 -->
<el-table-column
prop="SubjectShortName"
min-width="100"
:label="$t('trials:uploadDicomList:table:patientName')"
show-overflow-tooltip
sortable="custom"
/>
<!-- 访视名称 -->
<el-table-column
prop="TaskName"
:label="$t('trials:adReview:table:visitName')"
min-width="100"
sortable="custom"
show-overflow-tooltip
/>
<!-- 阅片标准 -->
<el-table-column
prop="TrialReadingCriterionName"
:label="$t('trials:adReview:table:TrialReadingCriterionName')"
min-width="100"
sortable="custom"
show-overflow-tooltip
/>
<!-- 任务状态 -->
<el-table-column
prop="TaskState"
:label="$t('trials:readTask:table:taskState')"
min-width="100"
sortable="custom"
show-overflow-tooltip
>
<template slot-scope="scope">
<el-tag v-if="scope.row.TaskState === 0" type="primary">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
<el-tag v-if="scope.row.TaskState === 1" type="info">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
<el-tag v-if="scope.row.TaskState === 3" type="danger">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
<el-tag v-if="scope.row.TaskState === 4" type="warning">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
<el-tag v-if="scope.row.TaskState === 5" type="danger">{{
$fd("TaskState", scope.row.TaskState)
}}</el-tag>
</template>
</el-table-column>
<!-- 任务类型 -->
<!-- <el-table-column
prop="ReadingCategory"
min-width="90"
:label="$t('trials:readTask:table:readingCategory')"
@ -230,16 +244,16 @@
}}</el-tag>
</template>
</el-table-column> -->
<!-- 签名时间 -->
<el-table-column
prop="SignTime"
min-width="120"
:label="$t('trials:readTask:table:signTime')"
sortable="custom"
show-overflow-tooltip
/>
<!-- 申请状态 -->
<!-- <el-table-column
<!-- 签名时间 -->
<el-table-column
prop="SignTime"
min-width="120"
:label="$t('trials:readTask:table:signTime')"
sortable="custom"
show-overflow-tooltip
/>
<!-- 申请状态 -->
<!-- <el-table-column
v-if="!hasPermi(['role:air'])"
prop="ReReadingApplyState"
:label="$t('trials:readTask:table:reReadingApplyState')"
@ -266,66 +280,69 @@
}}</el-tag>
</template>
</el-table-column> -->
<!--操作-->
<el-table-column
:label="$t('common:action:action')"
min-width="100"
fixed="right"
v-if="
hasPermi([
'trials:readTask:view',
'trials:readTask:reread',
'trials:readTask:report',
'trials:readTask:auditRecord',
])
"
>
<template slot-scope="scope">
<!-- 查看 -->
<el-button
v-hasPermi="['trials:readTask:view']"
circle
:title="$t('trials:readTask:button:view')"
icon="el-icon-view"
@click="handleReadImage(scope.row)"
/>
<!-- 重阅 -->
<el-button
v-hasPermi="['trials:readTask:reread']"
circle
:disabled="scope.row.TaskState > 0"
:title="$t('trials:readTask:button:reread')"
icon="el-icon-collection"
@click="openApplyReReading(scope.row)"
/>
<!-- 下载报告 -->
<!-- <el-button
<!--操作-->
<el-table-column
:label="$t('common:action:action')"
min-width="100"
fixed="right"
v-if="
hasPermi([
'trials:readTask:view',
'trials:readTask:reread',
'trials:readTask:report',
'trials:readTask:auditRecord',
])
"
>
<template slot-scope="scope">
<!-- 查看 -->
<el-button
v-hasPermi="['trials:readTask:view']"
circle
:title="$t('trials:readTask:button:view')"
icon="el-icon-view"
@click="handleReadImage(scope.row)"
/>
<!-- 重阅 -->
<el-button
v-hasPermi="['trials:readTask:reread']"
circle
:disabled="scope.row.TaskState > 0"
:title="$t('trials:readTask:button:reread')"
icon="el-icon-collection"
@click="openApplyReReading(scope.row)"
/>
<!-- 下载报告 -->
<!-- <el-button
v-hasPermi="['trials:readTask:report']"
circle
:title="$t('trials:reading:button:uploadReport')"
icon="el-icon-collection"
@click="handleReadImage(scope.row)"
/> -->
<!-- 审核记录 -->
<!-- <el-button
<!-- 审核记录 -->
<!-- <el-button
v-hasPermi="['trials:readTask:auditRecord']"
circle
:title="$t('trials:auditRecord:table:auditRecords')"
icon="el-icon-collection"
@click="handleReadImage(scope.row)"
/> -->
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination
class="page"
:total="total"
:page.sync="searchData.PageIndex"
:limit.sync="searchData.PageSize"
@pagination="getList"
/>
</div>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination
class="page"
:total="total"
:page.sync="searchData.PageIndex"
:limit.sync="searchData.PageSize"
@pagination="getList"
/>
</div>
</div>
</el-tab-pane>
</el-tabs>
<el-dialog
v-if="ApplyforReasonVisible"
:title="$t('trials:readTask:dagTitle:apply')"
@ -714,7 +731,7 @@ export default {
getList() {
this.loading = true;
this.searchData.TrialId = this.trialId;
// this.searchData.TrialReadingCriterionId = this.TrialReadingCriterionId;
this.searchData.TrialReadingCriterionId = this.TrialReadingCriterionId;
if (this.dateValue && this.dateValue[0] && this.dateValue[1]) {
this.searchData.BeginSignDate = this.$moment(this.dateValue[0]).format(
"YYYY-MM-DD HH:mm:ss"

View File

@ -186,7 +186,14 @@
sortable="custom"
>
<template slot-scope="scope">
<span>{{ $fd("TaskState", scope.row.TaskState) }}</span>
<el-tag
:type="
['primary', 'info', '', 'danger', 'warning', 'danger'][
scope.row.TaskState
]
"
>{{ $fd("TaskState", scope.row.TaskState) }}</el-tag
>
</template>
</el-table-column>
<!-- 阅片人 -->
@ -258,7 +265,7 @@
<!--操作-->
<el-table-column
:label="$t('common:action:action')"
min-width="100"
min-width="130"
fixed="right"
>
<template slot-scope="scope">
@ -270,32 +277,21 @@
@click="readResult(scope.row)"
:disabled="scope.row.ReadingTaskState !== 2"
/>
<el-dropdown
style="margin-left: 10px"
@command="(command) => handleCommand(command, scope.row)"
>
<el-button
class="el-dropdown-link"
circle
icon="el-icon-more"
:title="$t('common:action:action')"
>
</el-button>
<el-dropdown-menu slot="dropdown">
<!--评估报告disabled-->
<el-dropdown-item
command="showReport"
:disabled="scope.row.ReadingTaskState !== 2"
>{{
$t("trials:trials-panel:hirVisit:EvaluationReport")
}}</el-dropdown-item
>
<!--数据导出-->
<el-dropdown-item command="downloadImage">{{
$t("trials:reading:button:uploadImages")
}}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<!--评估报告-->
<el-button
circle
icon="el-icon-document"
:title="$t('trials:trials-panel:hirVisit:EvaluationReport')"
@click="handleCommand('showReport', scope.row)"
:disabled="scope.row.ReadingTaskState !== 2"
/>
<!--下载影像-->
<el-button
circle
icon="el-icon-download"
:title="$t('trials:reading:button:uploadImages')"
@click="handleCommand('downloadImage', scope.row)"
/>
</template>
</el-table-column>
</el-table>

View File

@ -60,7 +60,7 @@
<el-input v-model="form.OrganizationName" clearable />
</el-form-item>
</el-form>
<div v-if="errorMsg" style="font-size: 12px; color: #f66">
<div v-if="errorMsg" style="font-size: 12px; color: #f66;text-align:center">
{{ errorMsg }}
</div>
</template>
@ -291,7 +291,13 @@ export default {
this.form.BaseUrl = `${location.protocol}//${location.host}/login`;
this.form.RouteUrl = `${location.protocol}//${location.host}/email-recompose`;
}
addUser(this.form)
const selectedUserType = this.userTypeOptions.filter(
(item) => item.Id === this.form.UserTypeId
);
if (selectedUserType.length > 0) {
this.form.UserTypeEnum = selectedUserType[0].UserTypeEnum;
}
addUser(this.form, true)
.then((res) => {
this.btnLoading = false;
this.$message.success(
@ -305,8 +311,8 @@ export default {
// this.$set(this.form, "LastName", res.Result.LastName);
// this.$set(this.form, "FirstName", res.Result.FirstName);
// this.$set(this.form, "Phone", res.Result.Phone);
this.errorMsg = res.ErrorMessage;
}
this.errorMsg = res.ErrorMessage;
this.btnLoading = false;
});
}

View File

@ -117,7 +117,11 @@
:label="$t('trials:trials-myinfo:form:gender')"
show-overflow-tooltip
min-width="140"
></el-table-column>
>
<template slot-scope="scope">
<span>{{ $fd("sex", scope.row.PatientSex) }}</span>
</template>
</el-table-column>
<!--Called AE-->
<el-table-column
prop="CalledAEList"

View File

@ -11,12 +11,14 @@
clearable
style="width: 120px"
>
<el-option
v-for="item of $d.UserOptType"
:key="'UserOptType' + item.label"
:value="item.value"
:label="item.label"
/>
<template v-for="item of $d.UserOptType">
<el-option
:key="'UserOptType' + item.label"
:value="item.value"
:label="item.label"
v-if="item.value !== 9 && item.value !== 10"
/>
</template>
</el-select>
</el-form-item>
<el-form-item label="IP" prop="IP">