npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ys-conditions

v0.0.31

Published

发起条件公共组件

Downloads

9

Readme

条件表达式

Install

安装方法:
npm安装:
npm: npm install ys-expression  或 npm i http://outergit.yonyou.com:8888/ys_public/ys-expression.git
yarn安装:
yarn add ys-expression 或 yarn add http://outergit.yonyou.com:8888/ys_public/ys-expression.git
使用 ys-expression.js:
ys-expression.js 文件文件在 http://outergit.yonyou.com:8888/ys_public/ys-expression/tree/develop/dist 

Quick Start

<template>
<YSExpress
    ref="ysExpressionMain"
    :lang="lang"
    :active-item="activeItem"
    :table-list="tableList"
    :right-table-list="rightTableList"
    :is-process-designer="isProcessDesigner"
    :open-reference-dialog="openReferenceDialog"
    // 下面这俩参数是点击左边表单的参照 然后再给 rightTableList 赋值 需要的 其他情况的不需要这个俩
    :need-get-right-table-list="needGetRightTableList"
    :get-right-table-list="getRightTableList"
    :relation-list-by-type="relationListByType"
    />
</template>
import YSExpress from 'ys-expression'
...,
components: {YSExpress},

Params

  lang: 语言(zh-CN: 中文简体,en: 英语)
  activeItem   数据回显的值,数据结构参考下面的 activeItem
  tableList 左边的数据列表
  rightTableList 右边的数据列表
  isProcessDesigner 是否是流程设计器 流程设计器就不显示手工选择/输入的下拉框了
  openReferenceDialog 这是一个Function 用于打开参照的弹框
  needGetRightTableList 布尔类型,默认false , 需要点击左侧表单数据的时候传递 true 触发获取右边表单数据的获取 即给 rightTableList 赋值
  getRightTableList 点击左边表单的表单字段,获取列表数据,赋值给 rightTableList
  注意openReferenceDialog打开弹框的时候 需要把type.o 赋值给 this.referencerThis,用以保存组件的this, 点击弹框确定的时候 把结果对象(显示值是对象的value属性)赋值给this.referencerThis.selectRenfrenceCtnValue
  relationListByType 如果需要自定义操作符类型 就传递这个数据, 不需要就不传, 跟是否是流程没关系
  :fixed="isFixed"  如果是true的话 add 按钮就失效了,只有一条数据。
  获取最后结果 this.$refs.ysExpressionMain.finalConfirm()
  hide-first-line="hideFirstLine" 隐藏最左边的表单一列
 activeItem: {
				'relationList': 
				[
					{"children":[{"id":"","name":"","formId":"", "field": {"type": {"name": "date"}},"left":"","right":"","type":"","relationType":"and","isLeaf":true,"children":[]}],"relationType":"and"}
				]
    }

vue中使用 ys-expression 示例:

<template>
<div>
	<div @click="confirm" v-if="showDialog" class="dialogContainer">
		我是弹框,点我
	</div>
  <Main
	ref="ysExpressionMain"
    :lang="lang"
    :active-item="activeItem"
    :table-list="tableList"
    :right-table-list="rightTableList"
    :is-process-designer="isProcessDesigner"
	  :open-reference-dialog="openReferenceDialog"
    >
  </Main>
  <div class="finnlConfrim" @click="finalConfirm">确定</div>
</div>
</template>

