From 827b8244510b97a1b8c01c9cc55edfbc9cd7a8f4 Mon Sep 17 00:00:00 2001 From: XieYongHong <18010623010@163.com> Date: Mon, 19 Aug 2024 14:18:45 +0800 Subject: [PATCH] merge: merge dev MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 优化设备接入配置 * fix: 兼容2.1版本创建的菜单数据 * fix: 菜单配置兼容2.1菜单 * fix: bug#28524 【产品】产品选择设备接入网关,有多个配置时,只展示了一个 * fix: bug#28520【设备】当配置未开启时,前端应不展示配置按钮 * fix: bug#28533仪表盘本年流量消耗界面展示需优化 * fix: bug#28520、28534【设备】设备详情-物模型-其他配置 在点击配置时界面提示错误、【设备】当配置未开启时,前端应不展示配置按钮 * fix: bug#28531【设备】详情中查看预处理数据时提示错误 * fix: bug#28545【菜单管理】新增菜单,权限控制处无法正常加载出权限 * fix: 菜单配置->菜单权限同步功能 * fix: bug#28520【设备】当配置未开启时,前端应不展示配置按钮 * fix(media): bug#28595屏蔽固定地址通道列表的厂商字段 * fix(NoticeRule): 文字组织替换部门 * fix(Alarm): bug#28571手动触发展示说明 * fix(media): bug#28553界面展示异常 * fix(iotCard): bug#28567 * fix(media): bug#28595屏蔽固定地址通道列表的厂商字段 * fix: bug#28560【通知配置】微信-企业消息的同步用户页面,列表字段展示错误,【钉钉用户名】需改为【企业微信用户名】 * fix: bug#28544【通知配置】用户自己创建的数据,没有权限调试,报错:暂无权限,请联系管理员! * fix: bug#28549【采集器】在点位进行批量操作时,开启推送控制,进行保存异常 * fix: bug#28540【组织管理】设备资产分配页,设备列表形式展示,资产权限显示不完整 * fix: bug#28537【产品】新增的网关设备,接入方式选择"边缘网关接入"时,物模型中功能定义界面展示异常 * fix: bug#28550【远程升级】升级任务中的任务详情列表中文案修改 * fix: bug#28551【通知模版】和【通知配置】两者保存的查询条件共用了 * fix: bug#28560【通知配置】微信-企业消息的同步用户页面,列表字段展示错误,【钉钉用户名】需改为【企业微信用户名】 * fix(media): bug#28602屏蔽onvif相关配置 * fix: 物联卡管理样式优化及运营商状态取值 * fix(AliCloud): bug#28581新增阿里云网桥产品下拉值清空 * fix(media): bug#28602屏蔽onvif相关配置 * fix: bug#28578、28597【产品】物模型-属性定义-其他配置 在只进行选择了数据类型时,界面展示异常 、【产品】在进行更换接入网关时,会增加“预处理数据” * fix: bug#28578、28597【产品】物模型-属性定义-其他配置 在只进行选择了数据类型时,界面展示异常 、【产品】在进行更换接入网关时,会增加“预处理数据” * fix: bug#28538 【角色管理】【97】进入页面提示权限不足 * fix: bug#28605 【产品】产品物模型点击其它配置时,有时候界面会不出现蒙层 * fix: 【告警配置】兼容2.1绑定与取消绑定场景联动 * fix(region): 地区新增屏蔽重复校验及同步下级区域处理 * fix(system): 数据字典新增选中异常修复 * fix: bug#28611.28613 * fix(media): 仪表盘快捷时间没有取消选中效果 * fix(region): 地区新增屏蔽重复校验及同步下级区域处理 * fix: bug#28616【设备】【日志管理页】列表字段过长时,鼠标悬停【内容】展示数据不友好,和别处不一致 * fix: bug#28560【通知配置】微信-企业消息的同步用户页面,列表字段展示错误,【钉钉用户名】需改为【企业微信用户名】 * fix: bug#28559【通知管理】微信同步用户页面,查询无匹配部门时,后端不需要报错 * fix: bug#28563【通知模版】新增/编辑数据页,【绑定配置】的数据后端校验有错误时,也能正常新增保存,后端校验失败时,应不能新增保存,需要前端把后端的报错处理到校验规则内。 * fix: bug#28568【产品】通过导入的属性,其他配置中的存在方式为正确的展示 * fix: bug#28616【设备】【日志管理页】列表字段过长时,鼠标悬停【内容】展示数据不友好,和别处不一致 * fix: 修改预处理数据页面接口 * fix: 配置枚举项必填按钮放在右方 * fix: 【物模型】修复功能定义名称校验异常 * fix: 【运维管理】仪表盘修复jvm中Echarts无法显示服务名称 * fix: 【物模型】修复功能定义名称校验异常 * fix: 【场景联动】校验接口社区版兼容处理 * fix: bug#28615 【产品】【物模型-属性定义-编辑规则页】在屏幕分辦率【1380* 920】的情况下,属性名称下拉框无法正常获取到值 * fix: bug#28559 【通知管理】微信同步用户页面,查询无匹配部门时,后端不需要报错 * fix: bug#28563【通知模版】新增/编辑数据页,【绑定配置】的数据后端校验有错误时,也能正常新增保存,后端校验失败时,应不能新增保存,需要前端把后端的报错处理到校验规则内。 * fix: bug#28604 【产品】产品指标保存后查看,未回显已填入内容(设备运行状态界面查看是有指标的,但是产品配置查看未回显) * fix: bug#28634【产品】【物模型-事件定义-输出参数】当数据类型选择枚举值,不配置必填项【枚举项】,直接点击保存,可成功保存,理应提示必填 * fix: bug#28615 【产品】【物模型-属性定义-编辑规则页】在屏幕分辦率【1380* 920】的情况下,属性名称下拉框无法正常获取到值 * fix: 修改预处理数据查询处理结果接口 * fix: bug#28633新增字典后选中新增项 * fix: bug#28628编辑区域报错 * fix: bug#28526 【场景联动】场景联动文案描述错误,并且关闭执行动作后,应该同步隐藏防抖 * fix: 优化过滤条件开关逻辑条件 * fix: bug#【产品】产品(设备、告警记录),告警源不展示设备ID,展示设备名称 * fix: bug#28652【通知配置】通知配置钉钉(微信)进行用户绑定时,展示需优化 * fix: bug#28575 流媒体服务>>>服务商新增可选项内置流媒体 * fix: bug#28618.28619日历维护相关优化 * fix: bug#28648地区管理新增区域后下级消失 * fix: bug#28575 流媒体服务>>>服务商新增可选项内置流媒体 * fix: bug#28672产品物模型>>>功能定义>>>输入参数,选择类型为Object时,无法选择参数(事件也存在) * fix: bug#28654、28664、28663产品(设备)无效数据修改“告警源”>>>“数据源”,并且设备ID,修改为设备名称、通知模板>>>企业微信和钉钉消息调试时,名称应和模板内变量名称一致 * fix: bug#28663、28659通知模板>>>企业微信进行调试时,需判断收信人、收信人部门,收信人标签三个内容任意填写一个、钉钉消息调试时,需判断收信人或收信人部门任意填写其中一个 * fix: bug#28659【场景联动】场景联动>>>执行动作>>>>消息通知.>>>模板变量需判断收信人或者收信部门任意填写一个 * fix: bug#28661企业微信进行调试时,需判断收信人、收信人部门,收信人标签三个内容任意填写一个 * fix: bug#28672产品物模型>>>功能定义>>>输入参数,选择类型为Object时,无法选择参数(事件也存在) * fix: 修复钉钉调试选择了收信人过不了校验问题 * fix: 阈值处理方式取值修改 * fix: 场景联动执行动作微信显示部门标签 * fix: 修改场景联通通知图标 * fix: bug#28575内嵌流媒体样式优化 * fix: bug28679.28678 * fix: 修改流媒体详情字段 * fix: 场景联动执行动作微信显示部门标签 * fix: 修改场景联通通知图标 * fix: 无效数据数据源跳转功能 * fix: 流媒体详情修改文字 * fix: 修改流媒体详情字段 * fix: bug#28687 【场景联动】场景联动>>>执行动作>>>消息通知>>>清除了收信信息后(有其余可校验内容)但是无法通过校验(企微、钉钉都存在) * fix: bug#28688场景联动>>>执行动作>>>消息发送,当钉钉(企业)选择收信人后,切换收信人类型,然后点击保存,未清空切换前的内容 * fix: api配置调试请求体判断条件修改 --- .../images/scene/notify-item-img/weixin.png | Bin 457 -> 3637 bytes src/api/device/instance.ts | 16 +- src/api/rule-engine/log.ts | 16 + src/components/FRuleEditor/Debug/index.vue | 15 +- .../Metadata/Table/TableFormItem.vue | 5 +- .../Metadata/Table/components/Enum/Item.vue | 2 +- .../Table/components/Object/index.vue | 513 ++++++++++------- .../Metadata/Table/components/utils.ts | 19 +- src/store/scene.ts | 4 +- .../Northbound/AliCloud/Detail/index.vue | 6 +- .../AlarmRecord/Alarm/components/AlarmLog.vue | 7 +- .../Detail/AlarmRecord/Alarm/index.vue | 26 +- .../Detail/AlarmRecord/Invalid/index.vue | 19 +- .../device/Instance/Detail/Log/index.vue | 4 +- src/views/device/Product/Detail/index.vue | 24 +- .../components/Metadata/Base/columns.tsx | 2 +- .../Base/components/Import/Import.vue | 7 +- .../Properties/Metrics/ValueItem.vue | 18 +- .../components/Properties/OtherSetting.vue | 18 +- src/views/init-home/data/baseMenu.ts | 8 +- src/views/iot-card/CardManagement/index.vue | 6 +- src/views/link/DashBoard/components/Cpu.vue | 3 +- src/views/link/DashBoard/components/Jvm.vue | 3 +- .../link/DashBoard/components/ServerList.vue | 2 +- src/views/media/DashBoard/components/Card.vue | 5 + src/views/media/Device/Channel/Live/index.vue | 4 +- src/views/media/Device/Playback/index.vue | 11 +- src/views/media/Stream/Detail/index.vue | 542 +++++++++++++----- src/views/media/Stream/type.d.ts | 2 + src/views/notice/Config/SyncUser/index.vue | 65 +-- src/views/notice/Config/index.vue | 2 +- src/views/notice/Template/Debug/index.vue | 133 +++-- .../Template/Detail/components/ToUser.vue | 24 +- .../Template/Detail/doc/AliyunVoice.tsx | 4 +- src/views/notice/Template/Detail/index.vue | 19 +- .../Configuration/Save/Scene/Save/Actions.vue | 6 +- .../Configuration/Save/Scene/Save/CardBox.vue | 6 +- .../Configuration/Save/Scene/SceneDrawer.vue | 6 +- .../Alarm/Configuration/Save/Scene/index.vue | 53 +- .../rule-engine/Alarm/Log/Detail/index.vue | 10 +- .../Alarm/Log/SolveComponent/index.vue | 17 +- .../Alarm/Log/TabComponent/components/Log.vue | 19 +- .../Scene/Save/Device/CheckItem.vue | 31 +- .../Scene/Save/action/ListItem/CheckItem.vue | 15 +- .../Save/action/Notify/NotifyTemplate.vue | 18 +- .../Scene/Save/action/Notify/NotifyWay.vue | 2 +- .../action/Notify/VariableDefinitions.vue | 112 +++- .../Save/action/Notify/variableItem/Org.vue | 1 + .../Save/action/Notify/variableItem/Tag.vue | 1 + .../Save/action/Notify/variableItem/User.vue | 6 +- .../Scene/Save/action/TriggerAlarm/index.vue | 19 +- .../Scene/Save/components/Terms/Terms.vue | 92 ++- .../Calendar/Tags/components/editTag.vue | 9 +- src/views/system/Calendar/Tags/index.vue | 6 + .../Dictionary/components/Left/index.vue | 11 +- .../Dictionary/components/Left/save/index.vue | 2 +- src/views/system/Menu/Setting/index.vue | 8 +- .../Platforms/Api/components/ApiDoes.vue | 4 +- src/views/system/Region/Save/index.vue | 27 +- src/views/system/Region/index.vue | 4 +- src/views/system/Role/RoleLeft/index.vue | 4 +- 61 files changed, 1346 insertions(+), 697 deletions(-) diff --git a/public/images/scene/notify-item-img/weixin.png b/public/images/scene/notify-item-img/weixin.png index 6d8314fb1dd1b85e4af529c22278820995e1130a..92a164f3ac8cb106199dcb5da015814074411b7e 100644 GIT binary patch delta 3621 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 delta 416 zcmV;R0bl;L9LWPAiBL{Q4GJ0x0000DNk~Le0000G0000G2nGNE03Y-JVUZy;e*s=e zL_t(|0mV|WP69y?owr92yKAVu(tyP!#vVJ{jR`GOda*$|JM|B!4B7}EpclUYK4A+< zEYB~1(uA<%9LPZ~cSm8tBzw0r^XARW&JgWeu)dsxLBkTYh`AxE2jZEy4Kaq3%l@E{ zpcV%A68KP%$dmzXbU#WvRQ)Yze<#6=M`1LHccc4r=GQD{Mc~d_ao8Gwqr|Cbyw+LT zs)sjzngF%;Yo^@(cxFj`DDaf6ybH(`V+6wRQ}@Sz1Xok}xmm#s>VfH&v;5%RM89;M zYV+(+(2X>JNj*#dcLJ>ldLSlud6GLWs?AfVvij+XAblqiM<6MXzw%s`&jATT94kWU`xymCj zdN5na_QkDaW{0D{WHWaZxsv#eO3T*BTgY-b6i-c=iGDKlU-<>eyn3hDCh&s*0000< KMNUMnLSTZF2))n% diff --git a/src/api/device/instance.ts b/src/api/device/instance.ts index 3ae743d0..66b06a19 100644 --- a/src/api/device/instance.ts +++ b/src/api/device/instance.ts @@ -31,7 +31,7 @@ export const saveMetadata = (id: string, data: DeviceMetadata) => server.put(`/d * @param id 设备ID * @returns 设备详情 */ -export const detail = (id: string) => server.get(`/device-instance/${id}/detail`) +export const detail = (id: string, _hideError?: any) => server.get(`/device-instance/${id}/detail`, {}, {} , _hideError) /** * 查询数据 @@ -666,20 +666,20 @@ export const queryProductThreshold = (productId: string, propertyId: string,hidd /** * 阈值限制-删除产品物模型的阈值 - * @param productId - * @param propertyId - * @returns + * @param productId + * @param propertyId + * @returns */ export const deleteProductThreshold = (productId:string,propertyId:string,data:any) => server.remove(`/message/preprocessor/product/${productId}/property/${propertyId}`,data) /** * 阈值限制-删除产品物模型的阈值 - * @param productId - * @param propertyId - * @returns + * @param productId + * @param propertyId + * @returns */ export const deleteDeviceThreshold = (productId:string,deviceId:string,propertyId:string,data:any) => server.remove(`/message/preprocessor/device/${productId}/${deviceId}/property/${propertyId}`,data) export const getTemplate = (id: string, format: string) => `${BASE_API_PATH}/device/instance/${id}/property-metadata/template.${format}` -export const uploadAnalyzeMetadata = (data: any) => server.post('/device/instance/property-metadata/file/analyze', data) +export const uploadAnalyzeMetadata = (productId:string,data: any) => server.post(`/device/instance/${productId}/property-metadata/file/analyze`, data) diff --git a/src/api/rule-engine/log.ts b/src/api/rule-engine/log.ts index 27288831..34c30433 100644 --- a/src/api/rule-engine/log.ts +++ b/src/api/rule-engine/log.ts @@ -37,6 +37,12 @@ export const queryByDevice = (data:any) => server.post(`/alarm/record/device/_qu */ export const handleLog = (data:any) => server.post('/alarm/record/_handle',data); +/** + * + * 预处理告警处理 + */ +export const handlePreconditioning = (data:any) => server.post(`/alarm/record/device/_handle`,data) + /** * 告警记录 */ @@ -58,11 +64,21 @@ export const queryHistoryList = (data:any) => server.post('/alarm/history/_query */ export const queryHandleHistory = (data:any) => server.post('/alarm/record/handle-history/_query',data); +/** + * 获取预处理数据告警处理结果 + */ +export const queryPreHandleHistory = (recordId:any,data:any) => server.post(`/alarm/record/handle-history/device/${recordId}/_query`,data) + /** * 获取告警日志(新) */ export const queryLogList = (alarmConfigId:any,data:any) => server.post(`/alarm/history/${alarmConfigId}/_query`,data) +/** + * 获取预处理数据告警日志 + */ +export const queryPreconditioningLogList = (alarmConfigId:any,data:any) => server.post(`/alarm/history/device/${alarmConfigId}/_query`,data) + /** * 查询无效数据 */ diff --git a/src/components/FRuleEditor/Debug/index.vue b/src/components/FRuleEditor/Debug/index.vue index d21df3f9..231c6fc1 100644 --- a/src/components/FRuleEditor/Debug/index.vue +++ b/src/components/FRuleEditor/Debug/index.vue @@ -46,7 +46,7 @@ showSearch :options="options" v-model:value="record.id" - :getPopupContainer="(node) => tableWrapperRef || node" + :getPopupContainer="getPopupContainer" size="small" style="width: 100%;" :virtual="true" @@ -105,7 +105,7 @@ size="small" style="width: 100%;" :virtual="true" - :getPopupContainer="(node) => tableWrapperRef || node" + :getPopupContainer="getPopupContainer" :dropdownStyle="{ zIndex: 1072 }" @@ -202,6 +202,7 @@ import { getWebSocket } from '@/utils/websocket'; import {useTableWrapper} from "@/components/Metadata/Table/context"; import { onlyMessage } from '@/utils/comm'; import {message} from "ant-design-vue"; +import { useTableFullScreen} from "@/components/Metadata/Table/context"; const props = defineProps({ virtualRule: Object as PropType>, @@ -222,7 +223,7 @@ type propertyType = { const property = ref([]); const tag = ref>([]); const tableWrapperRef = useTableWrapper() - +const fullScreen = useTableFullScreen() const columns = [ { title: '属性名称', @@ -287,6 +288,14 @@ const ruleEditorStore = useRuleEditorStore(); const time = ref(0); const timer = ref(null); +//是否全屏监听 +const getPopupContainer = (node: any) => { + if (fullScreen.value) { + return tableWrapperRef.value || node + } + + return document.body +} const runScript = () => { const propertiesList = medataSource?.value || [] const _properties = property.value.map((item: any) => { diff --git a/src/components/Metadata/Table/TableFormItem.vue b/src/components/Metadata/Table/TableFormItem.vue index 83f5e27f..df86cb08 100644 --- a/src/components/Metadata/Table/TableFormItem.vue +++ b/src/components/Metadata/Table/TableFormItem.vue @@ -105,7 +105,10 @@ const validateRules = () => { } const promise = context.validateItem({ [filedName.value]: get(context.dataSource.value, props.name) }, index) - promise.catch(res => { + promise.then(() => { + hideErrorTip() + context.removeFieldError(eventKey.value) + }).catch(res => { const error = res?.filter(item => item.field === filedName.value) || [] if (error.length === 0) { hideErrorTip() diff --git a/src/components/Metadata/Table/components/Enum/Item.vue b/src/components/Metadata/Table/components/Enum/Item.vue index 0a421e53..e70d7ae6 100644 --- a/src/components/Metadata/Table/components/Enum/Item.vue +++ b/src/components/Metadata/Table/components/Enum/Item.vue @@ -1,8 +1,8 @@ -