update
1.根据新疆反馈,修改相关问题
This commit is contained in:
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
# 王昊地址
|
# 王昊地址
|
||||||
#VITE_GLOB_API_URL=http://192.168.1.98
|
#VITE_GLOB_API_URL=http://192.168.1.98
|
||||||
#开发环境
|
#开发环境
|
||||||
VITE_GLOB_API_URL=https://api-jkglpt.iosp.ydpt.tech
|
VITE_GLOB_API_URL=http://api-xj.tri.dt.io
|
||||||
#VITE_GLOB_API_URL=https://api.cqygjk.com
|
#VITE_GLOB_API_URL=https://api.cqygjk.com
|
||||||
#健康监测工具报警-websocket
|
#健康监测工具报警-websocket
|
||||||
#VITE_GLOB_API_YIN_JI=ws://cqyt.dev.yg.dt.io/health-watch/websocket/watchMonitor
|
#VITE_GLOB_API_YIN_JI=ws://cqyt.dev.yg.dt.io/health-watch/websocket/watchMonitor
|
||||||
|
|||||||
+21
-3
@@ -20,7 +20,7 @@
|
|||||||
<twoL @handle-view="handleTwoLClick" :center-id="centerId" :bKey="`two-l-${count}`" />
|
<twoL @handle-view="handleTwoLClick" :center-id="centerId" :bKey="`two-l-${count}`" />
|
||||||
</div>
|
</div>
|
||||||
<div class="sun-body-left-three">
|
<div class="sun-body-left-three">
|
||||||
<three-left-new :bKey="`three-l-n-${count}`" :center-id="centerId" />
|
<three-left-new :bKey="`three-l-n-${count}`" :center-id="centerId" @handle-view="handlePieView" />
|
||||||
<!-- <threeL />-->
|
<!-- <threeL />-->
|
||||||
<!-- <threeNewL :bKey="`three-l-${count}`" :center-id="centerId" />-->
|
<!-- <threeNewL :bKey="`three-l-${count}`" :center-id="centerId" />-->
|
||||||
</div>
|
</div>
|
||||||
@@ -103,6 +103,8 @@
|
|||||||
</template>
|
</template>
|
||||||
</template>
|
</template>
|
||||||
</IndexModal>
|
</IndexModal>
|
||||||
|
<heart-modal ref="heartModalRef" :get-container="() => pageRef" />
|
||||||
|
<emer-modal ref="emerRef" :get-container="() => pageRef" />
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { EnvironmentOutlined } from '@ant-design/icons-vue';
|
import { EnvironmentOutlined } from '@ant-design/icons-vue';
|
||||||
@@ -120,6 +122,8 @@
|
|||||||
infoContentSpecial,
|
infoContentSpecial,
|
||||||
monitorColumns,
|
monitorColumns,
|
||||||
oneRNewColumns,
|
oneRNewColumns,
|
||||||
|
pieColumns,
|
||||||
|
pieSearch,
|
||||||
threeRModalColumns,
|
threeRModalColumns,
|
||||||
threeRModalFromList,
|
threeRModalFromList,
|
||||||
towRcolumns,
|
towRcolumns,
|
||||||
@@ -158,17 +162,22 @@
|
|||||||
twoRModal3Api,
|
twoRModal3Api,
|
||||||
twoRNApi,
|
twoRNApi,
|
||||||
twoRNDetailApi,
|
twoRNDetailApi,
|
||||||
|
watchPageApi,
|
||||||
} from '/@/views/indexSun/indexSun.api.ts';
|
} from '/@/views/indexSun/indexSun.api.ts';
|
||||||
import dayjs from 'dayjs';
|
import dayjs from 'dayjs';
|
||||||
import ThreeLeftNew from '/@/views/indexSun/threeLeftNew.vue';
|
import ThreeLeftNew from '/@/views/indexSun/threeLeftNew.vue';
|
||||||
import OneRightNew from '/@/views/indexSun/oneRightNew.vue';
|
import OneRightNew from '/@/views/indexSun/oneRightNew.vue';
|
||||||
import TwoNewR from '/@/views/indexSun/twoNewR.vue';
|
import TwoNewR from '/@/views/indexSun/twoNewR.vue';
|
||||||
import { message } from 'ant-design-vue';
|
import { message } from 'ant-design-vue';
|
||||||
|
import HeartModal from '/@/views/indexSun/heartModal.vue';
|
||||||
|
import EmerModal from '/@/views/indexSun/emerModal.vue';
|
||||||
//0:处置 1:处理 2:呼入 3:全部
|
//0:处置 1:处理 2:呼入 3:全部
|
||||||
const phoneType = ref('');
|
const phoneType = ref('');
|
||||||
const phoneDialogTitle = ref('呼入电话');
|
const phoneDialogTitle = ref('呼入电话');
|
||||||
const phoneDialogRef = ref();
|
const phoneDialogRef = ref();
|
||||||
const indexModalRef = ref();
|
const indexModalRef = ref();
|
||||||
|
const heartModalRef = ref();
|
||||||
|
const emerRef = ref();
|
||||||
const pageRef = ref();
|
const pageRef = ref();
|
||||||
const indexModalTitle = ref();
|
const indexModalTitle = ref();
|
||||||
const indexColumn: any = ref([]);
|
const indexColumn: any = ref([]);
|
||||||
@@ -331,7 +340,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleTwoLClick() {
|
function handleTwoLClick(params: any) {
|
||||||
indexModalTitle.value = '应急求助详情';
|
indexModalTitle.value = '应急求助详情';
|
||||||
indexColumn.value = columns[1];
|
indexColumn.value = columns[1];
|
||||||
firstFormOne.value = fromLists[1];
|
firstFormOne.value = fromLists[1];
|
||||||
@@ -340,7 +349,7 @@
|
|||||||
needDept.value = true;
|
needDept.value = true;
|
||||||
needDatePicker.value = false;
|
needDatePicker.value = false;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
indexModalRef.value.openDialog();
|
emerRef.value.openDialog(params);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -708,6 +717,8 @@
|
|||||||
};
|
};
|
||||||
indexModalTitle.value = '重点关爱趋势预警';
|
indexModalTitle.value = '重点关爱趋势预警';
|
||||||
modalApi.value = twoRNDetailApi;
|
modalApi.value = twoRNDetailApi;
|
||||||
|
needDept.value = false;
|
||||||
|
needDatePicker.value = false;
|
||||||
apiParams.value = params;
|
apiParams.value = params;
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
indexModalRef.value.openDialog();
|
indexModalRef.value.openDialog();
|
||||||
@@ -728,6 +739,13 @@
|
|||||||
indexModalRef.value.openDialog();
|
indexModalRef.value.openDialog();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
function handlePieView(params: any) {
|
||||||
|
indexColumn.value = pieColumns;
|
||||||
|
firstFormOne.value = pieSearch;
|
||||||
|
nextTick(() => {
|
||||||
|
heartModalRef.value.openDialog(params);
|
||||||
|
});
|
||||||
|
}
|
||||||
function handleEmer(userId: string) {
|
function handleEmer(userId: string) {
|
||||||
indexColumn.value = contactListColumns;
|
indexColumn.value = contactListColumns;
|
||||||
firstFormOne.value = [];
|
firstFormOne.value = [];
|
||||||
|
|||||||
@@ -0,0 +1,300 @@
|
|||||||
|
<template>
|
||||||
|
<Dialog v-bind="$attrs" class="index-modal" :openVis="visible" width="60%" :title="dialogTitle" @close="handleClose" :maskClosable="false">
|
||||||
|
<template #container>
|
||||||
|
<Form style="width: 100%">
|
||||||
|
<div style="width: 100%">
|
||||||
|
<Row style="display: flex; flex-wrap: wrap; width: 100%; align-items: center">
|
||||||
|
<Col :span="6">
|
||||||
|
<a-form-item label="被救助人">
|
||||||
|
<a-input
|
||||||
|
style="background: #082147; border-color: #082147; color: #ffffff"
|
||||||
|
placeholder="请输入姓名"
|
||||||
|
v-model:value="name"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</Col>
|
||||||
|
<Col :span="6">
|
||||||
|
<a-form-item label="性别">
|
||||||
|
<a-select
|
||||||
|
placeholder="选择性别"
|
||||||
|
v-model:value="salvageUserSex"
|
||||||
|
:options="[
|
||||||
|
{
|
||||||
|
label: '全部',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '男',
|
||||||
|
value: SexType.male,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '女',
|
||||||
|
value: SexType.female,
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</Col>
|
||||||
|
<Col :span="6">
|
||||||
|
<a-form-item label="救助方式">
|
||||||
|
<a-select
|
||||||
|
placeholder="选择救助方式"
|
||||||
|
v-model:value="initiatorType"
|
||||||
|
:options="[
|
||||||
|
{
|
||||||
|
label: '全部',
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '120',
|
||||||
|
value: '0',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: '应急就医',
|
||||||
|
value: '1',
|
||||||
|
},
|
||||||
|
]"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</Col>
|
||||||
|
<Col :span="6">
|
||||||
|
<a-form-item label="单位">
|
||||||
|
<a-select
|
||||||
|
:filterOption="
|
||||||
|
(input: string, option: any): boolean => {
|
||||||
|
const str: string = input.trim().toLowerCase();
|
||||||
|
return option.label.toLowerCase().indexOf(str) >= 0;
|
||||||
|
}
|
||||||
|
"
|
||||||
|
:show-search="true"
|
||||||
|
placeholder="选择单位"
|
||||||
|
@change="changeSecond"
|
||||||
|
v-model:value="orgCode1"
|
||||||
|
:options="option1"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</Col>
|
||||||
|
<Col :span="6">
|
||||||
|
<a-form-item label="部门">
|
||||||
|
<a-select
|
||||||
|
:filterOption="
|
||||||
|
(input: string, option: any): boolean => {
|
||||||
|
const str: string = input.trim().toLowerCase();
|
||||||
|
return option.label.toLowerCase().indexOf(str) >= 0;
|
||||||
|
}
|
||||||
|
"
|
||||||
|
:show-search="true"
|
||||||
|
placeholder="选择部门"
|
||||||
|
v-model:value="orgCode2"
|
||||||
|
:options="option2"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</Col>
|
||||||
|
<Col :span="8">
|
||||||
|
<a-form-item label="时间">
|
||||||
|
<a-range-picker
|
||||||
|
v-model:value="dateTime"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
:bordered="false"
|
||||||
|
:allowClear="false"
|
||||||
|
style="width: 100%"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</Col>
|
||||||
|
<Col :span="8">
|
||||||
|
<div class="form-btn">
|
||||||
|
<a-button size="middle" @click="handleClickReset" style="border-color: #00ccff">重置</a-button>
|
||||||
|
<a-button
|
||||||
|
size="middle"
|
||||||
|
@click="handleClickSearch"
|
||||||
|
:loading="loading"
|
||||||
|
style="margin-left: 10px; background: #00ccff; border-color: #00ccff; color: #ffffff"
|
||||||
|
>
|
||||||
|
搜索
|
||||||
|
</a-button>
|
||||||
|
</div>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
</div>
|
||||||
|
</Form>
|
||||||
|
<BasicTable
|
||||||
|
@table-load="tableLoad"
|
||||||
|
ref="registerTable"
|
||||||
|
class="table-container"
|
||||||
|
:api="twoLModalApi"
|
||||||
|
:columns="columns[1]"
|
||||||
|
:api-params="formState"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</Dialog>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import Dialog from '/@/components/dialog/Dialog.vue';
|
||||||
|
import { useDialog } from '/@/views/components/dialogHooks.ts';
|
||||||
|
import { onMounted, ref } from 'vue';
|
||||||
|
import { Form, Row, Col } from 'ant-design-vue';
|
||||||
|
import BasicTable from '/@/components/secondaryScreen/secondMap/components/basicTable/BasicTable.vue';
|
||||||
|
import { allSecondaryDepartsApi, getThreeDepartByOrgCodeApi, twoLModalApi } from '/@/views/indexSun/indexSun.api.ts';
|
||||||
|
import { columns } from '/@/views/indexSun/indexSun.ts';
|
||||||
|
import { SexType } from '/@/utils/settings.ts';
|
||||||
|
|
||||||
|
const loading = ref<boolean>(false);
|
||||||
|
const registerTable = ref();
|
||||||
|
const dialogTitle = ref('');
|
||||||
|
const option1 = ref([{ label: '全部', value: '' }]);
|
||||||
|
const option2 = ref([{ label: '全部', value: '' }]);
|
||||||
|
const name = ref('');
|
||||||
|
const salvageUserSex = ref('');
|
||||||
|
const initiatorType = ref('');
|
||||||
|
const orgCode1 = ref('');
|
||||||
|
const orgCode2 = ref('');
|
||||||
|
const formState = ref({});
|
||||||
|
const dateTime = ref([]);
|
||||||
|
const initForm = ref({});
|
||||||
|
onMounted(() => {
|
||||||
|
getSecondDepart();
|
||||||
|
});
|
||||||
|
function getSecondDepart() {
|
||||||
|
allSecondaryDepartsApi({})
|
||||||
|
.then((res: any) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
const op: any[] = res?.result
|
||||||
|
? res.result.map((it: any) => {
|
||||||
|
return {
|
||||||
|
label: it.departName,
|
||||||
|
value: it.orgCode,
|
||||||
|
};
|
||||||
|
})
|
||||||
|
: [];
|
||||||
|
option1.value = option1.value.concat(op);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function changeSecond() {
|
||||||
|
orgCode2.value = '';
|
||||||
|
option2.value = [{ label: '全部', value: '' }];
|
||||||
|
if (orgCode1.value) {
|
||||||
|
getThirdD();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getThirdD() {
|
||||||
|
getThreeDepartByOrgCodeApi({ orgCode: orgCode1.value })
|
||||||
|
.then((res: any) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
const op: any[] = res?.result
|
||||||
|
? res.result.map((it: any) => {
|
||||||
|
return {
|
||||||
|
label: it.departName,
|
||||||
|
value: it.orgCode,
|
||||||
|
};
|
||||||
|
})
|
||||||
|
: [];
|
||||||
|
option2.value = option2.value.concat(op);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function tableLoad(b: boolean) {
|
||||||
|
loading.value = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleClickSearch() {
|
||||||
|
formState.value = {
|
||||||
|
orgCode: orgCode2.value || orgCode1.value,
|
||||||
|
realName: name.value,
|
||||||
|
type: initForm.value.type,
|
||||||
|
search: initForm.value.search,
|
||||||
|
createTimeStart: dateTime.value && dateTime.value.length > 0 ? dateTime.value[0] : '',
|
||||||
|
createTimeEnd: dateTime.value && dateTime.value.length > 0 ? dateTime.value[1] : '',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleClickReset() {
|
||||||
|
orgCode1.value = '';
|
||||||
|
orgCode2.value = '';
|
||||||
|
name.value = '';
|
||||||
|
salvageUserSex.value = '';
|
||||||
|
initiatorType.value = '';
|
||||||
|
dateTime.value = [initForm.value.createTimeStart, initForm.value.createTimeEnd];
|
||||||
|
formState.value = initForm.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { visible, closeDialog, openDialog } = useDialog({ title: dialogTitle.value });
|
||||||
|
|
||||||
|
function handleClose() {
|
||||||
|
orgCode2.value = '';
|
||||||
|
orgCode1.value = '';
|
||||||
|
name.value = '';
|
||||||
|
salvageUserSex.value = '';
|
||||||
|
initiatorType.value = '';
|
||||||
|
closeDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
function openD(params: any) {
|
||||||
|
dialogTitle.value = '应急求助详情';
|
||||||
|
initForm.value = params;
|
||||||
|
formState.value = params;
|
||||||
|
dateTime.value = [params?.createTimeStart, params?.createTimeEnd];
|
||||||
|
openDialog();
|
||||||
|
}
|
||||||
|
defineExpose({
|
||||||
|
openDialog: openD,
|
||||||
|
closeDialog,
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<style lang="less" scoped>
|
||||||
|
:deep(.dialog) {
|
||||||
|
border: 1px solid #00ccff !important;
|
||||||
|
}
|
||||||
|
.index-modal {
|
||||||
|
.form-btn {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
padding-left: 100px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.ant-form-item-label > label) {
|
||||||
|
color: #ffffff !important;
|
||||||
|
padding-left: 20px;
|
||||||
|
width: 100px;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.ant-form-item) {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.ant-picker) {
|
||||||
|
width: 250px;
|
||||||
|
color: #fff !important;
|
||||||
|
background-color: #082147 !important;
|
||||||
|
border: 1px solid transparent !important;
|
||||||
|
border-radius: 4px !important;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
:deep(.ant-picker-input > input) {
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-col {
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.anticon-calendar) {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,245 @@
|
|||||||
|
<template>
|
||||||
|
<Dialog v-bind="$attrs" class="index-modal" :openVis="visible" width="60%" :title="dialogTitle" @close="handleClose" :maskClosable="false">
|
||||||
|
<template #container>
|
||||||
|
<Form style="width: 100%">
|
||||||
|
<div style="width: 100%">
|
||||||
|
<Row style="display: flex; flex-wrap: wrap; width: 100%; align-items: center">
|
||||||
|
<Col :span="8">
|
||||||
|
<a-form-item label="姓名">
|
||||||
|
<a-input
|
||||||
|
style="background: #082147; border-color: #082147; color: #ffffff"
|
||||||
|
placeholder="请输入姓名"
|
||||||
|
v-model:value="name"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</Col>
|
||||||
|
<Col :span="8">
|
||||||
|
<a-form-item label="单位">
|
||||||
|
<a-select
|
||||||
|
:filterOption="
|
||||||
|
(input: string, option: any): boolean => {
|
||||||
|
const str: string = input.trim().toLowerCase();
|
||||||
|
return option.label.toLowerCase().indexOf(str) >= 0;
|
||||||
|
}
|
||||||
|
"
|
||||||
|
:show-search="true"
|
||||||
|
placeholder="选择单位"
|
||||||
|
@change="changeSecond"
|
||||||
|
v-model:value="orgCode1"
|
||||||
|
:options="option1"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</Col>
|
||||||
|
<Col :span="8">
|
||||||
|
<a-form-item label="部门">
|
||||||
|
<a-select
|
||||||
|
:filterOption="
|
||||||
|
(input: string, option: any): boolean => {
|
||||||
|
const str: string = input.trim().toLowerCase();
|
||||||
|
return option.label.toLowerCase().indexOf(str) >= 0;
|
||||||
|
}
|
||||||
|
"
|
||||||
|
:show-search="true"
|
||||||
|
placeholder="选择部门"
|
||||||
|
v-model:value="orgCode2"
|
||||||
|
:options="option2"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</Col>
|
||||||
|
<Col :span="8">
|
||||||
|
<a-form-item label="时间">
|
||||||
|
<a-range-picker
|
||||||
|
v-model:value="dateTime"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
value-format="YYYY-MM-DD"
|
||||||
|
:bordered="false"
|
||||||
|
style="width: 100%"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</Col>
|
||||||
|
<Col :span="8">
|
||||||
|
<div class="form-btn">
|
||||||
|
<a-button size="middle" @click="handleClickReset" style="border-color: #00ccff">重置</a-button>
|
||||||
|
<a-button
|
||||||
|
size="middle"
|
||||||
|
@click="handleClickSearch"
|
||||||
|
:loading="loading"
|
||||||
|
style="margin-left: 10px; background: #00ccff; border-color: #00ccff; color: #ffffff"
|
||||||
|
>
|
||||||
|
搜索
|
||||||
|
</a-button>
|
||||||
|
</div>
|
||||||
|
</Col>
|
||||||
|
</Row>
|
||||||
|
</div>
|
||||||
|
</Form>
|
||||||
|
<BasicTable
|
||||||
|
@table-load="tableLoad"
|
||||||
|
ref="registerTable"
|
||||||
|
class="table-container"
|
||||||
|
:api="watchPageApi"
|
||||||
|
:columns="pieColumns"
|
||||||
|
:api-params="formState"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
</Dialog>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import Dialog from '/@/components/dialog/Dialog.vue';
|
||||||
|
import { useDialog } from '/@/views/components/dialogHooks.ts';
|
||||||
|
import { onMounted, ref } from 'vue';
|
||||||
|
import { Form, Row, Col } from 'ant-design-vue';
|
||||||
|
import BasicTable from '/@/components/secondaryScreen/secondMap/components/basicTable/BasicTable.vue';
|
||||||
|
import { allSecondaryDepartsApi, getThreeDepartByOrgCodeApi, watchPageApi } from '/@/views/indexSun/indexSun.api.ts';
|
||||||
|
import { pieColumns } from '/@/views/indexSun/indexSun.ts';
|
||||||
|
|
||||||
|
const loading = ref<boolean>(false);
|
||||||
|
const registerTable = ref();
|
||||||
|
const dialogTitle = ref('');
|
||||||
|
const option1 = ref([{ label: '全部', value: '' }]);
|
||||||
|
const option2 = ref([{ label: '全部', value: '' }]);
|
||||||
|
const name = ref('');
|
||||||
|
const orgCode1 = ref('');
|
||||||
|
const orgCode2 = ref('');
|
||||||
|
const formState = ref({});
|
||||||
|
const dateTime = ref([]);
|
||||||
|
const initForm = ref({});
|
||||||
|
onMounted(() => {
|
||||||
|
getSecondDepart();
|
||||||
|
});
|
||||||
|
function getSecondDepart() {
|
||||||
|
allSecondaryDepartsApi({})
|
||||||
|
.then((res: any) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
const op: any[] = res?.result
|
||||||
|
? res.result.map((it: any) => {
|
||||||
|
return {
|
||||||
|
label: it.departName,
|
||||||
|
value: it.orgCode,
|
||||||
|
};
|
||||||
|
})
|
||||||
|
: [];
|
||||||
|
option1.value = option1.value.concat(op);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function changeSecond() {
|
||||||
|
orgCode2.value = '';
|
||||||
|
option2.value = [{ label: '全部', value: '' }];
|
||||||
|
if (orgCode1.value) {
|
||||||
|
getThirdD();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getThirdD() {
|
||||||
|
getThreeDepartByOrgCodeApi({ orgCode: orgCode1.value })
|
||||||
|
.then((res: any) => {
|
||||||
|
if (res.code === 200) {
|
||||||
|
const op: any[] = res?.result
|
||||||
|
? res.result.map((it: any) => {
|
||||||
|
return {
|
||||||
|
label: it.departName,
|
||||||
|
value: it.orgCode,
|
||||||
|
};
|
||||||
|
})
|
||||||
|
: [];
|
||||||
|
option2.value = option2.value.concat(op);
|
||||||
|
} else {
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function tableLoad(b: boolean) {
|
||||||
|
loading.value = b;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleClickSearch() {
|
||||||
|
formState.value = {
|
||||||
|
orgCode: orgCode2.value || orgCode1.value,
|
||||||
|
realName: name.value,
|
||||||
|
type: initForm.value.type,
|
||||||
|
search: initForm.value.search,
|
||||||
|
startTime: dateTime.value && dateTime.value.length > 0 ? dateTime.value[0] : '',
|
||||||
|
endTime: dateTime.value && dateTime.value.length > 0 ? dateTime.value[1] : '',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleClickReset() {
|
||||||
|
orgCode1.value = '';
|
||||||
|
orgCode2.value = '';
|
||||||
|
name.value = '';
|
||||||
|
dateTime.value = [initForm.value.startTime, initForm.value.endTime];
|
||||||
|
formState.value = initForm.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { visible, closeDialog, openDialog } = useDialog({ title: dialogTitle.value });
|
||||||
|
|
||||||
|
function handleClose() {
|
||||||
|
orgCode2.value = '';
|
||||||
|
orgCode1.value = '';
|
||||||
|
name.value = '';
|
||||||
|
closeDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
function openD(params: any) {
|
||||||
|
dialogTitle.value = params.title;
|
||||||
|
initForm.value = params;
|
||||||
|
formState.value = params;
|
||||||
|
dateTime.value = [params.startTime, params.endTime];
|
||||||
|
openDialog();
|
||||||
|
}
|
||||||
|
defineExpose({
|
||||||
|
openDialog: openD,
|
||||||
|
closeDialog,
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
<style lang="less" scoped>
|
||||||
|
:deep(.dialog) {
|
||||||
|
border: 1px solid #00ccff !important;
|
||||||
|
}
|
||||||
|
.index-modal {
|
||||||
|
.form-btn {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.ant-form-item-label > label) {
|
||||||
|
color: #ffffff !important;
|
||||||
|
padding-left: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.ant-form-item) {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.ant-picker) {
|
||||||
|
width: 250px;
|
||||||
|
color: #fff !important;
|
||||||
|
background-color: #082147 !important;
|
||||||
|
border: 1px solid transparent !important;
|
||||||
|
border-radius: 4px !important;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
height: 30px;
|
||||||
|
}
|
||||||
|
:deep(.ant-picker-input > input) {
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ant-col {
|
||||||
|
padding-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
:deep(.anticon-calendar) {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -26,6 +26,7 @@ enum Api {
|
|||||||
contactList = '/health-system/sys/api/emergencyContact/contactList',
|
contactList = '/health-system/sys/api/emergencyContact/contactList',
|
||||||
careUser = '/health-emergency/emergency/LargeScreenNew/careUser',
|
careUser = '/health-emergency/emergency/LargeScreenNew/careUser',
|
||||||
queryAnYanToken = '/health-emergency/emergency/LargeScreenNew/queryAnYanToken',
|
queryAnYanToken = '/health-emergency/emergency/LargeScreenNew/queryAnYanToken',
|
||||||
|
watchPage = '/health-watch/watch/watchData/abnormal/page',
|
||||||
}
|
}
|
||||||
|
|
||||||
export const statisticsNewApi = (params: any) => post(Api.statisticsNew, params);
|
export const statisticsNewApi = (params: any) => post(Api.statisticsNew, params);
|
||||||
@@ -54,3 +55,4 @@ export const roomDetailApi = (params: any) => post(Api.roomDetail, params);
|
|||||||
export const getSecondaryDepartmentList = () => get({ url: Api.getSecondaryDepartment });
|
export const getSecondaryDepartmentList = () => get({ url: Api.getSecondaryDepartment });
|
||||||
export const allSecondaryDepartsApi = (params: any) => get(Api.allSecondaryDeparts, params);
|
export const allSecondaryDepartsApi = (params: any) => get(Api.allSecondaryDeparts, params);
|
||||||
export const getThreeDepartByOrgCodeApi = (params: any) => get(Api.getThreeDepartByOrgCode, params);
|
export const getThreeDepartByOrgCodeApi = (params: any) => get(Api.getThreeDepartByOrgCode, params);
|
||||||
|
export const watchPageApi = (params: any) => get(Api.watchPage, params);
|
||||||
|
|||||||
@@ -987,3 +987,57 @@ export const contactListColumns = [
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
|
export const pieColumns = [
|
||||||
|
{
|
||||||
|
title: '姓名',
|
||||||
|
dataIndex: 'realName',
|
||||||
|
key: 'realName',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '性别',
|
||||||
|
dataIndex: 'sex_dictText',
|
||||||
|
key: 'sex_dictText',
|
||||||
|
width: 80,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '工号',
|
||||||
|
dataIndex: 'workNo',
|
||||||
|
key: 'workNo',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '联系方式',
|
||||||
|
dataIndex: 'phone',
|
||||||
|
key: 'phone',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '单位',
|
||||||
|
dataIndex: 'secondDeptName',
|
||||||
|
key: 'secondDeptName',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '部门',
|
||||||
|
dataIndex: 'thirdDeptName',
|
||||||
|
key: 'thirdDeptName',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '异常数据',
|
||||||
|
dataIndex: 'dataValue',
|
||||||
|
key: 'dataValue',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '测量时间',
|
||||||
|
dataIndex: 'dateTime',
|
||||||
|
key: 'dateTime',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export const pieSearch = [
|
||||||
|
{
|
||||||
|
label: '姓名',
|
||||||
|
field: 'realName',
|
||||||
|
type: 'input',
|
||||||
|
placeholder: '请输入姓名',
|
||||||
|
defaultValue: '',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|||||||
@@ -29,18 +29,19 @@
|
|||||||
<div class="item-title" style="width: 99%">
|
<div class="item-title" style="width: 99%">
|
||||||
<div class="title chart-title" style="display: flex; font-weight: normal !important">
|
<div class="title chart-title" style="display: flex; font-weight: normal !important">
|
||||||
<div> <img :src="imgList[chooseType]" alt="" />{{ tabList[chooseType].label }}</div>
|
<div> <img :src="imgList[chooseType]" alt="" />{{ tabList[chooseType].label }}</div>
|
||||||
<div v-if="[0, 1].includes(chooseType)"> 参考范围: {{ tabList[chooseType].tips }} </div>
|
<div v-if="[0].includes(chooseType)"> {{ tabList[chooseType].tips }} </div>
|
||||||
|
<div v-if="[1].includes(chooseType)"> 参考范围: {{ tabList[chooseType].tips }} </div>
|
||||||
</div>
|
</div>
|
||||||
<div style="height: 210px; display: flex; align-items: center; justify-content: center; width: 100%">
|
<div style="height: 210px; display: flex; align-items: center; justify-content: center; width: 100%">
|
||||||
<div style="height: 100%" class="content-chart">
|
<div style="height: 100%" class="content-chart">
|
||||||
<template v-if="[0, 1, 2, 3].includes(chooseType)">
|
<template v-if="[0, 1, 2, 3].includes(chooseType)">
|
||||||
<three-left-new-item :org-code="selectValue" :type="selectValue1" :choose-type="chooseType" />
|
<three-left-new-item @click-pie="clickPie" :org-code="selectValue" :type="selectValue1" :choose-type="chooseType" />
|
||||||
</template>
|
</template>
|
||||||
<template v-if="[4].includes(chooseType)">
|
<template v-if="[4].includes(chooseType)">
|
||||||
<sleep-item :orgCode="selectValue" :type="selectValue1" style="height: 100%" />
|
<sleep-item :orgCode="selectValue" :type="selectValue1" style="height: 100%" />
|
||||||
</template>
|
</template>
|
||||||
<template v-if="[5].includes(chooseType)">
|
<template v-if="[5].includes(chooseType)">
|
||||||
<step-item :orgCode="selectValue" :type="selectValue1" style="height: 100%" />
|
<step-item @click-pie="clickPie" :orgCode="selectValue" :type="selectValue1" style="height: 100%" />
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -66,6 +67,7 @@
|
|||||||
import item4Png from '/@/assets/images/threeLeftNew/item4.png';
|
import item4Png from '/@/assets/images/threeLeftNew/item4.png';
|
||||||
import item5Png from '/@/assets/images/threeLeftNew/item5.png';
|
import item5Png from '/@/assets/images/threeLeftNew/item5.png';
|
||||||
import item6Png from '/@/assets/images/threeLeftNew/item6.png';
|
import item6Png from '/@/assets/images/threeLeftNew/item6.png';
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
|
||||||
const { getCenterInfo } = useUserStore();
|
const { getCenterInfo } = useUserStore();
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@@ -79,12 +81,13 @@
|
|||||||
{
|
{
|
||||||
label: '心率',
|
label: '心率',
|
||||||
value: 0,
|
value: 0,
|
||||||
tips: '正常60~100次/分',
|
// tips: localStorage.getItem('monitorDataOne') ? JSON.parse(localStorage.getItem('monitorDataOne') || '{}')[0].tips : '',
|
||||||
|
tips: localStorage.getItem('monitorDataOne') ? JSON.parse(localStorage.getItem('monitorDataOne') || '{}')[0].tips : '',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '血氧',
|
label: '血氧',
|
||||||
value: 1,
|
value: 1,
|
||||||
tips: '血氧饱和度95%~100%',
|
tips: '血氧饱和度90%~100%',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '压力',
|
label: '压力',
|
||||||
@@ -145,6 +148,93 @@
|
|||||||
// getData();
|
// getData();
|
||||||
// });
|
// });
|
||||||
|
|
||||||
|
const emit = defineEmits(['handleView']);
|
||||||
|
|
||||||
|
function clickPie(params: any) {
|
||||||
|
let p: any = {
|
||||||
|
endTime: dayjs().format('YYYY-MM-DD'),
|
||||||
|
};
|
||||||
|
switch (selectValue1.value) {
|
||||||
|
case 'week':
|
||||||
|
p['startTime'] = dayjs().subtract(1, 'week').format('YYYY-MM-DD');
|
||||||
|
break;
|
||||||
|
case 'month':
|
||||||
|
p['startTime'] = dayjs().subtract(1, 'month').format('YYYY-MM-DD');
|
||||||
|
break;
|
||||||
|
case 'year':
|
||||||
|
p['startTime'] = dayjs().subtract(1, 'year').format('YYYY-MM-DD');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
switch (chooseType.value) {
|
||||||
|
case 0:
|
||||||
|
p['type'] = 1;
|
||||||
|
p['search'] = heart(params);
|
||||||
|
p['title'] = `心率${params.name}`;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
p['type'] = 2;
|
||||||
|
p['search'] = oxygen(params);
|
||||||
|
p['title'] = `血氧${params.name}`;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
p['type'] = 3;
|
||||||
|
p['search'] = pressure(params);
|
||||||
|
p['title'] = `压力${params.name}`;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
p['type'] = 5;
|
||||||
|
p['search'] = temperature(params);
|
||||||
|
p['title'] = `体温${params.name}`;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
p['type'] = 7;
|
||||||
|
p['search'] = step(params);
|
||||||
|
p['title'] = `步数${params.name}`;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (p['search'] !== -1) {
|
||||||
|
emit('handleView', p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function heart(params: any) {
|
||||||
|
if (params.dataIndex === 1) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
function oxygen(params: any) {
|
||||||
|
if (params.dataIndex === 1) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
function pressure(params: any) {
|
||||||
|
if (params.dataIndex === 3) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (params.dataIndex === 2) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
function temperature(params: any) {
|
||||||
|
if (params.dataIndex === 2) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (params.dataIndex === 1) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
function step(params: any) {
|
||||||
|
if (params.dataIndex === 0) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
function setTimer() {
|
function setTimer() {
|
||||||
if (timer.value) {
|
if (timer.value) {
|
||||||
clearInterval(timer.value);
|
clearInterval(timer.value);
|
||||||
@@ -225,10 +315,6 @@
|
|||||||
// });
|
// });
|
||||||
// });
|
// });
|
||||||
// }
|
// }
|
||||||
const emit = defineEmits(['handleView']);
|
|
||||||
function handleView() {
|
|
||||||
emit('handleView');
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
.two-l-box {
|
.two-l-box {
|
||||||
|
|||||||
@@ -56,6 +56,8 @@
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const emit = defineEmits(['clickPie']);
|
||||||
|
|
||||||
async function init() {
|
async function init() {
|
||||||
initChart(props.data, props.userCount, props.color);
|
initChart(props.data, props.userCount, props.color);
|
||||||
}
|
}
|
||||||
@@ -63,8 +65,16 @@
|
|||||||
function initChart(chartData, total, color) {
|
function initChart(chartData, total, color) {
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
let myChart = echarts.init(healthChart.value);
|
let myChart = echarts.init(healthChart.value);
|
||||||
|
myChart.off('click');
|
||||||
let options = circleRing(chartData, total, color, props.chooseIndex);
|
let options = circleRing(chartData, total, color, props.chooseIndex);
|
||||||
myChart.setOption(options);
|
myChart.setOption(options);
|
||||||
|
|
||||||
|
myChart.on('click', function (params) {
|
||||||
|
if (params.componentType === 'series') {
|
||||||
|
// 这里可以调用一个函数来显示弹窗
|
||||||
|
emit('clickPie', params);
|
||||||
|
}
|
||||||
|
});
|
||||||
window.addEventListener('resize', () => {
|
window.addEventListener('resize', () => {
|
||||||
myChart.resize();
|
myChart.resize();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -29,6 +29,8 @@
|
|||||||
},
|
},
|
||||||
{ immediate: true, deep: true }
|
{ immediate: true, deep: true }
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const emit = defineEmits(['clickPie']);
|
||||||
const healthChart = ref<HTMLElement>();
|
const healthChart = ref<HTMLElement>();
|
||||||
const { total, setStep, getStepData } = useStep();
|
const { total, setStep, getStepData } = useStep();
|
||||||
|
|
||||||
@@ -57,8 +59,14 @@
|
|||||||
|
|
||||||
function initChart(chartData: any) {
|
function initChart(chartData: any) {
|
||||||
let myChart = echarts.init(healthChart.value);
|
let myChart = echarts.init(healthChart.value);
|
||||||
|
myChart.off('click');
|
||||||
let options = screenPie(chartData);
|
let options = screenPie(chartData);
|
||||||
myChart.setOption(options);
|
myChart.setOption(options);
|
||||||
|
myChart.on('click', function (params) {
|
||||||
|
if (params.componentType === 'series') {
|
||||||
|
emit('clickPie', params);
|
||||||
|
}
|
||||||
|
});
|
||||||
window.addEventListener('resize', () => {
|
window.addEventListener('resize', () => {
|
||||||
myChart.resize();
|
myChart.resize();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,9 +8,9 @@
|
|||||||
:color="dataList[props.chooseType].color"
|
:color="dataList[props.chooseType].color"
|
||||||
:user-count="dataList[props.chooseType].userCount"
|
:user-count="dataList[props.chooseType].userCount"
|
||||||
:chooseIndex="props.chooseType"
|
:chooseIndex="props.chooseType"
|
||||||
|
@click-pie="clickPie"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
r
|
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { onMounted, ref, watch } from 'vue';
|
import { onMounted, ref, watch } from 'vue';
|
||||||
@@ -25,20 +25,20 @@ r
|
|||||||
title: '心率',
|
title: '心率',
|
||||||
data: [
|
data: [
|
||||||
{ name: '正常', value: 0, key: 'normalCount' },
|
{ name: '正常', value: 0, key: 'normalCount' },
|
||||||
{ name: '警戒', value: 0, key: 'warnCount' },
|
{ name: '异常', value: 0, key: 'warnCount' },
|
||||||
{ name: '危险', value: 0, key: 'riskCount' },
|
// { name: '危险', value: 0, key: 'riskCount' },
|
||||||
],
|
],
|
||||||
type: '1',
|
type: '1',
|
||||||
color: ['#0098FA', '#FF6648', '#FB466C'],
|
color: ['#0098FA', '#FF6648', '#FB466C'],
|
||||||
tips: '正常范围60~100次/分',
|
tips: '',
|
||||||
userCount: 0,
|
userCount: 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '血氧',
|
title: '血氧',
|
||||||
data: [
|
data: [
|
||||||
{ name: '正常', value: 0, key: 'normalCount' },
|
{ name: '正常', value: 0, key: 'normalCount' },
|
||||||
{ name: '警戒', value: 0, key: 'warnCount' },
|
{ name: '异常', value: 0, key: 'warnCount' },
|
||||||
{ name: '危险', value: 0, key: 'riskCount' },
|
// { name: '危险', value: 0, key: 'riskCount' },
|
||||||
],
|
],
|
||||||
type: '2',
|
type: '2',
|
||||||
color: ['#0098FA', '#FF6648', '#FB466C'],
|
color: ['#0098FA', '#FF6648', '#FB466C'],
|
||||||
@@ -92,6 +92,12 @@ r
|
|||||||
init();
|
init();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const emit = defineEmits(['clickPie']);
|
||||||
|
|
||||||
|
function clickPie(params: any) {
|
||||||
|
emit('clickPie', params);
|
||||||
|
}
|
||||||
|
|
||||||
async function init() {
|
async function init() {
|
||||||
setSpin(true);
|
setSpin(true);
|
||||||
try {
|
try {
|
||||||
@@ -107,18 +113,22 @@ r
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function setValue(result) {
|
function setValue(result: any) {
|
||||||
setSpin(false);
|
setSpin(false);
|
||||||
let data = cloneDeep(dataList.value);
|
let data = cloneDeep(dataList.value);
|
||||||
data.forEach((item) => {
|
data.forEach((item: any) => {
|
||||||
let resData = result.find((v) => v.type == item.type);
|
let resData = result.find((v: any) => v.type == item.type);
|
||||||
item.userCount = resData.userCount;
|
item.userCount = resData.userCount;
|
||||||
item.data = item.data.map((val) => {
|
if (item.type === '1') {
|
||||||
|
item.tips = resData?.minData === null || resData?.maxData === null ? '' : `${resData?.minData}~${resData?.maxData}次/分钟`;
|
||||||
|
}
|
||||||
|
item.data = item.data.map((val: any) => {
|
||||||
val.value = resData[val.key];
|
val.value = resData[val.key];
|
||||||
val = { ...val, label: { show: val.value > 0 }, labelLine: { show: val.value > 0 } };
|
val = { ...val, label: { show: val.value > 0 }, labelLine: { show: val.value > 0 } };
|
||||||
return val;
|
return val;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
localStorage.setItem('monitorDataOne', JSON.stringify(data));
|
||||||
dataList.value = data;
|
dataList.value = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+74
-24
@@ -6,31 +6,32 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="content-search">
|
<div class="content-search">
|
||||||
<div>
|
<div style="display: flex; flex: 1" class="content-search-select">
|
||||||
<a-select v-model:value="selectValue" class="type-select" :options="selectOptions" @change="getData">
|
<a-select v-model:value="selectValue" class="type-select" :options="selectOptions" @change="getData">
|
||||||
<a-select-option value="全部数据">全部数据</a-select-option>
|
<a-select-option value="全部数据">全部数据</a-select-option>
|
||||||
</a-select>
|
</a-select>
|
||||||
|
<a-select style="width: 100px" v-model:value="selectValue1" class="type-select" :options="selectOption1" @change="changeTime" />
|
||||||
</div>
|
</div>
|
||||||
<div class="type-time">
|
<!-- <div class="type-time">-->
|
||||||
<div @click="clickChooseType('0')" :class="[chooseType === '0' ? 'selected' : 'no-selected']">
|
<!-- <div @click="clickChooseType('0')" :class="[chooseType === '0' ? 'selected' : 'no-selected']">-->
|
||||||
全部
|
<!-- 全部-->
|
||||||
<div>
|
<!-- <div>-->
|
||||||
<div v-if="chooseType === '0'" class="triangle"></div>
|
<!-- <div v-if="chooseType === '0'" class="triangle"></div>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
<div @click="clickChooseType('1')" :class="[chooseType === '1' ? 'selected' : 'no-selected']">
|
<!-- <div @click="clickChooseType('1')" :class="[chooseType === '1' ? 'selected' : 'no-selected']">-->
|
||||||
男
|
<!-- 男-->
|
||||||
<div>
|
<!-- <div>-->
|
||||||
<div v-if="chooseType === '1'" class="triangle"></div>
|
<!-- <div v-if="chooseType === '1'" class="triangle"></div>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
<div @click="clickChooseType('2')" :class="[chooseType === '2' ? 'selected' : 'no-selected']">
|
<!-- <div @click="clickChooseType('2')" :class="[chooseType === '2' ? 'selected' : 'no-selected']">-->
|
||||||
女
|
<!-- 女-->
|
||||||
<div>
|
<!-- <div>-->
|
||||||
<div v-if="chooseType === '2'" class="triangle"></div>
|
<!-- <div v-if="chooseType === '2'" class="triangle"></div>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</div>
|
</div>
|
||||||
<div class="content-chart">
|
<div class="content-chart">
|
||||||
<div class="charts" ref="newChart"></div>
|
<div class="charts" ref="newChart"></div>
|
||||||
@@ -44,6 +45,7 @@
|
|||||||
import { getClassCharts } from '/@/views/indexSun/indexSun.ts';
|
import { getClassCharts } from '/@/views/indexSun/indexSun.ts';
|
||||||
import { allSecondaryDepartsApi, twoLApi } from '/@/views/indexSun/indexSun.api.ts';
|
import { allSecondaryDepartsApi, twoLApi } from '/@/views/indexSun/indexSun.api.ts';
|
||||||
import { useUserStore } from '/@/store/modules/user.ts';
|
import { useUserStore } from '/@/store/modules/user.ts';
|
||||||
|
import dayjs from 'dayjs';
|
||||||
|
|
||||||
const { getCenterInfo } = useUserStore();
|
const { getCenterInfo } = useUserStore();
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@@ -52,6 +54,13 @@
|
|||||||
default: () => '',
|
default: () => '',
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const selectValue1 = ref('week');
|
||||||
|
const selectOption1 = ref([
|
||||||
|
{ label: '近一周', value: 'week' },
|
||||||
|
{ label: '近一月', value: 'month' },
|
||||||
|
{ label: '近一年', value: 'year' },
|
||||||
|
]);
|
||||||
const chooseType = ref('0');
|
const chooseType = ref('0');
|
||||||
const selectValue = ref('');
|
const selectValue = ref('');
|
||||||
const selectOptions = ref([{ label: '全部数据', value: '' }]);
|
const selectOptions = ref([{ label: '全部数据', value: '' }]);
|
||||||
@@ -93,11 +102,22 @@
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function changeTime() {
|
||||||
|
getData();
|
||||||
|
}
|
||||||
|
|
||||||
function getData() {
|
function getData() {
|
||||||
twoLApi({
|
twoLApi({
|
||||||
sex: chooseType.value,
|
sex: chooseType.value,
|
||||||
depart: selectValue.value,
|
depart: selectValue.value,
|
||||||
centerId: getCenterInfo?.id,
|
centerId: getCenterInfo?.id,
|
||||||
|
endDate: dayjs().format('YYYY-MM-DD'),
|
||||||
|
startDate:
|
||||||
|
selectValue1.value === 'week'
|
||||||
|
? dayjs().subtract(1, 'week').format('YYYY-MM-DD')
|
||||||
|
: selectValue1.value === 'month'
|
||||||
|
? dayjs().subtract(1, 'month').format('YYYY-MM-DD')
|
||||||
|
: dayjs().subtract(1, 'year').format('YYYY-MM-DD'),
|
||||||
})
|
})
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
@@ -131,7 +151,21 @@
|
|||||||
}
|
}
|
||||||
const emit = defineEmits(['handleView']);
|
const emit = defineEmits(['handleView']);
|
||||||
function handleView() {
|
function handleView() {
|
||||||
emit('handleView');
|
let p: any = {
|
||||||
|
createTimeEnd: dayjs().format('YYYY-MM-DD'),
|
||||||
|
};
|
||||||
|
switch (selectValue1.value) {
|
||||||
|
case 'week':
|
||||||
|
p['createTimeStart'] = dayjs().subtract(1, 'week').format('YYYY-MM-DD');
|
||||||
|
break;
|
||||||
|
case 'month':
|
||||||
|
p['createTimeStart'] = dayjs().subtract(1, 'month').format('YYYY-MM-DD');
|
||||||
|
break;
|
||||||
|
case 'year':
|
||||||
|
p['createTimeStart'] = dayjs().subtract(1, 'year').format('YYYY-MM-DD');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
emit('handleView', p);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
@@ -172,12 +206,15 @@
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
> div {
|
> div {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
padding: 3px 15px;
|
padding: 3px 13px;
|
||||||
margin: 0 10px;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
//width: 60px;
|
//width: 60px;
|
||||||
|
|
||||||
|
&:nth-child(2) {
|
||||||
|
margin: 0 10px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.selected {
|
.selected {
|
||||||
color: #00ccff;
|
color: #00ccff;
|
||||||
@@ -339,4 +376,17 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.content-search-select {
|
||||||
|
> div {
|
||||||
|
margin-top: 5px;
|
||||||
|
&:nth-child(1) {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
&:nth-child(2) {
|
||||||
|
width: 100px;
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
Reference in New Issue
Block a user