first commit
This commit is contained in:
@@ -0,0 +1,193 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="年度">
|
||||
<el-date-picker placeholder="请选择年度" type="year" v-model="pageForm.year" value-format="yyyy"></el-date-picker>
|
||||
</search-item>
|
||||
<search-item label="活动主题">
|
||||
<el-input clearable placeholder="请输入活动主题" v-model="pageForm.searchKeyword"></el-input>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool>
|
||||
<template slot="tool">
|
||||
<el-button size="mini" type="primary" icon="el-icon-plus" @click="openAdd">新增</el-button>
|
||||
</template>
|
||||
</table-tool>
|
||||
|
||||
<el-table :data="tableData" @sort-change="pageOrder" size="small" header-align="center" border style="width: 100%" row-key="id">
|
||||
<el-table-column label="序号" type="index" :index="indexMethod"></el-table-column>
|
||||
<el-table-column label="名称" prop="name"></el-table-column>
|
||||
<el-table-column label="版本" prop="versionCode"></el-table-column>
|
||||
<el-table-column label="图标" prop="icon"></el-table-column>
|
||||
<el-table-column label="分类" prop="category"></el-table-column>
|
||||
<el-table-column label="排序" prop="sortCode"></el-table-column>
|
||||
<el-table-column prop="modelStatus" label="开启状态">
|
||||
<template scope="scope">
|
||||
<el-switch
|
||||
v-model="scope.row.modelStatus"
|
||||
active-color="#13ce66"
|
||||
inactive-color="#ff4949"
|
||||
@change="(val)=>{enableChange(val,scope.row.id)}"
|
||||
></el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="250">
|
||||
<template slot-scope="scope">
|
||||
<el-link size="mini" type="primary" @click="openEdit(scope.row.id)">编辑</el-link>
|
||||
<el-link size="mini" type="primary" @click="design(scope.row.id)">设计</el-link>
|
||||
<el-link size="mini" type="success" @click="deploy(scope.row.id)">部署</el-link>
|
||||
<!-- <el-link size="mini" type="info" @click="doDelete(scope.row.id)">降级</el-link>-->
|
||||
<el-link size="mini" type="danger" @click="doDelete(scope.row.id)">删除</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<el-row class="el-pagination-container">
|
||||
<el-pagination
|
||||
@size-change="pageSizeChange"
|
||||
@current-change="pageNumberChange"
|
||||
:current-page="pageForm.pageNumber"
|
||||
:page-sizes="[10, 20, 30, 50]"
|
||||
:page-size="pageForm.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="pageForm.totalCount"
|
||||
></el-pagination>
|
||||
</el-row>
|
||||
</el-card>
|
||||
|
||||
<el-dialog :title="formData.id ? '编辑':'新增'" :visible.sync="dialogFormVisible" width="600px" :close-on-click-modal="false">
|
||||
<el-form :model="formData" ref="formRef" size="small" label-width="120px" :rules="formRules">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-input placeholder="请输入名称" v-model="formData.name" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="模型分类" prop="category">
|
||||
<el-select placeholder="请选择分类" v-model="formData.category" clearable>
|
||||
<el-option v-for="item in categoryOptions" :key="item.id" :value="item.id" :label="item.name"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="图标" prop="icon">
|
||||
<el-input placeholder="请输入图标" v-model="formData.icon" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="颜色" prop="color">
|
||||
<el-input placeholder="请输入颜色" v-model="formData.color" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="序号" prop="sortCode">
|
||||
<el-input-number placeholder="请输入序号" v-model="formData.sortCode" clearable></el-input-number>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogFormVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="doSubmit">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
new Vue({
|
||||
el: "#app",
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
dialogFormVisible: false,
|
||||
formRules: {
|
||||
name: [{ required: true, message: "必填", trigger: ["change", "blur"] }],
|
||||
category: [{ required: true, message: "必填", trigger: ["change", "blur"] }]
|
||||
},
|
||||
categoryOptions: []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openAdd() {
|
||||
this.dialogFormVisible = true
|
||||
this.$nextTick(() => {
|
||||
this.formData = {
|
||||
subjectTypes: []
|
||||
}
|
||||
})
|
||||
},
|
||||
openEdit(id) {
|
||||
this.dialogFormVisible = true
|
||||
$.get(loc() + "/findOne", { id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.formData = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
doSubmit() {
|
||||
this.$refs.formRef.validate((valid) => {
|
||||
if (valid) {
|
||||
$.post(loc() + (this.formData.id ? "/update" : "/insert"), { data: JSON.stringify(this.formData) }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.dialogFormVisible = false
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
doDelete(id) {
|
||||
this.$confirm("您确定要删除吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
$.post(loc() + "/delete", { id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
deploy(id) {
|
||||
this.$confirm("您确定要部署吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
$.post(loc() + "/deploy", { id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
enableChange(enable, id) {
|
||||
$.post(loc() + "/enableChange", { id, enable }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
},
|
||||
design(id) {
|
||||
window.open(loc() + "/modeler?id=" + id)
|
||||
},
|
||||
listCategory() {
|
||||
$.get(loc() + "/listCategory").then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.categoryOptions = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.pageData()
|
||||
this.listCategory()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,152 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
#app {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#canvas {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
height: calc(100vh - 126px);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#properties {
|
||||
background: #fff;
|
||||
border: 1px solid;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
width: 400px;
|
||||
}
|
||||
|
||||
#top-tool {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.djs-container {
|
||||
background-image: linear-gradient(90deg, hsla(0, 0%, 78.4%, 0.15) 10%, transparent 0),
|
||||
linear-gradient(hsla(0, 0%, 78.4%, 0.15) 10%, transparent 0);
|
||||
background-size: 10px 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<link rel="stylesheet" href="${base!}/assets/platform/plugins/bpmn/assets/diagram-js.css" />
|
||||
<link rel="stylesheet" href="${base!}/assets/platform/plugins/bpmn/assets/bpmn-font/css/bpmn-embedded.css" />
|
||||
<link rel="stylesheet" href="${base!}/assets/platform/plugins/bpmn/assets/bpmn-js.css" />
|
||||
<link rel="stylesheet" href="${base!}/assets/platform/plugins/bpmn/assets/bpmn-font/css/bpmn.css" />
|
||||
|
||||
<link rel="stylesheet" href="${base!}/assets/platform/plugins/bpmn-js-properties-panel/properties-panel.css" />
|
||||
<link rel="stylesheet" href="https://unpkg.com/@bpmn-io/properties-panel@3.23.0/dist/assets/properties-panel.css" />
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<!-- <el-dialog title="流程设计" width="100%" :visible.sync="dialogVisible">-->
|
||||
<div id="canvas"></div>
|
||||
<div id="properties"></div>
|
||||
<div id="top-tool">
|
||||
<el-button size="mini" @click="saveData">保存</el-button>
|
||||
<el-button size="mini" @click="openXML">查看xml</el-button>
|
||||
</div>
|
||||
<!-- </el-dialog>-->
|
||||
<el-dialog title="查看xml" width="50%" :visible.sync="xmlDialogVisible">{{xmlContent}}</el-dialog>
|
||||
</div>
|
||||
|
||||
<script src="${base!}/assets/platform/plugins/bpmn/js/bpmn-modeler.development.js"></script>
|
||||
<script src="${base!}/assets/platform/plugins/bpmn-js-properties-panel/bpmn-js-properties-panel.umd.js"></script>
|
||||
<script src="${base!}/assets/platform/plugins/bpmn-translate/index.js"></script>
|
||||
<script src="${base!}/assets/platform/plugins/bpmn-translate/customTranslate.js"></script>
|
||||
<script src="${base!}/assets/platform/plugins/camunda-bpmn-moddle/resources/camunda.js"></script>
|
||||
|
||||
<!--<script src="https://unpkg.com/bpmn-js@17.9.0/dist/bpmn-modeler.development.js"></script>-->
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
var bpmnModeler
|
||||
|
||||
new Vue({
|
||||
el: "#app",
|
||||
data() {
|
||||
return {
|
||||
modelId: GetQueryString("id"),
|
||||
|
||||
xmlDialogVisible: false,
|
||||
xmlContent: null
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
saveData() {
|
||||
bpmnModeler.saveXML().then((res) => {
|
||||
console.log(res)
|
||||
$.post("/platform/bpm/cfg/design/saveXml", {
|
||||
id: this.modelId,
|
||||
xml: res.xml
|
||||
}).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
openXML() {
|
||||
bpmnModeler.saveXML().then((res) => {
|
||||
console.log(res)
|
||||
this.xmlDialogVisible = true
|
||||
this.xmlContent = res.xml
|
||||
})
|
||||
},
|
||||
|
||||
loadXML() {
|
||||
$.get("/platform/bpm/cfg/design/loadXml", { id: this.modelId }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
if (res.data) {
|
||||
bpmnModeler
|
||||
.importXML(res.data)
|
||||
.then(() => {
|
||||
console.log(1)
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err)
|
||||
})
|
||||
} else {
|
||||
bpmnModeler.createDiagram()
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
initModeler() {
|
||||
bpmnModeler = new BpmnJS({
|
||||
container: "#canvas",
|
||||
propertiesPanel: {
|
||||
parent: "#properties"
|
||||
},
|
||||
additionalModules: [
|
||||
BpmnJSPropertiesPanel.BpmnPropertiesPanelModule,
|
||||
BpmnJSPropertiesPanel.BpmnPropertiesProviderModule,
|
||||
BpmnJSPropertiesPanel.CamundaPlatformPropertiesProviderModule,
|
||||
BpmnJSPropertiesPanel.CamundaPlatformTooltipProvider,
|
||||
{
|
||||
translate: ["value", customTranslate]
|
||||
}
|
||||
],
|
||||
moddleExtensions: {
|
||||
camunda: camundaJson
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.initModeler()
|
||||
this.loadXML()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
@@ -0,0 +1,369 @@
|
||||
<!--#
|
||||
layout("/layouts/platform.html"){
|
||||
#-->
|
||||
|
||||
<style>
|
||||
.flowchart-example-container {
|
||||
width: 800px;
|
||||
height: 400px;
|
||||
background: white;
|
||||
border: 1px solid #bbb;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="app" v-cloak>
|
||||
<el-card shadow="never">
|
||||
<search @search="doSearch">
|
||||
<search-item label="名称">
|
||||
<el-input placeholder="请输入名称" v-model="pageForm.displayName"></el-input>
|
||||
</search-item>
|
||||
<search-item label="编码">
|
||||
<el-input placeholder="请输入编码" v-model="pageForm.name"></el-input>
|
||||
</search-item>
|
||||
</search>
|
||||
</el-card>
|
||||
|
||||
<el-card shadow="never">
|
||||
<table-tool>
|
||||
<el-button size="mini" icon="el-icon-plus" type="primary" @click="openAdd">新增</el-button>
|
||||
</table-tool>
|
||||
<el-table :data="tableData" @sort-change="pageOrder" header-align="center" border style="width: 100%" row-key="id">
|
||||
<el-table-column label="序号" width="50" type="index" :index="indexMethod"></el-table-column>
|
||||
<el-table-column label="名称" prop="name"></el-table-column>
|
||||
<el-table-column label="编码" prop="code"></el-table-column>
|
||||
<el-table-column label="操作" width="200">
|
||||
<template slot-scope="scope">
|
||||
<el-link size="mini" type="primary" @click="$refs.processViewerRef.onOpen(scope.row)">查看</el-link>
|
||||
<el-link size="mini" type="primary" @click="openEdit(scope.row)">编辑</el-link>
|
||||
<el-link size="mini" type="primary" @click="openNodeConfig(scope.row.id)">配置</el-link>
|
||||
<el-link size="mini" type="danger" @click="doDelete(scope.row.id)">删除</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<!--#include("/layouts/pagination.html"){}#-->
|
||||
</el-card>
|
||||
|
||||
<el-dialog title="流程定义" width="30%" :close-on-click-modal="false" :visible.sync="dialogVisible">
|
||||
<el-form :model="formData" ref="form" label-width="80px">
|
||||
<el-form-item label="名称" prop="name" :rules="{required: true, message: '名称不能为空', trigger: 'blur'}">
|
||||
<el-input v-model="formData.name" placeholder="名称"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="编码" prop="code" :rules="{required: true, message: '编码不能为空', trigger: 'blur'}">
|
||||
<el-input v-model="formData.code" placeholder="编码"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="URL" prop="url" :rules="{required: true, message: 'URL不能为空', trigger: 'blur'}">
|
||||
<el-input v-model="formData.url" placeholder="URL"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="H5URL" prop="h5url" :rules="{required: false, message: 'H5URL不能为空', trigger: 'blur'}">
|
||||
<el-input v-model="formData.h5url" placeholder="H5URL"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="doSubmit">确 定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog title="节点配置" width="80%" :close-on-click-modal="false" :visible.sync="nodeDialogVisible">
|
||||
<el-form :model="nodeFormData" ref="nodeForm" label-width="120px" size="small">
|
||||
<el-form-item label="节点配置" prop="nodeDefine">
|
||||
<el-table :data="nodeFormData.nodes">
|
||||
<el-table-column label="名称" prop="nodeName" fixed="left" min-width="180">
|
||||
<template slot-scope="{row}">
|
||||
<el-input v-model="row.nodeName" max="20" clearable></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="编码" prop="nodeCode" width="100px">
|
||||
<template slot-scope="{row}">
|
||||
<el-input v-model="row.nodeCode" max="20" clearable></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="节点类型" prop="nodeType" width="100px">
|
||||
<template slot-scope="{row}">
|
||||
<el-select v-model="row.nodeType" clearable>
|
||||
<el-option value="START" label="开始"></el-option>
|
||||
<el-option value="TASK" label="任务"></el-option>
|
||||
<el-option value="BACK" label="退回"></el-option>
|
||||
<el-option value="END" label="结束"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="完成类型" prop="nodeApprovalType" width="130px">
|
||||
<template slot-scope="{row}">
|
||||
<el-select v-model="row.nodeApprovalType" clearable>
|
||||
<el-option value="NODE_APPLY" label="申请" v-if="row.nodeType==='START'"></el-option>
|
||||
<el-option value="NODE_PENDING" label="待审批" v-if="row.nodeType==='TASK'"></el-option>
|
||||
<el-option value="NODE_PASS" label="审批通过" v-if="row.nodeType==='END'"></el-option>
|
||||
<el-option value="NODE_REJECT" label="审批拒绝" v-if="row.nodeType==='END'"></el-option>
|
||||
<el-option value="NODE_BACK" label="审批退回" v-if="row.nodeType==='BACK'"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="参与类型" prop="nodePerformType" width="100px">
|
||||
<template slot-scope="{row}">
|
||||
<el-select v-model="row.nodePerformType" clearable v-if="['TASK','START','BACK'].includes(row.nodeType)">
|
||||
<el-option value="ORDINARY" label="普通"></el-option>
|
||||
<el-option value="COUNTERSIGN" label="会签" v-if="row.nodeType==='TASK'"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="通过下个节点" prop="passNextNodeId">
|
||||
<template slot-scope="{row}">
|
||||
<el-select v-model="row.passNextNodeId" clearable v-if="['TASK','START'].includes(row.nodeType)">
|
||||
<el-option :value="item.id" :label="item.nodeName" :key="item.id" v-for="item in nodeFormData.nodes"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="拒绝下个节点" prop="rejectNextNodeId">
|
||||
<template slot-scope="{row}">
|
||||
<el-select v-model="row.rejectNextNodeId" clearable v-if="row.nodeType==='TASK'" :disabled="row.nodeType!=='TASK'">
|
||||
<el-option :value="item.id" :label="item.nodeName" :key="item.id" v-for="item in nodeFormData.nodes"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="退回下个节点" prop="backNextNodeId">
|
||||
<template slot-scope="{row}">
|
||||
<el-select v-model="row.backNextNodeId" clearable v-if="row.nodeType==='TASK'" :disabled="row.nodeType!=='TASK'">
|
||||
<el-option :value="item.id" :label="item.nodeName" :key="item.id" v-for="item in nodeFormData.nodes"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="动态决策表达式" prop="dynamicDecisions">
|
||||
<template slot-scope="{row}">
|
||||
<el-link type="primary" @click="openDynamicDecision(row)">点击配置</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="更多配置" prop="moreConfig">
|
||||
<template slot-scope="{row}">
|
||||
<el-link type="primary" @click="openMoreConfig(row)">更多配置</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column width="140px" fixed="right">
|
||||
<template #header>
|
||||
<el-button size="mini" icon="el-icon-plus" type="primary" @click="addNewNode">添加</el-button>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-link size="mini" type="danger" @click="nodeFormData.nodes.splice(scope.$index,1)">删除</el-link>
|
||||
<el-link size="mini" type="primary" @click="upNode(scope.$index)" :disabled="scope.$index===0">上移</el-link>
|
||||
<el-link
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="downNode(scope.$index)"
|
||||
:disabled="scope.$index===nodeFormData.nodes.length-1"
|
||||
>
|
||||
下移
|
||||
</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<!-- <el-button type="primary" @click="refreshNode">刷新</el-button>-->
|
||||
<div slot="footer">
|
||||
<el-button @click="nodeDialogVisible=false">取消</el-button>
|
||||
<el-button type="primary" @click="doSubmitNodes">确定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog :title="dynamicDecisionNodeTitle" width="50%" :close-on-click-modal="false" :visible.sync="dynamicDecisionNodeDialogVisible">
|
||||
<el-form :model="dynamicDecisionNodeFormData" ref="dynamicDecisionNodeForm" label-width="80px">
|
||||
<el-table :data="dynamicDecisionNodeFormData.dynamicDecisions">
|
||||
<el-table-column label="条件" prop="condition">
|
||||
<template slot-scope="{row}">
|
||||
<el-input v-model="row.condition" clearable></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="说明" prop="desc">
|
||||
<template slot-scope="{row}">
|
||||
<el-input v-model="row.desc" clearable></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="下个节点" prop="toNodeId">
|
||||
<template slot-scope="{row}">
|
||||
<el-select v-model="row.toNodeId" clearable>
|
||||
<el-option :value="item.id" :label="item.nodeName" :key="item.id" v-for="item in nodeFormData.nodes"></el-option>
|
||||
</el-select>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column>
|
||||
<template #header>
|
||||
<el-button size="mini" icon="el-icon-plus" type="primary" @click="dynamicDecisionNodeFormData.dynamicDecisions.push({})">
|
||||
添加
|
||||
</el-button>
|
||||
</template>
|
||||
<template slot-scope="scope">
|
||||
<el-link size="mini" type="danger" @click="dynamicDecisionNodeFormData.dynamicDecisions.splice(scope.$index,1)">删除</el-link>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-form>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog title="更多配置" width="50%" :close-on-click-modal="false" :visible.sync="moreConfigDialogVisible">
|
||||
<el-form :model="moreConfigFormData" label-width="150px">
|
||||
<el-form-item label="电脑端审核地址" prop="url" :rules="[{required:true,message:'请输入电脑端审核地址',trigger:['blur','change']}]">
|
||||
<el-input v-model="moreConfigFormData.url" clearable placeholder="请输入电脑端审核地址"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="移动端审核地址">
|
||||
<el-input v-model="moreConfigFormData.h5url" clearable placeholder="请输入移动端审核地址"></el-input>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button @click="moreConfigDialogVisible=false">取消</el-button>
|
||||
<el-button type="primary" @click="doSubmitMoreConfig">确定</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<!-- <div id="chart_container">-->
|
||||
<!-- <div class="flowchart-example-container" id="flowchartworkspace"></div>-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
|
||||
<script nonce="${cspNonce!}">
|
||||
const vue = new Vue({
|
||||
el: "#app",
|
||||
mixins: [initTableMixins],
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
nodeApprovalTypeOptions: [],
|
||||
formData: {},
|
||||
|
||||
nodeDialogVisible: false,
|
||||
nodeFormData: {
|
||||
id: null,
|
||||
nodes: []
|
||||
},
|
||||
|
||||
dynamicDecisionNodeDialogVisible: false,
|
||||
dynamicDecisionNodeFormData: {},
|
||||
|
||||
moreConfigDialogVisible: false,
|
||||
moreConfigFormData: {}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
dynamicDecisionNodeTitle() {
|
||||
return this.dynamicDecisionNodeFormData.nodeName
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
openAdd() {
|
||||
this.dialogVisible = true
|
||||
this.formData = {}
|
||||
},
|
||||
openEdit(row) {
|
||||
this.dialogVisible = true
|
||||
this.formData = { ...row }
|
||||
},
|
||||
|
||||
doSubmit() {
|
||||
this.$refs.form.validate((valid) => {
|
||||
if (valid) {
|
||||
this.$axios
|
||||
.post("/platform/bpm/processDefine/" + (this.formData.id ? "update" : "insert"), {
|
||||
define: JSON.stringify(this.formData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.dialogVisible = false
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
doDelete(id) {
|
||||
this.$confirm("您确定要删除吗?", "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "info"
|
||||
}).then(() => {
|
||||
this.$axios.post("/platform/bpm/processDefine/delete", { id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
openNodeConfig(id) {
|
||||
this.nodeFormData.id = id
|
||||
this.nodeDialogVisible = true
|
||||
this.$axios.post("/platform/bpm/processDefine/nodes", { id }).then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.nodeFormData.nodes = res.data
|
||||
}
|
||||
})
|
||||
},
|
||||
addNewNode() {
|
||||
this.$axios
|
||||
.post("/platform/bpm/processDefine/generateNodeId", {
|
||||
ids: JSON.stringify(this.nodeFormData.nodes.map((item) => item.id))
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.nodeFormData.nodes.push({
|
||||
id: res.data
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
openDynamicDecision(row) {
|
||||
this.dynamicDecisionNodeFormData = row
|
||||
if (!this.dynamicDecisionNodeFormData.dynamicDecisions) {
|
||||
this.dynamicDecisionNodeFormData.dynamicDecisions = []
|
||||
}
|
||||
this.dynamicDecisionNodeDialogVisible = true
|
||||
},
|
||||
doSubmitNodes() {
|
||||
this.$axios
|
||||
.post("/platform/bpm/processDefine/updateSubmitNodes", {
|
||||
define: JSON.stringify(this.nodeFormData)
|
||||
})
|
||||
.then((res) => {
|
||||
if (res.code === 0) {
|
||||
this.$message.success(res.msg)
|
||||
this.doSearch()
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
openMoreConfig(row) {
|
||||
this.moreConfigFormData = { ...row }
|
||||
console.log(this.moreConfigFormData)
|
||||
this.moreConfigDialogVisible = true
|
||||
},
|
||||
doSubmitMoreConfig() {
|
||||
this.nodeFormData.nodes.forEach((item) => {
|
||||
if (item.id === this.moreConfigFormData.id) {
|
||||
item.url = this.moreConfigFormData.url
|
||||
item.h5url = this.moreConfigFormData.h5url
|
||||
}
|
||||
})
|
||||
this.moreConfigDialogVisible = false
|
||||
},
|
||||
|
||||
//上移node
|
||||
upNode(index) {
|
||||
this.nodeFormData.nodes.splice(index - 1, 0, this.nodeFormData.nodes.splice(index, 1)[0])
|
||||
},
|
||||
downNode(index) {
|
||||
this.nodeFormData.nodes.splice(index + 1, 0, this.nodeFormData.nodes.splice(index, 1)[0])
|
||||
},
|
||||
|
||||
refreshNode() {}
|
||||
},
|
||||
mounted() {},
|
||||
created() {
|
||||
this.pageData()
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
<!--#
|
||||
}
|
||||
#-->
|
||||
Reference in New Issue
Block a user