<script>
import Main from 'ys-expression'
export default {
	data () {
		return {
			lang: 'zh-CN',
			referencerThis: '',
			// activeItem.relationList 是显示值
			activeItem: {
				'relationList': 
				[
					{"children":[{"id":"","name":"","formId":"", "field": {"type": {"name": "date"}},"left":"","right":"","type":"","relationType":"and","isLeaf":true,"children":[]}],"relationType":"and"}
				]
			},
			tableList: [ {
				"id" : "0e02e501472549399a622068ec198b42",
				"name" : "档案11",
				children: [
						{
							"field_code": "111", "field_name": "stringsasassa",
							"type" : {"name" : "string"}
						}, 
						{
							"field_code": "22",  "field_name": "发起人部门",
							"type" : {"name" : "reference" }
						}, 
						{
							"field_code" : "33", "field_name" : "年月日",
							"type" : {"name" : "date" , "format": "yyyy-MM-dd"}, "formId" : "processVariable","extendData" : null
						},
						{
							"field_code" : "44", "field_name" : "时分秒",
							"type" : {"name" : "date" , "format": "HH-mm-ss" }, "formId" : "processVariable","extendData" : null
						},
						{
							"field_code" : "55", "field_name" : "啥也不是",
							"type" : {"name" : "aaabbb" }, "formId" : "processVariable","extendData" : null
						}
					]	
			}, {
				"id" : "processVariable",
				"name" : "流程字段"
			} ],
			rightTableList: [ {
				"id" : "1111",
				"name" : "Y源表单",
				children: [
					{
						"field_code": "1_aaa", "field_name": "sss三生三世",
						"type" : {"name" : "string" }
					}, 
					{
						"field_code": "2_aaa",  "field_name": "发起人部门",
						"type" : {"name" : "reference" }
					}, 
					{
						"field_code" : "3_aaa", "field_name" : "发起人所属用户组",
						"type" : {"name" : "string"  }, "formId" : "processVariable","extendData" : null
					}
				]	
			}],
			showDialog: false,
			isProcessDesigner: false
		}
	},
	components: {
    	Main
	},
	methods: {
		openReferenceDialog(type){
			this.referencerThis = type.o
			this.showDialog = true
		},
		confirm() {
			// showValue是显示值 trueValue是真实值
			this.referencerThis.selectRenfrenceCtnValue = {"showValue": ['一', '二', '三'], "trueValue": ['1', '2', '3']}
			this.showDialog = false
		},
    finalConfirm() {
			// 显示值
			console.log('显示值')
			console.log(this.activeItem.relationList[0])
			// 预览值
			console.log('预览值')
			console.log(this.$refs.ysExpressionMain.getConditionExpression(this.activeItem.relationList[0], 'children'))

			// 真实值- 数组
			let real = this.$refs.ysExpressionMain.getTrueCondition(this.activeItem.relationList[0], 'children')
			console.log('真实值数组:')
			if(this.isProcessDesigner) {
				// 是流程设计器的时候 这个是真实值
				console.log(real)
			} else {
				let newArr = []
				for(let i = 0; i < real.length; i++) {
					let newObj = {}
					newObj['item_' + i] = real[i]
					newArr.push(newObj)
				}
				// 不是流程设计器的时候 这个是真实值
				console.log(newArr)
			}
			// 真实值字符串
			console.log('真实值字符串:')
			let real2 = "${" + this.$refs.ysExpressionMain.getTrueConditionStr(this.activeItem.relationList[0], 'children') + "}"
			console.log(real2)
		},
		
	},
	created(){	
	},
	mounted(){
	}
}
</script>

<style lang='scss' scoped>
.dialogContainer{
	cursor: pointer;
    position: fixed;
    width: 200px;
    height: 200px;
    background: #ebe8ef;
    z-index: 9;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-50%);
}
.finnlConfrim{
	cursor: pointer;
    float: right;
    width: 53px;
    height: 30px;
    text-align: center;
    border: 1px solid #dcdfe6;
    border-radius: 4px;
    line-height: 30px;
    font-size: 14px;
    margin-top: 10px;
	&:hover{
		color: #409eff;
		border-color: #c6e2ff;
		background-color: #ecf5ff;
	}
}
</style>

引用 ys-expression.js 的使用示例:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
</head>
<body>

<div id="app">
  <div @click="confirm" v-if="showDialog" class="dialogContainer">
    我是弹框,点我
  </div>
  <ys-expression
    ref="ysExpressionMain"
    :lang="lang"
    :active-item="activeItem"
    :table-list="tableList"
    :right-table-list="rightTableList"
    :is-process-designer="isProcessDesigner"
    :open-reference-dialog="openReferenceDialog">
  </ys-expression>

  <div class="finnlConfrim" @click="finalConfirm">确定</div>
