8 Commits
Author SHA1 Message Date
weixin 6c5c442928 fix(健康检测-用户数据): 睡眠折线图按阶段分段显示,各段间不再连续连线
每段睡眠数据(深睡/浅睡/清醒/零星小睡)之间插入 null 断点,
ECharts 折线图在 null 处自动断开,使不同睡眠阶段呈现为独立线段。
2026-06-30 16:39:25 +08:00
lianlonggang 2380e56266 fix(healthMonitor): 最后一次更新 2026-05-09 20:30:35 +08:00
lianlonggang fdce66d761 fix(healthMonitor): 修复健康监测模块中的组织机构数据显示和绑定功能
- 在sectoralData.data.ts中添加单位名称列的颜色渲染,三级单位显示为红色
- 在sectoralDataList.vue中添加组织代码长度限制,小于6位时禁用明细和导出功能
- 修复toolManagement组件中bindModal.vue的参数传递问题
- 修改toolManagement.data.ts中部门选择器的默认值和禁用状态
- 移除重复的单位名称表单项并优化搜索表单的组织机构选择逻辑
- 添加单位名称列到员工表格中并调整搜索表单的字段映射
2026-04-30 16:50:55 +08:00
weixin 34e1590382 update
1.修改发送位置时,地图引用组件错误问题
2026-04-10 09:43:35 +08:00
lianlonggang 7fea1a0d9f 修复手表数据日历展示问题,屏蔽非当前月的日期,切换日期发生年份变化时获取新年份月数据 2026-03-30 18:51:58 +08:00
weixin 8cf3ee079b update 2026-03-24 10:14:01 +08:00
weixin 388c6bdf4a update
1.修改健康银行访问链接,测试环境截取掉:+端口
2026-03-24 10:02:25 +08:00
weixin 6ca7141c5d update
1.修改健康银行访问链接
2026-03-24 09:22:41 +08:00
36 changed files with 197 additions and 156 deletions
@@ -269,14 +269,16 @@ export function handleLocationMessageShowContext(item: any) {
};
location.lon = item.payload.longitude.toFixed(6);
location.lat = item.payload.latitude.toFixed(6);
// 跳转高德地图标记点页面
location.href =
'https://map.qq.com/?type=marker&isopeninfowin=1&markertype=1&' +
`pointx=${location.lon}&pointy=${location.lat}&name=${item.payload.description}`;
'https://uri.amap.com/marker?' +
`position=${location.lon},${location.lat}&name=${item.payload.description}&src=mypage&coordinate=gaode&callnative=0`;
// 高德静态地图图片
location.url =
'https://apis.map.qq.com/ws/staticmap/v2/?' +
`center=${location.lat},${location.lon}&zoom=10&size=300*150&maptype=roadmap&` +
`markers=size:large|color:0xFFCCFF|label:k|${location.lat},${location.lon}&` +
'key=UBNBZ-PTP3P-TE7DB-LHRTI-Y4YLE-VWBBD';
'https://restapi.amap.com/v3/staticmap?' +
`location=${location.lon},${location.lat}&zoom=10&size=300*150&` +
`markers=large,,A:${location.lon},${location.lat}&` +
'key=8498ba3ba280654a7f6891b617f7d6ef';
location.description = item.payload.description;
return location;
}

Before

Width:  |  Height:  |  Size: 731 B

After

