Merge branch 'main' of https://gitea.frp.extimaging.com/XCKJ/irc_web into main
continuous-integration/drone/push Build is passing Details

uat_us
caiyiling 2024-06-11 18:04:33 +08:00
commit a3b9cb7469
8 changed files with 389 additions and 112 deletions

View File

@ -1006,3 +1006,11 @@ export function deleteCommonDocument(commonDocumentId) {
method: 'delete'
})
}
//getTrialSiteList
export function getTrialSiteList(params) {
return request({
url: `/site/getTrialSiteList`,
method: 'post',
data: params
})
}

View File

@ -3,33 +3,50 @@
<div class="search">
<el-form :inline="true" size="small" class="base-search-form">
<el-form-item label="Site Name:">
<el-input v-model="searchData.SiteName" style="width:120px;" />
<el-input v-model="searchData.SiteName" style="width: 120px" />
</el-form-item>
<el-form-item label="Alias Name:">
<el-input v-model="searchData.AliasName" style="width:120px;" />
<el-input v-model="searchData.AliasName" style="width: 120px" />
</el-form-item>
<el-form-item label="Country:">
<el-input v-model="searchData.Country" style="width:120px;" />
<el-input v-model="searchData.Country" style="width: 120px" />
</el-form-item>
<el-form-item label="City:">
<el-input v-model="searchData.City" style="width:120px;" />
<el-input v-model="searchData.City" style="width: 120px" />
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleSearch">Search</el-button>
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">Reset</el-button>
<el-button type="primary" icon="el-icon-search" @click="handleSearch"
>Search</el-button
>
<el-button
type="primary"
icon="el-icon-refresh-left"
@click="handleReset"
>Reset</el-button
>
</el-form-item>
</el-form>
<el-button
type="primary"
size="small"
style="margin-left:auto;"
icon="el-icon-plus"
@click="handleAddSite"
>New</el-button>
<div style="margin-left: auto">
<el-button
type="primary"
size="small"
icon="el-icon-plus"
@click="handleAddSystemSite"
>{{ $t("trial:dictionary:institutions:site:addSystemSite") }}
</el-button>
<el-button
type="primary"
size="small"
style="margin-left: 10px"
icon="el-icon-plus"
@click="handleAddSite"
>New
</el-button>
</div>
</div>
<el-table
v-loading="loading"
v-adaptive="{bottomOffset:60}"
v-adaptive="{ bottomOffset: 60 }"
:data="list"
stripe
height="100"
@ -120,6 +137,13 @@
show-overflow-tooltip
sortable="custom"
/>
<el-table-column
prop="CreateTime"
label="CreateTime"
min-width="160"
show-overflow-tooltip
sortable="custom"
/>
<el-table-column label="Action" fixed="right" width="150">
<template slot-scope="scope">
<el-button
@ -138,131 +162,362 @@
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination class="page" :total="total" :page.sync="searchData.PageIndex" :limit.sync="searchData.PageSize" @pagination="getList" />
<pagination
class="page"
:total="total"
:page.sync="searchData.PageIndex"
:limit.sync="searchData.PageSize"
@pagination="getList"
/>
<el-dialog
v-if="editVisible"
:visible.sync="editVisible"
:close-on-click-modal="false"
:title="title"
width="600px"
width="800px"
custom-class="base-dialog-wrapper"
>
<site-form v-if="editVisible" :data="rowData" @close="close" @getList="getList" />
<site-form
v-if="editVisible"
:data="rowData"
@close="close"
@getList="getList"
/>
</el-dialog>
<base-model
v-if="addSystemSite_model.visible"
:config="addSystemSite_model"
>
<template slot="dialog-body">
<div class="search">
<el-form :inline="true" size="small" class="base-search-form">
<el-form-item
:label="
$t(
'trial:dictionary:institutions:site:table:addSystemSite:TrialCode'
)
"
>
<el-input
v-model="addSystemSiteSearchData.TrialCode"
style="width: 100px"
/>
</el-form-item>
<el-form-item
:label="
$t(
'trial:dictionary:institutions:site:table:addSystemSite:TrialSiteName'
)
"
>
<el-input
v-model="addSystemSiteSearchData.TrialSiteName"
style="width: 100px"
/>
</el-form-item>
<el-form-item
:label="
$t(
'trial:dictionary:institutions:site:table:addSystemSite:TrialSiteAliasName'
)
"
>
<el-input
v-model="addSystemSiteSearchData.TrialSiteAliasName"
style="width: 100px"
/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
@click="getTrialSiteList"
>{{ $t("trial:dictionary:institutions:site:button:sreach") }}
</el-button>
<el-button
type="primary"
icon="el-icon-refresh-left"
@click="handleResetAddSite"
>{{ $t("trial:dictionary:institutions:site:button:reset") }}
</el-button>
</el-form-item>
</el-form>
</div>
<el-table
v-loading="addSystemSiteLoading"
:data="addSystemSiteList"
stripe
height="300"
@sort-change="handleSortByColumnAddSite"
>
<el-table-column type="index" width="40" />
<el-table-column
prop="TrialCode"
:label="
$t(
'trial:dictionary:institutions:site:table:addSystemSite:TrialCode'
)
"
show-overflow-tooltip
sortable="custom"
/>
<el-table-column
prop="TrialSiteName"
:label="
$t(
'trial:dictionary:institutions:site:table:addSystemSite:TrialSiteName'
)
"
show-overflow-tooltip
sortable="custom"
/>
<el-table-column
prop="TrialSiteAliasName"
:label="
$t(
'trial:dictionary:institutions:site:table:addSystemSite:TrialSiteAliasName'
)
"
show-overflow-tooltip
sortable="custom"
/>
<el-table-column
:label="
$t(
'trial:dictionary:institutions:site:table:addSystemSite:Action'
)
"
fixed="right"
width="80"
>
<template slot-scope="scope">
<el-button
circle
type="text"
:title="$t('trial:dictionary:institutions:site:button:add')"
@click="addSystemSite(scope.row)"
>{{
$t("trial:dictionary:institutions:site:button:add")
}}</el-button
>
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination
class="page"
style="float: right"
:total="addSystemSiteSearchDataTotal"
:page.sync="addSystemSiteSearchData.PageIndex"
:limit.sync="addSystemSiteSearchData.PageSize"
@pagination="getTrialSiteList"
/>
</template>
</base-model>
</box-content>
</template>
<script>
import { getSiteList, deleteSite } from '@/api/dictionary'
import BoxContent from '@/components/BoxContent'
import Pagination from '@/components/Pagination'
import SiteForm from './SiteForm'
import {
getSiteList,
deleteSite,
addOrUpdateSite,
getTrialSiteList,
} from "@/api/dictionary";
import BaseModel from "@/components/BaseModel";
import BoxContent from "@/components/BoxContent";
import Pagination from "@/components/Pagination";
import SiteForm from "./SiteForm";
const searchDataDefault = () => {
return {
SiteName: '',
SiteName: "",
PageIndex: 1,
PageSize: 20,
Asc: false,
SortField: "CreateTime",
AliasName: "",
Country: null,
City: null,
};
};
const searchSiteDataDefault = () => {
return {
// SiteName: "",
PageIndex: 1,
PageSize: 20,
Asc: true,
SortField: '',
AliasName: '',
Country: null,
City: null
}
}
SortField: "",
TrialCode: null,
TrialSiteName: null,
TrialSiteAliasName: null,
};
};
export default {
name: 'Sites',
components: { BoxContent, Pagination, SiteForm },
name: "Sites",
components: { BoxContent, Pagination, SiteForm, BaseModel },
data() {
return {
editVisible: false,
title: 'Add',
title: "Add",
searchData: searchDataDefault(),
list: [],
total: 0,
loading: false,
rowData: {}
}
rowData: {},
addSystemSite_model: {
visible: false,
title: this.$t("trial:dictionary:institutions:site:addSystemSite"),
width: "800px",
appendToBody: true,
},
addSystemSiteLoading: false,
addSystemSiteList: [],
addSystemSiteSearchData: searchSiteDataDefault(),
addSystemSiteSearchDataTotal: 0,
};
},
mounted() {
this.getList()
this.getList();
this.getTrialSiteList();
},
methods: {
//
async getTrialSiteList() {
try {
this.addSystemSiteLoading = true;
let res = await getTrialSiteList(this.addSystemSiteSearchData);
if (res.IsSuccess) {
this.addSystemSiteLoading = false;
this.addSystemSiteList = res.Result.CurrentPageData;
this.addSystemSiteSearchDataTotal = res.Result.TotalCount;
}
} catch (err) {
this.addSystemSiteLoading = false;
console.log(err);
}
},
//
async addSystemSite(item) {
try {
let data = {
SiteName: item.TrialSiteName,
SiteNameCN: item.TrialSiteName,
AliasName: item.TrialSiteAliasName,
SiteCode: item.TrialCode,
TrialSiteId: item.TrialSiteId,
};
this.addSystemSiteLoading = true;
let res = await addOrUpdateSite(data);
if (res.IsSuccess) {
this.getTrialSiteList();
this.getList();
}
} catch (err) {
this.addSystemSiteLoading = false;
console.log(err);
}
},
handleAddSystemSite() {
this.addSystemSite_model.visible = true;
this.addSystemSiteSearchData = searchSiteDataDefault();
this.addSystemSiteList = [];
this.addSystemSiteSearchDataTotal = 0;
this.getTrialSiteList();
},
// Site
getList() {
this.loading = true
getSiteList(this.searchData).then(res => {
this.loading = false
this.list = res.Result.CurrentPageData
this.total = res.Result.TotalCount
}).catch(() => {
this.loading = false
})
this.loading = true;
getSiteList(this.searchData)
.then((res) => {
this.loading = false;
this.list = res.Result.CurrentPageData;
this.total = res.Result.TotalCount;
})
.catch(() => {
this.loading = false;
});
},
// Site
handleAddSite() {
this.rowData = {}
this.title = 'Add'
this.editVisible = true
this.rowData = {};
this.title = "Add";
this.editVisible = true;
},
// Site
handleEdit(row) {
this.rowData = row
this.title = 'Edit'
this.editVisible = true
this.rowData = row;
this.title = "Edit";
this.editVisible = true;
},
// Site
handleDelete(row) {
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), {
type: 'warning',
this.$confirm(this.$t("trials:uploadedDicoms:message:deleteMes"), {
type: "warning",
distinguishCancelAndClose: true,
})
.then(() => {
this.loading = true
deleteSite(row.Id)
.then(res => {
this.loading = false
if (res.IsSuccess) {
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1)
this.$store.dispatch('global/setSite', {})
this.$message.success(this.$t('common:message:deletedSuccessfully'))
}
}).catch(() => {
this.loading = false
})
})
}).then(() => {
this.loading = true;
deleteSite(row.Id)
.then((res) => {
this.loading = false;
if (res.IsSuccess) {
this.list.splice(
this.list.findIndex((item) => item.Id === row.Id),
1
);
this.$store.dispatch("global/setSite", {});
this.$message.success(
this.$t("common:message:deletedSuccessfully")
);
}
})
.catch(() => {
this.loading = false;
});
});
},
//
handleReset() {
this.searchData = searchDataDefault()
this.getList()
this.searchData = searchDataDefault();
this.getList();
},
handleResetAddSite() {
this.addSystemSiteSearchData = searchSiteDataDefault();
this.getTrialSiteList();
},
//
handleSearch() {
this.searchData.PageIndex = 1
this.getList()
this.searchData.PageIndex = 1;
this.getList();
},
//
handleSortByColumn(column) {
if (column.order === 'ascending') {
this.searchData.Asc = true
if (column.order === "ascending") {
this.searchData.Asc = true;
} else {
this.searchData.Asc = false
this.searchData.Asc = false;
}
this.searchData.SortField = column.prop
this.searchData.PageIndex = 1
this.getList()
this.searchData.SortField = column.prop;
this.searchData.PageIndex = 1;
this.getList();
},
handleSortByColumnAddSite(column) {
if (column.order === "ascending") {
this.addSystemSiteSearchData.Asc = true;
} else {
this.addSystemSiteSearchData.Asc = false;
}
this.addSystemSiteSearchData.SortField = column.prop;
this.addSystemSiteSearchData.PageIndex = 1;
this.getTrialSiteList();
},
//
close() {
this.editVisible = false
}
}
}
this.editVisible = false;
},
},
};
</script>
<style lang="scss" scoped>
.Sites{
.Sites {
height: 100%;
}
</style>

View File

@ -82,10 +82,14 @@ export default {
studyList: [],
subjectVisitId: '',
sudyId: '',
loading: false
loading: false,
bp:[]
}
},
mounted() {
async created(){
this.bp = await this.$getBodyPart(this.$route.query.trialId);
},
async mounted() {
if (this.$router.currentRoute.query.TokenKey) {
store.dispatch('user/setToken', this.$router.currentRoute.query.TokenKey)
changeURLStatic('TokenKey', '')
@ -107,9 +111,8 @@ export default {
separator = ''
}
var arr = bodyPart.split(separator)
let bp = await this.$getBodyPart(this.$route.query.trialId)
var newArr = arr.map(i => {
return this.$fd('Bodypart', i.trim(),'Code',{Bodypart:bp},'Name')
return this.$fd('Bodypart', i.trim(),'Code',{Bodypart:this.bp},'Name')
})
return newArr.join(' | ')
},

View File

@ -95,10 +95,12 @@ export default {
subjectCode: '',
visistTaskId: '',
taskBlindName: '',
readingTaskState: 2
readingTaskState: 2,
bp:[]
}
},
mounted() {
async mounted() {
this.bp = await this.$getBodyPart(this.$route.query.trialId)
if (this.$router.currentRoute.query.TokenKey) {
store.dispatch('user/setToken', this.$router.currentRoute.query.TokenKey)
changeURLStatic('TokenKey', '')
@ -174,7 +176,7 @@ export default {
preview() {
this.previewVisible = true
},
async getBodyPart(bodyPart) {
getBodyPart(bodyPart) {
if (!bodyPart) return ''
var separator = ','
if (bodyPart.indexOf('|') > -1) {
@ -185,9 +187,8 @@ export default {
separator = ''
}
var arr = bodyPart.split(separator)
let bp = await this.$getBodyPart(this.$route.query.trialId)
var newArr = arr.map(i => {
return this.$fd('Bodypart', i.trim(),'Code',{Bodypart:bp},'Name')
return this.$fd('Bodypart', i.trim(),'Code',{Bodypart:this.bp},'Name')
})
return newArr.join(' | ')
}

View File

@ -154,7 +154,8 @@ export default {
associatedList: [],
currentTaskId: '',
otherInfo: null,
isReadingShowPreviousResults: false
isReadingShowPreviousResults: false,
bp:[]
}
},
computed: {
@ -162,7 +163,8 @@ export default {
return this.otherInfo && this.otherInfo.IsReadingShowPreviousResults && this.isReadingShowPreviousResults
}
},
mounted() {
async mounted() {
this.bp = await this.$getBodyPart(this.$route.query.trialId)
this.isReadingShowPreviousResults = this.$router.currentRoute.query.isReadingShowPreviousResults !== undefined ? this.$router.currentRoute.query.isReadingShowPreviousResults : true
this.getNoneDicomList(this.isReadingShowPreviousResults)
@ -267,7 +269,7 @@ export default {
})
window.open(routeData.href, '_blank')
},
async getBodyPart(bodyPart) {
getBodyPart(bodyPart) {
if (!bodyPart) return ''
var separator = ','
if (bodyPart.indexOf('|') > -1) {
@ -278,9 +280,8 @@ export default {
separator = ''
}
var arr = bodyPart.split(separator)
let bp = await this.$getBodyPart(this.$route.query.trialId)
var newArr = arr.map(i => {
return this.$fd('Bodypart', i.trim(),'Code',{Bodypart:bp},'Name')
return this.$fd('Bodypart', i.trim(),'Code',{Bodypart:this.bp},'Name')
})
return newArr.join(' | ')
}

View File

@ -349,10 +349,12 @@ export default {
previewNonDicomVisible: false,
trialId: this.$route.query.trialId,
tokenKey: getToken(),
openWindow: null
openWindow: null,
bp:[]
}
},
mounted() {
async mounted() {
this.bp = await this.$getBodyPart(this.$route.query.trialId)
this.getSite()
this.getVisitPlanOptions()
this.getList()
@ -476,7 +478,7 @@ export default {
}
}).catch(() => { this.loading = false })
},
async getBodyPart(bodyPart) {
getBodyPart(bodyPart) {
if (!bodyPart) return ''
var separator = ','
if (bodyPart.indexOf('|') > -1) {
@ -487,9 +489,8 @@ export default {
separator = ''
}
var arr = bodyPart.split(separator)
let bp = await this.$getBodyPart(this.$route.query.trialId)
var newArr = arr.map(i => {
return this.$fd('Bodypart', i.trim(),'Code',{Bodypart:bp},'Name')
return this.$fd('Bodypart', i.trim(),'Code',{Bodypart:this.bp},'Name')
})
return newArr.join(' | ')
},

View File

@ -190,9 +190,11 @@ export default {
seriesList: [],
moment,
trialId: this.$route.query.trialId,
bp:[]
}
},
mounted() {
async mounted() {
this.bp = await this.$getBodyPart(this.$route.query.trialId)
this.getList()
},
methods: {
@ -235,7 +237,7 @@ export default {
})
this.open = window.open(routeData.href, '_blank')
},
async getBodyPart(bodyPart) {
getBodyPart(bodyPart) {
if (!bodyPart) return ''
var separator = ','
if (bodyPart.indexOf('|') > -1) {
@ -246,9 +248,8 @@ export default {
separator = ''
}
var arr = bodyPart.split(separator)
let bp = await this.$getBodyPart(this.$route.query.trialId)
var newArr = arr.map(i => {
return this.$fd('Bodypart', i.trim(),'Code',{Bodypart:bp},'Name')
return this.$fd('Bodypart', i.trim(),'Code',{Bodypart:this.bp},'Name')
})
return newArr.join(' | ')
},

View File

@ -174,10 +174,12 @@ export default {
petVisible: false,
rowData: {},
relationInfo: {},
bp: [],
};
},
mounted() {
async mounted() {
this.getStudyInfo();
this.bp = await this.$getBodyPart(this.$route.query.trialId);
},
methods: {
//
@ -237,7 +239,7 @@ export default {
});
window.open(routeData.href, "_blank");
},
async getBodyPart(bodyPart) {
getBodyPart(bodyPart) {
if (!bodyPart) return "";
var separator = ",";
if (bodyPart.indexOf("|") > -1) {
@ -248,10 +250,15 @@ export default {
separator = "";
}
var arr = bodyPart.split(separator);
let bp = await this.$getBodyPart(this.$route.query.trialId)
var newArr = arr.map(i => {
return this.$fd('Bodypart', i.trim(),'Code',{Bodypart:bp},'Name')
})
var newArr = arr.map((i) => {
return this.$fd(
"Bodypart",
i.trim(),
"Code",
{ Bodypart: this.bp },
"Name"
);
});
return newArr.join(" | ");
},
//