Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
c2083e9c9c
|
@ -3691,3 +3691,27 @@ export function getNextCRCChallenge(param) {
|
|||
data: param
|
||||
})
|
||||
}
|
||||
|
||||
// 获取中心dicomae列表
|
||||
export function getTrialSiteDicomAEList(param) {
|
||||
return request({
|
||||
url: `/TrialSiteDicomAE/getTrialSiteDicomAEList`,
|
||||
method: 'post',
|
||||
data: param
|
||||
})
|
||||
}
|
||||
// 新增或修改中心dicomae信息
|
||||
export function addOrUpdateTrialSiteDicomAE(param) {
|
||||
return request({
|
||||
url: `/TrialSiteDicomAE/addOrUpdateTrialSiteDicomAE`,
|
||||
method: 'post',
|
||||
data: param
|
||||
})
|
||||
}
|
||||
// 删除中心dicomae信息
|
||||
export function deleteTrialSiteDicomAE(id) {
|
||||
return request({
|
||||
url: `/TrialSiteDicomAE/deleteTrialSiteDicomAE/${id}`,
|
||||
method: 'delete',
|
||||
})
|
||||
}
|
|
@ -0,0 +1,127 @@
|
|||
<template>
|
||||
<base-model v-if="config.visible" :config="config">
|
||||
<template slot="dialog-body">
|
||||
<el-button type="primary" icon="el-icon-plus" @click="openAdd" style="float: right" v-if="status === 'add'">
|
||||
{{ $t("common:button:add") }}
|
||||
</el-button>
|
||||
<el-table v-loading="loading" :data="list" stripe>
|
||||
<!-- AE 名称 -->
|
||||
<el-table-column prop="CallingAE" :label="$t('trials:sitesList:dicomAEList:table:AEName')" show-overflow-tooltip
|
||||
min-width="120" />
|
||||
<!-- IP地址 -->
|
||||
<el-table-column prop="IP" :label="$t('trials:sitesList:dicomAEList:table:ip')" show-overflow-tooltip
|
||||
min-width="120" />
|
||||
<!-- 端口 -->
|
||||
<el-table-column prop="Port" :label="$t('trials:sitesList:dicomAEList:table:port')" show-overflow-tooltip
|
||||
min-width="120" />
|
||||
<!-- 说明 -->
|
||||
<el-table-column prop="Description" :label="$t('trials:sitesList:dicomAEList:table:description')"
|
||||
show-overflow-tooltip min-width="120" />
|
||||
<!-- 操作 -->
|
||||
<!-- <el-table-column prop="action" :label="$t('trials:sitesList:dicomAEList:table:action')" min-width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-button circle :title="$t('trials:sitesList:dicomAEList:action:del')" icon="el-icon-delete"
|
||||
:disabled="scope.row.IsDeleted" @click="delDicom(scope.row)" />
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
|
||||
</el-table>
|
||||
<dicomForm ref="dicomForm" @getList="getList" @save="save" />
|
||||
</template>
|
||||
</base-model>
|
||||
</template>
|
||||
<script>
|
||||
import BaseModel from "@/components/BaseModel";
|
||||
import dicomForm from "./dicomForm.vue";
|
||||
import {
|
||||
getTrialSiteDicomAEList,
|
||||
deleteTrialSiteDicomAE
|
||||
} from "@/api/trials";
|
||||
const defaultSearchData = () => {
|
||||
return {
|
||||
TrialSiteId: null,
|
||||
CallingAE: null,
|
||||
Ip: null,
|
||||
Port: null,
|
||||
Description: null,
|
||||
};
|
||||
};
|
||||
export default {
|
||||
name: "dicomAE",
|
||||
components: { BaseModel, dicomForm },
|
||||
data() {
|
||||
return {
|
||||
config: {
|
||||
visible: false,
|
||||
title: null,
|
||||
width: "800px",
|
||||
appendToBody: true
|
||||
},
|
||||
status: "add",
|
||||
TrialSiteId: null,
|
||||
loading: false,
|
||||
list: [],
|
||||
searchData: defaultSearchData(),
|
||||
siteData: {},
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
open(row, status = "add") {
|
||||
this.status = status;
|
||||
this.TrialSiteId = row.TrialSiteId;
|
||||
this.config.title = this.$t(
|
||||
"trials:trials-panel:setting:personnel-manage:dicomAETitle"
|
||||
).replace("xxx", `${row.TrialSiteCode}、${row.TrialSiteAliasName}`);
|
||||
this.siteData = row;
|
||||
this.config.visible = true;
|
||||
this.getList();
|
||||
},
|
||||
// 获取dicomAE列表
|
||||
async getList() {
|
||||
try {
|
||||
this.searchData.TrialSiteId = this.TrialSiteId;
|
||||
this.loading = true;
|
||||
let res = await getTrialSiteDicomAEList(this.searchData);
|
||||
this.loading = false;
|
||||
if (res.IsSuccess) {
|
||||
this.list = res.Result;
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
this.loading = false;
|
||||
}
|
||||
},
|
||||
// 新增
|
||||
openAdd() {
|
||||
this.$refs.dicomForm.open(this.siteData, null, 'add');
|
||||
},
|
||||
save() {
|
||||
this.$emit('getList')
|
||||
},
|
||||
// 删除dicom
|
||||
async delDicom(row) {
|
||||
try {
|
||||
let confirm = await this.$confirm(
|
||||
this.$t("trials:sitesList:dicomAEList:confirm:delMessage"),
|
||||
{
|
||||
type: "warning",
|
||||
distinguishCancelAndClose: true,
|
||||
confirmButtonText: this.$t("common:button:confirm"),
|
||||
cancelButtonText: this.$t("common:button:cancel"),
|
||||
}
|
||||
);
|
||||
if (confirm !== "confirm") return;
|
||||
let res = await deleteTrialSiteDicomAE(row.Id);
|
||||
if (res.IsSuccess) {
|
||||
this.getList();
|
||||
this.save();
|
||||
this.$t('common:message:deletedSuccessfully');
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
|
@ -0,0 +1,183 @@
|
|||
<template>
|
||||
<base-model v-if="config.visible" :config="config">
|
||||
<template slot="dialog-body">
|
||||
<el-form ref="dicomForm" :model="form" label-width="100px" :rules="rules">
|
||||
<!-- 中心编号 -->
|
||||
<el-form-item :label="$t('trials:sitesList:table:siteId')" prop="TrialSiteCode">
|
||||
<el-input v-model="siteData.TrialSiteCode" disabled />
|
||||
</el-form-item>
|
||||
<!-- 中心别称 -->
|
||||
<el-form-item :label="$t('trials:sitesList:table:siteName')" prop="TrialSiteAliasName">
|
||||
<el-input v-model="siteData.TrialSiteAliasName" disabled />
|
||||
</el-form-item>
|
||||
<!-- AE -->
|
||||
<el-form-item :label="$t('trials:setting:siteList:dicomForm:dicomAE')" prop="CallingAE">
|
||||
<el-input v-model="form.CallingAE" clearable maxlength="16" />
|
||||
</el-form-item>
|
||||
<!-- IP -->
|
||||
<el-form-item :label="$t('trials:setting:siteList:dicomForm:ip')" prop="Ip">
|
||||
<el-input v-model="form.Ip" clearable />
|
||||
</el-form-item>
|
||||
<!-- PORT -->
|
||||
<el-form-item :label="$t('trials:setting:siteList:dicomForm:port')" prop="Port">
|
||||
<el-input v-model.number="form.Port" type="number" clearable />
|
||||
</el-form-item>
|
||||
<!-- 说明 -->
|
||||
<el-form-item :label="$t('trials:setting:siteList:dicomForm:description')" prop="Description">
|
||||
<el-input v-model="form.Description" clearable />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
<template slot="dialog-footer">
|
||||
<el-button type="primary" size="small" :disabled="loading" @click="config.visible = false">
|
||||
{{ $t("common:button:cancel") }}
|
||||
</el-button>
|
||||
<el-button type="primary" size="small" :loading="loading" @click="save">
|
||||
{{ $t("common:button:save") }}
|
||||
</el-button>
|
||||
</template>
|
||||
</base-model>
|
||||
</template>
|
||||
<script>
|
||||
import {
|
||||
addOrUpdateTrialSiteDicomAE,
|
||||
} from "@/api/trials";
|
||||
import BaseModel from "@/components/BaseModel";
|
||||
export default {
|
||||
name: "dicomForm",
|
||||
components: { BaseModel },
|
||||
data() {
|
||||
return {
|
||||
config: {
|
||||
visible: false,
|
||||
title: null,
|
||||
width: "600px",
|
||||
appendToBody: true,
|
||||
},
|
||||
form: {
|
||||
Id: null,
|
||||
CallingAE: null,
|
||||
Ip: null,
|
||||
Port: null,
|
||||
Description: null
|
||||
},
|
||||
rules: {
|
||||
CallingAE: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:specify"),
|
||||
trigger: "blur",
|
||||
},
|
||||
{
|
||||
pattern: /[a-zA-Z0-9]/,
|
||||
message: this.$t("common:ruleMessage:CallingAEPattern"),
|
||||
trigger: "blur",
|
||||
},
|
||||
{
|
||||
min: 1,
|
||||
max: 16,
|
||||
message: this.$t("common:ruleMessage:CallingAEPattern"),
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
Ip: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:specify"),
|
||||
trigger: "blur",
|
||||
},
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (
|
||||
value === "" ||
|
||||
typeof value === "undefined" ||
|
||||
value == null
|
||||
) {
|
||||
callback(new Error(this.$t("common:ruleMessage:ipPattern")));
|
||||
} else {
|
||||
const reg =
|
||||
/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
|
||||
if (!reg.test(value) && value !== "") {
|
||||
callback(new Error(this.$t("common:ruleMessage:ipPattern")));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
}
|
||||
},
|
||||
message: this.$t("common:ruleMessage:ipPattern"),
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
Port: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t("common:ruleMessage:specify"),
|
||||
trigger: "blur",
|
||||
},
|
||||
{
|
||||
type: "number",
|
||||
min: 0,
|
||||
max: 65535,
|
||||
message: this.$t("common:ruleMessage:portPattern"),
|
||||
trigger: "blur",
|
||||
},
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (
|
||||
value &&
|
||||
(String(value).includes(".") ||
|
||||
new RegExp(/\D/g).test(String(value)))
|
||||
) {
|
||||
callback(new Error(this.$t("common:ruleMessage:portPattern")));
|
||||
} else {
|
||||
callback();
|
||||
}
|
||||
},
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
},
|
||||
siteData: {},
|
||||
loading: false,
|
||||
status: 'add'
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
open(siteData, data = null, status = 'add') {
|
||||
this.siteData = siteData;
|
||||
this.status = status;
|
||||
if (data) {
|
||||
Object.keys(this.form).forEach(key => {
|
||||
this.form[key] = data[key];
|
||||
})
|
||||
}
|
||||
this.config.title = this.$t(
|
||||
"trials:trials-panel:setting:personnel-manage:dicomAETitle"
|
||||
).replace("xxx", `${siteData.TrialSiteCode}、${siteData.TrialSiteAliasName}`);
|
||||
this.config.visible = true;
|
||||
},
|
||||
// 保存
|
||||
async save() {
|
||||
try {
|
||||
let validate = await this.$refs.dicomForm.validate();
|
||||
if (!validate) return false;
|
||||
this.loading = true;
|
||||
this.form.TrialSiteId = this.siteData.TrialSiteId;
|
||||
this.form.TrialId = this.$route.query.trialId;
|
||||
let res = await addOrUpdateTrialSiteDicomAE(this.form);
|
||||
this.loading = false;
|
||||
if (res.IsSuccess) {
|
||||
this.status === 'add' ? this.$t('common:message:savedSuccessfully') : this.$t('common:message:savedFail');
|
||||
this.$emit('getList');
|
||||
this.$emit("save");
|
||||
this.config.visible = false;
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
this.loading = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
|
@ -16,23 +16,13 @@
|
|||
</el-form-item> -->
|
||||
<!-- 关键词 -->
|
||||
<el-form-item :label="$t('trials:sitesList:form:keyWord')">
|
||||
<el-input
|
||||
v-model="listQuery.UserKeyInfo"
|
||||
style="width: 200px"
|
||||
class="mr"
|
||||
clearable
|
||||
:placeholder="$t('trials:sitesList:formPlaceholder:keyWord')"
|
||||
/>
|
||||
<el-input v-model="listQuery.UserKeyInfo" style="width: 200px" class="mr" clearable
|
||||
:placeholder="$t('trials:sitesList:formPlaceholder:keyWord')" />
|
||||
</el-form-item>
|
||||
<!-- 状态 -->
|
||||
<el-form-item :label="$t('trials:sitesList:table:status')">
|
||||
<el-select v-model="listQuery.IsDeleted" clearable class="mr">
|
||||
<el-option
|
||||
v-for="item of $d.IsSiteDisable"
|
||||
:key="item.label"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
<el-option v-for="item of $d.IsSiteDisable" :key="item.label" :label="item.label" :value="item.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
@ -41,120 +31,60 @@
|
|||
{{ $t("common:button:search") }}
|
||||
</el-button>
|
||||
<!-- 重置 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-refresh-left"
|
||||
@click="handleReset"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
|
||||
{{ $t("common:button:reset") }}
|
||||
</el-button>
|
||||
<!-- 中心调研 -->
|
||||
<el-button
|
||||
v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:questionnaire-record',
|
||||
]"
|
||||
type="primary"
|
||||
icon="el-icon-info"
|
||||
@click="handleResearchList"
|
||||
>
|
||||
<el-button v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:questionnaire-record',
|
||||
]" type="primary" icon="el-icon-info" @click="handleResearchList">
|
||||
{{ $t("trials:sitesList:button:siteResearch") }}
|
||||
</el-button>
|
||||
<!-- 添加中心 -->
|
||||
<el-button
|
||||
v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:add-site',
|
||||
]"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
@click="handleAdd"
|
||||
>
|
||||
<el-button v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:add-site',
|
||||
]" type="primary" icon="el-icon-plus" @click="handleAdd">
|
||||
{{ $t("trials:sitesList:dialogTitle:assignSite") }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-download"
|
||||
:disabled="list.length === 0"
|
||||
@click="handleResearchListExport"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-download" :disabled="list.length === 0"
|
||||
@click="handleResearchListExport">
|
||||
{{ $t("common:button:export") }}
|
||||
</el-button>
|
||||
<!-- 下载模板 -->
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="el-icon-download"
|
||||
@click="handleDownload"
|
||||
>
|
||||
<el-button type="primary" icon="el-icon-download" @click="handleDownload">
|
||||
{{ $t("common:button:downloadTpl") }}
|
||||
</el-button>
|
||||
<el-button
|
||||
v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:add-site',
|
||||
]"
|
||||
type="primary"
|
||||
icon="el-icon-upload2"
|
||||
@click="handleUpload"
|
||||
>
|
||||
<el-button v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:add-site',
|
||||
]" type="primary" icon="el-icon-upload2" @click="handleUpload">
|
||||
{{ $t("common:button:upload") }}
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
<el-table
|
||||
v-loading="listLoading"
|
||||
:data="list"
|
||||
stripe
|
||||
@sort-change="handleSortByColumn"
|
||||
>
|
||||
<el-table v-loading="listLoading" :data="list" stripe @sort-change="handleSortByColumn">
|
||||
<el-table-column type="index" width="50" />
|
||||
<!-- 中心编号 -->
|
||||
<el-table-column
|
||||
prop="TrialSiteCode"
|
||||
:label="$t('trials:sitesList:table:siteId')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
width="120"
|
||||
>
|
||||
<el-table-column prop="TrialSiteCode" :label="$t('trials:sitesList:table:siteId')" show-overflow-tooltip
|
||||
sortable="custom" width="120">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="!!scope.row.TrialSiteCode">{{
|
||||
scope.row.TrialSiteCode
|
||||
}}</span>
|
||||
<i
|
||||
v-else
|
||||
class="el-icon-warning"
|
||||
style="color: #f44336; font-size: 14px"
|
||||
/>
|
||||
<i v-else class="el-icon-warning" style="color: #f44336; font-size: 14px" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 中心名称 -->
|
||||
<el-table-column
|
||||
prop="TrialSiteName"
|
||||
:label="$t('trials:sitesList:table:siteName')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
min-width="120"
|
||||
/>
|
||||
<el-table-column prop="TrialSiteName" :label="$t('trials:sitesList:table:siteName')" show-overflow-tooltip
|
||||
sortable="custom" min-width="120" />
|
||||
<!-- 中心别名 -->
|
||||
<el-table-column
|
||||
prop="TrialSiteAliasName"
|
||||
:label="$t('trials:sitesList:table:siteAliasName')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
min-width="120"
|
||||
/>
|
||||
<el-table-column prop="TrialSiteAliasName" :label="$t('trials:sitesList:table:siteAliasName')"
|
||||
show-overflow-tooltip sortable="custom" min-width="120" />
|
||||
<!-- 参与者 -->
|
||||
<el-table-column
|
||||
prop="UserNameList"
|
||||
:label="$t('trials:sitesList:table:staff')"
|
||||
show-overflow-tooltip
|
||||
min-width="100"
|
||||
>
|
||||
<el-table-column prop="UserNameList" :label="$t('trials:sitesList:table:staff')" show-overflow-tooltip
|
||||
min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-if="scope.row.UserCount > 0"
|
||||
size="small"
|
||||
type="text"
|
||||
@click="getCrcList(scope.row)"
|
||||
>
|
||||
<el-button v-if="scope.row.UserCount > 0" size="small" type="text" @click="getCrcList(scope.row)">
|
||||
{{
|
||||
scope.row.UserNameList.length > 0
|
||||
? scope.row.UserNameList.join(", ")
|
||||
|
@ -164,29 +94,14 @@
|
|||
</template>
|
||||
</el-table-column>
|
||||
<!-- Subjects -->
|
||||
<el-table-column
|
||||
prop="SubjectCount"
|
||||
min-width="100"
|
||||
:label="$t('trials:site:table:subjects')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="SubjectCount" min-width="100" :label="$t('trials:site:table:subjects')"
|
||||
show-overflow-tooltip sortable="custom" />
|
||||
<!-- Visits -->
|
||||
<el-table-column
|
||||
prop="VisitCount"
|
||||
min-width="100"
|
||||
:label="$t('trials:site:table:visits')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
/>
|
||||
<el-table-column prop="VisitCount" min-width="100" :label="$t('trials:site:table:visits')" show-overflow-tooltip
|
||||
sortable="custom" />
|
||||
<!-- 状态 -->
|
||||
<el-table-column
|
||||
prop="IsDeleted"
|
||||
:label="$t('trials:sitesList:table:status')"
|
||||
show-overflow-tooltip
|
||||
sortable
|
||||
min-width="100"
|
||||
>
|
||||
<el-table-column prop="IsDeleted" :label="$t('trials:sitesList:table:status')" show-overflow-tooltip sortable
|
||||
min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.IsDeleted" type="danger">{{
|
||||
$fd("IsSiteDisable", scope.row.IsDeleted)
|
||||
|
@ -196,53 +111,45 @@
|
|||
}}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 授权时间 -->
|
||||
<el-table-column
|
||||
prop="EnabledTime"
|
||||
:label="$t('trials:sitesList:table:timeAdded')"
|
||||
show-overflow-tooltip
|
||||
sortable
|
||||
min-width="150"
|
||||
/>
|
||||
<el-table-column
|
||||
v-if="
|
||||
hasPermi([
|
||||
'trials:trials-panel:setting:personnel-manage:edit-site',
|
||||
'trials:trials-panel:setting:personnel-manage:remove-site',
|
||||
])
|
||||
"
|
||||
:label="$t('common:action:action')"
|
||||
min-width="120"
|
||||
>
|
||||
<!-- DICOM AE -->
|
||||
<el-table-column prop="CallingAEList" :label="$t('trials:sitesList:table:AE')" show-overflow-tooltip sortable
|
||||
min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
circle
|
||||
:title="$t('trials:sitesList:action:assign')"
|
||||
icon="el-icon-user"
|
||||
:disabled="scope.row.IsDeleted"
|
||||
@click="getCrcList(scope.row)"
|
||||
/>
|
||||
<el-button v-if="scope.row.CallingAEList.length > 0" size="small" type="text"
|
||||
@click="handleConfig(scope.row, 'view')">
|
||||
{{
|
||||
scope.row.CallingAEList.length > 0
|
||||
? scope.row.CallingAEList.join(", ")
|
||||
: ""
|
||||
}}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- 授权时间 -->
|
||||
<el-table-column prop="EnabledTime" :label="$t('trials:sitesList:table:timeAdded')" show-overflow-tooltip sortable
|
||||
min-width="150" />
|
||||
<el-table-column v-if="
|
||||
hasPermi([
|
||||
'trials:trials-panel:setting:personnel-manage:edit-site',
|
||||
'trials:trials-panel:setting:personnel-manage:remove-site',
|
||||
])
|
||||
" :label="$t('common:action:action')" min-width="120">
|
||||
<template slot-scope="scope">
|
||||
<el-button circle :title="$t('trials:sitesList:action:assign')" icon="el-icon-user"
|
||||
:disabled="scope.row.IsDeleted" @click="getCrcList(scope.row)" />
|
||||
|
||||
<!-- Edit -->
|
||||
<el-button
|
||||
v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:edit-site',
|
||||
]"
|
||||
circle
|
||||
:title="$t('common:button:edit')"
|
||||
icon="el-icon-edit-outline"
|
||||
@click="handleEdit(scope.row)"
|
||||
/>
|
||||
<el-button v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:edit-site',
|
||||
]" circle :title="$t('common:button:edit')" icon="el-icon-edit-outline" @click="handleEdit(scope.row)" />
|
||||
<el-button circle :title="$t('common:button:config')" icon="el-icon-setting"
|
||||
@click="handleConfig(scope.row, 'add')" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<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>
|
||||
|
||||
<!-- 给site分配crc -->
|
||||
|
@ -255,66 +162,31 @@
|
|||
<!-- 修改site信息 -->
|
||||
<base-model v-if="edit_model.visible" :config="edit_model">
|
||||
<template slot="dialog-body">
|
||||
<el-form
|
||||
ref="editForm"
|
||||
:model="form"
|
||||
label-width="100px"
|
||||
:rules="rules"
|
||||
>
|
||||
<el-form ref="editForm" :model="form" label-width="100px" :rules="rules">
|
||||
<!-- 中心编号 -->
|
||||
<el-form-item
|
||||
:label="$t('trials:sitesList:table:siteId')"
|
||||
prop="TrialSiteCode"
|
||||
>
|
||||
<el-form-item :label="$t('trials:sitesList:table:siteId')" prop="TrialSiteCode">
|
||||
<el-input v-model="form.TrialSiteCode" />
|
||||
</el-form-item>
|
||||
<!-- 中心名称 -->
|
||||
<el-form-item
|
||||
:label="$t('trials:sitesList:table:siteName')"
|
||||
prop="TrialSiteName"
|
||||
>
|
||||
<el-autocomplete
|
||||
clearable
|
||||
class="inline-input"
|
||||
style="width: 100%"
|
||||
v-model="form.TrialSiteName"
|
||||
:fetch-suggestions="querySearch"
|
||||
@select="handleSelect"
|
||||
placeholder=""
|
||||
></el-autocomplete>
|
||||
<el-form-item :label="$t('trials:sitesList:table:siteName')" prop="TrialSiteName">
|
||||
<el-autocomplete clearable class="inline-input" style="width: 100%" v-model="form.TrialSiteName"
|
||||
:fetch-suggestions="querySearch" @select="handleSelect" placeholder=""></el-autocomplete>
|
||||
</el-form-item>
|
||||
<!-- 中心别称 -->
|
||||
<el-form-item
|
||||
:label="$t('trials:sitesList:table:siteAliasName')"
|
||||
prop="TrialSiteAliasName"
|
||||
>
|
||||
<el-form-item :label="$t('trials:sitesList:table:siteAliasName')" prop="TrialSiteAliasName">
|
||||
<el-input v-model="form.TrialSiteAliasName" />
|
||||
</el-form-item>
|
||||
<!-- 状态 -->
|
||||
<el-form-item :label="$t('trials:sitesList:table:status')">
|
||||
<el-switch
|
||||
v-model="form.IsDeleted"
|
||||
:active-value="false"
|
||||
:inactive-value="true"
|
||||
/>
|
||||
<el-switch v-model="form.IsDeleted" :active-value="false" :inactive-value="true" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</template>
|
||||
<template slot="dialog-footer">
|
||||
<el-button
|
||||
type="primary"
|
||||
size="small"
|
||||
:disabled="saveBtnLoading"
|
||||
@click="edit_model.visible = false"
|
||||
>
|
||||
<el-button type="primary" size="small" :disabled="saveBtnLoading" @click="edit_model.visible = false">
|
||||
{{ $t("common:button:cancel") }}
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
size="small"
|
||||
:loading="saveBtnLoading"
|
||||
@click="handleUpdateSiteID"
|
||||
>
|
||||
<el-button type="primary" size="small" :loading="saveBtnLoading" @click="handleUpdateSiteID">
|
||||
{{ $t("common:button:save") }}
|
||||
</el-button>
|
||||
</template>
|
||||
|
@ -325,29 +197,14 @@
|
|||
<template slot="dialog-body">
|
||||
<span>{{ $t("trials:internalStaff:table:status") }}:</span>
|
||||
<el-radio-group v-model="staffStatus">
|
||||
<el-radio
|
||||
v-for="item of $d.IsUserExitTrial"
|
||||
:key="item.label"
|
||||
:label="item.value"
|
||||
>{{ item.label }}</el-radio
|
||||
>
|
||||
<el-radio v-for="item of $d.IsUserExitTrial" :key="item.label" :label="item.value">{{ item.label }}</el-radio>
|
||||
</el-radio-group>
|
||||
</template>
|
||||
<template slot="dialog-footer">
|
||||
<el-button
|
||||
:disabled="btnLoading"
|
||||
size="small"
|
||||
type="primary"
|
||||
@click="status_model.visible = false"
|
||||
>
|
||||
<el-button :disabled="btnLoading" size="small" type="primary" @click="status_model.visible = false">
|
||||
{{ $t("common:button:cancel") }}
|
||||
</el-button>
|
||||
<el-button
|
||||
size="small"
|
||||
type="primary"
|
||||
:loading="btnLoading"
|
||||
@click="saveStatus"
|
||||
>
|
||||
<el-button size="small" type="primary" :loading="btnLoading" @click="saveStatus">
|
||||
{{ $t("common:button:save") }}
|
||||
</el-button>
|
||||
</template>
|
||||
|
@ -357,72 +214,33 @@
|
|||
<base-model v-if="siteOfcrc_model.visible" :config="siteOfcrc_model">
|
||||
<template slot="dialog-body">
|
||||
<div style="text-align: right">
|
||||
<el-button
|
||||
v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:assign-staff',
|
||||
]"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
size="small"
|
||||
@click="crc_model.visible = true"
|
||||
>
|
||||
<el-button v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:assign-staff',
|
||||
]" type="primary" icon="el-icon-plus" size="small" @click="crc_model.visible = true">
|
||||
{{ $t("common:button:add") }}
|
||||
</el-button>
|
||||
</div>
|
||||
<el-table
|
||||
v-loading="userListLoading"
|
||||
:data="userList"
|
||||
height="400"
|
||||
size="small"
|
||||
>
|
||||
<el-table v-loading="userListLoading" :data="userList" height="400" size="small">
|
||||
<!-- 姓名 -->
|
||||
<el-table-column
|
||||
prop="UserRealName"
|
||||
:label="$t('trials:internalStaff:table:name')"
|
||||
width="100"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column prop="UserRealName" :label="$t('trials:internalStaff:table:name')" width="100"
|
||||
show-overflow-tooltip />
|
||||
<!-- 用户名 -->
|
||||
<el-table-column
|
||||
prop="UserName"
|
||||
:label="$t('trials:internalStaff:table:uid')"
|
||||
min-width="100"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column prop="UserName" :label="$t('trials:internalStaff:table:uid')" min-width="100"
|
||||
show-overflow-tooltip />
|
||||
<!-- 用户类型 -->
|
||||
<el-table-column
|
||||
prop="UserType"
|
||||
:label="$t('trials:internalStaff:table:userType')"
|
||||
width="100"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column prop="UserType" :label="$t('trials:internalStaff:table:userType')" width="100"
|
||||
show-overflow-tooltip />
|
||||
<!-- 电话 -->
|
||||
<el-table-column
|
||||
prop="Phone"
|
||||
:label="$t('trials:internalStaff:table:phone')"
|
||||
show-overflow-tooltip
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column prop="Phone" :label="$t('trials:internalStaff:table:phone')" show-overflow-tooltip
|
||||
width="100" />
|
||||
<!-- 邮箱 -->
|
||||
<el-table-column
|
||||
prop="EMail"
|
||||
:label="$t('trials:internalStaff:table:email')"
|
||||
show-overflow-tooltip
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column prop="EMail" :label="$t('trials:internalStaff:table:email')" show-overflow-tooltip
|
||||
width="100" />
|
||||
<!-- 单位 -->
|
||||
<el-table-column
|
||||
prop="OrganizationName"
|
||||
:label="$t('trials:internalStaff:table:organization')"
|
||||
width="100"
|
||||
/>
|
||||
<el-table-column prop="OrganizationName" :label="$t('trials:internalStaff:table:organization')" width="100" />
|
||||
<!-- 状态 -->
|
||||
<el-table-column
|
||||
prop="IsDeleted"
|
||||
:label="$t('trials:internalStaff:table:status')"
|
||||
show-overflow-tooltip
|
||||
width="100"
|
||||
>
|
||||
<el-table-column prop="IsDeleted" :label="$t('trials:internalStaff:table:status')" show-overflow-tooltip
|
||||
width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.IsDeleted" type="danger">{{
|
||||
$fd("IsUserExitTrial", scope.row.IsDeleted)
|
||||
|
@ -432,37 +250,18 @@
|
|||
}}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="CreateTime"
|
||||
:label="$t('trials:internalStaff:table:authorizationTime')"
|
||||
show-overflow-tooltip
|
||||
sortable="custom"
|
||||
width="210"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="DeletedTime"
|
||||
:label="$t('trials:internalStaff:table:disableTime')"
|
||||
show-overflow-tooltip
|
||||
sortable
|
||||
width="210"
|
||||
/>
|
||||
<el-table-column
|
||||
v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:assign-staff',
|
||||
]"
|
||||
:label="$t('common:action:action')"
|
||||
width="100"
|
||||
>
|
||||
<el-table-column prop="CreateTime" :label="$t('trials:internalStaff:table:authorizationTime')"
|
||||
show-overflow-tooltip sortable="custom" width="210" />
|
||||
<el-table-column prop="DeletedTime" :label="$t('trials:internalStaff:table:disableTime')"
|
||||
show-overflow-tooltip sortable width="210" />
|
||||
<el-table-column v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:assign-staff',
|
||||
]" :label="$t('common:action:action')" width="100">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:assign-staff',
|
||||
]"
|
||||
circle
|
||||
:title="$t('trials:internalStaff:action:status')"
|
||||
icon="el-icon-edit-outline"
|
||||
@click="handleStatus(scope.row)"
|
||||
/>
|
||||
<el-button v-hasPermi="[
|
||||
'trials:trials-panel:setting:personnel-manage:assign-staff',
|
||||
]" circle :title="$t('trials:internalStaff:action:status')" icon="el-icon-edit-outline"
|
||||
@click="handleStatus(scope.row)" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
@ -471,12 +270,11 @@
|
|||
<!-- 导入 -->
|
||||
<base-model v-if="upload_model.visible" :config="upload_model">
|
||||
<template slot="dialog-body">
|
||||
<UploadExcel
|
||||
@closeDialog="upload_model.visible = false"
|
||||
@getList="getList"
|
||||
/>
|
||||
<UploadExcel @closeDialog="upload_model.visible = false" @getList="getList" />
|
||||
</template>
|
||||
</base-model>
|
||||
<!--dicom AE-->
|
||||
<dicomAEList ref="dicomAEList" @getList="getList" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
|
@ -496,6 +294,7 @@ import CRCForm from "./crcForm";
|
|||
import BaseModel from "@/components/BaseModel";
|
||||
import UploadExcel from "./uploadExcel";
|
||||
import moment from "moment";
|
||||
import dicomAEList from "./dicomAEList.vue";
|
||||
const getListQueryDefault = () => {
|
||||
return {
|
||||
UserKeyInfo: "",
|
||||
|
@ -511,7 +310,7 @@ const getListQueryDefault = () => {
|
|||
};
|
||||
export default {
|
||||
name: "Participant",
|
||||
components: { Pagination, CRCForm, BaseModel, UploadExcel },
|
||||
components: { Pagination, CRCForm, BaseModel, UploadExcel, dicomAEList },
|
||||
data() {
|
||||
return {
|
||||
list: [],
|
||||
|
@ -610,6 +409,10 @@ export default {
|
|||
this.getTrialSiteSelectList();
|
||||
},
|
||||
methods: {
|
||||
// 打开DICOMAE配置列表
|
||||
handleConfig(row, status) {
|
||||
this.$refs.dicomAEList.open(row, status);
|
||||
},
|
||||
handleSelect(item) {
|
||||
this.form.TrialSiteName = item.SiteName;
|
||||
this.form.TrialSiteAliasName = item.AliasName
|
||||
|
@ -891,19 +694,23 @@ export default {
|
|||
.filter-box {
|
||||
display: flex;
|
||||
padding: 5px;
|
||||
|
||||
.base-search-form {
|
||||
.el-form-item {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
.mr {
|
||||
margin-right: 5px;
|
||||
width: 120px;
|
||||
}
|
||||
}
|
||||
|
||||
.el-dialog__header {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.el-dialog__body {
|
||||
padding: 10px;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue