Bläddra i källkod

b7754e9: 代理编制页面优化,排除代理人的角色逻辑

linweizeng 2 år sedan
förälder
incheckning
4703dd5b27

+ 149 - 138
src/api/platform/auth/resources.js

@@ -1,110 +1,110 @@
 import request from '@/utils/request'
 import request from '@/utils/request'
-import { AUTH_URL } from '@/api/baseUrl'
+import { AUTH_URL, CODEGEN_URL } from '@/api/baseUrl'
 
 
 /* 尝试变更树形结构的排序 */
 /* 尝试变更树形结构的排序 */
-export function treeSave(params) {
-  return request({
-    url: AUTH_URL() + '/cat/type/save',
-    method: 'post',
-    isLoading: true,
-    data: params
-  })
+export function treeSave (params) {
+    return request({
+        url: AUTH_URL() + '/cat/type/save',
+        method: 'post',
+        isLoading: true,
+        data: params
+    })
 }
 }
 
 
 /**
 /**
  * 获取菜单数据
  * 获取菜单数据
  * @param {*} params
  * @param {*} params
  */
  */
-export function getMenuData(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/getMenuData',
-    method: 'get',
-    params: params
-  })
+export function getMenuData (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/getMenuData',
+        method: 'get',
+        params: params
+    })
 }
 }
 
 
 /**
 /**
  * 获取资源下拉树
  * 获取资源下拉树
  * @param {*} params
  * @param {*} params
  */
  */
-export function getTreeData(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/getTreeData',
-    method: 'get',
-    params: params
-  })
+export function getTreeData (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/getTreeData',
+        method: 'get',
+        params: params
+    })
 }
 }
 /**
 /**
  * 查询列表数据
  * 查询列表数据
  * @param {*} params
  * @param {*} params
  */
  */
-export function queryPageList(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/query',
-    method: 'post',
-    data: params
-  })
+export function queryPageList (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/query',
+        method: 'post',
+        data: params
+    })
 }
 }
 /**
 /**
  * 删除数据
  * 删除数据
  * @param {*} params
  * @param {*} params
  */
  */
-export function remove(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/remove',
-    method: 'post',
-    isLoading: true,
-    params: params
-  })
+export function remove (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/remove',
+        method: 'post',
+        isLoading: true,
+        params: params
+    })
 }
 }
 /**
 /**
  * 保存数据
  * 保存数据
  * @param {*} params
  * @param {*} params
  */
  */
-export function save(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/save',
-    method: 'post',
-    isLoading: true,
-    data: params
-  })
+export function save (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/save',
+        method: 'post',
+        isLoading: true,
+        data: params
+    })
 }
 }
 
 
 /**
 /**
  * 获取数据
  * 获取数据
  * @param {*} params
  * @param {*} params
  */
  */
-export function get(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/get',
-    method: 'get',
-    params
-  })
+export function get (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/get',
+        method: 'get',
+        params
+    })
 }
 }
 
 
 /**
 /**
  *  保存资源移动
  *  保存资源移动
  * @param {*} params
  * @param {*} params
  */
  */
-export function saveMove(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/saveMove',
-    method: 'post',
-    isLoading: true,
-    params: params
-  })
+export function saveMove (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/saveMove',
+        method: 'post',
+        isLoading: true,
+        params: params
+    })
 }
 }
 /**
 /**
  *  保存资源移动
  *  保存资源移动
  * @param {*} params
  * @param {*} params
  */
  */
-export function sortSave(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/sortSave',
-    method: 'post',
-    isLoading: true,
-    params: params
-  })
+export function sortSave (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/sortSave',
+        method: 'post',
+        isLoading: true,
+        params: params
+    })
 }
 }
 
 
 /**
 /**
@@ -113,130 +113,141 @@ export function sortSave(params) {
  * @param {*} resourceId
  * @param {*} resourceId
  * @param {*} systemId
  * @param {*} systemId
  */
  */
