跳到主要内容
版本:Next

API

sdk

version

基座版本

console.log(sdk.version)

userInfo

用户和权限信息

{
permissions: {
//权限信息
all: boolean //是否具有全部权限
page: string[] //具有权限页面 id
widgets: boolean //具有组件权限 id
}
user:{
id:string//用户 id
name:string //用户名称
organizationId:string//组织 id
orignizationDiaplsyName:string // 组织名称
roleIds:Array //角色 id 集合
}
}

request:Request

axios 实例 请求接口使用

类型

type RequestConfig = AxiosRequestConfig & {
silent?: boolean
}

type Request = {
<D = Data>(config?: RequestConfig): Promise<D>
<D = Data>(url: string, config?: RequestConfig): Promise<D>
get<D = Data>(url: string, config?: RequestConfig): Promise<D>
delete<D = Data>(url: string, config?: RequestConfig): Promise<D>
post<D = Data>(url: string, data?: any, config?: RequestConfig): Promise<D>
put<D = Data>(url: string, data?: any, config?: RequestConfig): Promise<D>
} & AxiosInstance

示例

const { request } = sdk
const params = {id : 1 }
request.get('api/v1/xxx', {params})
const { request } = sdk
const data = {id : 1}
request.post('api/v1/xxx',data)

不需要出现 loading 弹窗

const { request } = sdk
const data = { id : 1}
request.post('api/v1/xxx', data, { silent : false})

cms

utils

工具函数

openVariableDialog(option:Object)

打开变量弹窗方法(和内置组件 function-dialog-variate.vue 作用一样) 命令式

示例

import sdk from 'syc-cms'
const { openVariableDialog } = sdk.utils

/**
*
* @param currentVariable 单选时默认选中的数据
* @param isMultiple 是否开启多选 默认false
* @param defaultCheckKey 多选时默认选中的数据列表id
* @param showConfig 是否显示确认并配置下一项按钮
* @param configData 是否显示确认并配置下一项按钮的数据
* @example
* configData = {
* data:[{
* id:xxx,
* name:xxx
* }], //当前数据列表
* currentRow:{
* id:xxx,
* name:xxx
* }, //当前选中项
* key:'id' //根据唯一key值获取对应选中的下标
* variableKey:variableKey,对应获取变量名的key
* }
* @example
* const variable = await openVariableDialog({currentVariable: null})
* console.log(variable.name)
*/

async function open() {
const data = await openVariableDialog({
isMultiple: true,
})
}

importAsyc(module: string)

异步导入 cms 内置组件

示例

导入内置组件: /src/widgets/widget1.setting.vue

<template>
<SettingItem :title="'自定义设置'"> 自定义设置 </SettingItem>
</template>

<script lang="ts" setup>
import sdk from 'syc-cms'
const SettingItem = sdk.importAsync(
'@/views/Project/Pages/Editor/Settings/components/SettingItem.vue'
)
</script>

models

模型指 MVC 中的 M ,是对应用结构的描述,是一系列类

models.App

系统数据中心类

示例

import sdk from 'syc-cms'
const { app, App, createApp, getApp } = sdk.models
// 单例
;((app === new App()) === createApp()) === getApp()

实例属性

属性名说明类型默认值
mode当前模式,编辑模式(开发版),运行模式(运行版)。组件渲染时在两种模式中可能有区别,取决于组件自身逻辑"editing" \| "running""editing"
editing是否编辑模式booleantrue
running是否运行模式booleanfalse
current.project当前工程项目ProjectProject
projectList工程项目列表Project[][]
dataeventSocket全局事件 socketSocketSocket

models.app: App

App 的实例,单例,是整个系统的数据中心

示例

获取当前 app 模式 开发版和运行版做不同逻辑:


<script lang="ts" setup>
import sdk from 'syc-cms'
const { app } = sdk.models

function doSomething(){
if(app.editing){ //开发版
//
}else{ //运行版
//
}
}

</script>

获取应用程序

models.Project

对项目工程进行管理和操作,包括变量、页面、语言等内容

示例

获取工程信息

import sdk from 'syc-cms'
const { app } = sdk.models
const project = app.current.project
//当前工程id
console.log(project.id)

