新增修改项目

main
wangxiaoshuang 2024-04-03 10:10:31 +08:00
parent 77b03186d8
commit 267444c8ad
2 changed files with 66 additions and 120 deletions

View File

@ -3469,7 +3469,7 @@ export function deleteCustomTag(id) {
}) })
} }
export function uploadTrialSiteSurveyUser(trialId,baseUrl,routeUrl,param) { export function uploadTrialSiteSurveyUser(trialId, baseUrl, routeUrl, param) {
return request({ return request({
url: `/TrialSiteSurvey/UploadTrialSiteSurveyUser?trialId=${trialId}&baseUrl=${baseUrl}&routeUrl=${routeUrl}`, url: `/TrialSiteSurvey/UploadTrialSiteSurveyUser?trialId=${trialId}&baseUrl=${baseUrl}&routeUrl=${routeUrl}`,
method: 'post', method: 'post',
@ -3506,3 +3506,12 @@ export function getNextIQCQuality(param) {
data: param data: param
}) })
} }
// 新增或编辑项目
export function addOrUpdateTrialHir(param) {
return request({
url: `/Patient/addOrUpdateTrial`,
method: 'post',
data: param
})
}

View File

@ -11,12 +11,13 @@
:inline="true" :inline="true"
> >
<el-row> <el-row>
<!-- 项目码 --> <!-- 项目码 v-if="trialForm.Id !== ''"-->
<el-form-item <el-form-item
v-if="trialForm.Id !== ''"
:label="$t('trials:trials-list:form:trialCode')" :label="$t('trials:trials-list:form:trialCode')"
prop="TrialCode"
> >
<el-input v-model="trialForm.TrialCode" disabled /> <!-- <el-input v-model="trialForm.TrialCode" disabled /> -->
<el-input v-model="trialForm.TrialCode" />
</el-form-item> </el-form-item>
<!-- 项目类型 --> <!-- 项目类型 -->
<el-form-item <el-form-item
@ -46,6 +47,7 @@
v-model="trialForm.ExperimentName" v-model="trialForm.ExperimentName"
type="textarea" type="textarea"
:autosize="{ minRows: 1, maxRows: 4 }" :autosize="{ minRows: 1, maxRows: 4 }"
clearable
/> />
</el-form-item> </el-form-item>
<!-- 研究方案号 --> <!-- 研究方案号 -->
@ -53,7 +55,7 @@
:label="$t('trials:trials-list:form:researchNumber')" :label="$t('trials:trials-list:form:researchNumber')"
prop="ResearchProgramNo" prop="ResearchProgramNo"
> >
<el-input v-model="trialForm.ResearchProgramNo" /> <el-input v-model="trialForm.ResearchProgramNo" clearable />
</el-form-item> </el-form-item>
</el-row> </el-row>
<el-row> <el-row>
@ -62,30 +64,34 @@
:label="$t('trials:trials-list:form:investigator')" :label="$t('trials:trials-list:form:investigator')"
prop="HeadPI" prop="HeadPI"
> >
<el-input v-model="trialForm.HeadPI" /> <el-input v-model="trialForm.HeadPI" clearable />
</el-form-item> </el-form-item>
<!-- 申办方 --> <!-- 申办方 -->
<el-form-item <el-form-item
:label="$t('trials:trials-list:form:sponsor')" :label="$t('trials:trials-list:form:sponsor')"
prop="SponsorName" prop="Sponsor"
> >
<el-input v-model="trialForm.SponsorName" maxlength="200" /> <el-input v-model="trialForm.Sponsor" maxlength="200" clearable />
</el-form-item> </el-form-item>
</el-row> </el-row>
<el-row> <el-row>
<!-- CRO --> <!-- CRO -->
<el-form-item :label="$t('trials:trials-list:form:cro')" prop="croName"> <el-form-item :label="$t('trials:trials-list:form:cro')" prop="Cro">
<el-input v-model="trialForm.croName" maxlength="200" /> <el-input v-model="trialForm.Cro" maxlength="200" clearable />
</el-form-item> </el-form-item>
<!-- 药物/器械名称 --> <!-- 药物/器械名称 -->
<el-form-item :label="$t('trials:trials-list:message:D/Dname')"> <el-form-item :label="$t('trials:trials-list:message:D/Dname')">
<el-input v-model="trialForm.croName" /> <el-input v-model="trialForm.MedicineName" clearable />
</el-form-item> </el-form-item>
</el-row> </el-row>
<el-row> <el-row>
<!-- 临床分期 --> <!-- 临床分期 -->
<el-form-item :label="$t('trials:trials-list:form:phase')" prop="PhaseId"> <el-form-item :label="$t('trials:trials-list:form:phase')" prop="PhaseId">
<el-select v-model="trialForm.PhaseId" @change="handlePhaseChange"> <el-select
v-model="trialForm.PhaseId"
@change="handlePhaseChange"
clearable
>
<el-option <el-option
v-for="item of $d.Trial_Phase" v-for="item of $d.Trial_Phase"
:key="item.id" :key="item.id"
@ -96,13 +102,13 @@
</el-form-item> </el-form-item>
<!-- 适应症 --> <!-- 适应症 -->
<el-form-item :label="$t('trials:trials-list:form:indication')"> <el-form-item :label="$t('trials:trials-list:form:indication')">
<el-input v-model="trialForm.IndicationTypeId" /> <el-input v-model="trialForm.Indication" clearable />
</el-form-item> </el-form-item>
</el-row> </el-row>
<el-row> <el-row>
<!-- 检查技术 --> <!-- 检查技术 -->
<el-form-item :label="$t('trials:trials-list:form:modality')"> <el-form-item :label="$t('trials:trials-list:form:modality')">
<el-select v-model="trialForm.ModalityIds" multiple> <el-select v-model="trialForm.ModalityIds" multiple clearable>
<el-option <el-option
v-for="item of $d.Modality" v-for="item of $d.Modality"
:key="item.id" :key="item.id"
@ -114,14 +120,14 @@
<!-- 阅片标准 --> <!-- 阅片标准 -->
<el-form-item <el-form-item
:label="$t('trials:trials-list:form:criterion')" :label="$t('trials:trials-list:form:criterion')"
prop="CriterionId" prop="CriterionTypeList"
> >
<el-select v-model="trialForm.CriterionId"> <el-select v-model="trialForm.CriterionTypeList" multiple clearable>
<el-option <el-option
v-for="item of $d.CriterionType" v-for="item of $d.CriterionType"
:key="item.id" :key="item.id"
:label="item.label" :label="item.label"
:value="item.id" :value="item.value"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -129,23 +135,28 @@
<el-row> <el-row>
<!-- 联系人 --> <!-- 联系人 -->
<el-form-item :label="$t('trials:researchForm:form:contactor')"> <el-form-item :label="$t('trials:researchForm:form:contactor')">
<el-input v-model="trialForm.IndicationTypeId" /> <el-input v-model="trialForm.ContactUser" clearable />
</el-form-item> </el-form-item>
<!-- 电话 --> <!-- 电话 -->
<el-form-item :label="$t('trials:trials-myinfo:form:phone')"> <el-form-item :label="$t('trials:trials-myinfo:form:phone')">
<el-input v-model="trialForm.phone" type="number" /> <el-input v-model="trialForm.ContactPhone" type="number" clearable />
</el-form-item> </el-form-item>
</el-row> </el-row>
<el-row> <el-row>
<!-- 授权时长 --> <!-- 授权时长 -->
<el-form-item <el-form-item
:label="$t('trials:trials-list:table:durationAuthorized')" :label="$t('trials:trials-list:table:durationAuthorized')"
prop="durationAuthorized" prop="AuthorizationYear"
> >
<el-input v-model="trialForm.durationAuthorized" type="number" /> <el-input
v-model="trialForm.AuthorizationYear"
type="number"
clearable
/>
</el-form-item> </el-form-item>
<!-- 授权访视量 --> <!-- 授权访视量 -->
<el-form-item <!-- <el-form-item
:label="$t('trials:trials-list:table:visitNumberAuthorized')" :label="$t('trials:trials-list:table:visitNumberAuthorized')"
prop="visitNumberAuthorized" prop="visitNumberAuthorized"
> >
@ -154,13 +165,13 @@
type="number" type="number"
disabled disabled
/> />
</el-form-item> </el-form-item> -->
</el-row> </el-row>
<el-row> <el-row>
<!--项目授权码--> <!--项目授权码-->
<el-form-item :label="$t('trials:trials-list:form:authorizationCode')"> <!-- <el-form-item :label="$t('trials:trials-list:form:authorizationCode')">
<el-input v-model="trialForm.authorizationCode" /> <el-input v-model="trialForm.authorizationCode" />
</el-form-item> </el-form-item> -->
</el-row> </el-row>
<el-row> <el-row>
<!-- Timepoints Per Patient --> <!-- Timepoints Per Patient -->
@ -190,7 +201,7 @@
<script> <script>
import store from "@/store"; import store from "@/store";
import { mapGetters, mapState } from "vuex"; import { mapGetters, mapState } from "vuex";
import { getTrialInfo, addOrUpdateTrial } from "@/api/trials"; import { getTrialInfo, addOrUpdateTrialHir } from "@/api/trials";
import { getBasicDataSelects } from "@/api/dictionary/dictionary"; import { getBasicDataSelects } from "@/api/dictionary/dictionary";
export default { export default {
name: "TrialForm", name: "TrialForm",
@ -203,55 +214,35 @@ export default {
data() { data() {
return { return {
trialForm: { trialForm: {
visitNumberAuthorized: 1000,
Id: "", Id: "",
TrialCode: "", TrialCode: "",
TrialType: null, TrialType: null,
SponsorId: "",
CROId: "",
ReviewModeId: "",
ReviewTypeIds: [],
// 0
Expedited: "",
ModalityIds: [],
Note: "",
ExpectedPatients: "",
TimePointsPerPatient: "",
ProjectCycle: "",
DeclarationTypeId: "",
IndicationTypeId: "",
PhaseId: "",
AttendedReviewerType: "",
IsLocked: false,
ResearchProgramNo: "", ResearchProgramNo: "",
ExperimentName: "", ExperimentName: "",
MainResearchUnit: "",
HeadPI: "", HeadPI: "",
PlanSiteCount: null, Cro: "",
PlanVisitCount: null, Sponsor: "",
Indication: null, MedicineName: "",
AttendedReviewerTypeEnumList: [], PhaseId: "",
DeclarationTypeEnumList: [], Indication: "",
DeclarationTypeOther: null, ModalityIds: [],
AttendedReviewerTypeOther: null, CriterionTypeList: [],
IsDeclaration: null, ContactUser: "",
ContactPhone: "",
AuthorizationYear: null,
}, },
indicationGrouping: null, indicationGrouping: null,
trialFormRules: { trialFormRules: {
// //
durationAuthorized: [ TrialCode: [
{ {
required: true, required: true,
message: this.$t( message: this.$t("common:ruleMessage:specify"),
"trials:trials-list:formRule:enterDurationAuthorized"
),
trigger: "blur", trigger: "blur",
}, },
], ],
// 访 //
visitNumberAuthorized: [ AuthorizationYear: [
{ {
required: true, required: true,
message: this.$t( message: this.$t(
@ -261,7 +252,7 @@ export default {
}, },
], ],
// //
CriterionId: [ CriterionTypeList: [
{ {
required: true, required: true,
message: this.$t("common:ruleMessage:specify"), message: this.$t("common:ruleMessage:specify"),
@ -269,7 +260,7 @@ export default {
}, },
], ],
// / // /
croName: [ MedicineName: [
{ {
max: 200, max: 200,
message: `${this.$t("common:ruleMessage:maxLength")} 200`, message: `${this.$t("common:ruleMessage:maxLength")} 200`,
@ -282,7 +273,7 @@ export default {
}, },
], ],
// //
SponsorName: [ Sponsor: [
{ {
max: 200, max: 200,
message: `${this.$t("common:ruleMessage:maxLength")} 200`, message: `${this.$t("common:ruleMessage:maxLength")} 200`,
@ -294,14 +285,6 @@ export default {
trigger: "blur", trigger: "blur",
}, },
], ],
Code: [
{
required: true,
message: this.$t("common:ruleMessage:specify"),
trigger: "blur",
},
{ max: 50, message: `${this.$t("common:ruleMessage:maxLength")} 50` },
],
TrialType: [ TrialType: [
{ {
required: true, required: true,
@ -331,29 +314,6 @@ export default {
message: `${this.$t("common:ruleMessage:maxLength")} 100`, message: `${this.$t("common:ruleMessage:maxLength")} 100`,
}, },
], ],
ProjectCycle: [
{ max: 50, message: `${this.$t("common:ruleMessage:maxLength")} 50` },
],
ReviewModeId: [
{
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
],
Expedited: [
{
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
],
Note: [
{
max: 500,
message: `${this.$t("common:ruleMessage:maxLength")} 500`,
},
],
ModalityIds: [ ModalityIds: [
{ {
required: true, required: true,
@ -368,21 +328,7 @@ export default {
trigger: ["blur", "change"], trigger: ["blur", "change"],
}, },
], ],
IndicationTypeId: [ Indication: [
{
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
],
IsDeclaration: [
{
required: true,
message: this.$t("common:ruleMessage:select"),
trigger: ["blur", "change"],
},
],
ReviewTypeIds: [
{ {
required: true, required: true,
message: this.$t("common:ruleMessage:select"), message: this.$t("common:ruleMessage:select"),
@ -391,8 +337,6 @@ export default {
], ],
}, },
btnLoading: false, btnLoading: false,
isLock: false,
expeditedOption: this.$d.YesOrNoForInt,
loading: false, loading: false,
declarationNum: null, declarationNum: null,
indicationNum: null, indicationNum: null,
@ -434,15 +378,8 @@ export default {
this.$refs.trialForm.validate((valid) => { this.$refs.trialForm.validate((valid) => {
if (valid) { if (valid) {
this.btnLoading = true; this.btnLoading = true;
if (!this.trialForm.IsDeclaration) {
this.declarationNum = "N";
}
if (!this.trialForm.Id) {
this.trialForm.TrialCode = `${this.declarationNum}${this.indicationNum}${this.phaseNum}`;
console.log(this.trialForm.TrialCode);
}
var params = JSON.parse(JSON.stringify(this.trialForm)); var params = JSON.parse(JSON.stringify(this.trialForm));
addOrUpdateTrial(params) addOrUpdateTrialHir(params)
.then((res) => { .then((res) => {
this.btnLoading = false; this.btnLoading = false;
if (!this.trialForm.Id) { if (!this.trialForm.Id) {