-export function importXml(file, resourceId, systemId) {
-  const data = new FormData() // 创建form对象
-  data.append('file', file)
-  data.append('resourceId', resourceId)
-  data.append('systemId', systemId)
-  return request({
-    url: AUTH_URL() + '/auth/resources/importXml',
-    method: 'post',
-    isLoading: true,
-    gateway: true,
-    data: data
-  })
+export function importXml (file, resourceId, systemId) {
+    const data = new FormData() // 创建form对象
+    data.append('file', file)
+    data.append('resourceId', resourceId)
+    data.append('systemId', systemId)
+    return request({
+        url: AUTH_URL() + '/auth/resources/importXml',
+        method: 'post',
+        isLoading: true,
+        gateway: true,
+        data: data
+    })
 }
 }
 /**
 /**
  * 导出
  * 导出
  * @param {*} params
  * @param {*} params
  */
  */
-export function exportXml(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/exportXml',
-    method: 'get',
-    responseType: 'arraybuffer',
-    isLoading: true,
-    params: params
-  })
+export function exportXml (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/exportXml',
+        method: 'get',
+        responseType: 'arraybuffer',
+        isLoading: true,
+        params: params
+    })
 }
 }
 
 
 /** 根据角色ID分配资源管理树
 /** 根据角色ID分配资源管理树
  *
  *
  * @param {*} params
  * @param {*} params
  */
  */
-export function findRoleResTreeChecked(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/findRoleResTreeChecked',
-    params: params
-  })
+export function findRoleResTreeChecked (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/findRoleResTreeChecked',
+        params: params
+    })
 }
 }
 
 
-export function updateResource(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/updateResource',
-    method: 'post',
-    isLoading: true,
-    params: params
-  })
+export function updateResource (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/updateResource',
+        method: 'post',
+        isLoading: true,
+        params: params
+    })
 }
 }
 
 
 /**
 /**
  * 更新节点数据
  * 更新节点数据
  */
  */
-export function updateNode(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/updateNode',
-    method: 'post',
-    isLoading: true,
-    params: params
-  })
+export function updateNode (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/updateNode',
+        method: 'post',
+        isLoading: true,
+        params: params
+    })
 }
 }
 
 
 /**
 /**
  * 保存常用菜单
  * 保存常用菜单
  */
  */
-export function saveFavorites(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/saveFavorites',
-    method: 'post',
-    isLoading: true,
-    params: params
-  })
+export function saveFavorites (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/saveFavorites',
+        method: 'post',
+        isLoading: true,
+        params: params
+    })
 }
 }
 
 
 /**
 /**
  * 删除常用菜单
  * 删除常用菜单
  */
  */
-export function removeFavorites(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/removeFavorites',
-    method: 'post',
-    isLoading: true,
-    params: params
-  })
+export function removeFavorites (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/removeFavorites',
+        method: 'post',
+        isLoading: true,
+        params: params
+    })
 }
 }
 
 
 /**
 /**
  * 获取常用菜单列表
  * 获取常用菜单列表
  */
  */
-export function getMenuFavorites(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/getMenuFavorites',
-    method: 'post',
-    data: params
-  })
+export function getMenuFavorites (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/getMenuFavorites',
+        method: 'post',
+        data: params
+    })
 }
 }
 
 
 /**
 /**
  * 常用菜单排序
  * 常用菜单排序
  */
  */
-export function sortFavorites(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/sortFavorites',
-    method: 'post',
-    isLoading: true,
-    params: params
-  })
+export function sortFavorites (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/sortFavorites',
+        method: 'post',
+        isLoading: true,
+        params: params
+    })
 }
 }
 
 
 /**
 /**
  * 获取当前用户菜单资源
  * 获取当前用户菜单资源
  */
  */
-export function findUserResTreeChecked(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/findUserResTreeChecked',
-    method: 'get',
-    params: params
-  })
+export function findUserResTreeChecked (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/findUserResTreeChecked',
+        method: 'get',
+        params: params
+    })
 }
 }
 
 
 /**
 /**
  * 根据系统id获取当前用户菜单资源
  * 根据系统id获取当前用户菜单资源
  */
  */