</div>
<script src="./dist/ys-expression.js"></script>
<script>

  window['ys-expression'].default.install();
  new Vue({
    el: '#app',
    data () {
      return {
        lang: 'zh-CN',
        referencerThis: '',
        // relationList是显示值 condition是真实值 显示值不存在的时候 就使用真实值,流程设计器里面会有这种情况,其他情况下部需要传递 'condition'
        activeItem: {
          'condition': '',
          'relationList':
            [
              {"children":[{"id":"","name":"","formId":"", "field": {"type": {"name": "date"}},"left":"","right":"","type":"","relationType":"and","isLeaf":true,"children":[]}],"relationType":"and"}
            ]
        },
        tableList: [ {
          "id" : "0e02e501472549399a622068ec198b42",
          "name" : "档案11",
          children: [
            {
              "field_code": "111", "field_name": "stringsasassa",
              "type" : {"name" : "string"}
            },
            {
              "field_code": "22",  "field_name": "发起人部门",
              "type" : {"name" : "reference" }
            },
            {
              "field_code" : "33", "field_name" : "年月日",
              "type" : {"name" : "date" , "format": "yyyy-MM-dd"}, "formId" : "processVariable","extendData" : null
            },
            {
              "field_code" : "44", "field_name" : "时分秒",
              "type" : {"name" : "date" , "format": "HH-mm-ss" }, "formId" : "processVariable","extendData" : null
            },
            {
              "field_code" : "55", "field_name" : "啥也不是",
              "type" : {"name" : "aaabbb" }, "formId" : "processVariable","extendData" : null
            }
          ]
        }, {
          "id" : "processVariable",
          "name" : "流程字段"
        } ],
        rightTableList: [ {
          "id" : "1111",
          "name" : "Y源表单",
          children: [
            {
              "field_code": "1_aaa", "field_name": "sss三生三世",
              "type" : {"name" : "string" }
            },
            {
              "field_code": "2_aaa",  "field_name": "发起人部门",
              "type" : {"name" : "reference" }
            },
            {
              "field_code" : "3_aaa", "field_name" : "发起人所属用户组",
              "type" : {"name" : "string"  }, "formId" : "processVariable","extendData" : null
            }
          ]
        }],
        showDialog: false,
        isProcessDesigner: false
      }
    },
    methods: {
      openReferenceDialog(type){
        console.log(type.type)
        // type.referenceObjValue 是参照的数据,回显用的
        this.referencerThis = type.o
        this.showDialog = true //需要自行打开参照的弹框
      },
      confirm() {
        // showValue是显示值 trueValue是真实值
        // this.referencerThis.selectRenfrenceCtnValue = {"showValue": ['一', '二', '三'], "trueValue": ['1', '2', '3']}
        this.referencerThis.selectRenfrenceCtnValue = [{"showValue": '111', "trueValue": 'ccc 1'}, {"showValue": '二', "trueValue": '2'}]
        this.referencerThis.activeItem.referenceObjValue = [{"showValue": '111', "trueValue": 'ccc 1'}, {"showValue": '二', "trueValue": '2'}]
        this.showDialog = false
      },
      finalConfirm() {
        // 显示值
        console.log('显示值')
        console.log(this.activeItem.relationList[0])
        // 预览值
        console.log('预览值')
        console.log(this.$refs.ysExpressionMain.getConditionExpression(this.activeItem.relationList[0], 'children'))

        // 真实值- 数组
        let real = this.$refs.ysExpressionMain.getTrueCondition(this.activeItem.relationList[0], 'children')
        console.log('真实值数组:')
        let newArr = []
        for(let i = 0; i < real.length; i++) {
          let newObj = {}
          newObj['item_' + i] = real[i]
          newArr.push(newObj)
        }
        // 不是流程设计器的时候 这个是真实值
        console.log(newArr)
        // 真实值字符串
        console.log('真实值字符串:')
        let real2 = "${" + this.$refs.ysExpressionMain.getTrueConditionStr(this.activeItem.relationList[0], 'children') + "}"
        console.log(real2)
      },
    }
  })
</script>
</body>
</html>
特殊说明,在非vue环境下,如果vue环境里面有element-ui, 那么该组件内部对于element-ui的引用就可以去掉,不用再次把element的资源打包进来了