Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Skyeye云
Skyeye
提交
d7c0c94b
S
Skyeye
项目概览
Skyeye云
/
Skyeye
通知
1437
Star
162
Fork
130
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Skyeye
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
d7c0c94b
编写于
12月 10, 2018
作者:
Skyeye云
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
工作流汉化,流程设计完成
上级
58967b2d
变更
21
展开全部
隐藏空白更改
内联
并排
Showing
21 changed file
with
7906 addition
and
1629 deletion
+7906
-1629
images/upload/userphoto/1544428713964.jpg
images/upload/userphoto/1544428713964.jpg
+0
-0
logs/skyeye.log
logs/skyeye.log
+5238
-0
logs/skyeye_error.log
logs/skyeye_error.log
+402
-0
skyeye-promote/src/main/java/com/skyeye/activiti/controller/ActivitiModelController.java
...m/skyeye/activiti/controller/ActivitiModelController.java
+114
-0
skyeye-promote/src/main/java/com/skyeye/activiti/service/ActivitiModelService.java
...ava/com/skyeye/activiti/service/ActivitiModelService.java
+20
-0
skyeye-promote/src/main/java/com/skyeye/activiti/service/impl/ActivitiModelServiceImpl.java
...kyeye/activiti/service/impl/ActivitiModelServiceImpl.java
+203
-0
skyeye-promote/src/main/java/com/skyeye/common/constans/Constants.java
...e/src/main/java/com/skyeye/common/constans/Constants.java
+2
-1
skyeye-promote/src/main/java/com/skyeye/common/filter/SessionFilter.java
...src/main/java/com/skyeye/common/filter/SessionFilter.java
+7
-0
skyeye-promote/src/main/java/com/skyeye/common/util/ToolUtil.java
...romote/src/main/java/com/skyeye/common/util/ToolUtil.java
+25
-0
skyeye-promote/src/main/java/com/skyeye/db/config/ActitytiDataSourceConfig.java
...n/java/com/skyeye/db/config/ActitytiDataSourceConfig.java
+0
-7
skyeye-promote/src/main/resources/mapping/reqmapping.xml
skyeye-promote/src/main/resources/mapping/reqmapping.xml
+19
-0
skyeye-promote/src/main/resources/static/editor-app/css/style-common.css
...src/main/resources/static/editor-app/css/style-common.css
+2
-2
skyeye-promote/src/main/resources/static/editor-app/css/style.css
...romote/src/main/resources/static/editor-app/css/style.css
+6
-7
skyeye-promote/src/main/resources/static/editor-app/editor.html
...-promote/src/main/resources/static/editor-app/editor.html
+5
-5
skyeye-promote/src/main/resources/static/editor-app/i18n/en.json
...promote/src/main/resources/static/editor-app/i18n/en.json
+276
-281
skyeye-promote/src/main/resources/static/modeler.html
skyeye-promote/src/main/resources/static/modeler.html
+2
-2
skyeye-promote/src/main/resources/static/toolUtil.txt
skyeye-promote/src/main/resources/static/toolUtil.txt
+1
-1
skyeye-promote/src/main/resources/stencilset.json
skyeye-promote/src/main/resources/stencilset.json
+1323
-1323
skyeye-promote/src/main/resources/template/assets/lib/layui/layui.js
...ote/src/main/resources/template/assets/lib/layui/layui.js
+100
-0
skyeye-promote/src/main/resources/template/js/activitimodel/activitimodellist.js
.../resources/template/js/activitimodel/activitimodellist.js
+125
-0
skyeye-promote/src/main/resources/template/tpl/activitimodel/activitimodellist.html
...sources/template/tpl/activitimodel/activitimodellist.html
+36
-0
未找到文件。
images/upload/userphoto/1544428713964.jpg
0 → 100644
浏览文件 @
d7c0c94b
582.2 KB
logs/skyeye.log
浏览文件 @
d7c0c94b
此差异已折叠。
点击以展开。
logs/skyeye_error.log
浏览文件 @
d7c0c94b
此差异已折叠。
点击以展开。
skyeye-promote/src/main/java/com/skyeye/activiti/controller/ActivitiModelController.java
0 → 100644
浏览文件 @
d7c0c94b
package
com.skyeye.activiti.controller
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
com.skyeye.activiti.service.ActivitiModelService
;
import
com.skyeye.common.object.InputObject
;
import
com.skyeye.common.object.OutputObject
;
@Controller
public
class
ActivitiModelController
{
@Autowired
private
ActivitiModelService
activitiModelService
;
/**
*
* @Title: insertNewActivitiModel
* @Description: 新建一个空模型
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@RequestMapping
(
"/post/ActivitiModelController/insertNewActivitiModel"
)
@ResponseBody
public
void
insertNewActivitiModel
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
{
activitiModelService
.
insertNewActivitiModel
(
inputObject
,
outputObject
);
}
/**
*
* @Title: queryActivitiModelList
* @Description: 获取所有模型
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@RequestMapping
(
"/post/ActivitiModelController/queryActivitiModelList"
)
@ResponseBody
public
void
queryActivitiModelList
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
{
activitiModelService
.
queryActivitiModelList
(
inputObject
,
outputObject
);
}
/**
*
* @Title: editActivitiModelToDeploy
* @Description: 发布模型为流程定义
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@RequestMapping
(
"/post/ActivitiModelController/editActivitiModelToDeploy"
)
@ResponseBody
public
void
editActivitiModelToDeploy
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
{
activitiModelService
.
editActivitiModelToDeploy
(
inputObject
,
outputObject
);
}
/**
*
* @Title: editActivitiModelToStartProcess
* @Description: 启动流程
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@RequestMapping
(
"/post/ActivitiModelController/editActivitiModelToStartProcess"
)
@ResponseBody
public
void
editActivitiModelToStartProcess
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
{
activitiModelService
.
editActivitiModelToStartProcess
(
inputObject
,
outputObject
);
}
/**
*
* @Title: editActivitiModelToRun
* @Description: 提交任务
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@RequestMapping
(
"/post/ActivitiModelController/editActivitiModelToRun"
)
@ResponseBody
public
void
editActivitiModelToRun
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
{
activitiModelService
.
editActivitiModelToRun
(
inputObject
,
outputObject
);
}
/**
*
* @Title: deleteActivitiModelById
* @Description: 删除模型
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@RequestMapping
(
"/post/ActivitiModelController/deleteActivitiModelById"
)
@ResponseBody
public
void
deleteActivitiModelById
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
{
activitiModelService
.
deleteActivitiModelById
(
inputObject
,
outputObject
);
}
}
skyeye-promote/src/main/java/com/skyeye/activiti/service/ActivitiModelService.java
0 → 100644
浏览文件 @
d7c0c94b
package
com.skyeye.activiti.service
;
import
com.skyeye.common.object.InputObject
;
import
com.skyeye.common.object.OutputObject
;
public
interface
ActivitiModelService
{
public
void
insertNewActivitiModel
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
;
public
void
queryActivitiModelList
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
;
public
void
editActivitiModelToDeploy
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
;
public
void
editActivitiModelToStartProcess
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
;
public
void
editActivitiModelToRun
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
;
public
void
deleteActivitiModelById
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
;
}
skyeye-promote/src/main/java/com/skyeye/activiti/service/impl/ActivitiModelServiceImpl.java
0 → 100644
浏览文件 @
d7c0c94b
package
com.skyeye.activiti.service.impl
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
org.activiti.bpmn.converter.BpmnXMLConverter
;
import
org.activiti.bpmn.model.BpmnModel
;
import
org.activiti.editor.constants.ModelDataJsonConstants
;
import
org.activiti.editor.language.json.converter.BpmnJsonConverter
;
import
org.activiti.engine.ProcessEngine
;
import
org.activiti.engine.RepositoryService
;
import
org.activiti.engine.repository.Deployment
;
import
org.activiti.engine.repository.Model
;
import
org.activiti.engine.runtime.ProcessInstance
;
import
org.activiti.engine.task.Task
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.node.ObjectNode
;
import
com.skyeye.activiti.service.ActivitiModelService
;
import
com.skyeye.common.object.InputObject
;
import
com.skyeye.common.object.OutputObject
;
import
com.skyeye.common.util.ToolUtil
;
@Service
public
class
ActivitiModelServiceImpl
implements
ActivitiModelService
{
@Autowired
private
ProcessEngine
processEngine
;
@Autowired
private
ObjectMapper
objectMapper
;
@Autowired
private
RepositoryService
repositoryService
;
/**
*
* @Title: insertNewActivitiModel
* @Description: 新建一个空模型
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@SuppressWarnings
(
"deprecation"
)
@Override
public
void
insertNewActivitiModel
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
inputObject
.
getParams
();
RepositoryService
repositoryService
=
processEngine
.
getRepositoryService
();
//初始化一个空模型
Model
model
=
repositoryService
.
newModel
();
//设置一些默认信息
String
name
=
"new-process"
;
String
description
=
""
;
int
revision
=
1
;
String
key
=
"process"
;
ObjectNode
modelNode
=
objectMapper
.
createObjectNode
();
modelNode
.
put
(
ModelDataJsonConstants
.
MODEL_NAME
,
name
);
modelNode
.
put
(
ModelDataJsonConstants
.
MODEL_DESCRIPTION
,
description
);
modelNode
.
put
(
ModelDataJsonConstants
.
MODEL_REVISION
,
revision
);
model
.
setName
(
name
);
model
.
setKey
(
key
);
model
.
setMetaInfo
(
modelNode
.
toString
());
repositoryService
.
saveModel
(
model
);
String
id
=
model
.
getId
();
ObjectNode
editorNode
=
objectMapper
.
createObjectNode
();
editorNode
.
put
(
"id"
,
"canvas"
);
editorNode
.
put
(
"resourceId"
,
"canvas"
);
ObjectNode
stencilSetNode
=
objectMapper
.
createObjectNode
();
stencilSetNode
.
put
(
"namespace"
,
"http://b3mn.org/stencilset/bpmn2.0#"
);
editorNode
.
put
(
"stencilset"
,
stencilSetNode
);
repositoryService
.
addModelEditorSource
(
id
,
editorNode
.
toString
().
getBytes
(
"utf-8"
));
map
.
put
(
"id"
,
model
.
getId
());
outputObject
.
setBean
(
map
);
}
/**
*
* @Title: queryActivitiModelList
* @Description: 获取所有模型
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@Override
public
void
queryActivitiModelList
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
{
RepositoryService
repositoryService
=
processEngine
.
getRepositoryService
();
List
<
Model
>
beans
=
repositoryService
.
createModelQuery
().
list
();
List
<
Map
<
String
,
Object
>>
rows
=
new
ArrayList
<>();
for
(
Model
model
:
beans
){
rows
.
add
(
ToolUtil
.
javaBean2Map
(
model
));
}
outputObject
.
setBeans
(
rows
);
}
/**
*
* @Title: editActivitiModelToDeploy
* @Description: 发布模型为流程定义
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@Override
public
void
editActivitiModelToDeploy
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
inputObject
.
getParams
();
String
modelId
=
map
.
get
(
"modelId"
).
toString
();
//获取模型
RepositoryService
repositoryService
=
processEngine
.
getRepositoryService
();
Model
modelData
=
repositoryService
.
getModel
(
modelId
);
byte
[]
bytes
=
repositoryService
.
getModelEditorSource
(
modelData
.
getId
());
if
(
bytes
==
null
)
{
outputObject
.
setreturnMessage
(
"模型数据为空,请先设计流程并成功保存,再进行发布。"
);
}
else
{
JsonNode
modelNode
=
new
ObjectMapper
().
readTree
(
bytes
);
BpmnModel
model
=
new
BpmnJsonConverter
().
convertToBpmnModel
(
modelNode
);
if
(
model
.
getProcesses
().
size
()==
0
){
outputObject
.
setreturnMessage
(
"数据模型不符要求,请至少设计一条主线流程。"
);
}
else
{
byte
[]
bpmnBytes
=
new
BpmnXMLConverter
().
convertToXML
(
model
);
//发布流程
String
processName
=
modelData
.
getName
()
+
".bpmn20.xml"
;
Deployment
deployment
=
repositoryService
.
createDeployment
()
.
name
(
modelData
.
getName
())
.
addString
(
processName
,
new
String
(
bpmnBytes
,
"UTF-8"
))
.
deploy
();
modelData
.
setDeploymentId
(
deployment
.
getId
());
repositoryService
.
saveModel
(
modelData
);
}
}
}
/**
*
* @Title: editActivitiModelToStartProcess
* @Description: 启动流程
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@Override
public
void
editActivitiModelToStartProcess
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
inputObject
.
getParams
();
String
keyName
=
map
.
get
(
"keyName"
).
toString
();
ProcessInstance
process
=
processEngine
.
getRuntimeService
().
startProcessInstanceByKey
(
keyName
);
map
.
clear
();
map
.
put
(
"id"
,
process
.
getId
());
map
.
put
(
"processDefinitionId"
,
process
.
getProcessDefinitionId
());
outputObject
.
setBean
(
map
);
}
/**
*
* @Title: editActivitiModelToRun
* @Description: 提交任务
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@Override
public
void
editActivitiModelToRun
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
inputObject
.
getParams
();
String
processInstanceId
=
map
.
get
(
"processInstanceId"
).
toString
();
Task
task
=
processEngine
.
getTaskService
().
createTaskQuery
().
processInstanceId
(
processInstanceId
).
singleResult
();
processEngine
.
getTaskService
().
complete
(
task
.
getId
());
}
/**
*
* @Title: deleteActivitiModelById
* @Description: 删除模型
* @param @param inputObject
* @param @param outputObject
* @param @throws Exception 参数
* @return void 返回类型
* @throws
*/
@Override
public
void
deleteActivitiModelById
(
InputObject
inputObject
,
OutputObject
outputObject
)
throws
Exception
{
Map
<
String
,
Object
>
map
=
inputObject
.
getParams
();
String
id
=
map
.
get
(
"id"
).
toString
();
repositoryService
.
deleteModel
(
id
);
}
}
skyeye-promote/src/main/java/com/skyeye/common/constans/Constants.java
浏览文件 @
d7c0c94b
...
@@ -16,7 +16,7 @@ public class Constants {
...
@@ -16,7 +16,7 @@ public class Constants {
* 过滤器过滤文件目录请求项
* 过滤器过滤文件目录请求项
*/
*/
public
static
final
String
[]
FILTER_FILE_CATALOG_OPTION
=
{
"/html"
,
public
static
final
String
[]
FILTER_FILE_CATALOG_OPTION
=
{
"/html"
,
"/css"
,
"/js"
,
"/assets"
,
"/tpl"
,
"/images"
,
"/template"
};
"/css"
,
"/js"
,
"/assets"
,
"/tpl"
,
"/images"
,
"/template"
,
"/static"
};
/**
/**
* 过滤器过滤文件后缀请求项
* 过滤器过滤文件后缀请求项
...
@@ -35,6 +35,7 @@ public class Constants {
...
@@ -35,6 +35,7 @@ public class Constants {
* 过滤器过滤请求类型项
* 过滤器过滤请求类型项
*/
*/
public
static
final
String
[]
FILTER_FILE_REQUEST_OPTION
=
{
"/post"
,
"/websocket"
,
"/service"
};
public
static
final
String
[]
FILTER_FILE_REQUEST_OPTION
=
{
"/post"
,
"/websocket"
,
"/service"
};
public
static
final
String
[]
FILTER_FILE_NO_SESSION_REQUEST_OPTION
=
{
"/service"
};
/**
/**
* 登录页面
* 登录页面
...
...
skyeye-promote/src/main/java/com/skyeye/common/filter/SessionFilter.java
浏览文件 @
d7c0c94b
...
@@ -80,6 +80,13 @@ public class SessionFilter implements Filter {
...
@@ -80,6 +80,13 @@ public class SessionFilter implements Filter {
return
;
return
;
}
}
}
}
}
else
{
for
(
String
str
:
Constants
.
FILTER_FILE_NO_SESSION_REQUEST_OPTION
){
if
(
url
.
contains
(
str
))
{
chain
.
doFilter
(
new
XssHttpServletRequestWrapper
((
HttpServletRequest
)
request
),
response
);
return
;
}
}
}
}
//4.请求过滤
//4.请求过滤
...
...
skyeye-promote/src/main/java/com/skyeye/common/util/ToolUtil.java
浏览文件 @
d7c0c94b
...
@@ -5,6 +5,7 @@ import java.io.FileOutputStream;
...
@@ -5,6 +5,7 @@ import java.io.FileOutputStream;
import
java.io.InputStreamReader
;
import
java.io.InputStreamReader
;
import
java.io.LineNumberReader
;
import
java.io.LineNumberReader
;
import
java.io.RandomAccessFile
;
import
java.io.RandomAccessFile
;
import
java.lang.reflect.Method
;
import
java.security.MessageDigest
;
import
java.security.MessageDigest
;
import
java.text.DateFormat
;
import
java.text.DateFormat
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
...
@@ -762,6 +763,30 @@ public class ToolUtil {
...
@@ -762,6 +763,30 @@ public class ToolUtil {
}
}
return
r
;
return
r
;
}
}
/**
* javaBean2Map
* @param javaBean
* @return
*/
@SuppressWarnings
(
"unchecked"
)
public
static
<
K
,
V
>
Map
<
K
,
V
>
javaBean2Map
(
Object
javaBean
)
{
Map
<
K
,
V
>
ret
=
new
HashMap
<>();
try
{
Method
[]
methods
=
javaBean
.
getClass
().
getDeclaredMethods
();
// 获取所有的属性
for
(
Method
method
:
methods
)
{
if
(
method
.
getName
().
startsWith
(
"get"
))
{
String
field
=
method
.
getName
();
field
=
field
.
substring
(
field
.
indexOf
(
"get"
)
+
3
);
field
=
field
.
toLowerCase
().
charAt
(
0
)
+
field
.
substring
(
1
);
Object
value
=
method
.
invoke
(
javaBean
,
(
Object
[])
null
);
// invoke(调用)就是调用Method类代表的方法。它可以让你实现动态调用
ret
.
put
((
K
)
field
,
(
V
)
(
null
==
value
?
""
:
value
));
}
}
}
catch
(
Exception
e
)
{
}
return
ret
;
}
public
static
void
main
(
String
[]
args
)
throws
Exception
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
...
...
skyeye-promote/src/main/java/com/skyeye/db/config/ActitytiDataSourceConfig.java
浏览文件 @
d7c0c94b
package
com.skyeye.db.config
;
package
com.skyeye.db.config
;
import
javax.sql.DataSource
;
import
javax.sql.DataSource
;
import
org.activiti.engine.ProcessEngineConfiguration
;
import
org.activiti.engine.ProcessEngineConfiguration
;
import
org.activiti.spring.SpringProcessEngineConfiguration
;
import
org.activiti.spring.SpringProcessEngineConfiguration
;
import
org.activiti.spring.boot.AbstractProcessEngineAutoConfiguration
;
import
org.activiti.spring.boot.AbstractProcessEngineAutoConfiguration
;
import
org.apache.log4j.LogManager
;
import
org.apache.log4j.Logger
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.jdbc.datasource.DataSourceTransactionManager
;
import
org.springframework.jdbc.datasource.DataSourceTransactionManager
;
import
org.springframework.transaction.PlatformTransactionManager
;
import
org.springframework.transaction.PlatformTransactionManager
;
import
com.alibaba.druid.pool.DruidDataSource
;
import
com.alibaba.druid.pool.DruidDataSource
;
/**
/**
...
@@ -23,12 +19,9 @@ import com.alibaba.druid.pool.DruidDataSource;
...
@@ -23,12 +19,9 @@ import com.alibaba.druid.pool.DruidDataSource;
@Configuration
@Configuration
public
class
ActitytiDataSourceConfig
extends
AbstractProcessEngineAutoConfiguration
{
public
class
ActitytiDataSourceConfig
extends
AbstractProcessEngineAutoConfiguration
{
private
static
final
Logger
log
=
LogManager
.
getLogger
(
ActitytiDataSourceConfig
.
class
);
@Bean
(
name
=
"activitiDataSource"
)
@Bean
(
name
=
"activitiDataSource"
)
@ConfigurationProperties
(
prefix
=
"spring.datasource.activiti"
)
@ConfigurationProperties
(
prefix
=
"spring.datasource.activiti"
)
public
DataSource
activitiDataSource
()
{
public
DataSource
activitiDataSource
()
{
log
.
info
(
"activitiDataSource 初始化..."
);
return
new
DruidDataSource
();
return
new
DruidDataSource
();
}
}
...
...
skyeye-promote/src/main/resources/mapping/reqmapping.xml
浏览文件 @
d7c0c94b
...
@@ -888,4 +888,23 @@
...
@@ -888,4 +888,23 @@
</url>
</url>
<!-- 项目规划结束 -->
<!-- 项目规划结束 -->
<!-- 工作流开始 -->
<url
id=
"activitimode001"
path=
"/post/ActivitiModelController/insertNewActivitiModel"
val=
"新建一个空模型"
allUse=
"1"
>
</url>
<url
id=
"activitimode002"
path=
"/post/ActivitiModelController/queryActivitiModelList"
val=
"获取所有模型"
allUse=
"1"
>
</url>
<url
id=
"activitimode003"
path=
"/post/ActivitiModelController/editActivitiModelToDeploy"
val=
"发布模型为流程定义"
allUse=
"1"
>
<property
id=
"modelId"
name=
"modelId"
ref=
"required"
var=
"模型id"
/>
</url>
<url
id=
"activitimode004"
path=
"/post/ActivitiModelController/editActivitiModelToStartProcess"
val=
"启动流程"
allUse=
"1"
>
<property
id=
"keyName"
name=
"keyName"
ref=
"required"
var=
"模型key"
/>
</url>
<url
id=
"activitimode005"
path=
"/post/ActivitiModelController/editActivitiModelToRun"
val=
"提交任务"
allUse=
"1"
>
<property
id=
"processInstanceId"
name=
"processInstanceId"
ref=
"required"
var=
"模型运行id"
/>
</url>
<url
id=
"activitimode006"
path=
"/post/ActivitiModelController/deleteActivitiModelById"
val=
"删除模型"
allUse=
"1"
>
<property
id=
"rowId"
name=
"id"
ref=
"required"
var=
"模型id"
/>
</url>
<!-- 工作流结束 -->
</controller>
</controller>
\ No newline at end of file
skyeye-promote/src/main/resources/static/editor-app/css/style-common.css
浏览文件 @
d7c0c94b
...
@@ -531,7 +531,7 @@ a.dropdown-toggle {
...
@@ -531,7 +531,7 @@ a.dropdown-toggle {
/* Sub header */
/* Sub header */
.subheader
{
.subheader
{
background-color
:
#e8edf1
;
background-color
:
#e8edf1
;
min-height
:
60
px
;
min-height
:
45
px
;
border-bottom
:
1px
solid
#a4acb9
;
border-bottom
:
1px
solid
#a4acb9
;
}
}
...
@@ -936,7 +936,7 @@ a.dropdown-toggle {
...
@@ -936,7 +936,7 @@ a.dropdown-toggle {
}
}
.wrapper.full
{
.wrapper.full
{
padding
:
4
0px
0px
0px
0px
;
padding
:
0px
0px
0px
0px
;
overflow
:
hidden
;
overflow
:
hidden
;
max-width
:
100%
;
max-width
:
100%
;
min-width
:
100%
;
min-width
:
100%
;
...
...
skyeye-promote/src/main/resources/static/editor-app/css/style.css
浏览文件 @
d7c0c94b
...
@@ -47,7 +47,7 @@
...
@@ -47,7 +47,7 @@
}
}
.editor-toolbar
.btn.btn-inverse
{
.editor-toolbar
.btn.btn-inverse
{
font-size
:
24
px
;
font-size
:
15
px
;
color
:
#FFFFFF
;
color
:
#FFFFFF
;
border-color
:
rgba
(
0
,
0
,
0
,
0
);
border-color
:
rgba
(
0
,
0
,
0
,
0
);
padding
:
3px
6px
0px
6px
;
padding
:
3px
6px
0px
6px
;
...
@@ -56,8 +56,8 @@
...
@@ -56,8 +56,8 @@
text-align
:
center
;
text-align
:
center
;
border
:
none
;
border
:
none
;
margin
:
0px
0px
0px
5px
;
margin
:
0px
0px
0px
5px
;
height
:
36
px
;
height
:
24
px
;
min-width
:
36
px
;
min-width
:
24
px
;
}
}
.editor-toolbar
.btn.btn-inverse.pressed
{
.editor-toolbar
.btn.btn-inverse.pressed
{
background-color
:
#287d92
;
background-color
:
#287d92
;
...
@@ -79,7 +79,7 @@
...
@@ -79,7 +79,7 @@
.editor-toolbar
.toolbar-separator
{
.editor-toolbar
.toolbar-separator
{
background
:
#a4acb9
;
background
:
#a4acb9
;
width
:
1px
;
width
:
1px
;
height
:
3
0px
;
height
:
2
0px
;
}
}
.stencils
{
.stencils
{
...
@@ -228,9 +228,9 @@ div.propertySection {
...
@@ -228,9 +228,9 @@ div.propertySection {
}
}
.selected-item-title
{
.selected-item-title
{
font-size
:
2
5
px
;
font-size
:
2
0
px
;
font-weight
:
bold
;
font-weight
:
bold
;
padding
:
8
px
0
8px
8px
;
padding
:
0
px
0
8px
8px
;
border-bottom
:
1px
solid
#a4acb9
;
border-bottom
:
1px
solid
#a4acb9
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
...
@@ -407,7 +407,6 @@ li.x-menu-list-item.x-menu-item-active a {
...
@@ -407,7 +407,6 @@ li.x-menu-list-item.x-menu-item-active a {
/* Editor icon font */
/* Editor icon font */
.editor-icon
{
.editor-icon
{
position
:
relative
;
position
:
relative
;
top
:
1px
;
display
:
inline-block
;
display
:
inline-block
;
font-family
:
'ActivitiModeler'
;
font-family
:
'ActivitiModeler'
;
font-style
:
normal
;
font-style
:
normal
;
...
...
skyeye-promote/src/main/resources/static/editor-app/editor.html
浏览文件 @
d7c0c94b
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
</button>
</button>
</div>
</div>
</div>
</div>
<div
class=
"btn-group pull-right"
ng-show=
"!secondaryItems.length"
>
<
!-- <
div class="btn-group pull-right" ng-show="!secondaryItems.length">
<div class="btn-toolbar pull-right" ng-controller="ToolbarController">
<div class="btn-toolbar pull-right" ng-controller="ToolbarController">
<button title="{{item.title | translate}}" ng-repeat="item in secondaryItems" ng-switch on="item.type" class="btn btn-inverse" ng-class="{'separator': item.type == 'separator'}"
<button title="{{item.title | translate}}" ng-repeat="item in secondaryItems" ng-switch on="item.type" class="btn btn-inverse" ng-class="{'separator': item.type == 'separator'}"
ng-disabled="item.type == 'separator'" ng-click="toolbarSecondaryButtonClicked($index)" id="{{item.id}}">
ng-disabled="item.type == 'separator'" ng-click="toolbarSecondaryButtonClicked($index)" id="{{item.id}}">
...
@@ -22,11 +22,11 @@
...
@@ -22,11 +22,11 @@
<div ng-switch-when="separator" ng-class="item.cssClass"></div>
<div ng-switch-when="separator" ng-class="item.cssClass"></div>
</button>
</button>
</div>
</div>
</div>
</div>
-->
</div>
</div>
<div
class=
"full"
>
<div
class=
"full"
>
<div
class=
"row row-no-gutter"
>
<div
class=
"row row-no-gutter"
>
<div
id=
"paletteHelpWrapper"
class=
"col-xs-
3
"
>
<div
id=
"paletteHelpWrapper"
class=
"col-xs-
2
"
>
<div
class=
"stencils"
id=
"paletteSection"
>
<div
class=
"stencils"
id=
"paletteSection"
>
<div
ng-if=
"stencilItemGroups.length > 1"
>
<div
ng-if=
"stencilItemGroups.length > 1"
>
<div
ng-repeat=
"group in stencilItemGroups"
>
<div
ng-repeat=
"group in stencilItemGroups"
>
...
@@ -56,7 +56,7 @@
...
@@ -56,7 +56,7 @@
</div>
</div>
</div>
</div>
</div>
</div>
<div
id=
"canvasHelpWrapper"
class=
"col-xs-
9
"
>
<div
id=
"canvasHelpWrapper"
class=
"col-xs-
10"
style=
"padding-left: 0px; padding-right: 0px;
"
>
<div
class=
"canvas-wrapper"
id=
"canvasSection"
<div
class=
"canvas-wrapper"
id=
"canvasSection"
ng-model=
"droppedElement"
ng-model=
"droppedElement"
ng-model=
"droppedElement"
ng-model=
"droppedElement"
...
@@ -92,7 +92,7 @@
...
@@ -92,7 +92,7 @@
</div>
</div>
</div>
</div>
</div>
</div>
<div
id=
"propertiesHelpWrapper"
class=
"col-xs-
9
"
>
<div
id=
"propertiesHelpWrapper"
class=
"col-xs-
10"
style=
"padding-left: 0px; padding-right: 0px;
"
>
<div
class=
"propertySection"
id=
"propertySection"
<div
class=
"propertySection"
id=
"propertySection"
ng-class=
"{collapsed: propertyWindowState.collapsed}"
>
ng-class=
"{collapsed: propertyWindowState.collapsed}"
>
<div
class=
"selected-item-section"
>
<div
class=
"selected-item-section"
>
...
...
skyeye-promote/src/main/resources/static/editor-app/i18n/en.json
浏览文件 @
d7c0c94b
此差异已折叠。
点击以展开。
skyeye-promote/src/main/resources/static/modeler.html
浏览文件 @
d7c0c94b
...
@@ -28,14 +28,14 @@
...
@@ -28,14 +28,14 @@
</head>
</head>
<body>
<body>
<div
class=
"navbar navbar-fixed-top navbar-inverse"
role=
"navigation"
id=
"main-header"
>
<!--
<div class="navbar navbar-fixed-top navbar-inverse" role="navigation" id="main-header">
<div class="navbar-header">
<div class="navbar-header">
<a href="" ng-click="backToLanding()" class="navbar-brand"
<a href="" ng-click="backToLanding()" class="navbar-brand"
title="{{'GENERAL.MAIN-TITLE' | translate}}"><span
title="{{'GENERAL.MAIN-TITLE' | translate}}"><span
class="sr-only">{{'GENERAL.MAIN-TITLE' | translate}}</span></a>
class="sr-only">{{'GENERAL.MAIN-TITLE' | translate}}</span></a>
</div>
</div>
</div>
</div>
-->
<!--[if lt IE 9]>
<!--[if lt IE 9]>
<div class="unsupported-browser">
<div class="unsupported-browser">
<p class="alert error">You are using an unsupported browser. Please upgrade your browser in order to use the
<p class="alert error">You are using an unsupported browser. Please upgrade your browser in order to use the
...
...
skyeye-promote/src/main/resources/static/toolUtil.txt
浏览文件 @
d7c0c94b
...
@@ -31,4 +31,4 @@ getIpByRequest(); 根据request获取ip
...
@@ -31,4 +31,4 @@ getIpByRequest(); 根据request获取ip
getCpuRatioForWindows(); 获得CPU使用率
getCpuRatioForWindows(); 获得CPU使用率
readCpu(); 读取CPU信息
readCpu(); 读取CPU信息
listToTree(); 将JSONArray数组转为树状结构
listToTree(); 将JSONArray数组转为树状结构
javaBean2Map(); 实体类转map
skyeye-promote/src/main/resources/stencilset.json
浏览文件 @
d7c0c94b
因为 它太大了无法显示 source diff 。你可以改为
查看blob
。
skyeye-promote/src/main/resources/template/assets/lib/layui/layui.js
浏览文件 @
d7c0c94b
...
@@ -975,4 +975,104 @@ function show(id, url) {
...
@@ -975,4 +975,104 @@ function show(id, url) {
});
});
}
}
/**
* 时间戳格式化函数
* @param {string} format 格式
* @param {int} timestamp 要格式化的时间 默认为当前时间
* @return {string} 格式化的时间字符串
*/
function
date
(
format
,
timestamp
){
var
a
,
jsdate
=
((
timestamp
)
?
new
Date
(
timestamp
*
1000
)
:
new
Date
());
var
pad
=
function
(
n
,
c
){
if
((
n
=
n
+
""
).
length
<
c
){
return
new
Array
(
++
c
-
n
.
length
).
join
(
"
0
"
)
+
n
;
}
else
{
return
n
;
}
};
var
txt_weekdays
=
[
"
Sunday
"
,
"
Monday
"
,
"
Tuesday
"
,
"
Wednesday
"
,
"
Thursday
"
,
"
Friday
"
,
"
Saturday
"
];
var
txt_ordin
=
{
1
:
"
st
"
,
2
:
"
nd
"
,
3
:
"
rd
"
,
21
:
"
st
"
,
22
:
"
nd
"
,
23
:
"
rd
"
,
31
:
"
st
"
};
var
txt_months
=
[
""
,
"
January
"
,
"
February
"
,
"
March
"
,
"
April
"
,
"
May
"
,
"
June
"
,
"
July
"
,
"
August
"
,
"
September
"
,
"
October
"
,
"
November
"
,
"
December
"
];
var
f
=
{
d
:
function
(){
return
pad
(
f
.
j
(),
2
)},
D
:
function
(){
return
f
.
l
().
substr
(
0
,
3
)},
j
:
function
(){
return
jsdate
.
getDate
()},
l
:
function
(){
return
txt_weekdays
[
f
.
w
()]},
N
:
function
(){
return
f
.
w
()
+
1
},
S
:
function
(){
return
txt_ordin
[
f
.
j
()]
?
txt_ordin
[
f
.
j
()]
:
'
th
'
},
w
:
function
(){
return
jsdate
.
getDay
()},
z
:
function
(){
return
(
jsdate
-
new
Date
(
jsdate
.
getFullYear
()
+
"
/1/1
"
))
/
864
e5
>>
0
},
W
:
function
(){
var
a
=
f
.
z
(),
b
=
364
+
f
.
L
()
-
a
;
var
nd2
,
nd
=
(
new
Date
(
jsdate
.
getFullYear
()
+
"
/1/1
"
).
getDay
()
||
7
)
-
1
;
if
(
b
<=
2
&&
((
jsdate
.
getDay
()
||
7
)
-
1
)
<=
2
-
b
){
return
1
;
}
else
{
if
(
a
<=
2
&&
nd
>=
4
&&
a
>=
(
6
-
nd
)){
nd2
=
new
Date
(
jsdate
.
getFullYear
()
-
1
+
"
/12/31
"
);
return
date
(
"
W
"
,
Math
.
round
(
nd2
.
getTime
()
/
1000
));
}
else
{
return
(
1
+
(
nd
<=
3
?
((
a
+
nd
)
/
7
)
:
(
a
-
(
7
-
nd
))
/
7
)
>>
0
);
}
}
},
F
:
function
(){
return
txt_months
[
f
.
n
()]},
m
:
function
(){
return
pad
(
f
.
n
(),
2
)},
M
:
function
(){
return
f
.
F
().
substr
(
0
,
3
)},
n
:
function
(){
return
jsdate
.
getMonth
()
+
1
},
t
:
function
(){
var
n
;
if
(
(
n
=
jsdate
.
getMonth
()
+
1
)
==
2
){
return
28
+
f
.
L
();
}
else
{
if
(
n
&
1
&&
n
<
8
||
!
(
n
&
1
)
&&
n
>
7
){
return
31
;
}
else
{
return
30
;
}
}
},
L
:
function
(){
var
y
=
f
.
Y
();
return
(
!
(
y
&
3
)
&&
(
y
%
1
e2
||
!
(
y
%
4
e2
)))
?
1
:
0
},
Y
:
function
(){
return
jsdate
.
getFullYear
()},
y
:
function
(){
return
(
jsdate
.
getFullYear
()
+
""
).
slice
(
2
)},
a
:
function
(){
return
jsdate
.
getHours
()
>
11
?
"
pm
"
:
"
am
"
},
A
:
function
(){
return
f
.
a
().
toUpperCase
()},
B
:
function
(){
var
off
=
(
jsdate
.
getTimezoneOffset
()
+
60
)
*
60
;
var
theSeconds
=
(
jsdate
.
getHours
()
*
3600
)
+
(
jsdate
.
getMinutes
()
*
60
)
+
jsdate
.
getSeconds
()
+
off
;
var
beat
=
Math
.
floor
(
theSeconds
/
86.4
);
if
(
beat
>
1000
)
beat
-=
1000
;
if
(
beat
<
0
)
beat
+=
1000
;
if
((
String
(
beat
)).
length
==
1
)
beat
=
"
00
"
+
beat
;
if
((
String
(
beat
)).
length
==
2
)
beat
=
"
0
"
+
beat
;
return
beat
;
},
g
:
function
(){
return
jsdate
.
getHours
()
%
12
||
12
},
G
:
function
(){
return
jsdate
.
getHours
()},
h
:
function
(){
return
pad
(
f
.
g
(),
2
)},
H
:
function
(){
return
pad
(
jsdate
.
getHours
(),
2
)},
i
:
function
(){
return
pad
(
jsdate
.
getMinutes
(),
2
)},
s
:
function
(){
return
pad
(
jsdate
.
getSeconds
(),
2
)},
O
:
function
(){
var
t
=
pad
(
Math
.
abs
(
jsdate
.
getTimezoneOffset
()
/
60
*
100
),
4
);
if
(
jsdate
.
getTimezoneOffset
()
>
0
)
t
=
"
-
"
+
t
;
else
t
=
"
+
"
+
t
;
return
t
;
},
P
:
function
(){
var
O
=
f
.
O
();
return
(
O
.
substr
(
0
,
3
)
+
"
:
"
+
O
.
substr
(
3
,
2
))},
c
:
function
(){
return
f
.
Y
()
+
"
-
"
+
f
.
m
()
+
"
-
"
+
f
.
d
()
+
"
T
"
+
f
.
h
()
+
"
:
"
+
f
.
i
()
+
"
:
"
+
f
.
s
()
+
f
.
P
()},
U
:
function
(){
return
Math
.
round
(
jsdate
.
getTime
()
/
1000
)}
};
return
format
.
replace
(
/
[\\]?([
a-zA-Z
])
/g
,
function
(
t
,
s
){
if
(
t
!=
s
){
ret
=
s
;
}
else
if
(
f
[
s
]
){
ret
=
f
[
s
]();
}
else
{
ret
=
s
;
}
return
ret
;
});
}
skyeye-promote/src/main/resources/template/js/activitimodel/activitimodellist.js
0 → 100644
浏览文件 @
d7c0c94b
layui
.
config
({
base
:
basePath
,
version
:
skyeyeVersion
}).
define
([
'
table
'
,
'
jquery
'
,
'
winui
'
,
'
form
'
],
function
(
exports
)
{
winui
.
renderColor
();
//模板分组ID
groupId
=
parent
.
rowId
;
var
$
=
layui
.
$
,
form
=
layui
.
form
,
table
=
layui
.
table
;
//表格渲染
table
.
render
({
id
:
'
messageTable
'
,
elem
:
'
#messageTable
'
,
method
:
'
post
'
,
url
:
reqBasePath
+
'
activitimode002
'
,
where
:{},
even
:
true
,
//隔行变色
page
:
false
,
cols
:
[[
{
title
:
'
序号
'
,
type
:
'
numbers
'
},
{
field
:
'
id
'
,
title
:
'
模型编号
'
,
width
:
120
},
{
field
:
'
name
'
,
title
:
'
模型名称
'
,
width
:
120
},
{
field
:
'
version
'
,
title
:
'
版本
'
,
width
:
120
},
{
field
:
'
createTime
'
,
title
:
'
创建时间
'
,
width
:
180
,
templet
:
function
(
d
){
var
str
=
d
.
createTime
.
toString
();
str
=
str
.
substring
(
0
,
str
.
length
-
3
);
return
date
(
'
Y-m-d H:i:s
'
,
str
);
}
},
{
title
:
'
操作
'
,
fixed
:
'
right
'
,
align
:
'
center
'
,
width
:
240
,
toolbar
:
'
#tableBar
'
}
]]
});
table
.
on
(
'
tool(messageTable)
'
,
function
(
obj
)
{
//注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值"
var
data
=
obj
.
data
;
//获得当前行数据
var
layEvent
=
obj
.
event
;
//获得 lay-event 对应的值
if
(
layEvent
===
'
del
'
)
{
//删除
del
(
data
,
obj
);
}
else
if
(
layEvent
===
'
edit
'
)
{
//编辑
edit
(
data
);
}
});
//搜索表单
form
.
render
();
form
.
on
(
'
submit(formSearch)
'
,
function
(
data
)
{
//表单验证
if
(
winui
.
verifyForm
(
data
.
elem
))
{
loadTable
();
}
return
false
;
});
//删除
function
del
(
data
,
obj
){
var
msg
=
obj
?
'
确认删除模型【
'
+
obj
.
data
.
name
+
'
】吗?
'
:
'
确认删除选中数据吗?
'
;
layer
.
confirm
(
msg
,
{
icon
:
3
,
title
:
'
删除模型
'
},
function
(
index
)
{
layer
.
close
(
index
);
//向服务端发送删除指令
AjaxPostUtil
.
request
({
url
:
reqBasePath
+
"
activitimode006
"
,
params
:{
rowId
:
data
.
id
},
type
:
'
json
'
,
callback
:
function
(
json
){
if
(
json
.
returnCode
==
0
){
top
.
winui
.
window
.
msg
(
"
删除成功
"
,
{
icon
:
1
,
time
:
2000
});
loadTable
();
}
else
{
top
.
winui
.
window
.
msg
(
json
.
returnMessage
,
{
icon
:
2
,
time
:
2000
});
}
}});
});
}
//编辑
function
edit
(
data
){
rowId
=
data
.
id
;
_openNewWindows
({
url
:
"
../../static/modeler.html?modelId=
"
+
rowId
,
title
:
"
绘制流程
"
,
pageId
:
"
canveractivitimodeledit
"
,
maxmin
:
true
,
callBack
:
function
(
refreshCode
){
if
(
refreshCode
==
'
0
'
)
{
top
.
winui
.
window
.
msg
(
"
操作成功
"
,
{
icon
:
1
,
time
:
2000
});
loadTable
();
}
else
if
(
refreshCode
==
'
-9999
'
)
{
top
.
winui
.
window
.
msg
(
"
操作失败
"
,
{
icon
:
2
,
time
:
2000
});
}
}});
}
//刷新数据
$
(
"
body
"
).
on
(
"
click
"
,
"
#reloadTable
"
,
function
(){
loadTable
();
});
//新增
$
(
"
body
"
).
on
(
"
click
"
,
"
#addBean
"
,
function
(){
AjaxPostUtil
.
request
({
url
:
reqBasePath
+
"
activitimode001
"
,
params
:{},
type
:
'
json
'
,
callback
:
function
(
json
){
if
(
json
.
returnCode
==
0
){
_openNewWindows
({
url
:
"
../../static/modeler.html?modelId=
"
+
json
.
bean
.
id
,
title
:
"
绘制流程
"
,
pageId
:
"
canveractivitimodel
"
,
maxmin
:
true
,
callBack
:
function
(
refreshCode
){
if
(
refreshCode
==
'
0
'
)
{
top
.
winui
.
window
.
msg
(
"
操作成功
"
,
{
icon
:
1
,
time
:
2000
});
loadTable
();
}
else
if
(
refreshCode
==
'
-9999
'
)
{
top
.
winui
.
window
.
msg
(
"
操作失败
"
,
{
icon
:
2
,
time
:
2000
});
}
}});
}
else
{
top
.
winui
.
window
.
msg
(
json
.
returnMessage
,
{
icon
:
2
,
time
:
2000
});
}
}});
});
function
loadTable
(){
table
.
reload
(
"
messageTable
"
,
{
where
:{}});
}
exports
(
'
codemodellist
'
,
{});
});
skyeye-promote/src/main/resources/template/tpl/activitimodel/activitimodellist.html
0 → 100644
浏览文件 @
d7c0c94b
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
/>
<title></title>
<link
href=
"../../assets/lib/layui/css/layui.css"
rel=
"stylesheet"
/>
<link
href=
"../../assets/lib/font-awesome-4.7.0/css/font-awesome.css"
rel=
"stylesheet"
/>
<link
href=
"../../assets/lib/winui/css/winui.css"
rel=
"stylesheet"
/>
<link
href=
"../../assets/lib/layui/css/codemirror.css"
rel=
"stylesheet"
/>
</head>
<body>
<div
class=
"winui-toolbar"
>
<div
class=
"winui-tool"
>
<button
id=
"reloadTable"
class=
"winui-toolbtn"
><i
class=
"fa fa-refresh"
aria-hidden=
"true"
></i>
刷新数据
</button>
<button
id=
"addBean"
class=
"winui-toolbtn"
><i
class=
"fa fa-plus"
aria-hidden=
"true"
></i>
绘制流程
</button>
</div>
</div>
<div
id=
"modelContentDiv"
style=
"height:auto; position: fixed; left: 10000px;"
>
<textarea
id=
"modelContent"
></textarea>
</div>
<div
style=
"margin:auto 10px;"
>
<table
id=
"messageTable"
lay-filter=
"messageTable"
></table>
<script
type=
"text/html"
id=
"tableBar"
>
<
a
class
=
"
layui-btn layui-btn-xs
"
lay
-
event
=
"
edit
"
>
编辑
<
/a
>
<
a
class
=
"
layui-btn layui-btn-danger layui-btn-xs
"
lay
-
event
=
"
del
"
>
删除
<
/a
>
</script>
</div>
<script
src=
"../../assets/lib/layui/layui.js"
></script>
<script
src=
"../../assets/lib/layui/custom.js"
></script>
<script
type=
"text/javascript"
>
layui
.
config
({
base
:
'
../../js/activitimodel/
'
}).
use
(
'
activitimodellist
'
);
</script>
</body>
</html>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录