联动规则组件-KOV场景梳理技术方案

news2024/9/24 21:29:21

一、背景:

多场景使用到kov类型组件,但是实现上不统一,各个场景的协议都比较定制,且开发的时候难度较大。所以将组件进行抽离

目标:支撑所有逻辑场景

什么是kov?如下图:

 难点:

       1、不同类型组件对应的操作符有哪些 ???

       2、value组件展示形式,如何确定 ???

       3、如何定制operator的内容以及value组件 ??

       等。。。。。。。

   组件收益:

        1、统一协议&场景

        2、快速接入

二、KOV组件实现方案

1、基本组件key与逻辑操作符的场景确 

2、逻辑操作符的映射

操作符含义

操作符

NOT_EMPTY有值
EMPTY无值
NOT_EQ不等于
EQ等于
GT大于
GE大于等于
LE小于等于
LT小于
INCLUDE包含
NOT_INCLUDE不包含
BETWEEN属于范围
NOT_BETWEEN不属于范围

3、基本组件&逻辑   推算   联动组件 

4、 条件转换逻辑表达式

三、kov组件使用文档 &demo

<Kov v-model="test" :schema="schema" :disabledKeys="[]" class="v-flex-fill">
      <template #cyl>
        <el-input v-model="test.params"></el-input>
      </template>
 </Kov>
 
test:{ "field": "", "function": "", "params":  }
 
 
 schema = [
  {
    value: 'silentShipperActionType', // 字段名
    label: '选择器',
    type:'SELECT',  // 组件类型
    disabledKeys:[''], // field 中需要禁用的选项
    (
    该部分如果传入的“逻辑表达式”不在默认范围内,会进行合并,如果在则会进行覆盖
    该逻辑下,以传入的type类型为准
    )
    operators:[ // 自定义内容
     {
      label:"等于",
      value:'EQ', // 逻辑表达式
      type: 'SELECT',
      options:[{}],
    }],
    attrs:{
    },
    options:[{
    label:'测试1',
    value:1
     },
    {
    label:'测试2',
    value: 2
    }]
}
]

1、props

属性名

含义

类型

默认值

必填

schema组件渲染的schema数组[]
v-model对象{}
disabledKeys代表field中禁选的项数组[]

2、v-model对象字段解释

字段

含义

类型

key

字段(第一个下拉框内容)string

op

逻辑关系string

value

string/array(包含/非包含条件/attrs中multiple为true并生效的情况下为array)

3、Schema中对象字段解释

字段

含义

类型

是否必传

key字段String
label字段名String
type  字段对应的类型String
attrs针对联动组件的属性设置对象
options联动组件的选项数组否 (联动组件为select场景必填)

operators 

自定义逻辑组件内容&联动组件数组

4、type类型:

type值

含义

NUMBER

数字

SELECT

选择器

CHECKBOX

多选框

RADIO

单选框

TEXT

文本

CITY

城市

DATE

日期

TIME

时间

DATETIME

日期时间

5、operators    

中对象字段解释

字段

含义

类型

是否必传

label逻辑组件选项名必传
value逻辑组件选项值(即key,若与已存在的逻辑重复,则对应type会进行覆盖该逻辑对应的联动组件)必传
type

组件类型

插槽名

(若传入的类型不在提供的组件范围内,则视为插槽)

必传
options选项否(type为slect/checkbox/radio等必传)

demo:

<Kov v-model="test" :schema="schema" :disabledKeys="[]" class="v-flex-fill">
      <template #cyl>
        <el-input v-model="test.params"></el-input>
      </template>
 </Kov>
 
test:{ "field": "", "function": "", "params":  }
 
 
 schema = [
  {
    value: 'select', // 字段名
    label: '选择器',
    type:'SELECT',  // 组件类型
    operators:[ // 自定义内容
     {
      label:"等于",
      value:'EQ', // 逻辑表达式
      type: 'SELECT',
      options:[{}],
    }],
    attrs:{
    },
    options:[{
    label:'测试1',
    value:1
     },
    {
    label:'测试2',
    value: 2
    }]
}
]
<Kov v-model="test" :schema="schema" :disabledKeys="[]" class="v-flex-fill">
      <template #cyl>
        <el-input v-model="test.params"></el-input>
      </template>
 </Kov>
 
test:{ "field": "", "function": "", "params":  }
 
 
 schema = [
  {
    value: 'select', // 字段名
    label: '选择器',
    type:'TEAX',  // 组件类型
    operators:[ // 自定义内容
     {
      label:"匹配开头(自定义)",
      value:'MATCHHEAD', // 逻辑表达式
      type: 'TEXT'
    }]
   
}
]

四、ConditionKov组件(条件关系kov)

