update: 替换场景联动中的组件

This commit is contained in:
xieyonghong 2023-03-17 13:54:25 +08:00
parent 3b7a412411
commit 232c844080
17 changed files with 135 additions and 125 deletions

View File

@ -25,7 +25,7 @@
"event-source-polyfill": "^1.0.31",
"global": "^4.4.0",
"jetlinks-store": "^0.0.3",
"jetlinks-ui-components": "^1.0.4",
"jetlinks-ui-components": "^1.0.5",
"js-cookie": "^3.0.1",
"less": "^4.1.3",
"less-loader": "^11.1.0",

View File

@ -1,6 +1,6 @@
<template>
<a-result status="404" title="404" sub-title="Sorry, the page you visited does not exist.">
</a-result>
<j-result status="404" title="404">
</j-result>
</template>
<script>

View File

@ -1,23 +1,23 @@
<template>
<a-modal
<j-modal
title='触发规则'
visible
:width='820'
@click='save'
@cancel='cancel'
>
<a-steps :current='addModel.stepNumber' @change='stepChange'>
<a-step>
<j-steps :current='addModel.stepNumber' @change='stepChange'>
<j-step>
<template #title>选择产品</template>
</a-step>
<a-step>
</j-step>
<j-step>
<template #title>选择设备</template>
</a-step>
<a-step>
</j-step>
<j-step>
<template #title>触发类型</template>
</a-step>
</a-steps>
<a-divider style='margin-bottom: 0px' />
</j-step>
</j-steps>
<j-divider style='margin-bottom: 0px' />
<div class='steps-content'>
<Product
v-if='addModel.stepNumber === 0'
@ -42,13 +42,13 @@
</div>
<template #footer>
<div class='steps-action'>
<a-button v-if='addModel.stepNumber === 0' @click='cancel'>取消</a-button>
<a-button v-else @click='prev'>上一步</a-button>
<a-button type='primary' v-if='addModel.stepNumber < 2' @click='saveClick'>下一步</a-button>
<a-button type='primary' v-else @click='saveClick'>确定</a-button>
<j-button v-if='addModel.stepNumber === 0' @click='cancel'>取消</j-button>
<j-button v-else @click='prev'>上一步</j-button>
<j-button type='primary' v-if='addModel.stepNumber < 2' @click='saveClick'>下一步</j-button>
<j-button type='primary' v-else @click='saveClick'>确定</j-button>
</div>
</template>
</a-modal>
</j-modal>
</template>
<script setup lang='ts' name='AddModel'>

View File

@ -6,7 +6,7 @@
class='search'
target="scene-triggrt-device-device"
/>
<a-divider style='margin: 0' />
<j-divider style='margin: 0' />
<j-pro-table
ref='actionRef'
model='CARD'
@ -43,20 +43,20 @@
{{ slotProps.name }}
</span>
</Ellipsis>
<a-row>
<a-col :span="12">
<j-row>
<j-col :span="12">
<div class="card-item-content-text">
设备类型
</div>
<div>{{ slotProps.deviceType?.text }}</div>
</a-col>
<a-col :span="12">
</j-col>
<j-col :span="12">
<div class="card-item-content-text">
产品名称
</div>
<div>{{ slotProps.productName }}</div>
</a-col>
</a-row>
</j-col>
</j-row>
</template>
</CardBox>
</template>
@ -172,7 +172,6 @@ const handleClick = (detail: any) => {
value: detail.id
})
}
console.log('cloneRowKeys', cloneRowKeys)
emit('update', cloneRowKeys)
}

View File