Width:  |  Height:  |  Size: 731 B

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="48px" height="48px" viewBox="0 0 48 48" version="1.1">
<title>ic_back_white</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="02.-查看信息-示例好友" transform="translate(-32.000000, -200.000000)">
<g id="编组-6" transform="translate(0.000000, 176.000000)">
<g id="ic_back_white" transform="translate(32.000000, 24.000000)">
<g id="ic_back_black" fill="#444444" fill-rule="nonzero">
<path d="M9.51231071,24 L23.5198286,38.7290411 C23.785378,39.0082689 23.7753168,39.4496082 23.4973187,39.7164448 L21.6255915,41.5130226 C21.3466827,41.7807332 20.9035602,41.7716553 20.6358496,41.4927466 C20.6351032,41.491969 20.6343586,41.4911896 20.6336157,41.4904085 L4.45876399,24.4823948 C4.2017544,24.2121467 4.2017544,23.7878533 4.45876399,23.5176052 L20.6336157,6.50959152 C20.900035,6.22944906 21.3431109,6.21832422 21.6232533,6.48474351 C21.6240344,6.48548634 21.6248138,6.48623097 21.6255915,6.48697741 L23.4973187,8.28355524 C23.7753168,8.55039175 23.785378,8.99173114 23.5198286,9.27095893 L9.51231071,24 L9.51231071,24 Z" id="Path-2"></path>
</g>
<rect id="矩形" x="0" y="0" width="48" height="48"></rect>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -1,23 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" viewBox="0 0 16 16" version="1.1">
<title>清除</title>
<g id="页面-2备份" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="创建群聊" transform="translate(-1243.000000, -413.000000)">
<g id="Group-1364" transform="translate(650.000000, 343.000000)">
<g id="Group-1363" transform="translate(290.000000, 46.000000)">
<g id="Group-1358" transform="translate(0.000000, 24.000000)">
<g id="清除" transform="translate(303.000000, 0.000000)">
<path d="M0,0 L16,0 L16,16 L0,16 L0,0 Z" id="矩形"></path>
<path d="M1,8 C1,11.8659999 4.13400006,15 8,15 C11.8659999,15 15,11.8659999 15,8 C15,4.13400006 11.8659999,1 8,1 L8,1 C4.13400006,1 1,4.13400006 1,8 Z" fill="#999999"></path>
<g id="编组" transform="translate(8.000000, 8.000000) rotate(-315.000000) translate(-8.000000, -8.000000) translate(4.000000, 4.000000)" fill="#FFFFFF">
<rect id="矩形备份" transform="translate(4.000000, 4.000000) rotate(-90.000000) translate(-4.000000, -4.000000) " x="1.8189894e-12" y="3.5" width="8" height="1" rx="0.5"></rect>
<rect id="矩形备份" transform="translate(4.000000, 4.000000) rotate(-360.000000) translate(-4.000000, -4.000000) " x="0" y="3.5" width="8" height="1" rx="0.5"></rect>
</g>
<rect id="矩形" x="0" y="0" width="16" height="16"></rect>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

Before

Width:  |  Height:  |  Size: 536 B

After

Width:  |  Height:  |  Size: 536 B

Before

Width:  |  Height:  |  Size: 520 B

After

Width:  |  Height:  |  Size: 520 B

Before

Width:  |  Height:  |  Size: 783 B

After

Width:  |  Height:  |  Size: 783 B

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Before

Width:  |  Height:  |  Size: 801 B

After

Width:  |  Height:  |  Size: 801 B

Before

Width:  |  Height:  |  Size: 711 B

After

Width:  |  Height:  |  Size: 711 B

Before

Width:  |  Height:  |  Size: 513 B

After

Width:  |  Height:  |  Size: 513 B

Before

Width:  |  Height:  |  Size: 517 B

After

Width:  |  Height:  |  Size: 517 B

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Before

Width:  |  Height:  |  Size: 937 B

After

Width:  |  Height:  |  Size: 937 B

Before

Width:  |  Height:  |  Size: 647 B

After

Width:  |  Height:  |  Size: 647 B

@@ -1,27 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16px" height="16px" viewBox="0 0 16 16" version="1.1">
<title>编组 14</title>
<defs>
<filter x="-10.6%" y="-5.4%" width="121.2%" height="110.9%" filterUnits="objectBoundingBox" id="filter-1">
<feOffset dx="0" dy="7" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="10" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
</defs>
<g id="new" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="自定义消息" transform="translate(-458.000000, -318.000000)">
<g id="编组-32" filter="url(#filter-1)" transform="translate(44.000000, 60.000000)">
<g id="编组-24" transform="translate(30.000000, 250.000000)">
<g id="编组-14" transform="translate(384.000000, 8.000000)">
<circle id="椭圆形" fill="#006EFF" fill-rule="nonzero" cx="8" cy="8" r="8"></circle>
<polyline id="路径-4" stroke="#FFFFFF" stroke-width="2" transform="translate(8.042641, 6.242641) rotate(-315.000000) translate(-8.042641, -6.242641) " points="6.04264069 10.2426407 10.0426407 10.2426407 10.0426407 2.24264069"></polyline>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Before