//当前工程所有页面
console.log(project.pageList)

实例属性

属性名说明类型默认值
identifier工程唯一标识string
id项目的 IDstring
name项目的名称string
current.page当前页面string
current.language当前语言string
current.user当前用户string
current.homePageId首页 IDstring
pageList项目中的页面列表,存储 Page 类的实例数组Page[][]
languageList项目中的语言列表,存储 Language 类的实例数组Language[][]
variableMap以变量名称为键的对象,存储项目中的变量信息,每个变量是 Variable 类的实例{ [string]: Variable }{}
variableValueMap以变量名称为键的对象,存储项目中的变量值信息。通过 Proxy,实现了对 variableMap 的值的自动获取和设置Proxy
variableOldValueMap以变量名称为键的对象,存储项目中的变量旧值信息。通过 Proxy,实现了对 variableMap 的旧值的自动获取Proxy
saved当前工程是否已保存booleantrue
saveStatus当前工程的保存状态"saved" \| "saving" \| "fail" \| "unsaved""saved"
moduleSavedStatusMap工程各子模块的保存状态Object{}
blocks全局事件列表,存储 Block 类的实例数组Block[][]

实例方法

方法名说明类型
remove从 app.projectList 中移除当前项目实例() => void
setVariable设置变量值。参数 name:变量名,value:变量值(name: string, value: string) => void
setVariable等待时长 参数 time:时长(mm)(time: number = 0) => void
openVirtualKeyboard开启虚拟键盘() => void
closeVirtualKeyboard关闭虚拟键盘() => void
closeVirtualKeyboard播放音频 参数 fileUrl: 文件路径,loop:是否循环(fileUrl: string, loop: boolean) => void

models.Page

页面管理,它包含了页面的基本属性和方法,以及与其他页面进行交互的功能。

示例

获取当前页面信息

import sdk from 'syc-cms'
const { app } = sdk.models
//当前页面
const page = app.current.project.current.page

//当前页面渲染节点信息
const document = page.document

//获取页面下标
const sort = page.getSort()

// 保存页面
page.save()

实例属性

属性名说明类型默认值
id页面的 IDstring
name页面的名称string
parent当前页面的父页面,为 undenfind 时是顶层Page \| undefinedundefined
parentId页面的父页面 idstring \| undefinedundefined
children页面的子页面列表Page[][]
document 重点页面文档数据,body 是页面渲染在画布上时的根节点{body:CanvasNode}{body:CanvasNode}
type页面类型。0 表示文件夹,1 表示画面number1
updateTime页面的更新时间string
sort页面在父级页面中的下标(用于排序)。值为 null 时,默认排序将页面追加到父级的最后一个number \| nullnumber
hasEvent是否有页面事件booleanfalse
permissions表示页面的权限控制配置。包含多个具有 id、name 和 subs 属性的对象,id 和 name 分别表示 CanvasNode 的 id 和 name,subs 是一个包含多个具有 id 和 name 属性的对象的数组(组件级别)Array[]

实例方法

方法名说明类型
appendChild向当前页面的子页面列表中添加一个子页面(child: Page, sort: number \| null = null) => void
remove从父页面的子页面列表中移除当前页面() => void
copyPage复制当前页面到当前列表() => void
getSort获取当前页面在父页面子页面列表中的下标() => number
save保存当前页面的内容和权限配置() => void

models.PageManager

一个页面控制器,主要用于管理页面的弹窗、页面跳转、导出、打印等功能。

示例

获取页面控制器信息

import sdk from 'syc-cms'
const { PageManager } = sdk.models

const pageManager = new PageManager()

//获取所有弹窗页面
console.log(pageManager.dialogPages)

//获取最后一次弹窗信息
console.log(PageManager.lastDialogInfo)

打开指定页面弹窗

import sdk from 'syc-cms'
const { PageManager } = sdk.models

const pageManager = new PageManager()
//只能打开一个弹窗
pageManager.alertRoute(1, '我是标题', true, 800, 200, 'dialog', true)

