update
This commit is contained in:
+21
@@ -0,0 +1,21 @@
|
|||||||
|
FROM nginx
|
||||||
|
MAINTAINER jeecgos@163.com
|
||||||
|
VOLUME /tmp
|
||||||
|
ENV LANG en_US.UTF-8
|
||||||
|
RUN echo "server { \
|
||||||
|
#解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 \
|
||||||
|
location / { \
|
||||||
|
root /var/www/html/; \
|
||||||
|
index index.html index.htm; \
|
||||||
|
if (!-e \$request_filename) { \
|
||||||
|
rewrite ^(.*)\$ /index.html?s=\$1 last; \
|
||||||
|
break; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
access_log /var/log/nginx/access.log ; \
|
||||||
|
} " > /etc/nginx/conf.d/default.conf \
|
||||||
|
&& mkdir -p /var/www \
|
||||||
|
&& mkdir -p /var/www/html
|
||||||
|
|
||||||
|
ADD dist/ /var/www/html/
|
||||||
|
EXPOSE 3101
|
||||||
+1
-1
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
onMounted(async () => {
|
onMounted(async () => {
|
||||||
try {
|
try {
|
||||||
if (userStore.getToken && getBaseLogin() === '/centralScreenLogin') {
|
if (userStore.getToken) {
|
||||||
const { result } = await getEmergencyCenterApi();
|
const { result } = await getEmergencyCenterApi();
|
||||||
if (result?.screenPath) {
|
if (result?.screenPath) {
|
||||||
router.replace(result?.screenPath);
|
router.replace(result?.screenPath);
|
||||||
|
|||||||
@@ -52,6 +52,7 @@
|
|||||||
showTotal: (total) => `总 ${total} 条`,
|
showTotal: (total) => `总 ${total} 条`,
|
||||||
onChange: pageChange,
|
onChange: pageChange,
|
||||||
});
|
});
|
||||||
|
const emit = defineEmits(['tableLoad']);
|
||||||
|
|
||||||
function pageChange(page, pageS) {
|
function pageChange(page, pageS) {
|
||||||
current.value = page;
|
current.value = page;
|
||||||
@@ -74,6 +75,7 @@
|
|||||||
async function getRecords() {
|
async function getRecords() {
|
||||||
try {
|
try {
|
||||||
tableLoading.value = true;
|
tableLoading.value = true;
|
||||||
|
emit('tableLoad', true);
|
||||||
const { code, result } = await props.api({ ...props.apiParams, pageSize: pageSize.value, pageNo: current.value });
|
const { code, result } = await props.api({ ...props.apiParams, pageSize: pageSize.value, pageNo: current.value });
|
||||||
if (code == 200) {
|
if (code == 200) {
|
||||||
if (props.afterFetch && isFunction(props.afterFetch)) {
|
if (props.afterFetch && isFunction(props.afterFetch)) {
|
||||||
@@ -86,9 +88,9 @@
|
|||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
dataSource.value = [];
|
dataSource.value = [];
|
||||||
tableLoading.value = false;
|
|
||||||
} finally {
|
} finally {
|
||||||
tableLoading.value = false;
|
tableLoading.value = false;
|
||||||
|
emit('tableLoad', false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-5
@@ -48,17 +48,18 @@ const router: Router = createRouter({
|
|||||||
history: createWebHistory('/'),
|
history: createWebHistory('/'),
|
||||||
routes: [...routes],
|
routes: [...routes],
|
||||||
});
|
});
|
||||||
const xian = ['/home', '/secondScreen', '/transfer'];
|
|
||||||
const yinchuan = ['/yinChuanHome', '/yinChuanTest', '/transfer'];
|
|
||||||
|
|
||||||
router.beforeEach((to, from, next) => {
|
router.beforeEach((to, from, next) => {
|
||||||
if (to.path !== '/login' && to.path !== '/home') {
|
if (to.path == '/login') {
|
||||||
setCurrentPath(to.path);
|
next();
|
||||||
}
|
} else {
|
||||||
const flag = getAuthCache('flag3');
|
const flag = getAuthCache('flag3');
|
||||||
const token = getAuthCache(TOKEN_KEY);
|
const token = getAuthCache(TOKEN_KEY);
|
||||||
if (!flag || !token) {
|
if (!flag || !token) {
|
||||||
return next({ path: '/login' });
|
return next({ path: '/login' });
|
||||||
|
} else {
|
||||||
|
next();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
next();
|
next();
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="sun-screen-box">
|
<div class="sun-screen-box">
|
||||||
|
<login-out-button out-url="login" />
|
||||||
<div class="sun-screen-title">
|
<div class="sun-screen-title">
|
||||||
<div class="sun-title-left">2025年06月14日 12:21:21</div>
|
<div class="sun-title-left">2025年06月14日 12:21:21</div>
|
||||||
<div class="sun-title-center">应急就医服务中心</div>
|
<div class="sun-title-center">应急就医服务中心</div>
|
||||||
@@ -35,7 +36,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<PhoneDialog ref="phoneDialogRef" :title="phoneDialogTitle" :useForm="true" :setting="setting" :phoneType="phoneType" />
|
<PhoneDialog ref="phoneDialogRef" :title="phoneDialogTitle" :useForm="true" :setting="setting" :phoneType="phoneType" />
|
||||||
<IndexModal ref="indexModalRef" :title="indexModalTitle" :useForm="true" :column="indexColumn" :firstForm="firstFormOne"> </IndexModal>
|
<IndexModal ref="indexModalRef" :title="indexModalTitle" :useForm="true" :column="indexColumn" :firstForm="firstFormOne" />
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
// import threeL from '/@/views/indexSun/threeL.vue';
|
// import threeL from '/@/views/indexSun/threeL.vue';
|
||||||
@@ -52,6 +53,7 @@
|
|||||||
import PhoneDialog from '/@/views/components/phoneDialog/phoneDialog.vue';
|
import PhoneDialog from '/@/views/components/phoneDialog/phoneDialog.vue';
|
||||||
import { DataType, getSettings } from '/@/utils/settings.ts';
|
import { DataType, getSettings } from '/@/utils/settings.ts';
|
||||||
import IndexModal from '/@/views/indexSun/indexModal.vue';
|
import IndexModal from '/@/views/indexSun/indexModal.vue';
|
||||||
|
import LoginOutButton from '/@/views/components/loginOutButton.vue';
|
||||||
import router from '/@/router';
|
import router from '/@/router';
|
||||||
import { getAuthCache } from '/@/utils/auth.ts';
|
import { getAuthCache } from '/@/utils/auth.ts';
|
||||||
//0:处置 1:处理 2:呼入 3:全部
|
//0:处置 1:处理 2:呼入 3:全部
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="map">
|
<div class="map">
|
||||||
<div style="flex: 1; overflow: hidden; margin: 0 0 10px">
|
<div style="flex: 1; overflow: hidden">
|
||||||
<div id="xianmapContainer" class="xianmapContainer"></div>
|
<div id="xianmapContainer" class="xianmapContainer"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -62,8 +62,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { ref, onMounted } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
import { tabList, legendList, infoContent } from '/@/views/indexSun/indexSun.ts';
|
import { infoContent, legendList, tabList } from '/@/views/indexSun/indexSun.ts';
|
||||||
import { message } from 'ant-design-vue';
|
import { message } from 'ant-design-vue';
|
||||||
import { innerLineLight, outerLineOption } from '/@/assets/mapUtils/mapConstant.ts';
|
import { innerLineLight, outerLineOption } from '/@/assets/mapUtils/mapConstant.ts';
|
||||||
import { Map } from '/@/assets/mapUtils/map.ts';
|
import { Map } from '/@/assets/mapUtils/map.ts';
|
||||||
@@ -120,15 +120,18 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function setLevel() {
|
function setLevel() {
|
||||||
//获取当前地图级别
|
//获取当前地图级别
|
||||||
level.value = Map.map.getZoom();
|
level.value = Map.map.getZoom();
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeInput() {
|
function removeInput() {
|
||||||
formState.value.start = '';
|
formState.value.start = '';
|
||||||
formState.value.end = '';
|
formState.value.end = '';
|
||||||
searchFlag.value = false;
|
searchFlag.value = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeTab(item, i: number) {
|
function changeTab(item, i: number) {
|
||||||
currentIndex.value = i;
|
currentIndex.value = i;
|
||||||
Map.clearActiveHospital();
|
Map.clearActiveHospital();
|
||||||
@@ -150,6 +153,7 @@
|
|||||||
getMapData(item.type, { type: item.type });
|
getMapData(item.type, { type: item.type });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function searchRoute(callback: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null) {
|
function searchRoute(callback: ((this: MediaQueryList, ev: MediaQueryListEvent) => any) | null) {
|
||||||
showRoutePanel.value = false;
|
showRoutePanel.value = false;
|
||||||
panelTitle.value = '';
|
panelTitle.value = '';
|
||||||
@@ -197,6 +201,7 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getMapData(type, params = { type: '' }) {
|
async function getMapData(type, params = { type: '' }) {
|
||||||
try {
|
try {
|
||||||
console.log(type, params, 'asghujis');
|
console.log(type, params, 'asghujis');
|
||||||
@@ -234,6 +239,7 @@
|
|||||||
console.warn(e);
|
console.warn(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function closeDrivingElement() {
|
function closeDrivingElement() {
|
||||||
Map.clearNavigationElements();
|
Map.clearNavigationElements();
|
||||||
formState.value.start = '';
|
formState.value.start = '';
|
||||||
@@ -241,20 +247,24 @@
|
|||||||
showDrivingPanel.value = false;
|
showDrivingPanel.value = false;
|
||||||
emits('clearHospitalList');
|
emits('clearHospitalList');
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleClcikDetail(res) {
|
function handleClcikDetail(res) {
|
||||||
console.log(res);
|
console.log(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setTitle({ time, distance }) {
|
function setTitle({ time, distance }) {
|
||||||
let str = '全程';
|
let str = '全程';
|
||||||
str += getTimeStr(time);
|
str += getTimeStr(time);
|
||||||
str += getKmStr(distance);
|
str += getKmStr(distance);
|
||||||
panelTitle.value = str;
|
panelTitle.value = str;
|
||||||
}
|
}
|
||||||
|
|
||||||
function outClick() {
|
function outClick() {
|
||||||
showRoutePanel.value = false;
|
showRoutePanel.value = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const currentCityCode = ref('');
|
const currentCityCode = ref('');
|
||||||
|
|
||||||
function logMapinfo() {
|
function logMapinfo() {
|
||||||
Map.map.getCity(function (info) {
|
Map.map.getCity(function (info) {
|
||||||
const { citycode } = info;
|
const { citycode } = info;
|
||||||
@@ -264,6 +274,7 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function drawMarker(data: any) {
|
function drawMarker(data: any) {
|
||||||
console.log(data);
|
console.log(data);
|
||||||
const { lon, lat } = data;
|
const { lon, lat } = data;
|
||||||
@@ -283,17 +294,20 @@
|
|||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-content: space-between;
|
align-content: space-between;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.map-box {
|
.map-box {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.tab-list {
|
.tab-list {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
letter-spacing: 1px;
|
letter-spacing: 1px;
|
||||||
|
|
||||||
.tab {
|
.tab {
|
||||||
width: calc(100% / 8);
|
width: calc(100% / 8);
|
||||||
height: 40px;
|
height: 40px;
|
||||||
@@ -313,6 +327,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.route-navigation {
|
.route-navigation {
|
||||||
--fontColor: #607ddb;
|
--fontColor: #607ddb;
|
||||||
margin: 12px 0;
|
margin: 12px 0;
|
||||||
@@ -445,15 +460,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.map {
|
.map {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
|
||||||
.xianmapContainer {
|
.xianmapContainer {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
height: calc(100% + 22px);
|
height: calc(100% + 22px);
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.map-legend {
|
.map-legend {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 20px;
|
bottom: 20px;
|
||||||
@@ -470,6 +488,7 @@
|
|||||||
margin: 5px 0;
|
margin: 5px 0;
|
||||||
color: #607ddb;
|
color: #607ddb;
|
||||||
letter-spacing: 2px;
|
letter-spacing: 2px;
|
||||||
|
|
||||||
.legend-img {
|
.legend-img {
|
||||||
width: 20px;
|
width: 20px;
|
||||||
margin-right: 5px;
|
margin-right: 5px;
|
||||||
@@ -477,6 +496,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.center-footer {
|
.center-footer {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
@@ -486,17 +506,20 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin-bottom: 10px;
|
margin-bottom: 10px;
|
||||||
gap: 20px;
|
gap: 20px;
|
||||||
|
|
||||||
> :nth-child(1) {
|
> :nth-child(1) {
|
||||||
background: url('/@/assets/indexSun/footerBlue.png') no-repeat;
|
background: url('/@/assets/indexSun/footerBlue.png') no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
color: #22e8ff;
|
color: #22e8ff;
|
||||||
margin-right: 80px;
|
margin-right: 80px;
|
||||||
}
|
}
|
||||||
|
|
||||||
> :nth-child(2) {
|
> :nth-child(2) {
|
||||||
background: url('/@/assets/indexSun/footerGreen.png') no-repeat;
|
background: url('/@/assets/indexSun/footerGreen.png') no-repeat;
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
color: #45ffa1;
|
color: #45ffa1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.count-item {
|
.count-item {
|
||||||
width: 240px;
|
width: 240px;
|
||||||
height: 120px;
|
height: 120px;
|
||||||
@@ -518,6 +541,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
:deep(.modal-box) {
|
:deep(.modal-box) {
|
||||||
width: 330px;
|
width: 330px;
|
||||||
height: 220px;
|
height: 220px;
|
||||||
@@ -525,19 +549,24 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-around;
|
justify-content: space-around;
|
||||||
|
|
||||||
.modal-item {
|
.modal-item {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
||||||
.item-one {
|
.item-one {
|
||||||
width: 50%;
|
width: 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.item-two {
|
.item-two {
|
||||||
color: #00ccff;
|
color: #00ccff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-btn {
|
.modal-btn {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
|
||||||
.view-btn {
|
.view-btn {
|
||||||
padding: 5px;
|
padding: 5px;
|
||||||
width: 60%;
|
width: 60%;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<Dialog class="index-modal" :openVis="visible" width="60%" :title="dialogTitle" @close="closeDialog" :maskClosable="false">
|
<Dialog class="index-modal" :openVis="visible" width="60%" :title="dialogTitle" @close="closeDialog" :maskClosable="false">
|
||||||
<template #container>
|
<template #container>
|
||||||
<div v-if="useForm" class="form-container">
|
<div v-if="useForm" class="form-container">
|
||||||
<Form :model="formRecord" :label-width="100" v-bind="formItemLayout">
|
<Form :model="formRecord" v-bind="formItemLayout">
|
||||||
<slot name="searchFirst"></slot>
|
<slot name="searchFirst"></slot>
|
||||||
<a-form-item v-for="(item, index) in firstForm" :label="item.label" :key="index">
|
<a-form-item v-for="(item, index) in firstForm" :label="item.label" :key="index">
|
||||||
<a-input :placeholder="item.placeholder" v-if="item.type == 'input'" v-model:value="formRecord[item.field]" />
|
<a-input :placeholder="item.placeholder" v-if="item.type == 'input'" v-model:value="formRecord[item.field]" />
|
||||||
@@ -22,11 +22,17 @@
|
|||||||
<slot name="searchSecond"></slot>
|
<slot name="searchSecond"></slot>
|
||||||
</Form>
|
</Form>
|
||||||
<div class="form-btn">
|
<div class="form-btn">
|
||||||
<a-button @click="handleClicksearch">搜索</a-button>
|
<a-button @click="handleClicksearch" style="border-color: #00ccff">重置</a-button>
|
||||||
<a-button @click="handleClicksearch" style="margin-left: 10px">重置</a-button>
|
<a-button
|
||||||
|
@click="handleClicksearch"
|
||||||
|
:loading="loading"
|
||||||
|
style="margin-left: 10px; background: #00ccff; border-color: #00ccff; color: #ffffff"
|
||||||
|
>
|
||||||
|
搜索
|
||||||
|
</a-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<BasicTable ref="registerTable" class="table-container" :key="visible" :columns="column" :apiParams="formState" />
|
<BasicTable @table-load="tableLoad" ref="registerTable" class="table-container" :key="visible" :columns="column" :apiParams="formState" />
|
||||||
</template>
|
</template>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</template>
|
</template>
|
||||||
@@ -58,6 +64,7 @@
|
|||||||
default: () => [],
|
default: () => [],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
const loading = ref<boolean>(false);
|
||||||
const formState = ref();
|
const formState = ref();
|
||||||
const dialogTitle = ref('');
|
const dialogTitle = ref('');
|
||||||
const formRecord = ref({
|
const formRecord = ref({
|
||||||
@@ -83,6 +90,10 @@
|
|||||||
getField();
|
getField();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function tableLoad(b: boolean) {
|
||||||
|
loading.value = b;
|
||||||
|
}
|
||||||
|
|
||||||
function getField() {
|
function getField() {
|
||||||
let result = {};
|
let result = {};
|
||||||
props.firstForm.map((item) => {
|
props.firstForm.map((item) => {
|
||||||
@@ -114,7 +125,7 @@
|
|||||||
background: red !important;
|
background: red !important;
|
||||||
}
|
}
|
||||||
.form-container {
|
.form-container {
|
||||||
margin: 10px 0;
|
margin: 10px;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
:deep(.ant-form-item-label > label) {
|
:deep(.ant-form-item-label > label) {
|
||||||
@@ -135,19 +146,25 @@
|
|||||||
}
|
}
|
||||||
.form-btn {
|
.form-btn {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
text-align: right;
|
padding-left: 20px;
|
||||||
padding-right: 20px;
|
|
||||||
:deep(.ant-btn) {
|
:deep(.ant-btn) {
|
||||||
background: #082147;
|
background: #082147;
|
||||||
border: 1px solid #00ccff;
|
border: 1px solid #00ccff;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
//margin: 0 15px;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.table-container {
|
.table-container {
|
||||||
margin: 0 10px;
|
margin: 0 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:deep(.ant-form-item-label) {
|
||||||
|
width: auto !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.ant-form-item-control) {
|
||||||
|
margin-right: 20px !important;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ export function getClassCharts(dx, dy) {
|
|||||||
},
|
},
|
||||||
interval: 25, // 步长
|
interval: 25, // 步长
|
||||||
min: 0, // 起始 - 设置y轴刻度的最小值
|
min: 0, // 起始 - 设置y轴刻度的最小值
|
||||||
max: 100, // 终止 - 设置y轴刻度的最大值
|
|
||||||
axisLabel: {
|
axisLabel: {
|
||||||
color: '#65C6E7',
|
color: '#65C6E7',
|
||||||
formatter: function (value, index) {
|
formatter: function (value, index) {
|
||||||
|
|||||||
@@ -31,14 +31,14 @@
|
|||||||
@click="handleClick(item)"
|
@click="handleClick(item)"
|
||||||
>
|
>
|
||||||
<span>{{ item?.name }}</span>
|
<span>{{ item?.name }}</span>
|
||||||
<span>{{ item?.value }}</span>
|
<span :style="{ color: index > 1 ? '' : '#22e8ff' }">{{ item?.value || 0 }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>6+
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed, ref, watch } from 'vue';
|
import { ref, watch } from 'vue';
|
||||||
import { useStatistics } from '/@/components/body-d-left/bodyLeftHooks.ts';
|
import { useStatistics } from '/@/components/body-d-left/bodyLeftHooks.ts';
|
||||||
import { statisticsNewApi } from '/@/views/indexSun/indexSun.api.ts';
|
import { statisticsNewApi } from '/@/views/indexSun/indexSun.api.ts';
|
||||||
import { caching, useSession } from '/@/hooks/autoRefresh/caching.ts';
|
import { caching, useSession } from '/@/hooks/autoRefresh/caching.ts';
|
||||||
@@ -67,6 +67,7 @@
|
|||||||
getOneLeftInfo();
|
getOneLeftInfo();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
async function getOneLeftInfo() {
|
async function getOneLeftInfo() {
|
||||||
const params = {
|
const params = {
|
||||||
condition: chooseType.value,
|
condition: chooseType.value,
|
||||||
@@ -81,6 +82,7 @@
|
|||||||
setValue(res.result);
|
setValue(res.result);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function setValue(result) {
|
function setValue(result) {
|
||||||
let { alerdyreceive = '', totalacceptance = '' } = result;
|
let { alerdyreceive = '', totalacceptance = '' } = result;
|
||||||
setStatistics(result);
|
setStatistics(result);
|
||||||
@@ -89,10 +91,12 @@
|
|||||||
useDetail.setTotalacceptance(totalacceptance);
|
useDetail.setTotalacceptance(totalacceptance);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function clickChooseType(index) {
|
function clickChooseType(index) {
|
||||||
if (chooseType.value === index) return;
|
if (chooseType.value === index) return;
|
||||||
chooseType.value = index;
|
chooseType.value = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleClick(item) {
|
function handleClick(item) {
|
||||||
emit('handleClick', item);
|
emit('handleClick', item);
|
||||||
}
|
}
|
||||||
@@ -100,6 +104,7 @@
|
|||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
.one-l-box {
|
.one-l-box {
|
||||||
background: rgba(8, 75, 100, 0.2);
|
background: rgba(8, 75, 100, 0.2);
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
height: 40px;
|
height: 40px;
|
||||||
border-radius: 14px 14px 0 0;
|
border-radius: 14px 14px 0 0;
|
||||||
@@ -111,14 +116,17 @@
|
|||||||
padding: 0 20px;
|
padding: 0 20px;
|
||||||
background: linear-gradient(to right, rgba(8, 75, 100, 0.5) 0%, rgba(255, 255, 255, 0) 100%);
|
background: linear-gradient(to right, rgba(8, 75, 100, 0.5) 0%, rgba(255, 255, 255, 0) 100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
.content {
|
.content {
|
||||||
height: calc(100% - 40px);
|
height: calc(100% - 40px);
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
|
||||||
.type-time {
|
.type-time {
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
margin-right: 10px;
|
margin-right: 10px;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 3px 15px;
|
padding: 3px 15px;
|
||||||
@@ -126,10 +134,12 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.selected {
|
.selected {
|
||||||
color: #00ccff;
|
color: #00ccff;
|
||||||
background: rgba(0, 204, 255, 0.2);
|
background: rgba(0, 204, 255, 0.2);
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
&:before {
|
&:before {
|
||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -151,6 +161,7 @@
|
|||||||
border-bottom: 3px solid #00ccff; /* 顶部线条 */
|
border-bottom: 3px solid #00ccff; /* 顶部线条 */
|
||||||
border-right: 3px solid #00ccff; /* 左侧线条 */
|
border-right: 3px solid #00ccff; /* 左侧线条 */
|
||||||
}
|
}
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -181,10 +192,12 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.no-selected {
|
.no-selected {
|
||||||
color: #b6b6b6;
|
color: #b6b6b6;
|
||||||
background: rgba(26, 69, 126, 0.2);
|
background: rgba(26, 69, 126, 0.2);
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
&:before {
|
&:before {
|
||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@@ -206,6 +219,7 @@
|
|||||||
border-bottom: 3px solid #1a457e; /* 顶部线条 */
|
border-bottom: 3px solid #1a457e; /* 顶部线条 */
|
||||||
border-right: 3px solid #1a457e; /* 左侧线条 */
|
border-right: 3px solid #1a457e; /* 左侧线条 */
|
||||||
}
|
}
|
||||||
|
|
||||||
> div {
|
> div {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -236,6 +250,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.triangle {
|
.triangle {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
@@ -248,6 +263,7 @@
|
|||||||
border-bottom: 6px solid #00ccff; /* 底部为黑色,形成三角形 */
|
border-bottom: 6px solid #00ccff; /* 底部为黑色,形成三角形 */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.server-container {
|
.server-container {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
@@ -261,18 +277,22 @@
|
|||||||
letter-spacing: 2px;
|
letter-spacing: 2px;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
|
|
||||||
.spin {
|
.spin {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.server-item {
|
.server-item {
|
||||||
// font-size: 16px;
|
// font-size: 16px;
|
||||||
padding: 3px 3% 3px 5%;
|
padding: 3px 3% 3px 5%;
|
||||||
|
|
||||||
&.hasCursor {
|
&.hasCursor {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,8 +59,8 @@
|
|||||||
|
|
||||||
function initChart() {
|
function initChart() {
|
||||||
myChart.value = echarts.init(newChart.value!);
|
myChart.value = echarts.init(newChart.value!);
|
||||||
const dx = ['120', '应急就医', '急救联动'];
|
const dx = ['120', '应急就医'];
|
||||||
const dy = [46, 39, 18];
|
const dy = [46, 39];
|
||||||
let option = getClassCharts(dx, dy);
|
let option = getClassCharts(dx, dy);
|
||||||
myChart.value.setOption(option);
|
myChart.value.setOption(option);
|
||||||
window.addEventListener('resize', () => {
|
window.addEventListener('resize', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user