重置密码
continuous-integration/drone/push Build is passing Details

main
wangxiaoshuang 2025-08-18 14:33:17 +08:00
parent d0887851c2
commit bb8a1f84a4
3 changed files with 85 additions and 194 deletions

View File

@ -2,66 +2,42 @@
<template> <template>
<div class="trialsTab"> <div class="trialsTab">
<el-tabs v-model="trialsTab" @tab-click="clickTab"> <el-tabs v-model="trialsTab" @tab-click="clickTab">
<el-tab-pane <el-tab-pane v-for="item of trialsRouter.children.find((v) => {
v-for="item of trialsRouter.children.find((v) => { return v.name == 'TrialsPanel';
return v.name == 'TrialsPanel'; }).children" :key="`tab${item.path}`" :disabled="TotalNeedSignTrialDocCount !== 0 ||
}).children" (TrialStatusStr === 'Initializing' && item.PermissionStr !== 'trials:trials-panel:trial-information')
:key="`tab${item.path}`" " :label="$t(item.LanguageMark)" :name="item.path">
:disabled=" <el-tabs v-if="!item.tabHiddn" v-model="trialsTabChild" @tab-click="clickTab">
TotalNeedSignTrialDocCount !== 0 ||
(TrialStatusStr === 'Initializing' && item.PermissionStr!=='trials:trials-panel:trial-information')
"
:label="$t(item.LanguageMark)"
:name="item.path"
>
<el-tabs
v-if="!item.tabHiddn"
v-model="trialsTabChild"
@tab-click="clickTab"
>
<template v-for="item1 of item.children"> <template v-for="item1 of item.children">
<el-tab-pane <el-tab-pane v-if="TrialConfig && isShow(item1.path)" :key="`tab1${item1.path}`" :disabled="TotalNeedSignTrialDocCount !== 0 ||
v-if="TrialConfig && isShow(item1.path)" (TrialStatusStr === 'Initializing' &&
:key="`tab1${item1.path}`" (item1.path ===
:disabled=" '/trials/trials-panel/setting/personnel-manage' ||
TotalNeedSignTrialDocCount !== 0 || item1.path === '/trials/trials-panel/setting/qc-question' ||
(TrialStatusStr === 'Initializing' && item1.path ===
(item1.path === '/trials/trials-panel/setting/reading-unit' ||
'/trials/trials-panel/setting/personnel-manage' || item1.path ===
item1.path === '/trials/trials-panel/setting/qc-question' || '/trials/trials-panel/setting/medical-audit' ||
item1.path === item1.path === '/trials/trials-panel/setting/email-manage'))
'/trials/trials-panel/setting/reading-unit' || " :label="$t(item1.LanguageMark)" :name="item1.path" />
item1.path ===
'/trials/trials-panel/setting/medical-audit' ||
item1.path === '/trials/trials-panel/setting/email-manage'))
"
:label="$t(item1.LanguageMark)"
:name="item1.path"
/>
</template> </template>
</el-tabs> </el-tabs>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<div <div style="
style="
position: absolute; position: absolute;
top: 0; top: 0;
right: 0; right: 0;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
" ">
>
<trials-select /> <trials-select />
<div> <div>
<i class="iconfont" style="font-size: 30px; color: #ccc">&#xe680;</i> <i class="iconfont" style="font-size: 30px; color: #ccc">&#xe680;</i>
</div> </div>
<!-- 返回项目列表 --> <!-- 返回项目列表 -->
<div <div class="my_icon_box" :title="$t('trials:trials:title:backTrialList')" @click="goBack">
class="my_icon_box"
:title="$t('trials:trials:title:backTrialList')"
@click="goBack"
>
<i class="iconfont">&#xe670;</i> <i class="iconfont">&#xe670;</i>
<!-- 返回 --> <!-- 返回 -->
<span>{{ $t("trials:trials:title:back") }}</span> <span>{{ $t("trials:trials:title:back") }}</span>
@ -71,9 +47,8 @@
</template> </template>
<script> <script>
import { mapGetters } from "vuex"; import { mapGetters } from "vuex";
import { getTrialSelect } from "@/api/trials"; import { getTrialSelect, getTrialInfoHir } from "@/api/trials";
import TrialsSelect from "@/components/TrialsSelect/index.vue"; import TrialsSelect from "@/components/TrialsSelect/index.vue";
import { getUserDocumentList } from "@/api/trials";
import store from "@/store"; import store from "@/store";
export default { export default {
name: "TrialsTab", name: "TrialsTab",
@ -128,20 +103,15 @@ export default {
} }
// document.cookie = 'TrialId=' + this.$route.query.trialId + ';path=/' // document.cookie = 'TrialId=' + this.$route.query.trialId + ';path=/'
}, },
// trialId(v) { trialId(v) {
// getUserDocumentList({ TrialId: this.$route.query.trialId }).then( getTrialInfoHir(this.trialId).then(
// async (res) => { async (res) => {
// var total = res.OtherInfo.NeedSignCount; var TrialStatusStr = res.Result.TrialStatusStr;
// var TrialStatusStr = res.OtherInfo.TrialStatusStr; this.TrialStatusStr = TrialStatusStr;
// this.IsAdditionalAssessment = res.OtherInfo.IsAdditionalAssessment; await store.dispatch("user/setTrialStatusStr", TrialStatusStr);
// this.TrialStatusStr = TrialStatusStr; }
// await store.dispatch("user/setTotalNeedSignTrialDocCount", total); );
// await store.dispatch("user/setTrialStatusStr", TrialStatusStr); },
// this.TrialConfig = res.OtherInfo.TrialConfig;
// this.IsAllOnlySRReading = res.OtherInfo.IsAllOnlySRReading;
// }
// );
// },
}, },
mounted() { mounted() {
// console.log(this.trialsRouter); // console.log(this.trialsRouter);
@ -150,18 +120,13 @@ export default {
if (~url.indexOf("?")) { if (~url.indexOf("?")) {
query = url.split("?")[1]; query = url.split("?")[1];
} }
// getUserDocumentList({ TrialId: this.$route.query.trialId }).then( getTrialInfoHir(this.$route.query.trialId).then(
// async (res) => { async (res) => {
// var total = res.OtherInfo.NeedSignCount; var TrialStatusStr = res.Result.TrialStatusStr;
// var TrialStatusStr = res.OtherInfo.TrialStatusStr; this.TrialStatusStr = TrialStatusStr;
// this.IsAdditionalAssessment = res.OtherInfo.IsAdditionalAssessment; await store.dispatch("user/setTrialStatusStr", TrialStatusStr);
// this.TrialStatusStr = TrialStatusStr; }
// await store.dispatch("user/setTotalNeedSignTrialDocCount", total); );
// await store.dispatch("user/setTrialStatusStr", TrialStatusStr);
// this.TrialConfig = res.OtherInfo.TrialConfig;
// this.IsAllOnlySRReading = res.OtherInfo.IsAllOnlySRReading;
// }
// );
this.selectedTab(); this.selectedTab();
this.getTrialList(); this.getTrialList();
var firstGoIn = this.trialsRouter.children.find((v) => { var firstGoIn = this.trialsRouter.children.find((v) => {
@ -260,7 +225,7 @@ export default {
this.options = res.Result; this.options = res.Result;
this.tabTrialsId = this.$route.query.trialId; this.tabTrialsId = this.$route.query.trialId;
}) })
.catch(() => {}); .catch(() => { });
}, },
selectedTab() { selectedTab() {
var path = this.$route.path; var path = this.$route.path;
@ -329,18 +294,23 @@ export default {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
&:hover { &:hover {
color: #428bca; color: #428bca;
} }
span { span {
margin-left: 3px; margin-left: 3px;
font-size: 14px; font-size: 14px;
} }
} }
.el-tabs__header { .el-tabs__header {
margin-bottom: 3px; margin-bottom: 3px;
} }
position: relative; position: relative;
.el-input--medium .el-input__inner { .el-input--medium .el-input__inner {
height: 44px; height: 44px;
line-height: 44px; line-height: 44px;
@ -349,16 +319,20 @@ export default {
text-align: right; text-align: right;
} }
} }
.base-model-wrapper { .base-model-wrapper {
.el-dialog__header { .el-dialog__header {
padding: 10px; padding: 10px;
.el-dialog__headerbtn { .el-dialog__headerbtn {
top: 10px; top: 10px;
right: 10px; right: 10px;
} }
} }
.el-dialog__body { .el-dialog__body {
padding: 10px 10px 10px 10px; padding: 10px 10px 10px 10px;
.base-modal-body { .base-modal-body {
min-height: 100px; min-height: 100px;
max-height: 650px; max-height: 650px;
@ -367,6 +341,7 @@ export default {
border: 1px solid #e0e0e0; border: 1px solid #e0e0e0;
} }
} }
.el-dialog__footer { .el-dialog__footer {
padding: 10px; padding: 10px;
} }

View File

@ -220,7 +220,7 @@ export default {
if (!this.users || this.users.length <= 0) return '' if (!this.users || this.users.length <= 0) return ''
let str = '' let str = ''
this.users.forEach((item, index) => { this.users.forEach((item, index) => {
str += `${item.UserName}(${item.UserType})` str += `${item.UserName}(${item.UserTypeShortName})`
if (index < this.users.length - 1) { if (index < this.users.length - 1) {
str += '; ' str += '; '
} }
@ -291,7 +291,7 @@ export default {
this.formLoading = false; this.formLoading = false;
this.users = res.Result; this.users = res.Result;
if (this.users && this.users.length > 0) { if (this.users && this.users.length > 0) {
this.form.UserId = this.users[0].UserId this.form.UserId = this.users[0].IdentityUserId
} }
this.isVerify = true; this.isVerify = true;
this.$message.success(this.$t("passwordReset:button:verifySuccess")); this.$message.success(this.$t("passwordReset:button:verifySuccess"));

View File

@ -4,12 +4,7 @@
<div class="filter-container"> <div class="filter-container">
<!-- 姓名 --> <!-- 姓名 -->
<span>{{ $t("trials:staff:table:name") }}:</span> <span>{{ $t("trials:staff:table:name") }}:</span>
<el-input <el-input v-model="listQuery.UserRealName" size="mini" class="mr" clearable />
v-model="listQuery.UserRealName"
size="mini"
class="mr"
clearable
/>
<!-- 用户名 --> <!-- 用户名 -->
<!-- <span>{{ $t("trials:staff:table:uid") }}:</span> <!-- <span>{{ $t("trials:staff:table:uid") }}:</span>
<el-input <el-input
@ -20,152 +15,67 @@
/> --> /> -->
<!-- 单位 --> <!-- 单位 -->
<span>{{ $t("trials:staff:table:organization") }}:</span> <span>{{ $t("trials:staff:table:organization") }}:</span>
<el-input <el-input v-model="listQuery.OrganizationName" size="mini" class="mr" clearable />
v-model="listQuery.OrganizationName"
size="mini"
class="mr"
clearable
/>
<!-- 邮箱 --> <!-- 邮箱 -->
<span>{{ $t("trials:externalStaff:table:email") }}:</span> <span>{{ $t("trials:externalStaff:table:email") }}:</span>
<el-input v-model="listQuery.EMail" size="mini" class="mr" clearable /> <el-input v-model="listQuery.EMail" size="mini" class="mr" clearable />
<!-- 用户类型 --> <!-- 用户类型 -->
<span>{{ $t("trials:staff:table:userType") }}:</span> <span>{{ $t("trials:staff:table:userType") }}:</span>
<el-select <el-select v-model="listQuery.UserTypeEnum" size="mini" clearable class="mr">
v-model="listQuery.UserTypeEnum" <el-option v-for="item of userTypeOptions" :key="item.Id" :label="item.UserType" :value="item.UserTypeEnum">
size="mini"
clearable
class="mr"
>
<el-option
v-for="item of userTypeOptions"
:key="item.Id"
:label="item.UserType"
:value="item.UserTypeEnum"
>
</el-option> </el-option>
</el-select> </el-select>
<!-- 查询 --> <!-- 查询 -->
<el-button <el-button type="primary" size="mini" icon="el-icon-search" @click="handleSearch">
type="primary"
size="mini"
icon="el-icon-search"
@click="handleSearch"
>
{{ $t("common:button:search") }} {{ $t("common:button:search") }}
</el-button> </el-button>
<!-- 重置 --> <!-- 重置 -->
<el-button <el-button size="mini" type="primary" icon="el-icon-refresh-left" @click="handleReset">
size="mini"
type="primary"
icon="el-icon-refresh-left"
@click="handleReset"
>
{{ $t("common:button:reset") }} {{ $t("common:button:reset") }}
</el-button> </el-button>
<!--添加新用户--> <!--添加新用户-->
<el-button <el-button type="primary" size="mini" icon="el-icon-plus" @click="handleAdd" v-hasPermi="['role:pm']">
type="primary"
size="mini"
icon="el-icon-plus"
@click="handleAdd"
v-hasPermi="['role:pm']"
>
{{ $t("common:button:add") }} {{ $t("common:button:add") }}
</el-button> </el-button>
<!--确认用户选择--> <!--确认用户选择-->
<el-button <el-button type="primary" size="mini" style="margin-left: auto" :disabled="selectArr.length === 0"
type="primary" :loading="assignLoadStatus" @click="handleAssign">
size="mini"
style="margin-left: auto"
:disabled="selectArr.length === 0"
:loading="assignLoadStatus"
@click="handleAssign"
>
{{ $t("common:button:confirm") }} {{ $t("common:button:confirm") }}
</el-button> </el-button>
</div> </div>
</el-header> </el-header>
<el-main> <el-main>
<div class="data-table"> <div class="data-table">
<el-table <el-table :data="list" stripe height="400px" class="participant-table-list"
:data="list" @selection-change="handleSelectChange" @sort-change="handleSortByColumn">
stripe <el-table-column type="selection" width="50" :selectable="handleSelectable" />
height="400px"
class="participant-table-list"
@selection-change="handleSelectChange"
@sort-change="handleSortByColumn"
>
<el-table-column
type="selection"
width="50"
:selectable="handleSelectable"
/>
<el-table-column type="index" width="50" /> <el-table-column type="index" width="50" />
<!-- 姓名 --> <!-- 姓名 -->
<el-table-column <el-table-column prop="UserRealName" :label="$t('trials:staff:table:name')" show-overflow-tooltip
prop="UserRealName" sortable="custom" min-width="100" />
:label="$t('trials:staff:table:name')"
show-overflow-tooltip
sortable="custom"
min-width="100"
/>
<!-- 用户名 --> <!-- 用户名 -->
<el-table-column <el-table-column prop="UserName" :label="$t('trials:staff:table:uid')" show-overflow-tooltip sortable="custom"
prop="UserName" min-width="100" />
:label="$t('trials:staff:table:uid')"
show-overflow-tooltip
sortable="custom"
min-width="100"
/>
<!-- 电话 --> <!-- 电话 -->
<el-table-column <el-table-column prop="Phone" :label="$t('trials:staff:table:phone')" show-overflow-tooltip sortable="custom"
prop="Phone" min-width="120" />
:label="$t('trials:staff:table:phone')"
show-overflow-tooltip
sortable="custom"
min-width="120"
/>
<!-- 邮箱 --> <!-- 邮箱 -->
<el-table-column <el-table-column prop="EMail" :label="$t('trials:staff:table:email')" show-overflow-tooltip sortable="custom"
prop="EMail" min-width="120" />
:label="$t('trials:staff:table:email')"
show-overflow-tooltip
sortable="custom"
min-width="120"
/>
<!-- 单位 --> <!-- 单位 -->
<el-table-column <el-table-column prop="OrganizationName" :label="$t('trials:staff:table:organization')" show-overflow-tooltip
prop="OrganizationName" min-width="150" sortable="custom" />
:label="$t('trials:staff:table:organization')"
show-overflow-tooltip
min-width="150"
sortable="custom"
/>
<!-- 用户类型 --> <!-- 用户类型 -->
<el-table-column <el-table-column prop="UserType" :label="$t('trials:staff:table:userType')" show-overflow-tooltip
prop="UserType" sortable="custom" min-width="100" />
:label="$t('trials:staff:table:userType')"
show-overflow-tooltip
sortable="custom"
min-width="100"
/>
</el-table> </el-table>
</div> </div>
</el-main> </el-main>
<div class="pagination" style="text-align: right; margin-top: 5px"> <div class="pagination" style="text-align: right; margin-top: 5px">
<pagination <pagination :total="total" :page.sync="listQuery.PageIndex" :limit.sync="listQuery.PageSize"
:total="total" @pagination="getList" />
:page.sync="listQuery.PageIndex"
:limit.sync="listQuery.PageSize"
@pagination="getList"
/>
</div> </div>
<staffExternalAdd <staffExternalAdd ref="StaffExternalAdd" :userTypeOptions="userTypeOptions" @getList="getList" />
ref="StaffExternalAdd"
:userTypeOptions="userTypeOptions"
@getList="getList"
/>
</el-container> </el-container>
</template> </template>
<script> <script>
@ -181,6 +91,7 @@ const getListQueryDefault = () => {
UserTypeEnum: "", UserTypeEnum: "",
PageIndex: 1, PageIndex: 1,
PageSize: 20, PageSize: 20,
TrialId: null
}; };
}; };
export default { export default {
@ -200,7 +111,7 @@ export default {
listQuery: getListQueryDefault(), listQuery: getListQueryDefault(),
selectArr: [], selectArr: [],
assignLoadStatus: false, assignLoadStatus: false,
isAdmin: JSON.parse(zzSessionStorage.getItem("IsAdmin")), // isAdmin: JSON.parse(zzSessionStorage.getItem("IsAdmin")),
trialId: "", trialId: "",
qCProcessEnum: null, qCProcessEnum: null,
}; };
@ -225,7 +136,7 @@ export default {
fullscreen: false, fullscreen: false,
lock: true, lock: true,
}); });
this.listQuery.TrialId = this.trialId; this.listQuery.TrialId = this.trialId || this.$route.query.trialId;
getTrialUserScreeningList(this.listQuery) getTrialUserScreeningList(this.listQuery)
.then((res) => { .then((res) => {
loading.close(); loading.close();
@ -304,23 +215,28 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.participant-container { .participant-container {
height: 100%; height: 100%;
.el-header { .el-header {
.filter-container { .filter-container {
display: flex; display: flex;
align-items: center; align-items: center;
span { span {
font-size: 13px; font-size: 13px;
margin-right: 5px; margin-right: 5px;
} }
.mr { .mr {
margin-right: 5px; margin-right: 5px;
width: 120px; width: 120px;
} }
} }
} }
.el-main { .el-main {
padding: 0px; padding: 0px;
} }
.el-footer { .el-footer {
padding: 0 20px; padding: 0 20px;
} }