影像打包
continuous-integration/drone/push Build is failing Details

main
wangxiaoshuang 2024-04-30 10:47:48 +08:00
parent 172f2d1191
commit 3166108d91
9 changed files with 137 additions and 56 deletions

View File

@ -298,10 +298,11 @@ export function getPatientSubejctVisitList(param) {
} }
// 下载影像 // 下载影像
export function getSubjectImageZipInfo(id, id2) { export function requestPackageAndAnonymizImage(params) {
return request({ return request({
url: `/Patient/getSubjectImageZipInfo/${id}/${id2}`, url: `/Patient/requestPackageAndAnonymizImage`,
method: 'get', method: 'post',
params
}) })
} }

View File

@ -3,20 +3,41 @@ import axios from "axios";
import { saveAs } from "file-saver"; import { saveAs } from "file-saver";
import Vue from 'vue'; import Vue from 'vue';
import { import {
getSubjectImageZipInfo, requestPackageAndAnonymizImage,
} from "@/api/trials/visit.js"; } from "@/api/trials/visit.js";
let flag = false; let flag = {};
export const downloadImage = async (id, id2) => { export const downloadImage = async (id, id2) => {
if (flag) return if (flag[id2]) return
flag = true flag[id2] = true
try { try {
let res = await getSubjectImageZipInfo(id, id2); let params = {
TrialId: id,
SubjectVisitId: id2
}
let res = await requestPackageAndAnonymizImage(params);
if (res.IsSuccess) { if (res.IsSuccess) {
let item = res.Result; if (!res.Result) {
await setfolder(item); Vue.prototype.$message.warning(Vue.prototype.$t("trials:upload:message:not"))
return 1;
}
let a = document.createElement("a");
let href = Vue.prototype.OSSclientConfig.basePath + res.Result;
let fileName =
res.Result.split("/")[res.Result.split("/").length - 1];
a.download = fileName;
a.href = href;
a.click();
URL.revokeObjectURL(href);
this.$nextTick(() => {
a = null;
href = null;
});
return 2;
} else {
return false;
} }
} catch (err) { } catch (err) {
flag = false; flag[id2] = false;
console.log(err); console.log(err);
} }
}; };
@ -78,11 +99,11 @@ const setfolder = async (item) => {
}) })
.then((res) => { .then((res) => {
saveAs(res, zipName + ".zip"); // 使用FileSaver.saveAs保存文件文件名可自定义 saveAs(res, zipName + ".zip"); // 使用FileSaver.saveAs保存文件文件名可自定义
flag = false; flag[id2] = false;
zipObj = null; zipObj = null;
}); });
}) })
.catch((reason) => { flag = false; }); .catch((reason) => { flag[id2] = false; });
}; };
const handleBatchDown = async (item, zip) => { const handleBatchDown = async (item, zip) => {
return new Promise((resolve) => { return new Promise((resolve) => {

View File

@ -12,13 +12,6 @@
class="demo-ruleForm" class="demo-ruleForm"
size="small" size="small"
> >
<!-- 用户类型 -->
<el-form-item
v-if="form.UserId"
:label="$t('passwordReset:form:userType')"
>
<el-input v-model="form.UserType" disabled />
</el-form-item>
<!-- 邮箱 --> <!-- 邮箱 -->
<el-form-item <el-form-item
:label="$t('passwordReset:form:email')" :label="$t('passwordReset:form:email')"
@ -105,6 +98,9 @@
{{ $t("passwordReset:button:verify") }} {{ $t("passwordReset:button:verify") }}
</el-button> </el-button>
</el-col> </el-col>
<span v-if="isVerify" style="float: left">{{
$t("passwordReset:tip:verifySuccess")
}}</span>
</el-form-item> </el-form-item>
<!-- 用户名 --> <!-- 用户名 -->
<el-form-item :label="$t('passwordReset:form:userName')" prop="UserId"> <el-form-item :label="$t('passwordReset:form:userName')" prop="UserId">
@ -128,6 +124,13 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- 用户类型 -->
<el-form-item
v-if="form.UserId"
:label="$t('passwordReset:form:userType')"
>
<el-input v-model="form.UserType" disabled />
</el-form-item>
<!-- 新密码 --> <!-- 新密码 -->
<el-form-item <el-form-item
class="my_new_pwd" class="my_new_pwd"
@ -138,7 +141,7 @@
<el-input v-model="form.NewPwd" show-password autocomplete="off" /> <el-input v-model="form.NewPwd" show-password autocomplete="off" />
<span style="position: absolute; right: -30px"> <span style="position: absolute; right: -30px">
<el-tooltip <el-tooltip
:content="$t('passwordReset:form:passwordCentent')" :content="$t('passwordReset:form:passwordtip')"
placement="top" placement="top"
> >
<i class="el-icon-question" /> <i class="el-icon-question" />
@ -341,6 +344,8 @@ export default {
.catch(() => { .catch(() => {
this.formLoading = false; this.formLoading = false;
this.isVerify = false; this.isVerify = false;
this.users = [];
this.form.UserId = null;
}); });
}, },
handleEmailChange() { handleEmailChange() {

View File

@ -200,6 +200,16 @@ export default {
}, },
async setNewUserName() { async setNewUserName() {
try { try {
let confirm = await this.$confirm(
this.$t("trials:trials-myInfo:confirmMessage:updateUserName"),
{
type: "warning",
distinguishCancelAndClose: true,
confirmButtonText: this.$t("common:button:confirm"),
cancelButtonText: this.$t("common:button:cancel"),
}
);
if (confirm !== "confirm") return;
let res = await setNewUserName(this.userForm.UserName); let res = await setNewUserName(this.userForm.UserName);
if (res.IsSuccess) { if (res.IsSuccess) {
this.userForm.UserName = ""; this.userForm.UserName = "";
@ -208,18 +218,6 @@ export default {
); );
this.$emit("getUserInfo"); this.$emit("getUserInfo");
removeToken(); removeToken();
let confirm = await this.$confirm(
this.$t("trials:trials-myInfo:confirmMessage:updateUserName"),
{
type: "warning",
showClose: false,
showCancelButton: false,
distinguishCancelAndClose: true,
confirmButtonText: this.$t("common:button:confirm"),
cancelButtonText: this.$t("common:button:cancel"),
}
);
if (confirm !== "confirm") return;
this.logout(); this.logout();
} }
} catch (err) { } catch (err) {

View File

@ -114,6 +114,16 @@ export default {
this.$alert(this.$t("passwordReset:formRule:passwordsDiffer")); this.$alert(this.$t("passwordReset:formRule:passwordsDiffer"));
return; return;
} }
let confirm = await this.$confirm(
this.$t("trials:trials-myInfo:confirmMessage:updatePassWord"),
{
type: "warning",
distinguishCancelAndClose: true,
confirmButtonText: this.$t("common:button:confirm"),
cancelButtonText: this.$t("common:button:cancel"),
}
);
if (confirm !== "confirm") return;
const param = { const param = {
UserId: this.userId, UserId: this.userId,
NewPassWord: md5(this.password.NewPassWord), NewPassWord: md5(this.password.NewPassWord),
@ -126,18 +136,6 @@ export default {
this.$t("trials:trials-myinfo:message:modifyPWSuccessfully") this.$t("trials:trials-myinfo:message:modifyPWSuccessfully")
); );
removeToken(); removeToken();
let confirm = await this.$confirm(
this.$t("trials:trials-myInfo:confirmMessage:updatePassWord"),
{
type: "warning",
showClose: false,
showCancelButton: false,
distinguishCancelAndClose: true,
confirmButtonText: this.$t("common:button:confirm"),
cancelButtonText: this.$t("common:button:cancel"),
}
);
if (confirm !== "confirm") return;
this.logout(); this.logout();
} }
} catch (err) { } catch (err) {

View File

@ -38,6 +38,14 @@
min-width="80" min-width="80"
show-overflow-tooltip show-overflow-tooltip
/> />
<!--检查描述-->
<el-table-column
align="center"
prop="Description"
:label="$t('trials:inspection:table:studyDescription')"
show-overflow-tooltip
min-width="100"
></el-table-column>
<!--检查类型--> <!--检查类型-->
<el-table-column <el-table-column
align="center" align="center"

View File

@ -50,17 +50,14 @@
prop="Modalities" prop="Modalities"
:label="$t('trials:audit:table:modality1')" :label="$t('trials:audit:table:modality1')"
/> />
<!-- 检查部位 --> <!--检查描述-->
<el-table-column <el-table-column
prop="BodyPartForEdit" align="center"
:label="$t('trials:uploadedDicoms:table:bodyPart')" prop="Description"
min-width="100" :label="$t('trials:inspection:table:studyDescription')"
show-overflow-tooltip show-overflow-tooltip
> min-width="100"
<template slot-scope="scope"> ></el-table-column>
{{ getBodyPart(scope.row.BodyPartForEdit) }}
</template>
</el-table-column>
<!-- 序列数量 --> <!-- 序列数量 -->
<el-table-column <el-table-column
prop="SeriesCount" prop="SeriesCount"

View File

@ -212,6 +212,27 @@
> >
</template> </template>
</el-table-column> </el-table-column>
<!-- 打包状态 -->
<el-table-column
prop="PackState"
:label="$t('trials:hirVisit:table:PackState')"
show-overflow-tooltip
sortable="custom"
>
<template slot-scope="scope">
<el-tag
v-if="scope.row.SubmitState > 1"
:type="
Number(scope.row.PackState) === 0
? 'danger'
: Number(scope.row.PackState) === 1
? 'warning'
: 'success'
"
>{{ $fd("PackState", Number(scope.row.PackState)) }}</el-tag
>
</template>
</el-table-column>
<!-- 提交时间 --> <!-- 提交时间 -->
<el-table-column <el-table-column
prop="SubmitTime" prop="SubmitTime"
@ -481,7 +502,13 @@ export default {
}, },
// //
async downloadImage(item) { async downloadImage(item) {
downloadImage(item.SubjectId, item.SubjectVisitId); let res = await downloadImage(
this.$route.query.trialId,
item.SubjectVisitId
);
if (res) {
item.PackState = res;
}
}, },
}, },
}; };

View File

@ -228,6 +228,26 @@
show-overflow-tooltip show-overflow-tooltip
sortable="custom" sortable="custom"
/> />
<!-- 打包状态 -->
<el-table-column
prop="PackState"
:label="$t('trials:hirVisit:table:PackState')"
show-overflow-tooltip
sortable="custom"
>
<template slot-scope="scope">
<el-tag
:type="
Number(scope.row.PackState) === 0
? 'danger'
: Number(scope.row.PackState) === 1
? 'warning'
: 'success'
"
>{{ $fd("PackState", Number(scope.row.PackState)) }}</el-tag
>
</template>
</el-table-column>
<!-- 建议完成时间 --> <!-- 建议完成时间 -->
<!-- <el-table-column <!-- <el-table-column
prop="StudyCode" prop="StudyCode"
@ -460,7 +480,13 @@ export default {
}, },
// //
async downloadImage(item) { async downloadImage(item) {
downloadImage(item.SubjectId, item.SourceSubjectVisitId); let res = await downloadImage(
this.$route.query.trialId,
item.SourceSubjectVisitId
);
if (res) {
item.PackState = res;
}
}, },
// //
readResult(row) { readResult(row) {