//能多开弹窗(显示最小化按钮)
pageManager.alertRoute(1, '我是标题1', true, 800, 200, '', true)
pageManager.alertRoute(2, '我是标题2', true, 800, 200, '', true)
pageManager.alertRoute(3, '我是标题3', true, 800, 200, '', true)

导出指定页面

import sdk from 'syc-cms'
const { PageManager } = sdk.models

const pageManager = new PageManager()
const params = {
pageInfo:{
id:1 //页面id 优先整个页面导出 (可选)
elementId:'#chart' //指定元素id (可选)
}
type: "PDF" // 导出文件格式 "Image" | "PDF"
filename: "PDF" // 导出文件名
format: "A4" // 纸张类型 "A4" \| "A3"
orientation: "p" // p'=纵向 'l'=横向
}
pageManager.exportCurrentPage(params)

实例属性

属性名说明类型默认值
id页面控制器 ID'PageManager''PageManager'
name页面控制器 名称'页面控制器''页面控制器'
topPageZIndex页面层级的 z-index 属性值string'99'
dialogPages存储所有窗口页面的数组   dialogPages[0]._props.uuid 是 uuidArray[{dialog:Component,pageIds:Array}][]
miniPagesId存储最小化窗口页面的数组 这里 id 是 uuidArray<{vm:ComponentInternalInstance,id: string,title: string}>[]
currentPage当前选中的弹窗信息Object[{dialog:Object,pageIds:Array}]

静态属性

属性名说明类型默认值
lastDialogInfo记录最后一次弹窗的信息,包括时间戳和 pageIdObject[{timestamp:Date,pageId:Page['id']}]{}

实例方法