@ -1,12 +1,12 @@
<template>
<a-form ref='invokeForm' :model='formModel' layout='vertical' :colon='false'>
<a-row :gutter='24'>
<a-col :span='10'>
<a-form-item
<j-form ref='invokeForm' :model='formModel' layout='vertical' :colon='false'>
<j-row :gutter='24'>
<j-col :span='10'>
<j-form-item
name='functionId'
:rules="[{ required: true, message: '请选择功能' }]"
>
<a-select
<j-select
showSearch
allowClear
v-model:value='formModel.functionId'
@ -16,20 +16,20 @@
:filterOption='filterSelectNode'
@select='onSelect'
/>
</a-form-item>
</a-col>
<a-col :span='14'>
<a-form-item>定时调用所选功能</a-form-item>
</a-col>
<a-col :span='24'>
</j-form-item>
</j-col>
<j-col :span='14'>
<j-form-item>定时调用所选功能</j-form-item>
</j-col>
<j-col :span='24'>
<FunctionCall
:value='_value'
:data='functionData'
@change='callDataChange'
/>
</a-col>
</a-row>
</a-form>
</j-col>
</j-row>
</j-form>
</template>
<script setup lang='ts' name='InvokeFunction'>

View File

@ -6,7 +6,7 @@
class='search'
target="scene-triggrt-device-category"
/>
<a-divider style='margin: 0' />
<j-divider style='margin: 0' />
<j-pro-table
ref="instanceRef"
model='TABLE'

View File

@ -6,7 +6,7 @@
class='search'
target="scene-triggrt-device-device"
/>
<a-divider style='margin: 0' />
<j-divider style='margin: 0' />
<j-pro-table
ref='actionRef'
model='CARD'
@ -42,14 +42,14 @@
</span>
</Ellipsis>
</div>
<a-row>
<a-col :span="12">
<j-row>
<j-col :span="12">
<div class="card-item-content-text">
设备类型
</div>
<div>直连设备</div>
</a-col>
</a-row>
</j-col>
</j-row>
</template>
</CardBox>
</template>

View File

@ -1,11 +1,11 @@
<template>
<a-row :gutter='[24]'>
<a-col :span='10'>
<a-form-item
<j-row :gutter='[24]'>
<j-col :span='10'>
<j-form-item
name='readProperties'
:rules="[{ required: true, message: '请选择属性' }]"
>
<a-select
<j-select
show-search
mode='multiple'
max-tag-count='responsive'
@ -16,12 +16,12 @@
:filter-option='filterSelectNode'
@change='change'
/>
</a-form-item>
</a-col>
<a-col :span='14'>
<a-form-item>定时读取所选属性值</a-form-item>
</a-col>
</a-row>
</j-form-item>
</j-col>
<j-col :span='14'>
<j-form-item>定时读取所选属性值</j-form-item>
</j-col>
</j-row>
</template>
<script setup lang='ts' name='ReadProperties'>

View File

@ -1,7 +1,7 @@
<template>
<div class='type'>
<a-form ref='typeForm' :model='formModel' layout='vertical' :colon='false'>
<a-form-item
<j-form ref='typeForm' :model='formModel' layout='vertical' :colon='false'>
<j-form-item
required
label='触发类型'
>
@ -10,7 +10,7 @@
:options='topOptions'
v-model:value='formModel.operator'
/>
</a-form-item>
</j-form-item>
<template v-if='showTimer'>
<Timer ref='timerRef' v-model:value='formModel.timer' />
</template>
@ -27,12 +27,12 @@
v-model:action='optionCache.action'
:properties='writeProperties'
/>
<a-form-item
<j-form-item
v-if='showReportEvent'
name='eventId'
:rules="[{ required: true, message: '请选择事件' }]"
>
<a-select
<j-select
v-model:value='formModel.eventId'
:filter-option='filterSelectNode'
:options='eventOptions'
@ -40,7 +40,7 @@
style='width: 100%'
@select='eventSelect'
/>
</a-form-item>
</j-form-item>
<template v-if='showInvokeFunction'>
<InvokeFunction
ref='invokeRef'
@ -49,7 +49,7 @@
:functions='functionOptions'
/>
</template>
</a-form>
</j-form>
</div>
</template>

View File

