Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/hir_web into main
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
0718008904
|
@ -29,11 +29,12 @@ export function getInstitutionList(typeId) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function addUser(param) {
|
export function addUser(param, confirm = false) {
|
||||||
return request({
|
return request({
|
||||||
url: `/user/addUser`,
|
url: `/user/addUser`,
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: param
|
data: param,
|
||||||
|
confirm
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ service.interceptors.response.use(
|
||||||
isConfirm = true
|
isConfirm = true
|
||||||
return Promise.resolve(res)
|
return Promise.resolve(res)
|
||||||
} else if (res.IsSuccess === false) {
|
} else if (res.IsSuccess === false) {
|
||||||
if (res.Code !== 5) {
|
if (res.Code !== 5 && !response.config.confirm) {
|
||||||
MessageBox.confirm(res.ErrorMessage, {
|
MessageBox.confirm(res.ErrorMessage, {
|
||||||
type: 'warning',
|
type: 'warning',
|
||||||
showCancelButton: false,
|
showCancelButton: false,
|
||||||
|
|
|
@ -80,6 +80,7 @@
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:disabled="user.CanEditUserType === false"
|
:disabled="user.CanEditUserType === false"
|
||||||
clearable
|
clearable
|
||||||
|
@change="userTypeChange"
|
||||||
>
|
>
|
||||||
<template v-for="(userType, key) of userTypeOptions">
|
<template v-for="(userType, key) of userTypeOptions">
|
||||||
<el-option
|
<el-option
|
||||||
|
@ -282,36 +283,41 @@ export default {
|
||||||
IsZhiZhunDisabled: false,
|
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() {
|
created() {
|
||||||
this.getUserTypeList();
|
|
||||||
if (this.userId !== "") {
|
if (this.userId !== "") {
|
||||||
this.getUserInfo();
|
|
||||||
this.type = 1;
|
this.type = 1;
|
||||||
} else {
|
} else {
|
||||||
this.type = 0;
|
this.type = 0;
|
||||||
}
|
}
|
||||||
|
this.getUserTypeList();
|
||||||
this.getInfo();
|
this.getInfo();
|
||||||
},
|
},
|
||||||
methods: {
|
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) {
|
getUserType(id) {
|
||||||
let obj = this.userTypeOptions.find((item) => item.Id === id);
|
let obj = this.userTypeOptions.find((item) => item.Id === id);
|
||||||
return obj.UserTypeShortName;
|
return obj.UserTypeShortName;
|
||||||
|
@ -381,6 +387,9 @@ export default {
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
}).filter((item) => item);
|
}).filter((item) => item);
|
||||||
|
if (this.type === 1) {
|
||||||
|
this.getUserInfo();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
@ -388,6 +397,7 @@ export default {
|
||||||
getUser(this.userId).then((res) => {
|
getUser(this.userId).then((res) => {
|
||||||
this.user = res.Result;
|
this.user = res.Result;
|
||||||
this.user.Status = parseFloat(this.user.Status);
|
this.user.Status = parseFloat(this.user.Status);
|
||||||
|
this.AffiliationChange(true);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
OrgnizationTypeChanged(val) {
|
OrgnizationTypeChanged(val) {
|
||||||
|
|
|
@ -154,7 +154,7 @@
|
||||||
type="number"
|
type="number"
|
||||||
clearable
|
clearable
|
||||||
:max="200"
|
:max="200"
|
||||||
:min="0"
|
:min="1"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
@ -242,6 +242,13 @@ export default {
|
||||||
),
|
),
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
pattern: /^[1-9]\d*$/,
|
||||||
|
message: this.$t(
|
||||||
|
"trials:trials-list:formRule:notDecimalsAuthorized"
|
||||||
|
),
|
||||||
|
trigger: "blur",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
type: "number",
|
type: "number",
|
||||||
min: 1,
|
min: 1,
|
||||||
|
@ -249,24 +256,6 @@ export default {
|
||||||
message: this.$t("trials:trials-list:formRule:minMaxAuthorized"),
|
message: this.$t("trials:trials-list:formRule:minMaxAuthorized"),
|
||||||
trigger: "blur",
|
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: [
|
CriterionTypeList: [
|
||||||
|
@ -284,7 +273,7 @@ export default {
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
pattern: "^[\u4e00-\u9fa5a-zA-Z]+$",
|
pattern: /^[\u4e00-\u9fa5a-zA-Z]+$/,
|
||||||
message: this.$t("trisals:trials-list:formRule:onlyEN"),
|
message: this.$t("trisals:trials-list:formRule:onlyEN"),
|
||||||
trigger: "blur",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
|
|
|
@ -210,7 +210,10 @@ export default {
|
||||||
document.body.removeChild(eleLink);
|
document.body.removeChild(eleLink);
|
||||||
},
|
},
|
||||||
downloadXmlFile() {
|
downloadXmlFile() {
|
||||||
fileDownload(this.form.code, "_Activation_Code.lic");
|
fileDownload(
|
||||||
|
this.form.code,
|
||||||
|
this.data.TrialCode + "_Activation_Code.lic"
|
||||||
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
label-width="120px"
|
label-width="120px"
|
||||||
>
|
>
|
||||||
<div class="base-dialog-body">
|
<div class="base-dialog-body">
|
||||||
<p>{{ $t("trials:activate:ApplyMessage") }}</p>
|
<p class="title">{{ $t("trials:activate:ApplyMessage") }}</p>
|
||||||
<!-- 单位名称 -->
|
<!-- 单位名称 -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
:label="$t('trials:trials-list:activate:organizationName')"
|
:label="$t('trials:trials-list:activate:organizationName')"
|
||||||
|
@ -94,7 +94,7 @@
|
||||||
>
|
>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<div v-if="isActivate">
|
<div v-if="isActivate">
|
||||||
<p>{{ $t("trials:activate:Message") }}</p>
|
<p class="title">{{ $t("trials:activate:Message") }}</p>
|
||||||
<!-- 单位名称 -->
|
<!-- 单位名称 -->
|
||||||
<el-form-item
|
<el-form-item
|
||||||
:label="$t('trials:trials-list:activate:organizationName')"
|
:label="$t('trials:trials-list:activate:organizationName')"
|
||||||
|
@ -318,7 +318,10 @@ export default {
|
||||||
},
|
},
|
||||||
// 下载
|
// 下载
|
||||||
async getCode() {
|
async getCode() {
|
||||||
fileDownload(this.form.Authorization, "_Request_Code.req");
|
fileDownload(
|
||||||
|
this.form.Authorization,
|
||||||
|
this.form.TrialCode + "_Request_Code.req"
|
||||||
|
);
|
||||||
},
|
},
|
||||||
// 上传并读取文件
|
// 上传并读取文件
|
||||||
uploadFile(file) {
|
uploadFile(file) {
|
||||||
|
@ -379,4 +382,11 @@ export default {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
.title {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
::v-deep .el-form-item__label {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
|
@ -3,10 +3,18 @@
|
||||||
v-loading="loading"
|
v-loading="loading"
|
||||||
style="height: 100%; background-color: #fff"
|
style="height: 100%; background-color: #fff"
|
||||||
>
|
>
|
||||||
|
<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">
|
<div slot="search-container" style="position: relative">
|
||||||
<el-form :inline="true">
|
<el-form :inline="true">
|
||||||
<!-- 阅片标准 -->
|
<!-- 阅片标准 -->
|
||||||
<el-form-item :label="$t('trials:processCfg:form:criterion')">
|
<!-- <el-form-item :label="$t('trials:processCfg:form:criterion')">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="searchData.TrialReadingCriterionId"
|
v-model="searchData.TrialReadingCriterionId"
|
||||||
clearable
|
clearable
|
||||||
|
@ -20,7 +28,7 @@
|
||||||
:value="item.TrialReadingCriterionId"
|
:value="item.TrialReadingCriterionId"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item> -->
|
||||||
<!-- 受试者编号 -->
|
<!-- 受试者编号 -->
|
||||||
<el-form-item :label="$t('trials:reviewTrack:table:subjectCode')">
|
<el-form-item :label="$t('trials:reviewTrack:table:subjectCode')">
|
||||||
<el-input
|
<el-input
|
||||||
|
@ -38,7 +46,9 @@
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- 患者姓名 -->
|
<!-- 患者姓名 -->
|
||||||
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
|
<el-form-item
|
||||||
|
:label="$t('trials:uploadDicomList:table:patientName')"
|
||||||
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="searchData.PatientName"
|
v-model="searchData.PatientName"
|
||||||
style="width: 140px"
|
style="width: 140px"
|
||||||
|
@ -107,7 +117,11 @@
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<!-- 查询 -->
|
<!-- 查询 -->
|
||||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="el-icon-search"
|
||||||
|
@click="handleSearch"
|
||||||
|
>
|
||||||
{{ $t("common:button:search") }}
|
{{ $t("common:button:search") }}
|
||||||
</el-button>
|
</el-button>
|
||||||
<!-- 重置 -->
|
<!-- 重置 -->
|
||||||
|
@ -326,6 +340,9 @@
|
||||||
@pagination="getList"
|
@pagination="getList"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
<el-dialog
|
<el-dialog
|
||||||
v-if="ApplyforReasonVisible"
|
v-if="ApplyforReasonVisible"
|
||||||
:title="$t('trials:readTask:dagTitle:apply')"
|
:title="$t('trials:readTask:dagTitle:apply')"
|
||||||
|
@ -714,7 +731,7 @@ export default {
|
||||||
getList() {
|
getList() {
|
||||||
this.loading = true;
|
this.loading = true;
|
||||||
this.searchData.TrialId = this.trialId;
|
this.searchData.TrialId = this.trialId;
|
||||||
// this.searchData.TrialReadingCriterionId = this.TrialReadingCriterionId;
|
this.searchData.TrialReadingCriterionId = this.TrialReadingCriterionId;
|
||||||
if (this.dateValue && this.dateValue[0] && this.dateValue[1]) {
|
if (this.dateValue && this.dateValue[0] && this.dateValue[1]) {
|
||||||
this.searchData.BeginSignDate = this.$moment(this.dateValue[0]).format(
|
this.searchData.BeginSignDate = this.$moment(this.dateValue[0]).format(
|
||||||
"YYYY-MM-DD HH:mm:ss"
|
"YYYY-MM-DD HH:mm:ss"
|
||||||
|
|
|
@ -186,7 +186,14 @@
|
||||||
sortable="custom"
|
sortable="custom"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<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>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<!-- 阅片人 -->
|
<!-- 阅片人 -->
|
||||||
|
@ -258,7 +265,7 @@
|
||||||
<!--操作-->
|
<!--操作-->
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:label="$t('common:action:action')"
|
:label="$t('common:action:action')"
|
||||||
min-width="100"
|
min-width="130"
|
||||||
fixed="right"
|
fixed="right"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
|
@ -270,32 +277,21 @@
|
||||||
@click="readResult(scope.row)"
|
@click="readResult(scope.row)"
|
||||||
:disabled="scope.row.ReadingTaskState !== 2"
|
:disabled="scope.row.ReadingTaskState !== 2"
|
||||||
/>
|
/>
|
||||||
<el-dropdown
|
<!--评估报告-->
|
||||||
style="margin-left: 10px"
|
|
||||||
@command="(command) => handleCommand(command, scope.row)"
|
|
||||||
>
|
|
||||||
<el-button
|
<el-button
|
||||||
class="el-dropdown-link"
|
|
||||||
circle
|
circle
|
||||||
icon="el-icon-more"
|
icon="el-icon-document"
|
||||||
:title="$t('common:action:action')"
|
:title="$t('trials:trials-panel:hirVisit:EvaluationReport')"
|
||||||
>
|
@click="handleCommand('showReport', scope.row)"
|
||||||
</el-button>
|
|
||||||
<el-dropdown-menu slot="dropdown">
|
|
||||||
<!--评估报告disabled-->
|
|
||||||
<el-dropdown-item
|
|
||||||
command="showReport"
|
|
||||||
:disabled="scope.row.ReadingTaskState !== 2"
|
:disabled="scope.row.ReadingTaskState !== 2"
|
||||||
>{{
|
/>
|
||||||
$t("trials:trials-panel:hirVisit:EvaluationReport")
|
<!--下载影像-->
|
||||||
}}</el-dropdown-item
|
<el-button
|
||||||
>
|
circle
|
||||||
<!--数据导出-->
|
icon="el-icon-download"
|
||||||
<el-dropdown-item command="downloadImage">{{
|
:title="$t('trials:reading:button:uploadImages')"
|
||||||
$t("trials:reading:button:uploadImages")
|
@click="handleCommand('downloadImage', scope.row)"
|
||||||
}}</el-dropdown-item>
|
/>
|
||||||
</el-dropdown-menu>
|
|
||||||
</el-dropdown>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|
|
@ -60,7 +60,7 @@
|
||||||
<el-input v-model="form.OrganizationName" clearable />
|
<el-input v-model="form.OrganizationName" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</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 }}
|
{{ errorMsg }}
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
@ -291,7 +291,13 @@ export default {
|
||||||
this.form.BaseUrl = `${location.protocol}//${location.host}/login`;
|
this.form.BaseUrl = `${location.protocol}//${location.host}/login`;
|
||||||
this.form.RouteUrl = `${location.protocol}//${location.host}/email-recompose`;
|
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) => {
|
.then((res) => {
|
||||||
this.btnLoading = false;
|
this.btnLoading = false;
|
||||||
this.$message.success(
|
this.$message.success(
|
||||||
|
@ -305,8 +311,8 @@ export default {
|
||||||
// this.$set(this.form, "LastName", res.Result.LastName);
|
// this.$set(this.form, "LastName", res.Result.LastName);
|
||||||
// this.$set(this.form, "FirstName", res.Result.FirstName);
|
// this.$set(this.form, "FirstName", res.Result.FirstName);
|
||||||
// this.$set(this.form, "Phone", res.Result.Phone);
|
// this.$set(this.form, "Phone", res.Result.Phone);
|
||||||
this.errorMsg = res.ErrorMessage;
|
|
||||||
}
|
}
|
||||||
|
this.errorMsg = res.ErrorMessage;
|
||||||
this.btnLoading = false;
|
this.btnLoading = false;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -117,7 +117,11 @@
|
||||||
:label="$t('trials:trials-myinfo:form:gender')"
|
:label="$t('trials:trials-myinfo:form:gender')"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
min-width="140"
|
min-width="140"
|
||||||
></el-table-column>
|
>
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ $fd("sex", scope.row.PatientSex) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<!--Called AE-->
|
<!--Called AE-->
|
||||||
<el-table-column
|
<el-table-column
|
||||||
prop="CalledAEList"
|
prop="CalledAEList"
|
||||||
|
|
|
@ -11,12 +11,14 @@
|
||||||
clearable
|
clearable
|
||||||
style="width: 120px"
|
style="width: 120px"
|
||||||
>
|
>
|
||||||
|
<template v-for="item of $d.UserOptType">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item of $d.UserOptType"
|
|
||||||
:key="'UserOptType' + item.label"
|
:key="'UserOptType' + item.label"
|
||||||
:value="item.value"
|
:value="item.value"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
|
v-if="item.value !== 9 && item.value !== 10"
|
||||||
/>
|
/>
|
||||||
|
</template>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="IP" prop="IP">
|
<el-form-item label="IP" prop="IP">
|
||||||
|
|
Loading…
Reference in New Issue