Merge branch 'dev' into test

This commit is contained in:
zk
2023-12-27 09:14:17 +08:00
37 changed files with 333 additions and 200 deletions
+6 -3
View File
@@ -23,10 +23,10 @@
</template>
<script setup lang="ts">
import { onMounted, ref } from 'vue';
import bus from '/@/utils/bus.ts';
import PublicTitle from '../publicTitle.vue';
import { list } from './left.api';
import { timeTab, useSpin, useStatistics } from '/@/components/body-d-left/bodyLeftHooks.ts';
import { useDetailStore } from '/@/store/modules/detailData.ts';
const typeTime = ref(timeTab);
const { statistics, setStatistics } = useStatistics();
@@ -38,6 +38,8 @@
getList();
});
const useDetail = useDetailStore();
async function getList() {
setSpin(true);
try {
@@ -48,7 +50,8 @@
}
setStatistics(result[0]);
let { alerdyreceive = '', totalacceptance = '' } = result[0];
bus.emit('alerdyreceive', { alerdyreceive, totalacceptance });
useDetail.setAlerdyreceive(alerdyreceive);
useDetail.setTotalacceptance(totalacceptance);
} catch {
setSpin(!spinning.value);
}
@@ -104,4 +107,4 @@
}
}
}
</style>
</style>
+2 -2
View File
@@ -184,7 +184,7 @@
//框背景色
.ant-select:not(.ant-select-customize-input) .ant-select-selector {
color: #1b7ef2 !important;
color: #1b7ef2;
background-color: transparent !important;
border: 1px solid #1b7ef2 !important;
}
@@ -214,4 +214,4 @@
.ant-select-item-option-selected:not(.ant-select-item-option-disabled) {
background-color: #002e64 !important;
}
</style>
</style>
@@ -132,6 +132,7 @@ export function ringOption(chartData, total) {
color: '#ffffff',
fontSize: 16,
},
selectedMode: false,
},
series: [
{
+1 -1
View File
@@ -238,7 +238,7 @@ antd表格样式
*/
.ant-table-thead > tr > th {
border-bottom: 1px solid #1e73c2 !important;
//border-bottom: 1px solid #1e73c2 !important;
}
.ant-table-body {
+13 -15
View File
@@ -49,12 +49,12 @@
<!-- <div class="level">地图层级{{ level }}</div>-->
</div>
<div class="center-footer">
<div class="count-item" @click="test">
<div class="num">{{ footerData?.alerdyreceive || '/' }}</div>
<div class="count-item">
<div class="num">{{ useDetail?.alerdyreceive || '/' }}</div>
<div class="text">累计受理</div>
</div>
<div class="count-item">
<div class="num">{{ footerData?.totalacceptance || '/' }}</div>
<div class="num">{{ useDetail?.totalacceptance || '/' }}</div>
<div class="text">累计处置</div>
</div>
</div>
@@ -62,11 +62,12 @@
</template>
<script lang="ts" setup>
import { onMounted, ref } from 'vue';
import $bus from '/@/utils/bus.ts';
import { message } from 'ant-design-vue';
import { Map } from '/@/assets/mapUtils/map';
import { aircraft, getKmStr, getTimeStr, legendList, mapApiSwitch, tabList, TabType } from '/@/components/chinaMap/chinaHooks';
import { useDetailStore } from '/@/store/modules/detailData.ts';
const useDetail = useDetailStore();
function test() {
Map.clearActiveHospital();
@@ -97,11 +98,15 @@
}
}
const currentCityCode = ref('');
function logMapinfo() {
// let zoom = Map.map.getZoom();
Map.map.getCity(function (info) {
const { citycode } = info;
Map.createActiveHospital(citycode);
if (currentCityCode.value != citycode) {
Map.createActiveHospital(citycode);
currentCityCode.value = citycode;
}
});
}
@@ -137,19 +142,12 @@
}
}
const footerData = ref({
alerdyreceive: '',
totalacceptance: '',
});
onMounted(() => {
console.log('reload');
Map.initMap({ el: 'mapContainer' }).then(() => {
getMapData(tabList[0].type);
Map.map && Map.map.on('moveend', setLevel);
Map.map && Map.map.on('zoomend', setLevel);
$bus.on('alerdyreceive', (val) => {
footerData.value = val;
});
Map.map && Map.map.on('zoomend', setLevel);
});
});
const routeList = ref([]);
+2 -1
View File
@@ -38,11 +38,12 @@
background-size: 100% 100%;
color: #ffffff !important;
padding-left: 2%;
font-size: 18px;
font-weight: bold;
}
.ant-modal-header {
padding: 0 !important;
padding-bottom: 0;
border-bottom: none;
}
+10
View File
@@ -74,6 +74,16 @@
height: calc(100% - 40px);
}
.inner::after {
content: '';
position: absolute;
left: 0;
top: 0;
width: 20px;
height: 20px;
background-color: #051a2b;
}
.left-pie {
position: relative;
padding-bottom: 0 !important;
+8 -5
View File
@@ -1,7 +1,8 @@
// 步数
import {visibleChartLabel} from "/@/utils/utils.ts";
export function screenPie(chartData, total, color, formatter) {
export function screenPie(chartData, total, color) {
const data = visibleChartLabel(chartData)
return {
color: color,
tooltip: {
@@ -14,7 +15,7 @@ export function screenPie(chartData, total, color, formatter) {
borderColor: '#1b7ef2',
},
legend: {
left: '72%',
right: '5%',
top: 'center',
orient: 'vertical',
icon: 'circle',
@@ -23,12 +24,13 @@ export function screenPie(chartData, total, color, formatter) {
color: '#ffffff',
fontSize: 16,
},
selectedMode: false
},
series: [
{
type: 'pie',
radius: ['50%', '76%'],
center: ['40%', '49%'],
radius: ['50%', '72%'],
center: ['37%', '49%'],
avoidLabelOverlap: false,
label: {
show: true,
@@ -42,7 +44,7 @@ export function screenPie(chartData, total, color, formatter) {
length2: 10,
minTurnAngle: 120,
},
data: chartData,
data: data,
},
],
};
@@ -72,6 +74,7 @@ export function circleRing(chartData, total, color) {
color: '#ffffff',
fontSize: 16,
},
selectedMode: false
},
series: [
{
+1 -1
View File
@@ -1,7 +1,7 @@
import { get, post } from '/@/api/request.ts';
export enum Api {
depart = 'sys/sysDepart/allSecondaryDeparts',
depart = '/health-watch/watch/watchDevice/getUnitList',
getWatchDataByOrgCode = '/health-watch/watch/watchData/getWatchDataByOrgCode',
getMonitorList = '/health-watch/watch/watchMonitorData/getMonitorList',
sleepApi = '/health-watch/watch/watchData/getSleep',
@@ -61,6 +61,7 @@ export function sleepCharts({ time, short, long, awake, type }) {
borderColor: '#1b7ef2',
},
legend: {
orient: 'horizontal',
data: ['清醒', '浅睡', '深睡'],
textStyle: {
color: '#ffffff',
@@ -69,7 +70,8 @@ export function sleepCharts({ time, short, long, awake, type }) {
height: 40,
itemHeight: 14,
top: -5,
left: '52%',
right: '15%',
selectedMode: false,
},
color: ['#14B3F8', '#6D7BEB', '#5451DC'],
xAxis: {
@@ -43,6 +43,7 @@
pageSize: 10,
total: 0,
onChange: pageChange,
showSizeChanger: false,
});
const timer = ref(null);
const pages = ref(0); //总页数
@@ -75,7 +75,7 @@
.count {
position: absolute;
width: 77%;
width: 71%;
top: 51%;
display: flex;
flex-direction: column;
@@ -1,6 +1,6 @@
<template>
<div class="modal-content">
<div class="empty-png"></div>
<!-- <div class="empty-png"></div>-->
<div class="modal-header">
<button type="button" aria-label="Close" class="modal-close" @click="closeDialog">X</button>
<div class="modal-title" id="vcDialogTitle0">健康报警员工信息</div>
@@ -38,13 +38,6 @@
border: 0;
border-radius: 2px;
.empty-png {
width: 100%;
height: 16px;
background: url('../../../../assets/images/bg.png') no-repeat;
background-position-y: -500px;
}
.modal-close {
width: 40px;
height: 40px;
@@ -52,7 +52,12 @@
keyType: propTypes.string.def('2'),
});
const { refresh, setRefresh } = useChangeTable();
const apiParams = ref(getParams());
const apiParams = ref({
flag: 0,
userId: props.userId,
pageSize: 10,
pageNo: 1,
});
function tableReload() {
apiParams.value = {
@@ -53,7 +53,12 @@
keyType: propTypes.string.def('1'),
});
const { refresh, setRefresh } = useChangeTable();
const apiParams = ref(getParams());
const apiParams = ref({
flag: 0,
userId: props.userId,
pageSize: 10,
pageNo: 1,
});
function tableReload() {
apiParams.value = {
@@ -48,7 +48,12 @@
keyType: propTypes.string.def('6'),
});
const { refresh, setRefresh } = useChangeTable();
const apiParams = ref(getParams());
const apiParams = ref({
flag: 0,
userId: props.userId,
pageSize: 10,
pageNo: 1,
});
function tableReload() {
apiParams.value = {
@@ -50,7 +50,12 @@
});
let echart = null;
const apiParams = ref(getParams());
const apiParams = ref({
flag: 0,
userId: props.userId,
pageSize: 10,
pageNo: 1,
});
const { refresh, setRefresh } = useChangeTable();
function tableReload() {
@@ -1,5 +1,9 @@
<template>
<div style="display: flex; align-items: center; justify-content: center; position: relative" :style="{ minHeight: props.showList ? '30px' : '' }">
<div
class="public-title"
style="display: flex; align-items: center; justify-content: center; position: relative"
:style="{ minHeight: props.showList ? '30px' : '' }"
>
<a-radio-group v-model:value="active" button-style="solid" @change="changeType" v-if="showStatus && props.showList">
<a-radio-button v-if="props.showOne" :value="1"></a-radio-button>
<a-radio-button :value="2"></a-radio-button>
@@ -12,18 +16,12 @@
</div>
</div>
<div
class="public-title"
style="display: flex; justify-content: center; margin-top: 20px; align-items: center; position: relative"
:style="{ minHeight: props.showList ? '' : '30px' }"
>
<div class="fff" style="position: absolute; left: 10px; display: flex; align-items: center; color: #fff" v-if="!props.showList">
锻炼类型
<!-- <JDictSelectTag-->
<!-- v-model:value="motionType"-->
<!-- style="min-width: 140px"-->
<!-- placeholder="请选择锻炼类型"-->
<!-- dictCode="watch_exercise_type"-->
<!-- @change="changeSelect"-->
<!-- />-->
<a-select
v-model:value="motionType"
class="type-select"
@@ -32,8 +30,10 @@
@change="changeSelect"
></a-select>
</div>
<div class="item-picker" style="display: flex; font-size: 20px" v-if="showStatus && props.showList">
<span style="margin: 0 0 0 5px; cursor: pointer" @click="changeDate('0')">&lt;</span>
<div style="display: flex; font-size: 20px; align-items: center" v-if="showStatus && props.showList">
<a-button class="btn" type="primary" size="small" @click="changeDate('0')">
<LeftOutlined class="icon" style="color: #fff" />
</a-button>
<div style="position: relative">
<a-date-picker
ref="datePicker"
@@ -42,6 +42,7 @@
:format="rType()"
:picker="getP()"
@change="changeValue"
:allow-clear="false"
style="opacity: 0; z-index: 99; position: absolute; top: 0; left: 0"
>
<template #dateRender="{ current }">
@@ -50,21 +51,22 @@
</div>
</template>
</a-date-picker>
<div style="z-index: 1; min-width: 150px; text-align: center"
><span>{{ getDateFormat(dateInfo) }}</span></div
>
<div style="z-index: 1; min-width: 150px; text-align: center; color: #fff">{{ getDateFormat(dateInfo) }} </div>
</div>
<span style="margin: 0 0 5px 5px; cursor: pointer" @click="changeDate('1')">&gt;</span>
<a-button class="btn" type="primary" :disabled="!isRight" size="small" @click="changeDate('1')">
<RightOutlined class="icon" style="color: #fff" />
</a-button>
</div>
</div>
</template>
<script setup lang="ts">
import { nextTick, onMounted, ref } from 'vue';
import { computed, nextTick, onMounted, ref } from 'vue';
import { RightOutlined, LeftOutlined } from '@ant-design/icons-vue';
import chartImg from '/@/assets/images/chart.png';
import listImg from '/@/assets/images/list.png';
import dayjs from 'dayjs';
import { propTypes } from '/@/utils/propTypes';
// import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
import { userDataDayByYearApi } from '/@/components/secondaryScreen/secondMap/secondMapApi.ts';
import { getCodeInfo, montionFieldNames } from '/@/api/dictCode.ts';
@@ -95,6 +97,8 @@
const active = ref(props.showOne ? 1 : 2);
const showStatus = ref(true);
const dateInfo = ref(dayjs());
const isRight = computed(() => dayjs(dateInfo.value).format('YYYY-MM-DD') != dayjs().format('YYYY-MM-DD'));
const motionType = ref();
const dateFormat = 'YYYY-MM-DD';
@@ -262,4 +266,22 @@
border: 1px solid #1890ff;
border-radius: 50px;
}
.btn {
.icon {
color: #fff !important;
height: 20px;
line-height: 20px;
}
}
.public-title {
:deep(.ant-btn-primary[disabled], .ant-btn-primary[disabled]:hover, .ant-btn-primary[disabled]:focus, .ant-btn-primary[disabled]:active) {
color: rgba(0, 0, 0, 0.25);
border-color: #92bfe9;
background: #92bfe9;
text-shadow: none;
box-shadow: none;
}
}
</style>
@@ -55,7 +55,12 @@
keyType: propTypes.string.def('4'),
});
const { refresh, setRefresh } = useChangeTable();
const apiParams = ref(getParams());
const apiParams = ref({
flag: 0,
userId: props.userId,
pageSize: 10,
pageNo: 1,
});
function tableReload() {
nextTick(() => {
@@ -65,7 +70,6 @@
pageSize: 10,
pageNo: 1,
};
console.log('apiParams.value', apiParams.value);
setRefresh();
});
}
@@ -55,7 +55,12 @@
keyType: propTypes.string.def('7'),
});
const { refresh, setRefresh } = useChangeTable();
const apiParams = ref(getParams());
const apiParams = ref({
flag: 0,
userId: props.userId,
pageSize: 10,
pageNo: 1,
});
function tableReload() {
apiParams.value = {
@@ -52,7 +52,12 @@
keyType: propTypes.string.def('5'),
});
const { refresh, setRefresh } = useChangeTable();
const apiParams = ref(getParams());
const apiParams = ref({
flag: 0,
userId: props.userId,
pageSize: 10,
pageNo: 1,
});
function tableReload() {
apiParams.value = {
@@ -128,7 +128,7 @@
:deep(.ant-table-tbody > tr > td) {
border-bottom: none;
padding: 0 4px;
padding: 10px 4px;
}
:deep(.ant-table-row:hover) {
@@ -9,8 +9,8 @@
</div>
<div v-show="false" id="container"></div>
<div v-show="false" id="panel"></div>
<div v-show="isShow" :class="className" class="footer-data" style="--moveUp: 50px; --moveDown: -90px">
<div class="empty-png"></div>
<!-- <div v-show="isShow" :class="className" class="footer-data" style="&#45;&#45;moveUp: 120px; &#45;&#45;moveDown: -80px">-->
<div v-show="isShow" :class="className" class="footer-data" style="--moveUp: 20px; --moveDown: -80px">
<div
v-for="item in footerList"
:style="{ cursor: item.key == 'allotDeviceNum' ? 'pointer' : 'default' }"
@@ -25,7 +25,7 @@
v-show="isShowAlarm"
:class="isShowAlarm ? 'slide-top' : 'slide-bottom'"
class="footer-dialog-con"
style="--moveUp: 120px; --moveDown: -120px"
style="--moveUp: 20px; --moveDown: -180px"
>
<FooterDialog :detailLeft="detailLeft" :detailRight="detailRight" @closeDialog="closeDialog"></FooterDialog>
</div>
@@ -73,7 +73,7 @@
async function getFooterTable(orgCode) {
const params = {
orgCode: orgCode || props.orgCode,
dataDate: getToday(),
// dataDate: getToday(),
};
const { code, result } = await footerApi(params);
if (code == 200) {
@@ -83,10 +83,14 @@
async function getMapList() {
try {
const { code, result } = await mapListApi({});
const { code, result } = await mapListApi({ orgCode: props.orgCode });
if (code == 200 && result.length > 0) {
const newArr = result.map((item) => ({ ...item, type: '6' }));
mapList.value = newArr;
let orgCode = newArr[0].orgCode?.substring(0, 6);
getFooterTable(orgCode);
setIsShow(true);
Map.createOverlay(
newArr,
{
@@ -101,10 +105,13 @@
},
},
(val) => {
getFooterTable(val.orgCode);
getFooterTable(val.orgCode?.substring(0, 6));
setIsShow(true);
}
);
} else {
Map.removeOverlayGroup();
setIsShow(false);
}
} catch {}
}
@@ -158,6 +165,7 @@
display: flex;
flex-direction: column;
position: relative;
overflow: hidden;
}
.form-container {
@@ -174,21 +182,12 @@
.footer-data {
position: absolute;
left: 0;
right: 0;
left: 4px;
right: 4px;
bottom: var(--moveDown);
display: flex;
z-index: 999;
.empty-png {
position: absolute;
top: -16px;
left: 0;
width: 100%;
height: 16px;
background: url('../../../assets/images/bg.png') no-repeat;
background-position-y: -500px;
}
border: 1px solid rgba(35, 132, 221);
.col-item {
flex: 1;
@@ -198,7 +197,7 @@
.col-text {
height: 40px;
line-height: 40px;
background: rgba(35, 132, 221);
background: rgba(35, 132, 221, 0.5);
}
.col-value {
@@ -211,8 +210,8 @@
.footer-dialog-con {
position: absolute;
left: 0;
right: 0;
left: 4px;
right: 4px;
bottom: var(--moveDown);
z-index: 999;
}
@@ -223,10 +222,12 @@
@keyframes slide-top {
0% {
transform: translateY(0);
//transform: translateY(var(--moveUp));
bottom: var(--moveDown);
}
100% {
transform: translateY(var(--moveDown));
//transform: translateY(var(--moveDown));
bottom: var(--moveUp);
}
}
@@ -236,10 +237,12 @@
@keyframes slide-bottom {
0% {
transform: translateY(var(--moveDown));
//transform: translateY(var(--moveDown));
bottom: var(--moveUp);
}
100% {
transform: translateY(var(--moveUp));
//transform: translateY(var(--moveUp));
bottom: var(--moveDown);
}
}
}
@@ -22,7 +22,7 @@ export function useDepart() {
}
async function getOptionData() {
const { result, code } = await allSecondaryDeparts();
const { result = [], code } = await allSecondaryDeparts();
if (code == 200) {
let res = [{ departName: '长庆油田', orgCode: 'A01' }, ...result];
setOption(res);
@@ -80,12 +80,12 @@ export function useFooterTable() {
key: 'userCount',
extData: {},
},
{
name: '入库设备数量',
value: '',
key: 'deviceNum',
extData: {},
},
// {
// name: '入库设备数量',
// value: '',
// key: 'deviceNum',
// extData: {},
// },
{
name: '佩戴手表人数',
value: '',
@@ -115,7 +115,6 @@ export function useFooterTable() {
function setFooterList(res: any) {
const arrList = cloneDeep(footerList.value);
if (res) {
console.log('resssss', res);
arrList.forEach((item) => {
item.value = res[item.key];
item.extData = res;