部分页面接口调整、展示字段变更
parent
17da9c23b0
commit
e6ec3d3550
|
@ -27,7 +27,7 @@ VUE_APP_PASSWORD_FOR_PERMISSION = true
|
|||
VUE_APP_PASSWORD_FOR_REGULAR = ^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[-_.@^+\$!%#*?&\$~])[A-Za-z0-9-~_.@^+\$~!%#*?&]{8,32}$
|
||||
|
||||
# 是否开启文档签署验证 true:是 false:否
|
||||
VUE_APP_WORD_FOR_PERMISSION = true
|
||||
VUE_APP_WORD_FOR_PERMISSION = false
|
||||
|
||||
# dicom文件地址
|
||||
# VUE_APP_DICOM_PATH = 'http://101.132.193.237:7080'
|
||||
|
|
|
@ -3531,4 +3531,13 @@ export function getTrialInfoHir(id) {
|
|||
url: `/Patient/getTrialInfo/${id}`,
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
|
||||
// 修改受试者信息
|
||||
export function addOrUpdateSubjectHir(data) {
|
||||
return request({
|
||||
url: `/Patient/addOrUpdateSubject`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
|
@ -46,9 +46,37 @@
|
|||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--受试者编号-->
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
:label="$t('trials:uploadMonitor:table:subjectId')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--姓名-->
|
||||
<el-table-column
|
||||
prop="ShortName"
|
||||
:label="$t('trials:researchStaff:table:Name')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--年龄-->
|
||||
<el-table-column
|
||||
prop="Age"
|
||||
:label="$t('trials:subject:table:age')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--性别-->
|
||||
<el-table-column
|
||||
prop="Sex"
|
||||
:label="$t('trials:subject:table:gender')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--申办方-->
|
||||
<el-table-column
|
||||
prop="SponsorName"
|
||||
prop="Sponsor"
|
||||
:label="$t('trials:trials-list:table:sponsor')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
|
@ -59,14 +87,28 @@
|
|||
:label="$t('trials:trials-list:table:status')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--访视数-->
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
:label="$t('trials:selftConsistencyAnalysis:table:visitNum')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-tag
|
||||
v-if="scope.row.TrialStatusStr === 'Initializing'"
|
||||
type="info"
|
||||
>{{ $fd("TrialStatusEnum", scope.row.TrialStatusStr) }}</el-tag
|
||||
>
|
||||
<el-tag
|
||||
v-if="scope.row.TrialStatusStr === 'Ongoing'"
|
||||
type="primary"
|
||||
>{{ $fd("TrialStatusEnum", scope.row.TrialStatusStr) }}</el-tag
|
||||
>
|
||||
<el-tag
|
||||
v-if="scope.row.TrialStatusStr === 'Completed'"
|
||||
type="warning"
|
||||
>{{ $fd("TrialStatusEnum", scope.row.TrialStatusStr) }}</el-tag
|
||||
>
|
||||
<el-tag v-if="scope.row.TrialStatusStr === 'Stopped'" type="danger">{{
|
||||
$fd("TrialStatusEnum", scope.row.TrialStatusStr)
|
||||
}}</el-tag>
|
||||
</template></el-table-column
|
||||
>
|
||||
<!--创建日期-->
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
|
@ -167,7 +209,7 @@ export default {
|
|||
researchProgramNo: item.ResearchProgramNo,
|
||||
};
|
||||
this.$router.push({
|
||||
path: "/trials/trials-panel/study",
|
||||
path: "/trials/trials-panel/subject/subject-list",
|
||||
query,
|
||||
});
|
||||
},
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<el-row>
|
||||
<!-- CRO -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:cro')" prop="Cro">
|
||||
<el-input v-model="trialForm.Cro" maxlength="200" clearable />
|
||||
<el-input v-model="trialForm.CRO" maxlength="200" clearable />
|
||||
</el-form-item>
|
||||
<!-- 药物/器械名称 -->
|
||||
<el-form-item :label="$t('trials:trials-list:message:D/Dname')">
|
||||
|
@ -235,7 +235,7 @@ export default {
|
|||
ResearchProgramNo: "",
|
||||
ExperimentName: "",
|
||||
HeadPI: "",
|
||||
Cro: "",
|
||||
CRO: "",
|
||||
Sponsor: "",
|
||||
MedicineName: "",
|
||||
PhaseId: "",
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
{{ $t("common:button:reset") }}
|
||||
</el-button>
|
||||
<!-- Export -->
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
v-hasPermi="['trials:trials-list:export']"
|
||||
type="primary"
|
||||
icon="el-icon-download"
|
||||
|
@ -66,7 +66,7 @@
|
|||
@click="handleExportTrial"
|
||||
>
|
||||
{{ $t("common:button:export") }}
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span style="margin-left: auto">
|
||||
|
@ -100,11 +100,7 @@
|
|||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<template v-for="item of $d.TrialType">
|
||||
<span :key="item.id" v-if="scope.row.TrialType === item.value">{{
|
||||
item.label
|
||||
}}</span>
|
||||
</template>
|
||||
<span>{{ $fd("TrialType", scope.row.TrialType) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
|
@ -404,7 +400,6 @@ export default {
|
|||
},
|
||||
created() {
|
||||
this.initPage();
|
||||
console.log(this.$d.TrialType);
|
||||
},
|
||||
methods: {
|
||||
initPage() {
|
||||
|
|
|
@ -265,7 +265,7 @@ export default {
|
|||
Object.keys(this.searchData).forEach((key) => {
|
||||
data[key] = this.searchData[key];
|
||||
});
|
||||
data.PatientId = this.data.PatientList[0].PatientId;
|
||||
data.PatientIdList = this.data.PatientList.map((item) => item.PatientId);
|
||||
data.SujectVisitId = this.data.SubjectVisitId;
|
||||
if (this.dateValue[0] && this.dateValue[1]) {
|
||||
data.EarliestStudyTime = this.dateValue[0].toISOString();
|
||||
|
|
|
@ -141,7 +141,11 @@
|
|||
prop="SubjectSex"
|
||||
:label="$t('trials:subject:table:gender')"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ $fd("sex", Number(scope.row.SubjectSex)) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 访视名称 -->
|
||||
<el-table-column
|
||||
prop="VisitName"
|
||||
|
|
|
@ -1,62 +1,76 @@
|
|||
<template>
|
||||
<el-container class="participant-container">
|
||||
<el-header style="height:50px">
|
||||
<el-header style="height: 50px">
|
||||
<div class="filter-container">
|
||||
<!-- 姓名 -->
|
||||
<span>{{ $t('trials:staff:table:name') }}:</span>
|
||||
<el-input v-model="listQuery.UserRealName" size="mini" class="mr" clearable />
|
||||
<span>{{ $t("trials:staff:table:name") }}:</span>
|
||||
<el-input
|
||||
v-model="listQuery.UserRealName"
|
||||
size="mini"
|
||||
class="mr"
|
||||
clearable
|
||||
/>
|
||||
<!-- 用户名 -->
|
||||
<span>{{ $t('trials:staff:table:uid') }}:</span>
|
||||
<el-input v-model="listQuery.UserName" size="mini" class="mr" clearable />
|
||||
<span>{{ $t("trials:staff:table:uid") }}:</span>
|
||||
<el-input
|
||||
v-model="listQuery.UserName"
|
||||
size="mini"
|
||||
class="mr"
|
||||
clearable
|
||||
/>
|
||||
<!-- 单位 -->
|
||||
<span>{{ $t('trials:staff:table:organization') }}:</span>
|
||||
<el-input v-model="listQuery.OrganizationName" size="mini" class="mr" clearable />
|
||||
<span>{{ $t("trials:staff:table:organization") }}:</span>
|
||||
<el-input
|
||||
v-model="listQuery.OrganizationName"
|
||||
size="mini"
|
||||
class="mr"
|
||||
clearable
|
||||
/>
|
||||
<!-- 用户类型 -->
|
||||
<span>{{ $t('trials:staff:table:userType') }}:</span>
|
||||
<el-select v-model="listQuery.UserTypeEnum" size="mini" clearable class="mr">
|
||||
<template v-if="hasPermi(['role:ta'])">
|
||||
|
||||
<el-option
|
||||
v-for="item of $d.UserType"
|
||||
v-show="item.value === 4"
|
||||
:key="`UserType${item.value}`"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-option>
|
||||
</template>
|
||||
<template v-if="hasPermi(['role:pm'])">
|
||||
<el-option
|
||||
v-for="item of $d.UserType"
|
||||
v-show="(!qCProcessEnum && (item.value === 11 || item.value === 12)) || (qCProcessEnum && (item.value === 11 || item.value === 7 || item.value === 12))"
|
||||
:key="`UserType${item.value}`"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-option>
|
||||
</template>
|
||||
<!-- <el-option
|
||||
v-for="item of userTypeOptions"
|
||||
<span>{{ $t("trials:staff:table:userType") }}:</span>
|
||||
<el-select
|
||||
v-model="listQuery.UserTypeEnum"
|
||||
size="mini"
|
||||
clearable
|
||||
class="mr"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in userTypeOptions"
|
||||
:key="item.Id"
|
||||
:label="item.UserTypeShortName"
|
||||
:value="item.UserTypeEnum"
|
||||
:value="item.Id"
|
||||
>
|
||||
<span>{{ item.UserType }}</span>
|
||||
</el-option> -->
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- 查询 -->
|
||||
<el-button type="primary" size="mini" icon="el-icon-search" @click="handleSearch">
|
||||
{{ $t('common:button:search') }}
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
icon="el-icon-search"
|
||||
@click="handleSearch"
|
||||
>
|
||||
{{ $t("common:button:search") }}
|
||||
</el-button>
|
||||
<!-- 重置 -->
|
||||
<el-button size="mini" type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
||||
{{ $t('common:button:reset') }}
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
{{ $t("common:button:reset") }}
|
||||
</el-button>
|
||||
|
||||
<el-button type="primary" size="mini" style="margin-left:auto" :disabled="selectArr.length === 0" :loading="assignLoadStatus" icon="el-icon-plus" @click="handleAssign">
|
||||
{{ $t('common:button:add') }}
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
style="margin-left: auto"
|
||||
:disabled="selectArr.length === 0"
|
||||
:loading="assignLoadStatus"
|
||||
icon="el-icon-plus"
|
||||
@click="handleAssign"
|
||||
>
|
||||
{{ $t("common:button:add") }}
|
||||
</el-button>
|
||||
</div>
|
||||
</el-header>
|
||||
|
@ -124,28 +138,36 @@
|
|||
sortable="custom"
|
||||
min-width="100"
|
||||
/>
|
||||
|
||||
</el-table>
|
||||
</div>
|
||||
</el-main>
|
||||
<div class="pagination" style="text-align: right;margin-top:5px;">
|
||||
<pagination :total="total" :page.sync="listQuery.PageIndex" :limit.sync="listQuery.PageSize" @pagination="getList" />
|
||||
<div class="pagination" style="text-align: right; margin-top: 5px">
|
||||
<pagination
|
||||
:total="total"
|
||||
:page.sync="listQuery.PageIndex"
|
||||
:limit.sync="listQuery.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</div>
|
||||
</el-container>
|
||||
</template>
|
||||
<script>
|
||||
import { getTrialUserScreeningList, addTrialUsers, getUserTypeList } from '@/api/trials'
|
||||
import Pagination from '@/components/Pagination'
|
||||
import {
|
||||
getTrialUserScreeningList,
|
||||
addTrialUsers,
|
||||
getUserTypeList,
|
||||
} from "@/api/trials";
|
||||
import Pagination from "@/components/Pagination";
|
||||
const getListQueryDefault = () => {
|
||||
return {
|
||||
UserRealName: '',
|
||||
UserName: '',
|
||||
OrganizationName: '',
|
||||
UserTypeEnum: '',
|
||||
UserRealName: "",
|
||||
UserName: "",
|
||||
OrganizationName: "",
|
||||
UserTypeEnum: "",
|
||||
PageIndex: 1,
|
||||
PageSize: 20
|
||||
}
|
||||
}
|
||||
PageSize: 20,
|
||||
};
|
||||
};
|
||||
export default {
|
||||
components: { Pagination },
|
||||
data() {
|
||||
|
@ -155,115 +177,121 @@ export default {
|
|||
listQuery: getListQueryDefault(),
|
||||
selectArr: [],
|
||||
assignLoadStatus: false,
|
||||
isAdmin: JSON.parse(zzSessionStorage.getItem('IsAdmin')),
|
||||
isAdmin: JSON.parse(zzSessionStorage.getItem("IsAdmin")),
|
||||
userTypeOptions: [],
|
||||
trialId: '',
|
||||
qCProcessEnum: null
|
||||
}
|
||||
trialId: "",
|
||||
qCProcessEnum: null,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.trialId = this.$route.query.trialId
|
||||
this.getUserType()
|
||||
this.getList()
|
||||
this.trialId = this.$route.query.trialId;
|
||||
this.getUserType();
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
getList() {
|
||||
const loading = this.$loading({
|
||||
target: document.querySelector('.participant-container'),
|
||||
target: document.querySelector(".participant-container"),
|
||||
fullscreen: false,
|
||||
lock: true
|
||||
})
|
||||
this.listQuery.TrialId = this.trialId
|
||||
getTrialUserScreeningList(this.listQuery).then(res => {
|
||||
loading.close()
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
this.qCProcessEnum = res.OtherInfo.QCProcessEnum
|
||||
}).catch(() => { loading.close() })
|
||||
lock: true,
|
||||
});
|
||||
this.listQuery.TrialId = this.trialId;
|
||||
getTrialUserScreeningList(this.listQuery)
|
||||
.then((res) => {
|
||||
loading.close();
|
||||
this.list = res.Result.CurrentPageData;
|
||||
this.total = res.Result.TotalCount;
|
||||
this.qCProcessEnum = res.OtherInfo.QCProcessEnum;
|
||||
})
|
||||
.catch(() => {
|
||||
loading.close();
|
||||
});
|
||||
},
|
||||
handleAssign() {
|
||||
this.$confirm(this.$t('trials:staff:message:addStaff'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true
|
||||
})
|
||||
.then(() => {
|
||||
const loading = this.$loading({
|
||||
target: document.querySelector('.participant-container'),
|
||||
fullscreen: false,
|
||||
lock: true
|
||||
this.$confirm(this.$t("trials:staff:message:addStaff"), {
|
||||
type: "warning",
|
||||
distinguishCancelAndClose: true,
|
||||
}).then(() => {
|
||||
const loading = this.$loading({
|
||||
target: document.querySelector(".participant-container"),
|
||||
fullscreen: false,
|
||||
lock: true,
|
||||
});
|
||||
this.assignLoadStatus = true;
|
||||
addTrialUsers(this.selectArr)
|
||||
.then((res) => {
|
||||
this.assignLoadStatus = false;
|
||||
loading.close();
|
||||
if (res.IsSuccess) {
|
||||
this.$emit("closeDialog");
|
||||
this.$message.success(
|
||||
this.$t("common:message:addedSuccessfully")
|
||||
);
|
||||
}
|
||||
})
|
||||
this.assignLoadStatus = true
|
||||
addTrialUsers(this.selectArr)
|
||||
.then(res => {
|
||||
this.assignLoadStatus = false
|
||||
loading.close()
|
||||
if (res.IsSuccess) {
|
||||
this.$emit('closeDialog')
|
||||
this.$message.success(this.$t('common:message:addedSuccessfully'))
|
||||
}
|
||||
}).catch(() => {
|
||||
loading.close()
|
||||
this.assignLoadStatus = false
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
loading.close();
|
||||
this.assignLoadStatus = false;
|
||||
});
|
||||
});
|
||||
},
|
||||
handleSearch() {
|
||||
this.listQuery.PageIndex = 1
|
||||
this.getList()
|
||||
this.listQuery.PageIndex = 1;
|
||||
this.getList();
|
||||
},
|
||||
handleReset() {
|
||||
this.listQuery = getListQueryDefault()
|
||||
this.getList()
|
||||
this.listQuery = getListQueryDefault();
|
||||
this.getList();
|
||||
},
|
||||
handleSelectChange(val) {
|
||||
this.selectArr = val
|
||||
this.selectArr = val;
|
||||
},
|
||||
handleSortByColumn(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.listQuery.Asc = true
|
||||
if (column.order === "ascending") {
|
||||
this.listQuery.Asc = true;
|
||||
} else {
|
||||
this.listQuery.Asc = false
|
||||
this.listQuery.Asc = false;
|
||||
}
|
||||
this.listQuery.SortField = column.prop
|
||||
this.listQuery.PageIndex = 1
|
||||
this.getList()
|
||||
this.listQuery.SortField = column.prop;
|
||||
this.listQuery.PageIndex = 1;
|
||||
this.getList();
|
||||
},
|
||||
handleSelectable(row) {
|
||||
if (!row.IsSelect) {
|
||||
return true
|
||||
return true;
|
||||
} else {
|
||||
return false
|
||||
return false;
|
||||
}
|
||||
},
|
||||
getUserType() {
|
||||
getUserTypeList(2).then(res => {
|
||||
this.userTypeOptions = res.Result
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
getUserTypeList(2).then((res) => {
|
||||
this.userTypeOptions = res.Result;
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.participant-container{
|
||||
.participant-container {
|
||||
height: 100%;
|
||||
.el-header{
|
||||
.filter-container{
|
||||
.el-header {
|
||||
.filter-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
span{
|
||||
font-size:13px;
|
||||
margin-right:5px;
|
||||
span {
|
||||
font-size: 13px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
.mr{
|
||||
.mr {
|
||||
margin-right: 5px;
|
||||
width: 120px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.el-main{
|
||||
.el-main {
|
||||
padding: 0px;
|
||||
}
|
||||
.el-footer{
|
||||
.el-footer {
|
||||
padding: 0 20px;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div class="personnel-container">
|
||||
<el-collapse v-model="activeNames" class="personnel-manage">
|
||||
<el-collapse class="personnel-manage">
|
||||
<!-- 人员 -->
|
||||
<Staff ref="staffList" />
|
||||
<!-- <el-collapse-item :title="$t('trials:staff:title:staff')" name="Staff">
|
||||
|
|
|
@ -146,7 +146,11 @@
|
|||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
min-width="100"
|
||||
/>
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ $fd("sex", Number(scope.row.SubjectSex)) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 申请号 -->
|
||||
<!-- <el-table-column
|
||||
prop="StudyCode"
|
||||
|
@ -170,6 +174,7 @@
|
|||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
min-width="100"
|
||||
v-if="activeName === 'submit'"
|
||||
/>
|
||||
<!-- 检查日期 -->
|
||||
<el-table-column
|
||||
|
@ -194,7 +199,19 @@
|
|||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
min-width="100"
|
||||
/>
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.SubmitState * 1 === 0" type="warning">{{
|
||||
$fd("SubmitState", scope.row.SubmitState * 1)
|
||||
}}</el-tag>
|
||||
<el-tag v-else-if="scope.row.SubmitState * 1 === 1" type="danger">{{
|
||||
$fd("SubmitState", scope.row.SubmitState * 1)
|
||||
}}</el-tag>
|
||||
<el-tag v-else-if="scope.row.SubmitState * 1 === 2">{{
|
||||
$fd("SubmitState", scope.row.SubmitState * 1)
|
||||
}}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
:label="$t('common:action:action')"
|
||||
min-width="100"
|
||||
|
|
|
@ -8,17 +8,42 @@
|
|||
label-width="100px"
|
||||
>
|
||||
<div class="base-dialog-body">
|
||||
<!-- 患者编号 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
|
||||
<el-input v-model="form.PatientId" disabled />
|
||||
</el-form-item>
|
||||
<!-- 受试者编号 -->
|
||||
<el-form-item :label="$t('trials:subject:table:subjectId')" prop="Code">
|
||||
<el-input v-model="form.Code" />
|
||||
</el-form-item>
|
||||
<!-- 患者编号 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
|
||||
<el-input v-model="form.Code" disabled />
|
||||
</el-form-item>
|
||||
<!-- 患者姓名 -->
|
||||
<!-- 姓名 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
|
||||
<el-input v-model="form.Code" disabled />
|
||||
<el-input v-model="form.ShortName" />
|
||||
</el-form-item>
|
||||
<!-- 年龄 -->
|
||||
<el-form-item :label="$t('trials:subject:table:age')">
|
||||
<el-input v-model="form.Age" type="number" />
|
||||
</el-form-item>
|
||||
<!-- 性别 -->
|
||||
<el-form-item :label="$t('trials:subject:table:gender')">
|
||||
<el-select v-model="form.Sex" clearable filterable style="width: 100%">
|
||||
<el-option
|
||||
v-for="item of $d.sex"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 出生日期 -->
|
||||
<el-form-item :label="$t('trials:inspection:table:birthdate')">
|
||||
<el-date-picker
|
||||
v-model="form.BirthDate"
|
||||
type="date"
|
||||
placeholder="选择日期"
|
||||
style="width: 100%"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="base-dialog-footer" style="text-align: right; margin-top: 10px">
|
||||
|
@ -46,7 +71,7 @@
|
|||
</el-form>
|
||||
</template>
|
||||
<script>
|
||||
import { getTrialSiteSelect, addOrUpdateSubject } from "@/api/trials";
|
||||
import { addOrUpdateSubjectHir } from "@/api/trials";
|
||||
export default {
|
||||
name: "SubjectForm",
|
||||
props: {
|
||||
|
@ -67,24 +92,15 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
form: {
|
||||
Id: "",
|
||||
Code: "",
|
||||
ShortName: "",
|
||||
Height: "",
|
||||
Weight: "",
|
||||
Age: "",
|
||||
Sex: "",
|
||||
BirthDate: "",
|
||||
SiteId: "",
|
||||
MedicalNo: "",
|
||||
Status: 1,
|
||||
FirstGiveMedicineTime: "",
|
||||
OutEnrollmentTime: "",
|
||||
VisitOverTime: "",
|
||||
Reason: "",
|
||||
StudyCount: "",
|
||||
SignDate: "",
|
||||
IsUrgent: false,
|
||||
PatientList: [],
|
||||
PatientId: "",
|
||||
TrialId: "",
|
||||
Id: "",
|
||||
Age: null,
|
||||
Sex: null,
|
||||
BirthDate: null,
|
||||
},
|
||||
rules: {
|
||||
Code: [
|
||||
|
@ -113,10 +129,6 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
async initForm() {
|
||||
this.loading = true;
|
||||
const res = await getTrialSiteSelect(this.trialId);
|
||||
this.loading = false;
|
||||
this.siteOptions = res.Result;
|
||||
if (Object.keys(this.data).length > 0) {
|
||||
for (const k in this.form) {
|
||||
if (this.data.hasOwnProperty(k)) {
|
||||
|
@ -125,12 +137,26 @@ export default {
|
|||
}
|
||||
}
|
||||
this.form.TrialId = this.trialId;
|
||||
this.form.PatientList.forEach((item, index) => {
|
||||
if (index === this.form.PatientList.length - 1) {
|
||||
this.form.PatientId += `${item.PatientIdStr}`;
|
||||
} else {
|
||||
this.form.PatientId += `${item.PatientIdStr}, `;
|
||||
}
|
||||
});
|
||||
},
|
||||
handleSave() {
|
||||
this.$refs.subjectForm.validate((valid) => {
|
||||
if (!valid) return;
|
||||
this.btnLoading = true;
|
||||
addOrUpdateSubject(this.form)
|
||||
let data = {};
|
||||
Object.keys(this.form).forEach((key) => {
|
||||
data[key] = this.form[key];
|
||||
});
|
||||
data.BirthDate = data.BirthDate.toISOString();
|
||||
delete data.PatientId;
|
||||
delete data.PatientList;
|
||||
addOrUpdateSubjectHir(data)
|
||||
.then((res) => {
|
||||
this.btnLoading = false;
|
||||
this.$emit("getList");
|
||||
|
@ -145,11 +171,6 @@ export default {
|
|||
handleCancel() {
|
||||
this.$emit("close");
|
||||
},
|
||||
getSite() {
|
||||
getTrialSiteSelect(this.trialId).then((res) => {
|
||||
this.siteList = res.Result;
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -60,13 +60,13 @@
|
|||
{{ $t("common:button:reset") }}
|
||||
</el-button>
|
||||
<!--导出-->
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
type="primary"
|
||||
icon="el-icon-download"
|
||||
@click="handleExport"
|
||||
>
|
||||
{{ $t("common:button:export") }}
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span style="margin-left: auto">
|
||||
|
@ -133,7 +133,11 @@
|
|||
:label="$t('trials:trials-myinfo:form:gender')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<span>{{ $fd("sex", Number(scope.row.Sex)) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 出生日期 -->
|
||||
<el-table-column
|
||||
prop="BirthDate"
|
||||
|
@ -207,13 +211,13 @@
|
|||
@click="handleEdit(scope.row)"
|
||||
/>
|
||||
<!-- 修改状态 -->
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
v-hasPermi="['trials:trials-panel:subject:status']"
|
||||
circle
|
||||
:title="$t('trials:subject:action:status')"
|
||||
icon="el-icon-edit"
|
||||
@click="handleEditStatus(scope.row)"
|
||||
/>
|
||||
/> -->
|
||||
<!-- 删除 -->
|
||||
<el-button
|
||||
v-hasPermi="['trials:trials-panel:subject:delete']"
|
||||
|
@ -243,7 +247,7 @@
|
|||
:visible.sync="editDialog.visible"
|
||||
:close-on-click-modal="false"
|
||||
:title="editDialog.title"
|
||||
width="700px"
|
||||
width="500px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SubjectsForm
|
||||
|
|
Loading…
Reference in New Issue