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

View File

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

View File

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