|
@@ -0,0 +1,495 @@
|
|
|
+<template>
|
|
|
+ <div class="app-container">
|
|
|
+
|
|
|
+ <ag-grid-layout
|
|
|
+ :table-height="tableHeight"
|
|
|
+ theme="ag-theme-alpine"
|
|
|
+ :column-defs="columnDefs"
|
|
|
+ :row-data="tableData"
|
|
|
+ :locale-text="localeText"
|
|
|
+ :grid-options="gridOptions"
|
|
|
+ :default-col-def="defaultColDef"
|
|
|
+ :animate-rows="true"
|
|
|
+ :row-selection="rowSelection"
|
|
|
+ row-height="50"
|
|
|
+ @filterChanged="filterModifed"
|
|
|
+ @sortChanged="gridSortChange"
|
|
|
+ >
|
|
|
+ <div slot="toolbar" class="inner-toolbar">
|
|
|
+ <div class="toolbar-search">
|
|
|
+ <en-table-search :placeholder="this.$t('action.keywords')" @search="handlerSearch" />
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <el-pagination
|
|
|
+ v-if="pageData"
|
|
|
+ slot="pagination"
|
|
|
+ :current-page="pageData.page_no"
|
|
|
+ :page-sizes="[20, 50, 100, 200]"
|
|
|
+ :page-size="pageData.page_size"
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ :total="pageData.data_total"
|
|
|
+ @size-change="handlePageSizeChange"
|
|
|
+ @current-change="handlePageCurrentChange"
|
|
|
+ />
|
|
|
+ </ag-grid-layout>
|
|
|
+
|
|
|
+ <!-- 用户信息 -->
|
|
|
+ <el-dialog :visible.sync="customerFormVisible" :title="this.$t('customerManage.customerInfo')" class="customer-dialog" width="60%">
|
|
|
+ <el-form ref="editForm" :model="formmodel" :label-width="this.$i18n.locale === 'zh' ? '120px' : '145px'">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item :label="this.$t('customerManage.named')" prop="name">
|
|
|
+ {{ this.formmodel.name }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item :label="this.$t('customerManage.cardNo')">
|
|
|
+ {{ this.formmodel.card_no }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item :label="this.$t('member.sex')" class="form-item-sex">
|
|
|
+ {{ getSex(this.formmodel.sex) }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item :label="this.$t('customerManage.age')" prop="age">
|
|
|
+ {{ this.formmodel.age + this.formmodel.age_unit }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item :label="this.$t('member.mobile')" prop="mobile">
|
|
|
+ {{ this.formmodel.mobile }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item :label="this.$t('member.homeAddress')" prop="address">
|
|
|
+ {{ this.formmodel.address }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item :label="this.$t('member.birthday')" prop="birthday">
|
|
|
+ {{ this.formmodel.birthday }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item :label="this.$t('customerManage.inDate')" prop="in_date">
|
|
|
+ {{ this.formmodel.indate }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item :label="this.$t('customerManage.idCard')">
|
|
|
+ {{ this.formmodel.id_no }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item :label="this.$t('customerManage.frame')" prop="frame_id">
|
|
|
+ {{ this.formmodel.bed_no }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="16">
|
|
|
+ <el-form-item :label="this.$t('customerManage.patientIllnessDesc')">
|
|
|
+ {{ this.formmodel.illness_description }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="this.$t('customerManage.doctor')">
|
|
|
+ {{ this.formmodel.doctor_name }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="this.$t('customerManage.nurse')">
|
|
|
+ {{ this.formmodel.nurse_name }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="this.$t('customerManage.worker')">
|
|
|
+ {{ this.formmodel.worker_name }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row v-if="hisPatientMappingList.length > 0">
|
|
|
+ <el-col v-for="(item, index) in hisPatientMappingList" :key="index" :span="8">
|
|
|
+ <el-form-item :label="item.category_name">
|
|
|
+ <span :style="'color: #' + item.color">{{ item.options_name }}</span>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="this.$t('customerManage.babyName')">
|
|
|
+ {{ this.formmodel.baby_name }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="this.$t('customerManage.babySex')">
|
|
|
+ {{ getSex(this.formmodel.baby_sex) }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form-item :label="this.$t('customerManage.babyBirthday')">
|
|
|
+ {{ this.formmodel.baby_birthday }}
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ </el-dialog>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import * as API_his from '@/api/ncs_his'
|
|
|
+import { unixToDate } from '@/utils/Foundation'
|
|
|
+import { AG_GRID_LOCALE_CN } from '@/utils/AgGridVueLocaleCn'
|
|
|
+import ButtonCellRender from "@/components/AgGridCellRender/ButtonCellRender";
|
|
|
+import RecordButtonCellRender from "@/components/AgGridCellRender/RecordButtonCellRender";
|
|
|
+import RadioFilter from "@/components/AgGridCustomFilter/RadioFilter";
|
|
|
+import ListFilter from "@/components/AgGridCustomFilter/ListFilter";
|
|
|
+import {getDevicesByUuid} from "@/api/initialize";
|
|
|
+import * as API_NurseConfig from "@/api/ncs_nurse_config";
|
|
|
+const DeviceUrl = domain.DeviceUrl
|
|
|
+
|
|
|
+export default {
|
|
|
+ name: 'hisPatientManage',
|
|
|
+ components: { ButtonCellRender, RadioFilter, ListFilter, RecordButtonCellRender },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ pickerOptions: {
|
|
|
+ },
|
|
|
+ tableData: [],
|
|
|
+ /** 列表参数 */
|
|
|
+ params: {
|
|
|
+ page_size: 20,
|
|
|
+ page_no: 1,
|
|
|
+ },
|
|
|
+ activeName: 'customerBaseInfo',
|
|
|
+ formmodel: {},
|
|
|
+ pageData: [],
|
|
|
+ nurseconfigSelection: [],
|
|
|
+ loading: false,
|
|
|
+ searchDateRange: [],
|
|
|
+ callingType: null,
|
|
|
+ columnDefs: null, // 新表格
|
|
|
+ defaultColDef: null,
|
|
|
+ gridOptions: null,
|
|
|
+ gridApi: null,
|
|
|
+ columnApi: null,
|
|
|
+ localeText: AG_GRID_LOCALE_CN,
|
|
|
+ rowSelection: null,
|
|
|
+ showViewer: false,
|
|
|
+ queryResult: '-1',
|
|
|
+ srcStreaming1: '',
|
|
|
+ srcStreaming2: '',
|
|
|
+ stream1: '',
|
|
|
+ stream2: '',
|
|
|
+ beginSeconds: 0,
|
|
|
+ buttonStr: this.$t('action.play'),
|
|
|
+ dialogVisible: false,
|
|
|
+ streamingType: true,
|
|
|
+ recordDir: '',
|
|
|
+ sexTransfer: [
|
|
|
+ { key: this.$t('member.man'), value: '1', color: 'green' },
|
|
|
+ { key: this.$t('member.woman'), value: '0', color: 'red' }
|
|
|
+ ],
|
|
|
+ customerStatusTransfer: [
|
|
|
+ { key: this.$t('customerManage.customerStatusTrue'), value: '0', color: 'green' },
|
|
|
+ { key: this.$t('customerManage.customerStatusFalse'), value: '1', color: 'red' }
|
|
|
+ ],
|
|
|
+ partKeyval: this.$route.params.id,
|
|
|
+ partName: '',
|
|
|
+ customerFormVisible: false,
|
|
|
+ hisNurseOptionsList: [],
|
|
|
+ hisPatientMappingList: []
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ tableHeight() {
|
|
|
+ return this.mainAreaHeight - 130
|
|
|
+ }
|
|
|
+ },
|
|
|
+ beforeMount() {
|
|
|
+ this.gridOptions = {
|
|
|
+ }
|
|
|
+ this.columnDefs = [
|
|
|
+ {
|
|
|
+ headerName: '#',
|
|
|
+ headerCheckboxSelection: true,
|
|
|
+ headerCheckboxSelectionFilteredOnly: true,
|
|
|
+ checkboxSelection: true,
|
|
|
+ sortable: false, filter: false,
|
|
|
+ width: 50,
|
|
|
+ resizable: false,
|
|
|
+ valueGetter: this.hashValueGetter
|
|
|
+ },
|
|
|
+ { headerName: this.$t('his.hisPatientKeyval'), field: 'keyval', sortable: false, minWidth: 120 },
|
|
|
+ { headerName: this.$t('his.hisPartKeyval'), field: 'part_keyval', sortable: false, minWidth: 120 },
|
|
|
+ { headerName: this.$t('customerManage.named'), field: 'name', sortable: false, minWidth: 120 },
|
|
|
+ { headerName: this.$t('customerManage.frame'), field: 'bed_no', sortable: false, minWidth: 120 },
|
|
|
+ { headerName: this.$t('member.sex'), field: 'sex', sortable: true, filterFramework: 'RadioFilter', minWidth: 120,
|
|
|
+ filterParams: {
|
|
|
+ listData: this.sexTransfer
|
|
|
+ },
|
|
|
+ cellRenderer: this.sexRenderer },
|
|
|
+ { headerName: this.$t('customerManage.customerStatus'), field: 'status', sortable: true, filterFramework: 'RadioFilter', minWidth: 80,
|
|
|
+ filterParams: {
|
|
|
+ listData: this.customerStatusTransfer
|
|
|
+ },
|
|
|
+ cellRenderer: this.customerStatusRenderer },
|
|
|
+ { headerName: this.$t('member.mobile'), field: 'mobile', sortable: true, filter: 'agTextColumnFilter', minWidth: 120 },
|
|
|
+ { headerName: this.$t('customerManage.age'), field: 'age', sortable: true, filter: 'agNumberColumnFilter', minWidth: 80 },
|
|
|
+ { headerName: this.$t('customerManage.ageUnit'), field: 'age_unit', sortable: true, filter: 'agTextColumnFilter', minWidth: 80 },
|
|
|
+ { headerName: this.$t('member.birthday'), field: 'birthday', sortable: false, minWidth: 120 },
|
|
|
+ { headerName: this.$t('customerManage.cardNo'), field: 'card_no', sortable: false, minWidth: 120 },
|
|
|
+ { headerName: this.$t('customerManage.inDate'), field: 'indate', sortable: true, filter: 'agTextColumnFilter' },
|
|
|
+ { headerName: this.$t('action.handle'), field: 'id',
|
|
|
+ cellRendererFramework: 'ButtonCellRender',
|
|
|
+ cellRendererParams: {
|
|
|
+ onClick: this.handleInfo,
|
|
|
+ label: this.$t('his.hisPatientInfo'),
|
|
|
+ buttonType: 'primary',
|
|
|
+ buttonSize: 'mini'
|
|
|
+ },
|
|
|
+ filter: false,
|
|
|
+ pinned: 'right',
|
|
|
+ lockPinned: true,
|
|
|
+ minWidth: 120,
|
|
|
+ resizable: false,
|
|
|
+ sortable: false
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ this.defaultColDef = {
|
|
|
+ filter: false,
|
|
|
+ sortable: true,
|
|
|
+ resizable: true,
|
|
|
+ comparator: this.testComparator,
|
|
|
+ filterParams: {
|
|
|
+ debounceMs: 200,
|
|
|
+ newRowsAction: 'keep',
|
|
|
+ textCustomComparator: this.textCustomComparator,
|
|
|
+ comparator: this.testComparator
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.rowSelection = 'multiple'
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ window.onresize = this.windowResize
|
|
|
+ this.gridApi = this.gridOptions.api
|
|
|
+ this.getList()
|
|
|
+ // this.$refs.video2.addEventListener("pause", this.pause)
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ windowResize() {
|
|
|
+ this.$set(this, 'mainAreaHeight', Number(document.documentElement.clientHeight) - 84)
|
|
|
+ },
|
|
|
+ /** 分页大小发生改变 */
|
|
|
+ handlePageSizeChange(size) {
|
|
|
+ this.params.page_size = size
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+
|
|
|
+ /** 分页页数发生改变 */
|
|
|
+ handlePageCurrentChange(page) {
|
|
|
+ this.params.page_no = page
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ /** 加载列表数据 */
|
|
|
+ getList() {
|
|
|
+ this.loading = true
|
|
|
+ this.gridApi.showLoadingOverlay()
|
|
|
+ this.gridApi.sizeColumnsToFit()
|
|
|
+
|
|
|
+ if (this.partKeyval !== undefined) {
|
|
|
+ this.params.fixedCondition = 'part_keyval = "' + this.partKeyval + '"'
|
|
|
+ }
|
|
|
+
|
|
|
+ const param = this.MixinClone(this.params)
|
|
|
+ API_his.getPatientList(param).then(response => {
|
|
|
+ this.loading = false
|
|
|
+ this.tableData = [...response.data]
|
|
|
+ this.pageData = {
|
|
|
+ page_no: response.page_no,
|
|
|
+ page_size: response.page_size,
|
|
|
+ data_total: response.data_total
|
|
|
+ }
|
|
|
+ }).catch((error) => {
|
|
|
+ this.loading = false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ /** 处理搜索 */
|
|
|
+ handlerSearch(value) {
|
|
|
+ this.params.page_no = 1
|
|
|
+ this.params.query = value
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ formatterCreateTime(row, column, cellValue) {
|
|
|
+ return unixToDate(row.create_time)
|
|
|
+ },
|
|
|
+ /** 处理字段排序 */
|
|
|
+ tableSort(column) {
|
|
|
+ if (column.order !== null) {
|
|
|
+ this.params.sort = column.prop
|
|
|
+ this.params.dir = column.order === 'ascending' ? 'asc' : 'desc'
|
|
|
+ } else {
|
|
|
+ this.params.sort = null
|
|
|
+ this.params.dir = null
|
|
|
+ }
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ filterModifed(param) {
|
|
|
+ const model = param.api.getFilterModel()
|
|
|
+ this.params.filter = JSON.stringify(model)
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ gridSortChange(param) {
|
|
|
+ const columnState = param.columnApi.getColumnState()
|
|
|
+ // 排序状态
|
|
|
+ const sortState = columnState.filter(function(s) {
|
|
|
+ return s.sort != null
|
|
|
+ }).map(function(s) {
|
|
|
+ return {
|
|
|
+ colId: s.colId,
|
|
|
+ sort: s.sort,
|
|
|
+ sortIndex: s.sortIndex
|
|
|
+ }
|
|
|
+ }).sort(function(a, b) {
|
|
|
+ return a.sortIndex - b.sortIndex
|
|
|
+ })
|
|
|
+ if (sortState.length > 0) {
|
|
|
+ if (sortState.length === 1) {
|
|
|
+ this.params.sort = sortState[0].colId
|
|
|
+ this.params.dir = sortState[0].sort
|
|
|
+ } else {
|
|
|
+ let sortstring = ''
|
|
|
+ sortState.forEach(function(item) {
|
|
|
+ sortstring += item.colId + ' ' + item.sort + ','
|
|
|
+ })
|
|
|
+ this.params.sort = sortstring.substring(0, sortstring.length - 1)
|
|
|
+ this.params.dir = ' '
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ delete this.params.sort
|
|
|
+ delete this.params.dir
|
|
|
+ }
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ changeResult() {
|
|
|
+ this.params.query_result = this.queryResult
|
|
|
+ this.params.page_no = 1
|
|
|
+ this.getList()
|
|
|
+ },
|
|
|
+ /** 性别格式化 **/
|
|
|
+ sexRenderer(params) {
|
|
|
+ if (params.value === null || params.value === undefined) return ''
|
|
|
+ const item = this.sexTransfer.filter(p => p.value === params.value)[0]
|
|
|
+ if (item) {
|
|
|
+ return '<span style="color:' + item.color + ';">' + item.key + '</span>'
|
|
|
+ } else {
|
|
|
+ return this.$t('member.unknown')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getSex(value) {
|
|
|
+ if (value === null || value === undefined) return ''
|
|
|
+ const item = this.sexTransfer.filter(p => p.value ===value)[0]
|
|
|
+ if (item) {
|
|
|
+ return item.key
|
|
|
+ } else {
|
|
|
+ return this.$t('member.unknown')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ /** 状态格式化 **/
|
|
|
+ customerStatusRenderer(params) {
|
|
|
+ if (params.value === null || params.value === undefined) return ''
|
|
|
+ const item = this.customerStatusTransfer.filter(p => p.value === params.value)[0]
|
|
|
+ if (item) {
|
|
|
+ return '<span style="color:' + item.color + ';">' + item.key + '</span>'
|
|
|
+ } else {
|
|
|
+ return this.$t('member.unknown')
|
|
|
+ }
|
|
|
+ },
|
|
|
+ handleInfo(row) {
|
|
|
+ this.boolDevice = false
|
|
|
+ this.formmodel = {
|
|
|
+ ...row
|
|
|
+ }
|
|
|
+
|
|
|
+ console.log(this.formmodel)
|
|
|
+ this.getPatientNurseMappingByPatientKeyval(this.formmodel.keyval)
|
|
|
+ // // 处理护理项已选择内容
|
|
|
+ // const nurseconfigs = this.formmodel.nurseconfigs
|
|
|
+ // for (let i = 0; i < this.nurseconfigSelection.length; i++) {
|
|
|
+ // delete this.nurseconfigSelection[i].selected_id
|
|
|
+ // delete this.nurseconfigSelection[i].mapping_id
|
|
|
+ // }
|
|
|
+ // if (nurseconfigs) {
|
|
|
+ // nurseconfigs.forEach(item => {
|
|
|
+ // const nurseconfigselect = this.nurseconfigSelection.find(p => p.config.id === item.nurseconfig_id)
|
|
|
+ // if (nurseconfigselect) {
|
|
|
+ // nurseconfigselect.selected_id = item.nurseconfig_option_id
|
|
|
+ // nurseconfigselect.mapping_id = item.mapping_id
|
|
|
+ // }
|
|
|
+ // })
|
|
|
+ // }
|
|
|
+ this.customerFormVisible = true
|
|
|
+ // this.handNusreColor()
|
|
|
+ },
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 加载护理参数
|
|
|
+ */
|
|
|
+ getNurseConfigs() {
|
|
|
+ this.nurseData = []
|
|
|
+ API_NurseConfig.getConfigSelectionByPartId(this.$store.getters.partId).then(res => {
|
|
|
+ this.nurseconfigSelection = [...res]
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 护理项选择 设置选中项的颜色
|
|
|
+ changeNurseData(val, configid, index) {
|
|
|
+ const currentCfg = this.nurseconfigSelection.find(p => p.config.id === configid).options.find(p => p.id === val)
|
|
|
+ if (currentCfg) {
|
|
|
+ this.$refs['patient_nurse_' + configid][0].$el.getElementsByClassName('el-input__inner')[0].style = 'color:#' + currentCfg.color_rgb + ' !important'
|
|
|
+ }
|
|
|
+ this.$set(this, 'nurseconfigSelection', this.nurseconfigSelection)
|
|
|
+ this.$set(this.nurseconfigSelection, index, this.nurseconfigSelection[index])
|
|
|
+ },
|
|
|
+ // 初始化护理参数选中项颜色
|
|
|
+ handNusreColor() {
|
|
|
+ // 处理护理等级颜色
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.nurseconfigSelection.forEach(item => {
|
|
|
+ const currentCfg = this.nurseconfigSelection.find(p => p.config.id === item.config.id).options.find(p => p.id === item.selected_id)
|
|
|
+ if (currentCfg) {
|
|
|
+ this.$refs['patient_nurse_' + item.config.id][0].$el.getElementsByClassName('el-input__inner')[0].style = 'color:#' + currentCfg.color_rgb + ' !important'
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getPatientNurseMappingByPatientKeyval(patientKeyval) {
|
|
|
+ API_his.getPatientNurseMappingByPatientKeyval(patientKeyval).then(res => {
|
|
|
+ this.hisPatientMappingList = res
|
|
|
+ console.log(this.hisPatientMappingList)
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style scoped>
|
|
|
+
|
|
|
+</style>
|