hir_web/src/views/trials/trials-inspection/components/pullImage/byTrials.vue

818 lines
33 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div>
<span class="title">
{{ $t('trials:inspection:title:pullImage') }}
<span>{{ tip }}</span>
</span>
<div class="search">
<el-form :inline="true" class="base-search-form">
<!-- TrialId -->
<el-form-item class="my_multiple" :label="$t('trials:inspection:pullImage:search:TrialId')">
<el-select v-model="searchData.TrialId" style="width: 140px" @change="searchData.PatientID = null">
<el-option v-for="(item) of trialList" :key="item.TrialId" :label="item.ExperimentName"
:value="item.TrialId">
</el-option>
</el-select>
</el-form-item>
<!-- pacsDicomAEId -->
<el-form-item class="my_multiple" :label="$t('trials:inspection:pullImage:search:pacsDicomAEId')">
<el-select v-model="searchData.PacsDicomAEId" style="width: 140px" @change="pacsDicomAEIdChange">
<el-option v-for="(item) of AElist" :key="item.Id" :label="item.CalledAE" :value="item.Id">
</el-option>
</el-select>
</el-form-item>
<!-- patientID -->
<el-form-item class="my_multiple" :label="$t('trials:inspection:pullImage:search:patientID')">
<el-select v-model="searchData.PatientID" style="width: 140px" clearable>
<el-option v-for="(item, index) of patientList" :key="index.PatientIdStr"
:label="item.PatientName" :value="item.PatientIdStr">
</el-option>
</el-select>
</el-form-item>
<!-- patientName -->
<!-- <el-form-item class="my_multiple" :label="$t('trials:inspection:pullImage:search:patientName')">
<el-input v-model="searchData.PatientName" clearable style="width: 100px"
:maxlength="400"></el-input>
</el-form-item> -->
<!-- patientSex -->
<!-- <el-form-item
class="my_multiple"
:label="$t('trials:inspection:pullImage:search:patientSex')"
>
<el-select
v-model="searchData.PatientSex"
clearable
style="width: 140px"
>
<el-option
v-for="item of $d.Sex"
:key="item.id"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</el-form-item> -->
<!-- patientBirthDate -->
<!-- <el-form-item
:label="$t('trials:inspection:pullImage:search:patientBirthDate')"
>
<el-date-picker
v-model="PatientBirthDate"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyyMMDD"
>
</el-date-picker>
</el-form-item> -->
<!-- studyID -->
<!-- <el-form-item
class="my_multiple"
:label="$t('trials:inspection:pullImage:search:studyID')"
>
<el-input
v-model="searchData.StudyID"
clearable
:maxlength="400"
></el-input>
</el-form-item> -->
<!-- AccessionNumber -->
<!-- <el-form-item
class="my_multiple"
:label="$t('trials:inspection:pullImage:search:AccessionNumber')"
>
<el-input
v-model="searchData.AccessionNumber"
clearable
style="width: 100px"
:maxlength="400"
></el-input>
</el-form-item> -->
<!-- modalitiesInStudy -->
<!-- <el-form-item :label="$t('trials:inspection:pullImage:search:modalitiesInStudy')">
<el-select v-model="searchData.ModalitiesInStudyList" placeholder="" clearable multiple
collapse-tags style="width: 140px">
<el-option v-for="item in ModalityList" :key="item" :label="item" :value="item" />
</el-select>
</el-form-item> -->
<!-- studyDate -->
<!-- <el-form-item :label="$t('trials:inspection:pullImage:search:studyDate')">
<el-date-picker v-model="StudyDate" type="daterange" range-separator="至" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="yyyyMMdd" :picker-options="pickerOptions">
</el-date-picker>
</el-form-item> -->
<!-- studyTime -->
<!-- <el-form-item
:label="$t('trials:inspection:pullImage:search:studyTime')"
>
<el-time-picker
is-range
arrow-control
v-model="StudyTime"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
placeholder="选择时间范围"
>
</el-time-picker>
</el-form-item> -->
<!-- bodyPartExamined -->
<!-- <el-form-item
class="my_multiple"
:label="$t('trials:inspection:pullImage:search:bodyPartExamined')"
>
<el-input
v-model="searchData.BodyPartExamined"
clearable
:maxlength="400"
></el-input>
</el-form-item> -->
<!-- studyDescription -->
<!-- <el-form-item
class="my_multiple"
:label="$t('trials:inspection:pullImage:search:studyDescription')"
>
<el-input
v-model="searchData.StudyDescription"
clearable
:maxlength="400"
></el-input>
</el-form-item> -->
<!-- studyInstanceUID -->
<!-- <el-form-item
class="my_multiple"
:label="$t('trials:inspection:pullImage:search:studyInstanceUID')"
>
<el-input
v-model="searchData.StudyInstanceUID"
clearable
:maxlength="400"
></el-input>
</el-form-item> -->
<el-form-item>
<!-- 查询 -->
<el-button type="primary" icon="el-icon-search" @click="handleSearch">
{{ $t('common:button:search') }}
</el-button>
<!-- 重置 -->
<el-button type="primary" icon="el-icon-refresh-left" @click="handleReset">
{{ $t('common:button:reset') }}
</el-button>
<!-- 拉取 -->
<el-button type="primary" :disabled="!multipleSelection || multipleSelection.length <= 0"
@click="openGroup({}, 2)">
{{ $t('trials:inspection:button:pull') }}
</el-button>
</el-form-item>
</el-form>
</div>
<!--检查列表-->
<el-table ref="viewStudyList" v-loading="loading" v-adaptive="{ bottomOffset: 60 }" :data="PageList" stripe
height="100" @sort-change="handleSortByColumn" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" />
<el-table-column type="index" width="50">
<template slot-scope="scope">
<span style="
display: flex;
align-items: center;
justify-content: flex-end;
">
<el-tooltip class="item" effect="dark" :content="$t('trials:inspection:pullImage:tip:has')"
placement="top" style="margin-right: 3px">
<i v-if="scope.row.IsStudyExist" class="el-icon-success icon-i"></i>
</el-tooltip>
<span>{{ scope.$index + 1 }}</span>
</span>
</template>
</el-table-column>
<!--patientID-->
<el-table-column prop="PatientID" :label="$t('trials:inspection:pullImage:table:patientID')"
show-overflow-tooltip min-width="120" sortable="custom" />
<!--patientName-->
<el-table-column prop="PatientName" :label="$t('trials:inspection:pullImage:table:patientName')"
show-overflow-tooltip min-width="120" sortable="custom" />
<!--patientSex-->
<el-table-column prop="PatientSex" :label="$t('trials:inspection:pullImage:table:patientSex')"
show-overflow-tooltip min-width="80" sortable="custom">
<template slot-scope="scope">
<span>{{ $fd('Sex', scope.row.PatientSex) }}</span>
</template>
</el-table-column>
<!--patientBirthDate-->
<el-table-column prop="PatientBirthDate" :label="$t('trials:inspection:pullImage:table:patientBirthDate')"
show-overflow-tooltip min-width="120" sortable="custom" />
<!--studyID-->
<!-- <el-table-column
prop="StudyID"
:label="$t('trials:inspection:pullImage:table:studyID')"
show-overflow-tooltip
min-width="120"
/> -->
<!--AccessionNumber-->
<el-table-column prop="AccessionNumber" :label="$t('trials:inspection:pullImage:table:AccessionNumber')"
show-overflow-tooltip min-width="120" sortable="custom" />
<!--modalitiesInStudy-->
<el-table-column prop="ModalitiesInStudy" :label="$t('trials:inspection:pullImage:table:modalitiesInStudy')"
show-overflow-tooltip min-width="120" sortable="custom" />
<!--studyDate-->
<el-table-column prop="StudyDate" :label="$t('trials:inspection:pullImage:table:studyDate')"
show-overflow-tooltip min-width="120" sortable="custom" />
<!--studyTime-->
<el-table-column prop="StudyTime" :label="$t('trials:inspection:pullImage:table:studyTime')"
show-overflow-tooltip min-width="120" sortable="custom" />
<!--bodyPartExamined-->
<!-- <el-table-column
prop="BodyPartExamined"
:label="$t('trials:inspection:pullImage:table:bodyPartExamined')"
show-overflow-tooltip
min-width="120"
sortable="custom"
/> -->
<!--studyDescription-->
<el-table-column prop="StudyDescription" :label="$t('trials:inspection:pullImage:table:studyDescription')"
show-overflow-tooltip min-width="120" sortable="custom" />
<!--studyInstanceUID-->
<el-table-column prop="StudyInstanceUID" :label="$t('trials:inspection:pullImage:table:studyInstanceUID')"
show-overflow-tooltip min-width="120" sortable="custom" />
<!--课题组-->
<el-table-column prop="ViewHospitalGroupList"
:label="$t('trials:inspection:pullImage:table:ViewHospitalGroupList')" show-overflow-tooltip
min-width="100">
<template slot-scope="scope">
<span>{{
scope.row.ViewHospitalGroupList && scope.row.ViewHospitalGroupList.length > 0 ?
scope.row.ViewHospitalGroupList.map(item => item.Name).join(', ') : ''}}</span>
</template>
</el-table-column>
<!--操作-->
<el-table-column :label="$t('common:action:action')" min-width="120">
<template slot-scope="scope">
<el-button circle icon="el-icon-refresh" class="refreshBtn"
:title="$t('trials:inspection:button:pull')" @click.stop="openGroup(scope.row, 2)" />
<el-button circle icon="el-icon-edit-outline" :title="$t('trials:inspection:button:collect')"
v-if="scope.row.IsStudyExist" @click.stop="openGroup(scope.row, 1)" />
</template>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination class="page" :total="total" :page.sync="PageIndex" :limit.sync="PageSize" @pagination="paging" />
<base-model v-if="group_model.visible" :config="group_model">
<template slot="dialog-body">
<el-form ref="groupFrom" :model="form" :rules="rules" label-width="100px" size="small">
<el-form-item :label="$t('trials:externalStaff:table:lastName')" prop="LastName" v-show="false">
<el-input clearable />
</el-form-item>
<!-- 用户类型 -->
<el-form-item :label="$t('trials:externalStaff:table:hospitalGroupIdList')"
prop="HospitalGroupIdList">
<el-select v-model="form.HospitalGroupIdList" style="width: 100%" multiple clearable>
<el-option v-for="item of hospitalGroupList" :key="item.Id" :label="item.Name"
:value="item.Id">
<!-- <span>{{ item.UserType }}</span> -->
</el-option>
</el-select>
</el-form-item>
</el-form>
</template>
<template slot="dialog-footer">
<!-- 取消 -->
<el-button size="small" type="primary" :disabled="btnLoading" @click="handleCancelGroup">
{{ $t("common:button:cancel") }}
</el-button>
<!-- 保存 -->
<el-button size="small" type="primary" :loading="btnLoading" @click="pullImage">
{{ $t("common:button:save") }}
</el-button>
</template>
</base-model>
</div>
</template>
<script>
import Pagination from '@/components/Pagination'
import {
getCFindStudyList,
cmoveStudyList,
cMoveVerify,
getUserJoinedTrialPatientList
} from '@/api/inspection.js'
import { getDicomAEList } from '@/api/dicomAE.js'
import BaseModel from '@/components/BaseModel'
const defaultSearchData = () => {
return {
PacsDicomAEId: null,
PatientID: null,
PatientName: null,
// ModalitiesInStudyList: null,
StudyDate: null,
TrialId: null,
PatientSex: null,
PatientBirthDate: null,
StudyID: null,
StudyTime: null,
BodyPartExamined: null,
StudyDescription: null,
StudyInstanceUID: null,
AccessionNumber: null,
}
}
export default {
name: 'byTrials',
components: { Pagination, BaseModel },
props: {
calledAeList: {
required: true,
default: () => {
return []
},
},
callingAeList: {
required: true,
default: () => {
return []
},
},
},
data() {
return {
// 查询
searchData: defaultSearchData(),
ModalityList: [],
timeFrame: null,
MaxStudyCount: null,
PatientBirthDate: [],
// StudyDate: [],
// 可加入项目列表
loading: false,
list: [],
PageList: [],
total: 0,
PageIndex: 1,
PageSize: 50,
AElist: [],
multipleSelection: [],
trialList: [],
group_model: {
visible: false,
title: this.$t('trials:inspection:dialogTitle:collect'),
width: '400px',
appendToBody: true
},
form: {
HospitalGroupIdList: [],
},
rules: {
HospitalGroupIdList: [
{
required: true,
type: "array",
message: this.$t('common:ruleMessage:specify'),
trigger: ['blur', 'change']
}
]
},
btnLoading: false,
hospitalGroupList: [],
groupStatus: 1, // 1收藏 2拉取
currentData: {}
}
},
computed: {
// pickerOptions() {
// return {
// shortcuts: [
// {
// text: this.$t('trials:inspection:pullImage:picker:today'),
// onClick: (picker) => {
// const end = new Date()
// const start = new Date()
// // picker.$emit('pick', [start, end])
// this.StudyDate = [start, end]
// },
// },
// {
// text: this.$t('trials:inspection:pullImage:picker:week'),
// onClick: (picker) => {
// const end = new Date()
// const start = new Date()
// if (!this.timeFrame || this.timeFrame > 3) {
// start.setTime(start.getTime() - 3600 * 1000 * 24 * 2)
// } else {
// start.setTime(
// start.getTime() - 3600 * 1000 * 24 * (this.timeFrame - 1)
// )
// }
// // picker.$emit('pick', [start, end])
// this.StudyDate = [start, end]
// },
// },
// {
// text: this.$t('trials:inspection:pullImage:picker:month'),
// onClick: (picker) => {
// const end = new Date()
// const start = new Date()
// let month = this.$moment().subtract(1, 'months')
// let day = this.$moment().diff(month, 'day')
// if (!this.timeFrame || this.timeFrame > day) {
// start.setTime(start.getTime() - 3600 * 1000 * 24 * (day - 1))
// } else {
// start.setTime(
// start.getTime() - 3600 * 1000 * 24 * (this.timeFrame - 1)
// )
// }
// // picker.$emit('pick', [start, end])
// this.StudyDate = [start, end]
// },
// },
// {
// text: this.$t('trials:inspection:pullImage:picker:trimester'),
// onClick: (picker) => {
// const end = new Date()
// const start = new Date()
// let month = this.$moment().subtract(3, 'months')
// let day = this.$moment().diff(month, 'day')
// if (!this.timeFrame || this.timeFrame > day) {
// start.setTime(start.getTime() - 3600 * 1000 * 24 * (day - 1))
// } else {
// start.setTime(
// start.getTime() - 3600 * 1000 * 24 * (this.timeFrame - 1)
// )
// }
// // picker.$emit('pick', [start, end])
// this.StudyDate = [start, end]
// },
// },
// ],
// disabledDate: (time) => {
// if (!this.timeFrame) return false
// let curDate = new Date().getTime()
// let three = this.timeFrame * 24 * 3600 * 1000
// let threeMonths = curDate - three
// return time.getTime() >= Date.now() || time.getTime() <= threeMonths
// },
// }
// },
tip() {
if (!this.searchData.PacsDicomAEId) return ''
let message = `( ${this.$t('trials:inspection:pullImage:PacsTip')} )`
message = message.replace(
'xxx',
this.AElist.find((item) => item.Id === this.searchData.PacsDicomAEId)
.CalledAE
)
if (!this.timeFrame) {
message = message.replace(
'yyy',
this.$t('trials:inspection:pullImage:unlimit')
)
} else {
message = message.replace(
'yyy',
`${this.timeFrame}${this.$t('trials:inspection:unit:day')}`
)
}
if (!this.MaxStudyCount) {
message = message.replace(
'zzz',
this.$t('trials:inspection:pullImage:unlimit')
)
} else {
message = message.replace(
'zzz',
`${this.MaxStudyCount}${this.$t('trials:inspection:unit:article')}`
)
}
message = message.replace('kkk', this.ModalityList.join(''))
return message
},
patientList() {
let arr = []
if (this.searchData.TrialId) {
arr = this.trialList.find(item => item.TrialId === this.searchData.TrialId).PatientList
}
return arr
}
},
created() {
this.getTrialList()
},
methods: {
// 获取项目
async getTrialList() {
try {
let res = await getUserJoinedTrialPatientList()
if (res.IsSuccess) {
this.trialList = res.Result
if (!this.trialList || this.trialList.length <= 0) return false
this.searchData.TrialId = this.trialList[0].TrialId
this.getAEList(false, true)
}
} catch (err) {
console.log(err)
}
},
pacsDicomAEIdChange(val, f = false) {
let pacs = this.AElist.find((item) => item.Id === val)
this.ModalityList = pacs.ModalityList
this.timeFrame = pacs.PacsSearchMaxDays
this.MaxStudyCount = pacs.MaxStudyCount
if (!f) {
this.handleReset()
}
},
// 验证pacs
async cMoveVerify(data) {
try {
let res = await cMoveVerify(data)
if (res.IsSuccess) {
return res.Result
}
return false
} catch (err) {
console.log(err)
return false
}
},
async getList() {
if (!this.searchData.TrialId) return false
if (!this.searchData.PacsDicomAEId)
return this.$message.warning(
this.$t('trials:inspection:pullImage:message:mustPacsDicomAEId')
)
let data = {}
Object.keys(this.searchData).forEach((key) => {
data[key] = this.searchData[key]
})
// if (
// this.PatientBirthDate &&
// this.PatientBirthDate[0] &&
// this.PatientBirthDate[1]
// ) {
// data.PatientBirthDate =
// this.PatientBirthDate[0] + '-' + this.PatientBirthDate[1]
// } else {
// data.PatientBirthDate = null
// }
// if (this.StudyDate && this.StudyDate[0] && this.StudyDate[1]) {
// data.StudyDate =
// this.$moment(this.StudyDate[0]).format('YYYYMMDD') +
// '-' +
// this.$moment(this.StudyDate[1]).format('YYYYMMDD')
// } else {
// data.StudyDate = null
// }
// if (this.StudyTime && this.StudyTime[0] && this.StudyTime[1]) {
// data.StudyTime =
// this.$moment(this.StudyTime[0]).format('HHmmss') +
// '-' +
// this.$moment(this.StudyTime[1]).format('HHmmss')
// } else {
// data.StudyTime = null
// }
try {
this.loading = true
let res = await getCFindStudyList(data)
this.loading = false
if (res.IsSuccess) {
this.list = res.Result
this.total = res.Result.length
this.paging()
let MaxStudyCount = this.MaxStudyCount || 50
if (this.total >= MaxStudyCount) {
let message = this.$t(
'trials:inspection:pullImage:confirm:limit50'
).replace('xxx', MaxStudyCount)
this.$confirm(message, '', {
type: 'warning',
showCancelButton: false,
})
}
}
} catch (err) {
this.loading = false
console.log(err)
}
},
// 获取列表
async getAEList(f = false, isFirst = false) {
let data = {
CalledAE: null,
IP: null,
Port: null,
PacsTypeEnum: 2,
IsTestOK: true,
PageIndex: 1,
PageSize: 1000,
SortField: 'CreateTime',
Asc: false,
}
try {
this.loading = true
let res = await getDicomAEList(data)
this.loading = false
if (res.IsSuccess) {
this.AElist = res.Result.CurrentPageData
if (this.AElist.length > 0) {
if (!f) {
this.searchData.PacsDicomAEId = this.AElist[0].Id
this.ModalityList = this.AElist[0].ModalityList
this.timeFrame = this.AElist[0].PacsSearchMaxDays
this.MaxStudyCount = this.AElist[0].MaxStudyCount
// this.searchData.ModalitiesInStudyList = [this.ModalityList[0]]
// this.StudyDate = [new Date(), new Date()]
} else {
this.pacsDicomAEIdChange(this.searchData.PacsDicomAEId, true)
}
if (!isFirst) {
this.getList()
}
}
}
} catch (err) {
console.log(err)
}
},
// 分页
paging() {
this.PageList = []
if (!this.list || this.list.length <= 0) return false
this.PageList = this.list.slice(
(this.PageIndex - 1) * this.PageSize,
this.PageIndex * this.PageSize
)
},
// 查询
handleSearch() {
// this.searchData.PageIndex = 1
this.getAEList(true)
},
// 重置
handleReset() {
this.reset()
this.getAEList(true)
},
// 初始化
reset() {
// this.searchData = defaultSearchData()
Object.keys(this.searchData).forEach((key) => {
if (key !== 'PacsDicomAEId' && key !== 'TrialId') {
this.searchData[key] = null
}
})
// this.PatientBirthDate = []
// this.StudyDate = []
// this.StudyTime = [new Date(new Date().getTime() - 10800000), new Date()]
},
// 表格排序
handleSortByColumn(sort) {
if (sort.order === 'ascending') {
this.list.sort((a, b) => (a[sort.prop] > b[sort.prop] ? 1 : -1))
}
if (sort.order === 'descending') {
this.list.sort((a, b) => (b[sort.prop] > a[sort.prop] ? 1 : -1))
}
this.paging()
},
async handleSaveGroup() {
try {
let validate = await this.$refs.groupFrom.validate()
if (!validate) return false
let ScPstudyIdList = []
let row = this.currentData
if (!row) {
if (this.multipleSelection.length <= 0) return false
ScPstudyIdList = this.multipleSelection.map(item => item.SCPStudyId)
} else {
ScPstudyIdList = [this.currentData.SCPStudyId]
}
let data = {
ScPstudyIdList,
AddOrDelete: 1,
HospitalGroupIdList: this.form.HospitalGroupIdList
}
this.btnLoading = true
let res = await modifySCPStudyHospitalGroup(data)
this.btnLoading = false
if (res.IsSuccess) {
this.$message.success(this.$t('common:message:savedSuccessfully'))
this.handleCancelGroup()
this.getList()
}
} catch (err) {
console.log(err)
this.btnLoading = false
}
},
handleCancelGroup() {
this.form.HospitalGroupIdList = []
this.groupStatus = 1
this.group_model.visible = false
},
openGroup(row, type = 1) {
this.currentData = row
this.groupStatus = type
if (row && Object.keys(row).length !== 0) {
this.hospitalGroupList = row.CurrentUserHospitalGroupList
} else {
this.hospitalGroupList = this.multipleSelection[0].CurrentUserHospitalGroupList
}
if (type === 1) {
this.group_model.title = this.$t('trials:inspection:dialogTitle:collect')
} else {
this.group_model.title = this.$t('trials:inspection:dialogTitle:pull')
}
this.group_model.visible = true
},
// 拉取pacs数据
async pullImage() {
let validate = await this.$refs.groupFrom.validate()
if (!validate) return false
if (this.groupStatus === 1) return this.handleSaveGroup()
try {
let row = this.currentData
let data = {
PacsDicomAEId: this.searchData.PacsDicomAEId,
HospitalGroupIdList: this.form.HospitalGroupIdList
// studyIDList: [row.StudyID],
}
if (row && Object.keys(row).length !== 0) {
data.StudyInstanceUIDList = [row.StudyInstanceUID]
} else {
data.StudyInstanceUIDList = this.multipleSelection.map(
(item) => item.StudyInstanceUID
)
}
let r = await this.cMoveVerify(data)
if (!r) return false
let isPullList = []
Object.keys(r).forEach((key) => {
if (r[key]) {
isPullList.push(key)
}
})
let message = this.$t('trials:inspection:pullImage:confirm:pull')
let patientMessage = ''
if (isPullList.length > 0) {
isPullList.forEach((key) => {
patientMessage += `患者:${r[key].PatientName},检查申请号:${r[key].AccessionNumber}<br/>`
})
if (patientMessage) {
message =
patientMessage +
'<br/>' +
this.$t('trials:inspection:pullImage:message:isHasPull') +
'' +
message
}
}
let confirm = await this.$confirm(message, '', {
dangerouslyUseHTMLString: true,
})
if (!confirm) return false
this.loading = true
this.btnLoading = true
let res = await cmoveStudyList(data)
this.loading = false
this.btnLoading = false
if (res.IsSuccess) {
this.$message.success(
this.$t('trials:inspection:pullImage:message:pullSuccess')
)
this.handleCancelGroup()
}
} catch (err) {
this.loading = false
this.btnLoading = false
console.log(err)
}
},
handleSelectionChange(val) {
this.multipleSelection = val
},
},
}
</script>
<style lang="scss" scoped>
.icon-i {
color: #67c23a;
cursor: pointer;
}
.refreshBtn {
// transform: rotate(0);
transition: 0.5s;
&:hover {
transform: rotate(180deg);
transition: 0.5s;
}
}
</style>