部分问题修复

main
wangxiaoshuang 2024-04-09 14:28:29 +08:00
parent 8bce382107
commit 7be972dd94
14 changed files with 510 additions and 1300 deletions

View File

@ -0,0 +1,71 @@
<template>
<el-select
v-model="visit"
placeholder="请选择"
@visible-change="selectChange"
@change="handleChange"
>
<el-option
v-for="item in list"
:key="item.id"
:label="item.label"
:value="item.value"
/>
<p class="addVisit" @click.stop="add">
<i class="el-icon-plus" v-loading="loading"></i>
</p>
</el-select>
</template>
<script>
export default {
name: "visitSelect",
props: {
list: {
required: true,
default: () => {
return [];
},
},
modelData: {
required: true,
},
loading: {
required: true,
default: false,
},
},
data() {
return {
visit: null,
};
},
watch: {
modelData: {
handler() {
this.visit = this.modelData;
},
immediate: true,
},
},
methods: {
add() {
this.$emit("add");
},
selectChange() {
this.$emit("selectChange");
},
handleChange() {
console.log(this.visit);
this.$emit("update:modelData", this.visit);
},
},
};
</script>
<style lang="scss" scoped>
.addVisit {
margin: 0;
line-height: 34px;
text-align: center;
cursor: pointer;
}
</style>

View File

@ -208,7 +208,7 @@ export default {
this.status = "visit";
this.$emit("getList");
this.$nextTick(() => {
this.$refs.confirmVisit.getList();
this.$refs.confirmVisit.getList(true);
this.$refs.confirmVisit.getSubjectVisitSelectList();
});
}

View File

