Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

Administrator vor 4 Jahren
Ursprung
Commit
3ff2661cf2

+ 3 - 2
boman-web-core/src/main/java/com/boman/web/core/service/TableServiceCmdService.java

@@ -358,7 +358,7 @@ public class TableServiceCmdService {
                         }
                         // fk
                         if (isNotEmpty(column.getForeignKey())) {
-                            column.setFkInfo(getFkMap(column.getFkInfo(), json.get(columnName)));
+                            column.setFkInfo(getFkInfoForGetObject(column.getFkInfo(), json.get(columnName)));
                         }
                         // annex
                         if (HTML_IMAGE_UPLOAD.equalsIgnoreCase(htmlType) || HTML_FILE_UPLOAD.equalsIgnoreCase(htmlType)) {
@@ -452,7 +452,8 @@ public class TableServiceCmdService {
                 btns.add(RoleMenuDto.getBtnFromPerms(perms));
             }
         }
-
+        // 删除Q
+        btns.remove(GenTable.Q);
         return btns;
     }
 

+ 27 - 2
boman-web-core/src/main/java/com/boman/web/core/utils/HandlerFormDataUtils.java

@@ -111,7 +111,7 @@ public class HandlerFormDataUtils {
             for (GenTableColumn column : fkColumns) {
                 String selfColumnName = column.getColumnName();
                 if (containsKeyIgnoreCase(jsonObject, selfColumnName)) {
-                    JSONObject fkMap = getFkMap(column.getFkInfo(), jsonObject.get(selfColumnName));
+                    JSONObject fkMap = getFkInfoForQueryList(column.getFkInfo(), jsonObject.get(selfColumnName));
                     jsonObject.put(selfColumnName.toLowerCase(), fkMap);
                 }
             }
@@ -166,7 +166,7 @@ public class HandlerFormDataUtils {
         return DateUtils.dateTime(date);
     }
 
-    public static JSONObject getFkMap(Map<String, Object> fkInfoMap, Object value) {
+    public static JSONObject getFkInfoForQueryList(Map<String, Object> fkInfoMap, Object value) {
         Object fkTableName = fkInfoMap.get(FK_TABLE_NAME);
         Object fkColumnName = fkInfoMap.get(FK_COLUMN_NAME);
         Object dkColumnName = fkInfoMap.get(DK_COLUMN_NAME);
@@ -187,6 +187,31 @@ public class HandlerFormDataUtils {
         return result;
     }
 
+
+    public static JSONObject getFkInfoForGetObject(Map<String, Object> fkInfoMap, Object value) {
+        Object fkTableName = fkInfoMap.get(FK_TABLE_NAME);
+        Object fkColumnName = fkInfoMap.get(FK_COLUMN_NAME);
+        Object dkColumnName = fkInfoMap.get(DK_COLUMN_NAME);
+
+        // 到子表中查
+        JSONObject param = new JSONObject();
+        param.put(fkColumnName.toString(), value);
+        IBaseSelectService selectService = SpringUtils.getBean(IBaseSelectService.class);
+        JSONObject fkInfo = selectService.getOneByMap(fkTableName.toString(), param);
+        JSONObject result = new JSONObject();
+        if (isEmpty(fkInfo)) {
+            return result;
+        }
+
+        Object fkValue = fkInfo.get(dkColumnName);
+        result.put(SINGLE_OBJ_NAME, value);
+        result.put(SINGLE_OBJ_VALUE, fkValue);
+        result.put(FK_TABLE_NAME, fkTableName);
+        result.put(FK_COLUMN_NAME, fkColumnName);
+        result.put(DK_COLUMN_NAME, dkColumnName);
+        return result;
+    }
+
     public static List<SysFile> getAnnex(String value) {
         if (ArrayUtils.equalsEmptyArray(value)) {
             return null;

+ 7 - 8
ruoyi-ui/src/components/DynamicForms/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-form-item :label="formConfig.columnComment" style="display: inline-block;" :prop="formConfig.columnName">
+  <el-form-item label-width="120px" :label="formConfig.columnComment" style="display: inline-block;" :prop="formConfig.columnName">
     <!-- 输入框 -->
     <el-input v-if="formConfig.htmlType == 'input'" v-model="config[formConfig.columnName]" :placeholder="'请输入'+formConfig.columnComment"
       clearable @keyup.enter.native="handleQuery"  :disabled="formConfig.disabshow" />
@@ -13,9 +13,9 @@
         :value="itemChild.dictValue">
       </el-option>
     </el-select>
-    <!-- 下拉框搜索 -->
+    <!-- 下拉框搜索 -->
     <el-select :disabled="formConfig.disabshow" v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'select'&&(formConfig.fkInfo)"
-      filterable remote :remote-method="remoteMethod" :loading="loading" :placeholder="'请输入'+formConfig.columnComment">
+      filterable remote :remote-method="remoteMethod" :loading="loading" :placeholder="'请输入'+formConfig.columnComment">
       <el-option v-for="itemChild in filterList" :key="itemChild.id" :label="itemChild.table_name" :value="itemChild.id">
       </el-option>
     </el-select>
@@ -35,13 +35,13 @@
       :placeholder="'请输入'+formConfig.columnComment">
     </el-date-picker>
     <!-- 上传图片 -->
-    <el-upload  :disabled="formConfig.disabshow" v-if="formConfig.htmlType == 'imageUpload'" :headers="{Authorization: 'Bearer ' + getToken()}" :action="process + '/boman-file/upload'"
+    <el-upload :disabled="formConfig.disabshow" v-if="formConfig.htmlType == 'imageUpload'" :headers="{Authorization: 'Bearer ' + getToken()}" :action="process + '/boman-file/upload'"
       :file-list="config" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-success="upImageFn"
       :on-remove="reseImage">
       <i class="el-icon-plus"></i>
     </el-upload>
     <el-dialog :disabled="formConfig.disabshow" :visible.sync="dialogVisible" v-if="formConfig.htmlType == 'imageUpload'">
-      <img width="100%" :src="dialogImageUrl" alt="">
+      <img :src="dialogImageUrl" alt="">
     </el-dialog>
     <!-- 上传文件 -->
     <el-upload :disabled="formConfig.disabshow" class="upload-demo" :headers="{Authorization: 'Bearer ' + getToken()}" v-if="formConfig.htmlType == 'fileUpload'"
@@ -51,7 +51,7 @@
       <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
     </el-upload>
     <!-- 富文本 -->
-    <editor  :disabled="formConfig.disabshow" v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'editor'" :min-height="192" />
+    <editor :disabled="formConfig.disabshow" v-model="config[formConfig.columnName]" v-if="formConfig.htmlType == 'editor'" :min-height="192" />
   </el-form-item>
 </template>
 
@@ -105,8 +105,6 @@
     },
     created() {
       this.config = {}
-      // console.log(this.formConfig.mask.slice(3,4),876454)
-      console.log(this.formConfig)
       if(this.type){
         if(this.formConfig.readonly == true){
           this.formConfig.disabshow = true
@@ -160,6 +158,7 @@
         }
         if(this.formConfig.fkInfo){
           this.aliemg.table = this.formConfig.fkInfo.fkTableName
+          this.listIndexfouFn()
         }
       },
       handleChange(file, fileList) {

+ 5 - 0
ruoyi-ui/src/components/HistoricalProcess/index.vue

@@ -43,10 +43,12 @@ import {
     addGenhistorihistory,
     addGenhistorilisr
   } from "@/api/activiti/definition";
+  import store from "@/store";
 export default {
   name: "HistoricalProcess",
   components: { FormItemComponent, StandardTabletwo, FlowChartShow },
   props: {
+    falg: { type: Number, default: null },
     tabalive: { type: String, default: "" }
   },
   data() {
@@ -342,6 +344,9 @@ export default {
     }
   },
   created() {
+    if(this.falg){
+      this.searchData.userId = store.getters.userId
+    }
     this.getselectOption();
     this.queryLists();
   }

+ 7 - 2
ruoyi-ui/src/components/todoProcess/index.vue

@@ -64,6 +64,7 @@ import mutipleSelectPop from "../MutipleSelectPop/index.vue";
 import FlowChartShow from "../FlowChartShow";
 // import { mapState } from "vuex";
 // import { mapMutations } from "vuex";
+import store from "@/store";
 import {
     addGendefini,
     addGendefiniqur,
@@ -79,6 +80,7 @@ export default {
 
   },
   props: {
+    falg: { type: Number, default: null },
     tabalive: { type: String, default: "" }
   },
   data() {
@@ -376,7 +378,6 @@ export default {
       delete obj.createTime;
       var that = this
       addGendefiniqur(obj).then(res => {
-        console.log(res.resultCode)
         // that.data = res.data.records
         if (res.resultCode === 0) {
           console.log(1)
@@ -427,7 +428,8 @@ export default {
         // this.$Message.warning("请选择转派人员");
         return
       }
-      // sendData.userId = this.userInfo.userId;
+      // console.log(store.getters.userId)
+      // sendData.userId = store.getters.userId;
       addGendefinideal(sendData).then(res => {
         let data = res;
         if (data.resultCode === 0) {
@@ -491,6 +493,9 @@ export default {
     }
   },
   created() {
+    if(this.falg){
+      this.searchData.userId = store.getters.userId
+    }
     this.getselectOption();
     this.queryLists();
   },

+ 54 - 78
ruoyi-ui/src/router/index.js

@@ -5,7 +5,12 @@ Vue.use(Router)
 
 /* Layout */
 import Layout from '@/layout'
-import ParentView from '@/components/ParentView';
+import ParentView from '@/components/ParentView';
+
+import approval from '../views/workbench/approval';
+import handled from '../views/workbench/handled';
+import process from '../views/workbench/process';
+console.log(approval,handled,process,12)
 
 /**
  * Note: 路由配置项
@@ -64,83 +69,54 @@ export const constantRoutes = [
         component: (resolve) => require(['@/views/index'], resolve),
         name: '首页',
         meta: { title: '首页', icon: 'dashboard', noCache: true, affix: true }
-      },
-      {
-        path: 'index1',
-        name: '流程工作台',
-        hidden: false,
-        alwaysShow: true,
-        meta: { title: '流程工作台', icon: 'spot', noCache: true },
-        children: [{
-          path: 'index1',
-          hidden: false,
-          component: (resolve) => require(['@/views/index'], resolve),
-          name: '待我审批',
-          meta: { title: '待我审批', icon: '', noCache: false},
-        },{
-          path: 'index2',
-          hidden: false,
-          component: (resolve) => require(['@/views/index'], resolve),
-          name: '已办理',
-          meta: { title: '已办理', icon: '', noCache: false},
-        },{
-          path: 'index3',
-          hidden: false,
-          component: (resolve) => require(['@/views/index'], resolve),
-          name: '已延时',
-          meta: { title: '已延时', icon: '', noCache: false},
-        },{
-          path: 'index4',
-          hidden: false,
-          component: (resolve) => require(['@/views/index'], resolve),
-          name: '我的流程',
-          meta: { title: '我的流程', icon: '', noCache: false},
-        }]
-      },{
-        path: 'index2',
-        name: '工作协助',
-        hidden: false,
-        alwaysShow: true,
-        meta: { title: '工作协助', icon: 'spot', noCache: true },
-        children: [{
-          path: 'index1',
-          hidden: false,
-          component: (resolve) => require(['@/views/index'], resolve),
-          name: '批注',
-          meta: { title: '批注', icon: '', noCache: false},
-        },{
-          path: 'index2',
-          hidden: false,
-          component: (resolve) => require(['@/views/index'], resolve),
-          name: '微邮',
-          meta: { title: '微邮', icon: '', noCache: false},
-        }]
-      },{
-        path: 'index3',
-        name: '交办事项',
-        hidden: false,
-        alwaysShow: true,
-        meta: { title: '交办事项', icon: 'spot', noCache: true },
-        children: [{
-          path: 'index1',
-          hidden: false,
-          component: (resolve) => require(['@/views/index'], resolve),
-          name: '待我处理',
-          meta: { title: '待我处理', icon: '', noCache: false},
-        },{
-          path: 'index2',
-          hidden: false,
-          component: (resolve) => require(['@/views/index'], resolve),
-          name: '我的安排',
-          meta: { title: '我的安排', icon: '', noCache: false },
-        },{
-          path: 'index3',
-          hidden: false,
-          component: (resolve) => require(['@/views/index'], resolve),
-          name: '历史事务',
-          meta: { title: '历史事务', icon: '', noCache: false},
-        }]
-      }
+      },
+      {
+        path: 'index/approval',
+        hidden: false,
+        component: approval,
+        name: '待我审批',
+        meta: { title: '待我审批', icon: 'dashboard', noCache: false},
+      },
+      {
+        path: 'index/handled',
+        hidden: false,
+        component: handled,
+        name: '已办理',
+        meta: { title: '已办理', icon: 'dashboard', noCache: false},
+      },
+      // {
+      //   path: 'index/process',
+      //   hidden: false,
+      //   component: process,
+      //   name: '我的流程',
+      //   meta: { title: '我的流程', icon: '', noCache: false},
+      // },
+      // {
+      //   path: '',
+      //   name: '流程工作台',
+      //   hidden: false,
+      //   alwaysShow: true,
+      //   meta: { title: '流程工作台', icon: 'spot', noCache: true },
+      //   children: [{
+      //     path: 'index/approval',
+      //     hidden: false,
+      //     component: approval,
+      //     name: '待我审批',
+      //     meta: { title: '待我审批', icon: '', noCache: false},
+      //   },{
+      //     path: 'index/handled',
+      //     hidden: false,
+      //     component: handled,
+      //     name: '已办理',
+      //     meta: { title: '已办理', icon: '', noCache: false},
+      //   }, {
+      //     path: 'index/process',
+      //     hidden: false,
+      //     component: process,
+      //     name: '我的流程',
+      //     meta: { title: '我的流程', icon: '', noCache: false},
+      //   }]
+      // }
     ]
   },
   {

+ 1 - 0
ruoyi-ui/src/store/getters.js

@@ -7,6 +7,7 @@ const getters = {
   token: state => state.user.token,
   avatar: state => state.user.avatar,
   name: state => state.user.name,
+  userId: state => state.user.userId,
   introduction: state => state.user.introduction,
   roles: state => state.user.roles,
   permissions: state => state.user.permissions,

+ 6 - 1
ruoyi-ui/src/store/modules/user.js

@@ -4,7 +4,8 @@ import { getToken, setToken, setExpiresIn, removeToken } from '@/utils/auth'
 const user = {
   state: {
     token: getToken(),
-    name: '',
+    name: '',
+    userId: '',
     avatar: '',
     roles: [],
     permissions: [],
@@ -19,6 +20,9 @@ const user = {
     },
     SET_NAME: (state, name) => {
       state.name = name
+    },
+    SET_USERID: (state, id) => {
+      state.userId = id
     },
     SET_AVATAR: (state, avatar) => {
       state.avatar = avatar
@@ -65,6 +69,7 @@ const user = {
             commit('SET_ROLES', ['ROLE_DEFAULT'])
           }
           commit('SET_NAME', user.userName)
+          commit('SET_USERID', user.id)
           commit('SET_AVATAR', avatar)
           resolve(res)
         }).catch(error => {

+ 11 - 3
ruoyi-ui/src/views/index.vue

@@ -203,8 +203,8 @@
                          </p>
                         <div class="index_memoranduMailnav">
                            <div class="tab_tol">
-                             <el-table stripe v-loading="loading" :data="postList.rows" @selection-change="handleSelectionChange">
-                               <el-table-column :label="item.columnComment" align="center" :prop="item.columnName" v-for="(item,index) in postList.tableHeadList" :key="index"  />
+                             <el-table  stripe v-loading="loading" :data="postList.rows" @selection-change="handleSelectionChange">
+                               <el-table-column :label="item.columnComment" align="left" :prop="item.columnName" v-for="(item,index) in postList.tableHeadList" :key="index"  />
                              </el-table>
                            </div>
                           <div class="index_haderPagin index_haderPaginfoiu">
@@ -998,6 +998,9 @@ export default {
           text-align: left;
           flex: 1;
           padding: 0 18px;
+          overflow:hidden;
+          	text-overflow:ellipsis;
+          	white-space:nowrap
         }
         span{
           font-size: 14px;
@@ -1112,7 +1115,12 @@ export default {
       font-weight: bold;
       color: #343434;
       line-height: 27px;
-       text-indent:2em;
+      text-indent:2em;
+      height: 368px;
+      overflow-y: hidden;
+       // p{
+
+       // }
     }
     .index_haderPagin{
       margin-top: 25px;

+ 3 - 7
ruoyi-ui/src/views/system/role/fz-index.vue

@@ -33,8 +33,7 @@
           </div>
         </div>
         <div class="searList">
-          <div class="searItem searItemLeft" element-loading-text="拼命加载中" v-loading.fullscreen.lock="fullscreenLoading"
-            element-loading-spinner="el-icon-loading" element-loading-background="rgba(0, 0, 0, 0.4)" v-for="item in roleList"
+          <div class="searItem searItemLeft" v-for="item in roleList"
             @click="searBtnFn(item)" :class="{'active': item.id == roleId}" :key="item.id">
             <span>
               {{item.roleName}}
@@ -131,7 +130,6 @@
     data() {
       return {
         modifyStatus: false,
-        fullscreenLoading: false,
         searIndex: '',
         data: [],
         defaultProps: {
@@ -272,7 +270,8 @@
             _this.qxList(e)
           });
           return
-        }
+        }
+        this.menusList = {}
         listMenus(e.id,this.roleId).then(res => {
           let data = res.data
           this.menusList = data
@@ -450,12 +449,9 @@
       /** 修改按钮操作 */
       handleUpdate() {
         this.reset();
-        this.fullscreenLoading = true
         const roleMenu = this.getRoleMenuTreeselect(this.roleId);
         roleMenu.then(res => {
-          // let checkedKeys = res.checkedKeys
           this.deptOptions = res.data
-          this.fullscreenLoading = false
         });
       },
       /** 选择角色权限范围触发 */

+ 24 - 16
ruoyi-ui/src/views/system/surface/index.vue

@@ -21,15 +21,15 @@
       <el-table v-loading="loading" :data="postList" @selection-change="handleSelectionChange">
         <el-table-column type="selection" width="55" style="color: red;" align="center" />
         <template v-for="(item, index) in tabData">
-          <el-table-column :label="item.columnComment"  align="center" :prop="item.columnName" :key="index" >
-            <template slot-scope="scope">
+          <el-table-column :label="item.columnComment" align="center" :prop="item.columnName" :key="index">
+            <template slot-scope="scope">
               <img class="img_icon" v-if="item.htmlType=='imageUpload' && scope.row[scope.column.property]" @click="imgBtn(JSON.parse(scope.row[scope.column.property])[0].url)"
                 :src="JSON.parse(scope.row[scope.column.property])[0].url" alt="">
-              <!-- :style="scope.row.list_class" scope.row[scope.column.property] -->
-              <span  :style="scope.row.list_class" v-else-if="item.columnName == 'status' " >{{ scope.row[scope.column.property] }}</span>
-              <div v-else>
-                <span v-if="item.fkInfo">{{scope.row[scope.column.property].value}}</span>
-                <span v-else>{{scope.row[scope.column.property]}}</span>
+              <!-- :style="scope.row.list_class" scope.row[scope.column.property] -->
+              <span :style="scope.row.list_class" v-else-if="item.columnName == 'status' ">{{ scope.row[scope.column.property] }}</span>
+              <div v-else>
+                <span v-if="item.fkInfo">{{scope.row[scope.column.property].value}}</span>
+                <span v-else>{{scope.row[scope.column.property]}}</span>
               </div>
             </template>
           </el-table-column>
@@ -59,7 +59,7 @@
     name: "index",
     data() {
       return {
-        pir_imgs: '', // 图片链接
+        pir_imgs: '', // 图片链接
         // jue:'color: red;',
         tabData: [],
         multiple: true,
@@ -174,7 +174,8 @@
           })
         }
       },
-      headerBtn(item) {
+      headerBtn(item) {
+        const _this = this
         switch (item) {
           case 'A':
             {
@@ -197,13 +198,20 @@
                 this.msgInfo('请勾选一条信息')
                 return
               }
-              delMenu({
-                table: this.tabName,
-                idList: this.ids
-              }).then(res => {
-                this.msgSuccess('删除成功')
-                this.getList()
+              this.$confirm('是否确认删除岗位编号为"' + this.ids + '"的数据项?', "警告", {
+                confirmButtonText: "确定",
+                cancelButtonText: "取消",
+                type: "warning"
+              }).then(function() {
+                return delMenu({
+                  table: _this.tabName,
+                  idList: _this.ids
+                });
+              }).then(() => {
+                _this.getList();
+                _this.msgSuccess("删除成功");
               })
+
               return
             }
           case 'Q':
@@ -342,7 +350,7 @@
     // }
 
     .el-collapse {
-      border-top: 0;
+      border-top: 0;
 
     }
   }

+ 3 - 3
ruoyi-ui/src/views/system/table/index.vue

@@ -15,7 +15,7 @@
     <!-- 内容 -->
     <div class="table_nav headertable_nav" >
       <el-collapse v-model="activeNames" @change="handleChange">
-        <el-form :model="queryParams" :rules="queryData.rules" ref="queryForm" :inline="true" label-width="120px">
+        <el-form :label-width="150" :model="queryParams" :rules="queryData.rules" ref="queryForm" :inline="true" label-width="120px">
           <el-collapse-item :title="item.columnComment" :name="index" v-for="(item,index) in queryData.showData" :key="index">
             <el-row>
               <el-col :span="24" :key="index">
@@ -284,8 +284,8 @@
         this.$refs["queryForm"].validate(valid => {
           if (valid) {
             addbjectSave(this.forme).then(response => {
-              this.msgSuccess("保存成功");
-              this.open = false;
+              this.msgSuccess("保存成功");
+              // this.open = false;
               this.$router.go(-1)
             });
           }

+ 85 - 0
ruoyi-ui/src/views/workbench/approval/index.vue

@@ -0,0 +1,85 @@
+<template>
+    <div class="InstanceManagementList">
+      <!-- <Breadcrumb separator=">">
+        <BreadcrumbItem  v-if="tabalive==='待办流程'"  @click.native="routeClick(1)">待办流程</BreadcrumbItem>
+        <BreadcrumbItem  v-if="tabalive==='历史流程'"  @click.native="routeClick(2)">历史流程</BreadcrumbItem>
+    </Breadcrumb> -->
+    <!-- <Tabs :value="tabalive" @on-click="onClick"> -->
+        <TabPane label="待办流程" name="待办流程"><todoProcess :falg="1" v-if="tabalive === '待办流程'" :tabalive="tabalive"></todoProcess></TabPane>
+        <!-- <TabPane label="历史流程" name="历史流程"><HistoricalProcess v-if="tabalive === '历史流程'" :tabalive="tabalive"></HistoricalProcess></TabPane> -->
+    <!-- </Tabs> -->
+    </div>
+</template>
+<script>
+import todoProcess from '@/components/todoProcess/index';
+import HistoricalProcess from '@/components/HistoricalProcess';
+// import router from '../config/router.config'
+export default {
+    name:'approval',
+    // todoProcess,
+    components:{todoProcess,HistoricalProcess},
+    data(){
+        return{
+            tabalive:"待办流程",//tab切换默认值
+            tabConfig:[{
+                label:'待办流程',
+                name:'待办流程'
+            },{
+                label:'历史流程',
+                name:'历史流程'
+            }]
+        }
+    },
+    methods:{
+        routeClick(val){
+            if(val === 1){
+                this.tabalive = '待办流程';
+            } else if (val === 2) {
+                this.tabalive = '历史流程';
+            }
+        },
+        //tab切换点击事件
+        onClick(val){
+            this.tabalive=val;
+            if(val==='历史流程'){
+             window.history.replaceState({}, '', "/#/InstanceManagementList?type=2");
+            }else{
+             window.history.replaceState({}, '', "/#/InstanceManagementList?type=1");
+            }
+
+        },
+    },
+    created(){
+       this.routeClick(1);
+    }
+
+}
+</script>
+<style lang="scss" >
+.InstanceManagementList{
+     background: white;
+     padding: 20px;
+     display: flex;
+     flex-direction: column;
+    .burgeon-breadcrumb{
+        font-size:18px;
+        margin-bottom: 12px;
+    }
+    .burgeon-tabs{
+        flex:1;
+        display: flex;
+       -webkit-box-direction: column;
+        flex-direction: column;
+        .burgeon-tabs-bar{
+            // height: 27px;
+        }
+        .burgeon-tabs-content-animated{
+        flex:1;
+        .burgeon-tabs-tabpane{
+            display: flex;
+        }
+    }
+    }
+
+}
+</style>

+ 85 - 0
ruoyi-ui/src/views/workbench/handled/index.vue

@@ -0,0 +1,85 @@
+<template>
+    <div class="InstanceManagementList">
+      <!-- <Breadcrumb separator=">">
+        <BreadcrumbItem  v-if="tabalive==='待办流程'"  @click.native="routeClick(1)">待办流程</BreadcrumbItem>
+        <BreadcrumbItem  v-if="tabalive==='历史流程'"  @click.native="routeClick(2)">历史流程</BreadcrumbItem>
+    </Breadcrumb> -->
+    <!-- <Tabs :value="tabalive" @on-click="onClick"> -->
+        <!-- <TabPane label="待办流程" name="待办流程"><todoProcess v-if="tabalive === '待办流程'" :tabalive="tabalive"></todoProcess></TabPane> -->
+        <TabPane label="历史流程" name="历史流程"><HistoricalProcess :falg="1" v-if="tabalive === '历史流程'" :tabalive="tabalive"></HistoricalProcess></TabPane>
+    <!-- </Tabs> -->
+    </div>
+</template>
+<script>
+import todoProcess from '@/components/todoProcess/index';
+import HistoricalProcess from '@/components/HistoricalProcess';
+// import router from '../config/router.config'
+export default {
+    name:'handled',
+    // todoProcess,
+    components:{todoProcess,HistoricalProcess},
+    data(){
+        return{
+            tabalive:"历史流程",//tab切换默认值
+            tabConfig:[{
+                label:'待办流程',
+                name:'待办流程'
+            },{
+                label:'历史流程',
+                name:'历史流程'
+            }]
+        }
+    },
+    methods:{
+        routeClick(val){
+            if(val === 1){
+                this.tabalive = '待办流程';
+            } else if (val === 2) {
+                this.tabalive = '历史流程';
+            }
+        },
+        //tab切换点击事件
+        onClick(val){
+            this.tabalive=val;
+            if(val==='历史流程'){
+             window.history.replaceState({}, '', "/#/InstanceManagementList?type=2");
+            }else{
+             window.history.replaceState({}, '', "/#/InstanceManagementList?type=1");
+            }
+
+        },
+    },
+    created(){
+       this.routeClick(2);
+    }
+
+}
+</script>
+<style lang="scss" >
+.InstanceManagementList{
+     background: white;
+     padding: 20px;
+     display: flex;
+     flex-direction: column;
+    .burgeon-breadcrumb{
+        font-size:18px;
+        margin-bottom: 12px;
+    }
+    .burgeon-tabs{
+        flex:1;
+        display: flex;
+       -webkit-box-direction: column;
+        flex-direction: column;
+        .burgeon-tabs-bar{
+            // height: 27px;
+        }
+        .burgeon-tabs-content-animated{
+        flex:1;
+        .burgeon-tabs-tabpane{
+            display: flex;
+        }
+    }
+    }
+
+}
+</style>

+ 87 - 0
ruoyi-ui/src/views/workbench/process/index.vue

@@ -0,0 +1,87 @@
+<template>
+    <div class="InstanceManagementList">
+      <!-- <Breadcrumb separator=">">
+        <BreadcrumbItem  v-if="tabalive==='待办流程'"  @click.native="routeClick(1)">待办流程</BreadcrumbItem>
+        <BreadcrumbItem  v-if="tabalive==='历史流程'"  @click.native="routeClick(2)">历史流程</BreadcrumbItem>
+    </Breadcrumb> -->
+    <!-- <Tabs :value="tabalive" @on-click="onClick"> -->
+        <!-- <TabPane label="待办流程" name="待办流程"><todoProcess v-if="tabalive === '待办流程'" :tabalive="tabalive"></todoProcess></TabPane> -->
+        <TabPane label="历史流程" name="历史流程"><HistoricalProcess v-if="tabalive === '历史流程'" :tabalive="tabalive"></HistoricalProcess></TabPane>
+    <!-- </Tabs> -->
+    </div>
+</template>
+<script>
+import todoProcess from '@/components/todoProcess/index';
+import HistoricalProcess from '@/components/HistoricalProcess';
+// import router from '../config/router.config'
+export default {
+    name:'process',
+    // todoProcess,
+    components:{todoProcess,HistoricalProcess},
+    data(){
+        return{
+            tabalive:"历史流程",//tab切换默认值
+            tabConfig:[{
+                label:'待办流程',
+                name:'待办流程'
+            },{
+                label:'历史流程',
+                name:'历史流程'
+            }]
+        }
+    },
+    methods:{
+        routeClick(val){
+            if(val === 1){
+                this.tabalive = '待办流程';
+            } else if (val === 2) {
+                this.tabalive = '历史流程';
+            }
+        },
+        //tab切换点击事件
+        onClick(val){
+            this.tabalive=val;
+            if(val==='历史流程'){
+             window.history.replaceState({}, '', "/#/InstanceManagementList?type=2");
+            }else{
+             window.history.replaceState({}, '', "/#/InstanceManagementList?type=1");
+            }
+
+        },
+    },
+    created(){
+       this.routeClick(2);
+
+
+    }
+
+}
+</script>
+<style lang="scss" >
+.InstanceManagementList{
+     background: white;
+     padding: 20px;
+     display: flex;
+     flex-direction: column;
+    .burgeon-breadcrumb{
+        font-size:18px;
+        margin-bottom: 12px;
+    }
+    .burgeon-tabs{
+        flex:1;
+        display: flex;
+       -webkit-box-direction: column;
+        flex-direction: column;
+        .burgeon-tabs-bar{
+            // height: 27px;
+        }
+        .burgeon-tabs-content-animated{
+        flex:1;
+        .burgeon-tabs-tabpane{
+            display: flex;
+        }
+    }
+    }
+
+}
+</style>