Width:  |  Height:  |  Size: 281 B

After

Width:  |  Height:  |  Size: 281 B

+2 -2
View File
@@ -1,4 +1,4 @@
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"><link rel="icon" href="faviconnew.png"><title>即时通信</title><link href="css/vendors~app.03806786.css" rel="stylesheet"><link href="css/app.0de947d6.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but 腾讯云即时通信 Web-IM doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="./TCaptcha.js"></script><script src="./aegis.min.js"></script><script>/**
<!DOCTYPE html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"><link rel="icon" href="faviconnew.png"><title>即时通信</title><link href="css/vendors~app.03806786.css" rel="stylesheet"><link href="css/app.12928813.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but 腾讯云即时通信 Web-IM doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="./TCaptcha.js"></script><script src="./aegis.min.js"></script><script>/**
* 根据基础字体大小 和 效果图宽度设置 根节点字体大小
* @param baseFontSize 浏览器默认字体大小 [注]浏览器最小字体为12像素,所以该值必需大于等于12
* @param baseWidth 设计稿的尺寸
@@ -53,4 +53,4 @@
},
false
);
};</script><script src="js/vendors~app.de88239f.js"></script><script src="js/app.8ff38855.js"></script></body></html>
};</script><script src="js/vendors~app.de88239f.js"></script><script src="js/app.0cb3a231.js"></script></body></html>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+9 -8
View File
@@ -45,7 +45,8 @@
import { getToken } from '/@/utils/auth';
import { useLoading } from '/@/components/Loading';
import { useGlobSetting } from '/@/hooks/setting';
const { viteOutUrl } = useGlobSetting();
import qs from 'qs';
const { viteOutUrl, apiUrl } = useGlobSetting();
export default defineComponent({
name: 'BasicMenu',
@@ -130,18 +131,18 @@
async function handleMenuClick({ item, key }: { item: any; key: string; keyPath: string[] }) {
if (item.title === '健康银行') {
open();
const url = viteOutUrl;
console.log(url);
console.log(useGlobSetting());
await defHttp
.get({
url: '/health-system/api/sys/encryptInfo',
params: {
str: {
scheme: url.split('://')[0],
host: url.split('://')[1],
str: qs.stringify({
scheme: apiUrl.split('://')[0],
host:
apiUrl.split('://')[1].indexOf(':') !== -1
? apiUrl.split('://')[1].substring(0, apiUrl.split('://')[1].indexOf(':'))
: apiUrl.split('://')[1],
tokenF: getToken(),
},
}),
},
})
.then((res) => {
@@ -8,7 +8,7 @@
</template>
</BasicTable>
</template>
<script setup lang="ts">
<script setup lang="ts" name="bindRecords-name">
import BasicTable from '/@/components/Table/src/BasicTable.vue';
import { useListPage } from '/@/hooks/system/useListPage';
import { bindRecordColumns, bindRecordSchema } from '/@/views/healthMonitor/healMonitorManage/monitorToll/bindRecords/bindRecords.data';
@@ -19,7 +19,7 @@
<notification-news-modal @register="registerModal" @success="handleSuccess" />
</div>
</template>
<script setup lang="ts">
<script setup lang="ts" name="healthMonitor-notificationNews">
import { BasicTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage';
import { list, deleteOne, batchDelete, queryByID, reSend } from './notificationNews.api';
@@ -23,6 +23,7 @@
format="YYYY-MM-DD"
@change="changeValue"
:allow-clear="false"
dropdownClassName="personal-data-no-other-month"
style="opacity: 0; z-index: 99; position: absolute; top: 0; left: 0"
>
<template #dateRender="{ current }">
@@ -47,7 +48,7 @@
</BasicModal>
</template>
<script setup lang="ts" name="personalDataModal">
import { computed, ref, watch } from 'vue';
import { computed, ref, watch, onMounted, onUnmounted, nextTick } from 'vue';
import { BasicModal, useModalInner } from '/@/components/Modal';
import AllLook from '/@/views/healthMonitor/healMonitorManage/monitorToll/userInfo/componets/allLook.vue';
import { getDetail, userDataDayByMonth } from '/@/views/healthMonitor/healMonitorManage/monitorToll/personalData/personalData.api';
@@ -59,11 +60,14 @@
const userId = ref('');
const haveInfo = ref('');
const nowDate = ref(dayjs());
const loadedYear = ref(dayjs().format('YYYY'));
const isRight = computed(() => dayjs(nowDate.value).format('YYYY-MM-DD') != dayjs().format('YYYY-MM-DD'));
//表单赋值
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
userInfo.value = data.record;
userId.value = data.record.userId;
// 重置已加载年份,避免上次切换年份的残留状态
loadedYear.value = dayjs().format('YYYY');
await userDataDayByMonth({ userId: data.record.userId, year: dayjs().format('YYYY') }).then((res) => {
let year = dayjs().format('YYYY');
let month = '';
@@ -94,6 +98,8 @@
function getDisabled(current) {
let flag = false;
// 年份不匹配时不渲染 bgc
if (dayjs(current).format('YYYY') !== loadedYear.value) return false;
for (let i = 0; i < Object.keys(haveInfo.value).length; i++) {
if (Object.keys(haveInfo.value)[i] == dayjs(current).format('MM') * 1) {
@@ -148,6 +154,31 @@
function changeValue() {
getInfo();
}
// 加载指定年份的 bgc 标记数据
async function loadYearData(year: string) {
if (year === loadedYear.value) return;
await userDataDayByMonth({ userId: userId.value, year }).then((res) => {
haveInfo.value = res;
loadedYear.value = year;
});
}
// 监听面板内点击,DOM 更新后从年份按钮读取当前展示的年份
function onPickerPanelClick(e: MouseEvent) {
const panel = document.querySelector('.personal-data-no-other-month');
if (!panel?.contains(e.target as Node)) return;
nextTick(() => {
const yearBtn = panel.querySelector('.ant-picker-year-btn');
if (!yearBtn) return;
// 按钮文本可能为 "2024年" 或 "2024",提取4位数字
const year = yearBtn.textContent?.replace(/[^0-9]/g, '').slice(0, 4) || '';
if (year.length === 4) loadYearData(year);
});
}
onMounted(() => document.addEventListener('click', onPickerPanelClick));
onUnmounted(() => document.removeEventListener('click', onPickerPanelClick));
</script>
<style scoped lang="less">
@@ -185,3 +216,11 @@
cursor: pointer !important;
}
</style>
<style>
/* 隐藏日历面板中非当前月份的日期格,仅对该 picker 生效 */
.personal-data-no-other-month .ant-picker-cell:not(.ant-picker-cell-in-view) {
visibility: hidden;
pointer-events: none;
}
</style>
@@ -3,6 +3,7 @@ import { message } from 'ant-design-vue';
import { allSecondaryDepartsNew, getThirdDepartsNew } from '/@/utils/system/api';
import moment from 'moment';
import dayjs from 'dayjs';
import { h } from 'vue';
export const columns: BasicColumn[] = [
{
@@ -133,6 +134,10 @@ export const columnsNew: BasicColumn[] = [
{
title: '单位名称',
dataIndex: ['orgCodeName'],
customRender: ({ text, record }) => {
const isRed = record?.orgCode?.length === 3;
return h('span', { style: isRed ? { color: 'red' } : {} }, text);
},
},
{
title: '部门名称',
@@ -151,13 +156,39 @@ export const columnsNew: BasicColumn[] = [
},
},
{
title: '分配设备数',
title: '分配设备数',
dataIndex: ['assignedDeviceNums'],
customRender: ({ text }) => {
if (!text) return 0;
return text;
},
},
{
title: '未分配设备数',
dataIndex: 'unassignedDeviceNums',
customRender: ({ record }) => {
const total = record.totalAssignedDeviceNums ?? 0;
const assigned = record.assignedDeviceNums ?? 0;
return total - assigned;
},
},
{
title: '已绑定设备数',
dataIndex: ['assignedDeviceNums'],
customRender: ({ text }) => {
if (!text) return 0;
return text;
},
},
{
title: '未绑定设备数',
dataIndex: 'unassignedDeviceNums',
customRender: ({ record }) => {
const total = record.totalAssignedDeviceNums ?? 0;
const assigned = record.assignedDeviceNums ?? 0;
return total - assigned;
},
},
{
title: '佩戴人员数',
dataIndex: ['assignedUserNums'],
@@ -88,20 +88,23 @@
const [registerTable, { reload, getForm }] = tableContext;
function getTableAction(record: any) {
let orgCodeLenth = record?.orgCode?.length;
let flag = record?.orgCodeLeafName == '-';
return [
{
label: '明细',
onClick: handleDetail.bind(null, record),
disabled: orgCodeLenth < 6,
},
{
label: '明细导出',
onClick: handleExport.bind(null, record),
disabled: orgCodeLenth < 6,
},
{
label: '周报',
onClick: handleWeekReport.bind(null, record),
disabled: !flag,
disabled: !flag || orgCodeLenth < 6,
},
];
}
@@ -105,7 +105,7 @@
// orgCodeSecond:data.record?.orgCode
});
bindUserId.value = data.record?.bindUserId;
paramsInfo.value = { orgCode: data.record?.orgCode };
paramsInfo.value = { orgCode: 'A01' };
await clearValidate();
// 隐藏底部时禁用整个表单
await setProps({ disabled: !data?.showFooter });
@@ -211,21 +211,16 @@ export const formSchema: FormSchema[] = [
field: 'deptId',
required: true,
component: 'ApiSelect',
componentProps: ({ formModel }) => {
const { getVal: getVal1, disabled: disabled1 } = initD();
getVal1('id');
defaultValue: '1683768826307096578',
show: false,
componentProps: () => {
return {
api: allSecondaryDepartsNew,
resultField: 'result',
labelField: 'departName',
immediate: true,
valueField: 'id',
disabled: disabled1,
afterFetch: (res: any) => {
if (res.length === 1) {
formModel.deptId = res[0].id;
}
},
disabled: true,
getPopupContainer: () => document.body,
showSearch: true,
filterOption: (input: string, option: any): boolean => {
@@ -326,40 +321,40 @@ export const rkFormSchema: FormSchema[] = [
required: true,
slot: 'file',
},
{
label: '单位名称',
field: 'deptId',
component: 'ApiSelect',
required: true,
componentProps: ({ formModel, schema }) => {
const { getVal, disabled } = initD();
getVal('id');
return {
api: allSecondaryDepartsNew,
resultField: 'list',
labelField: 'departName',
valueField: 'id',
immediate: true,
onChange: (val: any) => {
if (val) {
formModel['orgId'] = '';
}
},
onDeselect: () => {
formModel.deptId = '';
formModel['orgId'] = '';
},
showSearch: true,
filterOption: (input: string, option: any): boolean => {
const str: string = input.toLowerCase();
return option.label.toLowerCase().indexOf(str) >= 0;
},
disabled: disabled,
getPopupContainer: () => document.body,
};
},
},
{
// {
// label: '单位名称',
// field: 'deptId',
// component: 'ApiSelect',
// required: true,
// componentProps: ({ formModel, schema }) => {
// const { getVal, disabled } = initD();
// getVal('id');
// return {
// api: allSecondaryDepartsNew,
// resultField: 'list',
// labelField: 'departName',
// valueField: 'id',
// immediate: true,
// onChange: (val: any) => {
// if (val) {
// formModel['orgId'] = '';
// }
// },
// onDeselect: () => {
// formModel.deptId = '';
// formModel['orgId'] = '';
// },
// showSearch: true,
// filterOption: (input: string, option: any): boolean => {
// const str: string = input.toLowerCase();
// return option.label.toLowerCase().indexOf(str) >= 0;
// },
// disabled: disabled,
// getPopupContainer: () => document.body,
// };
// },
// },
/*{
label: '部门名称',
field: 'orgId',
component: 'ApiSelect',
@@ -390,7 +385,7 @@ export const rkFormSchema: FormSchema[] = [
};
},
show: false,
},
},*/
];
// 绑定导入
export const bindUserFormSchema: FormSchema[] = [
@@ -726,6 +721,11 @@ export const mColumns: BasicColumn[] = [
dataIndex: 'realname',
align: 'center',
},
{
title: '单位名称',
dataIndex: ['secondDepart', 'departName'],
align: 'center',
},
{
title: '部门名称',
dataIndex: ['depart', 'departName'],
@@ -737,7 +737,7 @@ export const mColumns: BasicColumn[] = [
align: 'center',
},
];
export const mSearchFormSchema = (orgCode) => {
export const mSearchFormSchema = (orgCode = 'orgCode', orgCode1 = 'orgCode1', threeOrgCode = 'threeOrgCode') => {
const schemaInfo: FormSchema[] = [
{
label: '员工姓名',
@@ -746,33 +746,66 @@ export const mSearchFormSchema = (orgCode) => {
},
{
label: '单位',
field: 'orgCode',
component: 'Input',
defaultValue: orgCode,
show: false,
label: '单位名称',
field: orgCode1,
component: 'ApiSelect',
componentProps: ({ formModel, schema }) => {
return {
api: allSecondaryDepartsNew,
resultField: 'list',
labelField: 'departName',
valueField: 'orgCode',
placeholder: '请选择单位',
showSearch: true,
filterOption: (input: string, option: any): boolean => {
const str: string = input.trim().toLowerCase();
return option.departName.toLowerCase().indexOf(str) >= 0;
},
onChange: (val) => {
// 选中单位时,orgCode 赋值为单位的 orgCode,并清空部门
formModel[orgCode] = val || '';
formModel[threeOrgCode] = '';
},
onDeselect: () => {
formModel[orgCode] = '';
formModel[orgCode1] = '';
formModel[threeOrgCode] = '';
},
};
},
},
{
label: '部门名称',
field: 'threeOrgCode',
field: threeOrgCode,
component: 'ApiSelect',
componentProps: ({ formModel }) => {
console.log(formModel, '11111111111');
return {
api: getThirdDepartsNew,
resultField: 'list',
labelField: 'departName',
params: {
idOrCode: formModel?.orgCode || '12313',
},
valueField: 'orgCode',
placeholder: '请选择部门',
showSearch: true,
params: {
idOrCode: formModel[orgCode1] || '12313',
},
immediate: true,
style: {
width: '195px',
},
onChange: (val) => {
// 选中部门时覆盖 orgCode,清空时回退到单位的 orgCode
formModel[orgCode] = val || formModel[orgCode1] || '';
},
};
},
},
{
label: '',
field: orgCode,
component: 'Input',
show: false,
},
{
label: '员工编号',
field: 'workNo',
@@ -168,32 +168,30 @@
let xArr: any[] = [];
let yArr: any[] = [];
res.timePeriods &&
res.timePeriods.map((item) => {
res.timePeriods.forEach((item) => {
switch (item.flag) {
case 1:
// 浅睡
yArr.push(1);
yArr.push(1);
yArr.push(1, 1, null);
break;
case 3:
// 深睡
yArr.push(0);
yArr.push(0);
yArr.push(0, 0, null);
break;
case 4:
// 清醒
yArr.push(3);
yArr.push(3);
yArr.push(3, 3, null);
break;
case 5:
// 零星小睡
yArr.push(2);
yArr.push(2);
yArr.push(2, 2, null);
break;
}
xArr.push(dayjs(item.start).format('HH:mm'));
xArr.push(dayjs(item.end).format('HH:mm'));
xArr.push(dayjs(item.start).format('HH:mm'), dayjs(item.end).format('HH:mm'), '');
});
// 去掉最后多余的 null
if (yArr.length > 0) yArr.pop();
if (xArr.length > 0) xArr.pop();
const option = {
xAxis: {
type: 'category',
@@ -8,7 +8,7 @@
<user-info-modal @register="registerModal" />
</div>
</template>
<script setup lang="ts">
<script setup lang="ts" name="userInfoList-name">
import BasicTable from '/@/components/Table/src/BasicTable.vue';
import { useListPage } from '/@/hooks/system/useListPage';
import { columns, searchSchema } from '/@/views/healthMonitor/healMonitorManage/monitorToll/userInfo/userInfo.data';