{ version: '1.0.0', componentsMap: [ { devMode: 'lowcode', componentName: 'Slot', }, { package: '@alilc/antd-lowcode-materials', version: '0.11.0', exportName: 'Button', main: 'dist/antd-lowcode.esm.js', destructuring: true, componentName: 'Button', }, { package: '@alife/mc-assets-1935', version: '0.1.43', exportName: 'AliAutoDiv', main: 'build/lowcode/index.js', destructuring: true, subName: 'default', componentName: 'AliAutoDivDefault', }, { package: '@alilc/antd-lowcode-materials', version: '0.11.0', exportName: 'Typography', main: 'dist/antd-lowcode.esm.js', destructuring: true, subName: 'Text', componentName: 'Typography.Text', }, { package: '@alilc/antd-lowcode-materials', version: '0.11.0', exportName: 'Typography', main: 'dist/antd-lowcode.esm.js', destructuring: true, subName: 'Link', componentName: 'Typography.Link', }, { package: '@alilc/antd-lowcode-materials', version: '0.11.0', exportName: 'Modal', main: 'dist/antd-lowcode.esm.js', destructuring: true, componentName: 'Modal', }, { package: '@alilc/antd-lowcode-materials', version: '0.11.0', exportName: 'Select', main: 'dist/antd-lowcode.esm.js', destructuring: true, componentName: 'Select', }, { package: '@alilc/antd-lowcode-materials', version: '0.11.0', exportName: 'Form', main: 'dist/antd-lowcode.esm.js', destructuring: true, subName: 'Item', componentName: 'Form.Item', }, { package: '@alilc/antd-lowcode-materials', version: '0.11.0', exportName: 'Input', main: 'dist/antd-lowcode.esm.js', destructuring: true, componentName: 'Input', }, { package: '@alilc/antd-lowcode-materials', version: '0.11.0', exportName: 'Form', main: 'dist/antd-lowcode.esm.js', destructuring: true, componentName: 'Form', }, { package: '@alife/container', version: '0.3.7', exportName: 'P', main: 'lib/index.js', destructuring: true, subName: '', componentName: 'NextP', }, { package: '@alife/container', version: '0.3.7', exportName: 'Block', main: 'lib/index.js', destructuring: true, subName: 'Cell', componentName: 'NextBlockCell', }, { package: '@alife/container', version: '0.3.7', exportName: 'Block', main: 'lib/index.js', destructuring: true, subName: '', componentName: 'NextBlock', }, { package: '@alilc/antd-lowcode-materials', version: '0.11.0', exportName: 'Tooltip', main: 'dist/antd-lowcode.esm.js', destructuring: true, componentName: 'Tooltip', }, { package: '@alilc/antd-lowcode-materials', version: '0.11.0', exportName: 'Icon', main: 'dist/antd-lowcode.esm.js', destructuring: true, componentName: 'Icon', }, { package: '@alife/mc-assets-1935', version: '0.1.43', exportName: 'AliAutoSearchTable', main: 'build/lowcode/index.js', destructuring: true, subName: 'default', componentName: 'AliAutoSearchTableDefault', }, { package: '@alilc/antd-lowcode-materials', version: '0.11.0', exportName: 'Empty', main: 'dist/antd-lowcode.esm.js', destructuring: true, componentName: 'Empty', }, { package: '@alife/container', version: '0.3.7', exportName: 'Page', main: 'lib/index.js', destructuring: true, subName: '', componentName: 'NextPage', }, { devMode: 'lowcode', componentName: 'Page', }, ], componentsTree: [ { componentName: 'Page', id: 'node_dockcviv8fo1', props: { ref: 'outterView', style: { height: '100%', }, }, fileName: 'test', dataSource: { list: [], }, css: 'body {\n font-size: 12px;\n}\n\n.botton {\n width: 100px;\n color: #ff00ff\n}', lifeCycles: { constructor: { type: 'JSFunction', value: "function() {\n this.__jp__init();\n this.statusDesc = {\n 0: '失败',\n 1: '成功',\n 2: '构建中',\n 3: '构建超时',\n };\n this.pageParams = {};\n this.searchParams = {};\n this.userTimeout = null;\n this.currentUser = null;\n this.notFoundContent = null;\n this.projectTimeout = null;\n this.currentProject = null;\n }", }, componentDidMount: { type: 'JSFunction', value: "function() {\n this.$ds.resolve('PROJECTS');\n if (this.userTimeout) {\n clearTimeout(this.userTimeout);\n this.userTimeout = null;\n }\n if (this.projectTimeout) {\n clearTimeout(this.projectTimeout);\n this.projectTimeout = null;\n }\n }", }, componentDidUpdate: { type: 'JSFunction', value: 'function(prevProps, prevState, snapshot) {}', }, componentWillUnmount: { type: 'JSFunction', value: 'function() {}', }, }, methods: { __jp__init: { type: 'JSFunction', value: 'function() {\n this.__jp__initEnv && this.__jp__initEnv();\n this.__jp__initConfig && this.__jp__initConfig();\n this.__jp__initDataSource && this.__jp__initDataSource();\n this.__jp__initRouter && this.__jp__initRouter();\n this.__jp__initUtils && this.__jp__initUtils();\n}', }, __jp__initRouter: { type: 'JSFunction', value: 'function() {\n if (window.arsenal) {\n this.$router = new window.jianpin.ArsenalRouter({\n app: this.props.microApp,\n });\n } else {\n this.$router = new window.jianpin.ArsenalRouter();\n }\n}', }, __jp__initDataSource: { type: 'JSFunction', value: "function() {\n this.$apis = {\n PKG_LIST: {\n name: '打包列表',\n code: 'PKG_LIST',\n url: 'https://auto-nvwa.amap.com/ws/nvwa/cpp5x/packages/',\n method: 'GET',\n dataHandler: res => res.data,\n },\n PROJECTS: {\n name: '项目名称/渠道号',\n code: 'PROJECTS',\n url:\n 'http://auto-nvwa-staging.alibaba.com/ws/nvwa/cpp/select_projects/',\n method: 'GET',\n state: 'projects',\n params: {\n size: 5000,\n },\n dataHandler: res => {\n return res.data.data.result.map(d => {\n const { id, channelId, project_name } = d;\n return {\n label: `${project_name} / ${channelId}`,\n value: id,\n };\n });\n },\n },\n RELOAD: {\n name: '重新执行',\n code: 'RELOAD',\n url: 'https://auto-nvwa.amap.com/cpp/configbuild/rebuild/',\n method: 'GET',\n },\n BUILD_RESULT: {\n name: '打包结果',\n code: 'BUILD_RESULT',\n url:\n 'https://auto-nvwa.amap.com/cpp/api/configbuild/get_build_result/',\n method: 'GET',\n state: 'results',\n dataHandler: res => {\n return res.data.result;\n },\n },\n BUC_USER: {\n name: '搜索用户',\n code: 'BUC_USER',\n url: 'https://auto-nvwa.amap.com/ws/nvwa/sso_users/',\n method: 'GET',\n dataHandler: res => res.data.items,\n },\n};\n this.$ds = new window.jianpin.DataSource(this, {});\n}", }, __jp__initEnv: { type: 'JSFunction', value: "function() {\n const hostname = window.location.hostname;\n let env = 'prod';\n\n if (window.jianpin && window.jianpin.env === 'dev') {\n env = 'dev';\n } else if (window.arsenalConfig) {\n env = window.arsenalConfig.env;\n }\n\n const urlSearchParams = new URLSearchParams(window.location.search);\n const searchParams = {};\n for (const [key, value] of urlSearchParams) {\n searchParams[key] = value;\n }\n this.$env = env;\n this.$searchParams = searchParams;\n\n if (window.arsenal && window.arsenal.store) {\n this.$user = window.arsenal.store.getState('user');\n this.$store = window.arsenal.store;\n window.arsenal.store.subscribe('user', () => {\n this.$user = window.arsenal.store.getState('user');\n });\n } else {\n this.$store = {\n subscribe: () => {},\n getState: () => {},\n };\n this.$user = this.__jp__mockUser || {};\n }\n}", }, __jp__initConfig: { type: 'JSFunction', value: 'function() {\n const __config = {\n "default": {},\n "dev": {},\n "daily": {},\n "pre": {},\n "prod": {}\n};\n\n this.$config = window.jianpin.utils.extend(true, {}, __config.default, __config[this.$env]);\n}', }, __jp__initUtils: { type: 'JSFunction', value: 'function() {\n this.$utils = {\n message: window.jianpin.utils.message,\n axios: window.jianpin.utils.axios,\n moment: window.jianpin.utils.moment,\n };\n}', }, setSearchItem: { type: 'JSFunction', value: 'function(item) {\n const searchState = this.state.searchValues;\n const reducer = (pre, key) => {\n let value = searchState[key];\n if (item.hasOwnProperty(key)) {\n value = item[key];\n }\n return {\n ...pre,\n [key]: value || null,\n };\n };\n const searchValues = Object.keys(searchState).reduce(reducer, {});\n this.setState({\n searchValues,\n });\n }', }, fetchProject: { type: 'JSFunction', value: "function(value, callback) {\n if (this.projectTimeout) {\n clearTimeout(this.projectTimeout);\n this.projectTimeout = null;\n }\n this.currentProject = value;\n\n const fake = () => {\n this.$ds\n .resolve('PROJECTS', {\n params: { search_param: value },\n })\n .then(res => {\n if (this.currentProject !== value) {\n return;\n }\n callback(res || []);\n });\n };\n this.projectTimeout = setTimeout(fake, 300);\n }", }, handleProjectSearch: { type: 'JSFunction', value: 'function(value) {\n if (value) {\n this.fetchProject(value, projects => {\n this.setState({ projects });\n });\n } else {\n this.setState({ projects: [] });\n }\n }', }, handleProjectChange: { type: 'JSFunction', value: 'function(id) {\n this.setSearchItem({\n channel_id: id,\n });\n }', }, fetchUser: { type: 'JSFunction', value: "function(value, callback) {\n if (this.userTimeout) {\n clearTimeout(this.userTimeout);\n this.userTimeout = null;\n }\n this.currentUser = value;\n\n const fake = () => {\n this.$ds\n .resolve('BUC_USER', {\n params: { q: value },\n })\n .then(res => {\n if (this.currentUser !== value) {\n return;\n }\n const data = res.slice(0, 8).map(r => ({\n label: `${r.id} / ${r.label}`,\n value: r.id,\n }));\n callback(data);\n });\n };\n this.userTimeout = setTimeout(fake, 300);\n }", }, handleUserSearch: { type: 'JSFunction', value: 'function(value) {\n if (value) {\n this.fetchUser(value, userOptions => {\n this.setState({ userOptions });\n });\n } else {\n this.setState({ userOptions: [] });\n }\n }', }, handleUserChange: { type: 'JSFunction', value: "function(user) {\n console.log('debug user', user);\n this.setSearchItem({\n user_id: user,\n });\n }", }, fetchPkgs: { type: 'JSFunction', value: "function() {\n const { pageIndex, pageSize } = this.pageParams;\n this.$ds\n .resolve('PKG_LIST', {\n params: {\n ...this.searchParams,\n page: pageIndex,\n size: pageSize,\n },\n })\n .then(res => {\n const { result, page } = res.data;\n const { count } = page;\n this.setState({\n isSearch: true,\n pkgs: result,\n total: count,\n });\n });\n }", }, onPageChange: { type: 'JSFunction', value: 'function(pageIndex, pageSize) {\n this.pageParams = {\n pageIndex,\n pageSize,\n };\n this.fetchPkgs();\n }', }, renderTime: { type: 'JSFunction', value: "function(time) {\n return this.$utils.moment(time).format('YYYY-MM-DD HH:mm');\n }", }, renderUserName: { type: 'JSFunction', value: 'function(user) {\n return user.user_name;\n }', }, reload: { type: 'JSFunction', value: "function(id) {\n if (!confirm('确实要重新执行?')) {\n return;\n }\n this.$ds\n .resolve('RELOAD', {\n params: {\n build_id: id,\n },\n })\n .then(res => {\n const { code, message } = res.data.status;\n if (code == 0) {\n this.$utils.message.error(message);\n } else {\n const { pageIndex, pageSize } = this.pageParams;\n this.onPageChange(pageIndex, pageSize);\n }\n })\n .catch(err => {\n this.$utils.message.error(err.message);\n });\n }", }, handleResult: { type: 'JSFunction', value: "function(e) {\n // e.persist();\n e.preventDefault();\n e.stopPropagation();\n let href;\n let tagName;\n let target = e.target;\n do {\n tagName = target.tagName.toUpperCase();\n href = target.getAttribute('href');\n target = target.parentNode;\n } while (!href && tagName !== 'TD');\n if (!href) {\n return;\n }\n\n this.$ds\n .resolve('BUILD_RESULT', {\n params: {\n build_id: href,\n },\n })\n .then(res => {\n this.setState({\n resultVisible: true,\n });\n })\n .catch(err => {\n this.$utils.message.error(`打包结果获取失败: ${err.message}`);\n });\n }", }, handleDetail: { type: 'JSFunction', value: 'function() {\n // 跳转详情页面 TODO\n }', }, onResultCancel: { type: 'JSFunction', value: 'function() {\n this.setState({\n resultVisible: false,\n });\n }', }, formatResult: { type: 'JSFunction', value: "function(item) {\n if (!item) {\n return '暂无结果';\n }\n const { channel, plat, version, status } = item;\n return [channel, plat, version, status].join('-');\n }", }, handleDownload: { type: 'JSFunction', value: "function() {\n const { results } = this.state;\n if (!results || results.length < 1) {\n return;\n }\n let link = document.createElement('a');\n link.style.display = 'none';\n document.body.appendChild(link);\n results.forEach(r => {\n link.href = r.download_link;\n link.click();\n });\n document.body.removeChild(link);\n link = null;\n }", }, onFinish: { type: 'JSFunction', value: 'function(f) {\n const params = Object.keys(f).reduce((pre, key) => {\n const value = f[key];\n if (value === undefined) {\n return pre;\n }\n return {\n ...pre,\n [key]: value,\n };\n }, {});\n this.searchParams = params;\n this.fetchPkgs();\n }', }, }, state: { pkgs: [], total: 0, isSearch: false, projects: [], results: [], resultVisible: false, userOptions: [], searchValues: { user_id: '', channel_id: '', }, }, children: [ { componentName: 'Modal', id: 'node_ocksh9yppxb', props: { title: '查看结果', visible: { type: 'JSExpression', value: 'this.state.resultVisible', }, footer: { type: 'JSSlot', value: [ { componentName: 'Button', id: 'node_ocksh9yppxf', props: { type: 'primary', children: '确定', __events: { eventDataList: [ { type: 'componentEvent', name: 'onClick', relatedEventName: 'onResultCancel', }, ], eventList: [ { name: 'onClick', disabled: true, }, ], }, onClick: { type: 'JSFunction', value: 'function(){this.onResultCancel.apply(this,Array.prototype.slice.call(arguments).concat([])) }', }, }, }, ], }, __events: { eventDataList: [ { type: 'componentEvent', name: 'onCancel', relatedEventName: 'onResultCancel', }, ], eventList: [ { name: 'onCancel', disabled: true, }, { name: 'onOk', disabled: false, }, ], }, onCancel: { type: 'JSFunction', value: 'function(){this.onResultCancel.apply(this,Array.prototype.slice.call(arguments).concat([])) }', }, width: '720px', centered: true, closable: true, keyboard: true, mask: true, maskClosable: true, }, hidden: true, children: [ { componentName: 'AliAutoDivDefault', id: 'node_ockshazuxa4', props: { style: { width: '100%', }, }, children: [ { componentName: 'AliAutoDivDefault', id: 'node_ockshazuxai', props: { style: { width: '100%', textAlign: 'left', marginBottom: '16px', }, }, condition: { type: 'JSExpression', value: 'this.state.results && this.state.results.length > 0', }, children: [ { componentName: 'Button', id: 'node_ockshazuxah', props: { type: 'primary', children: '下载全部', size: 'small', __events: { eventDataList: [ { type: 'componentEvent', name: 'onClick', relatedEventName: 'handleDownload', }, ], eventList: [ { name: 'onClick', disabled: true, }, ], }, onClick: { type: 'JSFunction', value: 'function(){this.handleDownload.apply(this,Array.prototype.slice.call(arguments).concat([])) }', }, }, }, ], }, { componentName: 'AliAutoDivDefault', id: 'node_ockt2muyfi4', props: { style: { width: '100%', marginTop: '10px', }, }, loop: { type: 'JSExpression', value: 'this.state.results', }, children: [ { componentName: 'Typography.Text', id: 'node_ockshazuxa5', props: { children: { type: 'JSExpression', value: 'this.formatResult(this.item)', }, }, }, { componentName: 'Typography.Link', id: 'node_ockshazuxa6', props: { href: { type: 'JSExpression', value: 'this.item.download_link', }, target: '_blank', children: ' - 点击下载', }, condition: { type: 'JSExpression', value: 'this.item.download_link', }, }, { componentName: 'Typography.Link', id: 'node_ockshazuxa7', props: { href: { type: 'JSExpression', value: 'this.item.release_notes', }, target: '_blank', children: ' - 跳转发布节点', }, condition: { type: 'JSExpression', value: 'this.item.release_notes', }, }, ], }, ], }, ], }, { componentName: 'NextPage', id: 'node_ocko19zplh1', props: { columns: 12, headerDivider: true, placeholderStyle: { gridRowEnd: 'span 1', gridColumnEnd: 'span 12', }, placeholder: '页面主体内容:拖拽Block布局组件到这里', header: { type: 'JSSlot', title: 'header', }, headerProps: { background: 'surface', style: { padding: '', }, }, footer: { type: 'JSSlot', title: 'footer', }, minHeight: '100vh', contentProps: { noPadding: false, background: 'transparent', }, }, title: '页面', children: [ { componentName: 'NextBlock', id: 'node_ockt3t4q8565', props: { childTotalColumns: 12, }, title: '区块', children: [ { componentName: 'NextBlockCell', id: 'node_ockt3t4q8566', props: { isAutoContainer: true, colSpan: 12, rowSpan: 1, }, title: '子区块', children: [ { componentName: 'NextP', id: 'node_ockt3t4q8567', props: { wrap: false, type: 'body2', verAlign: 'middle', textSpacing: true, align: 'left', flex: true, }, title: '段落', children: [ { componentName: 'AliAutoDivDefault', id: 'node_ockt3t4q8568', props: { style: { width: '100%', display: 'flex', }, }, children: [ { componentName: 'AliAutoDivDefault', id: 'node_ockt3t4q857a', props: { style: { flex: '1', }, }, children: [ { componentName: 'Form', id: 'node_ocks8dtt1mt', props: { labelCol: { span: 10, }, wrapperCol: { span: 14, }, onFinish: { type: 'JSFunction', value: 'function(){this.onFinish.apply(this,Array.prototype.slice.call(arguments).concat([])) }', }, name: 'basic', layout: 'inline', __events: { eventDataList: [ { type: 'componentEvent', name: 'onFinish', relatedEventName: 'onFinish', }, ], eventList: [ { name: 'onFinish', disabled: true, }, { name: 'onFinishFailed', disabled: false, }, { name: 'onFieldsChange', disabled: false, }, { name: 'onValuesChange', disabled: false, }, ], }, colon: true, labelAlign: 'right', preserve: true, scrollToFirstError: true, size: 'middle', values: { type: 'JSExpression', value: 'this.state.searchValues', }, }, children: [ { componentName: 'Form.Item', id: 'node_ocks8dtt1mz', props: { label: '项目名称/渠道号', name: 'channel_id', labelAlign: 'right', colon: true, }, children: [ { componentName: 'Select', id: 'node_ocksfuhwhsd', props: { style: { width: '320px', }, options: { type: 'JSExpression', value: 'this.state.projects', }, showArrow: false, tokenSeparators: [], showSearch: true, defaultActiveFirstOption: true, size: 'middle', bordered: true, filterOption: true, optionFilterProp: 'label', allowClear: true, placeholder: '请输入项目名称/渠道号', __events: { eventDataList: [ { type: 'componentEvent', name: 'onChange', relatedEventName: 'handleProjectChange', }, { type: 'componentEvent', name: 'onSearch', relatedEventName: 'handleProjectSearch', }, ], eventList: [ { name: 'onBlur', disabled: false, }, { name: 'onChange', disabled: true, }, { name: 'onDeselect', disabled: false, }, { name: 'onFocus', disabled: false, }, { name: 'onInputKeyDown', disabled: false, }, { name: 'onMouseEnter', disabled: false, }, { name: 'onMouseLeave', disabled: false, }, { name: 'onPopupScroll', disabled: false, }, { name: 'onSearch', disabled: true, }, { name: 'onSelect', disabled: false, }, { name: 'onDropdownVisibleChange', disabled: false, }, ], }, onChange: { type: 'JSFunction', value: 'function(){this.handleProjectChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }', }, onSearch: { type: 'JSFunction', value: 'function(){this.handleProjectSearch.apply(this,Array.prototype.slice.call(arguments).concat([])) }', }, }, }, ], }, { componentName: 'Form.Item', id: 'node_ocks8dtt1m12', props: { label: '版本号', name: 'buildId', }, children: [ { componentName: 'Input', id: 'node_ocksfuhwhs3', props: { placeholder: '请输入版本号', style: { width: '180px', }, size: 'middle', bordered: true, }, }, ], }, { componentName: 'Form.Item', id: 'node_ocks8dtt1m18', props: { label: '构建人', name: 'user_id', }, children: [ { componentName: 'Select', id: 'node_ocksfuhwhsi', props: { style: { width: '210px', }, options: { type: 'JSExpression', value: 'this.state.userOptions', }, showSearch: true, defaultActiveFirstOption: false, size: 'middle', bordered: true, filterOption: true, optionFilterProp: 'label', notFoundContent: { type: 'JSExpression', value: 'this.userNotFoundContent', }, showArrow: false, placeholder: '请输入构建人', __events: { eventDataList: [ { type: 'componentEvent', name: 'onChange', relatedEventName: 'handleUserChange', }, { type: 'componentEvent', name: 'onSearch', relatedEventName: 'handleUserSearch', }, ], eventList: [ { name: 'onBlur', disabled: false, }, { name: 'onChange', disabled: true, }, { name: 'onDeselect', disabled: false, }, { name: 'onFocus', disabled: false, }, { name: 'onInputKeyDown', disabled: false, }, { name: 'onMouseEnter', disabled: false, }, { name: 'onMouseLeave', disabled: false, }, { name: 'onPopupScroll', disabled: false, }, { name: 'onSearch', disabled: true, }, { name: 'onSelect', disabled: false, }, { name: 'onDropdownVisibleChange', disabled: false, }, ], }, onChange: { type: 'JSFunction', value: 'function(){this.handleUserChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }', }, onSearch: { type: 'JSFunction', value: 'function(){this.handleUserSearch.apply(this,Array.prototype.slice.call(arguments).concat([])) }', }, allowClear: true, }, }, ], }, { componentName: 'Form.Item', id: 'node_ocks8dtt1m19', props: { label: 'ID', name: 'id', labelAlign: 'right', colon: true, }, children: [ { componentName: 'Input', id: 'node_ocksfuhwhs8', props: { placeholder: '请输入ID', style: { width: '180px', }, bordered: true, size: 'middle', }, }, ], }, { componentName: 'Form.Item', id: 'node_ocks8dtt1mw', props: { wrapperCol: { offset: 6, }, labelAlign: 'right', colon: true, style: { flex: '1', textAlign: 'right', }, }, children: [ { componentName: 'Button', id: 'node_ocks8dtt1mx', props: { type: 'primary', children: '查询', htmlType: 'submit', shape: 'default', size: 'middle', }, }, ], }, ], }, ], }, { componentName: 'AliAutoDivDefault', id: 'node_ockt3t4q856b', props: { style: {}, }, children: [ { componentName: 'Button', id: 'node_ockt3t4q85y', props: { type: 'link', children: '新增打包', htmlType: 'button', shape: 'default', size: 'middle', }, condition: true, }, ], }, ], }, ], }, ], }, ], }, { componentName: 'NextBlock', id: 'node_ockshc4ifn1b', props: { childTotalColumns: 12, mode: 'inset', layoutmode: 'O', autolayout: '(12|1)', }, title: '区块', children: [ { componentName: 'NextBlockCell', id: 'node_ockshc4ifn1c', props: { isAutoContainer: true, colSpan: 12, rowSpan: 1, }, title: '子区块', children: [ { componentName: 'NextP', id: 'node_ockshc4ifn1d', props: { wrap: false, type: 'body2', verAlign: 'middle', textSpacing: true, align: 'left', flex: true, }, title: '段落', children: [ { componentName: 'AliAutoSearchTableDefault', id: 'node_ocksfuhwhsx', props: { rowKey: 'key', dataSource: { type: 'JSExpression', value: 'this.state.pkgs', }, columns: [ { title: 'ID', dataIndex: 'id', key: 'name', width: 80, }, { title: '渠道号', dataIndex: 'channels', key: 'age', width: 142, render: { type: 'JSSlot', params: ['text', 'record', 'index'], value: [ { componentName: 'Typography.Text', id: 'node_ocksh2bq0428', props: { children: { type: 'JSExpression', value: 'this.item', }, style: { display: 'block', }, }, loop: { type: 'JSExpression', value: "this.text.split(',')", }, }, ], }, }, { title: '版本号', dataIndex: 'dic_version', key: 'address', render: { type: 'JSSlot', params: ['text', 'record', 'index'], value: [ { componentName: 'Tooltip', id: 'node_ocksts0jqgj', props: { title: { type: 'JSSlot', value: [ { componentName: 'Typography.Text', id: 'node_ocksts0jqgn', props: { children: { type: 'JSExpression', value: "this.item. channelId + ' / ' + this.item.version", }, style: { display: 'block', color: '#FFFFFF', }, }, loop: { type: 'JSExpression', value: 'this.text || []', }, }, ], }, }, children: [ { componentName: 'Typography.Text', id: 'node_ocksts0jqgm', props: { children: { type: 'JSExpression', value: 'this.text[0].version', }, }, }, ], }, ], }, width: 120, }, { title: '构建Job', dataIndex: 'job_name', width: 180, }, { title: '构建类型', dataIndex: 'packaging_type', width: 94, }, { title: '构建状态', dataIndex: 'status', render: { type: 'JSSlot', params: ['text', 'record', 'index'], value: [ { componentName: 'Typography.Text', id: 'node_ocksh3jkxzw', props: { children: { type: 'JSExpression', value: 'this.statusDesc[this.text]', }, }, }, { componentName: 'Icon', id: 'node_ocksh3jkxzx', props: { type: 'SyncOutlined', size: 16, spin: true, style: { marginLeft: '10px', }, }, condition: { type: 'JSExpression', value: 'this.text === 2', }, }, ], }, width: 100, }, { title: '构建时间', dataIndex: 'start_time', render: { type: 'JSFunction', value: 'function(){ return this.renderTime.apply(this,Array.prototype.slice.call(arguments).concat([])) }', }, width: 148, }, { title: '构建人', dataIndex: 'user', render: { type: 'JSFunction', value: 'function(){ return this.renderUserName.apply(this,Array.prototype.slice.call(arguments).concat([])) }', }, width: 80, }, { title: 'Jenkins 链接', dataIndex: 'jenkins_link', render: { type: 'JSSlot', params: ['text', 'record', 'index'], value: [ { componentName: 'Typography.Link', id: 'node_ocksh64kbx21', props: { href: { type: 'JSExpression', value: 'this.text', }, target: '_blank', children: '查看', }, condition: { type: 'JSExpression', value: 'this.text', }, }, { componentName: 'Typography.Text', id: 'node_ocksh64kbx22', props: { children: '暂无', }, condition: { type: 'JSExpression', value: '!this.text', }, }, ], }, width: 120, }, { title: '测试平台链接', dataIndex: 'is_run_testing', width: 120, render: { type: 'JSSlot', params: ['text', 'record', 'index'], value: [ { componentName: 'Typography.Link', id: 'node_ocksh3jkxz3e', props: { href: 'http://rivermap.alibaba.net/dashboard/testExecute', target: '_blank', children: '查看', }, condition: { type: 'JSExpression', value: 'this.text', }, }, { componentName: 'Typography.Text', id: 'node_ocksh3jkxz3f', props: { children: '暂无', }, condition: { type: 'JSExpression', value: '!this.text', }, }, ], }, }, { title: '触发源', dataIndex: 'source', width: 120, }, { title: '详情', dataIndex: 'id', render: { type: 'JSSlot', params: ['text', 'record', 'index'], value: [ { componentName: 'Button', id: 'node_ocksh8yryw7', props: { type: 'link', children: '查看', size: 'small', style: { padding: '0px', }, __events: { eventDataList: [ { type: 'componentEvent', name: 'onClick', relatedEventName: 'handleDetail', }, ], eventList: [ { name: 'onClick', disabled: true, }, ], }, onClick: { type: 'JSFunction', value: 'function(){this.handleDetail.apply(this,Array.prototype.slice.call(arguments).concat([])) }', }, }, }, ], }, width: 80, fixed: 'right', }, { title: '结果', dataIndex: 'id', render: { type: 'JSSlot', params: ['text', 'record', 'index'], value: [ { componentName: 'Button', id: 'node_ocksh9v6jw7', props: { type: 'link', children: '查看', size: 'small', style: { padding: '0px', }, __events: { eventDataList: [ { type: 'componentEvent', name: 'onClick', relatedEventName: 'handleResult', paramStr: 'this.text', }, ], eventList: [ { name: 'onClick', disabled: true, }, ], }, onClick: { type: 'JSFunction', value: 'function(){this.handleResult.apply(this,Array.prototype.slice.call(arguments).concat([])) }', }, ghost: false, href: { type: 'JSExpression', value: 'this.text', }, }, }, ], }, width: 80, fixed: 'right', }, { title: '重新执行', dataIndex: 'id', width: 92, render: { type: 'JSSlot', params: ['text', 'record', 'index'], value: [ { componentName: 'Button', id: 'node_ocksh96rad1g', props: { type: 'text', children: '', icon: { type: 'JSSlot', value: [ { componentName: 'Icon', id: 'node_ocksh96rad1j', props: { type: 'ReloadOutlined', size: 14, color: '#0593d3', style: { padding: '3px', border: '1px solid #0593d3', borderRadius: '14px', cursor: 'pointer', height: '22px', }, spin: false, }, }, ], }, shape: 'circle', __events: { eventDataList: [ { type: 'componentEvent', name: 'onClick', relatedEventName: 'reload', }, ], eventList: [ { name: 'onClick', disabled: true, }, ], }, onClick: { type: 'JSFunction', value: 'function(){this.reload.apply(this,Array.prototype.slice.call(arguments).concat([])) }', }, }, }, ], }, fixed: 'right', }, ], actions: [], pagination: { total: { type: 'JSExpression', value: 'this.state.total', }, defaultPageSize: 10, onPageChange: { type: 'JSFunction', value: 'function(){ return this.onPageChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }', }, defaultPageIndex: 1, }, scrollX: 1200, isPagination: true, }, condition: { type: 'JSExpression', value: '!this.state.isSearch || (this.state.isSearch && this.state.pkgs.length > 0)', }, }, ], }, ], }, ], }, { componentName: 'NextBlock', id: 'node_ocksk6f8fa3b', props: { childTotalColumns: 12, mode: 'inset', layoutmode: 'O', autolayout: '(12|1)', }, title: '区块', children: [ { componentName: 'NextBlockCell', id: 'node_ocksk6f8fa3c', props: { isAutoContainer: true, colSpan: 12, rowSpan: 1, }, title: '子区块', children: [ { componentName: 'NextP', id: 'node_ocksk6f8fa3d', props: { wrap: false, type: 'body2', verAlign: 'middle', textSpacing: true, align: 'left', flex: true, }, title: '段落', children: [ { componentName: 'Empty', id: 'node_ocksk6f8fa3e', props: { description: '暂无数据', }, condition: { type: 'JSExpression', value: 'this.state.pkgs.length < 1 && this.state.isSearch', }, }, ], }, ], }, ], }, ], }, ], }, ], i18n: {}, }