@ -1,12 +1,12 @@
<template>
<a-form ref='writeForm' :model='formModel' layout='vertical' :colon='false'>
<a-row :futter='[24, 24]'>
<a-col :span='10'>
<a-form-item
<j-form ref='writeForm' :model='formModel' layout='vertical' :colon='false'>
<j-row :futter='[24, 24]'>
<j-col :span='10'>
<j-form-item
name='reportKey'
:rules="[{ required: true, message: '请输入修改值' }]"
>
<a-select
<j-select
showSearch
style='width: 100%'
placeholder='请选择属性'
@ -15,22 +15,22 @@
:filter-option='filterSelectNode'
@change='change'
/>
</a-form-item>
</a-col>
<a-col :span='14'>
</j-form-item>
</j-col>
<j-col :span='14'>
<span style='line-height: 32px;padding-left: 24px'>
定时调用所选属性
</span>
</a-col>
<a-col :span='24' v-if='showTable'>
</j-col>
<j-col :span='24' v-if='showTable'>
<FunctionCall
:value='_value'
:data='callDataOptions'
@change='callDataChange'
/>
</a-col>
</a-row>
</a-form>
</j-col>
</j-row>
</j-form>
</template>
<script setup lang='ts' name='WriteProperties'>

View File

@ -1,6 +1,6 @@
<template>
<div class='device'>
<a-form-item
<j-form-item
:rules='rules'
name='device'
>
@ -13,7 +13,7 @@
>
<Title :options='data.options.trigger' />
</AddButton>
</a-form-item>
</j-form-item>
<Terms />
<AddModel v-if='visible' @cancel='visible = false' @save='save' :value='data.trigger.device' :options='data.options.trigger' />
</div>
@ -25,7 +25,6 @@ import { useSceneStore } from '@/store/scene'
import AddModel from './AddModal.vue'
import AddButton from '../components/AddButton.vue'
import Title from '../components/Title.vue'
import Action from '../action/index.vue'
import Terms from '../components/Terms'
import type { TriggerDevice } from '@/views/rule-engine/Scene/typings'

View File

@ -12,7 +12,7 @@
</template>
<template v-if='column.dataIndex === "type"'>
{{ record.type }}
<a-tooltip
<j-tooltip
v-if="record.type === 'object'"
>
<template slot="title">
@ -26,7 +26,7 @@
cursor: 'help',
}"
/>
</a-tooltip>
</j-tooltip>
</template>
<template v-if='column.dataIndex === "value"'>
<ValueItem

View File

@ -1,12 +1,12 @@
<template>
<a-form
<j-form
ref='timerForm'
:model='formModel'
layout='vertical'
:colon='false'
>
<a-form-item name='trigger'>
<a-radio-group
<j-form-item name='trigger'>
<j-radio-group
v-model:value='formModel.trigger'
:options='[
{ label: "按周", value: "week" },
@ -16,8 +16,8 @@
option-type='button'
button-style='solid'
/>
</a-form-item>
<a-form-item v-if='showCron' name='cron' :rules="[
</j-form-item>
<j-form-item v-if='showCron' name='cron' :rules="[
{ max: 64, message: '最多可输入64个字符' },
{
validator: async (_, v) => {
@ -32,14 +32,14 @@
}
}
]">
<a-input placeholder='corn表达式' v-model:value='formModel.cron' />
</a-form-item>
<j-input placeholder='corn表达式' v-model:value='formModel.cron' />
</j-form-item>
<template v-else>
<a-form-item name='when'>
<j-form-item name='when'>
<WhenOption v-model:value='formModel.when' :type='formModel.trigger' />
</a-form-item>
<a-form-item name='mod'>
<a-radio-group
</j-form-item>
<j-form-item name='mod'>
<j-radio-group
v-model:value='formModel.mod'
:options='[
{ label: "周期执行", value: "period" },
@ -48,18 +48,18 @@
option-type='button'
button-style='solid'
/>
</a-form-item>
</j-form-item>
</template>
<a-space v-if='showOnce' style='display: flex;gap: 24px'>
<a-form-item :name="['once', 'time']">
<a-time-picker valueFormat='HH:mm:ss' v-model:value='formModel.once.time' style='width: 100%'
<j-space v-if='showOnce' style='display: flex;gap: 24px'>
<j-form-item :name="['once', 'time']">
<j-time-picker valueFormat='HH:mm:ss' v-model:value='formModel.once.time' style='width: 100%'
format='HH:mm:ss' />
</a-form-item>
<a-form-item> 执行一次</a-form-item>
</a-space>
<a-space v-if='showPeriod' style='display: flex;gap: 24px'>
<a-form-item>
<a-time-range-picker
</j-form-item>
<j-form-item> 执行一次</j-form-item>
</j-space>
<j-space v-if='showPeriod' style='display: flex;gap: 24px'>
<j-form-item>
<j-time-range-picker
valueFormat='HH:mm:ss'
:value='[
formModel.period.from,
@ -70,13 +70,13 @@
formModel.period.to = v[1]
}'
/>
</a-form-item>
<a-form-item></a-form-item>
<a-form-item
</j-form-item>
<j-form-item></j-form-item>
<j-form-item
:name='["period", "every"]'
:rules='[{ required: true, message: "请输入时间" }]'
>
<a-input-number
<j-input-number
placeholder='请输入时间'
style='max-width: 170px'
:precision='0'
@ -85,7 +85,7 @@
v-model:value='formModel.period.every'
>
<template #addonAfter>
<a-select
<j-select
v-model:value='formModel.period.unit'
:options='[
{ label: "秒", value: "seconds" },
@ -94,11 +94,11 @@
]'
/>
</template>
</a-input-number>
</a-form-item>
<a-form-item>执行一次</a-form-item>
</a-space>
</a-form>
</j-input-number>
</j-form-item>
<j-form-item>执行一次</j-form-item>
</j-space>
</j-form>
</template>
<script setup lang='ts' name='Timer'>