-export function findUserResTreeCheckedBySys(params) {
-  return request({
-    url: AUTH_URL() + '/auth/resources/findUserResTreeCheckedBySys',
-    method: 'get',
-    params: params
-  })
+export function findUserResTreeCheckedBySys (params) {
+    return request({
+        url: AUTH_URL() + '/auth/resources/findUserResTreeCheckedBySys',
+        method: 'get',
+        params: params
+    })
+}
+
+/**
+ * 获取代理管理数据
+ */
+export function getAgmRoles (params) {
+    return request({
+        url: CODEGEN_URL() + '/bpm/agent/roles',
+        method: 'get',
+        params: params
+    })
 }
 }

+ 12 - 2
src/store/modules/ibps/modules/menu.js

@@ -2,7 +2,7 @@
 // 设置文件
 // 设置文件
 import setting from '@/setting.js'
 import setting from '@/setting.js'
 import menuUtil from '@/utils/menu'
 import menuUtil from '@/utils/menu'
-import { getMenuData } from '@/api/platform/auth/resources'
+import { getMenuData, getAgmRoles } from '@/api/platform/auth/resources'
 import { generateRoutes } from '@/router/utils'
 import { generateRoutes } from '@/router/utils'
 // 帮助类
 // 帮助类
 import Utils from '@/utils/util'
 import Utils from '@/utils/util'