<template>
    <div>
      <ConditionKov v-model="test.a" :schema="schema" class="v-flex-fill">
      </ConditionKov>
    </div>
  </template>
   
  <script>
  import {ConditionKov} from '@meta-vue/kov'
  export default {
    name: 'kov',
    componentName: 'kov组件',
    components: { ConditionKov },
    data() {
      return {
        test: {},
        schema: {},
      }
    },
    created() {
      this.schema = [
      {
        key: 'select',
        label: '选择器',
        type:'SELECT',
        attrs:{
          multiple: false,
          required: true
        },
        options:[{
          label:'测试1',
          value:1
        },{
          label:'测试2',
          value: 2
        }]
      },
      {
        key: 'text',
        label: '文本',
        type:'TEXT',
      }
 
    ]
    },
    methods: {},
  }
  </script>
   
  <style lang="stylus" scoped></style>

props:

属性

含义

默认值

是否必填

schema组件渲染的schema 是(格式如上)

hiddenDeleteBtn

隐藏删除按钮falsefalse

disabledKeys

禁用项【】false

成品展示

以上就是全部内容,感兴趣的可以私聊代码哈~~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/758228.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

KVM-虚拟机【安装与基础使用】

目录 【1】kvm-01&#xff1a;安装-KVM管理工具 【2】创建新的虚拟机 【3】kvm常用管理命令 【4】console控制台登录 【5】修改虚拟机的密码 【6】KVM虚拟机的虚拟磁盘管理和快照管理 【7】将raw格式的磁盘挂载到宿主机 【8】磁盘的管理命令 【9】创建快照-内部快照 【…

java学习路程之篇七、知识点、赋值运算符、关系运算符、逻辑运算符、三元运算符、运算符优先级

文章目录 1、赋值运算符2、关系运算符3、逻辑运算符4、三元运算符5、运算符优先级 1、赋值运算符 2、关系运算符 3、逻辑运算符 4、三元运算符 5、运算符优先级

Elasticsearch和MySQL之间的数据同步问题

前言&#xff1a;大家好&#xff0c;我是小威&#xff0c;24届毕业生&#xff0c;在一家满意的公司实习。本篇文章参考网上的课程&#xff0c;介绍Elasticsearch和MySQL之间的数据同步问题。 如果文章有什么需要改进的地方还请大佬不吝赐教&#x1f44f;&#x1f44f;。 小威在…

vue路由接口转发

目录 一、nginx的路由转发 二、vue路由转发 三、两者路由转发的区别 vue的路由和nginx的路由有许多相似之处&#xff0c;也有一些不同的地方。 两者都有接口转发的功能&#xff0c;但是具体转发的方式会有一些区别。 一、nginx的路由转发 nginx的路由是这样的&#xff1a;…

C# Modbus通信从入门到精通(3)——Modbus RTU(0x01功能码)

1、01(0x01)读线圈 使用该功能码能从远程地址中读取1到2000个线圈的状态,每个线圈的状态只能是0或者1,读取的线圈数据由主站读取时指定。 2、发送报文格式 更详细的格式如下: 从站地址+功能码+起始地址高位+起始地址低位+线圈数量高位+线圈数量低位+CRC,一共8个字节,其…

JS-变量

文章目录 1.变量概述1.1 什么是变量1.2 变量在内存中的存储 2.变量的使用2.1 声明变量2.2 赋值2.3 变量的初始化 3.变量语法扩展3.1 更新变量3.2 同时声明多个变量3.3 声明变量特殊情况 4.变量命名规范 1.变量概述 1.1 什么是变量 变量是用于存放数据的容器。 我们通过 变量名…

gulimall-性能监控-压力测试

性能监控与压力测试 前言一、性能监控1.1 jvm 内存模型1.2 jvisualvm 作用1.3 监控指标 二、压力测试2.1 概念2.2 性能指标2.3 JMeter 压测工具 前言 本文继续记录B站谷粒商城项目视频 P141-150 的内容&#xff0c;做到知识点的梳理和总结的作用。 一、性能监控 1.1 jvm 内存…

AcWing 106. 动态中位数—对顶堆

问题链接 AcWing 106. 动态中位数 问题描述 分析 推荐b站董晓算法视频讲解对顶堆 这道题应该用树状数组、平衡树也能解决&#xff0c;这里用对顶堆来做&#xff0c;对顶堆能够用维护第K位置的数&#xff0c;K是固定的&#xff0c;在这道题中&#xff0c;维护两个堆&#xff…

posix ipc之匿名信号量

note 使用信号量进行进程间通信时&#xff0c;信号量要放置在共享内存上&#xff1b;若是线程间通信&#xff0c;放堆上或全局变量区就行 code // 使用信号量进行进程间通信时&#xff0c;信号量要放置在共享内存上&#xff1b;若是线程间通信&#xff0c;放堆上或全局变量区…

