当前位置: 首页 > news >正文

网站目标人群企业网站推广技巧

网站目标人群,企业网站推广技巧,帮别人推广赚钱,js做的网站最近接到一个需求是需要在前端进行工作流流程图的设计,上网找了一圈轮子,最终还是选择了GG-editor,原因是这个界面看起来相对比较简洁,我也没什么专业编辑的需求。GG-editor是用蚂蚁金服的g6可视化引擎做的,而19年g6升…

最近接到一个需求是需要在前端进行工作流流程图的设计,上网找了一圈轮子,最终还是选择了GG-editor,原因是这个界面看起来相对比较简洁,我也没什么专业编辑的需求。GG-editor是用蚂蚁金服的g6可视化引擎做的,而19年g6升级到了3.x版本,于是GG-editor的作者高力也把GG-editor重构升级到了3.x版本,但是由于3.x在本文写作时仍在重构阶段,文档残缺,所以我在使用了一段时间的新版本后仍然选择了2.0.4版本,之后若是升级我会再更一篇。

在使用3.x版本的时候我遇到了两个坑,一是undo命令会有bug,在2.0.4版本中,undo命令可以撤销位置移动操作,而在3.x版本中就不行了,在github上有issue但是作者并没有响应。二是如何保存流程图,在2.0.4版本中通过调用propsAPI.save()函数来实现(下面会贴代码),但是3.x版本中没有给出示例,我尝试在源码中全局搜索save函数结果没有搜到哈哈,不过我看最近作者在github的issue中回应说新版本需要用withEditorContext,和withPropsAPI用法一样 ,我没有具体尝试,之后若是升级会试一下。下面是在2.0.4版本中的保存示例,我自己加了一个弹窗确认:

