| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- <template>
- <div>
- <el-collapse v-model="activeNames" accordion>
- <el-collapse-item name="1">
- <template slot="title">
- <div class="title">
- <i class="header-icon el-icon-setting"></i>
- <span>基本设置</span>
- </div>
- </template>
- <div>
- <el-form label-position="right" label-width="70px">
- <el-form-item label="流程ID">
- <el-input v-model="localProcessData.key" @input="updateId"></el-input>
- </el-form-item>
- <el-form-item label="流程名称">
- <el-input v-model="localProcessData.name" @input="updateName"></el-input>
- </el-form-item>
- <el-form-item label="流程描述">
- <el-input v-model="localProcessData.description" @input="updateDesc"></el-input>
- </el-form-item>
- </el-form>
- </div>
- </el-collapse-item>
- <el-collapse-item name="2">
- <template slot="title">
- <div class="title">
- <i class="header-icon el-icon-setting"></i>
- <span>执行监听</span>
- </div>
- </template>
- <div>
- <div style="margin: 10px 3%;float: right">
- <el-button size="mini" plain @click="showEventDialogMethod">添加</el-button>
- </div>
- <el-table
- border :data="listenerTable"
- style="width: 93%;margin: 0 auto">
- <el-table-column align="center" prop="event"
- label="事件">
- </el-table-column>
- <el-table-column align="center" prop="type" :show-overflow-tooltip="true"
- label="类型">
- </el-table-column>
- <el-table-column align="center" prop="class" :show-overflow-tooltip="true"
- label="实现">
- </el-table-column>
- <el-table-column align="center"
- label="操作">
- <template slot-scope="scope">
- <div>
- <i class="el-icon-delete" @click="deleteEvent(scope.$index)"></i>
- </div>
- </template>
- </el-table-column>
- </el-table>
- </div>
- </el-collapse-item>
- <el-collapse-item name="3">
- <template slot="title">
- <div class="title">
- <i class="header-icon el-icon-setting"></i>
- <span>全局监听</span>
- </div>
- </template>
- <div>
- <div style="margin: 10px 3%;float: right">
- <el-button size="mini" plain @click="showGlobalDialogMethod">添加</el-button>
- </div>
- <el-table
- border :data="globalFormTable"
- style="width: 93%;margin: 0 auto">
- <el-table-column align="center" prop="class" :show-overflow-tooltip="true"
- label="值">
- </el-table-column>
- <el-table-column align="center"
- label="操作">
- <template slot-scope="scope">
- <div>
- <i class="el-icon-delete" @click="deleteGlobalEvent(scope.$index)"></i>
- </div>
- </template>
- </el-table-column>
- </el-table>
- </div>
- </el-collapse-item>
- </el-collapse>
- <GlobalEventListenerDialog @commitGlobalForm="commitGlobalForm"
- :dialogFormVisibleBool="showGlobalDialog"
- :formData="globalFormData" :element="element" :modeler="modeler" :globalFormTable="globalFormTable"></GlobalEventListenerDialog>
- <EventListenerDialog @commitEventForm="commitEventForm"
- :dialogFormVisibleBool="showEventDialog"
- :formData="eventFormData" :nodeElement="element" :modeler="modeler" :listenerTable="listenerTable"></EventListenerDialog>
- </div>
- </template>
- <script>
- import GlobalEventListenerDialog from "./dialog/GlobalEventListenerDialog"
- import EventListenerDialog from "./dialog/EventListenerDialog"
- export default {
- name: "ProcessProperty",
- data() {
- return {
- activeNames: ['1'],
- showGlobalDialog: false,
- showEventDialog: false,
- listenerTable: [
- ],
- globalFormTable: [
- ],
- globalFormData: {
- type:"start"
- },
- eventFormData: {
- event:"class",
- type:"start"
- },
- localProcessData:this.processData
- }
- },
- components: {
- GlobalEventListenerDialog,EventListenerDialog
- },
- props: {
- processData: {
- type: Object,
- required: true
- },
- modeler: {
- type: Object,
- required: true
- },
- element: {
- type: Object,
- required: true
- }
- },
- mounted() {
- var that = this
- if (this.element.businessObject
- && this.element.businessObject.extensionElements
- && this.element.businessObject.extensionElements.values) {
- that.globalFormTable = this.element.businessObject.extensionElements.values.filter(
- (item) => item.$type === 'activiti:EventListener'
- )
- that.listenerTable = this.element.businessObject.extensionElements.values.filter(
- (item) => {
- if (item.$type === 'activiti:ExecutionListener') {
- item.type = Object.keys(item)[1]
- item.class = item[Object.keys(item)[1]]
- return true;
- }
- }
- )
- }
- },
- methods: {
- deleteGlobalEvent(index){
- const data = this.globalFormTable[index]
- if (this.element.businessObject
- && this.element.businessObject.extensionElements
- && this.element.businessObject.extensionElements.values) {
- // 排除全局监听类型 并且class为删除的class的数据。
- const filterArr = this.element.businessObject.extensionElements.values.filter(
- (item) => !(item.$type === 'activiti:EventListener' && item.class === data.class)
- )
- // 刷新数据
- let extensionElements = this.modeler.get("bpmnFactory").create("bpmn:ExtensionElements", {values: filterArr});
- this.modeler.get("modeling").updateProperties(this.element, {extensionElements});
- }
- this.globalFormTable.splice(index, 1);
- },
- deleteEvent(index){
- const data = this.listenerTable[index]
- if (this.element.businessObject
- && this.element.businessObject.extensionElements
- && this.element.businessObject.extensionElements.values) {
- // 排除全局监听类型 并且class为删除的class的数据。
- const filterArr = this.element.businessObject.extensionElements.values.filter(
- (item) => !(item.$type === 'activiti:ExecutionListener' && item.event === data.event && data.class === item[data.type])
- )
- // 刷新数据
- let extensionElements = this.modeler.get("bpmnFactory").create("bpmn:ExtensionElements", {values: filterArr});
- this.modeler.get("modeling").updateProperties(this.element, {extensionElements});
- }
- this.listenerTable.splice(index, 1);
- },
- showGlobalDialogMethod(){
- this.showGlobalDialog = true;
- this.globalFormData={
- type:"class"
- }
- },
- showEventDialogMethod(){
- this.showEventDialog = true;
- this.eventFormData= {
- event:"start",
- type:"class"
- }
- },
- updateId(name) {
- this.modeler.get("modeling").updateProperties(this.element, {id: name});
- },
- updateName(name) {
- this.modeler.get("modeling").updateProperties(this.element, {name: name});
- },
- updateDesc(name) {
- let doc = this.modeler.get("bpmnFactory").create("bpmn:Documentation", {text: name});
- this.modeler.get("modeling").updateProperties(this.element, {documentation: [doc]});
- console.log( this.modeler.get("modeling"))
- },
- commitEventForm(from){
- this.showEventDialog = false
- if (from != null) {
- this.listenerTable.push(from)
- }
- },
- commitGlobalForm(from){
- this.showGlobalDialog = false
- if (from != null) {
- this.globalFormTable.push(from)
- }
- }
- }
- }
- </script>
- <style scoped>
- .bpmnclass .title span{
- font-weight: bold;
- margin-left: 5px;
- }
- .el-tooltip__popper{
- font-size: 14px;
- max-width:50%;
- backgroud: #68859a !important; /*背景色 !important优先级*/
- }
- </style>
|