Python批量实现Word、EXCLE、PPT转PDF文件

一、绪论背景 在日常办公和文档处理中&#xff0c;有时我们需要将多个Word文档、Excel表格或PPT演示文稿转换为PDF文件。将文档转换为PDF格式的好处是它可以保留文档的布局和格式&#xff0c;并且可以在不同平台上进行方便的查看和共享。 本篇博文将介绍如何使用Python编程语言…

0714两小时配置完服务器环境

之前那个222的服务器&#xff0c;不知道下载的什么东西&#xff0c;包含了一个挖矿程序&#xff0c;然后就停掉了它。 重新配置一个环境在220服务器上。 1、配置anaconda :(直接下载的这个博客的那个版本&#xff09; https://blog.csdn.net/m0_46926492/article/details/1293…

【分布式】ceph存储

目录 一、存储基础单机存储设备单机存储的问题商业存储解决方案 二、 分布式存储 &#xff08;软件定义的存储 SDS&#xff09;分布式存储的类型Ceph 优势Ceph 架构Ceph 核心组件Pool中数据保存方式支持两种类型&#xff1a;Pool、PG 和 OSD 的关系OSD 存储后端BlueStore 的主要…

本地生活直播,和电商直播有什么不一样?

直播正在成为零售业的标配&#xff0c;当下最新的一条赛道是“本地生活直播”。 &#xff08;商家开始在美团等平台进行本地生活直播。摄影&#xff1a;李崧稷&#xff09; 今年618&#xff0c;在老牌电商平台拉着无数网店&#xff0c;拼尽全力想要堆高销量的时候&#xff0c;一…

k8s之Pod详解

目录 一、Pod基础概念1.1 在Kubrenetes集群中Pod有如下两种使用方式1.2 kubernetes中的pause容器主要为每个容器提供以下功能1.3 Kubernetes设计这样的Pod概念和特殊组成结构有什么用意&#xff1f; 二、Pod分类三、容器的分类3.1 pause基础容器&#xff08;infrastructure con…

[SCTF2019]creakme

前言 主要是SEH解密然后AES加密 分析 SEH main函数中获取到程序句柄也就是首地址&#xff0c;然后进入图中函数找到.SCTF段地址后产生异常&#xff0c;在异常中进行代码自解密 装载的SEH异常处理函数 因为在异常中有调试判断&#xff0c;所以处于调试状态中将异常抛给调试者…

玩转内存修改函数——【C语言】

在上篇博客中&#xff0c;我们学习了字符串函数&#xff0c;针对一些字符串我们可以做出一系列操作。接下来我们将学习一些内存修改函数&#xff08;#inlcude<string.h>&#xff09;&#xff0c;让我们一起走进mempy、memmove、memcmp函数中。 目录 mempcy函数​编辑 m…

leetcode刷题(轮转数组、买股票的最佳时机、买卖股票的最佳时机2、跳跃游戏、跳跃游戏2、最大子序列交替和、交替数字和、下降路径最小和)

目录 1、轮转数组 2、买卖股票的最佳时机 3、买卖股票的最佳时机② 4、跳跃游戏 5、跳跃游戏2 6、最大子序列交替和 7、交替数字和 8、下降路径最小和 1、轮转数组 class Solution():def rotate(self, nums, k):def reverse(i, j): #逆置数组while i < j:nums[i]…

Oracle Apex制作一个简单的交互式报表页面&页设计

目录 创建好一个菜单表 简单查询一下&#xff1a; 创建交互式报表 工作报表展示​编辑 菜单报表展示​编辑 页设计器 改变布局样式 修改标签内容 添加验证&#xff06;更改必填项 注意&#xff01; 在主页进行跳转 页跳转按钮 主页可以跳转到指定报表 面包屑 报表也可…

Clickhouse数据一致性和物化视图

Clickhouse 一、数据一致性的保证1.通过Group by对数据去重2.通过 FINAL 查询 二、物化视图1.物化视图与普通视图的区别2.优缺点3.基本语法 三、MaterializeMySQL引擎1.特点2.使用细则 四、常见问题排除分布式 DDL某数据节点的副本不执行数据副本表和数据不一致副本节点全量恢复…

【uniapp开发小程序】设置全屏的开屏广告、长按识别图片、点击跳转通话 拨打电话

设置全屏的开屏广告需求实现 效果图&#xff1a; 点击跳转其他小程序&#xff1a; uni.navigateToMiniProgram() 官方文档&#xff1a;uni.navigateToMiniProgram(OBJECT) | uni-app官网 // 示例代码 uni.navigateToMiniProgram({appId: ,path: pages/index/index?id123,ext…