新增修改项目

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

View File

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