@ -78,6 +78,7 @@
:label="$t('trials:uploadDicomList:table:pId')"
show-overflow-tooltip
min-width="140"
sortable="custom"
></el-table-column>
<!--患者姓名-->
<el-table-column
@ -86,6 +87,7 @@
:label="$t('trials:uploadDicomList:table:patientName')"
show-overflow-tooltip
min-width="140"
sortable="custom"
></el-table-column>
<!--检查描述-->
<el-table-column
@ -94,6 +96,7 @@
:label="$t('trials:inspection:table:studyDescription')"
show-overflow-tooltip
min-width="140"
sortable="custom"
></el-table-column>
<!--检查类型-->
<el-table-column
@ -102,6 +105,7 @@
:label="$t('trials:audit:table:modality')"
show-overflow-tooltip
min-width="140"
sortable="custom"
></el-table-column>
<!--序列数-->
<el-table-column
@ -110,6 +114,16 @@
:label="$t('trials:audit:table:seriesCount')"
show-overflow-tooltip
min-width="140"
sortable="custom"
></el-table-column>
<!--图像数量-->
<el-table-column
align="center"
prop="InstanceCount"
:label="$t('trials:audit:table:instanceCount')"
show-overflow-tooltip
min-width="140"
sortable="custom"
></el-table-column>
<!--检查日期-->
<el-table-column
@ -128,21 +142,13 @@
>
<template slot-scope="scope">
<!--切换访视-->
<el-select
v-model="scope.row.SubjectVisitId"
placeholder="请选择"
@visible-change="selectChange"
>
<el-option
v-for="item in visitList"
:key="item.SubjectVisitId"
:label="item.VisitName"
:value="item.SubjectVisitId"
/>
<p class="addVisit" @click.stop="addVisit">
<i class="el-icon-plus" v-loading="addLoading"></i>
</p>
</el-select>
<visitSelect
:modelData.sync="scope.row.SubjectVisitId"
:loading="addLoading"
:list="visitList"
@add="addVisit"
@selectChange="selectChange"
/>
<!-- 详情 -->
<el-button
type="text"
@ -167,6 +173,7 @@
</template>
<script>
import Pagination from "@/components/Pagination";
import visitSelect from "@/components/visitSelect";
import {
getVisitPatientStudyList,
getSubjectVisitSelectList,
@ -187,7 +194,7 @@ const defaultSearchData = () => {
};
export default {
name: "confirmVisitList",
components: { Pagination },
components: { Pagination, visitSelect },
props: {
Patient: {
required: true,
@ -248,6 +255,9 @@ export default {
this.visitRule = res.OtherInfo;
this.visitList = res.Result.map((item) => {
item.SubjectVisitId = item.Id;
item.id = item.Id;
item.label = item.VisitName;
item.value = item.Id;
return item;
});
}
@ -277,7 +287,7 @@ export default {
}
},
//
async getList() {
async getList(flag = false) {
if (this.status === "trial") {
return this.$message.warning(
this.$t("trials:inspection:message:checkAddTrials")
@ -307,6 +317,11 @@ export default {
if (res.IsSuccess) {
this.list = res.Result.CurrentPageData;
this.total = res.Result.TotalCount;
if (flag) {
this.$nextTick(() => {
this.handleAllSelect();
});
}
}
} catch (err) {
console.log(err);
@ -334,6 +349,10 @@ export default {
// console.log(selection);
this.tableSelectData = selection;
},
//
handleAllSelect() {
this.$refs.confirmVisitList.toggleAllSelection();
},
//
handleSortByColumn(sort) {
this.searchData.SortField = sort.prop;
@ -457,10 +476,4 @@ export default {
.detail {
margin-left: 10px;
}
.addVisit {
margin: 0;
line-height: 34px;
text-align: center;
cursor: pointer;
}
</style>

View File

@ -73,7 +73,11 @@
:label="$t('trials:subject:table:gender')"
show-overflow-tooltip
min-width="140"
></el-table-column>
>
<template slot-scope="scope">
<span>{{ $fd("sex", Number(scope.row.Sex)) }}</span>
</template>
</el-table-column>
<!--申办方-->
<el-table-column
prop="Sponsor"

View File

@ -233,7 +233,7 @@ export default {
inputChange(v) {
this.resultFilter = this.options.filter((o) => {
var reg = new RegExp(v, "ig");
return reg.test(o.ResearchProgramNo) || reg.test(o.Indication);
return reg.test(o.ResearchProgramNo) || reg.test(o.ExperimentName)|| reg.test(o.SponsorName);
});
},
},

View File

@ -75,6 +75,7 @@
:label="$t('trials:inspection:table:studyDescription')"
show-overflow-tooltip
min-width="140"
sortable="custom"
></el-table-column>
<!--检查类型-->
<el-table-column
@ -83,14 +84,43 @@
:label="$t('trials:audit:table:modality')"
show-overflow-tooltip
min-width="140"
sortable="custom"
></el-table-column>
<!--序列数-->
<!--Called AE-->
<el-table-column
prop="CalledAE"
label="Called AE"
show-overflow-tooltip
min-width="140"
sortable="custom"
>
</el-table-column>
<!--Calling AE-->
<el-table-column
prop="CallingAE"
label="Calling AE"
show-overflow-tooltip
min-width="140"
sortable="custom"
>
</el-table-column>
<!--序列数量-->
<el-table-column
align="center"
prop="SeriesCount"
:label="$t('trials:audit:table:seriesCount')"
show-overflow-tooltip
min-width="140"
sortable="custom"
></el-table-column>
<!--图像数量-->
<el-table-column
align="center"
prop="InstanceCount"
:label="$t('trials:audit:table:instanceCount')"
show-overflow-tooltip
min-width="140"
sortable="custom"
></el-table-column>
<!--检查日期-->
<el-table-column

View File

@ -82,6 +82,7 @@
:label="$t('trials:uploadDicomList:table:pId')"
show-overflow-tooltip
min-width="140"
sortable="custom"
></el-table-column>
<!--患者姓名-->
<el-table-column
@ -89,6 +90,7 @@
:label="$t('trials:uploadDicomList:table:patientName')"
show-overflow-tooltip
min-width="140"
sortable="custom"
></el-table-column>
<!--出生日期-->
<el-table-column
@ -96,6 +98,7 @@
:label="$t('trials:inspection:table:birthdate')"
show-overflow-tooltip
min-width="140"
sortable="custom"
></el-table-column>
<!--性别-->
<el-table-column
@ -103,13 +106,15 @@
:label="$t('trials:trials-myinfo:form:gender')"
show-overflow-tooltip
min-width="140"
sortable="custom"
></el-table-column>
<!--DICOM AE-->
<!--Called AE-->
<el-table-column
prop="CalledAEList"
:label="$t('trials:inspection:table:DICOMAE')"
label="Called AE"
show-overflow-tooltip
min-width="140"
sortable="custom"
>
<template slot-scope="scope">
<span
@ -121,6 +126,26 @@
>
</template>
</el-table-column>
<!--Calling AE-->
<el-table-column
prop="CallingAEList"
label="Calling AE"
show-overflow-tooltip
min-width="140"
sortable="custom"
>
<template slot-scope="scope">
<span
v-for="(item, index) in scope.row.CallingAEList"
:key="`CallingAEList${index}`"
>{{
index === scope.row.CallingAEList.length - 1
? item
: `${item}, `
}}</span
>
</template>
</el-table-column>
<!-- 研究名称 -->
<el-table-column
prop="TrialList"

View File

@ -29,7 +29,15 @@
:label="$t('trials:auditRecord:table:visit')"
prop="SubjectVisitId"
>
<el-select v-model="form.SubjectVisitId" clearable>
<!--切换访视-->
<visitSelect
:modelData.sync="form.SubjectVisitId"
:loading="addLoading"
:list="visitList"
@add="addVisit"
@selectChange="selectChange"
/>
<!-- <el-select v-model="form.SubjectVisitId" clearable>
<el-option
v-for="item of visitList"
:key="item.SubjectVisitId"
@ -37,7 +45,7 @@
:value="item.SubjectVisitId"
>
</el-option>
</el-select>
</el-select> -->
</el-form-item>
</div>
<div
@ -70,9 +78,12 @@
import {
getSubjectVisitSelectList,
addSubjectPatientStudyBinding,
addOrUpdateSubjectVisit,
} from "@/api/inspection.js";
import visitSelect from "@/components/visitSelect";
export default {
name: "editVisitDialog",
components: { visitSelect },
props: {
visible: {
required: true,
@ -101,6 +112,8 @@ export default {
},
btnLoading: false,
visitList: [],
visitRule: {},
addLoading: false,
};
},
mounted() {
@ -145,6 +158,33 @@ export default {
console.log(err);
}
},
// 访
selectChange(flag) {
if (flag) {
this.getSubjectVisitSelectList();
}
},
// 访
async addVisit() {
let data = {
TrialId: this.data.TrialId,
SubjectId: this.data.SubjectId,
};
data.VisitNum = this.visitList.length;
data.VisitName =
this.visitRule.BlindFollowUpPrefix + " " + this.visitList.length;
try {
this.addLoading = true;
let res = await addOrUpdateSubjectVisit(data);
this.addLoading = false;
if (res.IsSuccess) {
this.getSubjectVisitSelectList();
}
} catch (err) {
this.addLoading = false;
console.log(err);
}
},
// 访
async getSubjectVisitSelectList() {
let data = {
@ -154,9 +194,12 @@ export default {
try {
let res = await getSubjectVisitSelectList(data);
if (res.IsSuccess) {
// this.visitRule = res.OtherInfo;
this.visitRule = res.OtherInfo;
this.visitList = res.Result.map((item) => {
item.SubjectVisitId = item.Id;
item.id = item.Id;
item.label = item.VisitName;
item.value = item.Id;
return item;
});
this.form.SubjectVisitId = this.data.SubjectVisitId;

View File

@ -113,23 +113,11 @@
/>
<!-- 患者编号 -->
<el-table-column
prop="PatientList.PatientIdStr"
prop="PatientIdStr"
:label="$t('trials:uploadDicomList:table:pId')"
show-overflow-tooltip
min-width="100"
>
<template slot-scope="scope">
<span
v-for="(item, index) in scope.row.PatientList"
:key="item.PatientId"
>
{{
index === scope.row.PatientList.length - 1
? item.PatientIdStr
: `${item.PatientIdStr}, `
}}
</span>
</template>
</el-table-column>
<!-- 姓名 -->
<el-table-column
@ -159,6 +147,24 @@
sortable="custom"
min-width="100"
/> -->
<!--Called AE-->
<el-table-column
prop="CalledAE"
label="Called AE"
show-overflow-tooltip
min-width="140"
sortable="custom"
>
</el-table-column>
<!--Calling AE-->
<el-table-column
prop="CallingAE"
label="Calling AE"
show-overflow-tooltip
min-width="140"
sortable="custom"
>
</el-table-column>
<!-- 检查设备 -->
<el-table-column
prop="Modalities"

View File

@ -13,7 +13,7 @@
</el-form-item>
<!-- 性别 -->
<el-form-item :label="$t('trials:subject:table:gender')">
<el-select v-model="searchData.PatientSex" clearable>
<el-select v-model="searchData.SubjectSex" clearable>
<el-option
v-for="item of $d.sex"
:key="item.id"

View File

@ -43,6 +43,10 @@
>
</el-option>
</el-select>
<p>
{{ this.$t("trials:subject:messge:patient") }}
<span></span>
</p>
</el-form-item>
<el-button
type="primary"
@ -56,15 +60,16 @@
<!--患者-->
<el-form-item :label="$t('trials:subject:messge:patient')">
<el-input
:value="selectPatient.map((item) => item.PatientIdStr)"
:value="selectPatient.map((item) => item.PatientIdStr).join(', ')"
disabled
:title="selectPatient.map((item) => item.PatientIdStr)"
:title="selectPatient.map((item) => item.PatientIdStr).join(', ')"
/>
</el-form-item>
<el-button
type="primary"
@click="patient_model.visible = true"
@click.stop="openPatientList"
v-if="status === 'trial'"
:disabled="!submitMessage.SubjectId"
>
{{ $t("common:button:add") }}
</el-button>
@ -81,6 +86,7 @@
<SubjectPatientList
@addPatient="addPatient"
:visible.sync="patient_model.visible"
:submitMessage="submitMessage"
/>
</template>
</base-model>
@ -136,9 +142,8 @@ export default {
appendToBody: true,
},
btnLoading: false,
submitMessage: {},
submitMessage: { SubjectId: null },
selectPatient: [],
tableSelectData: [],
subjectIdList: [],
rules: {
SubjectId: [
@ -151,6 +156,17 @@ export default {
},
};
},
computed: {
bindPatientTip() {
if (!this.submitMessage.SubjectId) return false;
let PatientList = this.subjectIdList.map((item) => {
if (item.SubjectId === this.submitMessage.SubjectId) {
return item.PatientList;
}
})[0];
if (PatientList.length <= 0) return false;
},
},
created() {
this.researchProgramNo = this.$route.query.researchProgramNo;
this.getTrialSubejctSelectList(this.$route.query.trialId);
@ -200,14 +216,11 @@ export default {
this.$refs.confirmVisit.getList();
this.$refs.confirmVisit.getSubjectVisitSelectList();
});
// this.$emit("update:visible", false);
}
} catch (err) {
this.btnLoading = false;
console.log(err);
}
// this.$emit("update:visible", false);
// this.$emit("handleOpenDialog", {}, "confirm");
},
//
async getTrialSubejctSelectList(id) {
@ -223,58 +236,14 @@ export default {
console.log(err);
}
},
//
async getList() {
let data = {};
Object.keys(this.searchData).forEach((key) => {
data[key] = this.searchData[key];
});
if (this.dateValue[0] && this.dateValue[1]) {
data.EarliestStudyTime = this.dateValue[0].toISOString();
data.LatestStudyTime = this.dateValue[1].toISOString();
} else {
data.EarliestStudyTime = null;
data.LatestStudyTime = null;
//
openPatientList() {
if (!this.submitMessage.SubjectId) {
return this.$message.warning(
this.$t("trials:inscept:rules:selectOrInputSubject")
);
}
try {
this.loading = true;
let res = await getPatientInitList(data);
this.loading = false;
if (res.IsSuccess) {
this.list = res.Result.CurrentPageData;
this.total = res.Result.TotalCount;
}
} catch (err) {
this.loading = false;
console.log(err);
}
},
//
handleSearch() {
this.getList();
},
//
handleReset() {
this.reset();
this.getList();
},
//
reset() {
this.searchData = defaultSearchData();
this.dateValue = [];
this.$refs.addSubjectList.clearSort();
},
//
handleSelectChange(selection) {
this.tableSelectData = selection;
},
//
handleSortByColumn() {
this.searchData.SortField = sort.prop;
if (sort.order === "ascending") this.searchData.Asc = true;
if (sort.order === "descending") this.searchData.Asc = false;
if (!sort.order) this.searchData.SortField = null;
this.getList();
this.patient_model.visible = true;
},
},
};

View File

@ -107,12 +107,13 @@
show-overflow-tooltip
min-width="140"
></el-table-column>
<!--DICOM AE-->
<!--Called AE-->
<el-table-column
prop="CalledAEList"
:label="$t('trials:inspection:table:DICOMAE')"
label="Called AE"
show-overflow-tooltip
min-width="140"
sortable="custom"
>
<template slot-scope="scope">
<span
@ -126,6 +127,26 @@
>
</template>
</el-table-column>
<!--Calling AE-->
<el-table-column
prop="CallingAEList"
label="Calling AE"
show-overflow-tooltip
min-width="140"
sortable="custom"
>
<template slot-scope="scope">
<span
v-for="(item, index) in scope.row.CallingAEList"
:key="`CallingAEList${index}`"
>{{
index === scope.row.CallingAEList.length - 1
? item
: `${item}, `
}}</span
>
</template>
</el-table-column>
<!--最新接收时间-->
<el-table-column
prop="LatestPushTime"
@ -171,6 +192,12 @@ export default {
required: true,
default: false,
},
submitMessage: {
required: true,
default: () => {
return {};
},
},
},
data() {
return {
@ -203,6 +230,7 @@ export default {
data[key] = this.searchData[key];
});
data.TrialId = this.$route.query.trialId;
data.SubjectId = this.submitMessage.SubjectId;
try {
this.loading = true;
let res = await getPatientInitList(data);

View File

@ -91,7 +91,7 @@
</div>
</template>
<script>
import { getTrialInfo } from '@/api/trials'
import { getTrialInfoHir } from '@/api/trials'
export default {
data() {
return {
@ -108,7 +108,7 @@ export default {
methods: {
initForm() {
this.formLoading = true
getTrialInfo(this.trialId).then(res => {
getTrialInfoHir(this.trialId).then(res => {
this.formLoading = false
this.trialInfo = res.Result
this.trialInfo.ReviewTypeList = this.trialInfo.ReviewTypeList.length > 0 ? this.trialInfo.ReviewTypeList.join(', ') : ''