访视选择添加校验判断
parent
82dfda0f05
commit
a78a0e038c
|
@ -10,6 +10,7 @@
|
||||||
:key="item.id"
|
:key="item.id"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value"
|
:value="item.value"
|
||||||
|
:disabled="Number(item.SubmitState) > 1"
|
||||||
/>
|
/>
|
||||||
<p class="addVisit" @click.stop="add">
|
<p class="addVisit" @click.stop="add">
|
||||||
<i class="el-icon-plus" v-loading="loading"></i>
|
<i class="el-icon-plus" v-loading="loading"></i>
|
||||||
|
@ -17,6 +18,7 @@
|
||||||
</el-select>
|
</el-select>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
|
import moment from "moment";
|
||||||
export default {
|
export default {
|
||||||
name: "visitSelect",
|
name: "visitSelect",
|
||||||
props: {
|
props: {
|
||||||
|
@ -26,6 +28,12 @@ export default {
|
||||||
return [];
|
return [];
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
studyData: {
|
||||||
|
required: true,
|
||||||
|
default: () => {
|
||||||
|
return {};
|
||||||
|
},
|
||||||
|
},
|
||||||
modelData: {
|
modelData: {
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
|
@ -52,10 +60,80 @@ export default {
|
||||||
this.$emit("add");
|
this.$emit("add");
|
||||||
},
|
},
|
||||||
selectChange(flag) {
|
selectChange(flag) {
|
||||||
this.$emit("selectChange", flag);
|
this.$emit("selectChange", flag, this.studyData.StudyId);
|
||||||
},
|
},
|
||||||
handleChange() {
|
async handleChange() {
|
||||||
this.$emit("update:modelData", this.visit);
|
try {
|
||||||
|
let res = await this.formatVisit();
|
||||||
|
if (!res) return;
|
||||||
|
this.$emit("update:modelData", this.visit);
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 校验选择访视与检查时间是否匹配
|
||||||
|
async formatVisit() {
|
||||||
|
try {
|
||||||
|
let StudyTime = this.studyData.StudyTime;
|
||||||
|
let visitIndex = this.list.findIndex((item) => item.Id === this.visit);
|
||||||
|
if (visitIndex >= 1) {
|
||||||
|
let time = this.list[visitIndex - 1].VisitMaxStudyTime;
|
||||||
|
if (time && moment(StudyTime).isBefore(time)) {
|
||||||
|
throw "Out of range";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (visitIndex < this.list.length - 1 && visitIndex >= 0) {
|
||||||
|
let time = this.list[visitIndex + 1].VisitMinStudyTime;
|
||||||
|
if (time && moment(StudyTime).isAfter(time)) {
|
||||||
|
throw "Out of range";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let visit = this.list[visitIndex];
|
||||||
|
if (
|
||||||
|
(visit.VisitMinStudyTime &&
|
||||||
|
moment(StudyTime).isBefore(
|
||||||
|
moment(visit.VisitMinStudyTime)
|
||||||
|
.subtract(15, "day")
|
||||||
|
.format("YYYY-MM-DD HH:mm:ss")
|
||||||
|
)) ||
|
||||||
|
(visit.VisitMaxStudyTime &&
|
||||||
|
moment(StudyTime).isAfter(
|
||||||
|
moment(visit.VisitMaxStudyTime)
|
||||||
|
.add(15, "day")
|
||||||
|
.format("YYYY-MM-DD HH:mm:ss")
|
||||||
|
))
|
||||||
|
) {
|
||||||
|
let message = this.$t("trials:studyVisit:format:studyTime");
|
||||||
|
message = message.replace("minTime", visit.VisitMinStudyTime);
|
||||||
|
message = message.replace("maxTime", visit.VisitMaxStudyTime);
|
||||||
|
message = message.replace("studyTime", StudyTime);
|
||||||
|
this.$confirm(
|
||||||
|
message,
|
||||||
|
this.$t("trials:uploadDicomList:label:prompt"),
|
||||||
|
{
|
||||||
|
type: "warning",
|
||||||
|
showCancelButton: false,
|
||||||
|
}
|
||||||
|
).then(() => {
|
||||||
|
this.$emit("update:modelData", this.visit);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err);
|
||||||
|
if (err === "Out of range") {
|
||||||
|
this.$confirm(
|
||||||
|
this.$t("trials:studyVisit:format:studyTimeNo"),
|
||||||
|
this.$t("trials:uploadDicomList:label:prompt"),
|
||||||
|
{
|
||||||
|
type: "warning",
|
||||||
|
showCancelButton: false,
|
||||||
|
}
|
||||||
|
).then();
|
||||||
|
this.visit = this.modelData;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
:model="submitMessage"
|
:model="submitMessage"
|
||||||
class="demo-form-inline"
|
class="demo-form-inline"
|
||||||
:rules="rules"
|
:rules="rules"
|
||||||
label-width="100px"
|
label-width="150px"
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
<!--项目-->
|
<!--项目-->
|
||||||
|
|
|
@ -132,7 +132,7 @@
|
||||||
<!--操作-->
|
<!--操作-->
|
||||||
<el-table-column
|
<el-table-column
|
||||||
:label="$t('common:action:action')"
|
:label="$t('common:action:action')"
|
||||||
width="300"
|
width="330"
|
||||||
class-name="actionBox"
|
class-name="actionBox"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
|
@ -140,6 +140,7 @@
|
||||||
<visitSelect
|
<visitSelect
|
||||||
:modelData.sync="scope.row.SubjectVisitId"
|
:modelData.sync="scope.row.SubjectVisitId"
|
||||||
:loading="addLoading"
|
:loading="addLoading"
|
||||||
|
:studyData="scope.row"
|
||||||
:list="visitList"
|
:list="visitList"
|
||||||
@add="addVisit"
|
@add="addVisit"
|
||||||
@selectChange="selectChange"
|
@selectChange="selectChange"
|
||||||
|
@ -271,17 +272,18 @@ export default {
|
||||||
if (flag) this.visitStatus = "confirm";
|
if (flag) this.visitStatus = "confirm";
|
||||||
},
|
},
|
||||||
// 下拉框出现刷新访视
|
// 下拉框出现刷新访视
|
||||||
selectChange(flag) {
|
selectChange(flag, StudyId) {
|
||||||
if (flag) {
|
if (flag) {
|
||||||
this.getSubjectVisitSelectList();
|
this.getSubjectVisitSelectList(StudyId);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 获取已存在的访视
|
// 获取已存在的访视
|
||||||
async getSubjectVisitSelectList() {
|
async getSubjectVisitSelectList(StudyId = null) {
|
||||||
let data = {
|
let data = {
|
||||||
TrialId: this.submitMessage.TrialId,
|
TrialId: this.submitMessage.TrialId,
|
||||||
SubjectId: this.submitMessage.SubjectId,
|
SubjectId: this.submitMessage.SubjectId,
|
||||||
};
|
};
|
||||||
|
if (StudyId) data.ScpStudyId = StudyId;
|
||||||
try {
|
try {
|
||||||
let res = await getSubjectVisitSelectList(data);
|
let res = await getSubjectVisitSelectList(data);
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
|
|
|
@ -55,6 +55,7 @@
|
||||||
<visitSelect
|
<visitSelect
|
||||||
:modelData.sync="form.SubjectVisitId"
|
:modelData.sync="form.SubjectVisitId"
|
||||||
:loading="addLoading"
|
:loading="addLoading"
|
||||||
|
:studyData="data"
|
||||||
:list="visitList"
|
:list="visitList"
|
||||||
@add="addVisit"
|
@add="addVisit"
|
||||||
@selectChange="selectChange"
|
@selectChange="selectChange"
|
||||||
|
@ -102,6 +103,7 @@ import {
|
||||||
addSubjectPatientStudyBinding,
|
addSubjectPatientStudyBinding,
|
||||||
addOrUpdateSubjectVisit,
|
addOrUpdateSubjectVisit,
|
||||||
} from "@/api/inspection.js";
|
} from "@/api/inspection.js";
|
||||||
|
import { getVisitStudyVerifyTime } from "@/api/trials/visit.js";
|
||||||
import visitSelect from "@/components/visitSelect";
|
import visitSelect from "@/components/visitSelect";
|
||||||
export default {
|
export default {
|
||||||
name: "editVisitDialog",
|
name: "editVisitDialog",
|
||||||
|
@ -128,7 +130,7 @@ export default {
|
||||||
{
|
{
|
||||||
required: true,
|
required: true,
|
||||||
message: this.$t("trials:study:formRlue:selectVisit"),
|
message: this.$t("trials:study:formRlue:selectVisit"),
|
||||||
trigger: "change",
|
trigger: "blur",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
@ -181,9 +183,9 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 下拉框出现刷新访视
|
// 下拉框出现刷新访视
|
||||||
selectChange(flag) {
|
selectChange(flag, StudyId) {
|
||||||
if (flag) {
|
if (flag) {
|
||||||
this.getSubjectVisitSelectList();
|
this.getSubjectVisitSelectList(StudyId);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 新增访视
|
// 新增访视
|
||||||
|
@ -208,11 +210,12 @@ export default {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
// 获取已存在的访视
|
// 获取已存在的访视
|
||||||
async getSubjectVisitSelectList() {
|
async getSubjectVisitSelectList(StudyId = null) {
|
||||||
let data = {
|
let data = {
|
||||||
TrialId: this.data.TrialId,
|
TrialId: this.data.TrialId,
|
||||||
SubjectId: this.data.SubjectId,
|
SubjectId: this.data.SubjectId,
|
||||||
};
|
};
|
||||||
|
if (StudyId) data.ScpStudyId = StudyId;
|
||||||
try {
|
try {
|
||||||
let res = await getSubjectVisitSelectList(data);
|
let res = await getSubjectVisitSelectList(data);
|
||||||
if (res.IsSuccess) {
|
if (res.IsSuccess) {
|
||||||
|
@ -224,6 +227,9 @@ export default {
|
||||||
item.value = item.Id;
|
item.value = item.Id;
|
||||||
return item;
|
return item;
|
||||||
});
|
});
|
||||||
|
this.visitList.sort(
|
||||||
|
(a, b) => parseFloat(a.VisitNum) - parseFloat(b.VisitNum)
|
||||||
|
);
|
||||||
this.form.SubjectVisitId = this.data.SubjectVisitId;
|
this.form.SubjectVisitId = this.data.SubjectVisitId;
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
class="demo-form-inline topForm"
|
class="demo-form-inline topForm"
|
||||||
:rules="rules"
|
:rules="rules"
|
||||||
ref="addSubjectForm"
|
ref="addSubjectForm"
|
||||||
label-width="100px"
|
label-width="150px"
|
||||||
>
|
>
|
||||||
<div class="selectAndBtn">
|
<div class="selectAndBtn">
|
||||||
<!--受试者编号-->
|
<!--受试者编号-->
|
||||||
|
|
Loading…
Reference in New Issue