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