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' 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"> <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="Site Name:"> <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>
<el-form-item label="Alias Name:"> <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>
<el-form-item label="Country:"> <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>
<el-form-item label="City:"> <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-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>
<el-button <div style="margin-left: auto">
type="primary" <el-button
size="small" type="primary"
style="margin-left:auto;" size="small"
icon="el-icon-plus" icon="el-icon-plus"
@click="handleAddSite" @click="handleAddSystemSite"
>New</el-button> >{{ $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> </div>
<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"
@ -120,6 +137,13 @@
show-overflow-tooltip show-overflow-tooltip
sortable="custom" 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"> <el-table-column label="Action" fixed="right" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@ -138,131 +162,362 @@
</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="editVisible" v-if="editVisible"
:visible.sync="editVisible" :visible.sync="editVisible"
:close-on-click-modal="false" :close-on-click-modal="false"
:title="title" :title="title"
width="600px" width="800px"
custom-class="base-dialog-wrapper" 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> </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> </box-content>
</template> </template>
<script> <script>
import { getSiteList, deleteSite } from '@/api/dictionary' import {
getSiteList,
import BoxContent from '@/components/BoxContent' deleteSite,
import Pagination from '@/components/Pagination' addOrUpdateSite,
import SiteForm from './SiteForm' 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 = () => { const searchDataDefault = () => {
return { return {
SiteName: '', SiteName: "",
PageIndex: 1,
PageSize: 20,
Asc: false,
SortField: "CreateTime",
AliasName: "",
Country: null,
City: null,
};
};
const searchSiteDataDefault = () => {
return {
// SiteName: "",
PageIndex: 1, PageIndex: 1,
PageSize: 20, PageSize: 20,
Asc: true, Asc: true,
SortField: '', SortField: "",
AliasName: '', TrialCode: null,
Country: null, TrialSiteName: null,
City: null TrialSiteAliasName: null,
} };
} };
export default { export default {
name: 'Sites', name: "Sites",
components: { BoxContent, Pagination, SiteForm }, components: { BoxContent, Pagination, SiteForm, BaseModel },
data() { data() {
return { return {
editVisible: false, editVisible: false,
title: 'Add', title: "Add",
searchData: searchDataDefault(), searchData: searchDataDefault(),
list: [], list: [],
total: 0, total: 0,
loading: false, 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() { mounted() {
this.getList() this.getList();
this.getTrialSiteList();
}, },
methods: { 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 // Site
getList() { getList() {
this.loading = true this.loading = true;
getSiteList(this.searchData).then(res => { getSiteList(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;
});
}, },
// Site // Site
handleAddSite() { handleAddSite() {
this.rowData = {} this.rowData = {};
this.title = 'Add' this.title = "Add";
this.editVisible = true this.editVisible = true;
}, },
// Site // Site
handleEdit(row) { handleEdit(row) {
this.rowData = row this.rowData = row;
this.title = 'Edit' this.title = "Edit";
this.editVisible = true this.editVisible = true;
}, },
// Site // Site
handleDelete(row) { handleDelete(row) {
this.$confirm(this.$t('trials:uploadedDicoms:message:deleteMes'), { this.$confirm(this.$t("trials:uploadedDicoms:message:deleteMes"), {
type: 'warning', type: "warning",
distinguishCancelAndClose: true, distinguishCancelAndClose: true,
}).then(() => {
}) this.loading = true;
.then(() => { deleteSite(row.Id)
this.loading = true .then((res) => {
deleteSite(row.Id) this.loading = false;
.then(res => { if (res.IsSuccess) {
this.loading = false this.list.splice(
if (res.IsSuccess) { this.list.findIndex((item) => item.Id === row.Id),
this.list.splice(this.list.findIndex(item => item.Id === row.Id), 1) 1
this.$store.dispatch('global/setSite', {}) );
this.$message.success(this.$t('common:message:deletedSuccessfully')) this.$store.dispatch("global/setSite", {});
} this.$message.success(
}).catch(() => { this.$t("common:message:deletedSuccessfully")
this.loading = false );
}) }
}) })
.catch(() => {
this.loading = false;
});
});
}, },
// //
handleReset() { handleReset() {
this.searchData = searchDataDefault() this.searchData = searchDataDefault();
this.getList() this.getList();
},
handleResetAddSite() {
this.addSystemSiteSearchData = searchSiteDataDefault();
this.getTrialSiteList();
}, },
// //
handleSearch() { handleSearch() {
this.searchData.PageIndex = 1 this.searchData.PageIndex = 1;
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();
},
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() { close() {
this.editVisible = false this.editVisible = false;
} },
} },
} };
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.Sites{ .Sites {
height: 100%; height: 100%;
} }
</style> </style>

View File

@ -82,10 +82,14 @@ export default {
studyList: [], studyList: [],
subjectVisitId: '', subjectVisitId: '',
sudyId: '', 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) { if (this.$router.currentRoute.query.TokenKey) {
store.dispatch('user/setToken', this.$router.currentRoute.query.TokenKey) store.dispatch('user/setToken', this.$router.currentRoute.query.TokenKey)
changeURLStatic('TokenKey', '') changeURLStatic('TokenKey', '')
@ -107,9 +111,8 @@ export default {
separator = '' separator = ''
} }
var arr = bodyPart.split(separator) var arr = bodyPart.split(separator)
let bp = await this.$getBodyPart(this.$route.query.trialId)
var newArr = arr.map(i => { 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(' | ') return newArr.join(' | ')
}, },

View File

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

View File

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

View File

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

View File

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

View File

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