页面新增与修改
parent
57181f272f
commit
eb7b60e605
|
@ -1598,7 +1598,7 @@ Enroll: Enrolled Confirmation`,
|
|||
'trials:tab:trials': `My Trials`,
|
||||
'trials:trials:title:back': `Return`,
|
||||
'trials:trials:title:backTrialList': `Return to trial list`,
|
||||
'trials:trials:title:eics': `SIR Imaging System`,
|
||||
'trials:trials:title:eics': `HIR Imaging System`,
|
||||
'trials:tab:reading': `Reads`,
|
||||
'trials:tab:pendingReadingTasks': `Pending`,
|
||||
'trials:pendingReadingTasks:table:subjectCode': `Subject ID`,
|
||||
|
|
|
@ -1523,7 +1523,7 @@ export default {
|
|||
'trials:notice:table:appendix': `附件`,
|
||||
'trials:notice:table:isRead': `是否已读`,
|
||||
'trials:notice:action:detail': `详情`,
|
||||
'login:title:system': `研究单位阅片系统`,
|
||||
'login:title:system': `院内影像评估系统`,
|
||||
'login:form:userName': `用户名`,
|
||||
'login:form:password': `密码`,
|
||||
'login:button:login': `登录`,
|
||||
|
@ -1587,7 +1587,7 @@ export default {
|
|||
'trials:tab:trials': `我的项目`,
|
||||
'trials:trials:title:back': `返回`,
|
||||
'trials:trials:title:backTrialList': `返回项目列表`,
|
||||
'trials:trials:title:eics': `研究单位阅片系统`,
|
||||
'trials:trials:title:eics': `院内影像评估系统`,
|
||||
'trials:tab:reading': `阅片`,
|
||||
'trials:tab:pendingReadingTasks': `待阅`,
|
||||
'trials:pendingReadingTasks:table:subjectCode': `受试者编号`,
|
||||
|
|
|
@ -1,35 +1,44 @@
|
|||
<template>
|
||||
<box-content>
|
||||
<box-content :style="style">
|
||||
<div class="search">
|
||||
<el-form :inline="true" size="small" class="base-search-form">
|
||||
<el-form-item label="Hospital:">
|
||||
<el-input v-model="searchData.HospitalName" style="width:100px;" />
|
||||
<el-input v-model="searchData.HospitalName" style="width: 100px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="Province:">
|
||||
<el-input v-model="searchData.Province" style="width:100px;" />
|
||||
<el-input v-model="searchData.Province" style="width: 100px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="City:">
|
||||
<el-input v-model="searchData.City" style="width:100px;" />
|
||||
<el-input v-model="searchData.City" style="width: 100px" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">Search</el-button>
|
||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">Reset</el-button>
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch"
|
||||
>Search</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>Reset</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span style="margin-left:auto;">
|
||||
<span style="margin-left: auto">
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
style="margin-left:auto;"
|
||||
style="margin-left: auto"
|
||||
icon="el-icon-plus"
|
||||
@click="handleAddHospital"
|
||||
>New</el-button>
|
||||
v-hasPermi="['system:hospital:add']"
|
||||
>New</el-button
|
||||
>
|
||||
</span>
|
||||
</div>
|
||||
<!-- hospital列表 -->
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{bottomOffset:60}"
|
||||
v-adaptive="{ bottomOffset: 60 }"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
|
@ -108,26 +117,38 @@
|
|||
sortable="custom"
|
||||
/>
|
||||
|
||||
<el-table-column label="Action" width="150">
|
||||
<el-table-column
|
||||
label="Action"
|
||||
width="150"
|
||||
v-if="hasPermi(['system:hospital:edit', 'system:hospital:del'])"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-edit-outline"
|
||||
title="编辑"
|
||||
@click="handleEdit(scope.row)"
|
||||
v-hasPermi="['system:hospital:edit']"
|
||||
/>
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-delete"
|
||||
title="删除"
|
||||
@click="handleDelete(scope.row)"
|
||||
v-hasPermi="['system:hospital:del']"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
|
||||
<pagination
|
||||
class="page"
|
||||
:total="total"
|
||||
:page.sync="searchData.PageIndex"
|
||||
:limit.sync="searchData.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<el-dialog
|
||||
v-if="editDialog.visible"
|
||||
|
@ -137,120 +158,135 @@
|
|||
width="600px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<hospital-form v-if="editDialog.visible" :data="rowData" @close="close" @getList="getList" />
|
||||
<hospital-form
|
||||
v-if="editDialog.visible"
|
||||
:data="rowData"
|
||||
@close="close"
|
||||
@getList="getList"
|
||||
/>
|
||||
</el-dialog>
|
||||
|
||||
</box-content>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
import { getHospitalPageList, deleteHospital } from '@/api/dictionary'
|
||||
import BoxContent from '@/components/BoxContent'
|
||||
import Pagination from '@/components/Pagination'
|
||||
import HospitalForm from './HospitalForm'
|
||||
import { getHospitalPageList, deleteHospital } from "@/api/dictionary";
|
||||
import BoxContent from "@/components/BoxContent";
|
||||
import Pagination from "@/components/Pagination";
|
||||
import HospitalForm from "./HospitalForm";
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
HospitalName: '',
|
||||
Province: '',
|
||||
City: '',
|
||||
HospitalName: "",
|
||||
Province: "",
|
||||
City: "",
|
||||
PageIndex: 1,
|
||||
PageSize: 20,
|
||||
Asc: true,
|
||||
SortField: ''
|
||||
}
|
||||
}
|
||||
SortField: "",
|
||||
};
|
||||
};
|
||||
export default {
|
||||
name: 'Hospitals',
|
||||
name: "Hospitals",
|
||||
components: { BoxContent, Pagination, HospitalForm },
|
||||
data() {
|
||||
return {
|
||||
searchData: searchDataDefault(),
|
||||
editDialog: { visible: false, title: '' },
|
||||
editDialog: { visible: false, title: "" },
|
||||
list: [],
|
||||
total: 0,
|
||||
loading: false,
|
||||
rowData: {}
|
||||
}
|
||||
rowData: {},
|
||||
style: "",
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
this.getList();
|
||||
},
|
||||
created() {
|
||||
// 页面样式兼容
|
||||
if (this.$route.path === "/system/hospital") {
|
||||
this.style = "padding-top:10px";
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 获取医院列表信息
|
||||
getList() {
|
||||
this.loading = true
|
||||
getHospitalPageList(this.searchData).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
this.loading = true;
|
||||
getHospitalPageList(this.searchData)
|
||||
.then((res) => {
|
||||
this.loading = false;
|
||||
this.list = res.Result.CurrentPageData;
|
||||
this.total = res.Result.TotalCount;
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 新增医院信息
|
||||
handleAddHospital() {
|
||||
this.rowData = {}
|
||||
this.editDialog.title = 'Add'
|
||||
this.editDialog.visible = true
|
||||
this.rowData = {};
|
||||
this.editDialog.title = "Add";
|
||||
this.editDialog.visible = true;
|
||||
},
|
||||
// 修改医院信息
|
||||
handleEdit(row) {
|
||||
this.rowData = row
|
||||
this.editDialog.title = 'Edit'
|
||||
this.editDialog.visible = true
|
||||
this.rowData = row;
|
||||
this.editDialog.title = "Edit";
|
||||
this.editDialog.visible = true;
|
||||
},
|
||||
// 删除医院信息
|
||||
handleDelete(row) {
|
||||
this.$confirm('Sure to delete?', {
|
||||
type: 'warning',
|
||||
this.$confirm("Sure to delete?", {
|
||||
type: "warning",
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: 'Ok',
|
||||
cancelButtonText: 'Cancel'
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
deleteHospital(row.Id)
|
||||
.then(res => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.$message.success('Deleted successfully!')
|
||||
}
|
||||
this.loading = false
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
})
|
||||
confirmButtonText: "Ok",
|
||||
cancelButtonText: "Cancel",
|
||||
}).then(() => {
|
||||
this.loading = true;
|
||||
deleteHospital(row.Id)
|
||||
.then((res) => {
|
||||
if (res.IsSuccess) {
|
||||
this.list.splice(
|
||||
this.list.findIndex((item) => item.Id === row.Id),
|
||||
1
|
||||
);
|
||||
this.$message.success("Deleted successfully!");
|
||||
}
|
||||
this.loading = false;
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
});
|
||||
},
|
||||
// 查询
|
||||
handleSearch() {
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
this.searchData.PageIndex = 1;
|
||||
this.getList();
|
||||
},
|
||||
// 重置列表
|
||||
handleReset() {
|
||||
this.searchData = searchDataDefault()
|
||||
this.getList()
|
||||
this.searchData = searchDataDefault();
|
||||
this.getList();
|
||||
},
|
||||
// 指定排序字段,对列表进行排序
|
||||
handleSortByColumn(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.searchData.Asc = true
|
||||
if (column.order === "ascending") {
|
||||
this.searchData.Asc = true;
|
||||
} else {
|
||||
this.searchData.Asc = false
|
||||
this.searchData.Asc = false;
|
||||
}
|
||||
this.searchData.SortField = column.prop
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
this.searchData.SortField = column.prop;
|
||||
this.searchData.PageIndex = 1;
|
||||
this.getList();
|
||||
},
|
||||
// 关闭模态框
|
||||
close() {
|
||||
this.editDialog.visible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
this.editDialog.visible = false;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.hospitals{
|
||||
.hospitals {
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<template>
|
||||
<div style="display: flex;justify-content: center">
|
||||
<div style="width: 640px;text-align: center;border: 1px solid #e6e6e6;margin-top:40px;padding:10px;">
|
||||
<div style="width: 640px;text-align: center;border: 1px solid #e6e6e6;margin-top:40px;padding:10px;padding-right:40px;">
|
||||
<div class="trial-myinfo-head" style="font-size: 30px;line-height: 120px;">
|
||||
<!-- 首次登录修改密码 -->
|
||||
{{ $t('recompose:title:init') }}
|
||||
</div>
|
||||
<el-form ref="passwordForm" v-loading="loading" label-position="right" :model="password" :rules="passwordFormRules" label-width="180px">
|
||||
<el-form ref="passwordForm" v-loading="loading" label-position="right" :model="password" :rules="passwordFormRules" label-width="120px">
|
||||
<!-- 邮箱 -->
|
||||
<el-form-item :label="$t('recompose:form:email')" prop="Email">
|
||||
<el-input v-model="password.Email" disabled />
|
||||
|
@ -18,6 +18,15 @@
|
|||
<el-form-item :label="$t('recompose:form:userName')" prop="NewUserName">
|
||||
<el-input v-model="password.NewUserName" />
|
||||
</el-form-item>
|
||||
<!-- 校验码 -->
|
||||
<el-form-item :label="$t('trials:researchForm:form:checkCode')" prop="NewUserName" style="position: relative">
|
||||
<el-input v-model="password.NewUserName" :disabled="password.NewUserName"/>
|
||||
<span style="position: absolute;right: -30px">
|
||||
<el-tooltip :content="$t('passwordReset:form:passwordCentent')" placement="top">
|
||||
<i class="el-icon-question" />
|
||||
</el-tooltip>
|
||||
</span>
|
||||
</el-form-item>
|
||||
<!-- 新密码 -->
|
||||
<el-form-item class="my_new_pwd" :label="$t('recompose:form:newPassword')" prop="NewPassWord">
|
||||
<el-input v-model="password.NewPassWord" type="password" show-password auto-complete="new-password" />
|
||||
|
@ -185,7 +194,7 @@ input {
|
|||
background-color:transparent;
|
||||
caret-color: #fff;
|
||||
}
|
||||
>>>.is-error.my_new_pwd{
|
||||
::v-deep .is-error.my_new_pwd{
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -12,9 +12,14 @@
|
|||
class="demo-ruleForm"
|
||||
size="small"
|
||||
>
|
||||
<!-- 用户类型 -->
|
||||
<el-form-item v-if="form.UserId" :label="$t('passwordReset:form:userType')">
|
||||
<el-input v-model="form.UserType" disabled />
|
||||
</el-form-item>
|
||||
<!-- 邮箱 -->
|
||||
<el-form-item :label="$t('passwordReset:form:email')" prop="EmailOrPhone">
|
||||
<el-col :span="18">
|
||||
<el-input v-model="form.EmailOrPhone" autocomplete="off" @change="handleEmailChange" />
|
||||
<!-- <el-col :span="18">
|
||||
<el-input v-model="form.EmailOrPhone" autocomplete="off" @change="handleEmailChange" />
|
||||
</el-col>
|
||||
<el-col :span="6" style="text-align:right;">
|
||||
|
@ -24,11 +29,11 @@
|
|||
style="width:80%;"
|
||||
:disabled="sendDisabled"
|
||||
@click="handleSendCode"
|
||||
>{{ sendTitle }}</el-button>
|
||||
</el-col>
|
||||
>{{ sendTitle }}</el-button> -->
|
||||
<!-- </el-col> -->
|
||||
</el-form-item>
|
||||
<!-- 验证码 -->
|
||||
<el-form-item :label="$t('trials:researchForm:form:verifyCode')" required>
|
||||
<el-form-item :label="$t('trials:researchForm:form:checkCode')" required>
|
||||
<el-col :span="18">
|
||||
<el-form-item prop="VerificationCode">
|
||||
<el-input v-model="form.VerificationCode" autocomplete="off" />
|
||||
|
@ -67,10 +72,6 @@
|
|||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 用户类型 -->
|
||||
<el-form-item v-if="form.UserId" :label="$t('passwordReset:form:userType')">
|
||||
<el-input v-model="form.UserType" disabled />
|
||||
</el-form-item>
|
||||
<!-- 新密码 -->
|
||||
<el-form-item class="my_new_pwd" :label="$t('passwordReset:form:password')" prop="NewPwd" style="position: relative">
|
||||
<el-input v-model="form.NewPwd" show-password autocomplete="off" />
|
||||
|
@ -268,7 +269,7 @@ export default {
|
|||
/*>>>.is-error{*/
|
||||
/* margin-bottom: 40px;*/
|
||||
/*}*/
|
||||
>>>.is-error.my_new_pwd{
|
||||
::v-deep .is-error.my_new_pwd{
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -225,8 +225,10 @@ export default {
|
|||
this.$router.replace({ path: res[0].path })
|
||||
return
|
||||
}
|
||||
if (this.hasPermi(['role:air', 'role:rpm', 'role:rcrc', 'role:rir'])) {
|
||||
this.$router.replace({ path: '/trials/trials-list' })
|
||||
if (this.hasPermi(['role:pm', 'role:crc', 'role:crc'])) {
|
||||
this.$router.replace({ path: '/trials/trials-inspection' })
|
||||
}else if(this.hasPermi(['role:oa'])){
|
||||
this.$router.replace({ path: '/system' })
|
||||
} else {
|
||||
this.$router.replace({ path: '/trials' })
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
<template>
|
||||
<div class="dicomAE"></div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name:"dicomAE"
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
|
@ -156,7 +156,7 @@
|
|||
是否外链
|
||||
</span>
|
||||
<el-radio-group v-model="form.IsExternalLink">
|
||||
<el-radio v-for="item of $d.YesOrNo" :label="item.value">{{item.label}}</el-radio>
|
||||
<el-radio v-for="item of $d.YesOrNo" :label="item.value" :key="item.id">{{item.label}}</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
|
|
@ -3,7 +3,12 @@
|
|||
<div ref="leftContainer" class="left">
|
||||
<el-form :inline="true">
|
||||
<el-form-item label="通知级别: " prop="NoticeLevelEnum">
|
||||
<el-select v-model="searchData.NoticeLevelEnum" placeholder="通知级别" clearable size="small">
|
||||
<el-select
|
||||
v-model="searchData.NoticeLevelEnum"
|
||||
placeholder="通知级别"
|
||||
clearable
|
||||
size="small"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of $d.NoteLevel"
|
||||
:key="item.value"
|
||||
|
@ -13,7 +18,12 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="通知类型: " prop="NoticeTypeEnum">
|
||||
<el-select v-model="searchData.NoticeTypeEnum" placeholder="通知类型" clearable size="small">
|
||||
<el-select
|
||||
v-model="searchData.NoticeTypeEnum"
|
||||
placeholder="通知类型"
|
||||
clearable
|
||||
size="small"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of $d.NoteType"
|
||||
:key="item.value"
|
||||
|
@ -23,7 +33,12 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="适用项目: " prop="ApplicableProjectEnum">
|
||||
<el-select v-model="searchData.ApplicableProjectEnum" placeholder="适用项目" clearable size="small">
|
||||
<el-select
|
||||
v-model="searchData.ApplicableProjectEnum"
|
||||
placeholder="适用项目"
|
||||
clearable
|
||||
size="small"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of dict.type.NoticeApplicableTrial"
|
||||
:key="item.value"
|
||||
|
@ -33,7 +48,13 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="使用角色: " prop="NoticeUserTypeIdList">
|
||||
<el-select v-model="searchData.NoticeUserTypeIdList" multiple placeholder="使用角色" clearable size="small">
|
||||
<el-select
|
||||
v-model="searchData.NoticeUserTypeIdList"
|
||||
multiple
|
||||
placeholder="使用角色"
|
||||
clearable
|
||||
size="small"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of roleList"
|
||||
:key="item.Id"
|
||||
|
@ -43,7 +64,12 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="提醒方式: " prop="NoticeModeEnum">
|
||||
<el-select v-model="searchData.NoticeModeEnum" placeholder="提醒方式" clearable size="small">
|
||||
<el-select
|
||||
v-model="searchData.NoticeModeEnum"
|
||||
placeholder="提醒方式"
|
||||
clearable
|
||||
size="small"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of dict.type.NoticeMode"
|
||||
:key="item.value"
|
||||
|
@ -53,107 +79,237 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="el-icon-search" size="mini" @click="getList">搜索</el-button>
|
||||
<el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd">新增</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-search"
|
||||
size="mini"
|
||||
@click="getList"
|
||||
>搜索</el-button
|
||||
>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
@click="handleAdd"
|
||||
v-hasPermi="['system:notice:add']"
|
||||
>新增</el-button
|
||||
>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-table v-loading="loading" v-adaptive="{bottomOffset:45}" height="100" :data="list" class="table">
|
||||
<el-table
|
||||
v-loading="loading"
|
||||
v-adaptive="{ bottomOffset: 45 }"
|
||||
height="100"
|
||||
:data="list"
|
||||
class="table"
|
||||
>
|
||||
<el-table-column type="index" width="50" />
|
||||
<el-table-column label="通知级别" prop="NoticeLevelEnum" min-width="120" show-overflow-tooltip>
|
||||
<el-table-column
|
||||
label="通知级别"
|
||||
prop="NoticeLevelEnum"
|
||||
min-width="120"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('NoteLevel', scope.row.NoticeLevelEnum) }}
|
||||
{{ $fd("NoteLevel", scope.row.NoticeLevelEnum) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="通知类型" prop="NoticeTypeEnum" min-width="100" show-overflow-tooltip>
|
||||
<el-table-column
|
||||
label="通知类型"
|
||||
prop="NoticeTypeEnum"
|
||||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('NoteType', scope.row.NoticeTypeEnum) }}
|
||||
{{ $fd("NoteType", scope.row.NoticeTypeEnum) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="通知内容" prop="NoticeContent" min-width="100" show-overflow-tooltip>
|
||||
<el-table-column
|
||||
label="通知内容"
|
||||
prop="NoticeContent"
|
||||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.NoticeContent }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="通知状态" prop="NoticeStateEnum" min-width="100" show-overflow-tooltip>
|
||||
<el-table-column
|
||||
label="通知状态"
|
||||
prop="NoticeStateEnum"
|
||||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-tag :type="scope.row.ActualNoticeStateEnum === 0 ? 'info' : scope.row.ActualNoticeStateEnum === 1 ? 'success' : 'danger'">
|
||||
{{ $fd('NoticeState', scope.row.ActualNoticeStateEnum) }}
|
||||
<el-tag
|
||||
:type="
|
||||
scope.row.ActualNoticeStateEnum === 0
|
||||
? 'info'
|
||||
: scope.row.ActualNoticeStateEnum === 1
|
||||
? 'success'
|
||||
: 'danger'
|
||||
"
|
||||
>
|
||||
{{ $fd("NoticeState", scope.row.ActualNoticeStateEnum) }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="适用项目" prop="ApplicableProjectEnum" min-width="100" show-overflow-tooltip>
|
||||
<el-table-column
|
||||
label="适用项目"
|
||||
prop="ApplicableProjectEnum"
|
||||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('NoticeApplicableTrial', scope.row.ApplicableProjectEnum) }}
|
||||
{{ $fd("NoticeApplicableTrial", scope.row.ApplicableProjectEnum) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="适用角色" prop="NoticeUserTypeList" min-width="80" show-overflow-tooltip>
|
||||
<el-table-column
|
||||
label="适用角色"
|
||||
prop="NoticeUserTypeList"
|
||||
min-width="80"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ $fd('NoticeUserTypeList', scope.row.UserTypeShortName) }}
|
||||
{{ $fd("NoticeUserTypeList", scope.row.UserTypeShortName) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="提示方式" prop="NoticeModeEnum" min-width="100" show-overflow-tooltip>
|
||||
<el-table-column
|
||||
label="提示方式"
|
||||
prop="NoticeModeEnum"
|
||||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ dict.type.NoticeMode.find(v => {return v.raw.Code * 1 === scope.row.NoticeModeEnum}) ? dict.type.NoticeMode.find(v => {return v.raw.Code * 1 === scope.row.NoticeModeEnum}).label : '' }}
|
||||
{{
|
||||
dict.type.NoticeMode.find((v) => {
|
||||
return v.raw.Code * 1 === scope.row.NoticeModeEnum;
|
||||
})
|
||||
? dict.type.NoticeMode.find((v) => {
|
||||
return v.raw.Code * 1 === scope.row.NoticeModeEnum;
|
||||
}).label
|
||||
: ""
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="保留时长" prop="StartDate" min-width="240" show-overflow-tooltip>
|
||||
<el-table-column
|
||||
label="保留时长"
|
||||
prop="StartDate"
|
||||
min-width="240"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.StartDate }}-{{ scope.row.EndDate }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="发布人" prop="PublishUserName" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column label="发布时间" prop="PublishedTime" min-width="160" show-overflow-tooltip />
|
||||
<el-table-column label="更新时间" prop="UpdateTime" min-width="160" show-overflow-tooltip>
|
||||
<el-table-column
|
||||
label="发布人"
|
||||
prop="PublishUserName"
|
||||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="发布时间"
|
||||
prop="PublishedTime"
|
||||
min-width="160"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
label="更新时间"
|
||||
prop="UpdateTime"
|
||||
min-width="160"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.StartDate ? scope.row.StartDate: scope.row.CreateTime }}
|
||||
{{
|
||||
scope.row.StartDate ? scope.row.StartDate : scope.row.CreateTime
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="附件" fixed="right" prop="FileName" min-width="120" show-overflow-tooltip>
|
||||
<el-table-column
|
||||
label="附件"
|
||||
fixed="right"
|
||||
prop="FileName"
|
||||
min-width="120"
|
||||
show-overflow-tooltip
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<a :href="OSSclientConfig.basePath + scope.row.FullFilePath" target="_blank" style="color:#428bca">{{ scope.row.FileName }}</a>
|
||||
<a
|
||||
:href="OSSclientConfig.basePath + scope.row.FullFilePath"
|
||||
target="_blank"
|
||||
style="color: #428bca"
|
||||
>{{ scope.row.FileName }}</a
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" fixed="right" prop="UserTypeShortName" min-width="200" show-overflow-tooltip>
|
||||
<el-table-column
|
||||
label="操作"
|
||||
fixed="right"
|
||||
prop="UserTypeShortName"
|
||||
min-width="200"
|
||||
show-overflow-tooltip
|
||||
v-if="
|
||||
hasPermi([
|
||||
'system:notice:edit',
|
||||
'system:notice:publish',
|
||||
'system:notice:back',
|
||||
])
|
||||
"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-edit-outline"
|
||||
@click="handleEdit(scope.row)"
|
||||
>编辑</el-button>
|
||||
v-hasPermi="['system:notice:edit']"
|
||||
>编辑</el-button
|
||||
>
|
||||
<el-button
|
||||
v-if="scope.row.NoticeStateEnum === 0"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-s-promotion"
|
||||
@click="handlePush(scope.row)"
|
||||
>发布</el-button>
|
||||
v-hasPermi="['system:notice:publish']"
|
||||
>发布</el-button
|
||||
>
|
||||
<el-button
|
||||
v-if="scope.row.NoticeStateEnum === 1"
|
||||
size="mini"
|
||||
type="text"
|
||||
icon="el-icon-s-release"
|
||||
@click="handleGet(scope.row)"
|
||||
>撤回</el-button>
|
||||
v-hasPermi="['system:notice:back']"
|
||||
>撤回</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="pagination" style="text-align: right;margin-top:5px;">
|
||||
<pagination :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
|
||||
<div class="pagination" style="text-align: right; margin-top: 5px">
|
||||
<pagination
|
||||
:total="total"
|
||||
:page.sync="searchData.PageIndex"
|
||||
:limit.sync="searchData.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<notice-form ref="NoticeForm" :role-list="roleList" @getList="getList" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getSystemNoticeList, addOrUpdateSystemNotice } from '@/api/system/notice'
|
||||
import { getUserTypeRoleList } from '@/api/admin'
|
||||
import NoticeForm from './components/from'
|
||||
import Pagination from '@/components/Pagination'
|
||||
import {
|
||||
getSystemNoticeList,
|
||||
addOrUpdateSystemNotice,
|
||||
} from "@/api/system/notice";
|
||||
import { getUserTypeRoleList } from "@/api/admin";
|
||||
import NoticeForm from "./components/from";
|
||||
import Pagination from "@/components/Pagination";
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
Asc: true,
|
||||
SortField: '',
|
||||
SortField: "",
|
||||
NoticeContent: null,
|
||||
FileName: null,
|
||||
NoticeTypeEnum: null,
|
||||
|
@ -162,12 +318,18 @@ const searchDataDefault = () => {
|
|||
NoticeModeEnum: null,
|
||||
NoticeStateEnum: null,
|
||||
PageIndex: 1,
|
||||
PageSize: 20
|
||||
}
|
||||
}
|
||||
PageSize: 20,
|
||||
};
|
||||
};
|
||||
export default {
|
||||
components: { NoticeForm, Pagination },
|
||||
dicts: ['NoticeApplicableTrial', 'NoteLevel', 'NoteType', 'NoticeState', 'NoticeMode'],
|
||||
dicts: [
|
||||
"NoticeApplicableTrial",
|
||||
"NoteLevel",
|
||||
"NoteType",
|
||||
"NoticeState",
|
||||
"NoticeMode",
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
list: [],
|
||||
|
@ -175,8 +337,8 @@ export default {
|
|||
loading: false,
|
||||
treeData: [],
|
||||
defaultProps: {
|
||||
label: 'MenuName',
|
||||
children: 'Children'
|
||||
label: "MenuName",
|
||||
children: "Children",
|
||||
},
|
||||
userList: [],
|
||||
roleList: [],
|
||||
|
@ -187,99 +349,110 @@ export default {
|
|||
expandedKeys: [],
|
||||
treeLoading: false,
|
||||
funcListLoading: false,
|
||||
funcList: []
|
||||
}
|
||||
funcList: [],
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.getUserTypeRoleList()
|
||||
this.getList()
|
||||
this.getUserTypeRoleList();
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
handlePush(row) {
|
||||
this.loading = true
|
||||
var params = { ...row }
|
||||
params.NoticeUserTypeIdList = params.NoticeUserTypeList.map(v => v.Id)
|
||||
params.NoticeStateEnum = 1
|
||||
addOrUpdateSystemNotice(params).then(res => {
|
||||
this.loading = false
|
||||
this.$message.success('发布成功')
|
||||
this.getList()
|
||||
}).catch(() => { this.loading = false })
|
||||
this.loading = true;
|
||||
var params = { ...row };
|
||||
params.NoticeUserTypeIdList = params.NoticeUserTypeList.map((v) => v.Id);
|
||||
params.NoticeStateEnum = 1;
|
||||
addOrUpdateSystemNotice(params)
|
||||
.then((res) => {
|
||||
this.loading = false;
|
||||
this.$message.success("发布成功");
|
||||
this.getList();
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
handleGet(row) {
|
||||
this.loading = true
|
||||
var params = { ...row }
|
||||
params.NoticeUserTypeIdList = params.NoticeUserTypeList.map(v => v.Id)
|
||||
params.NoticeStateEnum = 0
|
||||
addOrUpdateSystemNotice(params).then(res => {
|
||||
this.loading = false
|
||||
this.$message.success('撤回成功')
|
||||
this.getList()
|
||||
}).catch(() => { this.loading = false })
|
||||
this.loading = true;
|
||||
var params = { ...row };
|
||||
params.NoticeUserTypeIdList = params.NoticeUserTypeList.map((v) => v.Id);
|
||||
params.NoticeStateEnum = 0;
|
||||
addOrUpdateSystemNotice(params)
|
||||
.then((res) => {
|
||||
this.loading = false;
|
||||
this.$message.success("撤回成功");
|
||||
this.getList();
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
handleEdit(row) {
|
||||
this.$nextTick(() => {
|
||||
this.$refs['NoticeForm'].openDialog('编辑', row)
|
||||
})
|
||||
this.$refs["NoticeForm"].openDialog("编辑", row);
|
||||
});
|
||||
},
|
||||
handleAdd() {
|
||||
this.$nextTick(() => {
|
||||
this.$refs['NoticeForm'].openDialog('新增', {})
|
||||
})
|
||||
this.$refs["NoticeForm"].openDialog("新增", {});
|
||||
});
|
||||
},
|
||||
getUserTypeRoleList() {
|
||||
getUserTypeRoleList({}).then((res) => {
|
||||
this.roleList = res.Result
|
||||
}).catch(() => {
|
||||
})
|
||||
getUserTypeRoleList({})
|
||||
.then((res) => {
|
||||
this.roleList = res.Result;
|
||||
})
|
||||
.catch(() => {});
|
||||
},
|
||||
getList() {
|
||||
this.loading = true
|
||||
getSystemNoticeList(this.searchData).then((res) => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => {
|
||||
this.loading = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
this.loading = true;
|
||||
getSystemNoticeList(this.searchData)
|
||||
.then((res) => {
|
||||
this.loading = false;
|
||||
this.list = res.Result.CurrentPageData;
|
||||
this.total = res.Result.TotalCount;
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.role {
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
.role {
|
||||
height: 100%;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
padding: 10px;
|
||||
border-radius: 5px;
|
||||
.left {
|
||||
display: flex;
|
||||
padding: 10px;
|
||||
border-radius: 5px;
|
||||
.left {
|
||||
flex-direction: column;
|
||||
width: 0;
|
||||
flex-grow: 4;
|
||||
// border-right: 1px solid #ccc;
|
||||
.filter-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 0;
|
||||
flex-grow: 4;
|
||||
// border-right: 1px solid #ccc;
|
||||
.filter-container {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin: 5px;
|
||||
}
|
||||
.data-table {
|
||||
flex: 1;
|
||||
padding: 5px 0px;
|
||||
}
|
||||
.pagination-container {
|
||||
text-align: right;
|
||||
}
|
||||
align-items: center;
|
||||
margin: 5px;
|
||||
}
|
||||
.right {
|
||||
width: 0;
|
||||
flex-grow: 6;
|
||||
overflow-y: auto;
|
||||
border-right: 1px solid #ccc;
|
||||
.data-table {
|
||||
flex: 1;
|
||||
padding: 5px 0px;
|
||||
}
|
||||
.selected-row{
|
||||
background-color: cadetblue;
|
||||
.pagination-container {
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
.right {
|
||||
width: 0;
|
||||
flex-grow: 6;
|
||||
overflow-y: auto;
|
||||
border-right: 1px solid #ccc;
|
||||
}
|
||||
.selected-row {
|
||||
background-color: cadetblue;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -211,7 +211,6 @@ export default {
|
|||
this.btnLoading = true
|
||||
this.model_cfg.showClose = false
|
||||
this.form.MenuIds = this.getMenuAllCheckedKeys()
|
||||
console.log(this.form.MenuIds)
|
||||
addOrUpdateUserType(this.form).then(res => {
|
||||
this.btnLoading = false
|
||||
this.$refs['roleForm'].resetFields()
|
||||
|
|
|
@ -40,20 +40,25 @@
|
|||
<el-form-item v-if="type==1" label="Disable:">
|
||||
<el-switch v-model="user.Status" :active-value="0" :inactive-value="1" />
|
||||
</el-form-item>
|
||||
<el-form-item label="IsTestUser:">
|
||||
<!-- <el-form-item label="IsTestUser:">
|
||||
<el-switch v-model="user.IsTestUser" />
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="User Type: " prop="UserTypeId">
|
||||
<el-select ref="userType" v-model="user.UserTypeId" size="small" placeholder="Please select" style="width:100%;" :disabled="user.CanEditUserType === false">
|
||||
<el-option
|
||||
v-for="(userType,key) of userTypeOptions"
|
||||
v-if="userType.UserTypeEnum !== 20"
|
||||
:key="key"
|
||||
:label="userType.UserType"
|
||||
:value="userType.Id"
|
||||
/>
|
||||
<template v-for="(userType,key) of userTypeOptions">
|
||||
<el-option
|
||||
v-if="userType.UserTypeEnum !== 20"
|
||||
:key="key"
|
||||
:label="userType.UserType"
|
||||
:value="userType.Id"
|
||||
/>
|
||||
</template>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="Check Code: " prop="verifyCode">
|
||||
<el-input v-model="user.checkCode" />
|
||||
<span style="color:red">请输入,校验码用于用户首次登录、重置密码时的校验</span>
|
||||
</el-form-item>
|
||||
</el-card>
|
||||
|
||||
<el-card class="Affiliation" shadow="never" style="margin-top:10px;" size="small">
|
||||
|
@ -121,7 +126,8 @@ export default {
|
|||
OrganizationName: '',
|
||||
DepartmentName: '',
|
||||
PositionName: '',
|
||||
IsTestUser: false
|
||||
IsTestUser: false,
|
||||
verifyCode:''
|
||||
},
|
||||
userFormRules: {
|
||||
UserName: [
|
||||
|
@ -233,7 +239,7 @@ export default {
|
|||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
/deep/ .is-error.my_new_pwd{
|
||||
::v-deep .is-error.my_new_pwd{
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -10,10 +10,11 @@
|
|||
@search="handleSearch"
|
||||
@reset="handleReset"
|
||||
/>
|
||||
<!--style="margin-left:auto;height: 28px;position: absolute;bottom: 0;right: 10px"-->
|
||||
<el-button
|
||||
type="primary"
|
||||
size="mini"
|
||||
style="margin-left:auto;height: 28px;position: absolute;bottom: 0;right: 10px"
|
||||
style="margin-left:auto;height: 28px;"
|
||||
@click="handleAddUser"
|
||||
>New</el-button>
|
||||
</div>
|
||||
|
|
|
@ -71,17 +71,17 @@ export const columns = [
|
|||
label: 'Internal Or External:',
|
||||
hidden: true,
|
||||
slot: 'isZhiZhunSlot',
|
||||
minWidth: 140,
|
||||
sortable: 'custom',
|
||||
showOverflowTooltip: true },
|
||||
{
|
||||
prop: 'IsTestUser',
|
||||
label: 'Is Test User',
|
||||
hidden: true,
|
||||
slot: 'isTestUserSlot',
|
||||
minWidth: 120,
|
||||
minWidth: 160,
|
||||
sortable: 'custom',
|
||||
showOverflowTooltip: true },
|
||||
// {
|
||||
// prop: 'IsTestUser',
|
||||
// label: 'Is Test User',
|
||||
// hidden: true,
|
||||
// slot: 'isTestUserSlot',
|
||||
// minWidth: 120,
|
||||
// sortable: 'custom',
|
||||
// showOverflowTooltip: true },
|
||||
{
|
||||
prop: 'Status',
|
||||
label: 'Status',
|
||||
|
@ -92,10 +92,10 @@ export const columns = [
|
|||
showOverflowTooltip: true },
|
||||
{ type: 'operate',
|
||||
label: 'Action',
|
||||
minWidth: 200,
|
||||
minWidth: 100,
|
||||
operates: [
|
||||
{ name: 'Edit', type: 'primary', emitKey: 'editCb' },
|
||||
{ name: 'Delete', type: 'danger', emitKey: 'deleteCb' }
|
||||
// { name: 'Delete', type: 'danger', emitKey: 'deleteCb' }
|
||||
] }
|
||||
]
|
||||
|
||||
|
@ -142,19 +142,19 @@ export const searchForm = [
|
|||
change: scope => '',
|
||||
placeholder: ''
|
||||
},
|
||||
{
|
||||
type: 'Select',
|
||||
label: 'Is Test User:',
|
||||
prop: 'IsTestUser',
|
||||
width: '100px',
|
||||
options: [
|
||||
{ label: 'Yes', value: true },
|
||||
{ label: 'No', value: false }
|
||||
],
|
||||
props: { label: 'label', value: 'value' },
|
||||
change: scope => '',
|
||||
placeholder: ''
|
||||
},
|
||||
// {
|
||||
// type: 'Select',
|
||||
// label: 'Is Test User:',
|
||||
// prop: 'IsTestUser',
|
||||
// width: '100px',
|
||||
// options: [
|
||||
// { label: 'Yes', value: true },
|
||||
// { label: 'No', value: false }
|
||||
// ],
|
||||
// props: { label: 'label', value: 'value' },
|
||||
// change: scope => '',
|
||||
// placeholder: ''
|
||||
// },
|
||||
{
|
||||
type: 'Select',
|
||||
label: 'Status:',
|
||||
|
|
|
@ -0,0 +1,243 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
:visible.sync="visible"
|
||||
:close-on-click-modal="false"
|
||||
:fullscreen="true"
|
||||
custom-class="upload-dialog"
|
||||
:before-close="beforeCloseStudyDig"
|
||||
>
|
||||
<span slot="title"
|
||||
>{{ $t("trials:inspection:button:addTrials") }}({{
|
||||
$t("trials:uploadDicomList:table:patientInfo")
|
||||
}}:T0001132,ZhangSan)</span
|
||||
>
|
||||
<div class="top">
|
||||
<el-form
|
||||
:inline="true"
|
||||
:model="submitMessage"
|
||||
class="demo-form-inline"
|
||||
:rules="rules"
|
||||
>
|
||||
<!--受试者编号-->
|
||||
<el-form-item
|
||||
:label="$t('trials:crcQuestion:table:subjectId')"
|
||||
prop="subjectId"
|
||||
>
|
||||
<el-input v-model="submitMessage.subjectId"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="search">
|
||||
<p>{{ $t("trials:inspection:message:checkAddTrials") }}</p>
|
||||
<div class="form">
|
||||
<el-form :inline="true" class="base-search-form">
|
||||
<!-- 研究方案编号 -->
|
||||
<el-form-item :label="$t('trials:trials-list:table:researchNumber')">
|
||||
<el-input v-model="searchData.SubjectInfo" style="width: 100px" />
|
||||
</el-form-item>
|
||||
<!-- 研究名称 -->
|
||||
<el-form-item :label="$t('trials:trials-list:table:researchName')">
|
||||
<el-input v-model="searchData.SubjectInfo" style="width: 100px" />
|
||||
</el-form-item>
|
||||
<!-- 申办方 -->
|
||||
<el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:trials-list:table:sponsor')"
|
||||
>
|
||||
<el-select
|
||||
v-model="searchData.VisitPlanArray"
|
||||
clearable
|
||||
multiple
|
||||
style="width: 140px"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) of sponsorList"
|
||||
:key="index"
|
||||
:label="item.VisitName"
|
||||
:value="item.VisitNum"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<!-- 查询 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-search"
|
||||
@click="handleSearch"
|
||||
>
|
||||
{{ $t("common:button:search") }}
|
||||
</el-button>
|
||||
<!-- 重置 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
{{ $t("common:button:reset") }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-button type="primary" @click="addTrials">
|
||||
{{ $t("trials:addRP:button:confirmAddPR") }}
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<!--可加入项目列表-->
|
||||
<!--:header-cell-style="{ background: '#f9f9f9' }"-->
|
||||
<el-table
|
||||
ref="addTrialsList"
|
||||
v-loading="loading"
|
||||
v-adaptive="{ bottomOffset: 60 }"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
@selection-change="handleSelectChange"
|
||||
>
|
||||
<el-table-column type="selection" align="center" width="45" />
|
||||
<!--项目类型-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:form:trialType')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--研究方案号-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:researchNumber')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--研究名称-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:researchName')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--申办方-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:sponsor')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--状态-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:status')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--创建日期-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:createDate')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination
|
||||
class="page"
|
||||
:total="total"
|
||||
:page.sync="searchData.PageIndex"
|
||||
:limit.sync="searchData.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from "@/components/Pagination";
|
||||
export default {
|
||||
name: "addTrialsList",
|
||||
components: { Pagination },
|
||||
props: {
|
||||
visible: {
|
||||
require: true,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 查询
|
||||
searchData: {},
|
||||
sponsorList: [],
|
||||
// 可加入项目列表
|
||||
total: 0,
|
||||
loading: false,
|
||||
list: [{ key: 1, IsUrgent: "123" }],
|
||||
// 提交数据
|
||||
submitMessage: {},
|
||||
rules: {
|
||||
subjectId: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:specify"),
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
// 关闭弹框
|
||||
beforeCloseStudyDig() {
|
||||
this.$emit("update:visible", false);
|
||||
},
|
||||
// 加入项目
|
||||
addTrials() {
|
||||
this.$emit("update:visible", false);
|
||||
this.$emit("handleOpenDialog", {}, "confirm");
|
||||
},
|
||||
// 获取列表
|
||||
getList() {},
|
||||
// 查询
|
||||
handleSearch() {},
|
||||
// 重置
|
||||
handleReset() {},
|
||||
// 表格选择
|
||||
handleSelectChange() {},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.top {
|
||||
padding-top: 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.search {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
p {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
&::after {
|
||||
display: block;
|
||||
content: "";
|
||||
flex: 1;
|
||||
height: 1px;
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
}
|
||||
.form {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,216 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
:visible.sync="visible"
|
||||
:close-on-click-modal="false"
|
||||
:fullscreen="true"
|
||||
custom-class="upload-dialog"
|
||||
:before-close="beforeCloseStudyDig"
|
||||
>
|
||||
<span slot="title"
|
||||
>{{ $t("trials:inspection:message:confirmVisit") }}({{
|
||||
$t("trials:trials-list:table:researchNumber")
|
||||
}}:T0001132,ZhangSan)</span
|
||||
>
|
||||
<div class="top">
|
||||
<el-form :inline="true" :model="submitMessage" class="demo-form-inline">
|
||||
<!--受试者编号-->
|
||||
<el-form-item :label="$t('trials:crcQuestion:table:subjectId')">
|
||||
<el-input v-model="submitMessage.subjectId" disabled></el-input>
|
||||
</el-form-item>
|
||||
<!--患者编号-->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
|
||||
<el-input v-model="submitMessage.subjectId" disabled></el-input>
|
||||
</el-form-item>
|
||||
<!--患者姓名-->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
|
||||
<el-input v-model="submitMessage.subjectId" disabled></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="search">
|
||||
<el-form :inline="true" class="base-search-form">
|
||||
<!-- 检查日期 -->
|
||||
<el-form-item :label="$t('trials:uploadedDicoms:table:studyDate')">
|
||||
<el-date-picker
|
||||
v-model="searchData.date"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<!-- 查询 -->
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
|
||||
{{ $t("common:button:search") }}
|
||||
</el-button>
|
||||
<!-- 重置 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
{{ $t("common:button:reset") }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="buttonBox">
|
||||
<!--确认-->
|
||||
<el-button type="primary" @click="confirm">
|
||||
{{ $t("trials:seletctedReviews:timeline:confirmation") }}
|
||||
</el-button>
|
||||
<!--确认提交-->
|
||||
<el-button type="primary" @click="confirmSubmit">
|
||||
{{ $t("trials:inspection:button:confirmAndSubmit") }}
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<!--访视列表-->
|
||||
<el-table
|
||||
ref="confirmVisitList"
|
||||
v-loading="loading"
|
||||
v-adaptive="{ bottomOffset: 60 }"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
@selection-change="handleSelectChange"
|
||||
>
|
||||
<el-table-column type="selection" align="center" width="45" />
|
||||
<!--检查描述-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:inspection:table:studyDescription')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--检查类型-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:audit:table:modality')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--序列数-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:audit:table:seriesCount')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--检查日期-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:audit:table:studyDate')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--操作-->
|
||||
<el-table-column
|
||||
:label="$t('common:action:action')"
|
||||
width="300"
|
||||
class-name="actionBox"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<!--切换访视-->
|
||||
<el-select v-model="scope.row.visit" placeholder="请选择">
|
||||
<el-option
|
||||
v-for="item in options"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
<!-- 详情 -->
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-info"
|
||||
:title="$t('trials:trials-list:action:panel')"
|
||||
@click.stop="detail(scope.row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination
|
||||
class="page"
|
||||
:total="total"
|
||||
:page.sync="searchData.PageIndex"
|
||||
:limit.sync="searchData.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from "@/components/Pagination";
|
||||
export default {
|
||||
name: "confirmVisitList",
|
||||
components: { Pagination },
|
||||
props: {
|
||||
visible: {
|
||||
require: true,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 查询
|
||||
searchData: {},
|
||||
// 可加入项目列表
|
||||
total: 0,
|
||||
loading: false,
|
||||
list: [{ key: 1, IsUrgent: "123" }],
|
||||
// 提交数据
|
||||
submitMessage: {},
|
||||
options: [],
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
// 关闭弹框
|
||||
beforeCloseStudyDig() {
|
||||
this.$emit("update:visible", false);
|
||||
},
|
||||
// 确认
|
||||
confirm() {},
|
||||
// 确认提交
|
||||
confirmSubmit() {},
|
||||
// 获取列表
|
||||
getList() {},
|
||||
// 查询
|
||||
handleSearch() {},
|
||||
// 重置
|
||||
handleReset() {},
|
||||
// 表格选择
|
||||
handleSelectChange() {},
|
||||
// 详情
|
||||
detail() {},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.top {
|
||||
padding-top: 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.search {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.actionBox {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
::v-deep .el-select {
|
||||
width: 80%;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,151 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
:visible.sync="visible"
|
||||
:close-on-click-modal="false"
|
||||
:fullscreen="true"
|
||||
custom-class="upload-dialog"
|
||||
:before-close="beforeCloseStudyDig"
|
||||
>
|
||||
<div class="top">
|
||||
<p>
|
||||
<span
|
||||
>{{
|
||||
$t("trials:uploadDicomList:table:patientInfo")
|
||||
}}(T0001132,ZhangSan)</span
|
||||
>|<span>
|
||||
{{
|
||||
$t("trials:inspection:research-trials-list:table:joinTrialsNumber")
|
||||
}}(2)</span
|
||||
>
|
||||
</p>
|
||||
<el-button type="primary" @click="addTrials">
|
||||
{{ $t("trials:inspection:button:addTrials") }}
|
||||
</el-button>
|
||||
</div>
|
||||
<!--参与项目列表-->
|
||||
<el-table
|
||||
ref="researchTrialsList"
|
||||
v-loading="loading"
|
||||
v-adaptive="{ bottomOffset: 60 }"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
>
|
||||
<!--项目编号-->
|
||||
<el-table-column
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:trialId')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--研究方案号-->
|
||||
<el-table-column
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:researchNumber')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--试验名称-->
|
||||
<el-table-column
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:experimentName')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--申办方-->
|
||||
<el-table-column
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:sponsor')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--状态-->
|
||||
<el-table-column
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:status')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--创建日期-->
|
||||
<el-table-column
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:createDate')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--最新接收时间-->
|
||||
<el-table-column :label="$t('common:action:action')" width="250">
|
||||
<template slot-scope="scope">
|
||||
<!-- 详情 -->
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-info"
|
||||
:title="$t('trials:trials-list:action:panel')"
|
||||
@click.stop="detail(scope.row)"
|
||||
/>
|
||||
<!-- 移除项目 -->
|
||||
<el-button
|
||||
circle
|
||||
icon="el-icon-delete"
|
||||
:title="$t('common:button:remove')"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination
|
||||
class="page"
|
||||
:total="total"
|
||||
:page.sync="searchData.PageIndex"
|
||||
:limit.sync="searchData.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from "@/components/Pagination";
|
||||
export default {
|
||||
name: "researchTrialsList",
|
||||
components: { Pagination },
|
||||
props: {
|
||||
visible: {
|
||||
require: true,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 查询
|
||||
searchData: {},
|
||||
// 参与项目列表
|
||||
total: 0,
|
||||
loading: false,
|
||||
list: [{ key: 1, VisitName: "123" }],
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
// 关闭弹框
|
||||
beforeCloseStudyDig() {
|
||||
this.$emit("update:visible", false);
|
||||
},
|
||||
// 加入项目
|
||||
addTrials() {
|
||||
this.$emit("update:visible", false);
|
||||
this.$emit("handleOpenDialog", {}, "add");
|
||||
},
|
||||
// 获取列表
|
||||
getList() {},
|
||||
// 详情
|
||||
detail(item) {},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.top {
|
||||
padding-top: 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
</style>
|
|
@ -0,0 +1,159 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
:visible.sync="visible"
|
||||
:close-on-click-modal="false"
|
||||
:fullscreen="true"
|
||||
custom-class="upload-dialog"
|
||||
:before-close="beforeCloseStudyDig"
|
||||
>
|
||||
<span slot="title"
|
||||
>{{ $t("trials:inspection:message:viewStudy") }}({{
|
||||
$t("trials:uploadDicomList:table:patientInfo")
|
||||
}}:T0001132,ZhangSan)</span
|
||||
>
|
||||
<div class="search">
|
||||
<el-form :inline="true" class="base-search-form">
|
||||
<!-- 检查类型 -->
|
||||
<el-form-item :label="$t('trials:audit:table:modality')">
|
||||
<el-select
|
||||
v-model="searchData.VisitPlanArray"
|
||||
clearable
|
||||
multiple
|
||||
style="width: 140px"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) of modalityList"
|
||||
:key="index"
|
||||
:label="item.VisitName"
|
||||
:value="item.VisitNum"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<!-- 查询 -->
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
|
||||
{{ $t("common:button:search") }}
|
||||
</el-button>
|
||||
<!-- 重置 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
{{ $t("common:button:reset") }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<!--检查列表-->
|
||||
<el-table
|
||||
ref="viewStudyList"
|
||||
v-loading="loading"
|
||||
v-adaptive="{ bottomOffset: 60 }"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
>
|
||||
<!--检查描述-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:inspection:table:studyDescription')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--检查类型-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:audit:table:modality')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--序列数-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:audit:table:seriesCount')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--检查日期-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:audit:table:studyDate')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--操作-->
|
||||
<el-table-column :label="$t('common:action:action')" width="250">
|
||||
<template slot-scope="scope">
|
||||
<!-- 影像 -->
|
||||
<el-button type="text" @click.stop="image(scope.row)">{{
|
||||
$t("trials:inspection:button:image")
|
||||
}}</el-button>
|
||||
<!-- 报告 -->
|
||||
<el-button type="text" @click.stop="report(scope.row)">{{
|
||||
$t("trials:inspection:button:report")
|
||||
}}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination
|
||||
class="page"
|
||||
:total="total"
|
||||
:page.sync="searchData.PageIndex"
|
||||
:limit.sync="searchData.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from "@/components/Pagination";
|
||||
export default {
|
||||
name: "viewStudyList",
|
||||
components: { Pagination },
|
||||
props: {
|
||||
visible: {
|
||||
require: true,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 查询
|
||||
searchData: {},
|
||||
modalityList: [],
|
||||
// 可加入项目列表
|
||||
total: 0,
|
||||
loading: false,
|
||||
list: [{ key: 1, IsUrgent: "123" }],
|
||||
// 提交数据
|
||||
submitMessage: {},
|
||||
options: [],
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
// 关闭弹框
|
||||
beforeCloseStudyDig() {
|
||||
this.$emit("update:visible", false);
|
||||
},
|
||||
// 获取列表
|
||||
getList() {},
|
||||
// 查询
|
||||
handleSearch() {},
|
||||
// 重置
|
||||
handleReset() {},
|
||||
// 查看影像
|
||||
image() {},
|
||||
// 查看报告
|
||||
report() {},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
|
@ -0,0 +1,255 @@
|
|||
<template>
|
||||
<BaseContainer>
|
||||
<!-- 搜索框 -->
|
||||
<template slot="search-container">
|
||||
<el-form :inline="true" class="base-search-form">
|
||||
<!-- 患者ID/患者姓名 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
|
||||
<el-input v-model="searchData.SubjectInfo" style="width: 100px" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
|
||||
<el-input v-model="searchData.SubjectInfo" style="width: 100px" />
|
||||
</el-form-item>
|
||||
<!-- DICOM AE -->
|
||||
<el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:inspection:table:DICOMAE')"
|
||||
>
|
||||
<el-select
|
||||
v-model="searchData.VisitPlanArray"
|
||||
clearable
|
||||
multiple
|
||||
style="width: 140px"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) of dicomAeList"
|
||||
:key="index"
|
||||
:label="item.VisitName"
|
||||
:value="item.VisitNum"
|
||||
>
|
||||
<span style="float: left">{{ item.VisitName }}</span>
|
||||
</el-option>
|
||||
<el-option key="Other" label="Out of Plan" value="1.11" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 研究名称 -->
|
||||
<el-form-item :label="$t('trials:trials-list:table:researchName')">
|
||||
<el-input v-model="searchData.SubjectInfo" style="width: 100px" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<!-- 查询 -->
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
|
||||
{{ $t("common:button:search") }}
|
||||
</el-button>
|
||||
<!-- 重置 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
{{ $t("common:button:reset") }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<!-- 检查列表 -->
|
||||
<template slot="main-container">
|
||||
<el-table
|
||||
ref="inspectionList"
|
||||
v-loading="loading"
|
||||
v-adaptive="{ bottomOffset: 60 }"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
@sort-change="handleSortByColumn"
|
||||
@selection-change="handleSelectionChange"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
align="left"
|
||||
width="45"
|
||||
:selectable="handleSelectTable"
|
||||
/>
|
||||
<!--患者ID-->
|
||||
<el-table-column
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:uploadDicomList:table:pId')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--患者姓名-->
|
||||
<el-table-column
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:uploadDicomList:table:patientName')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--出生日期-->
|
||||
<el-table-column
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:inspection:table:birthdate')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--性别-->
|
||||
<el-table-column
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-myinfo:form:gender')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--DICOM AE-->
|
||||
<el-table-column
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:inspection:table:DICOMAE')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!-- 研究名称 -->
|
||||
<el-table-column
|
||||
prop="VisitNum"
|
||||
:label="$t('trials:trials-list:table:researchName')"
|
||||
show-overflow-tooltip
|
||||
min-width="160"
|
||||
sortable="custom"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
@click="handleOpenDialog(scope.row, 'research')"
|
||||
>
|
||||
<span>{{ scope.row.VisitName }}</span>
|
||||
</el-button>
|
||||
<!-- <span v-else>{{ scope.row.VisitName }}</span> -->
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 检查数 -->
|
||||
<el-table-column
|
||||
prop="VisitNum"
|
||||
:label="$t('trials:studyList:table:count')"
|
||||
show-overflow-tooltip
|
||||
min-width="160"
|
||||
sortable="custom"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="scope.row.key === 1"
|
||||
type="text"
|
||||
@click="handleOpenDialog(scope.row, 'study')"
|
||||
>
|
||||
<span>{{ scope.row.VisitName }}</span>
|
||||
</el-button>
|
||||
<span v-else>{{ scope.row.VisitName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!--访视数-->
|
||||
<el-table-column
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:selftConsistencyAnalysis:table:visitNum')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--最新接收时间-->
|
||||
<el-table-column
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:inspection:table:latestReceiveTime')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--操作-->
|
||||
<el-table-column :label="$t('common:action:action')" width="250">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
@click.stop="handleOpenDialog(scope.row, 'add')"
|
||||
>{{ $t("trials:inspection:button:addTrials") }}</el-button
|
||||
>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination
|
||||
class="page"
|
||||
:total="total"
|
||||
:page.sync="searchData.PageIndex"
|
||||
:limit.sync="searchData.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<!--研究项目列表-->
|
||||
<researchTrialsList
|
||||
:visible.sync="researchTrialsVisible"
|
||||
@handleOpenDialog="handleOpenDialog"
|
||||
/>
|
||||
<!--可加入项目列表-->
|
||||
<addTrialsList
|
||||
:visible.sync="addTrialsVisible"
|
||||
@handleOpenDialog="handleOpenDialog"
|
||||
/>
|
||||
<!--确认访视列表-->
|
||||
<confirmVisitList :visible.sync="confirmTrialsVisible" />
|
||||
<!--查看检查列表-->
|
||||
<viewStudyList :visible.sync="studyTrialsVisible" />
|
||||
</BaseContainer>
|
||||
</template>
|
||||
<script>
|
||||
import BaseContainer from "@/components/BaseContainer";
|
||||
import Pagination from "@/components/Pagination";
|
||||
import researchTrialsList from "./components/research-trials-list";
|
||||
import addTrialsList from "./components/add-trials-list";
|
||||
import confirmVisitList from "./components/confirm-visit-list";
|
||||
import viewStudyList from "./components/view-study-list";
|
||||
export default {
|
||||
name: "inspection",
|
||||
components: {
|
||||
BaseContainer,
|
||||
Pagination,
|
||||
researchTrialsList,
|
||||
addTrialsList,
|
||||
confirmVisitList,
|
||||
viewStudyList,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 查询
|
||||
searchData: {},
|
||||
dicomAeList: [],
|
||||
// 检查列表
|
||||
total: 0,
|
||||
loading: false,
|
||||
list: [{ key: 1, VisitName: "123" }],
|
||||
// 研究项目列表
|
||||
researchTrialsVisible: false,
|
||||
// 可加入项目列表
|
||||
addTrialsVisible: false,
|
||||
// 确认访视列表
|
||||
confirmTrialsVisible: false,
|
||||
// 查看检查列表
|
||||
studyTrialsVisible: false,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
// 获取列表数据
|
||||
getList() {},
|
||||
// 查询
|
||||
handleSearch() {},
|
||||
// 重置
|
||||
handleReset() {},
|
||||
// 表格选择
|
||||
handleSelectionChange() {},
|
||||
// 表格单行选择
|
||||
handleSelectTable() {},
|
||||
// 表格排序
|
||||
handleSortByColumn() {},
|
||||
// 打开弹框
|
||||
handleOpenDialog(item, key) {
|
||||
this[`${key}TrialsVisible`] = true;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
</style>
|
|
@ -19,10 +19,15 @@
|
|||
size="mini"
|
||||
@select="handleSelect"
|
||||
>
|
||||
<el-menu-item v-if="!hasPermi(['role:air', 'role:rpm', 'role:radmin', 'role:rcrc', 'role:rir'])" index="1">
|
||||
<i class="el-icon-odometer" />
|
||||
<!-- <el-menu-item v-if="!hasPermi(['role:air', 'role:rpm', 'role:radmin', 'role:rcrc', 'role:rir'])" index="1">
|
||||
<i class="el-icon-odometer" /> -->
|
||||
<!-- 工作台 -->
|
||||
<span slot="title">{{ $t('trials:menuTitle:workbench') }}</span>
|
||||
<!-- <span slot="title">{{ $t('trials:menuTitle:workbench') }}</span>
|
||||
</el-menu-item> -->
|
||||
<el-menu-item v-if="hasPermi(['role:pm', 'role:crc'])" index="1">
|
||||
<i class="el-icon-odometer" />
|
||||
<!-- 检查 -->
|
||||
<span slot="title">{{ $t('trials:menuTitle:inspection') }}</span>
|
||||
</el-menu-item>
|
||||
<el-menu-item v-if="!hasPermi(['role:zys'])" index="2" :disabled="TotalNeedSignSystemDocCount !== 0">
|
||||
<i class="el-icon-box" />
|
||||
|
@ -78,15 +83,13 @@ export default {
|
|||
}
|
||||
},
|
||||
created() {
|
||||
console.log(!this.hasPermi(['role:air']))
|
||||
this.isReviewer = JSON.parse(zzSessionStorage.getItem('IsReviewer'))
|
||||
this.changeRoute(this.$route)
|
||||
console.log(this.TotalNeedSignSystemDocCount)
|
||||
},
|
||||
methods: {
|
||||
...mapMutations({ setLanguage: 'lang/setLanguage' }),
|
||||
changeRoute(v) {
|
||||
if (v.path === '/trials/trials-workbench') {
|
||||
if (v.path === '/trials/trials-inspection') {
|
||||
this.activeIndex = '1'
|
||||
}
|
||||
if (v.path === '/trials/trials-list' || ~v.path.indexOf('/trials/trials-panel')) {
|
||||
|
@ -108,7 +111,7 @@ export default {
|
|||
this.logout()
|
||||
break
|
||||
case '1':
|
||||
this.go('/trials/trials-workbench')
|
||||
this.go('/trials/trials-inspection')
|
||||
break
|
||||
case '2':
|
||||
if (~this.$route.path.indexOf('/trials/trials-panel')) {
|
||||
|
|
|
@ -11,109 +11,81 @@
|
|||
:inline="true"
|
||||
>
|
||||
<el-row>
|
||||
<!-- 项目编号 -->
|
||||
<el-form-item v-if="trialForm.Id!== ''" :label="$t('trials:trials-list:form:trialId')">
|
||||
<!-- 项目码 -->
|
||||
<el-form-item
|
||||
v-if="trialForm.Id !== ''"
|
||||
:label="$t('trials:trials-list:form:trialCode')"
|
||||
>
|
||||
<el-input v-model="trialForm.TrialCode" disabled />
|
||||
</el-form-item>
|
||||
<!-- 项目类型 -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:trialType')" prop="TrialType">
|
||||
<el-radio-group v-model="trialForm.TrialType " :disabled="trialForm.Id!== ''">
|
||||
<el-radio v-for="item of $d.TrialType" :disabled="isTestUser && (item.value === 1 || item.value === 2)" :key="item.id" :label="item.value">{{ item.label }}</el-radio>
|
||||
<el-form-item
|
||||
:label="$t('trials:trials-list:form:trialType')"
|
||||
prop="TrialType"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="trialForm.TrialType"
|
||||
:disabled="trialForm.Id !== ''"
|
||||
>
|
||||
<el-radio
|
||||
v-for="item of $d.TrialType"
|
||||
:key="item.id"
|
||||
:label="item.value"
|
||||
>{{ item.label }}</el-radio
|
||||
>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<!-- 试验名称 -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:experimentName')" prop="ExperimentName">
|
||||
<el-input v-model="trialForm.ExperimentName" type="textarea" :autosize="{ minRows: 1, maxRows: 4}" />
|
||||
<!-- 研究名称 -->
|
||||
<el-form-item
|
||||
:label="$t('trials:trials-list:table:researchName')"
|
||||
prop="ExperimentName"
|
||||
>
|
||||
<el-input
|
||||
v-model="trialForm.ExperimentName"
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 1, maxRows: 4 }"
|
||||
/>
|
||||
</el-form-item>
|
||||
<!-- 研究方案号 -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:researchNumber')" prop="ResearchProgramNo">
|
||||
<el-form-item
|
||||
:label="$t('trials:trials-list:form:researchNumber')"
|
||||
prop="ResearchProgramNo"
|
||||
>
|
||||
<el-input v-model="trialForm.ResearchProgramNo" />
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<!-- 主研单位 -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:researchUnit')" prop="MainResearchUnit">
|
||||
<el-input v-model="trialForm.MainResearchUnit" />
|
||||
</el-form-item>
|
||||
<!-- 负责人PI -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:pi')" prop="HeadPI">
|
||||
<!-- 研究者 -->
|
||||
<el-form-item
|
||||
:label="$t('trials:trials-list:form:investigator')"
|
||||
prop="HeadPI"
|
||||
>
|
||||
<el-input v-model="trialForm.HeadPI" />
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<!-- 申办方 -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:sponsor')">
|
||||
<el-select v-model="trialForm.SponsorId">
|
||||
<el-option
|
||||
v-for="(item) in sponsorList"
|
||||
:key="item.Id"
|
||||
:label="item.SponsorName"
|
||||
:value="item.Id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- CRO -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:cro')">
|
||||
<el-select v-model="trialForm.CROId">
|
||||
<el-option
|
||||
v-for="(item) of croList"
|
||||
:key="item.Id"
|
||||
:label="item.CROName"
|
||||
:value="item.Id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<!-- 是否申报项目 -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:isDeclaration')" prop="IsDeclaration">
|
||||
<el-radio-group
|
||||
v-model="trialForm.IsDeclaration"
|
||||
>
|
||||
<el-radio
|
||||
v-for="item of $d.YesOrNo"
|
||||
:key="`IsDeclaration${item.value}`"
|
||||
:label="item.value"
|
||||
>
|
||||
{{ item.label }}
|
||||
</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
|
||||
<!-- DeclarationType -->
|
||||
<el-form-item
|
||||
v-if="trialForm.IsDeclaration"
|
||||
:label="$t('trials:trials-list:form:declarationType')"
|
||||
prop="DeclarationTypeEnumList"
|
||||
:rules="[
|
||||
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
|
||||
]"
|
||||
:label="$t('trials:trials-list:form:sponsor')"
|
||||
prop="SponsorName"
|
||||
>
|
||||
<el-select
|
||||
v-model="trialForm.DeclarationTypeEnumList"
|
||||
size="small"
|
||||
multiple
|
||||
clearable
|
||||
@change="handleDeclarationTypeChange"
|
||||
style="width: 100%"
|
||||
>
|
||||
<el-option v-for="item of $d.DeclarationType" :key="item.value" :value="item.value" :label="item.label" />
|
||||
</el-select>
|
||||
<el-input v-model="trialForm.SponsorName" maxlength="200" />
|
||||
</el-form-item>
|
||||
|
||||
</el-row>
|
||||
<el-row>
|
||||
<!-- Phase -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:phase')" prop="PhaseId">
|
||||
<!-- CRO -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:cro')" prop="croName">
|
||||
<el-input v-model="trialForm.croName" maxlength="200" />
|
||||
</el-form-item>
|
||||
<!-- 药物/器械名称 -->
|
||||
<el-form-item :label="$t('trials:trials-list:message:D/Dname')">
|
||||
<el-input v-model="trialForm.croName" />
|
||||
</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-option
|
||||
v-for="item in phase"
|
||||
:key="item.Id"
|
||||
:label="item.Value"
|
||||
:value="item.Id"
|
||||
/> -->
|
||||
<el-option
|
||||
v-for="item of $d.Trial_Phase"
|
||||
:key="item.id"
|
||||
|
@ -122,66 +94,15 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row>
|
||||
|
||||
<!-- 适应症类型 IndicationType -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:indicationType')" prop="IndicationTypeId">
|
||||
<el-select v-model="trialForm.IndicationTypeId" @change="handleIndicationTypeChange">
|
||||
<!-- <el-option
|
||||
v-for="item of dictionaryList.IndicationType"
|
||||
:key="item.Id"
|
||||
:label="item.Value"
|
||||
:value="item.Id"
|
||||
/> -->
|
||||
<el-option
|
||||
v-for="item of $d.IndicationType"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- Indication -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:indication')" prop="IndicationEnum">
|
||||
<!-- <el-input v-model="trialForm.Indication" />-->
|
||||
<el-select :disabled="!trialForm.IndicationTypeId" v-if="![37, 38, 39].includes(trialForm.IndicationEnum)" v-model="trialForm.IndicationEnum">
|
||||
<el-option
|
||||
v-for="item of $d.Indication"
|
||||
v-show="indicationGrouping === item.raw.ChildGroup"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
<el-row v-if="[37, 38, 39].includes(trialForm.IndicationEnum)">
|
||||
<el-col :span="12">
|
||||
<el-select :disabled="!trialForm.IndicationTypeId" v-model="trialForm.IndicationEnum" style="width: 100%;margin-right: 10px;">
|
||||
<el-option
|
||||
v-for="item of $d.Indication"
|
||||
v-show="indicationGrouping === item.raw.ChildGroup"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-input :disabled="!trialForm.IndicationTypeId" v-model="trialForm.Indication" />
|
||||
</el-col>
|
||||
</el-row>
|
||||
<!-- 适应症 -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:indication')">
|
||||
<el-input v-model="trialForm.IndicationTypeId" />
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<!-- Modality -->
|
||||
<!-- 检查技术 -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:modality')">
|
||||
<el-select v-model="trialForm.ModalityIds" multiple>
|
||||
<!-- <el-option
|
||||
v-for="item of dictionaryList.Modality"
|
||||
:key="item.Id"
|
||||
:label="item.Value"
|
||||
:value="item.Id"
|
||||
/> -->
|
||||
<el-option
|
||||
v-for="item of $d.Modality"
|
||||
:key="item.id"
|
||||
|
@ -190,205 +111,284 @@
|
|||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- Sites -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:siteCount')">
|
||||
<el-input-number v-model="trialForm.PlanSiteCount" controls-position="right" :min="0" />
|
||||
<!-- 阅片标准 -->
|
||||
<el-form-item
|
||||
:label="$t('trials:trials-list:form:criterion')"
|
||||
prop="CriterionId"
|
||||
>
|
||||
<el-select v-model="trialForm.CriterionId">
|
||||
<el-option
|
||||
v-for="item of $d.CriterionType"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.id"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
</el-row>
|
||||
<el-row>
|
||||
<!-- Expected Patients Num -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:patientsNum')">
|
||||
<el-input-number
|
||||
v-model="trialForm.ExpectedPatients"
|
||||
controls-position="right"
|
||||
:min="0"
|
||||
@change="handleExpectedPatientsChange"
|
||||
<!-- 联系人 -->
|
||||
<el-form-item :label="$t('trials:researchForm:form:contactor')">
|
||||
<el-input v-model="trialForm.IndicationTypeId" />
|
||||
</el-form-item>
|
||||
<!-- 电话 -->
|
||||
<el-form-item :label="$t('trials:trials-myinfo:form:phone')">
|
||||
<el-input v-model="trialForm.phone" type="number" />
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<!-- 授权时长 -->
|
||||
<el-form-item
|
||||
:label="$t('trials:trials-list:table:durationAuthorized')"
|
||||
prop="durationAuthorized"
|
||||
>
|
||||
<el-input v-model="trialForm.durationAuthorized" type="number" /> 年
|
||||
</el-form-item>
|
||||
<!-- 授权访视量 -->
|
||||
<el-form-item
|
||||
:label="$t('trials:trials-list:table:visitNumberAuthorized')"
|
||||
prop="visitNumberAuthorized"
|
||||
>
|
||||
<el-input
|
||||
v-model="trialForm.visitNumberAuthorized"
|
||||
type="number"
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<!--项目授权码-->
|
||||
<el-form-item :label="$t('trials:trials-list:form:authorizationCode')">
|
||||
<el-input v-model="trialForm.authorizationCode" />
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<!-- Timepoints Per Patient -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:timePointsPerPatient')">
|
||||
<!-- <el-form-item :label="$t('trials:trials-list:form:timePointsPerPatient')">
|
||||
<el-input-number
|
||||
v-model="trialForm.TimePointsPerPatient"
|
||||
controls-position="right"
|
||||
:min="0"
|
||||
@change="handleTpPerPatientChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<!-- Visits -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:visitCount')">
|
||||
<el-input-number v-model="trialForm.PlanVisitCount" controls-position="right" :min="0" />
|
||||
</el-form-item>
|
||||
|
||||
</el-row>
|
||||
<el-row>
|
||||
|
||||
<!-- Expedited -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:expedited')" prop="Expedited">
|
||||
<el-select v-model="trialForm.Expedited">
|
||||
<el-option
|
||||
v-for="item in expeditedOption"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- Turnaround Time -->
|
||||
<el-form-item :label="$t('trials:trials-list:form:projectCycle')" prop="ProjectCycle">
|
||||
<el-input v-model="trialForm.ProjectCycle" />
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
<el-row>
|
||||
|
||||
<!-- Total Reviewers -->
|
||||
<!-- <el-form-item :label="$t('trials:trials-list:form:totalReviewers')">
|
||||
<el-input-number v-model="trialForm.TotalReviewers" controls-position="right" :min="0" />
|
||||
</el-form-item> -->
|
||||
<!-- Type of Reviewers -->
|
||||
<!-- <el-form-item :label="$t('trials:trials-list:form:typeofReviewers')">
|
||||
<el-select
|
||||
v-model="trialForm.AttendedReviewerTypeEnumList"
|
||||
size="small"
|
||||
multiple
|
||||
clearable
|
||||
>
|
||||
<el-option v-for="item of $d.AttendedReviewerType" :key="item.value" :value="item.value" :label="item.label" />
|
||||
</el-select>
|
||||
</el-form-item> -->
|
||||
</el-row>
|
||||
<el-row style="margin-left:190px">
|
||||
<el-row> </el-row>
|
||||
<el-row> </el-row>
|
||||
<el-row style="margin-left: 190px">
|
||||
<el-form-item label="">
|
||||
<el-button type="primary" :disabled="btnLoading" @click="handleCancel">
|
||||
{{ $t('trials:trials-list:form:cancel') }}
|
||||
{{ $t("trials:trials-list:form:cancel") }}
|
||||
</el-button>
|
||||
<el-button type="primary" :loading="btnLoading" @click="handleSave">
|
||||
{{ $t('trials:trials-list:form:save') }}
|
||||
{{ $t("trials:trials-list:form:save") }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</template>
|
||||
<script>
|
||||
import store from '@/store'
|
||||
import { mapGetters, mapState } from 'vuex'
|
||||
import { getTrialInfo, addOrUpdateTrial } from '@/api/trials'
|
||||
import { getBasicDataSelects } from '@/api/dictionary/dictionary'
|
||||
import store from "@/store";
|
||||
import { mapGetters, mapState } from "vuex";
|
||||
import { getTrialInfo, addOrUpdateTrial } from "@/api/trials";
|
||||
import { getBasicDataSelects } from "@/api/dictionary/dictionary";
|
||||
export default {
|
||||
name: 'TrialForm',
|
||||
name: "TrialForm",
|
||||
props: {
|
||||
trialId: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
default: "",
|
||||
},
|
||||
},
|
||||
data() {
|
||||
const comfirmIndication = (rule, value, callback) => {
|
||||
if ([37, 38, 39].includes(value)) {
|
||||
if (!this.trialForm.Indication) {
|
||||
return callback(new Error(this.$t('common:ruleMessage:specify')))
|
||||
}
|
||||
}
|
||||
callback()
|
||||
}
|
||||
// const comfirmDeclarationType = (rule, value, callback) => {
|
||||
// console.log(value)
|
||||
// if (value.includes(-1)) {
|
||||
// if (!this.trialForm.DeclarationTypeOther) {
|
||||
// return callback(new Error(this.$t('common:ruleMessage:specify')))
|
||||
// }
|
||||
// }
|
||||
// callback()
|
||||
// }
|
||||
// const comfirmAttendedReviewerType = (rule, value, callback) => {
|
||||
// if (value.includes(2)) {
|
||||
// if (!this.trialForm.AttendedReviewerTypeOther) {
|
||||
// return callback(new Error(this.$t('common:ruleMessage:specify')))
|
||||
// }
|
||||
// }
|
||||
// callback()
|
||||
// }
|
||||
return {
|
||||
trialForm: {
|
||||
Id: '',
|
||||
TrialCode: '',
|
||||
visitNumberAuthorized: 1000,
|
||||
Id: "",
|
||||
TrialCode: "",
|
||||
TrialType: null,
|
||||
SponsorId: '',
|
||||
// CriterionIds: [],
|
||||
CROId: '',
|
||||
ReviewModeId: '',
|
||||
SponsorId: "",
|
||||
CROId: "",
|
||||
ReviewModeId: "",
|
||||
ReviewTypeIds: [],
|
||||
|
||||
// 默认值0
|
||||
Expedited: '',
|
||||
Expedited: "",
|
||||
|
||||
ModalityIds: [],
|
||||
Note: '',
|
||||
ExpectedPatients: '',
|
||||
TimePointsPerPatient: '',
|
||||
ProjectCycle: '',
|
||||
// TotalReviewers: 0,
|
||||
DeclarationTypeId: '',
|
||||
IndicationTypeId: '',
|
||||
PhaseId: '',
|
||||
AttendedReviewerType: '',
|
||||
Note: "",
|
||||
ExpectedPatients: "",
|
||||
TimePointsPerPatient: "",
|
||||
ProjectCycle: "",
|
||||
DeclarationTypeId: "",
|
||||
IndicationTypeId: "",
|
||||
PhaseId: "",
|
||||
AttendedReviewerType: "",
|
||||
IsLocked: false,
|
||||
ResearchProgramNo: '',
|
||||
ExperimentName: '',
|
||||
MainResearchUnit: '',
|
||||
HeadPI: '',
|
||||
ResearchProgramNo: "",
|
||||
ExperimentName: "",
|
||||
MainResearchUnit: "",
|
||||
HeadPI: "",
|
||||
PlanSiteCount: null,
|
||||
PlanVisitCount: null,
|
||||
IndicationEnum: null,
|
||||
Indication: null,
|
||||
AttendedReviewerTypeEnumList: [],
|
||||
DeclarationTypeEnumList: [],
|
||||
DeclarationTypeOther: null,
|
||||
AttendedReviewerTypeOther: null,
|
||||
IsDeclaration: null
|
||||
IsDeclaration: null,
|
||||
},
|
||||
indicationGrouping: null,
|
||||
trialFormRules: {
|
||||
// 授权时长
|
||||
durationAuthorized: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t(
|
||||
"trials:trials-list:formRule:enterDurationAuthorized"
|
||||
),
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
// 授权访视量
|
||||
visitNumberAuthorized: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t(
|
||||
"trials:trials-list:formRule:enterDurationAuthorized"
|
||||
),
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
// 阅片标准
|
||||
CriterionId: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:specify"),
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
// 药物/器械名称
|
||||
croName: [
|
||||
{
|
||||
max: 200,
|
||||
message: `${this.$t("common:ruleMessage:maxLength")} 200`,
|
||||
trigger: "blur",
|
||||
},
|
||||
{
|
||||
pattern: "^[\u4e00-\u9fa5a-zA-Z]+$",
|
||||
message: this.$t("trisals:trials-list:formRule:onlyEN"),
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
// 申办方
|
||||
SponsorName: [
|
||||
{
|
||||
max: 200,
|
||||
message: `${this.$t("common:ruleMessage:maxLength")} 200`,
|
||||
trigger: "blur",
|
||||
},
|
||||
{
|
||||
pattern: "^[\u4e00-\u9fa5a-zA-Z]+$",
|
||||
message: this.$t("trisals:trials-list:formRule:onlyEN"),
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
Code: [
|
||||
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
|
||||
{ max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` }
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:specify"),
|
||||
trigger: "blur",
|
||||
},
|
||||
{ max: 50, message: `${this.$t("common:ruleMessage:maxLength")} 50` },
|
||||
],
|
||||
TrialType: [
|
||||
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' }
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:specify"),
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
ResearchProgramNo: [
|
||||
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
|
||||
{ max: 100, message: `${this.$t('common:ruleMessage:maxLength')} 100` }
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:specify"),
|
||||
trigger: "blur",
|
||||
},
|
||||
{
|
||||
max: 100,
|
||||
message: `${this.$t("common:ruleMessage:maxLength")} 100`,
|
||||
},
|
||||
],
|
||||
ExperimentName: [
|
||||
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
|
||||
{ max: 100, message: `${this.$t('common:ruleMessage:maxLength')} 100` }
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:specify"),
|
||||
trigger: "blur",
|
||||
},
|
||||
{
|
||||
max: 100,
|
||||
message: `${this.$t("common:ruleMessage:maxLength")} 100`,
|
||||
},
|
||||
],
|
||||
IndicationEnum: [
|
||||
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
|
||||
{ validator: comfirmIndication, trigger: 'blur' }
|
||||
ProjectCycle: [
|
||||
{ max: 50, message: `${this.$t("common:ruleMessage:maxLength")} 50` },
|
||||
],
|
||||
ProjectCycle: [{ max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` }],
|
||||
ReviewModeId: [
|
||||
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:select"),
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
],
|
||||
Expedited: [
|
||||
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:select"),
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
],
|
||||
Note: [
|
||||
{
|
||||
max: 500,
|
||||
message: `${this.$t("common:ruleMessage:maxLength")} 500`,
|
||||
},
|
||||
],
|
||||
Note: [{ max: 500, message: `${this.$t('common:ruleMessage:maxLength')} 500` }],
|
||||
ModalityIds: [
|
||||
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:select"),
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
],
|
||||
PhaseId: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:select"),
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
],
|
||||
IndicationTypeId: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:select"),
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
],
|
||||
PhaseId: [{ required: true, message: this.$t('common:ruleMessage:select'), 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'] }
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:select"),
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
],
|
||||
ReviewTypeIds: [
|
||||
{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }
|
||||
]
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:select"),
|
||||
trigger: ["blur", "change"],
|
||||
},
|
||||
],
|
||||
},
|
||||
btnLoading: false,
|
||||
isLock: false,
|
||||
|
@ -397,132 +397,161 @@ export default {
|
|||
declarationNum: null,
|
||||
indicationNum: null,
|
||||
phaseNum: null,
|
||||
dictionaryList: {}
|
||||
}
|
||||
dictionaryList: {},
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['sponsorList', 'croList']),
|
||||
...mapState('user', ['isTestUser'])
|
||||
...mapGetters(["sponsorList", "croList"]),
|
||||
...mapState("user", ["isTestUser"]),
|
||||
},
|
||||
mounted() {
|
||||
this.initPage()
|
||||
this.initPage();
|
||||
},
|
||||
methods: {
|
||||
initForm() {
|
||||
this.loading = true
|
||||
getTrialInfo(this.trialId).then(res => {
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
for (var item in this.trialForm) {
|
||||
res.Result[item] === '00000000-0000-0000-0000-000000000000' ? '' : this.$set(this.trialForm, item, res.Result[item])
|
||||
if (item === 'IndicationTypeId') {
|
||||
this.indicationGrouping = this.$d.IndicationType.filter(v => v.id === res.Result[item])[0].raw.ChildGroup
|
||||
this.loading = true;
|
||||
getTrialInfo(this.trialId)
|
||||
.then((res) => {
|
||||
this.loading = false;
|
||||
if (res.IsSuccess) {
|
||||
for (var item in this.trialForm) {
|
||||
res.Result[item] === "00000000-0000-0000-0000-000000000000"
|
||||
? ""
|
||||
: this.$set(this.trialForm, item, res.Result[item]);
|
||||
if (item === "IndicationTypeId") {
|
||||
this.indicationGrouping = this.$d.IndicationType.filter(
|
||||
(v) => v.id === res.Result[item]
|
||||
)[0].raw.ChildGroup;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}).catch(() => { this.loading = false })
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
handleSave() {
|
||||
this.$refs.trialForm.validate(valid => {
|
||||
this.$refs.trialForm.validate((valid) => {
|
||||
if (valid) {
|
||||
this.btnLoading = true
|
||||
this.btnLoading = true;
|
||||
if (!this.trialForm.IsDeclaration) {
|
||||
this.declarationNum = 'N'
|
||||
this.declarationNum = "N";
|
||||
}
|
||||
if (!this.trialForm.Id) {
|
||||
this.trialForm.TrialCode = `${this.declarationNum}${this.indicationNum}${this.phaseNum}`
|
||||
console.log(this.trialForm.TrialCode)
|
||||
this.trialForm.TrialCode = `${this.declarationNum}${this.indicationNum}${this.phaseNum}`;
|
||||
console.log(this.trialForm.TrialCode);
|
||||
}
|
||||
var params = JSON.parse(JSON.stringify(this.trialForm))
|
||||
addOrUpdateTrial(params).then(res => {
|
||||
this.btnLoading = false
|
||||
if (!this.trialForm.Id) {
|
||||
this.trialForm.Id = res.Result
|
||||
this.$message.success(this.$t('trials:trials-list:message:addedSuccessfully'))
|
||||
} else {
|
||||
this.$message.success(this.$t('trials:trials-list:message:updatedSuccessfully'))
|
||||
}
|
||||
var params = JSON.parse(JSON.stringify(this.trialForm));
|
||||
addOrUpdateTrial(params)
|
||||
.then((res) => {
|
||||
this.btnLoading = false;
|
||||
if (!this.trialForm.Id) {
|
||||
this.trialForm.Id = res.Result;
|
||||
this.$message.success(
|
||||
this.$t("trials:trials-list:message:addedSuccessfully")
|
||||
);
|
||||
} else {
|
||||
this.$message.success(
|
||||
this.$t("trials:trials-list:message:updatedSuccessfully")
|
||||
);
|
||||
}
|
||||
|
||||
this.$emit('getList')
|
||||
this.$emit('closeDialog')
|
||||
}).catch(() => {
|
||||
this.btnLoading = false
|
||||
})
|
||||
this.$emit("getList");
|
||||
this.$emit("closeDialog");
|
||||
})
|
||||
.catch(() => {
|
||||
this.btnLoading = false;
|
||||
});
|
||||
}
|
||||
})
|
||||
});
|
||||
},
|
||||
handleCancel() {
|
||||
this.$emit('closeDialog')
|
||||
this.$emit("closeDialog");
|
||||
// this.$refs['trialForm'].resetFields()
|
||||
},
|
||||
handleDeclarationTypeChange(val) {
|
||||
if (val.length === 1) {
|
||||
// this.declarationNum = this.dictionaryList.DeclarationType.filter(item => item.Idd === val)[0].ShowOrder
|
||||
this.declarationNum = this.$d.DeclarationType.filter(item => item.value === val[0])[0].raw.ShowOrder
|
||||
this.declarationNum = this.$d.DeclarationType.filter(
|
||||
(item) => item.value === val[0]
|
||||
)[0].raw.ShowOrder;
|
||||
if (this.trialForm.Id) {
|
||||
const ids = [...this.trialForm.TrialCode]
|
||||
ids[2] = this.declarationNum
|
||||
this.trialForm.TrialCode = ids.join('')
|
||||
const ids = [...this.trialForm.TrialCode];
|
||||
ids[2] = this.declarationNum;
|
||||
this.trialForm.TrialCode = ids.join("");
|
||||
}
|
||||
} else {
|
||||
this.declarationNum = 'X'
|
||||
this.declarationNum = "X";
|
||||
if (this.trialForm.Id) {
|
||||
const ids = [...this.trialForm.TrialCode]
|
||||
ids[2] = this.declarationNum
|
||||
this.trialForm.TrialCode = ids.join('')
|
||||
const ids = [...this.trialForm.TrialCode];
|
||||
ids[2] = this.declarationNum;
|
||||
this.trialForm.TrialCode = ids.join("");
|
||||
}
|
||||
}
|
||||
},
|
||||
handleIndicationTypeChange(val) {
|
||||
this.indicationGrouping = null
|
||||
this.indicationGrouping = null;
|
||||
if (val) {
|
||||
// this.indicationNum = this.dictionaryList.IndicationType.filter(item => item.Id === val)[0].ShowOrder
|
||||
this.indicationNum = this.$d.IndicationType.filter(item => item.id === val)[0].raw.ShowOrder
|
||||
this.indicationNum = this.$d.IndicationType.filter(
|
||||
(item) => item.id === val
|
||||
)[0].raw.ShowOrder;
|
||||
if (this.trialForm.Id) {
|
||||
const ids = [...this.trialForm.TrialCode]
|
||||
ids[3] = this.indicationNum
|
||||
this.trialForm.TrialCode = ids.join('')
|
||||
const ids = [...this.trialForm.TrialCode];
|
||||
ids[3] = this.indicationNum;
|
||||
this.trialForm.TrialCode = ids.join("");
|
||||
}
|
||||
this.indicationGrouping = this.$d.IndicationType.filter(item => item.id === val)[0].raw.ChildGroup
|
||||
this.indicationGrouping = this.$d.IndicationType.filter(
|
||||
(item) => item.id === val
|
||||
)[0].raw.ChildGroup;
|
||||
}
|
||||
this.trialForm.Indication = null
|
||||
this.trialForm.Indication = null;
|
||||
},
|
||||
handlePhaseChange(val) {
|
||||
if (val) {
|
||||
// const phase = this.dictionaryList['Trial_Phase']
|
||||
// this.phaseNum = phase.filter(item => item.Id === val)[0].ShowOrder
|
||||
this.phaseNum = this.$d.Trial_Phase.filter(item => item.id === val)[0].raw.ShowOrder
|
||||
this.phaseNum = this.$d.Trial_Phase.filter(
|
||||
(item) => item.id === val
|
||||
)[0].raw.ShowOrder;
|
||||
if (this.trialForm.Id) {
|
||||
const ids = [...this.trialForm.TrialCode]
|
||||
ids[4] = this.phaseNum
|
||||
this.trialForm.TrialCode = ids.join('')
|
||||
const ids = [...this.trialForm.TrialCode];
|
||||
ids[4] = this.phaseNum;
|
||||
this.trialForm.TrialCode = ids.join("");
|
||||
}
|
||||
}
|
||||
},
|
||||
handleExpectedPatientsChange(val) {
|
||||
this.trialForm.PlanVisitCount = val * this.trialForm.TimePointsPerPatient
|
||||
this.trialForm.PlanVisitCount = val * this.trialForm.TimePointsPerPatient;
|
||||
},
|
||||
handleTpPerPatientChange(val) {
|
||||
this.trialForm.PlanVisitCount = val * this.trialForm.ExpectedPatients
|
||||
this.trialForm.PlanVisitCount = val * this.trialForm.ExpectedPatients;
|
||||
},
|
||||
async initPage() {
|
||||
this.loading = true
|
||||
await this.getDicData()
|
||||
await store.dispatch('global/getSponsorList')
|
||||
await store.dispatch('global/getCROList')
|
||||
this.loading = true;
|
||||
await this.getDicData();
|
||||
await store.dispatch("global/getSponsorList");
|
||||
await store.dispatch("global/getCROList");
|
||||
if (this.trialId) {
|
||||
this.trialForm.Id = this.trialId
|
||||
this.initForm()
|
||||
this.trialForm.Id = this.trialId;
|
||||
this.initForm();
|
||||
}
|
||||
this.loading = false
|
||||
this.loading = false;
|
||||
},
|
||||
getDicData() {
|
||||
getBasicDataSelects(['DeclarationType', 'IndicationType', 'Modality', 'ReviewMode', 'ReviewType', 'Trial_Phase']).then(res => {
|
||||
this.dictionaryList = { ...res.Result }
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
getBasicDataSelects([
|
||||
"DeclarationType",
|
||||
"IndicationType",
|
||||
"Modality",
|
||||
"ReviewMode",
|
||||
"ReviewType",
|
||||
"Trial_Phase",
|
||||
]).then((res) => {
|
||||
this.dictionaryList = { ...res.Result };
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style>
|
||||
.trial-Form .el-input,
|
||||
|
@ -532,7 +561,7 @@ export default {
|
|||
.trial-Form .el-textarea {
|
||||
width: 340px;
|
||||
}
|
||||
.trial-Form .el-col .el-input{
|
||||
.trial-Form .el-col .el-input {
|
||||
width: 165px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -37,37 +37,42 @@
|
|||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<!-- 查询 -->
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
|
||||
{{ $t('common:button:search') }}
|
||||
{{ $t("common:button:search") }}
|
||||
</el-button>
|
||||
<!-- 重置 -->
|
||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
||||
{{ $t('common:button:reset') }}
|
||||
</el-button>
|
||||
<!-- 添加平台用户 -->
|
||||
<el-button
|
||||
v-hasPermi="['trials:trials-panel:setting:personnel-manage:add-internal-staff']"
|
||||
type="primary"
|
||||
style="margin-left:10px"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
{{ $t("common:button:reset") }}
|
||||
</el-button>
|
||||
<!-- 添加用户 -->
|
||||
<el-button
|
||||
v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:add-internal-staff',
|
||||
]"
|
||||
type="primary"
|
||||
style="margin-left: 10px"
|
||||
icon="el-icon-plus"
|
||||
@click="handleAdd('Add')"
|
||||
>
|
||||
{{ $t('trials:staff:button:addInternalStaff') }}
|
||||
{{ $t("trials:staff:button:addStaff") }}
|
||||
</el-button>
|
||||
<!-- 添加新用户 -->
|
||||
<el-button
|
||||
<!-- <el-button
|
||||
v-hasPermi="['trials:trials-panel:setting:personnel-manage:add-external-staff']"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
@click="handleAdd('External')"
|
||||
>
|
||||
{{ $t('trials:staff:button:addExternalStaff') }}
|
||||
</el-button>
|
||||
</el-button> -->
|
||||
<!-- 导出 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
|
@ -75,7 +80,7 @@
|
|||
:disabled="list.length === 0"
|
||||
@click="handleExport"
|
||||
>
|
||||
{{ $t('common:button:export') }}
|
||||
{{ $t("common:button:export") }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
@ -84,6 +89,7 @@
|
|||
<!-- 项目参与人员列表 -->
|
||||
<el-table
|
||||
ref="settingList"
|
||||
v-adaptive="{ bottomOffset: 60 }"
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
stripe
|
||||
|
@ -147,8 +153,12 @@
|
|||
min-width="40"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.IsDeleted" type="danger">{{ $fd('IsUserExitTrial', scope.row.IsDeleted) }}</el-tag>
|
||||
<el-tag v-else>{{ $fd('IsUserExitTrial', scope.row.IsDeleted) }}</el-tag>
|
||||
<el-tag v-if="scope.row.IsDeleted" type="danger">{{
|
||||
$fd("IsUserExitTrial", scope.row.IsDeleted)
|
||||
}}</el-tag>
|
||||
<el-tag v-else>{{
|
||||
$fd("IsUserExitTrial", scope.row.IsDeleted)
|
||||
}}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 加入日期 -->
|
||||
|
@ -160,7 +170,11 @@
|
|||
width="160"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.JoinTime?moment(scope.row.JoinTime).format('YYYY-MM-DD'):'' }}
|
||||
{{
|
||||
scope.row.JoinTime
|
||||
? moment(scope.row.JoinTime).format("YYYY-MM-DD")
|
||||
: ""
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 退出日期 -->
|
||||
|
@ -172,7 +186,11 @@
|
|||
width="160"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.RemoveTime? moment(scope.row.RemoveTime).format('YYYY-MM-DD'):'' }}
|
||||
{{
|
||||
scope.row.RemoveTime
|
||||
? moment(scope.row.RemoveTime).format("YYYY-MM-DD")
|
||||
: ""
|
||||
}}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 授权时间 -->
|
||||
|
@ -203,7 +221,7 @@
|
|||
circle
|
||||
:title="$t('trials:staff:action:status')"
|
||||
icon="el-icon-edit-outline"
|
||||
:disabled="scope.row.UserTypeEnum*1===3"
|
||||
:disabled="scope.row.UserTypeEnum * 1 === 3"
|
||||
@click="handleStatus(scope.row)"
|
||||
/>
|
||||
</template>
|
||||
|
@ -211,34 +229,60 @@
|
|||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<div class="pagination" style="text-align:right">
|
||||
<pagination :total="total" :page.sync="listQuery.PageIndex" :limit.sync="listQuery.PageSize" @pagination="getList" />
|
||||
<div class="pagination" style="text-align: right">
|
||||
<pagination
|
||||
:total="total"
|
||||
:page.sync="listQuery.PageIndex"
|
||||
:limit.sync="listQuery.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- 分配参与人员模态框 -->
|
||||
<base-model v-if="staff_model.visible" :config="staff_model">
|
||||
<template slot="dialog-body">
|
||||
<StaffForm v-if="isAdd == 'Add'" @closeDialog="closeDialog" />
|
||||
<StaffExternalForm v-else @closeDialog="closeDialog" @getList="getList" />
|
||||
<StaffExternalForm
|
||||
v-else
|
||||
@closeDialog="closeDialog"
|
||||
@getList="getList"
|
||||
/>
|
||||
</template>
|
||||
</base-model>
|
||||
|
||||
<!-- 修改参与者人员状态 -->
|
||||
<base-model v-if="status_model.visible" :config="status_model">
|
||||
<template slot="dialog-body">
|
||||
<el-form ref="statusForm" :model="statusForm" label-width="110px" size="small" :rules="statusRules">
|
||||
<el-form
|
||||
ref="statusForm"
|
||||
:model="statusForm"
|
||||
label-width="110px"
|
||||
size="small"
|
||||
:rules="statusRules"
|
||||
>
|
||||
<!-- Status -->
|
||||
<el-form-item :label="$t('trials:staff:table:status')" prop="isDeleted">
|
||||
<el-radio-group v-model="statusForm.isDeleted" @change="handleIsDeletedChanged">
|
||||
<el-form-item
|
||||
:label="$t('trials:staff:table:status')"
|
||||
prop="isDeleted"
|
||||
>
|
||||
<el-radio-group
|
||||
v-model="statusForm.isDeleted"
|
||||
@change="handleIsDeletedChanged"
|
||||
>
|
||||
<el-radio
|
||||
v-for="item of $d.IsUserExitTrial"
|
||||
:key="`statusForm.isDeleted${item.value}`"
|
||||
:label="item.value"
|
||||
>{{ item.label }}</el-radio>
|
||||
>{{ item.label }}</el-radio
|
||||
>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<!-- 退出日期 -->
|
||||
<el-form-item v-if="statusForm.isDeleted" :label="$t('trials:staff:table:exitTime')" prop="removeTime">
|
||||
<el-form-item
|
||||
v-if="statusForm.isDeleted"
|
||||
:label="$t('trials:staff:table:exitTime')"
|
||||
prop="removeTime"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="statusForm.removeTime"
|
||||
type="date"
|
||||
|
@ -248,7 +292,11 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
<!-- 加入日期 -->
|
||||
<el-form-item v-else :label="$t('trials:staff:table:joinTime')" prop="joinTime">
|
||||
<el-form-item
|
||||
v-else
|
||||
:label="$t('trials:staff:table:joinTime')"
|
||||
prop="joinTime"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="statusForm.joinTime"
|
||||
type="date"
|
||||
|
@ -258,39 +306,53 @@
|
|||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
</template>
|
||||
<template slot="dialog-footer">
|
||||
<el-button :disabled="btnLoading" size="small" type="primary" @click="status_model.visible = false">
|
||||
{{ $t('common:button:cancel') }}
|
||||
<el-button
|
||||
:disabled="btnLoading"
|
||||
size="small"
|
||||
type="primary"
|
||||
@click="status_model.visible = false"
|
||||
>
|
||||
{{ $t("common:button:cancel") }}
|
||||
</el-button>
|
||||
<el-button size="small" type="primary" :loading="btnLoading" @click="saveStatus">
|
||||
{{ $t('common:button:save') }}
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
:loading="btnLoading"
|
||||
@click="saveStatus"
|
||||
>
|
||||
{{ $t("common:button:save") }}
|
||||
</el-button>
|
||||
</template>
|
||||
</base-model>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { getMaintenanceList, getTrialUserTypeList, updateTrialUser, trialUserListExport } from '@/api/trials'
|
||||
import Pagination from '@/components/Pagination'
|
||||
import StaffForm from './staffForm'
|
||||
import StaffExternalForm from './staffExternalForm'
|
||||
import BaseModel from '@/components/BaseModel'
|
||||
import moment from 'moment'
|
||||
import {
|
||||
getMaintenanceList,
|
||||
getTrialUserTypeList,
|
||||
updateTrialUser,
|
||||
trialUserListExport,
|
||||
} from "@/api/trials";
|
||||
import Pagination from "@/components/Pagination";
|
||||
import StaffForm from "./staffForm";
|
||||
import StaffExternalForm from "./staffExternalForm";
|
||||
import BaseModel from "@/components/BaseModel";
|
||||
import moment from "moment";
|
||||
const getListQueryDefault = () => {
|
||||
return {
|
||||
UserRealName: '',
|
||||
UserName: '',
|
||||
UserTypeId: '',
|
||||
OrganizationName: '',
|
||||
UserRealName: "",
|
||||
UserName: "",
|
||||
UserTypeId: "",
|
||||
OrganizationName: "",
|
||||
IsDeleted: null,
|
||||
PageIndex: 1,
|
||||
PageSize: 20
|
||||
}
|
||||
}
|
||||
PageSize: 20,
|
||||
};
|
||||
};
|
||||
export default {
|
||||
name: 'Staff',
|
||||
name: "Staff",
|
||||
components: { Pagination, StaffForm, BaseModel, StaffExternalForm },
|
||||
data() {
|
||||
return {
|
||||
|
@ -298,157 +360,190 @@ export default {
|
|||
listQuery: getListQueryDefault(),
|
||||
listLoading: false,
|
||||
total: 0,
|
||||
staff_model: { visible: false, title: this.$t('trials:staff:dialogTitle:add'), width: '1200px' },
|
||||
status_model: { visible: false, title: this.$t('trials:staff:dialogTitle:status'), width: '500px' },
|
||||
staff_model: {
|
||||
visible: false,
|
||||
title: this.$t("trials:staff:dialogTitle:add"),
|
||||
width: "1200px",
|
||||
},
|
||||
status_model: {
|
||||
visible: false,
|
||||
title: this.$t("trials:staff:dialogTitle:status"),
|
||||
width: "500px",
|
||||
},
|
||||
userTypeOptions: [],
|
||||
isAdd: 'Add',
|
||||
isAdd: "Add",
|
||||
staffStatus: null,
|
||||
btnLoading: false,
|
||||
currentRow: {},
|
||||
trialId: '',
|
||||
trialId: "",
|
||||
moment,
|
||||
statusForm: { isDeleted: false, removeTime: '', joinTime: '' },
|
||||
statusForm: { isDeleted: false, removeTime: "", joinTime: "" },
|
||||
statusRules: {
|
||||
removeTime: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }],
|
||||
joinTime: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur'] }]
|
||||
removeTime: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:select"),
|
||||
trigger: ["blur"],
|
||||
},
|
||||
],
|
||||
joinTime: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:select"),
|
||||
trigger: ["blur"],
|
||||
},
|
||||
],
|
||||
},
|
||||
pickerOption: {
|
||||
disabledDate: time => {
|
||||
return time.getTime() > Date.now()
|
||||
}
|
||||
}
|
||||
}
|
||||
disabledDate: (time) => {
|
||||
return time.getTime() > Date.now();
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
this.trialId = this.$route.query.trialId
|
||||
this.getUserType()
|
||||
this.getList()
|
||||
this.trialId = this.$route.query.trialId;
|
||||
this.getUserType();
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
// 分页获取项目参与人员列表
|
||||
getList() {
|
||||
this.listLoading = true
|
||||
this.listQuery.TrialId = this.trialId
|
||||
getMaintenanceList(this.listQuery).then(res => {
|
||||
this.listLoading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
}).catch(() => { this.listLoading = false })
|
||||
this.listLoading = true;
|
||||
this.listQuery.TrialId = this.trialId;
|
||||
getMaintenanceList(this.listQuery)
|
||||
.then((res) => {
|
||||
this.listLoading = false;
|
||||
this.list = res.Result.CurrentPageData;
|
||||
this.total = res.Result.TotalCount;
|
||||
})
|
||||
.catch(() => {
|
||||
this.listLoading = false;
|
||||
});
|
||||
},
|
||||
// 新增项目参与者
|
||||
handleAdd(type) {
|
||||
if (type === 'Add') {
|
||||
this.staff_model.title = this.$t('trials:staff:button:addInternalStaff')
|
||||
if (type === "Add") {
|
||||
this.staff_model.title = this.$t("trials:staff:button:addStaff");
|
||||
} else {
|
||||
this.staff_model.title = this.$t('trials:staff:button:addExternalStaff')
|
||||
this.staff_model.title = this.$t(
|
||||
"trials:staff:button:addExternalStaff"
|
||||
);
|
||||
}
|
||||
this.staff_model.visible = true
|
||||
this.isAdd = type
|
||||
this.staff_model.visible = true;
|
||||
this.isAdd = type;
|
||||
},
|
||||
handleStatus(row) {
|
||||
const { IsDeleted, RemoveTime, JoinTime } = { ...row }
|
||||
this.currentRow = { ...row }
|
||||
this.statusForm.isDeleted = IsDeleted
|
||||
this.statusForm.removeTime = RemoveTime
|
||||
this.statusForm.joinTime = JoinTime
|
||||
this.status_model.visible = true
|
||||
const { IsDeleted, RemoveTime, JoinTime } = { ...row };
|
||||
this.currentRow = { ...row };
|
||||
this.statusForm.isDeleted = IsDeleted;
|
||||
this.statusForm.removeTime = RemoveTime;
|
||||
this.statusForm.joinTime = JoinTime;
|
||||
this.status_model.visible = true;
|
||||
},
|
||||
// 修改参与者状态
|
||||
saveStatus() {
|
||||
this.$refs.statusForm.validate(valid => {
|
||||
if (!valid) return
|
||||
this.btnLoading = true
|
||||
this.$refs.statusForm.validate((valid) => {
|
||||
if (!valid) return;
|
||||
this.btnLoading = true;
|
||||
const param = {
|
||||
id: this.currentRow.Id,
|
||||
trialId: this.trialId,
|
||||
isDeleted: this.statusForm.isDeleted,
|
||||
removeTime: this.statusForm.removeTime,
|
||||
joinTime: this.statusForm.joinTime
|
||||
}
|
||||
joinTime: this.statusForm.joinTime,
|
||||
};
|
||||
updateTrialUser(param)
|
||||
.then(res => {
|
||||
this.btnLoading = false
|
||||
.then((res) => {
|
||||
this.btnLoading = false;
|
||||
if (res.IsSuccess) {
|
||||
this.status_model.visible = false
|
||||
this.getList()
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
this.status_model.visible = false;
|
||||
this.getList();
|
||||
this.$message.success(
|
||||
this.$t("common:message:savedSuccessfully")
|
||||
);
|
||||
}
|
||||
}).catch(() => {
|
||||
this.btnLoading = false
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.btnLoading = false;
|
||||
});
|
||||
});
|
||||
},
|
||||
handleIsDeletedChanged(val) {
|
||||
if (val) {
|
||||
this.statusForm.joinTime = ''
|
||||
this.statusForm.joinTime = "";
|
||||
} else {
|
||||
this.statusForm.removeTime = ''
|
||||
this.statusForm.removeTime = "";
|
||||
}
|
||||
},
|
||||
// 查询
|
||||
handleSearch() {
|
||||
this.listQuery.PageIndex = 1
|
||||
this.getList()
|
||||
this.listQuery.PageIndex = 1;
|
||||
this.getList();
|
||||
},
|
||||
// 重置
|
||||
handleReset() {
|
||||
this.listQuery = getListQueryDefault()
|
||||
this.getList()
|
||||
this.listQuery = getListQueryDefault();
|
||||
this.getList();
|
||||
},
|
||||
// 排序
|
||||
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();
|
||||
},
|
||||
// 关闭模态框并更新列表
|
||||
closeDialog() {
|
||||
this.staff_model.visible = false
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
this.getList()
|
||||
this.staff_model.visible = false;
|
||||
this.$message.success(this.$t("common:message:savedSuccessfully"));
|
||||
this.getList();
|
||||
},
|
||||
// 导出
|
||||
handleExport() {
|
||||
this.listLoading = true
|
||||
this.listQuery.TrialId = this.trialId
|
||||
trialUserListExport({ ...this.listQuery }).then((data) => {
|
||||
this.listLoading = false
|
||||
}).catch(() => { this.listLoading = false })
|
||||
this.listLoading = true;
|
||||
this.listQuery.TrialId = this.trialId;
|
||||
trialUserListExport({ ...this.listQuery })
|
||||
.then((data) => {
|
||||
this.listLoading = false;
|
||||
})
|
||||
.catch(() => {
|
||||
this.listLoading = false;
|
||||
});
|
||||
},
|
||||
// 获取用户类型下拉数据
|
||||
getUserType() {
|
||||
getTrialUserTypeList().then(res => {
|
||||
this.userTypeOptions = res.Result
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
getTrialUserTypeList().then((res) => {
|
||||
this.userTypeOptions = res.Result;
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.participant-list{
|
||||
.filter-box{
|
||||
.participant-list {
|
||||
.filter-box {
|
||||
display: flex;
|
||||
padding: 5px;
|
||||
.base-search-form{
|
||||
.el-form-item{
|
||||
.base-search-form {
|
||||
.el-form-item {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
}
|
||||
.mr{
|
||||
.mr {
|
||||
margin-right: 5px;
|
||||
width: 120px;
|
||||
width: 120px;
|
||||
}
|
||||
}
|
||||
.el-dialog__header{
|
||||
padding:10px;
|
||||
.el-dialog__header {
|
||||
padding: 10px;
|
||||
}
|
||||
.el-dialog__body{
|
||||
padding:10px;
|
||||
.el-dialog__body {
|
||||
padding: 10px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,51 +1,52 @@
|
|||
<template>
|
||||
<div class="personnel-container">
|
||||
<el-collapse v-model="activeNames" class="personnel-manage">
|
||||
<!-- Staff -->
|
||||
<el-collapse-item :title="$t('trials:staff:title:staff')" name="Staff">
|
||||
<!-- 人员 -->
|
||||
<Staff ref="staffList" />
|
||||
<!-- <el-collapse-item :title="$t('trials:staff:title:staff')" name="Staff">
|
||||
<Staff ref="staffList" />
|
||||
</el-collapse-item>
|
||||
</el-collapse-item> -->
|
||||
<!-- Sites -->
|
||||
<el-collapse-item :title="$t('trials:siteAndStaff:title:site')" name="Sites">
|
||||
<!-- <el-collapse-item :title="$t('trials:siteAndStaff:title:site')" name="Sites">
|
||||
<Site ref="siteList" @refreshPage="refreshPage" />
|
||||
</el-collapse-item>
|
||||
</el-collapse-item> -->
|
||||
</el-collapse>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Staff from './components/staff'
|
||||
import Site from './components/site'
|
||||
import Staff from "./components/staff";
|
||||
// import Site from "./components/site";
|
||||
export default {
|
||||
name: 'PersonnelManage',
|
||||
components: { Staff, Site },
|
||||
name: "PersonnelManage",
|
||||
components: {
|
||||
Staff, //Site
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeNames: ['Staff', 'Sites']
|
||||
}
|
||||
// activeNames: ["Staff", "Sites"],
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
refreshPage() {
|
||||
this.$refs['staffList'].handleReset()
|
||||
this.$refs['siteList'].handleReset()
|
||||
}
|
||||
}
|
||||
}
|
||||
this.$refs["staffList"].handleReset();
|
||||
// this.$refs["siteList"].handleReset();
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
.personnel-container{
|
||||
.personnel-container {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
background: #fff;
|
||||
.personnel-manage{
|
||||
.personnel-manage {
|
||||
width: 100%;
|
||||
flex: 1;
|
||||
.el-collapse-item__header{
|
||||
background:#e5ecef;
|
||||
padding-left:10px;
|
||||
.el-collapse-item__header {
|
||||
background: #e5ecef;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
|
@ -5,75 +5,23 @@
|
|||
:model="form"
|
||||
:rules="rules"
|
||||
size="small"
|
||||
label-width="200px"
|
||||
label-width="100px"
|
||||
>
|
||||
<div class="base-dialog-body">
|
||||
<!-- Site -->
|
||||
<el-form-item :label="$t('trials:subject:table:site')" prop="SiteId">
|
||||
<el-select
|
||||
v-model="form.SiteId"
|
||||
clearable
|
||||
filterable
|
||||
style="width:100%"
|
||||
:disabled="form.StudyCount>0 || isEdit"
|
||||
>
|
||||
<el-option
|
||||
v-for="item of siteOptions"
|
||||
:key="item.Id"
|
||||
:label="item.TrialSiteCode"
|
||||
:value="item.SiteId"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- 受试者编号 -->
|
||||
<el-form-item :label="$t('trials:subject:table:subjectId')" prop="Code">
|
||||
<el-input v-model="form.Code" :disabled="form.StudyCount > 0 || isEdit" />
|
||||
<span v-show="otherInfo.IsNoticeSubjectCodeRule" style="color:#F56C6C;font-size:12px;">{{ otherInfo.SubjectCodeRule }}</span>
|
||||
<el-input v-model="form.Code" />
|
||||
</el-form-item>
|
||||
<!-- 受试者第二编号 -->
|
||||
<el-form-item v-if="otherInfo.IsSubjectSecondCodeView" :label="$t('trials:subject:table:medicalNo')" prop="MedicalNo">
|
||||
<el-input v-model="form.MedicalNo" :disabled="form.StudyCount > 0 || isEdit" />
|
||||
<!-- 患者编号 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
|
||||
<el-input v-model="form.Code" disabled />
|
||||
</el-form-item>
|
||||
<!-- 访视基准日期 -->
|
||||
<el-form-item
|
||||
v-show="otherInfo.IsHaveFirstGiveMedicineDate"
|
||||
:label="$t('trials:subject:table:firstGiveMedicineTime')"
|
||||
>
|
||||
<el-date-picker
|
||||
v-model="form.FirstGiveMedicineTime"
|
||||
type="date"
|
||||
:picker-options="pickerOption"
|
||||
value-format="yyyy-MM-dd"
|
||||
format="yyyy-MM-dd"
|
||||
/>
|
||||
<div>
|
||||
<span style="color:#F56C6C;font-size:12px;">{{ otherInfo.VisitBaseDataDes }}</span>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<!-- Age -->
|
||||
<el-form-item
|
||||
v-if="otherInfo.IsHaveSubjectAge"
|
||||
:label="$t('trials:subject:table:age')"
|
||||
prop="Age"
|
||||
>
|
||||
<el-input-number v-model="form.Age" controls-position="right" :min="0" />
|
||||
</el-form-item>
|
||||
<!-- Gender -->
|
||||
<el-form-item v-if="otherInfo.IsSubjectSexView" :label="$t('trials:subject:table:gender')">
|
||||
<el-radio-group v-model="form.Sex">
|
||||
<el-radio label="F">F</el-radio>
|
||||
<el-radio label="M">M</el-radio>
|
||||
<el-radio label="O">O</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<!-- 是否加急 -->
|
||||
<el-form-item v-if="otherInfo.IsSubjectExpeditedView" :label="$t('trials:subject:table:isUrgent')">
|
||||
<el-radio-group v-model="form.IsUrgent">
|
||||
<el-radio v-for="item of $d.YesOrNo" :label="item.value">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
<!-- 患者姓名 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
|
||||
<el-input v-model="form.Code" disabled />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div class="base-dialog-footer" style="text-align:right;margin-top:10px;">
|
||||
<div class="base-dialog-footer" style="text-align: right; margin-top: 10px">
|
||||
<el-form-item>
|
||||
<!-- 取消 -->
|
||||
<el-button
|
||||
|
@ -82,126 +30,126 @@
|
|||
type="primary"
|
||||
@click="handleCancel"
|
||||
>
|
||||
{{ $t('common:button:cancel') }}
|
||||
{{ $t("common:button:cancel") }}
|
||||
</el-button>
|
||||
<!-- 保存 -->
|
||||
<el-button size="small" type="primary" :loading="btnLoading" @click="handleSave">
|
||||
{{ $t('common:button:save') }}
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
:loading="btnLoading"
|
||||
@click="handleSave"
|
||||
>
|
||||
{{ $t("common:button:save") }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</div>
|
||||
|
||||
</el-form>
|
||||
|
||||
</template>
|
||||
<script>
|
||||
import { getTrialSiteSelect, addOrUpdateSubject } from '@/api/trials'
|
||||
import { getTrialSiteSelect, addOrUpdateSubject } from "@/api/trials";
|
||||
export default {
|
||||
name: 'SubjectForm',
|
||||
name: "SubjectForm",
|
||||
props: {
|
||||
data: {
|
||||
type: Object,
|
||||
default() { return {} }
|
||||
default() {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
otherInfo: {
|
||||
type: Object,
|
||||
default() { return {} }
|
||||
}
|
||||
default() {
|
||||
return {};
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
form: {
|
||||
Id: '',
|
||||
Code: '',
|
||||
ShortName: '',
|
||||
Height: '',
|
||||
Weight: '',
|
||||
Age: '',
|
||||
Sex: '',
|
||||
BirthDate: '',
|
||||
SiteId: '',
|
||||
MedicalNo: '',
|
||||
Id: "",
|
||||
Code: "",
|
||||
ShortName: "",
|
||||
Height: "",
|
||||
Weight: "",
|
||||
Age: "",
|
||||
Sex: "",
|
||||
BirthDate: "",
|
||||
SiteId: "",
|
||||
MedicalNo: "",
|
||||
Status: 1,
|
||||
FirstGiveMedicineTime: '',
|
||||
OutEnrollmentTime: '',
|
||||
VisitOverTime: '',
|
||||
Reason: '',
|
||||
StudyCount: '',
|
||||
SignDate: '',
|
||||
IsUrgent: false
|
||||
FirstGiveMedicineTime: "",
|
||||
OutEnrollmentTime: "",
|
||||
VisitOverTime: "",
|
||||
Reason: "",
|
||||
StudyCount: "",
|
||||
SignDate: "",
|
||||
IsUrgent: false,
|
||||
},
|
||||
isHaveSubjectAge: false,
|
||||
rules: {
|
||||
Code: [
|
||||
{ required: true, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' },
|
||||
{ max: 50, message: `${this.$t('common:ruleMessage:maxLength')} 50` }
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:specify"),
|
||||
trigger: "blur",
|
||||
},
|
||||
{ max: 50, message: `${this.$t("common:ruleMessage:maxLength")} 50` },
|
||||
],
|
||||
// ShortName: [{ required: true, message: 'Please specify', trigger: 'blur' },
|
||||
// { max: 50, message: 'The maximum length is 50' }],
|
||||
Age: [{ required: this.otherInfo.IsHaveSubjectAge || false, message: this.$t('common:ruleMessage:specify'), trigger: 'blur' }],
|
||||
// Sex: [
|
||||
// { required: true, message: 'Please specify', trigger: 'blur' }
|
||||
// ],
|
||||
SiteId: [{ required: true, message: this.$t('common:ruleMessage:select'), trigger: ['blur', 'change'] }],
|
||||
Reason: [{ max: 500, message: `${this.$t('common:ruleMessage:maxLength')} 500` }]
|
||||
},
|
||||
pickerOption: {
|
||||
disabledDate: time => {
|
||||
return time.getTime() > Date.now()
|
||||
}
|
||||
},
|
||||
btnLoading: false,
|
||||
siteOptions: [],
|
||||
loading: false,
|
||||
trialId: ''
|
||||
}
|
||||
trialId: "",
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
isEdit() {
|
||||
return (!!this.form.Id) && this.hasPermi(['role:crc'])
|
||||
}
|
||||
return !!this.form.Id && this.hasPermi(["role:crc"]);
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
this.trialId = this.$route.query.trialId
|
||||
this.initForm()
|
||||
this.trialId = this.$route.query.trialId;
|
||||
this.initForm();
|
||||
},
|
||||
methods: {
|
||||
async initForm() {
|
||||
this.loading = true
|
||||
const res = await getTrialSiteSelect(this.trialId)
|
||||
this.loading = false
|
||||
this.siteOptions = res.Result
|
||||
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)) {
|
||||
this.form[k] = this.data[k]
|
||||
this.form[k] = this.data[k];
|
||||
}
|
||||
}
|
||||
}
|
||||
this.form.TrialId = this.trialId
|
||||
this.form.TrialId = this.trialId;
|
||||
},
|
||||
handleSave() {
|
||||
this.$refs.subjectForm.validate(valid => {
|
||||
if (!valid) return
|
||||
this.btnLoading = true
|
||||
addOrUpdateSubject(this.form).then(res => {
|
||||
this.btnLoading = false
|
||||
this.$emit('getList')
|
||||
this.$emit('close')
|
||||
this.$message.success(this.$t('common:message:savedSuccessfully'))
|
||||
})
|
||||
.catch(() => {
|
||||
this.btnLoading = false
|
||||
this.$refs.subjectForm.validate((valid) => {
|
||||
if (!valid) return;
|
||||
this.btnLoading = true;
|
||||
addOrUpdateSubject(this.form)
|
||||
.then((res) => {
|
||||
this.btnLoading = false;
|
||||
this.$emit("getList");
|
||||
this.$emit("close");
|
||||
this.$message.success(this.$t("common:message:savedSuccessfully"));
|
||||
})
|
||||
})
|
||||
.catch(() => {
|
||||
this.btnLoading = false;
|
||||
});
|
||||
});
|
||||
},
|
||||
handleCancel() {
|
||||
this.$emit('close')
|
||||
this.$emit("close");
|
||||
},
|
||||
getSite() {
|
||||
getTrialSiteSelect(this.trialId).then(res => { this.siteList = res.Result })
|
||||
}
|
||||
}
|
||||
}
|
||||
getTrialSiteSelect(this.trialId).then((res) => {
|
||||
this.siteList = res.Result;
|
||||
});
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -0,0 +1,243 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
:visible.sync="visible"
|
||||
:close-on-click-modal="false"
|
||||
:fullscreen="true"
|
||||
custom-class="upload-dialog"
|
||||
:before-close="beforeCloseStudyDig"
|
||||
>
|
||||
<span slot="title"
|
||||
>{{ $t("trials:inspection:button:addTrials") }}({{
|
||||
$t("trials:uploadDicomList:table:patientInfo")
|
||||
}}:T0001132,ZhangSan)</span
|
||||
>
|
||||
<div class="top">
|
||||
<el-form
|
||||
:inline="true"
|
||||
:model="submitMessage"
|
||||
class="demo-form-inline"
|
||||
:rules="rules"
|
||||
>
|
||||
<!--受试者编号-->
|
||||
<el-form-item
|
||||
:label="$t('trials:crcQuestion:table:subjectId')"
|
||||
prop="subjectId"
|
||||
>
|
||||
<el-input v-model="submitMessage.subjectId"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<div class="search">
|
||||
<p>{{ $t("trials:inspection:message:checkAddTrials") }}</p>
|
||||
<div class="form">
|
||||
<el-form :inline="true" class="base-search-form">
|
||||
<!-- 研究方案编号 -->
|
||||
<el-form-item :label="$t('trials:trials-list:table:researchNumber')">
|
||||
<el-input v-model="searchData.SubjectInfo" style="width: 100px" />
|
||||
</el-form-item>
|
||||
<!-- 研究名称 -->
|
||||
<el-form-item :label="$t('trials:trials-list:table:researchName')">
|
||||
<el-input v-model="searchData.SubjectInfo" style="width: 100px" />
|
||||
</el-form-item>
|
||||
<!-- 申办方 -->
|
||||
<el-form-item
|
||||
class="my_multiple"
|
||||
:label="$t('trials:trials-list:table:sponsor')"
|
||||
>
|
||||
<el-select
|
||||
v-model="searchData.VisitPlanArray"
|
||||
clearable
|
||||
multiple
|
||||
style="width: 140px"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item, index) of sponsorList"
|
||||
:key="index"
|
||||
:label="item.VisitName"
|
||||
:value="item.VisitNum"
|
||||
>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<!-- 查询 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-search"
|
||||
@click="handleSearch"
|
||||
>
|
||||
{{ $t("common:button:search") }}
|
||||
</el-button>
|
||||
<!-- 重置 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
{{ $t("common:button:reset") }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-button type="primary" @click="addTrials">
|
||||
{{ $t("trials:addRP:button:confirmAddPR") }}
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<!--可加入项目列表-->
|
||||
<!--:header-cell-style="{ background: '#f9f9f9' }"-->
|
||||
<el-table
|
||||
ref="addTrialsList"
|
||||
v-loading="loading"
|
||||
v-adaptive="{ bottomOffset: 60 }"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
@selection-change="handleSelectChange"
|
||||
>
|
||||
<el-table-column type="selection" align="center" width="45" />
|
||||
<!--项目类型-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:form:trialType')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--研究方案号-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:researchNumber')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--研究名称-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:researchName')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--申办方-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:sponsor')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--状态-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:status')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
<!--创建日期-->
|
||||
<el-table-column
|
||||
align="center"
|
||||
prop="IsUrgent"
|
||||
:label="$t('trials:trials-list:table:createDate')"
|
||||
show-overflow-tooltip
|
||||
min-width="140"
|
||||
></el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination
|
||||
class="page"
|
||||
:total="total"
|
||||
:page.sync="searchData.PageIndex"
|
||||
:limit.sync="searchData.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
import Pagination from "@/components/Pagination";
|
||||
export default {
|
||||
name: "addSubject",
|
||||
components: { Pagination },
|
||||
props: {
|
||||
visible: {
|
||||
require: true,
|
||||
default: false,
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
// 查询
|
||||
searchData: {},
|
||||
sponsorList: [],
|
||||
// 可加入项目列表
|
||||
total: 0,
|
||||
loading: false,
|
||||
list: [{ key: 1, IsUrgent: "123" }],
|
||||
// 提交数据
|
||||
submitMessage: {},
|
||||
rules: {
|
||||
subjectId: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:specify"),
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
},
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
// 关闭弹框
|
||||
beforeCloseStudyDig() {
|
||||
this.$emit("update:visible", false);
|
||||
},
|
||||
// 加入项目
|
||||
addTrials() {
|
||||
this.$emit("update:visible", false);
|
||||
this.$emit("handleOpenDialog", {}, "confirm");
|
||||
},
|
||||
// 获取列表
|
||||
getList() {},
|
||||
// 查询
|
||||
handleSearch() {},
|
||||
// 重置
|
||||
handleReset() {},
|
||||
// 表格选择
|
||||
handleSelectChange() {},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
.top {
|
||||
padding-top: 20px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.search {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
p {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
&::after {
|
||||
display: block;
|
||||
content: "";
|
||||
flex: 1;
|
||||
height: 1px;
|
||||
border-top: 1px solid #ddd;
|
||||
}
|
||||
}
|
||||
.form {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -3,51 +3,76 @@
|
|||
<!-- 搜索框 -->
|
||||
<template slot="search-container">
|
||||
<el-form :inline="true">
|
||||
<!-- Site -->
|
||||
<el-form-item :label="$t('trials:subject:table:site')">
|
||||
<el-select v-model="searchData.SiteId" clearable filterable style="width:130px;">
|
||||
<!-- 受试者编号 -->
|
||||
<el-form-item :label="$t('trials:crcQuestion:table:subjectId')">
|
||||
<el-input v-model="searchData.Code" style="width: 130px" />
|
||||
</el-form-item>
|
||||
<!-- 患者编号 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:pId')">
|
||||
<el-input v-model="searchData.Code" style="width: 130px" />
|
||||
</el-form-item>
|
||||
<!-- 患者姓名 -->
|
||||
<el-form-item :label="$t('trials:uploadDicomList:table:patientName')">
|
||||
<el-input v-model="searchData.Code" style="width: 130px" />
|
||||
</el-form-item>
|
||||
<!-- 性别 -->
|
||||
<el-form-item :label="$t('trials:trials-myinfo:form:gender')">
|
||||
<el-select
|
||||
v-model="searchData.SiteId"
|
||||
clearable
|
||||
filterable
|
||||
style="width: 130px"
|
||||
>
|
||||
<el-option
|
||||
v-for="(item,index) of siteOptions"
|
||||
:key="index"
|
||||
:label="item.TrialSiteCode"
|
||||
:value="item.SiteId"
|
||||
v-for="item of $d.sex"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<!-- Subject ID -->
|
||||
<el-form-item :label="$t('trials:subject:table:subjectId')">
|
||||
<el-input v-model="searchData.Code" style="width:130px;" />
|
||||
</el-form-item>
|
||||
<!-- Status -->
|
||||
<!-- 状态 -->
|
||||
<el-form-item :label="$t('trials:subject:table:status')">
|
||||
<el-select v-model="searchData.Status" clearable style="width:130px;">
|
||||
<el-option v-for="item of $d.Subject_Visit_Status" :key="item.value" :value="item.value" :label="item.label" />
|
||||
<el-select v-model="searchData.Status" clearable style="width: 130px">
|
||||
<el-option
|
||||
v-for="item of $d.Subject_Visit_Status"
|
||||
:key="item.value"
|
||||
:value="item.value"
|
||||
:label="item.label"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<!-- 查询 -->
|
||||
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
|
||||
{{ $t('common:button:search') }}
|
||||
{{ $t("common:button:search") }}
|
||||
</el-button>
|
||||
<!-- 重置 -->
|
||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
||||
{{ $t('common:button:reset') }}
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
{{ $t("common:button:reset") }}
|
||||
</el-button>
|
||||
<!--导出-->
|
||||
<el-button type="primary" icon="el-icon-download" @click="handleExport">
|
||||
{{ $t('common:button:export') }}
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-download"
|
||||
@click="handleExport"
|
||||
>
|
||||
{{ $t("common:button:export") }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span style="margin-left:auto;">
|
||||
<span style="margin-left: auto">
|
||||
<el-button
|
||||
v-if="visitPlanConfirmed"
|
||||
v-hasPermi="['trials:trials-panel:subject:new']"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
{{ $t('common:button:new') }}
|
||||
{{ $t("common:button:new") }}
|
||||
</el-button>
|
||||
</span>
|
||||
</template>
|
||||
|
@ -57,142 +82,99 @@
|
|||
<el-table
|
||||
ref="subjectList"
|
||||
v-loading="loading"
|
||||
v-adaptive="{bottomOffset:60}"
|
||||
v-adaptive="{ bottomOffset: 60 }"
|
||||
:data="list"
|
||||
stripe
|
||||
height="100"
|
||||
@sort-change="handleSortByColumn"
|
||||
>
|
||||
<el-table-column type="index" width="40" />
|
||||
<!-- Site -->
|
||||
<el-table-column
|
||||
prop="TrialSiteCode"
|
||||
:label="$t('trials:subject:table:site')"
|
||||
sortable="custom"
|
||||
show-overflow-tooltip
|
||||
width="120"
|
||||
/>
|
||||
<!-- Code -->
|
||||
<!-- 受试者编号 -->
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
:label="$t('trials:subject:table:subjectId')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
width="130"
|
||||
/>
|
||||
<!-- 第二编号 -->
|
||||
<!-- 患者编号 -->
|
||||
<el-table-column
|
||||
v-if="otherInfo.IsSubjectSecondCodeView"
|
||||
prop="MedicalNo"
|
||||
:label="$t('trials:subject:table:medicalNo')"
|
||||
prop="Code"
|
||||
:label="$t('trials:uploadDicomList:table:pId')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
width="150"
|
||||
/>
|
||||
<!-- 访视基准日期 -->
|
||||
<!-- 患者姓名 -->
|
||||
<el-table-column
|
||||
prop="FirstGiveMedicineTime"
|
||||
:label="$t('trials:subject:table:firstGiveMedicineTime')"
|
||||
sortable="custom"
|
||||
prop="Code"
|
||||
:label="$t('trials:uploadDicomList:table:patientName')"
|
||||
show-overflow-tooltip
|
||||
width="150"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.FirstGiveMedicineTime?moment(scope.row.FirstGiveMedicineTime).format('YYYY-MM-DD'):'' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
sortable="custom"
|
||||
/>
|
||||
<!-- 性别 -->
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
:label="$t('trials:trials-myinfo:form:gender')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<!-- 出生日期 -->
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
:label="$t('trials:inspection:table:birthdate')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<!-- 年龄 -->
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
:label="$t('trials:subject:table:age')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<!-- 总访视量 -->
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
:label="$t('trials:subject:table:totalVisitCount')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<!-- 最新检查访视 -->
|
||||
<el-table-column
|
||||
prop="Code"
|
||||
:label="$t('trials:subject:table:latestStudiesVisitName')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<!-- Status -->
|
||||
<el-table-column
|
||||
prop="Status"
|
||||
:label="$t('trials:subject:table:status')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
width="120"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.Status === 1" type="primary">{{ $fd('Subject_Visit_Status', scope.row.Status) }}</el-tag>
|
||||
<el-tag v-if="scope.row.Status === 2" type="danger">{{ $fd('Subject_Visit_Status', scope.row.Status) }}</el-tag>
|
||||
<el-tag v-if="scope.row.Status === 1" type="primary">{{
|
||||
$fd("Subject_Visit_Status", scope.row.Status)
|
||||
}}</el-tag>
|
||||
<el-tag v-if="scope.row.Status === 2" type="danger">{{
|
||||
$fd("Subject_Visit_Status", scope.row.Status)
|
||||
}}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 总访视量 -->
|
||||
<!-- 创建日期 -->
|
||||
<el-table-column
|
||||
prop="TotalVisitCount"
|
||||
:label="$t('trials:subject:table:totalVisitCount')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="scope.row.TotalVisitCount > 0 && (hasCrcRoute || hasQCRoute)"
|
||||
type="text"
|
||||
@click="handleTotalVisitCount(scope.row.Code)"
|
||||
>
|
||||
{{ scope.row.TotalVisitCount }}
|
||||
</el-button>
|
||||
<span v-else> {{ scope.row.TotalVisitCount }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 计划访视量 -->
|
||||
<el-table-column
|
||||
prop="InPlanVisitCount"
|
||||
:label="$t('trials:subject:table:inPlanVisitCount')"
|
||||
prop="Code"
|
||||
:label="$t('trials:trials-list:table:createDate')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
min-width="140"
|
||||
/>
|
||||
<!-- 计划外访视量 -->
|
||||
<el-table-column
|
||||
prop="OutPlanVisitCount"
|
||||
:label="$t('trials:subject:table:outPlanVisitCount')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
width="160"
|
||||
/>
|
||||
<!-- 当前提交访视量 -->
|
||||
<el-table-column
|
||||
prop="TotalVisitSubmmitCount"
|
||||
:label="$t('trials:subject:table:totalVisitSubmmitCount')"
|
||||
show-overflow-tooltip
|
||||
min-width="130"
|
||||
/>
|
||||
<!-- 是否漏传 -->
|
||||
<el-table-column
|
||||
prop="IsMissingImages"
|
||||
:label="$t('trials:subject:table:isMissingImages')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
min-width="140"
|
||||
>
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.IsMissingImages" type="danger">{{ $fd('YesOrNo', scope.row.IsMissingImages) }}</el-tag>
|
||||
<el-tag v-else type="primary">{{ $fd('YesOrNo', scope.row.IsMissingImages) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 漏提交访视量 -->
|
||||
<el-table-column
|
||||
prop="MissingSubmmitCount"
|
||||
:label="$t('trials:subject:table:missingSubmmitCount')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
/>
|
||||
<!-- 失访访视量 -->
|
||||
<el-table-column
|
||||
prop="LostVisitCount"
|
||||
:label="$t('trials:subject:table:lostVisitCount')"
|
||||
show-overflow-tooltip
|
||||
min-width="120"
|
||||
/>
|
||||
<!-- 最新提交访视名称 -->
|
||||
<el-table-column
|
||||
prop="LatestVisitName"
|
||||
:label="$t('trials:subject:table:latestVisitName')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
min-width="160"
|
||||
/>
|
||||
|
||||
<el-table-column
|
||||
v-if="hasPermi(['trials:trials-panel:subject:edit', 'trials:trials-panel:subject:status', 'trials:trials-panel:subject:delete'])"
|
||||
v-if="
|
||||
hasPermi([
|
||||
'trials:trials-panel:subject:edit',
|
||||
'trials:trials-panel:subject:status',
|
||||
'trials:trials-panel:subject:delete',
|
||||
])
|
||||
"
|
||||
:label="$t('common:action:action')"
|
||||
width="200"
|
||||
fixed="right"
|
||||
|
@ -220,23 +202,21 @@
|
|||
circle
|
||||
:title="$t('trials:subject:action:delete')"
|
||||
icon="el-icon-delete"
|
||||
:disabled="scope.row.StudyCount>0"
|
||||
:disabled="scope.row.StudyCount > 0"
|
||||
@click="handleDelete(scope.row)"
|
||||
/>
|
||||
<!-- 删除 -->
|
||||
<el-button
|
||||
v-hasPermi="['trials:trials-panel:subject:report']"
|
||||
icon="el-icon-message"
|
||||
circle
|
||||
:title="$t('trials:subject:title:report')"
|
||||
@click="handleMessage(scope.row)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<!-- 分页组件 -->
|
||||
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
|
||||
<pagination
|
||||
class="page"
|
||||
:total="total"
|
||||
:page.sync="searchData.PageIndex"
|
||||
:limit.sync="searchData.PageSize"
|
||||
@pagination="getList"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<!-- 新增/编辑 -->
|
||||
|
@ -248,7 +228,12 @@
|
|||
width="700px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SubjectsForm :data="rowData" :other-info="otherInfo" @close="closeEditDialog" @getList="getList" />
|
||||
<SubjectsForm
|
||||
:data="rowData"
|
||||
:other-info="otherInfo"
|
||||
@close="closeEditDialog"
|
||||
@getList="getList"
|
||||
/>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 修改受试者状态 -->
|
||||
|
@ -260,48 +245,72 @@
|
|||
width="700px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<SubjectStatusForm :data="rowData" @closeDialog="closeStatusDialog" @getList="getList" />
|
||||
<SubjectStatusForm
|
||||
:data="rowData"
|
||||
@closeDialog="closeStatusDialog"
|
||||
@getList="getList"
|
||||
/>
|
||||
</el-dialog>
|
||||
<!-- 修改受试者状态 -->
|
||||
<el-dialog
|
||||
v-if="MessageVisible"
|
||||
:visible.sync="MessageVisible"
|
||||
:close-on-click-modal="false"
|
||||
:title="$t('trials:subject:title:sendReport').replace('xxx',rowData.Code)"
|
||||
:title="
|
||||
$t('trials:subject:title:sendReport').replace('xxx', rowData.Code)
|
||||
"
|
||||
width="720px"
|
||||
custom-class="base-dialog-wrapper"
|
||||
>
|
||||
<MessageTable :data="rowData" @closeDialog="closeStatusDialog" @getList="getList" />
|
||||
<MessageTable
|
||||
:data="rowData"
|
||||
@closeDialog="closeStatusDialog"
|
||||
@getList="getList"
|
||||
/>
|
||||
</el-dialog>
|
||||
<!--添加受试者-->
|
||||
<addSubject :visible.sync="addSubjectVsible" />
|
||||
</BaseContainer>
|
||||
</template>
|
||||
<script>
|
||||
import { getTrialSiteSelect, getSubjectList, deleteSubject } from '@/api/trials'
|
||||
import { getSubjectList_Export } from '@/api/export'
|
||||
import BaseContainer from '@/components/BaseContainer'
|
||||
import Pagination from '@/components/Pagination'
|
||||
import SubjectsForm from './components/SubjectsForm'
|
||||
import SubjectStatusForm from './components/SubjectStatusForm'
|
||||
import MessageTable from './components/MessageTable'
|
||||
import moment from 'moment'
|
||||
import {
|
||||
getTrialSiteSelect,
|
||||
getSubjectList,
|
||||
deleteSubject,
|
||||
} from "@/api/trials";
|
||||
import { getSubjectList_Export } from "@/api/export";
|
||||
import BaseContainer from "@/components/BaseContainer";
|
||||
import Pagination from "@/components/Pagination";
|
||||
import SubjectsForm from "./components/SubjectsForm";
|
||||
import SubjectStatusForm from "./components/SubjectStatusForm";
|
||||
import MessageTable from "./components/MessageTable";
|
||||
import moment from "moment";
|
||||
import addSubject from "./components/add-subject.vue";
|
||||
const searchDataDefault = () => {
|
||||
return {
|
||||
Code: '',
|
||||
Status: '',
|
||||
SiteId: '',
|
||||
ShortName: '',
|
||||
Code: "",
|
||||
Status: "",
|
||||
SiteId: "",
|
||||
ShortName: "",
|
||||
PageIndex: 1,
|
||||
PageSize: 20
|
||||
}
|
||||
}
|
||||
PageSize: 20,
|
||||
};
|
||||
};
|
||||
export default {
|
||||
name: 'SubjectList',
|
||||
components: { BaseContainer, Pagination, SubjectsForm, SubjectStatusForm, MessageTable },
|
||||
name: "SubjectList",
|
||||
components: {
|
||||
BaseContainer,
|
||||
Pagination,
|
||||
SubjectsForm,
|
||||
SubjectStatusForm,
|
||||
MessageTable,
|
||||
addSubject,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
moment,
|
||||
MessageVisible: false,
|
||||
model_cfg: { visible: false, showClose: true, width: '700px', title: '' },
|
||||
model_cfg: { visible: false, showClose: true, width: "700px", title: "" },
|
||||
searchData: searchDataDefault(),
|
||||
loading: false,
|
||||
list: [],
|
||||
|
@ -309,152 +318,179 @@ export default {
|
|||
siteOptions: [],
|
||||
visitPlanConfirmed: false,
|
||||
rowData: {},
|
||||
userTypeEnumInt: zzSessionStorage.getItem('userTypeEnumInt') * 1,
|
||||
userTypeEnumInt: zzSessionStorage.getItem("userTypeEnumInt") * 1,
|
||||
otherInfo: {},
|
||||
editDialog: { title: '', visible: false },
|
||||
editDialog: { title: "", visible: false },
|
||||
statusVisible: false,
|
||||
trialId: '',
|
||||
trialId: "",
|
||||
hasCrcRoute: false,
|
||||
hasQCRoute: false
|
||||
}
|
||||
hasQCRoute: false,
|
||||
addSubjectVsible: false,
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
list() {
|
||||
this.$nextTick(() => {
|
||||
this.$refs.subjectList.doLayout()
|
||||
})
|
||||
}
|
||||
this.$refs.subjectList.doLayout();
|
||||
});
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
const trialsRouter = this.$store.getters.routes.find(r => { return r.name === 'Trials' })
|
||||
const trialsPanelRouter = trialsRouter.children.find(r => { return r.name === 'TrialsPanel' }).children
|
||||
this.hasCrcRoute = this.hasRoute('crc-upload', trialsPanelRouter)
|
||||
this.hasQCRoute = this.hasRoute('qc-check', trialsPanelRouter)
|
||||
this.trialId = this.$route.query.trialId
|
||||
this.getSite()
|
||||
this.getList()
|
||||
const trialsRouter = this.$store.getters.routes.find((r) => {
|
||||
return r.name === "Trials";
|
||||
});
|
||||
const trialsPanelRouter = trialsRouter.children.find((r) => {
|
||||
return r.name === "TrialsPanel";
|
||||
}).children;
|
||||
this.hasCrcRoute = this.hasRoute("crc-upload", trialsPanelRouter);
|
||||
this.hasQCRoute = this.hasRoute("qc-check", trialsPanelRouter);
|
||||
this.trialId = this.$route.query.trialId;
|
||||
this.getSite();
|
||||
this.getList();
|
||||
},
|
||||
methods: {
|
||||
handleMessage(row) {
|
||||
this.rowData = { ...row }
|
||||
this.MessageVisible = true
|
||||
this.rowData = { ...row };
|
||||
this.MessageVisible = true;
|
||||
},
|
||||
handleExport() {
|
||||
getSubjectList_Export(this.searchData).then(res => {
|
||||
}).catch(() => { this.loading = false })
|
||||
getSubjectList_Export(this.searchData)
|
||||
.then((res) => {})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 获取受试者列表
|
||||
getList() {
|
||||
this.loading = true
|
||||
this.searchData.TrialId = this.$route.query.trialId
|
||||
getSubjectList(this.searchData).then(res => {
|
||||
this.loading = false
|
||||
this.list = res.Result.CurrentPageData
|
||||
this.total = res.Result.TotalCount
|
||||
this.otherInfo = res.OtherInfo
|
||||
this.visitPlanConfirmed = res.OtherInfo.VisitPlanConfirmed
|
||||
}).catch(() => { this.loading = false })
|
||||
this.loading = true;
|
||||
this.searchData.TrialId = this.$route.query.trialId;
|
||||
getSubjectList(this.searchData)
|
||||
.then((res) => {
|
||||
this.loading = false;
|
||||
this.list = res.Result.CurrentPageData;
|
||||
this.total = res.Result.TotalCount;
|
||||
this.otherInfo = res.OtherInfo;
|
||||
this.visitPlanConfirmed = res.OtherInfo.VisitPlanConfirmed;
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
// 新增
|
||||
handleAdd() {
|
||||
this.rowData = {}
|
||||
this.editDialog.title = this.$t('trials:subject:dialogTitle:new')
|
||||
this.editDialog.visible = true
|
||||
this.addSubjectVsible = true;
|
||||
// this.rowData = {};
|
||||
// this.editDialog.title = this.$t("trials:subject:dialogTitle:new");
|
||||
// this.editDialog.visible = true;
|
||||
},
|
||||
// 编辑
|
||||
handleEdit(row) {
|
||||
this.rowData = row
|
||||
this.editDialog.title = this.$t('trials:subject:dialogTitle:edit')
|
||||
this.editDialog.visible = true
|
||||
this.rowData = row;
|
||||
this.editDialog.title = this.$t("trials:subject:dialogTitle:edit");
|
||||
this.editDialog.visible = true;
|
||||
},
|
||||
// 关闭弹窗
|
||||
closeEditDialog() {
|
||||
this.editDialog.visible = false
|
||||
this.editDialog.visible = false;
|
||||
},
|
||||
// 删除
|
||||
handleDelete(row) {
|
||||
this.$confirm(this.$t('trials:subject:message:delete'), {
|
||||
type: 'warning',
|
||||
distinguishCancelAndClose: true
|
||||
})
|
||||
.then(() => {
|
||||
this.loading = true
|
||||
deleteSubject(this.trialId, row.Id)
|
||||
.then(res => {
|
||||
this.loading = false
|
||||
if (res.IsSuccess) {
|
||||
// this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.getList()
|
||||
this.$message.success(this.$t('common:message:deletedSuccessfully'))
|
||||
}
|
||||
}).catch(() => { this.loading = false })
|
||||
})
|
||||
this.$confirm(this.$t("trials:subject:message:delete"), {
|
||||
type: "warning",
|
||||
distinguishCancelAndClose: true,
|
||||
}).then(() => {
|
||||
this.loading = true;
|
||||
deleteSubject(this.trialId, row.Id)
|
||||
.then((res) => {
|
||||
this.loading = false;
|
||||
if (res.IsSuccess) {
|
||||
// this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
|
||||
this.getList();
|
||||
this.$message.success(
|
||||
this.$t("common:message:deletedSuccessfully")
|
||||
);
|
||||
}
|
||||
})
|
||||
.catch(() => {
|
||||
this.loading = false;
|
||||
});
|
||||
});
|
||||
},
|
||||
// 审计
|
||||
handleAudit(row) {
|
||||
const routeData = this.$router.resolve({
|
||||
path: '/audit',
|
||||
query: { Id: row.TrialId, Code: this.$route.query.trialCode, SubName: row.Name, SubId: row.Id, Type: 2 }
|
||||
})
|
||||
window.open(routeData.href, '_blank')
|
||||
path: "/audit",
|
||||
query: {
|
||||
Id: row.TrialId,
|
||||
Code: this.$route.query.trialCode,
|
||||
SubName: row.Name,
|
||||
SubId: row.Id,
|
||||
Type: 2,
|
||||
},
|
||||
});
|
||||
window.open(routeData.href, "_blank");
|
||||
},
|
||||
// 查询
|
||||
handleSearch() {
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
this.searchData.PageIndex = 1;
|
||||
this.getList();
|
||||
},
|
||||
// 重置
|
||||
handleReset() {
|
||||
this.searchData = searchDataDefault()
|
||||
this.getList()
|
||||
this.searchData = searchDataDefault();
|
||||
this.getList();
|
||||
},
|
||||
// 排序
|
||||
handleSortByColumn(column) {
|
||||
if (column.order === 'ascending') {
|
||||
this.searchData.Asc = true
|
||||
if (column.order === "ascending") {
|
||||
this.searchData.Asc = true;
|
||||
} else {
|
||||
this.searchData.Asc = false
|
||||
this.searchData.Asc = false;
|
||||
}
|
||||
this.searchData.SortField = column.prop
|
||||
this.searchData.PageIndex = 1
|
||||
this.getList()
|
||||
this.searchData.SortField = column.prop;
|
||||
this.searchData.PageIndex = 1;
|
||||
this.getList();
|
||||
},
|
||||
// 获取site下拉框数据
|
||||
getSite() {
|
||||
getTrialSiteSelect(this.trialId).then(res => {
|
||||
this.siteOptions = res.Result
|
||||
})
|
||||
getTrialSiteSelect(this.trialId).then((res) => {
|
||||
this.siteOptions = res.Result;
|
||||
});
|
||||
},
|
||||
// 打开编辑状态框
|
||||
handleEditStatus(row) {
|
||||
this.rowData = { ...row }
|
||||
this.statusVisible = true
|
||||
this.rowData = { ...row };
|
||||
this.statusVisible = true;
|
||||
},
|
||||
// 关闭状态编辑框
|
||||
closeStatusDialog() {
|
||||
this.statusVisible = false
|
||||
this.statusVisible = false;
|
||||
},
|
||||
handleTotalVisitCount(subjectCode) {
|
||||
if (this.hasCrcRoute) {
|
||||
this.$router.push({ path: `/trials/trials-panel/visit/crc-upload?trialId=${this.$route.query.trialId}&trialCode=${this.$route.query.trialCode}&researchProgramNo=${this.$route.query.researchProgramNo}&subjectCode=${subjectCode}` })
|
||||
this.$router.push({
|
||||
path: `/trials/trials-panel/visit/crc-upload?trialId=${this.$route.query.trialId}&trialCode=${this.$route.query.trialCode}&researchProgramNo=${this.$route.query.researchProgramNo}&subjectCode=${subjectCode}`,
|
||||
});
|
||||
} else if (this.hasQCRoute) {
|
||||
this.$router.push({ path: `/trials/trials-panel/visit/qc-check?trialId=${this.$route.query.trialId}&trialCode=${this.$route.query.trialCode}&researchProgramNo=${this.$route.query.researchProgramNo}&subjectCode=${subjectCode}` })
|
||||
this.$router.push({
|
||||
path: `/trials/trials-panel/visit/qc-check?trialId=${this.$route.query.trialId}&trialCode=${this.$route.query.trialCode}&researchProgramNo=${this.$route.query.researchProgramNo}&subjectCode=${subjectCode}`,
|
||||
});
|
||||
}
|
||||
},
|
||||
hasRoute(name, routeList) {
|
||||
for (let i = 0; i < routeList.length; i++) {
|
||||
if (routeList[i].name === name) {
|
||||
return true
|
||||
return true;
|
||||
}
|
||||
if (routeList[i].children) {
|
||||
const flag = this.hasRoute(name, routeList[i].children)
|
||||
const flag = this.hasRoute(name, routeList[i].children);
|
||||
if (flag) {
|
||||
return flag
|
||||
return flag;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
@ -835,7 +835,7 @@
|
|||
>
|
||||
<div class="base-dialog-body">
|
||||
<div v-if="!IsHaveTableQuestion">
|
||||
<div v-for="item of beConfirmList">
|
||||
<div v-for="item of beConfirmList" :key="item.ClinicalDataSetName">
|
||||
<el-divider content-position="left">{{ item.ClinicalDataSetName }}</el-divider>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
|
@ -846,6 +846,7 @@
|
|||
<el-table-column
|
||||
v-for="ite of item.QuestionList"
|
||||
:prop="ite.Id"
|
||||
:key="ite.Id"
|
||||
:label="ite.QuestionName"
|
||||
show-overflow-tooltip
|
||||
width="120"
|
||||
|
@ -882,7 +883,7 @@
|
|||
:reading-id="selected.ReadingId"
|
||||
:clinical-form-id="selected.ClinicalFormId"
|
||||
:open-type="'look'"
|
||||
@close=""
|
||||
@close="false"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -942,6 +943,7 @@
|
|||
<el-table-column
|
||||
v-for="item of QuestionList"
|
||||
:prop="item.Id"
|
||||
:key="item.Id"
|
||||
:label="item.QuestionName"
|
||||
show-overflow-tooltip
|
||||
width="120"
|
||||
|
|
|
@ -60,7 +60,7 @@ module.exports = {
|
|||
// target: 'http://123.56.181.144:8060/api', // 国内测试环境1
|
||||
// target: 'http://123.56.181.144:8000/api', // 国内测试环境
|
||||
// target: 'http://123.56.94.154:8079', // 国内测试环境2
|
||||
target: 'http://123.56.94.154:30010', // 国内测试环境2
|
||||
target: 'http://123.56.94.154:30020', // 国内测试环境2
|
||||
// target: 'http://123.56.181.144:7000',
|
||||
changeOrigin: true,
|
||||
secure: false,
|
||||
|
|
Loading…
Reference in New Issue