@@ -48,8 +48,10 @@ export default {
          */
          */
         init ({ state, commit, dispatch }, { systemId }) {
         init ({ state, commit, dispatch }, { systemId }) {
             return new Promise(async (resolve, reject) => {
             return new Promise(async (resolve, reject) => {
+                const roles = await dispatch('getAgmRoleData')
                 getMenuData({
                 getMenuData({
-                    systemId: systemId
+                    systemId: systemId,
+                    roles
                 }).then(async res => {
                 }).then(async res => {
                     const data = res.data
                     const data = res.data
                     if (Utils.isEmpty(data)) {
                     if (Utils.isEmpty(data)) {
@@ -77,6 +79,14 @@ export default {
                 })
                 })
             })
             })
         },
         },
+        getAgmRoleData () {
+            return new Promise((resolve, reject) => {
+                getAgmRoles().then(res => {
+                    const data = res.data
+                    resolve(data)
+                })
+            })
+        },
         menusSet ({ state, dispatch }, menus) {
         menusSet ({ state, dispatch }, menus) {
             state.menus = menus || []
             state.menus = menus || []
         },
         },

+ 198 - 161
src/views/platform/bpmn/bpmAgent/edit.vue

@@ -1,166 +1,173 @@
 <template>
 <template>
     <el-dialog :title="title" :visible.sync="dialogVisible" :close-on-click-modal="false" :close-on-press-escape="false" append-to-body class="bpmn-agent-dialog" width="60%" top="10vh" @open="getFormData" @close="closeDialog">
     <el-dialog :title="title" :visible.sync="dialogVisible" :close-on-click-modal="false" :close-on-press-escape="false" append-to-body class="bpmn-agent-dialog" width="60%" top="10vh" @open="getFormData" @close="closeDialog">
-        <el-form ref="agentForm" v-loading="dialogLoading" class="bpmnForm" :element-loading-text="$t('common.loading')" :model="bpmAgent" :rules="rules" :label-width="formLabelWidth" @submit.native.prevent>
-            <el-row v-if="srcList.length > 0">
-                <el-col :span="24">
-                    <el-form-item label="选择代理人参考图片:">
-                        <div class="imageListClass">
-                            <div v-for="(item,index) in srcList" :key="index">
-                                <el-image :src="item" class="sinImageList" :preview-src-list="srcList" />
+        <div style="padding: 15px">
+            <el-form ref="agentForm" v-loading="dialogLoading" class="bpmnForm" :element-loading-text="$t('common.loading')" :model="bpmAgent" :rules="rules" :label-width="formLabelWidth" label-position="left" @submit.native.prevent>
+                <el-row v-if="srcList.length > 0">
+                    <el-col :span="24">
+                        <el-form-item label="代理人参考图片:">
+                            <div class="imageListClass">
+                                <div v-for="(item,index) in srcList" :key="index">
+                                    <el-image :src="item" class="sinImageList" :preview-src-list="srcList" />
+                                </div>
                             </div>
                             </div>
-                        </div>
-                    </el-form-item>
-                </el-col>
-            </el-row>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
 
 
-            <el-row>
-                <el-col :span="24">
-                    <el-form-item label="标题:" prop="title">
-                        <el-input v-if="!readonly" v-model="bpmAgent.title" placeholder="请输入标题" />
-                        <span v-else>{{ bpmAgent.title }}</span>
-                    </el-form-item>
-                </el-col>
-            </el-row>
+                <el-row>
+                    <el-col :span="24">
+                        <el-form-item label="标题:" prop="title">
+                            <el-input v-if="!readonly" v-model="bpmAgent.title" placeholder="请输入标题" />
+                            <span v-else>{{ bpmAgent.title }}</span>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
 
 
-            <el-row>
-                <el-col :span="12">
-                    <el-form-item label="生效时间:" prop="effectiveTime">
-                        <el-date-picker v-if="!readonly" v-model="bpmAgent.effectiveTime" class="time" type="date" value-format="yyyy-MM-dd" placeholder="请选择生效时间" />
-                        <span v-else>{{ bpmAgent.effectiveTime }}</span>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item label="失效时间:" prop="expiryTime">
-                        <el-date-picker v-if="!readonly" v-model="bpmAgent.expiryTime" class="time" type="date" value-format="yyyy-MM-dd" placeholder="请选择失效时间" />
-                        <span v-else>{{ bpmAgent.expiryTime }}</span>
-                    </el-form-item>
-                </el-col>
-            </el-row>
-            <el-row>
-                <el-col :span="12">
-                    <el-form-item label="委托人:" prop="delegatorId">
-                        <ibps-user-selector
-                            v-if="!readonly"
-                            v-model="bpmAgent.delegatorId"
-                            :type="type"
-                            :filter="filter"
-                            :multiple="multiple"
-                            :filtrate="filtrate"
-                            :store="store"
-                            :disabled="disabled"
-                            :readonly-text="readonlyText"
-                            placeholder="请选择委托人"
-                            @change-link-data="callbackDelegatorrInfo"
-                        />
-                        <span v-else>{{ bpmAgent.delegatorName }}</span>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="12">
-                    <el-form-item v-if="bpmAgent.agentType === 'all' || bpmAgent.agentType === 'part'" label="代理人:" prop="agenterId">
-                        <ibps-user-selector
-                            v-if="!readonly"
-                            v-model="bpmAgent.agenterId"
-                            :type="type"
-                            :filter="filter"
-                            :multiple="multiple"
-                            :filtrate="filtrate"
-                            :store="store"
-                            :disabled="disabled"
-                            :readonly-text="readonlyText"
-                            placeholder="请选择代理人"
-                            @change-link-data="callbackAgenterInfo"
-                        />
-                        <span v-else>{{ bpmAgent.agenterName }}</span>
-                    </el-form-item>
-                </el-col>
-            </el-row>
+                <el-row :gutter="20">
+                    <el-col :span="12">
+                        <el-form-item label="生效时间:" prop="effectiveTime">
+                            <el-date-picker v-if="!readonly" v-model="bpmAgent.effectiveTime" class="time" type="date" value-format="yyyy-MM-dd" placeholder="请选择生效时间" />
+                            <span v-else>{{ bpmAgent.effectiveTime }}</span>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item label="失效时间:" prop="expiryTime">
+                            <el-date-picker v-if="!readonly" v-model="bpmAgent.expiryTime" class="time" type="date" value-format="yyyy-MM-dd" placeholder="请选择失效时间" />
+                            <span v-else>{{ bpmAgent.expiryTime }}</span>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row :gutter="20">
+                    <el-col :span="12">
+                        <el-form-item label="委托人:" prop="delegatorId">
+                            <ibps-user-selector
+                                v-if="!readonly"
+                                v-model="bpmAgent.delegatorId"
+                                :type="type"
+                                :filter="filter"
+                                :multiple="multiple"
+                                :filtrate="filtrate"
+                                :store="store"
+                                :disabled="disabled"
+                                :readonly-text="readonlyText"
+                                placeholder="请选择委托人"
+                                @change-link-data="callbackDelegatorrInfo"
+                            />
+                            <span v-else>{{ bpmAgent.delegatorName }}</span>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12">
+                        <el-form-item v-if="bpmAgent.agentType === 'all' || bpmAgent.agentType === 'part'" label="代理人:" prop="agenterId">
+                            <ibps-user-selector
+                                v-if="!readonly"
+                                v-model="bpmAgent.agenterId"
+                                :type="type"
+                                :filter="filter"
+                                :multiple="multiple"
+                                :filtrate="filtrate"
+                                :store="store"
+                                :disabled="disabled"
+                                :readonly-text="readonlyText"
+                                placeholder="请选择代理人"
+                                @change-link-data="callbackAgenterInfo"
+                            />
+                            <span v-else>{{ bpmAgent.agenterName }}</span>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+
+                <el-row>
+                    <el-col :span="24">
+                        <el-form-item>
+                            <template slot="label">
+                                委托人角色:
+                                <help-tip :title="formAsterisk.title" :content="formAsterisk.content" />
+                            </template>
+                            <el-checkbox-group v-if="!readonly" v-model="checkRoleList">
+                                <el-checkbox v-for="item in roleList" :key="item.id" :label="item.id">{{ item.name }}</el-checkbox>
+                            </el-checkbox-group>
+                            <span v-else>{{ bpmAgent.roleName }}</span>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="24">
+                        <el-form-item label="代理人角色:">
+                            <span>{{ daiRoleName }}</span>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
 
 
-            <el-row>
-                <el-col :span="24">
-                    <el-form-item label="委托人角色:">
-                        <el-checkbox-group v-if="!readonly" v-model="checkRoleList">
-                            <el-checkbox v-for="item in roleList" :key="item.id" :label="item.id">{{ item.name }}</el-checkbox>
-                        </el-checkbox-group>
-                        <span v-else>{{ bpmAgent.roleName }}</span>
+                <!-- 全部代理 || 部分代理 -->
+                <el-row :gutter="20">
+                    <el-col :span="12" col>
+                        <el-form-item label="代理类型:" prop="agentType">
+                            <el-radio-group v-if="!readonly" v-model="bpmAgent.agentType">
+                                <el-radio v-for="option in agentTypeOptions" :key="option.value" :label="option.value">{{ option.label }}</el-radio>
+                            </el-radio-group>
+                            <el-tag v-else :type="bpmAgent.agentType | optionsFilter(agentTypeOptions, 'type')">{{ bpmAgent.agentType | optionsFilter(agentTypeOptions, 'label') }}</el-tag>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="12" col>
+                        <el-form-item label="是否启用:" prop="isEnabled">
+                            <el-switch v-if="!readonly" v-model="bpmAgent.isEnabled" active-value="enabled" inactive-value="disabled" />
+                            <el-tag v-else :type="bpmAgent.isEnabled | optionsFilter(statusOptions, 'type')">{{ bpmAgent.isEnabled | optionsFilter(statusOptions, 'label') }}</el-tag>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+
+                <div v-if="bpmAgent.agentType === 'part'">
+                    <el-form-item label="流程定义">
+                        <div v-if="!readonly" class="dialog-right">
+                            <bpm-definition-selector button multiple @callback="updateDefine" />
+                            <el-button class="ibps-icon-remove ibps-ml-10" type="danger" @click="handleAllDelete(multipleSelection)">删除</el-button>
+                        </div>
                     </el-form-item>
                     </el-form-item>
-                </el-col>
-            </el-row>
-            <el-row>
-                <el-col :span="24">
-                    <el-form-item label="代理人角色:">
-                        <span>{{ daiRoleName }}</span>
+                    <el-form-item v-loading="rowLoading" label-width="0px" :element-loading-text="$t('common.loading')">
+                        <el-table ref="multipleTable" border :data="bpmAgent.bpmAgentDefPoList" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange">
+                            <el-table-column v-if="!readonly" type="selection" width="45" />
+                            <el-table-column label="流程名称">
+                                <template slot-scope="scope">{{ scope.row.procDefName ? scope.row.procDefName : scope.row.name }}</template>
+                            </el-table-column>
+                            <el-table-column v-if="!readonly" label="操作" width="55">
+                                <template slot-scope="scope">
+                                    <el-button type="danger" icon="el-icon-delete" circle @click="handleDelete(scope.$index, scope.row)" />
+                                </template>
+                            </el-table-column>
+                        </el-table>
                     </el-form-item>
                     </el-form-item>
-                </el-col>
-            </el-row>
+                </div>
 
 
-            <!-- 全部代理 || 部分代理 -->
-            <el-row>
-                <el-col :span="12" col>
-                    <el-form-item label="代理类型:" prop="agentType">
-                        <el-radio-group v-if="!readonly" v-model="bpmAgent.agentType">
-                            <el-radio v-for="option in agentTypeOptions" :key="option.value" :label="option.value">{{ option.label }}</el-radio>
-                        </el-radio-group>
-                        <el-tag v-else :type="bpmAgent.agentType | optionsFilter(agentTypeOptions, 'type')">{{ bpmAgent.agentType | optionsFilter(agentTypeOptions, 'label') }}</el-tag>
+                <!-- 条件代理 -->
+                <div v-if="bpmAgent.agentType === 'condition'">
+                    <el-form-item label="流程名称:">
+                        <bpm-definition-selector v-model="bpmAgent.procDefId" :disabled="readonly" />
+                    </el-form-item>
+                    <el-form-item label="流程代理条件:">
+                        <div v-if="!readonly" class="dialog-right">
+                            <el-button class="ibps-icon-add" type="primary" @click="openConditionDialog">添加</el-button>
+                            <el-button class="ibps-icon-remove ibps-ml-5" type="danger">删除</el-button>
+                        </div>
                     </el-form-item>
                     </el-form-item>
-                </el-col>
-                <el-col :span="12" col>
-                    <el-form-item label="是否启用:" prop="isEnabled">
-                        <el-switch v-if="!readonly" v-model="bpmAgent.isEnabled" active-value="enabled" inactive-value="disabled" />
-                        <el-tag v-else :type="bpmAgent.isEnabled | optionsFilter(statusOptions, 'type')">{{ bpmAgent.isEnabled | optionsFilter(statusOptions, 'label') }}</el-tag>
+                    <el-form-item v-loading="rowLoading" label-width="20px" :element-loading-text="$t('common.loading')">
+                        <el-table ref="multipleTable" :data="bpmAgent.bpmAgentConditionPoList" tooltip-effect="dark" style="width: 100%" @selection-change="handleConditionChange">
+                            <el-table-column type="selection" width="55" />
+                            <el-table-column label="代理人">
+                                <template slot-scope="scope">{{ scope.row.agenterName }}</template>
+                            </el-table-column>
+                            <el-table-column label="条件名称">
+                                <template slot-scope="scope">{{ scope.row.name }}</template>
+                            </el-table-column>
+                            <el-table-column prop="address" label="管理" width="100px" show-overflow-tooltip>
+                                <el-button type="primary" icon="el-icon-edit" circle @click="handleEdit(scope.$index, scope.row)" />
+                                <el-button type="danger" icon="el-icon-delete" circle @click="handleRemove(scope.$index, scope.row)" />
+                            </el-table-column>
+                        </el-table>
                     </el-form-item>
                     </el-form-item>
-                </el-col>
-            </el-row>
-
-            <div v-if="bpmAgent.agentType === 'part'">
-                <el-form-item label="流程定义">
-                    <div v-if="!readonly" class="dialog-right">
-                        <bpm-definition-selector button multiple @callback="updateDefine" />
-                        <el-button class="ibps-icon-remove ibps-ml-10" type="danger" @click="handleAllDelete(multipleSelection)">删除</el-button>
-                    </div>
-                </el-form-item>
-                <el-form-item v-loading="rowLoading" label-width="20px" :element-loading-text="$t('common.loading')">
-                    <el-table ref="multipleTable" border :data="bpmAgent.bpmAgentDefPoList" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange">
-                        <el-table-column v-if="!readonly" type="selection" width="45" />
-                        <el-table-column label="流程名称">
-                            <template slot-scope="scope">{{ scope.row.procDefName ? scope.row.procDefName : scope.row.name }}</template>
-                        </el-table-column>
-                        <el-table-column v-if="!readonly" label="操作" width="55">
-                            <template slot-scope="scope">
-                                <el-button type="danger" icon="el-icon-delete" circle @click="handleDelete(scope.$index, scope.row)" />
-                            </template>
-                        </el-table-column>
-                    </el-table>
-                </el-form-item>
-            </div>
+                </div>
+            </el-form>
+        </div>
 
 
-            <!-- 条件代理 -->
-            <div v-if="bpmAgent.agentType === 'condition'">
-                <el-form-item label="流程名称:">
-                    <bpm-definition-selector v-model="bpmAgent.procDefId" :disabled="readonly" />
-                </el-form-item>
-                <el-form-item label="流程代理条件">
-                    <div v-if="!readonly" class="dialog-right">
-                        <el-button class="ibps-icon-add" type="primary" @click="openConditionDialog">添加</el-button>
-                        <el-button class="ibps-icon-remove ibps-ml-5" type="danger">删除</el-button>
-                    </div>
-                </el-form-item>
-                <el-form-item v-loading="rowLoading" label-width="20px" :element-loading-text="$t('common.loading')">
-                    <el-table ref="multipleTable" :data="bpmAgent.bpmAgentConditionPoList" tooltip-effect="dark" style="width: 100%" @selection-change="handleConditionChange">
-                        <el-table-column type="selection" width="55" />
-                        <el-table-column label="代理人">
-                            <template slot-scope="scope">{{ scope.row.agenterName }}</template>
-                        </el-table-column>
-                        <el-table-column label="条件名称">
-                            <template slot-scope="scope">{{ scope.row.name }}</template>
-                        </el-table-column>
-                        <el-table-column prop="address" label="管理" width="100px" show-overflow-tooltip>
-                            <el-button type="primary" icon="el-icon-edit" circle @click="handleEdit(scope.$index, scope.row)" />
-                            <el-button type="danger" icon="el-icon-delete" circle @click="handleRemove(scope.$index, scope.row)" />
-                        </el-table-column>
-                    </el-table>
-                </el-form-item>
-            </div>
-        </el-form>
         <div slot="footer" class="el-dialog--center">
         <div slot="footer" class="el-dialog--center">
             <ibps-toolbar :actions="toolbars" @action-event="handleActionEvent" />
             <ibps-toolbar :actions="toolbars" @action-event="handleActionEvent" />
         </div>
         </div>
@@ -178,6 +185,7 @@ import IbpsEmployeeSelector from '@/business/platform/org/employee/selector'
 import BpmDefinitionSelector from '@/business/platform/bpmn/definition/selector'
 import BpmDefinitionSelector from '@/business/platform/bpmn/definition/selector'
 import ibpsUserSelector from '@/business/platform/org/selector'
 import ibpsUserSelector from '@/business/platform/org/selector'
 import curdPost from '@/business/platform/form/utils/custom/joinCURD.js'
 import curdPost from '@/business/platform/form/utils/custom/joinCURD.js'
+import helpTip from '@/business/platform/form/formbuilder/right-aside/components/help-tip.vue'
 import Condition from './condition'
 import Condition from './condition'
 import { load } from '@/api/platform/org/employee'
 import { load } from '@/api/platform/org/employee'
 import { setTimeout } from 'timers'
 import { setTimeout } from 'timers'
@@ -187,7 +195,8 @@ export default {
         IbpsEmployeeSelector,
         IbpsEmployeeSelector,
         BpmDefinitionSelector,
         BpmDefinitionSelector,
         Condition,
         Condition,
-        ibpsUserSelector
+        ibpsUserSelector,
+        helpTip
     },
     },
     props: {
     props: {
         visible: {
         visible: {
@@ -204,7 +213,7 @@ export default {
     data () {
     data () {
         return {
         return {
             formName: 'agentForm',
             formName: 'agentForm',
-            formLabelWidth: '100px',
+            formLabelWidth: '110px',
             dialogVisible: this.visible,
             dialogVisible: this.visible,
             conditionDialogVisible: false, // 条件规则界面
             conditionDialogVisible: false, // 条件规则界面
             dialogLoading: false,
             dialogLoading: false,
@@ -227,7 +236,8 @@ export default {
                 agentType: 'all',
                 agentType: 'all',
                 isEnabled: 'enabled',
                 isEnabled: 'enabled',
                 bpmAgentDefPoList: [],
                 bpmAgentDefPoList: [],
-                bpmAgentConditionPoList: []
+                bpmAgentConditionPoList: [],
+                bpmAgentRoleList: []
             },
             },
             rules: {
             rules: {
                 title: [
                 title: [
@@ -270,7 +280,13 @@ export default {
             readonlyText: 'null',
             readonlyText: 'null',
             roleList: [],
             roleList: [],
             checkRoleList: [],
             checkRoleList: [],
-            daiRoleName: ''
+            daiRoleName: '',
+            yuanRoleList: [],
+            daiRoleList: [],
+            formAsterisk: {
+                title: '角色代理',
+                content: '该委托人角色代理主要用于菜单权限与编辑按钮权限'
+            }
         }
         }
     },
     },
     computed: {
     computed: {
@@ -407,9 +423,7 @@ export default {
                 ActionUtils.error('流程定义数据不能为空!')
                 ActionUtils.error('流程定义数据不能为空!')
                 return
                 return
             }
             }
-            const roleNameList = this.roleList.filter(item => this.checkRoleList.includes(item.id))
-            const checkboxList = roleNameList.map(item => item.name)
-            console.log(checkboxList.join(','))
+            this.bpmAgent.bpmAgentRoleList = this.checkRoleList
             save(this.bpmAgent)
             save(this.bpmAgent)
                 .then((response) => {
                 .then((response) => {
                     this.$emit('callback', this)
                     this.$emit('callback', this)
@@ -459,6 +473,9 @@ export default {
             })
             })
                 .then((response) => {
                 .then((response) => {
                     this.bpmAgent = response.data
                     this.bpmAgent = response.data
+                    this.checkRoleList = response.data.bpmAgentRoleList || []
+                    // this.bpmAgent.bpmAgentRoleList = response.data.bpmAgentRoleList || []
+                    console.log(this.bpmAgent)
                     this.formValidate()
                     this.formValidate()
                     this.dialogLoading = false
                     this.dialogLoading = false
                 })
                 })
@@ -470,10 +487,14 @@ export default {
             alert('打开流程选择器')
             alert('打开流程选择器')
         },
         },
         callbackDelegatorrInfo (value, data, type) {
         callbackDelegatorrInfo (value, data, type) {
+            this.checkRoleList = []
             this.bpmAgent.delegatorName = data.name
             this.bpmAgent.delegatorName = data.name
+            this.getVerification()
         },
         },
         callbackAgenterInfo (value, data, type) {
         callbackAgenterInfo (value, data, type) {
+            this.checkRoleList = []
             this.bpmAgent.agenterName = data.name
             this.bpmAgent.agenterName = data.name
+            this.getVerification()
         },
         },
         updateDefine (data) {
         updateDefine (data) {
             this.rowLoading = true
             this.rowLoading = true
@@ -542,18 +563,34 @@ export default {
                         const data = response
                         const data = response
                         const partyRole = response.variables.partyRoles
                         const partyRole = response.variables.partyRoles
                         if (type === 1) {
                         if (type === 1) {
-                            this.roleList = partyRole || []
-                            this.checkRoleList = []
+                            this.yuanRoleList = partyRole || []
                         }
                         }
                         if (type === 2) {
                         if (type === 2) {
-                            const roleName = partyRole.map(item => item.name)
+                            this.daiRoleList = partyRole || []
+                            const roleName = partyRole.map((item) => item.name)
                             this.daiRoleName = roleName.join(',')
                             this.daiRoleName = roleName.join(',')
                         }
                         }
+                        this.getRoleList()
                         resolve(data)
                         resolve(data)
                     })
                     })
                     .catch(() => {
                     .catch(() => {
                     })
                     })
             })
             })
+        },
+        getRoleList () {
+            if (this.yuanRoleList.length > 0 && this.daiRoleList.length > 0) {
+                this.roleList = this.yuanRoleList.filter(item => {
+                    return !this.daiRoleList.some(it => it.id === item.id)
+                })
+            }
+        },
+        getVerification () {
+            if (this.bpmAgent.agenterId === this.bpmAgent.delegatorId) {
+                this.$message.error('委托人和代理人是同一个账号,请重新选择。')
+                return true
+            } else {
+                return false
+            }
         }
         }
     }
     }
 }
 }