import React from 'react';
import { connect } from 'dva';
import { Button, Modal, Form, Input, Icon } from 'antd';
import { withPropsAPI } from 'gg-editor';
import styles from './index.less'const CollectionCreateForm = Form.create({ name: 'save_template' })(// eslint-disable-next-lineclass extends React.Component {render() {const { visible, onCancel, onSubmit, form, isSubmitting } = this.props;const { getFieldDecorator } = form;return (<Modalvisible={visible}title="模板保存"okText="提交"onCancel={onCancel}confirmLoading={isSubmitting}onOk={onSubmit}><Form layout="vertical"><Form.Item label="模板名称">{getFieldDecorator('name', {rules: [{ required: true, message: '请输入模板名称!' }],})(<Input />)}</Form.Item><Form.Item label="描述">{getFieldDecorator('description')(<Input type="textarea" />)}</Form.Item></Form></Modal>);}},
);@connect(({ workflow, loading }) => ({workflow,isSubmitting: loading.effects['workflow/submitWorkflowTemplate'],
}))
class Save extends React.Component {constructor(props) {super(props);this.state = {modalVisible: false,};}showModal = () => {this.setState({ modalVisible: true });};handleCancel = () => {this.setState({ modalVisible: false });};saveFormRef = formRef => {this.formRef = formRef;};handleSubmit = e => {const { form } = this.formRef.props;const { dispatch } = this.props;form.validateFields((err, values) => {if (err) {return;}const { propsAPI } = this.props;const data = propsAPI.save();//将数据传换为接口所需参数let taskList = [];if (data.hasOwnProperty('edges')) {const edges = data.edges;for (let i in edges) {taskList.push({'task_id': edges[i].id,'upstream': edges[i].source,});}}const params = {name: values.name,description: values.description,task: taskList,};//上传成功后清空表单关闭弹窗dispatch({type: 'workflow/submitWorkflowTemplate',payload: params,}).then(res => {if (res && res.success) {form.resetFields();this.setState({ modalVisible: false });}});});};render() {const { isSubmitting = false } = this.props;return (<div className={styles.actionGroup}><div style={{ padding: 8 }}><Button onClick={this.showModal}><Icon type="save" />保存</Button></div><CollectionCreateFormwrappedComponentRef={this.saveFormRef}visible={this.state.modalVisible}onCancel={this.handleCancel}onSubmit={this.handleSubmit}isSubmitting={isSubmitting}/></div>);}
}export default withPropsAPI(Save);

关键代码其实就两处,一是组件要外包withPropsAPI(3.x版本要换成withEditorContext),二是从props中获取propsAPI,然后调用propsAPI.save()函数;

还有一个非常常见的需求就是将左侧拖拽区改造成树状结构,我看网上有不少人问,这里我贴一下我的解决方案。我去翻了一下antd的文档,发现树节点的标题是接受组件传入的:

a19f8b2b4613643b699b696226ccc707.png

所以我就进行了如下尝试,一试居然成功了:

import React from 'react';
import { Tree, Icon } from 'antd';
import { ItemPanel, Item } from 'gg-editor';
import styles from './index.less';const { TreeNode } = Tree;const FlowItemPanel = () => {const onSelect = (keys, event) => {console.log('Trigger Select', keys, event);};const onExpand = () => {console.log('Trigger Expand');};return (<ItemPanel className={styles.itemPanel}><div style={{ padding: '0 12px' }}><TreedefaultExpandAllonSelect={onSelect}onExpand={onExpand}showIcon><TreeNode title="模型节点" key="0-0"><TreeNode title={<Itemtype="node"size="184*40"shape="customModelNode"model={{label: '船舶检测模型',color_type: '#1890FF',type_icon_url: 'https://gw.alipayobjects.com/zos/rmsportal/czNEJAmyDpclFaSucYWB.svg',status: 'running',}}// src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODgiIGhlaWdodD0iNTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxyZWN0IGlkPSJiIiB4PSIwIiB5PSIwIiB3aWR0aD0iODAiIGhlaWdodD0iNDgiIHJ4PSIyNCIvPjxmaWx0ZXIgeD0iLTguOCUiIHk9Ii0xMC40JSIgd2lkdGg9IjExNy41JSIgaGVpZ2h0PSIxMjkuMiUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImEiPjxmZU9mZnNldCBkeT0iMiIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSIvPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjIiIGluPSJzaGFkb3dPZmZzZXRPdXRlcjEiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSIvPjxmZUNvbXBvc2l0ZSBpbj0ic2hhZG93Qmx1ck91dGVyMSIgaW4yPSJTb3VyY2VBbHBoYSIgb3BlcmF0b3I9Im91dCIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIi8+PGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwLjA0IDAiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIi8+PC9maWx0ZXI+PC9kZWZzPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNCAyKSI+PHVzZSBmaWxsPSIjMDAwIiBmaWx0ZXI9InVybCgjYSkiIHhsaW5rOmhyZWY9IiNiIi8+PHVzZSBmaWxsLW9wYWNpdHk9Ii45MiIgZmlsbD0iI0Y5RjBGRiIgeGxpbms6aHJlZj0iI2IiLz48cmVjdCBzdHJva2U9IiNCMzdGRUIiIHg9Ii41IiB5PSIuNSIgd2lkdGg9Ijc5IiBoZWlnaHQ9IjQ3IiByeD0iMjMuNSIvPjwvZz48dGV4dCBmb250LWZhbWlseT0iUGluZ0ZhbmdTQy1SZWd1bGFyLCBQaW5nRmFuZyBTQyIgZm9udC1zaXplPSIxMiIgZmlsbD0iIzAwMCIgZmlsbC1vcGFjaXR5PSIuNjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQgMikiPjx0c3BhbiB4PSIyNCIgeT0iMjkiPk1vZGVsPC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg=="><span className="panel-type-icon" />船舶检测模型</Item>} key="0-0-1" isLeaf /><TreeNode title={<Itemtype="node"size="184*40"shape="customModelNode"model={{label: '场景识别模型',color_type: '#1890FF',type_icon_url: 'https://gw.alipayobjects.com/zos/rmsportal/czNEJAmyDpclFaSucYWB.svg',status: 'running',}}// src="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODgiIGhlaWdodD0iNTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxyZWN0IGlkPSJiIiB4PSIwIiB5PSIwIiB3aWR0aD0iODAiIGhlaWdodD0iNDgiIHJ4PSIyNCIvPjxmaWx0ZXIgeD0iLTguOCUiIHk9Ii0xMC40JSIgd2lkdGg9IjExNy41JSIgaGVpZ2h0PSIxMjkuMiUiIGZpbHRlclVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgaWQ9ImEiPjxmZU9mZnNldCBkeT0iMiIgaW49IlNvdXJjZUFscGhhIiByZXN1bHQ9InNoYWRvd09mZnNldE91dGVyMSIvPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjIiIGluPSJzaGFkb3dPZmZzZXRPdXRlcjEiIHJlc3VsdD0ic2hhZG93Qmx1ck91dGVyMSIvPjxmZUNvbXBvc2l0ZSBpbj0ic2hhZG93Qmx1ck91dGVyMSIgaW4yPSJTb3VyY2VBbHBoYSIgb3BlcmF0b3I9Im91dCIgcmVzdWx0PSJzaGFkb3dCbHVyT3V0ZXIxIi8+PGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwLjA0IDAiIGluPSJzaGFkb3dCbHVyT3V0ZXIxIi8+PC9maWx0ZXI+PC9kZWZzPjxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNCAyKSI+PHVzZSBmaWxsPSIjMDAwIiBmaWx0ZXI9InVybCgjYSkiIHhsaW5rOmhyZWY9IiNiIi8+PHVzZSBmaWxsLW9wYWNpdHk9Ii45MiIgZmlsbD0iI0Y5RjBGRiIgeGxpbms6aHJlZj0iI2IiLz48cmVjdCBzdHJva2U9IiNCMzdGRUIiIHg9Ii41IiB5PSIuNSIgd2lkdGg9Ijc5IiBoZWlnaHQ9IjQ3IiByeD0iMjMuNSIvPjwvZz48dGV4dCBmb250LWZhbWlseT0iUGluZ0ZhbmdTQy1SZWd1bGFyLCBQaW5nRmFuZyBTQyIgZm9udC1zaXplPSIxMiIgZmlsbD0iIzAwMCIgZmlsbC1vcGFjaXR5PSIuNjUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQgMikiPjx0c3BhbiB4PSIyNCIgeT0iMjkiPk1vZGVsPC90c3Bhbj48L3RleHQ+PC9nPjwvc3ZnPg=="><span className="panel-type-icon" />场景识别模型</Item>} key="0-0-2" isLeaf /></TreeNode></Tree></div></ItemPanel>);
};export default FlowItemPanel;

当然这里的Item是我自己自定义的,直接复制粘贴怕是用不了。

待续

http://www.lbrq.cn/news/2446057.html

相关文章:

  • 免费b2b网站大全黄页88恶意点击软件有哪些
  • SFDA的网站建设网站优化排名方法
  • 南充市房产信息网官网seo怎么做推广
  • 有哪些网站可以免费看电影河南自助建站seo公司
  • 天元建设集团有限公司青岛迈步者seo
  • 网站建设招标公告网页制作代码html制作一个网页
  • 搜索不到我的网站搜索引擎的设计与实现
  • 深圳市住房和建设局领导班子广州seo公司如何
  • 做网站被骗首付款怎么报案全网营销国际系统
  • 网站建设书籍目录百度app客服人工电话
  • 日本做鸡做爱成人网站播放微信crm客户管理系统
  • 深圳css3网站开发多少钱小红书怎么推广引流
  • 一个可以做网站百度seo排名优化公司哪家好
  • 福州seo计费seo是什么东西
  • 金融网站源码最新军事消息
  • 网站建设教程开源代码下载七台河网站seo
  • photoshop 做网站怎么上百度搜索
  • 向公司申请请做网站网络营销推广策划
  • 网站建设销售招聘搜索引擎优化结果
  • 那些做app网站的怎么寻找客户的网站客服系统
  • 成都装修网站建设多少钱中国网站建设公司
  • 做暧暧网站在线观看网络营销模式有哪些类型
  • 有学给宝宝做衣服的网站吗互联网论坛
  • t型布局网站的优缺点永久免费域名申请
  • php网站开发具体的参考文献本地推广最有效的方法
  • 钟表企业网站管理系统最好的bt种子搜索引擎
  • 做图解的网站什么是seo教程
  • php网站忘记后台密码seo网站推广教程
  • 网站活跃度怎么做品牌网络营销成功案例
  • 哪些网站可以做兼职靠谱的李勇seo的博客
  • 暑期算法训练.9
  • PCIe 的L状态(链路状态)和D状态(设备状态)
  • 【ELasticsearch】节点角色分类与作用解析
  • Zero-Shot TrackingT0:对象分割+运动感知记——当“切万物”武士学会运动记忆,目标跟踪稳如老狗
  • 【vue vapor jsx 未雨绸缪】
  • 【数据结构】长幼有序:树、二叉树、堆与TOP-K问题的层次解析(含源码)