Compare commits
2 Commits
1e6e01eb31
...
adafbc5985
| Author | SHA1 | Date |
|---|---|---|
|
|
adafbc5985 | |
|
|
3a1aa488bb |
|
|
@ -2,7 +2,8 @@
|
|||
import { defHttp } from '@/utils/http/axios';
|
||||
import {SchemeListParams,GetSchemeModel,AddParams,
|
||||
DeleteParams,UpdateParams,StateParams,HistoryParams,GetHistoryModel,SchemeParams,DetailParams} from './model/wfSchemeInfoModel'
|
||||
enum Api {
|
||||
|
||||
enum Api {
|
||||
// 流程模板基本信息
|
||||
LoadPage = '/api/WFSchemeInfo/LoadPage',
|
||||
Add = '/api/WFSchemeInfo/Add',
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
import { defHttp } from '@/utils/http/axios';
|
||||
import {TableListParams,TableListModel,TableFormsParams,TableFormsModel} from './model/flowPenal'
|
||||
|
||||
enum Api {
|
||||
GetTableList = '/api/FormModule/GetTableList',
|
||||
GetTableForms = '/api/CodeTable/GetForms',
|
||||
Update = '/api/SysDataItemDetail/Update',
|
||||
Delete = '/api/SysDataItemDetail/Delete',
|
||||
}
|
||||
/**
|
||||
* @description: getTableList 获取表
|
||||
*/
|
||||
export function getTableList(params: TableListParams) {
|
||||
return defHttp.get<TableListModel>({ url: Api.GetTableList, params });
|
||||
}
|
||||
/**
|
||||
* @description: getTableForms 获取表的对象集合
|
||||
*/
|
||||
export function getTableForms(params: TableFormsParams) {
|
||||
return defHttp.get<TableFormsModel>({ url: Api.GetTableForms, params });
|
||||
}
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
/**
|
||||
* @description: 表数据
|
||||
*/
|
||||
export interface TableListModel {
|
||||
name: string;
|
||||
description: number;
|
||||
dbObjectType: number;
|
||||
}
|
||||
/**
|
||||
* @description: 获取数据库表
|
||||
*/
|
||||
export interface TableListParams {
|
||||
code: string;
|
||||
}
|
||||
/**
|
||||
* @description: 表对象集合的参数
|
||||
*/
|
||||
export interface TableFormsParams {
|
||||
dbCode: string;
|
||||
tableNames: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 表对象集合
|
||||
*/
|
||||
export interface TableFormsModel {
|
||||
db_codetable: object;
|
||||
db_codecolumnsList:object
|
||||
}
|
||||
|
|
@ -9,7 +9,7 @@ export interface SchemeListParams {
|
|||
ids?: string;
|
||||
}
|
||||
/**
|
||||
* @description: 获取流程模板详情参数
|
||||
* @description: 获取流程模板详情参数 \获取数据库表
|
||||
*/
|
||||
export interface DetailParams {
|
||||
code: string;
|
||||
|
|
|
|||
|
|
@ -63,19 +63,21 @@
|
|||
validateFlow
|
||||
})
|
||||
function connectionAdded(node) {
|
||||
console.log(node)
|
||||
data.element = node;
|
||||
console.log('connectionAdded')
|
||||
|
||||
}
|
||||
function connectionRemoved(node) {
|
||||
console.log(node)
|
||||
console.log('connectionRemoved')
|
||||
}
|
||||
function connectionChanged(node) {
|
||||
console.log(node)
|
||||
data.element = node;
|
||||
console.log('connectionChanged')
|
||||
|
||||
|
||||
}
|
||||
function elementClick(element) {
|
||||
console.log(element)
|
||||
console.log('elementClick')
|
||||
data.element = element;
|
||||
}
|
||||
function initModeler(modeler) {
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@ export default {
|
|||
"Timer start event": "定时开始事件",
|
||||
"Conditional start event": "条件开始事件",
|
||||
"Signal start event": "信号开始事件",
|
||||
"Exclusive gateway":"排他网关",
|
||||
"Parallel gateway":"并行网关",
|
||||
"Inclusive gateway":"包容网关",
|
||||
"Complex gateway":"复杂网关",
|
||||
|
|
|
|||
|
|
@ -5,16 +5,26 @@
|
|||
<start-event-option ref="startRef" :element="data.currentWfNode" :schemeCode="props.schemeCode"
|
||||
:pageView="props.pageView" :pageType="props.pageType"
|
||||
:class="data.currentWfNode.type=='bpmn:StartEvent' ? '' : 'hidden'"></start-event-option>
|
||||
<user-task-option ref="taskRef" :element="data.currentWfNode" :schemeCode="props.schemeCode" :pageView="props.pageView" :pageType="props.pageType"
|
||||
<user-task-option ref="taskRef" :element="data.currentWfNode" :schemeCode="props.schemeCode"
|
||||
:pageView="props.pageView" :pageType="props.pageType"
|
||||
:class="data.currentWfNode.type=='bpmn:Task' ? '' : 'hidden'">
|
||||
</user-task-option>
|
||||
<end-event-option ref="endRef" :element="data.currentWfNode" :schemeCode="props.schemeCode"
|
||||
:class="data.currentWfNode.type=='bpmn:EndEvent' ? '' : 'hidden'"></end-event-option>
|
||||
<subprocess-option ref="subprocessRef" :element="data.currentWfNode" :schemeCode="props.schemeCode" :pageView="props.pageView" :pageType="props.pageType"
|
||||
<subprocess-option ref="subprocessRef" :element="data.currentWfNode" :schemeCode="props.schemeCode"
|
||||
:pageView="props.pageView" :pageType="props.pageType"
|
||||
:class="data.currentWfNode.type=='bpmn:SubProcess' ? '' : 'hidden'"></subprocess-option>
|
||||
<exclusive-gateway-option ref="exclusiveGatewayRef" :element="data.currentWfNode" :schemeCode="props.schemeCode"
|
||||
:pageView="props.pageView" :pageType="props.pageType"
|
||||
:class="data.currentWfNode.type=='bpmn:ExclusiveGateway' ? '' : 'hidden'">
|
||||
</exclusive-gateway-option>
|
||||
<myline-option ref="mylineRef" :element="data.currentWfNode" :schemeCode="props.schemeCode"
|
||||
:pageView="props.pageView" :pageType="props.pageType" :wfData="data.wfData" :flowRef="data.flowRef"
|
||||
:class="data.currentWfNode.type=='bpmn:SequenceFlow' ? '' : 'hidden'">
|
||||
</myline-option>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane tab="流程属性" key="2">
|
||||
<shcemeinfo-config ref="shcemeinfoRef" :disabled="true" :pageType="props.pageType"></shcemeinfo-config>
|
||||
<shcemeinfo-config ref="shcemeinfoRef" :disabled="true" :pageType="props.pageType"></shcemeinfo-config>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="3" tab="发起权限" force-render v-if="props.pageType!='detail'">
|
||||
<auth-config ref="authRef"></auth-config>
|
||||
|
|
@ -47,8 +57,8 @@
|
|||
import endEventOption from './endEvent/index.vue'
|
||||
// 网关和
|
||||
import gatewayAndOption from './config/gatewayAnd.vue'
|
||||
// 网关包容
|
||||
import gatewayInclusiveOption from './config/gatewayInclusive.vue'
|
||||
// 排他网关
|
||||
import exclusiveGatewayOption from './exclusiveGateway/index.vue'
|
||||
// 网关Xor
|
||||
import gatewayXorOption from './config/gatewayXor.vue'
|
||||
// 脚本任务
|
||||
|
|
@ -56,7 +66,7 @@
|
|||
// 子流程
|
||||
import subprocessOption from './subprocess/index.vue'
|
||||
// 线
|
||||
import mylineOption from './config/myline.vue'
|
||||
import mylineOption from './myline/index.vue'
|
||||
/**
|
||||
* 侧边栏
|
||||
* @Author MiyueFE
|
||||
|
|
@ -86,14 +96,18 @@
|
|||
const taskRef = ref < any > ()
|
||||
const endRef = ref < any > ()
|
||||
const subprocessRef = ref < any > ()
|
||||
const exclusiveGatewayRef = ref < any > ()
|
||||
const configActiveName = ref('2')
|
||||
const data = reactive({
|
||||
currentWfNode: undefined,
|
||||
wfNodeName: "",
|
||||
wfData:[],
|
||||
flowRef:{}
|
||||
})
|
||||
watch(
|
||||
() => props.element,
|
||||
(newVal, oldVal) => {
|
||||
console.log(newVal)
|
||||
var typeName = newVal.type.replace('bpmn:', '')
|
||||
if (newVal.type == "bpmn:Process") {
|
||||
data.currentWfNode = {
|
||||
|
|
@ -132,6 +146,27 @@
|
|||
type: newVal.type
|
||||
}
|
||||
break;
|
||||
case 'ExclusiveGateway':
|
||||
data.wfNodeName = "排他网关"
|
||||
data.currentWfNode = {
|
||||
id: newVal.id,
|
||||
type: newVal.type
|
||||
}
|
||||
break;
|
||||
case 'SequenceFlow':
|
||||
data.wfNodeName = "线条"
|
||||
data.currentWfNode = {
|
||||
id: newVal.id,
|
||||
type: newVal.type
|
||||
}
|
||||
// 获取线条两头的节点id
|
||||
data.flowRef={
|
||||
from:newVal.businessObject.sourceRef.id,
|
||||
to:newVal.businessObject.targetRef.id,
|
||||
}
|
||||
// 获取排他网关和审核节点的数据,为选择流转条件使用
|
||||
getWfData()
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
|
@ -219,7 +254,34 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function getWfData() {
|
||||
let wfData = []
|
||||
// 排他网关exclusiveGatewayRef
|
||||
// 审核节点taskRef
|
||||
let taskFrom = await !(taskRef.value) ? {} : taskRef.value.getForm();
|
||||
let gatewayInclusiveFrom = await !(exclusiveGatewayRef.value) ? {} : exclusiveGatewayRef.value.getForm();
|
||||
if (gatewayInclusiveFrom != undefined) {
|
||||
wfData.push(gatewayInclusiveFrom)
|
||||
}
|
||||
if (taskFrom != undefined) {
|
||||
wfData.push(taskFrom)
|
||||
}
|
||||
// 3.流程节点信息
|
||||
wfData.forEach(node => {
|
||||
if (node.type == 'myline' && !node.isInit) {
|
||||
node.isInit = true
|
||||
node.lineConditions = ''
|
||||
const fromNode = this.wfData.find(t => t.id == node.from)
|
||||
if (fromNode.type == 'userTask') {
|
||||
if (fromNode.btnlist.findIndex(t => t.code == 'agree' && !t.hidden) != -1) {
|
||||
node.lineConditions = 'agree' // 流转条件
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
data.wfData = wfData
|
||||
|
||||
}
|
||||
async function validatePanel() {
|
||||
let res = await shcemeinfoRef.value.validateForm();
|
||||
return res
|
||||
|
|
@ -243,13 +305,20 @@
|
|||
let wfData = []
|
||||
wfData.push(startFrom)
|
||||
wfData.push(endFrom)
|
||||
// 审核节点
|
||||
let taskFrom = await !(taskRef.value) ? {} : taskRef.value.getForm();
|
||||
if (taskFrom != undefined) {
|
||||
wfData.push(taskFrom)
|
||||
}
|
||||
// 子流程
|
||||
let subprocessFrom = await !(subprocessRef.value) ? {} : subprocessRef.value.getForm();
|
||||
if (subprocessFrom != undefined) {
|
||||
wfData.push(subprocessFrom)
|
||||
}
|
||||
if (taskFrom != undefined) {
|
||||
wfData.push(taskFrom)
|
||||
// 排他网关
|
||||
let gatewayInclusiveFrom = await !(exclusiveGatewayRef.value) ? {} : exclusiveGatewayRef.value.getForm();
|
||||
if (gatewayInclusiveFrom != undefined) {
|
||||
wfData.push(gatewayInclusiveFrom)
|
||||
}
|
||||
// 3.流程节点信息
|
||||
wfData.forEach(node => {
|
||||
|
|
@ -324,8 +393,8 @@
|
|||
onMounted(() => {
|
||||
if (props.schemeCode) {
|
||||
getDetailInfo()
|
||||
}
|
||||
if(props.pageType == 'detail') {
|
||||
}
|
||||
if (props.pageType == 'detail') {
|
||||
var content = JSON.parse(props.pageView)
|
||||
shcemeinfoRef.value.setForm(content)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,145 +0,0 @@
|
|||
<template>
|
||||
<div class="l-from-body" >
|
||||
<el-form :model="formData" :rules="rules" size="mini" ref="form" label-width="120px" >
|
||||
<el-col :span="24">
|
||||
<el-form-item label="条件名称" prop="name">
|
||||
<el-input v-model="formData.name" >
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="数据库" prop="dbCode">
|
||||
<el-select v-model="formData.dbCode" placeholder="请选择">
|
||||
<el-option-group
|
||||
v-for="group in lr_dblinkTree"
|
||||
:key="group.id"
|
||||
:label="group.label">
|
||||
<el-option
|
||||
v-for="item in group.children"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-option-group>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="数据表" prop="table">
|
||||
<l-codetable-select
|
||||
@change="handleTableChange"
|
||||
:dbCode="formData.dbCode"
|
||||
v-model="formData.table"></l-codetable-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="关联流程字段" prop="rfield">
|
||||
<l-select :options="formData.columns" valueKey="name" labelKey="coment" v-model="formData.rfield" >
|
||||
</l-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="比较字段" prop="cfield">
|
||||
<l-select :options="formData.columns" valueKey="name" labelKey="coment" v-model="formData.cfield" >
|
||||
</l-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="比较类型" prop="compareType">
|
||||
<l-select :options="options" v-model="formData.compareType" >
|
||||
</l-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="数据值" prop="value">
|
||||
<el-input v-model="formData.value" >
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name:'condition-formula',
|
||||
props:{
|
||||
},
|
||||
data(){
|
||||
return {
|
||||
formData:{
|
||||
dbCode:'',
|
||||
table:'',
|
||||
columns:[],
|
||||
rfield:'',
|
||||
cfield:'',
|
||||
compareType:'',
|
||||
value:'',
|
||||
name:''
|
||||
},
|
||||
rules: {
|
||||
dbCode: [
|
||||
{ required: true, message: '请选择数据库' }
|
||||
],
|
||||
table: [
|
||||
{ required: true, message: '请选择数据表' }
|
||||
],
|
||||
rfield: [
|
||||
{ required: true, message: '请选择关联字段' }
|
||||
],
|
||||
cfield: [
|
||||
{ required: true, message: '请选择比较字段' }
|
||||
],
|
||||
compareType: [
|
||||
{ required: true, message: '请选择比较类型' }
|
||||
],
|
||||
value: [
|
||||
{ required: true, message: '请填写值' }
|
||||
],
|
||||
name: [
|
||||
{ required: true, message: '请填写条件名称' }
|
||||
]
|
||||
},
|
||||
options:[
|
||||
{ value: '1', label: '等于' },
|
||||
{ value: '2', label: '不等于' },
|
||||
{ value: '3', label: '大于' },
|
||||
{ value: '4', label: '大于等于' },
|
||||
{ value: '5', label: '小于' },
|
||||
{ value: '6', label: '小于等于' },
|
||||
{ value: '7', label: '包含' },
|
||||
{ value: '8', label: '不包含' },
|
||||
{ value: '9', label: '包含于' },
|
||||
{ value: '10', label: '不包含于' }]
|
||||
};
|
||||
},
|
||||
computed:{
|
||||
},
|
||||
created () {
|
||||
},
|
||||
methods:{
|
||||
handleTableChange(table){
|
||||
this.formData.columns = table.columns;
|
||||
console.log(table);
|
||||
},
|
||||
resetForm(){
|
||||
this.formData.columns = [];
|
||||
this.$refs.form && this.$refs.form.resetFields();
|
||||
},
|
||||
// 校验表单
|
||||
validateForm(callback){
|
||||
this.$refs.form.validate((valid) => {
|
||||
if(valid){
|
||||
callback();
|
||||
}
|
||||
});
|
||||
},
|
||||
setForm(data){
|
||||
this.formData = this.$deepClone(data);
|
||||
},
|
||||
getForm(){
|
||||
let formData = this.$deepClone(this.formData);
|
||||
return formData;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
@ -1,98 +0,0 @@
|
|||
<template>
|
||||
<div class="l-from-body" >
|
||||
<el-form :model="formData" :rules="rules" size="mini" ref="form" label-width="120px" >
|
||||
<el-col :span="24">
|
||||
<el-form-item label="条件名称" prop="name">
|
||||
<el-input v-model="formData.name" >
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="数据库" prop="dbCode">
|
||||
<el-select v-model="formData.dbCode" placeholder="请选择">
|
||||
<el-option-group
|
||||
v-for="group in lr_dblinkTree"
|
||||
:key="group.id"
|
||||
:label="group.label">
|
||||
<el-option
|
||||
v-for="item in group.children"
|
||||
:key="item.id"
|
||||
:label="item.label"
|
||||
:value="item.id">
|
||||
</el-option>
|
||||
</el-option-group>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<div style="padding:0 0 16px 120px;">
|
||||
<el-alert
|
||||
title="sql语句说明"
|
||||
type="warning"
|
||||
description="请在开发人员指导下进行配置SQL语句({processId}流程发起实例主键{userId}流程发起用户Id{userAccount}流程发起用户账号{companyId}流程发起用户公司{departmentId}流程发起用户部门)!"
|
||||
show-icon
|
||||
:closable="false"
|
||||
>
|
||||
</el-alert>
|
||||
</div>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="SQL语句" prop="sql">
|
||||
<el-input v-model="formData.sql" type="textarea"
|
||||
:autosize="{ minRows: 8}" >
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-form>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name:'condition-sql',
|
||||
props:{
|
||||
},
|
||||
data(){
|
||||
return {
|
||||
formData:{
|
||||
dbCode:'',
|
||||
sql:'',
|
||||
name:''
|
||||
},
|
||||
rules: {
|
||||
dbCode: [
|
||||
{ required: true, message: '请选择数据库' }
|
||||
],
|
||||
sql: [
|
||||
{ required: true, message: '请填写sql语句' }
|
||||
],
|
||||
name: [
|
||||
{ required: true, message: '请填写条件名称' }
|
||||
]
|
||||
},
|
||||
};
|
||||
},
|
||||
computed:{
|
||||
},
|
||||
created () {
|
||||
},
|
||||
methods:{
|
||||
resetForm(){
|
||||
this.$refs.form && this.$refs.form.resetFields();
|
||||
},
|
||||
// 校验表单
|
||||
validateForm(callback){
|
||||
this.$refs.form.validate((valid) => {
|
||||
if(valid){
|
||||
callback();
|
||||
}
|
||||
});
|
||||
},
|
||||
setForm(data){
|
||||
this.formData = this.$deepClone(data);
|
||||
},
|
||||
getForm(){
|
||||
let formData = this.$deepClone(this.formData);
|
||||
return formData;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
|
@ -1,211 +0,0 @@
|
|||
<template>
|
||||
<l-layout :top="180" >
|
||||
<template #top>
|
||||
<el-form
|
||||
class="l-form-config"
|
||||
label-width="88px"
|
||||
label-position="left"
|
||||
size="mini"
|
||||
>
|
||||
<el-form-item label="节点标识">
|
||||
<el-input v-model="node.id" readonly ></el-input>
|
||||
</el-form-item>
|
||||
<div style="padding:0 16px;">
|
||||
<el-alert
|
||||
title="包容网关说明"
|
||||
type="info"
|
||||
description="包容网关会等待所有分支汇入才往下执行,出口分支能执行多条(条件为true)"
|
||||
show-icon
|
||||
:closable="false"
|
||||
>
|
||||
</el-alert>
|
||||
</div>
|
||||
</el-form>
|
||||
</template>
|
||||
<l-layout :top="40">
|
||||
<template #top v-if="!disabled">
|
||||
<div style="padding-left:8px;float:left;" >
|
||||
<el-button-group>
|
||||
<el-button size="mini" icon="el-icon-plus" @click="handleFormulaClick">{{$t('公式')}}</el-button>
|
||||
<el-button size="mini" icon="el-icon-plus" @click="handleSQlClick">{{$t('sql语句')}}</el-button>
|
||||
</el-button-group>
|
||||
</div>
|
||||
<div style="padding-right:8px;float:right;">
|
||||
<el-button size="mini" type="danger" icon="el-icon-delete" @click="handleClearClick">{{$t('清空')}}</el-button>
|
||||
</div>
|
||||
</template>
|
||||
<l-table :columns="columns" :dataSource="node.conditions" >
|
||||
<template v-slot:type="scope" >
|
||||
{{typeFormat(scope.row.type)}}
|
||||
</template>
|
||||
<l-table-btns v-if="!disabled" :btns="tableBtns" @click="handleTableBtnClick" ></l-table-btns>
|
||||
</l-table>
|
||||
</l-layout>
|
||||
|
||||
|
||||
<l-dialog
|
||||
:title="$t('添加公式条件')"
|
||||
:visible.sync="formulaVisible"
|
||||
:height="480"
|
||||
|
||||
@ok="handleFormulaOk"
|
||||
@closed="handleFormulaClosed"
|
||||
@opened="handleFormulaOpened"
|
||||
>
|
||||
<condition-formula ref="conditionFormula" ></condition-formula>
|
||||
</l-dialog>
|
||||
|
||||
<l-dialog
|
||||
:title="$t('添加sql条件')"
|
||||
:visible.sync="sqlVisible"
|
||||
:height="480"
|
||||
|
||||
@ok="handleSqlOk"
|
||||
@closed="handleSqlClosed"
|
||||
@opened="handleSqlOpened"
|
||||
>
|
||||
<condition-sql ref="conditionSql" ></condition-sql>
|
||||
</l-dialog>
|
||||
|
||||
|
||||
</l-layout>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import conditionFormula from './conditionFormula.vue'
|
||||
import conditionSql from './conditionSql.vue'
|
||||
|
||||
export default {
|
||||
name:'gateway-inclusive-option',
|
||||
props:{
|
||||
disabled:{
|
||||
type:Boolean,
|
||||
default:false
|
||||
}
|
||||
},
|
||||
components: {
|
||||
conditionFormula,
|
||||
conditionSql
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
tableBtns:[
|
||||
{prop:'Edit',label:'编辑'},
|
||||
{prop:'Delete',label:'删除'}
|
||||
],
|
||||
columns:[
|
||||
{label:'类型',prop:'type',width:'80', align: 'center'},
|
||||
{label:'名称',prop:'name',minWidth:'100'},
|
||||
],
|
||||
tableData:[],
|
||||
|
||||
formulaVisible:false,
|
||||
sqlVisible:false,
|
||||
|
||||
editRow:null,
|
||||
isEdit:false,
|
||||
rowIndex:0,
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
node(){
|
||||
return this.wfdesign.currentWfNode;
|
||||
}
|
||||
},
|
||||
inject: ["wfdesign"],
|
||||
methods:{
|
||||
typeFormat(type){
|
||||
switch(type){
|
||||
case '1':
|
||||
return '表达式'
|
||||
case '2':
|
||||
return 'sql语句'
|
||||
}
|
||||
},
|
||||
handleTableBtnClick(btn){
|
||||
switch(btn.type){
|
||||
case 'Edit':
|
||||
this.isEdit = true;
|
||||
this.editRow = btn.row;
|
||||
this.rowIndex = btn.rowIndex;
|
||||
if(this.editRow.type == '1'){
|
||||
this.formulaVisible = true;
|
||||
}
|
||||
else{
|
||||
this.sqlVisible = true;
|
||||
}
|
||||
break;
|
||||
case 'Delete':
|
||||
this.node.conditions.splice(btn.rowIndex,1);
|
||||
break;
|
||||
}
|
||||
console.log(btn);
|
||||
//this.tableData.splice(btn.rowIndex,1);
|
||||
},
|
||||
handleFormulaClick(){
|
||||
this.isEdit = false;
|
||||
this.formulaVisible = true;
|
||||
},
|
||||
handleSQlClick(){
|
||||
this.isEdit = false;
|
||||
this.sqlVisible = true;
|
||||
},
|
||||
handleClearClick(){
|
||||
this.node.conditions = [];
|
||||
},
|
||||
handleFormulaOk(){
|
||||
this.$refs.conditionFormula.validateForm(()=>{
|
||||
let formData = this.$refs.conditionFormula.getForm();
|
||||
formData.type = '1';
|
||||
|
||||
if(this.isEdit){
|
||||
this.node.conditions[this.rowIndex] = formData;
|
||||
}
|
||||
else{
|
||||
formData.code = this.$uuid();
|
||||
this.node.conditions.push(formData);
|
||||
}
|
||||
|
||||
|
||||
this.formulaVisible = false;
|
||||
})
|
||||
},
|
||||
handleFormulaOpened(){
|
||||
if(this.isEdit){
|
||||
this.$refs.conditionFormula.setForm(this.editRow);
|
||||
}
|
||||
|
||||
},
|
||||
handleFormulaClosed(){
|
||||
this.$refs.conditionFormula.resetForm();
|
||||
},
|
||||
handleSqlOk(){
|
||||
this.$refs.conditionSql.validateForm(()=>{
|
||||
let formData = this.$refs.conditionSql.getForm();
|
||||
formData.type = '2';
|
||||
|
||||
if(this.isEdit){
|
||||
this.node.conditions[this.rowIndex] = formData;
|
||||
}
|
||||
else{
|
||||
formData.code = this.$uuid();
|
||||
this.node.conditions.push(formData);
|
||||
}
|
||||
|
||||
this.sqlVisible = false;
|
||||
})
|
||||
},
|
||||
handleSqlOpened(){
|
||||
if(this.isEdit){
|
||||
this.$refs.conditionSql.setForm(this.editRow);
|
||||
}
|
||||
},
|
||||
handleSqlClosed(){
|
||||
this.$refs.conditionSql.resetForm();
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
|
|
@ -1,120 +0,0 @@
|
|||
<!-- 开始节点配置 -->
|
||||
<template>
|
||||
<el-form
|
||||
class="l-form-config"
|
||||
label-width="88px"
|
||||
label-position="left"
|
||||
size="mini">
|
||||
<el-form-item label="节点标识">
|
||||
<el-input v-model="node.id" readonly ></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="conditionsOptions && conditionsOptions.length >0" label="流转条件">
|
||||
<l-select
|
||||
:disabled="disabled"
|
||||
|
||||
v-model="value"
|
||||
:options="conditionsOptions"
|
||||
|
||||
labelKey="name"
|
||||
valueKey="code"
|
||||
:multiple="true"
|
||||
placeholder="不选择,默认流转条件为true"
|
||||
></l-select>
|
||||
</el-form-item>
|
||||
|
||||
|
||||
</el-form>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name:'line-option',
|
||||
props:{
|
||||
disabled:{
|
||||
type:Boolean,
|
||||
default:false
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
conditionsOptions:[],
|
||||
value2:''
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
node(){
|
||||
return this.wfdesign.currentWfNode;
|
||||
},
|
||||
value:{
|
||||
get(){
|
||||
return this.value2;
|
||||
},
|
||||
set(val){
|
||||
this.value2 = val;
|
||||
this.node.lineConditions = val;
|
||||
}
|
||||
}
|
||||
},
|
||||
inject: ["wfdesign"],
|
||||
created(){
|
||||
this.getConditions()
|
||||
},
|
||||
methods:{
|
||||
getConditions(){
|
||||
let wfdata = this.wfdesign.handleGetWFData();
|
||||
let fromNode = wfdata.find(t=>t.id == this.node.from);
|
||||
/**
|
||||
* startEvent:'开始节点',
|
||||
endEvent:'结束节点',
|
||||
gatewayAnd:'并行网关',
|
||||
gatewayInclusive:'包含网关',
|
||||
gatewayXor:'排他网关',
|
||||
scriptTask:'脚本节点',
|
||||
userTask:'审核节点',
|
||||
subprocess:'子流程',
|
||||
*/
|
||||
switch(fromNode.type){
|
||||
case 'startEvent':
|
||||
case 'endEvent':
|
||||
case 'gatewayAnd':
|
||||
case 'scriptTask':
|
||||
case 'subprocess':
|
||||
this.node.lineConditions = ''
|
||||
this.conditionsOptions = []
|
||||
break
|
||||
case 'gatewayInclusive':
|
||||
case 'gatewayXor':
|
||||
this.conditionsOptions = fromNode.conditions
|
||||
// 过滤掉没有的值
|
||||
this.filterValue()
|
||||
break
|
||||
case 'userTask':
|
||||
this.conditionsOptions = fromNode.btnlist.filter(t=>!t.hidden)
|
||||
|
||||
|
||||
|
||||
// 过滤掉没有的值
|
||||
this.filterValue()
|
||||
break
|
||||
}
|
||||
|
||||
|
||||
|
||||
this.value2 = this.node.lineConditions
|
||||
},
|
||||
filterValue(){
|
||||
const vlist = this.node.lineConditions.split(',')
|
||||
const res = []
|
||||
vlist.forEach(item => {
|
||||
if(this.conditionsOptions.findIndex(t=>t.code == item) != -1){
|
||||
res.push(item)
|
||||
}
|
||||
})
|
||||
this.node.lineConditions = String(res)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
|
|
@ -0,0 +1,168 @@
|
|||
<template>
|
||||
<div class="user-task">
|
||||
<a-form ref="formRef" :rules="rules" :model="node" labelAlign="left" :label-col="labelCol"
|
||||
:wrapper-col="wrapperCol" :disabled="data.componentDisabled">
|
||||
<a-form-item label="节点标识">
|
||||
<a-input v-model:value="node.id" placeholder="请输入" readonly />
|
||||
</a-form-item>
|
||||
<a-alert message="排他网关说明"
|
||||
description="排他网关不会等待所有分支汇入才往下执行,只要有分支汇入就会往下执行,出口分支只会执行一条(条件为true,如果多条出口分支条件为true也执行一条)" type="info"
|
||||
show-icon />
|
||||
<a-space>
|
||||
<a-radio-group>
|
||||
<a-radio-button value="1" @click="handleFormulaClick">公式</a-radio-button>
|
||||
<a-radio-button value="2" @click="handleSQlClick">sql语句</a-radio-button>
|
||||
</a-radio-group>
|
||||
<a-button danger :size="size" @click="handleClearClick">清空</a-button>
|
||||
</a-space>
|
||||
<a-table :columns="data.columns" :data-source="node.conditions" bordered :pagination="false">
|
||||
<template #bodyCell="{ column, text, record }">
|
||||
<template v-if="['name', 'type'].includes(column.dataIndex)">
|
||||
<div>
|
||||
{{ text }}
|
||||
</div>
|
||||
</template>
|
||||
<template v-else-if="column.dataIndex === 'operation'">
|
||||
<a-button>编辑</a-button>
|
||||
<a-button danger @click='onDelete(record.name,false)'>删除</a-button>
|
||||
</template>
|
||||
</template>
|
||||
</a-table>
|
||||
</a-form>
|
||||
<a-modal width="40%" v-model:open="data.formulaVisible" title="添加公式条件" @ok="handleFormulaOk">
|
||||
<conditionFormula ref="conditionFormulaRef"></conditionFormula>
|
||||
</a-modal>
|
||||
<a-modal width="40%" v-model:open="data.sqlVisible" title="添加sql条件" @ok="handleSqlOk">
|
||||
<conditionSql ref="conditionSqlRef"></conditionSql>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import conditionFormula from './src/conditionFormula.vue'
|
||||
import conditionSql from './src/conditionSql.vue'
|
||||
import { reactive, ref, onMounted, nextTick, unref, h, watch, defineProps } from 'vue';
|
||||
const labelCol = { span: 7 };
|
||||
const wrapperCol = { span: 17 };
|
||||
const conditionFormulaRef = ref < any > ()
|
||||
const conditionSqlRef = ref < any > ()
|
||||
const props = defineProps({
|
||||
element: Object,
|
||||
schemeCode: String,
|
||||
pageType: String,
|
||||
pageView: String,
|
||||
})
|
||||
const node = ref({
|
||||
conditions: [],
|
||||
id: ''
|
||||
})
|
||||
watch(
|
||||
() => props.element,
|
||||
(newVal, oldVal) => {
|
||||
console.log(newVal)
|
||||
if (newVal.type == "bpmn:ExclusiveGateway") {
|
||||
node.value.id = newVal.id
|
||||
node.value.type = newVal.type
|
||||
if (props.pageType == 'detail') {
|
||||
getNode()
|
||||
}
|
||||
if (props.schemeCode) {
|
||||
getDetailInfo()
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
const data = reactive({
|
||||
tableBtns: [
|
||||
{ prop: 'Edit', label: '编辑' },
|
||||
{ prop: 'Delete', label: '删除' }
|
||||
],
|
||||
columns: [
|
||||
{ title: '类型', dataIndex: 'type' },
|
||||
{ title: '名称', dataIndex: 'name' },
|
||||
],
|
||||
tableData: [],
|
||||
|
||||
formulaVisible: false,
|
||||
sqlVisible: false,
|
||||
|
||||
editRow: null,
|
||||
rowIndex: 0,
|
||||
})
|
||||
function getNode() {
|
||||
var content = JSON.parse(props.pageView)
|
||||
content.wfData.forEach(element => {
|
||||
if (element.id == node.value.id) {
|
||||
node.value = element
|
||||
}
|
||||
});
|
||||
}
|
||||
async function getDetailInfo() {
|
||||
let data = await getDetail({ code: props.schemeCode })
|
||||
let scheme = JSON.parse(data.scheme.content);
|
||||
let wfData = scheme.wfData
|
||||
wfData.forEach(element => {
|
||||
if (element.id == node.value.id) {
|
||||
console.log(node)
|
||||
node.value = element
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
onMounted(() => {
|
||||
if (props.schemeCode) {
|
||||
getDetailInfo()
|
||||
}
|
||||
if (props.pageType == 'detail') {
|
||||
getNode()
|
||||
}
|
||||
})
|
||||
function typeFormat(type) {
|
||||
switch (type) {
|
||||
case '1':
|
||||
return '表达式'
|
||||
case '2':
|
||||
return 'sql语句'
|
||||
}
|
||||
}
|
||||
|
||||
function handleFormulaClick() {
|
||||
data.formulaVisible = true;
|
||||
}
|
||||
function handleSQlClick() {
|
||||
data.sqlVisible = true;
|
||||
}
|
||||
function handleClearClick() {
|
||||
node.conditions = [];
|
||||
}
|
||||
async function handleFormulaOk() {
|
||||
conditionFormulaRef.value.validateForm()
|
||||
let obj = conditionFormulaRef.value.getForm()
|
||||
console.log(obj.name)
|
||||
if (obj.name != '') {
|
||||
data.formulaVisible = false;
|
||||
}
|
||||
|
||||
}
|
||||
function handleSqlOk() {
|
||||
console.log(conditionSqlRef.value.getForm())
|
||||
// this.sqlVisible = false;
|
||||
}
|
||||
function getForm() {
|
||||
return node.value
|
||||
}
|
||||
defineExpose({
|
||||
getForm
|
||||
})
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
::v-deep .ant-alert-info {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
::v-deep .ant-table-wrapper {
|
||||
margin-top: 20px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,151 @@
|
|||
<template>
|
||||
<div class="l-from-body">
|
||||
<a-form ref="formRef" :rules="data.rules" :model="formData" labelAlign="left" :label-col="labelCol"
|
||||
:wrapper-col="wrapperCol">
|
||||
<a-form-item label="条件名称" name="name">
|
||||
<a-input v-model:value="formData.name" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
<!-- <a-form-item label="数据库" name="dbCode">
|
||||
<a-select v-model:value="formData.dbCode" placeholder="请选择" :options="data.options">
|
||||
<el-option-group v-for="group in lr_dblinkTree" :key="group.id" :label="group.label">
|
||||
<el-option v-for="item in group.children" :key="item.id" :label="item.label" :value="item.id">
|
||||
</el-option>
|
||||
</el-option-group>
|
||||
</a-select>
|
||||
</a-form-item> -->
|
||||
<a-form-item label="数据表" name="table">
|
||||
<!-- <a-select v-model:value="formData.table" placeholder="请选择" :options="formData.columns">
|
||||
</a-select> -->
|
||||
<a-space>
|
||||
<a-input v-model:value="formData.table" placeholder="请输入" readonly />
|
||||
<a-button @click="handleTableClick">选择</a-button>
|
||||
</a-space>
|
||||
</a-form-item>
|
||||
<a-form-item label="关联流程字段" name="rfield">
|
||||
<a-select v-model:value="formData.rfield" placeholder="请选择" :options="formData.columns">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item label="比较字段" name="cfield">
|
||||
<a-select v-model:value="formData.cfield" placeholder="请选择" :options="formData.columns">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item label="比较类型" name="compareType">
|
||||
<a-select v-model:value="formData.compareType" placeholder="请选择" :options="data.options">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item label="数据值" name="value">
|
||||
<a-input v-model:value="formData.value" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
<a-modal width="60%" height="80%" v-model:open="data.tableOpen" title="选择数据表" @ok="tableHandleOk">
|
||||
<SelectTable ref="tableRef"></SelectTable>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { reactive, ref, onMounted } from 'vue'
|
||||
import SelectTable from '@/components/SelectTable/index.vue'
|
||||
import { getTableForms } from '@/api/sys/flowPenal'
|
||||
|
||||
const labelCol = { span: 5 };
|
||||
const wrapperCol = { span: 17 };
|
||||
const formRef = ref < any > ()
|
||||
const tableRef = ref < any > ()
|
||||
|
||||
const data = reactive({
|
||||
rules: {
|
||||
dbCode: [
|
||||
{ required: true, message: '请选择数据库' }
|
||||
],
|
||||
table: [
|
||||
{ required: true, message: '请选择数据表' }
|
||||
],
|
||||
rfield: [
|
||||
{ required: true, message: '请选择关联字段' }
|
||||
],
|
||||
cfield: [
|
||||
{ required: true, message: '请选择比较字段' }
|
||||
],
|
||||
compareType: [
|
||||
{ required: true, message: '请选择比较类型' }
|
||||
],
|
||||
value: [
|
||||
{ required: true, message: '请填写值' }
|
||||
],
|
||||
name: [
|
||||
{ required: true, message: '请填写条件名称' }
|
||||
]
|
||||
},
|
||||
options: [
|
||||
{ value: '1', label: '等于' },
|
||||
{ value: '2', label: '不等于' },
|
||||
{ value: '3', label: '大于' },
|
||||
{ value: '4', label: '大于等于' },
|
||||
{ value: '5', label: '小于' },
|
||||
{ value: '6', label: '小于等于' },
|
||||
{ value: '7', label: '包含' },
|
||||
{ value: '8', label: '不包含' },
|
||||
{ value: '9', label: '包含于' },
|
||||
{ value: '10', label: '不包含于' }
|
||||
],
|
||||
tableOpen: false
|
||||
})
|
||||
let formData = ref({
|
||||
dbCode: '',
|
||||
table: '',
|
||||
columns: [],
|
||||
rfield: '',
|
||||
cfield: '',
|
||||
compareType: '',
|
||||
value: '',
|
||||
name: ''
|
||||
})
|
||||
function handleTableClick() {
|
||||
data.tableOpen = true
|
||||
}
|
||||
function tableHandleOk() {
|
||||
console.log(tableRef.value.getRow())
|
||||
const obj = tableRef.value.getRow()
|
||||
formData.value.table = obj[0].name
|
||||
handleTableChange(obj[0].name)
|
||||
data.tableOpen=false
|
||||
}
|
||||
// 选择数据表,把获取表头
|
||||
async function handleTableChange(table) {
|
||||
var querys = {
|
||||
dbCode: 'lrsystemdb',
|
||||
tableNames: table
|
||||
}
|
||||
console.log(querys)
|
||||
const data = await getTableForms(querys)
|
||||
console.log(data);
|
||||
}
|
||||
// 校验表单
|
||||
function validateForm() {
|
||||
formRef.value
|
||||
.validate()
|
||||
.then((values) => {
|
||||
return formData.value
|
||||
})
|
||||
.catch((error) => {
|
||||
console.log(error)
|
||||
return {}
|
||||
});
|
||||
}
|
||||
function setForm(data) {
|
||||
this.formData = this.$deepClone(data);
|
||||
}
|
||||
function getForm() {
|
||||
return formData.value;
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
validateForm,
|
||||
getForm
|
||||
})
|
||||
</script>
|
||||
<style scoped>
|
||||
.l-from-body {
|
||||
padding: 10px 30px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
<template>
|
||||
<div class="l-from-body">
|
||||
<a-form ref="formRef" :rules="data.rules" :model="formData" labelAlign="left" :label-col="labelCol"
|
||||
:wrapper-col="wrapperCol">
|
||||
<a-form-item label="条件名称" name="name">
|
||||
<a-input v-model:value="formData.name" placeholder="请输入" />
|
||||
</a-form-item>
|
||||
<a-form-item label="数据库" name="dbCode">
|
||||
<a-select v-model:value="formData.dbCode" placeholder="请选择" :options="data.options">
|
||||
<el-option-group v-for="group in lr_dblinkTree" :key="group.id" :label="group.label">
|
||||
<el-option v-for="item in group.children" :key="item.id" :label="item.label" :value="item.id">
|
||||
</el-option>
|
||||
</el-option-group>
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
<a-form-item label="SQL语句" name="sql">
|
||||
<a-textarea v-model:value="formData.sql" placeholder="请输入" :rows="4"></a-textarea>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { reactive, ref } from 'vue'
|
||||
const labelCol = { span: 5 };
|
||||
const wrapperCol = { span: 17 };
|
||||
const formRef = ref < any > ()
|
||||
const formData = reactive({
|
||||
name: '',
|
||||
dbCode: '',
|
||||
sql: '',
|
||||
|
||||
})
|
||||
const data = reactive({
|
||||
rules: {
|
||||
dbCode: [
|
||||
{ required: true, message: '请选择数据库' }
|
||||
],
|
||||
sql: [
|
||||
{ required: true, message: '请填写sql语句' }
|
||||
],
|
||||
name: [
|
||||
{ required: true, message: '请填写条件名称' }
|
||||
]
|
||||
},
|
||||
})
|
||||
async function getForm() {
|
||||
let res = await formRef.value
|
||||
.validate()
|
||||
.then((values) => {
|
||||
return formData.value
|
||||
})
|
||||
.catch((error: ValidateErrorEntity<FormState>) => {
|
||||
return {}
|
||||
});
|
||||
return res;
|
||||
}
|
||||
defineExpose({
|
||||
getForm
|
||||
})
|
||||
</script>
|
||||
<style scoped>
|
||||
.l-from-body{
|
||||
padding: 10px 30px;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
<!-- 开始节点配置 -->
|
||||
<template>
|
||||
<div class="start-event">
|
||||
<a-form ref="formRef" :rules="rules" :model="node" labelAlign="left" :label-col="labelCol" :wrapper-col="wrapperCol"
|
||||
:disabled="data.componentDisabled">
|
||||
<a-form-item label="节点标识">
|
||||
<a-input v-model:value="node.id" placeholder="请输入" readonly />
|
||||
</a-form-item>
|
||||
<a-form-item v-if="data.conditionsOptions && data.conditionsOptions.length >0" label="流转条件">
|
||||
<a-select v-model:value="node.lineConditions" placeholder="请选择" :options="data.conditionsOptions"
|
||||
:field-names="{ label: 'name', value: 'code' }">
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { getDetail } from '@/api/sys/WFSchemeInfo'
|
||||
import { ref, reactive, defineProps, onMounted, watch } from 'vue'
|
||||
const props = defineProps({
|
||||
disabled: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
element: Object,
|
||||
schemeCode: String,
|
||||
pageType: String,
|
||||
pageView: String,
|
||||
wfData: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
flowRef: {
|
||||
type: Object,
|
||||
default: () => ({
|
||||
from: '',
|
||||
to: ''
|
||||
})
|
||||
}
|
||||
})
|
||||
console.log(props)
|
||||
let node = ref({
|
||||
id: "",
|
||||
lineConditions: ''
|
||||
})
|
||||
const data = reactive({
|
||||
conditionsOptions: [],
|
||||
|
||||
})
|
||||
watch(
|
||||
() => props.element,
|
||||
(newVal, oldVal) => {
|
||||
if (newVal.type == "bpmn:SequenceFlow") {
|
||||
node.value.id = newVal.id
|
||||
node.value.type = newVal.type
|
||||
getConditions()
|
||||
if (props.pageType == 'detail') {
|
||||
getNode()
|
||||
}
|
||||
if (props.schemeCode) {
|
||||
getDetailInfo()
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
onMounted(() => {
|
||||
if (props.schemeCode) {
|
||||
getDetailInfo()
|
||||
}
|
||||
if (props.pageType == 'detail') {
|
||||
getNode()
|
||||
}
|
||||
})
|
||||
function getNode() {
|
||||
var content = JSON.parse(props.pageView)
|
||||
content.wfData.forEach(element => {
|
||||
if (element.id == node.value.id) {
|
||||
node.value = element
|
||||
}
|
||||
});
|
||||
}
|
||||
async function getDetailInfo() {
|
||||
let data = await getDetail({ code: props.schemeCode })
|
||||
let scheme = JSON.parse(data.scheme.content);
|
||||
let wfData = scheme.wfData
|
||||
wfData.forEach(element => {
|
||||
if (element.id == node.value.id) {
|
||||
node.value = element
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
function getConditions() {
|
||||
/**
|
||||
ExclusiveGateway:'排他网关',
|
||||
Task:'审核节点',
|
||||
*/
|
||||
if (props.wfData.length == 0) {
|
||||
return
|
||||
}
|
||||
let wfdata = JSON.parse(JSON.stringify(props.wfData))
|
||||
wfdata.forEach(element => {
|
||||
if (element.id == props.flowRef.from) {
|
||||
if (element.type == 'bpmn:ExclusiveGateway') {
|
||||
data.conditionsOptions = element.conditions
|
||||
} else if (element.type == 'bpmn:Task') {
|
||||
data.conditionsOptions = element.btnlist.filter(t => !t.hidden)
|
||||
} else {
|
||||
data.conditionsOptions = []
|
||||
}
|
||||
}
|
||||
});
|
||||
console.log(data.conditionsOptions)
|
||||
}
|
||||
|
||||
|
||||
function filterValue() {
|
||||
const vlist = this.node.lineConditions.split(',')
|
||||
const res = []
|
||||
vlist.forEach(item => {
|
||||
if (this.conditionsOptions.findIndex(t => t.code == item) != -1) {
|
||||
res.push(item)
|
||||
}
|
||||
})
|
||||
this.node.lineConditions = String(res)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
||||
|
|
@ -2,7 +2,7 @@
|
|||
<template>
|
||||
<div class="start-event">
|
||||
<a-form ref="formRef" :rules="rules" :model="node" labelAlign="left" :label-col="labelCol"
|
||||
:wrapper-col="wrapperCol">
|
||||
:wrapper-col="wrapperCol" :disabled="data.componentDisabled">
|
||||
<a-form-item label="节点标识">
|
||||
<a-input v-model:value="node.id" placeholder="请输入" readonly />
|
||||
</a-form-item>
|
||||
|
|
@ -131,7 +131,8 @@
|
|||
|
||||
],
|
||||
formRelations: [],
|
||||
elementData: props.element
|
||||
elementData: props.element,
|
||||
componentDisabled: props.pageType == 'detail' ? true : false
|
||||
})
|
||||
let node = ref({
|
||||
id: data.elementData.id,
|
||||
|
|
@ -165,7 +166,8 @@
|
|||
node.value.type = newVal.type
|
||||
if(props.pageType == 'detail'){
|
||||
getNode()
|
||||
}else{
|
||||
}
|
||||
if(props.schemeCode) {
|
||||
getDetailInfo()
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<!-- 开始节点配置 -->
|
||||
<template>
|
||||
<div class="subprocess">
|
||||
<a-form ref="formRef" :model="node" labelAlign="left" :label-col="labelCol" :wrapper-col="wrapperCol">
|
||||
<a-form ref="formRef" :model="node" labelAlign="left" :label-col="labelCol" :wrapper-col="wrapperCol" :disabled="data.componentDisabled">
|
||||
<a-form-item label="节点标识">
|
||||
<a-input v-model:value="node.id" placeholder="请输入" readonly />
|
||||
</a-form-item>
|
||||
|
|
@ -45,7 +45,8 @@
|
|||
node.value.type = newVal.type
|
||||
if(props.pageType == 'detail'){
|
||||
getNode()
|
||||
}else{
|
||||
}
|
||||
if(props.schemeCode) {
|
||||
getDetailInfo()
|
||||
}
|
||||
}
|
||||
|
|
@ -72,7 +73,9 @@
|
|||
}
|
||||
const data = reactive({
|
||||
list: [],
|
||||
verisons: []
|
||||
verisons: [],
|
||||
componentDisabled: props.pageType == 'detail' ? true : false
|
||||
|
||||
})
|
||||
onMounted(() => {
|
||||
if (props.schemeCode) {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<template>
|
||||
<div class="user-task">
|
||||
<a-form ref="formRef" :rules="rules" :model="node" labelAlign="left" :label-col="labelCol"
|
||||
:wrapper-col="wrapperCol">
|
||||
:wrapper-col="wrapperCol" :disabled="data.componentDisabled">
|
||||
<a-collapse v-model:activeKey="activeKey" accordion ghost>
|
||||
<a-collapse-panel key="1" header="基础配置">
|
||||
<a-form-item label="节点标识">
|
||||
|
|
@ -243,6 +243,8 @@
|
|||
],
|
||||
isLooker: false,
|
||||
conditionOptions: [{ value: '1', label: '同一个部门' }, { value: '2', label: '同一个公司' }, { value: '3', label: '发起人上级' }, { value: '4', label: '发起人下级' }],
|
||||
componentDisabled: props.pageType == 'detail' ? true : false
|
||||
|
||||
})
|
||||
let node = ref({
|
||||
id: "",
|
||||
|
|
@ -311,7 +313,8 @@
|
|||
node.value.type = newVal.type
|
||||
if (props.pageType == 'detail') {
|
||||
getNode()
|
||||
} else {
|
||||
}
|
||||
if (props.schemeCode) {
|
||||
getDetailInfo()
|
||||
}
|
||||
}
|
||||
|
|
@ -416,7 +419,6 @@
|
|||
node.value.btnlist = node.value.btnlist.filter(item => item.code !== key);
|
||||
}
|
||||
function getForm() {
|
||||
console.log(node.value)
|
||||
if (node.value.id != '') {
|
||||
return node.value
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,63 @@
|
|||
<template>
|
||||
<div>
|
||||
<BasicTable @register="registerTable" :searchInfo="searchInfo"> </BasicTable>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { reactive, } from 'vue';
|
||||
import { getTableList } from '@/api/sys/flowPenal'
|
||||
|
||||
import { BasicTable, useTable, TableAction } from '@/components/Table';
|
||||
|
||||
defineOptions({ name: 'RoleManagement' });
|
||||
|
||||
const searchInfo = reactive < Recordable > ({});
|
||||
|
||||
const [registerTable, { reload, getSelectRows, clearSelectedRowKeys }] = useTable({
|
||||
// 表格名称
|
||||
title: '数据表列表',
|
||||
// 获取数据的接口
|
||||
api: getTableList,
|
||||
// 表单列信息 BasicColumn[]
|
||||
columns: [
|
||||
{
|
||||
title: '表名',
|
||||
dataIndex: 'name',
|
||||
width: 200,
|
||||
},
|
||||
{
|
||||
title: '备注',
|
||||
dataIndex: 'description',
|
||||
width: 180,
|
||||
},
|
||||
],
|
||||
rowKey: 'name',
|
||||
// 使用搜索表单
|
||||
useSearchForm: false,
|
||||
// 显示表格设置工具
|
||||
showTableSetting: false,
|
||||
// 是否显示表格边框
|
||||
bordered: true,
|
||||
// 序号列
|
||||
showIndexColumn: false,
|
||||
// 勾选列
|
||||
rowSelection: {//多选框
|
||||
type: 'radio',
|
||||
},
|
||||
tableSetting: { fullScreen: true },
|
||||
isCanResizeParent: true,
|
||||
// 搜索
|
||||
handleSearchInfoFn(info) {
|
||||
return info;
|
||||
},
|
||||
});
|
||||
|
||||
function getRow() {
|
||||
let rows = getSelectRows();
|
||||
return rows
|
||||
}
|
||||
defineExpose({
|
||||
getRow
|
||||
})
|
||||
|
||||
</script>
|
||||
Loading…
Reference in New Issue