部分问题修复
continuous-integration/drone/push Build is passing Details

main
wangxiaoshuang 2024-05-08 15:14:06 +08:00
parent f31ffb4b5e
commit fdf6ae36b7
8 changed files with 325 additions and 304 deletions

View File

@ -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
}) })
} }

View File

@ -18,7 +18,7 @@ service.interceptors.request.use(
path = router && router.app && router.app._route && router.app._route.path path = router && router.app && router.app._route && router.app._route.path
config.headers['Content-Type'] = 'application/json;charset=UTF-8' config.headers['Content-Type'] = 'application/json;charset=UTF-8'
var language = zzSessionStorage.getItem('lang') 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) { if (store.getters.token) {
config.headers.Authorization = `Bearer ${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')) { if (store.state.user.userId !== zzSessionStorage.getItem('userId')) {
window.location.href = `/login` window.location.href = `/login`
zzSessionStorage.removeItem('lastWorkbench') 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', type: 'warning',
}) })
} }
@ -55,11 +55,11 @@ 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,
callback: action => {} callback: action => { }
}) })
} }
return Promise.reject(res) return Promise.reject(res)
@ -80,24 +80,24 @@ service.interceptors.response.use(
}) })
} }
switch (status) { switch (status) {
case 400: message = store.state.lang.language === 'en'? 'Request error' : '请求错误'; 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 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 403: message = error.response.data.ErrorMessage; break
case 404: message = store.state.lang.language === 'en'? 'Request address error' : `请求地址出错`; 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 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 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 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 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 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 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 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 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 505: message = store.state.lang.language === 'en' ? 'HTTP version is not supported' : 'HTTP版本不受支持'; break
default: break default: break
} }
if (error.response.status === 401) { if (error.response.status === 401) {
if (store.getters.token) { if (store.getters.token) {
if(message !== ''){ if (message !== '') {
Message({ Message({
message: message, message: message,
type: 'warning', type: 'warning',
@ -112,26 +112,26 @@ service.interceptors.response.use(
}) })
} else { } else {
Message({ 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', type: 'warning',
showClose: true showClose: true
}) })
} }
} else { } else {
if(message !== '' && isConfirm){ if (message !== '' && isConfirm) {
MessageBox.confirm(message, store.state.lang.language === 'en'? 'Warning' : '警告', { MessageBox.confirm(message, store.state.lang.language === 'en' ? 'Warning' : '警告', {
type: 'warning', type: 'warning',
showCancelButton: false, showCancelButton: false,
callback: action => {} callback: action => { }
}) })
} }
} }
} }
if (!window.navigator.onLine && isConfirm) { 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', type: 'warning',
showCancelButton: false, showCancelButton: false,
callback: action => {} callback: action => { }
}) })
isConfirm = false isConfirm = false
} }

View File

@ -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",
}, },

View File

@ -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"
);
}, },
}, },
}; };

View File

@ -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) {

View File

@ -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"

View File

@ -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;
}); });
} }

View File

@ -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">