方法名说明类型
getDialogPageById根据 uuid 获取对应的窗口页面(uuid: string) => Component
removeMiniPagesById根据 uuid 移除最小化窗口页面(uuid: string) => void`
removeDialogPagesById根据 uuid 移除最大化窗口页面(uuid: string) => void
closeRoute关闭所有窗口页面() => void
alertRoute弹出指定页面,包括相关参数(如:目标页面 id、标题、是否固定尺寸、宽度、高度、是否多开窗口、是否显示关闭按钮)(targetPageId: Page['id'], title: string, fixedSize: boolean, width: number, height: number, target: "dialog" \| null, closeBtn: boolean) => void
jumpRoute跳转到指定的页面,支持弹窗内跳转和主体页面跳转(pageId: number) => void
reloadRoute刷新当前页面() => void
backRoute返回上一个页面() => void
exportCurrentPage导出页面中的图表数据,支持导出为 Excel 格式 id:页面 id elementId:元素 id specifiedSavePath:指定路径(eletron)(pageInfo: {id?:Page['id'],elementId?:string}, type: "Image" \| "PDF", filename: string, format: "A4" \| "A3", orientation: "p" \| "l", specifiedSavePath: string \| null, timeout: number = 2000) => Promiese<void>
printCurrentPage打印当前页面(pageInfo: {id?:Page['id'],elementId?:string}, timeout: number = 2000) => Promiese<void>

models.CanvasNode

用于表示和管理一个画布上的图形元素,每个独立的图形元素都可以看作是一个 CanvasNode 实例。它包含了许多属性和方法,用于描述元素的形状、位置、颜色等特征,以及实现元素的绘制、移动、缩放等操作。

示例

获取节点样式 /src/widgets/widget1/widget1.vue

<template>
<div class="example">
</div>
</template>

<script setup lang="ts">

const $props = defineProps<{
editing?: boolean
running?: boolean
node: CanvasNode
}>()

const node = $props.node

//node.style
consol.loeg(node.style) //固定三个参数{position:'absolute',left '1px',top:'1px'} 如果没有手动设置过其他参数(如width,height),是没有保存的
//node.convertedStyled对node.style 经过Proxy代理转换 '1px' = 1
consol.loeg(node.convertedStyle.left) // 1
node.convertedStyle.left = 2 // node.style {position:'absolute',left '2px',top:'1px'}

<script>

设置组件自定义参数

/src/widgets/widget1/defaultProps.ts

export let defaultProps = {
expression: '',
defaultColor: '#3D6EFF',
}

/src/widgets/widget1/index.ts

import sdk from 'syc-cms'
import { defaultProps } from './defaultProps'
const { Widget } = sdk.models

export default <Partial<Widget>>{
category: 'base',
name: 'widget1',
icon: '',
authorizationRequired: true,
styleConfig: {},
onCreate(node) {
node.setDefaultProps(defaultProps)
},
}

/src/widgets/widget1/widget1.vue

<template>
<div class="example">
</div>
</template>
<script setup lang="ts">
const $props = defineProps<{
editing?: boolean
running?: boolean
node: CanvasNode
}>()
const node = $props.node
console.log(node.props) // {expression: '',defaultColor: '#3D6EFF'}

实例属性

属性名说明类型默认值
id节点的唯一标识符,使用日期的 JSON 字符串表示 IDstring""
name节点名称string""
is组件类型,类似于 Vue 的 is 属性string""
props 重点组件的自定义配置数据,类似 vue propsObject{}
tagName节点的 HTML 标签名,is 存在时 tagName 为 undefinedstringundefined
style节点的自定义设置样式数据Partial <CSSStyleDeclaration>{}
computedStyle已渲染的计算样式(基于 windows.getComputedStyle)Partial <CSSStyleDeclaration>{}
convertedStyle已转换的样式,方便 js 使用Partial <CSSStyleDeclaration>{}
selected选中状态的 getter 和 setter,用于判断节点是否被选中booleanfalse
locked是否锁定booleanfalse
aspectRatioLocked是否宽高比锁定booleanfalse
dom渲染的 dom 节点HTMLElement \| nullnull
parentNode父节点CanvasNode \| undefinedundefined
childNodes子节点们CanvasNode[][]

实例方法

方法名说明类型
setDefaultProps 重点设置 默认自定义数据的 props(defaultProps: object) => void
toJSON返回一个 JSON 对象,包含节点的属性() => Object
appendChild将给定的子节点添加到当前节点的 childNodes 数组中(child: CanvasNode) => void
remove从父节点中移除当前节点() => void
cloneNode克隆当前节点及其子节点,返回克隆得到的新节点() => void
isGroup判断当前节点是否为组节点() => void

静态属性

属性名说明类型默认值
selectedList readonly选中的节点列表,响应式数组CanvasNode[][]
styleProxy readonly读写当前选中节点的样式的代理对象Partial <CSSStyleDeclaration>{}

静态方法

方法名说明类型
getSelectedOrBodyList获取选中的节点或页面主体节点列表() => void
getUnlockedSelectedList获取未锁定的选中节点列表() => void
getSameStyleProxyValue获取具有相同样式代理值的节点数组(nodes: CanvasNode[], key: string) => void
setSameStyleProxyValue为具有相同样式代理值的节点数组设置样式值(nodes: CanvasNode[], key: string, value: any) => void
getById根据给定的 id 获取 CanvasNode 实例(id:string) => CanvasNodeundefined
getBody获取页面主体节点() => CanvasNode

models.Widget

表示应用中的可视化组件,这些组件可以在画布上进行组合和编辑,从而实现各种自定义的功能。Widget 类包含了组件的一些基本属性和方法,以及与其他组件进行交互的功能。

实例属性

属性名说明类型默认值
is组件的唯一标识,类比 vue is 。如果相同将会覆盖。内部组件自动使用文件名string""
name组件名称string""
category组件分类"base"\| "readWrite"\| "jump"\| "container"\| "run"\| "chart"\| "run"\|"system"""
icon组件图标,支持 class 类名, 也支持 base64string""
authorizationRequired表示组件是否可以进行权限控制booleanfalse
canvasView表示组件在画布上的视图VueComponentnull
settingsView表示组件的设置视图(如:Name.settings.vue)VueComponentnull
styleConfig表示组件设置项禁用 textSetting:文本配置 appearanceSetting:外观配置{[key in keyof CSSStyleDeclaration]?:boolean } & {textSetting?: boolean appearanceSetting?: boolean}null

实例方法

方法名说明类型
onCreate 重点钩子函数,组件实例化调用此函数(1.页面刷新,2.从组件库拖出)(node: CanvasNode) => void

静态属性

属性名说明类型默认值
store以组件类型为键,Widget 实例为值。用于存储所有已创建的 Widget 实例Object<string,string[]>{}
list获取 store 中的所有 Widget 实例Widget[][]
sortInfo指定组件的排序Object<string,string[]>[]

models.Variable

对项目中的变量进行变量管理。它包含了与变量相关的一系列操作,例如获取和设置变量值,发送变量值到后端等。还提供了一些静态方法和属性,以方便访问和操作当前项目中的变量。

示例

获取变量信息 /src/widgets/widget1/widget1.vue

<template>
<div class="example">
{{computeValue}}
</div>
</template>

<script setup lang="ts">
import { computed } from 'vue'
import sdk from 'syc-cms'
const { Variable } = sdk.models
const $props = defineProps<{
editing?: boolean
running?: boolean
node: CanvasNode
}>()

//获取变量a的Variable实例 (需要启动变量服务)
const aVariableInstance = Variable.store['a']

//获取变量a的值(需要启动变量服务)
const value = aVariableInstance.value

//变量a 变量b组合 ,使用computed变成响应式数据
const computeValue = computed(()=> Variable.exp('a'))

const computeValue = computed(()=> Variable.exp('a+b+1'))


<script>

监听变量值变化 /src/widgets/widget1/widget1.vue

<template>
<div class="example">
</div>
</template>

<script setup lang="ts">
import { computed } from 'vue'
import sdk from 'syc-cms'
const { Variable } = sdk.models
const $props = defineProps<{
editing?: boolean
running?: boolean
node: CanvasNode
}>()

/**
*监听变量a 值变化
* 需要同步调用,异步需要手动调用unWatch解除监听
*/
const unWatch = Variable.watch('a',(newValue,oldValue)=>{})

<script>

实例属性

属性名说明类型默认值
project该变量所属的项目实例Project{}
name变量名string""
type变量数据类型keyof typeof Variable.types0
typeName变量数据类型名称string'二进制变量'
dataQuality变量的数据质量numberundefined
oldValue变量的旧值any
value变量的新值any
address变量地址(IO 变量相关)string
interval采集间隔 (IO 变量相关)number1000
stringLength字符长度 (IO 变量相关)number \| nullnull
zoom缩放比 (IO 变量相关)number \| nullnull
digit小数位数 (IO 变量相关)number \| nullnull
readWriteRule读写规则 (IO 变量相关)1 \| 2 \| 31
scopeType作用域类型 (系统变量相关)0 = 服务端变量 1 = 客户端变量0 \| 11
initType初始值类型 (内部变量相关)0 = "无" 1 = "退出值" 2="设定值"0 \| 1\| 21
setValue初始值 (内部变量相关)string \| nullnull
expression表达式 (逻辑变量相关)string \| nullnull
mappingVariable映射变量string \| nullnull

实例方法

方法名说明类型
get返回变量的值() => any
set设置变量值并同步更新本地值(newValue:any) => void
post仅下发变量值,不立即更新本地值(下发成功后,等待 websocket 通知更新)(newValue:any) => void
remove从本地变量池删除当前变量() => void

静态属性

属性名说明类型默认值
store当前工程的变量池 获取变量 Variables 实例 Variable.store.varNameProxy{}

静态方法

方法名说明类型
exp deprecated通过表达式求值值(code: string) => any
watchExp deprecated监听表达式的值的变化(code: string,callback: (value: any, oldValue: any) => void) => any
isVarName判断给定字符串是否为一个合法的变量名(code: string) => boolean) => any

models.Expression

表达式运算,Variable 类 的扩展

示例

获取表达式值 /src/widgets/widget1/widget1.vue <template>

  <div class="example">
</div>
</template>

<script setup lang="ts">
import { computed } from 'vue'
import sdk from 'syc-cms'
const { Expression } = sdk.models
const $props = defineProps<{
editing?: boolean
running?: boolean
node: CanvasNode
}>()

//获取表达式值
new Expression("1 + 1").toValue() // 2
Expression().getValue("1 + 1") // 2

//获取表达式值 变量a + 变量b
new Expression("a + b").toValue() //
Expression().getValue("a + b") //

const fn = Expression.getValue("() => a + b")
fn() //调用时才获取表达式结果

<script>

监听表达式值变化 /src/widgets/widget1/widget1.vue

<template>
<div class="example">
</div>
</template>

<script setup lang="ts">
import { computed } from 'vue'
import sdk from 'syc-cms'
const { Expression } = sdk.models
const $props = defineProps<{
editing?: boolean
running?: boolean
node: CanvasNode
}>()

const exp = new Expression('a+b')
const exp2 = new Expression('a')

/**
*监听变量a + 变量b 值变化
* 需要同步调用,异步需要手动调用unWatch解除监听
*/

const unWatch = exp.watch((newValue,oldValue)=>{})

<script>

获取表达式中得变量列表 /src/widgets/widget1/widget1.vue

<template>
<div class="example">
{{computeValue}}
</div>
</template>

<script setup lang="ts">
import { computed } from 'vue'
import sdk from 'syc-cms'
const { Expression } = sdk.models
const $props = defineProps<{
editing?: boolean
running?: boolean
node: CanvasNode
}>()

const exp = new Expression('a+b+1')

//获取表达式中得变量名列表
const vars = exp.getVars() //['a,'b']

<script>

实例属性

属性名说明类型默认值
code表达式 code 内容string""

实例方法

方法名说明类型
toValue获取表达式值 throwError:运行错误时是否抛出错误(throwError:boolean = false) => any
watch监听表达式的值的变化(callback: (value: any, oldValue: any) => WatchStopHandle)

静态属性

属性名说明类型默认值
\$vars当前工程的变量池 获取某个变量值 Expression.$vars.varNameProxy{}

静态方法

方法名说明类型
getValue获取表达式值(code: string,throwError:boolean = false) => any
getVars获取表达式中的变量列表(code: string) => string[]
isValidVariableName判断是否是合法变量名(code: string) => boolean
isValid是否是合法表达式(code: string) => boolean

models.Language

用于管理多语言,用于实现在应用中切换不同的语言环境。其属性和方法主要负责获取、设置和翻译文本,以及订阅和触发当前语言环境的变化。

示例

监听当前语言变化 /src/widgets/widget1/widget1.vue

<template>
<div class="example">
</div>
</template>

<script setup lang="ts">
import { computed } from 'vue'
import sdk from 'syc-cms'
const { Language } = sdk.models
const $props = defineProps<{
editing?: boolean
running?: boolean
node: CanvasNode
}>()

Language.useChange((language: Language)=>{
//dosomething
})

<script>

获取 ElementPlusI18n 内置语言包 /src/widgets/widget1/widget1.vue

<template>
<div class="example">
<el-config-provider :locale="local">
<el-date-picker
/>
</el-config-provider>
</div>
</template>

<script setup lang="ts">
import { computed } from 'vue'
import sdk from 'syc-cms'
const { Language } = sdk.models
const $props = defineProps<{
editing?: boolean
running?: boolean
node: CanvasNode
}>()

const { local } = Language.useElementPlusI18n()

<script>

实例属性

属性名说明类型默认值
project当前项目信息Project
lang开发版当前设置的语言 "original" \| "auto" \| "zh-CN" \| "en-US""original"
followLang运行版实际设置的语言"zh-CN" \| "en-US"""
map动态语言包的映射,键为原始文本,值为翻译后的文本Record<string,string>{}
staticMap静态(内置)语言包的映射,键为原始文本,值为翻译后的文本Record<string,string>{}

实例方法

方法名说明类型
isOriginal判断当前语言状态是否为原始文本() => boolean

静态方法

方法名说明类型
isOriginal判断当前语言状态是否为原始文本() => boolean
setLang保存当前设置的语言到本地 localStorage(lang: "original" \| "auto" \| "zh-CN" \| "en-US") => void)
t收集并翻译动态语言,将原始文本替换为对应的翻译文(rawText: string) => void)
_t翻译内置语言包的文本(rawText: string) => void)
useChange订阅当前语言状态的变化,收集监听函数(同步调用)(fn: Function) => void)
useElementPlusI18n获取当前语言的 element-plus 内置语言包() => Object)
getLangReqHeader获取当前语言请求头() => string)

内置组件(Component)

CMS 内置组件

SettingItem.vue

设置 折叠组件 路径:views/Project/Pages/Viewer/Viewer.vue 路径:@/views/Project/Pages/Editor/Settings/components/SettingItem.vue

示例

/src/widgets/widget1.setting.vue

<template>
<SettingItem :title="'自定义设置'"> 自定义设置 </SettingItem>
</template>

<script lang="ts" setup>
import sdk from 'syc-cms'
const SettingItem = sdk.importAsync(
'@/views/Project/Pages/Editor/Settings/components/SettingItem.vue'
)
</script>

props

属性名说明类型默认值
title标题string'running'
fold是否折叠false

function-dialog-variate.vue

变量弹窗 路径:@/views/components/component-styles/function-dialogs/FunctionDialogVariate.vue

示例



<template>
<function-dialog-variate
:visible="visible"
:filterType="filterTypes"
isMultiple
isAppendToBody

@cancel="cancel"
@confirm="confirm"
/>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import sdk from 'syc-cms'
const { app } = sdk.models
const FunctionDialogVariate = sdk.importAsync(
'@/views/components/component-styles/function-dialogs/function-dialog-variate.vue'
)
const filterTypes = [ 0 ] //只显示二进制
</script>

props

属性名说明类型默认值
visible是否可见booleanfalse
isAppendToBody是否添加到 body 中booleantrue
isMultiple是否可以多选booleanfalse
data单选时默认选中的数据  id=变量 id name=变量名Obeject <{id:string,name:string}>undefined
defaultCheckKey多选时默认选中的数据列表 idstring[][]
filterType过滤只显示指定类型变量(0 二进制,1 有符号 8 位整型等,详细看 Variable.types<keyof typeof Variable.types>[][]
disabledNames禁止选择变量名集合string[][]
dialogConfirm点击确认按钮触发回调函数(rows:Object[],index)=>void(rows:Object[],index)=>void
dialogClose关闭弹窗触发回调函数()=> void()=>void

事件

事件名说明回调参数
confirm点击确认按钮触发(rows:Object[],index)
cancel关闭弹窗触发()
cellClick点击且高亮的当前行数据(row:Object)

ExpConfigDialog.vue

表达式弹窗 路径:@/views/Project/Data/VariableTag/components/ExpConfigDialog.vue

示例

<template>
<ExpConfigDialog
v-model:model-value="info.visible"
v-model:code="info.code"
:filterClientVariables="true"
></ExpConfigDialog>
</template>
<script setup lang="ts">
import { ref } from 'vue'
import sdk from 'syc-cms'
const { app } = sdk.models
const ExpConfigDialog = sdk.importAsync(
'@/views/Project/Data/VariableTag/components/ExpConfigDialog.vue'
)
const info = reactive({
visbible:false,
code:''
})

</script>

props

属性名说明类型默认值
code变量名string''
confirmAutoClose点击确认按钮后是否自动关闭弹窗booleantrue
filterClientVariables过滤掉客户端变量booleantrue
mergeVariableList事件参数Array[]

事件

事件名说明回调参数
change点击确认按钮触发(code:string)
close关闭弹窗时触发boolean

Viewer.vue

页面文档渲染器 路径:@/views/Project/Pages/Viewer/Viewer.vue

示例

<template>
<Viewer :mode="app.mode" :document="document"></Viewer>
</template>
<script setup lang="ts">
import sdk from 'syc-cms'
const { app } = sdk.models
const { Viewer } = sdk.importAsync('@/views/Project/Pages/Viewer/Viewer.vue')
const document = app.current.project.current.page.document
</script>

props

属性名说明类型默认值
mode当前项目信息'running' \| 'editing' 'running'
document节点信息Page['document']app.current.project.current.page.document
running是否 running 状态booleanfalse
editing是否 editing 状态booleanfalse

注意

iconfont

cms 使用了 iconfont , css 类名为 .iconfont ,如果需要使用额外的 iconfont 图标库,则 css 类名不能再命名为 .iconfont

版本升级

起始版本

2.0.3