Merge branch 'dev' of github.com:jetlinks/jetlinks-ui-vue into dev

This commit is contained in:
JiangQiming 2023-03-24 15:22:19 +08:00
commit 8c2af7fe76
10 changed files with 69 additions and 50 deletions

View File

@ -164,5 +164,6 @@ function syncTriggerClass(
.j-ellipsis-line-clamp {
display: -webkit-box;
-webkit-box-orient: vertical;
word-break: break-all;
}
</style>

View File

@ -1,7 +1,7 @@
<template>
<template v-if="isPermission">
<template v-if="popConfirm">
<j-popconfirm v-bind="popConfirm" :disabled="!isPermission || props.disabled">
<j-popconfirm :overlayStyle='{minWidth: "180px"}' v-bind="popConfirm" :disabled="!isPermission || props.disabled">
<j-tooltip v-if="tooltip" v-bind="tooltip">
<slot v-if="noButton"></slot>
<j-button v-else v-bind="props" :disabled="_isPermission" :style="props.style">

View File

@ -172,6 +172,7 @@ const objectValue = ref<string>('');
const handleItemModalSubmit = () => {
myValue.value = objectValue.value.replace(/[\r\n]\s*/g, '');
modalVis.value = false;
emit('change', myValue.value);
};
//

View File

@ -84,6 +84,7 @@ import TopCard from '@/views/device/DashBoard/components/TopCard.vue';
import { useMenuStore } from '@/store/menu';
import Amap from './components/Amap.vue';
import { useSystem } from '@/store/system';
import dayjs from 'dayjs'
const system = useSystem();
const AmapKey = system.$state.configInfo.amap?.apiKey;
let productTotal = ref(0);
@ -206,6 +207,9 @@ getDeviceData();
* 获取在线数量
*/
const getOnline = () => {
const startTime = dayjs().subtract(0, 'days').startOf('day').format('YYYY-MM-DD HH:mm:ss');
const endTime = dayjs().subtract(0, 'days').endOf('day').format('YYYY-MM-DD HH:mm:ss');
dashboard([
{
dashboard: 'device',
@ -215,26 +219,34 @@ const getOnline = () => {
group: 'aggOnline',
params: {
state: 'online',
limit: 15,
from: 'now-15d',
time: '1d',
format: 'yyyy-MM-dd',
limit: 24,
from: startTime,
to: endTime,
time: '1h',
format: 'yyyy-MM-dd HH:mm:ss',
},
},
]).then((res) => {
if (res.status == 200) {
const x = res.result
.map((item: any) => item.data.timeString)
.reverse();
const y = res.result.map((item: any) => item.data.value);
// const x = res.result
// .map((item: any) => item.data.timeString)
// .reverse();
// const y = res.result.map((item: any) => item.data.value);
const x: string[] = [];
const y: number[] = [];
(res.result as any)?.forEach((item: any) => {
x.push(item.data.timeString)
y.push(item.data.value)
})
x.reverse()
const onlineYdata = y;
onlineYdata.reverse();
setOnlineChartOpition(x, onlineYdata);
setOnlineChartOption(x, onlineYdata);
onlineFooter.value[0].value = y?.[1];
}
});
};
const setOnlineChartOpition = (x: Array<any>, y: Array<number>): void => {
const setOnlineChartOption = (x: Array<any>, y: Array<number>): void => {
onlineOptions.value = {
xAxis: {
type: 'category',

View File

@ -15,7 +15,7 @@
</j-select>
</j-form-item>
<j-form-item label="选择产品" v-bind="validateInfos.copy" v-if="formModel.type === 'copy'">
<j-select :options="productList" v-model:value="formModel.copy" option-filter-prop="label" filterable></j-select>
<j-select :options="productList" v-model:value="formModel.copy" option-filter-prop="label" showSearch></j-select>
</j-form-item>
<j-form-item label="物模型类型" v-bind="validateInfos.metadata" v-if="type === 'device' || formModel.type === 'import'">
<j-select v-model:value="formModel.metadata">

View File

@ -176,7 +176,7 @@
<div class="card-item-content-text">
绑定设备
</div>
<div>{{ slotProps.deviceName }}</div>
<Ellipsis>{{ slotProps.deviceName }}</Ellipsis>
</j-col>
</j-row>
<j-divider style="margin: 12px 0" />

View File

@ -18,7 +18,7 @@
},
]"
>
<CardSelect v-model:value="formModel.type" :options="options"/>
<CardSelect v-model:value="formModel.type" :options="options.filter(item => !(item.value === 'delay' && parallel))"/>
</j-form-item>
<ActionTypeComponent
v-bind="props"
@ -69,36 +69,36 @@ const props = defineProps({
const emit = defineEmits(['cancel', 'save']);
const options = [
{
label: '设备输出',
value: 'device',
iconUrl: getImage('/scene/device-type.png'),
subLabel: '配置设备调用功能、读取属性、设置属性规则',
},
{
label: '消息通知',
value: 'notify',
iconUrl: getImage('/scene/message-type.png'),
subLabel: '配置向指定用户发邮件、钉钉、微信、短信等通知',
},
{
label: '延迟执行',
value: 'delay',
iconUrl: getImage('/scene/delay-type.png'),
subLabel: '等待一段时间后,再执行后续动作',
},
{
label: '触发告警',
value: 'trigger',
iconUrl: getImage('/scene/trigger-type.png'),
subLabel: '配置触发告警规则,需配合“告警配置”使用',
},
{
label: '解除告警',
value: 'relieve',
iconUrl: getImage('/scene/cancel-type.png'),
subLabel: '配置解除告警规则,需配合“告警配置”使用',
},
{
label: '设备输出',
value: 'device',
iconUrl: getImage('/scene/device-type.png'),
subLabel: '配置设备调用功能、读取属性、设置属性规则',
},
{
label: '消息通知',
value: 'notify',
iconUrl: getImage('/scene/message-type.png'),
subLabel: '配置向指定用户发邮件、钉钉、微信、短信等通知',
},
{
label: '延迟执行',
value: 'delay',
iconUrl: getImage('/scene/delay-type.png'),
subLabel: '等待一段时间后,再执行后续动作',
},
{
label: '触发告警',
value: 'trigger',
iconUrl: getImage('/scene/trigger-type.png'),
subLabel: '配置触发告警规则,需配合“告警配置”使用',
},
{
label: '解除告警',
value: 'relieve',
iconUrl: getImage('/scene/cancel-type.png'),
subLabel: '配置解除告警规则,需配合“告警配置”使用',
},
];
const actionForm = ref();

View File

@ -2,7 +2,7 @@
<j-modal
title="执行动作"
visible
:width="860"
:width="800"
@cancel="onCancel"
@ok="onOk"
:maskClosable="false"

View File

@ -3,7 +3,7 @@
<pro-search
:columns="columns"
target="category"
@search="(params:any)=>queryParams = {...params}"
@search="handleParams"
/>
<j-pro-table
ref="tableRef"
@ -119,8 +119,8 @@ const columns = [
{
title: '状态',
dataIndex: 'state',
key: 'state',
dataIndex: 'status',
key: 'status',
ellipsis: true,
fixed: 'left',
search: {
@ -149,6 +149,10 @@ const columns = [
//
const queryParams = ref({});
const handleParams = (params: any) => {
queryParams.value = params
}
//
const tableRef = ref<Record<string, any>>({}); //
const table = reactive({
@ -169,6 +173,7 @@ const table = reactive({
value: props.parentId,
},
],
type: 'and'
},
],
};

View File

@ -3700,8 +3700,8 @@ jetlinks-store@^0.0.3:
jetlinks-ui-components@^1.0.5:
version "1.0.5"
resolved "http://47.108.170.157:9013/jetlinks-ui-components/-/jetlinks-ui-components-1.0.5.tgz#8cb5c9e68e46e6e7eebc0d96b1cdaab24828779f"
integrity sha512-yIbmplK+twekevr7n+dGMvO8tvyIqguC60TWeJCmx2mUqpwv8dEnr/cwwpJee4PBLWohvGPywsYgmm7KxVBbcw==
resolved "http://47.108.170.157:9013/jetlinks-ui-components/-/jetlinks-ui-components-1.0.5.tgz#f5a8ce70859a9c523b2e50b1e3560ae11c21fd0b"
integrity sha512-raeJHyYE2LLa47FhlO3V7P/86+VDhaABlhB2ShJJZGwpR1mRpr+Y/r+iuW2PDsPST7shgk7lb2xsKrzJ8aZN6A==
dependencies:
"@vueuse/core" "^9.12.0"
ant-design-vue "^3.2.15"