View File

@ -12,9 +12,9 @@
>
<div class='way-item-title'>
<span class='label'>{{ item.label }}</span>
<a-popover v-if='item.tip' :content='item.tip'>
<j-popover v-if='item.tip' :content='item.tip'>
<AIcon type='QuestionCircleOutlined' class='icon' />
</a-popover>
</j-popover>
</div>
<div class='way-item-image'>
<img

View File

@ -10,11 +10,11 @@
{{ keyByLabel[data.triggerType] }}
</div>
</div>
<a-form ref='sceneForm' :model='data' :colon='false' layout='vertical'>
<j-form ref='sceneForm' :model='data' :colon='false' layout='vertical'>
<Device v-if='data.triggerType === "device"' />
<Manual v-else-if='data.triggerType === "manual"' />
<Timer v-else-if='data.triggerType === "timer"' />
</a-form>
</j-form>
<PermissionButton
type='primary'
hasPermission='rule-engine/Scene:update'

View File

@ -1,5 +1,5 @@
<template>
<a-modal
<j-modal
visible
:title='title'
:width='750'
@ -8,13 +8,13 @@
@cancel='emit("close")'
@ok='handleOk'
>
<a-form
<j-form
layout='vertical'
name='scene-save'
ref="formRef"
:model='formModel'
>
<a-form-item
<j-form-item
name='name'
label='名称'
:rules="[
@ -22,17 +22,17 @@
{ max: 64, message: '最多输入64个字符' }
]"
>
<a-input v-model:value='formModel.name' placeholder='请输入名称' />
</a-form-item>
<a-form-item
<j-input v-model:value='formModel.name' placeholder='请输入名称' />
</j-form-item>
<j-form-item
:name='["trigger", "type"]'
label='触发方式'
:rules="[{ required: true, message: '请选择触发方式' }]"
>
<TriggerWay v-model:modelValue='formModel.trigger.type' :disabled='disabled' />
</a-form-item>
</a-form>
</a-modal>
</j-form-item>
</j-form>
</j-modal>
</template>
<script setup lang='ts'>

View File

@ -3709,6 +3709,18 @@ jetlinks-ui-components@^1.0.4:
lodash-es "^4.17.21"
monaco-editor "^0.35.0"
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#0c4999d28c96c11ce266c5c9706cc895010450dc"
integrity sha512-buCf4mWJ8cUyn+12nRRLIr25MwG60nxqWH4pZidKy/npNKt5WQXLV8PmHmf04z0xpJUnW5yY3C7QBkYoAkSgVw==
dependencies:
"@vueuse/core" "^9.12.0"
ant-design-vue "^3.2.15"
colorpicker-v3 "^2.10.2"
jetlinks-ui-components "^1.0.4"
lodash-es "^4.17.21"
monaco-editor "^0.35.0"
js-cookie@^3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.1.tgz"