Browse Source

流程管理

yanliming 4 years ago
parent
commit
55d828e3bd

+ 5 - 1
src/api/base/canteenInfo.js

@@ -41,7 +41,11 @@ function batchRemove(idList) {
   });
   });
 }
 }
 
 
+function getTableHead() {
+  return request.post(constant.serverUrl + "/base/canteenInfo/getTableHead");
+}
+
 
 
 export default {
 export default {
-  create, edit, add, update, remove, batchRemove, pageList
+  create, edit, add, update, remove, batchRemove, pageList,getTableHead
 }
 }

+ 4 - 1
src/api/base/companyInfo.js

@@ -82,9 +82,12 @@ function isOpenMobilePayment(formData) {
   return request.post(constant.serverUrl + "/base/companyInfo/isOpenMobilePayment",formData);
   return request.post(constant.serverUrl + "/base/companyInfo/isOpenMobilePayment",formData);
 }
 }
 
 
+function departmentList() {
+  return request.post(constant.serverUrl + "/base/companyInfo/departmentList");
+}
 
 
 
 
 export default {
 export default {
   list, create, edit, add, update, remove, batchRemove, pageList, queryBindDeviceList,
   list, create, edit, add, update, remove, batchRemove, pageList, queryBindDeviceList,
-  bindDevice, unbindDevice,loadChildren,treeList,isOpenMobilePayment
+  bindDevice, unbindDevice,loadChildren,treeList,isOpenMobilePayment,departmentList
 }
 }

+ 6 - 1
src/api/base/personInfo.js

@@ -156,9 +156,14 @@ function updateHealthyCode(personId){
   return request.get(constant.serverUrl + `/base/personInfo/updateHealthyCode?personId=${personId}`);
   return request.get(constant.serverUrl + `/base/personInfo/updateHealthyCode?personId=${personId}`);
 }
 }
 
 
+function findStrIdByCompanyCode() {
+  return request.post(constant.serverUrl + "/base/personInfo/findStrIdByCompanyCode");
+}
+
 export default {
 export default {
   pageList, create, edit, add, update, remove, batchRemove, exportXls,
   pageList, create, edit, add, update, remove, batchRemove, exportXls,
   enabledFace, enabledCard, enabledApp, enabledGuest, dataSync, enabledFaceList,
   enabledFace, enabledCard, enabledApp, enabledGuest, dataSync, enabledFaceList,
   enabledWechatNotice, unbindWechat, lifeRecordList, clearFaceImg, batchClearFaceImg,
   enabledWechatNotice, unbindWechat, lifeRecordList, clearFaceImg, batchClearFaceImg,
-  enabledSync, enabledSyncList, bindWechat,findByCompanyId,findByCompanyCode,updateHealthyCode
+  enabledSync, enabledSyncList, bindWechat,findByCompanyId,findByCompanyCode,updateHealthyCode,
+  findStrIdByCompanyCode
 }
 }

+ 47 - 0
src/api/workflow/processActivity.js

@@ -0,0 +1,47 @@
+import request from '@/utils/request'
+import constant from '@/constant'
+
+function pageList(formData) {
+  return request.post(constant.serverUrl + "/workflow/processActivity/pageList", formData);
+}
+
+function create() {
+  return request.get(constant.serverUrl + "/workflow/processActivity/create");
+}
+
+function edit(id) {
+  return request.get(constant.serverUrl + "/workflow/processActivity/edit/" + id);
+}
+
+function add(formModel) {
+  return request.post(constant.serverUrl + "/workflow/processActivity/add", formModel, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function update(formModel) {
+  return request.post(constant.serverUrl + "/workflow/processActivity/update", formModel, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function remove(id) {
+  return request.post(constant.serverUrl + "/workflow/processActivity/delete/" + id);
+}
+
+function batchRemove(idList) {
+  return request.post(constant.serverUrl + "/workflow/processActivity/batchDelete", idList, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+
+export default {
+  create, edit, add, update, remove, batchRemove, pageList
+}

+ 52 - 0
src/api/workflow/processSet.js

@@ -0,0 +1,52 @@
+import request from '@/utils/request'
+import constant from '@/constant'
+
+function pageList(formData) {
+  return request.post(constant.serverUrl + "/workflow/processSet/pageList", formData);
+}
+
+function create() {
+  return request.get(constant.serverUrl + "/workflow/processSet/create");
+}
+
+function edit(id) {
+  return request.get(constant.serverUrl + "/workflow/processSet/edit/" + id);
+}
+
+function add(formModel) {
+  return request.post(constant.serverUrl + "/workflow/processSet/add", formModel, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function update(formModel) {
+  return request.post(constant.serverUrl + "/workflow/processSet/update", formModel, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function remove(id) {
+  return request.post(constant.serverUrl + "/workflow/processSet/delete/" + id);
+}
+
+function batchRemove(idList) {
+  return request.post(constant.serverUrl + "/workflow/processSet/batchDelete", idList, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function updateStatus(formData) {
+    return request.post(constant.serverUrl + "/workflow/processSet/updateStatus", formData);
+  }
+
+
+
+export default {
+  create, edit, add, update, remove, batchRemove, pageList,updateStatus
+}

+ 49 - 0
src/api/workflow/processTemplate.js

@@ -0,0 +1,49 @@
+import request from '@/utils/request'
+import constant from '@/constant'
+
+function pageList(formData) {
+  return request.post(constant.serverUrl + "/workflow/processTemplate/pageList", formData);
+}
+
+function create() {
+  return request.get(constant.serverUrl + "/workflow/processTemplate/create");
+}
+
+function edit(id) {
+  return request.get(constant.serverUrl + "/workflow/processTemplate/edit/" + id);
+}
+
+function add(formModel) {
+  return request.post(constant.serverUrl + "/workflow/processTemplate/add", formModel, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function update(formModel) {
+  return request.post(constant.serverUrl + "/workflow/processTemplate/update", formModel, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+function remove(id) {
+  return request.post(constant.serverUrl + "/workflow/processTemplate/delete/" + id);
+}
+
+function batchRemove(idList) {
+  return request.post(constant.serverUrl + "/workflow/processTemplate/batchDelete", idList, {
+    headers: {
+      "Content-Type": "application/json"
+    }
+  });
+}
+
+
+
+
+export default {
+  create, edit, add, update, remove, batchRemove, pageList
+}

+ 2 - 0
src/routers/index.js

@@ -5,6 +5,7 @@ import Home from '@/views/Home.vue'
 import baseRouters from './modules/base'
 import baseRouters from './modules/base'
 import businessRouters from './modules/business'
 import businessRouters from './modules/business'
 import sysRouters from './modules/sys'
 import sysRouters from './modules/sys'
+import workflowRouters from './modules/workflow'
 import { Message } from 'element-ui'
 import { Message } from 'element-ui'
 import NProgress from 'nprogress' // progress bar
 import NProgress from 'nprogress' // progress bar
 import 'nprogress/nprogress.css' // progress bar style
 import 'nprogress/nprogress.css' // progress bar style
@@ -31,6 +32,7 @@ export const constantRoutes = [
       ...sysRouters,
       ...sysRouters,
       ...baseRouters,
       ...baseRouters,
       ...businessRouters,
       ...businessRouters,
+      ...workflowRouters,
     ]
     ]
   },
   },
   {
   {

+ 43 - 0
src/routers/modules/workflow.js

@@ -0,0 +1,43 @@
+var routers = [
+    {
+            //流程管理
+            path: '/workflow/processSet/list',
+            name: 'workflowProcessSetList',
+            // route level code-splitting
+            // this generates a separate chunk (about.[hash].js) for this route
+            // which is lazy-loaded when the route is visited.
+            component: () => import('@/views/workflow/processSet-list.vue'),
+            meta: {
+                    roles: ["admin"],
+                    title: '流程设置'
+            }
+    },
+    {
+        //流程模版管理
+        path: '/workflow/processTemplate/list',
+        name: 'workflowProcessTemplateList',
+        // route level code-splitting
+        // this generates a separate chunk (about.[hash].js) for this route
+        // which is lazy-loaded when the route is visited.
+        component: () => import('@/views/workflow/processTemplate-list.vue'),
+        meta: {
+                roles: ["admin"],
+                title: '模版设置'
+        }
+     },
+     {
+        //流程步骤管理
+        path: '/workflow/processActivity/list',
+        name: 'workflowProcessActivityList',
+        // route level code-splitting
+        // this generates a separate chunk (about.[hash].js) for this route
+        // which is lazy-loaded when the route is visited.
+        component: () => import('@/views/workflow/processActivity-list.vue'),
+        meta: {
+                roles: ["admin"],
+                title: '步骤设置'
+        }
+     },
+]
+
+export default routers;

+ 2 - 1
src/views/base/canteenInfo-list.vue

@@ -60,6 +60,7 @@
       <el-table-column type="index" label="序号" :index="indexMethod" width="50"></el-table-column>
       <el-table-column type="index" label="序号" :index="indexMethod" width="50"></el-table-column>
       <el-table-column prop="name" label="食堂名称" width="150"></el-table-column>
       <el-table-column prop="name" label="食堂名称" width="150"></el-table-column>
       <el-table-column prop="address" label="地点" width="200"></el-table-column>
       <el-table-column prop="address" label="地点" width="200"></el-table-column>
+
       <el-table-column prop="lunchTimeRange" label="午餐时间" width="120"></el-table-column>
       <el-table-column prop="lunchTimeRange" label="午餐时间" width="120"></el-table-column>
       <el-table-column prop="lunchFee" label="午餐金额(元)" width="120" ></el-table-column>
       <el-table-column prop="lunchFee" label="午餐金额(元)" width="120" ></el-table-column>
       <el-table-column prop="dinnerTimeRange" label="晚餐时间"  width="120"></el-table-column>
       <el-table-column prop="dinnerTimeRange" label="晚餐时间"  width="120"></el-table-column>
@@ -163,10 +164,10 @@ export default {
       showChannelListModal: false,
       showChannelListModal: false,
       showPhotoListModal: false,
       showPhotoListModal: false,
       showDeviceModal:false,
       showDeviceModal:false,
+      canteenDiningList:[],
     };
     };
   },
   },
   created() {
   created() {
-
   },
   },
   methods: {
   methods: {
     indexMethod(index) {
     indexMethod(index) {

+ 1 - 1
src/views/base/roleCheckOn-detail.vue

@@ -44,7 +44,7 @@
                     </el-time-picker>
                     </el-time-picker>
                 </div>
                 </div>
                 <div>
                 <div>
-                    <el-radio label="false">限制</el-radio>
+                    <el-radio label="false">按考勤时间限制</el-radio>
                 </div>
                 </div>
                 </el-radio-group>
                 </el-radio-group>
                 
                 

+ 1 - 1
src/views/base/rolePersonCheckOn-detail.vue

@@ -44,7 +44,7 @@
                     </el-time-picker>
                     </el-time-picker>
                 </div>
                 </div>
                 <div>
                 <div>
-                    <el-radio label="false">限制</el-radio>
+                    <el-radio label="false">按考勤时间限制</el-radio>
                 </div>
                 </div>
                 </el-radio-group>
                 </el-radio-group>
                 
                 

+ 293 - 0
src/views/workflow/processActivity-detail.vue

@@ -0,0 +1,293 @@
+
+<style scoped>
+.user-panel {
+  margin: 10px auto;
+}
+</style>
+<template>
+  <el-dialog
+    :visible.sync="showDialog"
+    :title="title"
+    :modal-append-to-body="false"
+    style="text-align:left;"
+    @close="closeDialog"
+    :close-on-click-modal="false"
+    width="50%"
+  >
+  <h4>基本配置</h4>
+    <div class="user-panel" v-loading="loading">
+      <el-form ref="form" :model="formModel" :rules="ruleValidate"  :label-width="'100px'">
+        <el-row>
+            <el-col :span="12">
+                <el-form-item label="步骤名称" prop="name" style="width:350px">
+                    <el-input v-model="formModel.name" placeholder="请输入步骤名称" ></el-input>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="步骤信息" prop="remark" style="width:350px">
+                    <el-input v-model="formModel.remark" placeholder="请输入步骤信息" ></el-input>
+                </el-form-item>
+            </el-col>
+        </el-row>
+        <el-row>
+            <el-col :span="12">
+                <el-form-item label="会签类型" prop="operation" style="width:350px">
+                    <el-radio-group v-model="formModel.operation">
+                        <el-radio label="or">或签</el-radio>
+                        <el-radio label="and">会签</el-radio>
+                    </el-radio-group>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="过程抄送人" prop="ccPersonIdArray" style="width:350px">
+                    <el-select v-model="formModel.ccPersonIdArray" multiple filterable placeholder="请选择过程抄送人" style="width:250px">
+                        <el-option
+                        v-for="item in ccPersonIdList"
+                        :key="item.strId"
+                        :label="item.name"
+                        :value="item.strId">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+            </el-col>
+        </el-row>
+        <h4>审批设置</h4>
+        <el-form-item label="审批者类型" prop="source" >
+            <el-radio-group v-model="formModel.source">
+                <el-radio label="1">审批人</el-radio>
+                <el-radio label="2">部门/角色</el-radio>
+                <el-radio label="3">相对职位</el-radio>
+            </el-radio-group>
+        </el-form-item>
+        <el-form-item label="审批人" prop="approvedPersonIdArray" style="width:350px">
+            <el-select v-model="formModel.approvedPersonIdArray" multiple filterable placeholder="请选择审批人" style="width:250px">
+                <el-option
+                v-for="item in approvedPersonList"
+                :key="item.strId"
+                :label="item.name"
+                :value="item.strId">
+                </el-option>
+            </el-select>
+        </el-form-item>
+        <el-row>
+            <el-col :span="12">
+                <el-form-item label="部门" prop="companyIdArray" style="width:350px">
+                    <el-select v-model="formModel.companyIdArray" filterable multiple placeholder="请选择部门" style="width:250px">
+                        <el-option
+                        v-for="item in companyList"
+                        :key="item.id"
+                        :label="item.name"
+                        :value="item.id">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+            </el-col>
+            <el-col :span="12">
+                <el-form-item label="角色" style="width:350px" prop="roleIdArray">
+                    <el-select v-model="formModel.roleIdArray" filterable multiple placeholder="请选择角色" style="width:250px">
+                        <el-option
+                        v-for="item in roleIdList"
+                        :key="item.id"
+                        :label="item.personRoleName"
+                        :value="item.id">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+            </el-col>
+        </el-row>
+        <el-form-item label="相对职位" prop="relativePosition" >
+            <el-select v-model="formModel.relativePosition"  style="width:250px">
+                <el-option v-for="(item,index) in relativePositionList" 
+                :label="item.name" :value="item.value" :key="index"></el-option>
+            </el-select>
+        </el-form-item>
+
+      </el-form>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="closeDialog">取 消</el-button>
+      <el-button type="primary" @click="handleSubmit" :loading="submitting">确 定</el-button>
+    </span>
+  </el-dialog>
+</template>
+<script>
+import processActivityApi from "@/api/workflow/processActivity";
+import dataDictionaryApi from "@/api/sys/dataDictionary";
+import personInfoApi from "@/api/base/personInfo";
+import companyInfoApi from "@/api/base/companyInfo";
+import personRoleInfoApi from "@/api/base/personRoleInfo";
+
+export default {
+  props: ["businessKey", "title","processTemplateId"],
+  data() {
+    return {
+      formModel: {
+          name:"",
+          remark:"",
+          operation:"",
+          ccPersonIdArray:[],
+          approvedPersonIdArray:[],
+          companyIdArray:[],
+          roleIdArray:[],
+      },
+      ruleValidate: {
+        name: [
+          { required: true, message: "流程名称不能为空", trigger: "blur" }
+        ],
+        operation: [
+          { required: true, message: "会签类型不能为空", trigger: "blur" }
+        ],
+        source: [
+          { required: true, message: "审批者类型不能为空", trigger: "blur" }
+        ],
+      },
+      showDialog: true,
+      loading: false,
+      submitting: false,
+      props: {
+        // 配置项(必选)
+        value: "id",
+        label: "name",
+        children: "children"
+      },
+      relativePositionList:[],
+      ccPersonIdList:[],
+      approvedPersonList:[],
+      companyList:[],
+      roleIdList:[],
+    };
+  },
+  created() {
+    dataDictionaryApi.findByCatalogName({
+      "catalogName" : "相对职位"
+    }).then(response => {
+      var jsonData = response.data;
+      this.relativePositionList = jsonData.data;
+    });
+
+    personInfoApi.findStrIdByCompanyCode().then(response => {
+      var jsonData = response.data;
+      this.ccPersonIdList = jsonData.data;
+      this.approvedPersonList = jsonData.data;
+    });
+
+    companyInfoApi.departmentList().then(response => {
+        var jsonData = response.data;
+        this.companyList = jsonData.data;
+    });
+    
+    personRoleInfoApi.findAll().then(response => {
+        var jsonData = response.data;
+        this.roleIdList = jsonData.data;
+    });
+    
+  },
+  methods: {
+    closeDialog() {
+      this.$emit("close", false);
+    },
+    handleSubmit() {
+      var self = this;
+
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          (function() {
+            var id = self.formModel.id;
+
+            self.loading = true;
+
+            self.formModel.processTemplateId = self.processTemplateId;
+
+            if (id == null || id.length == 0) {
+              return processActivityApi.add(self.formModel);
+            } else {
+              return processActivityApi.update(self.formModel);
+            }
+          })().then(function(response) {
+            self.loading = false;
+            var jsonData = response.data;
+
+            if (jsonData.result) {
+              self.$message({
+                message: "保存成功!",
+                type: "success"
+              });
+
+              self.$emit("close", true);
+            } else {
+              self.$message({
+                message: jsonData.message + "",
+                type: "warning"
+              });
+
+              //self.$emit("close", false);
+            }
+          });
+        }
+      });
+    },
+  },
+  mounted: function() {
+    var self = this;
+    (function() {
+      self.loading = true;
+
+      if (self.businessKey.length == 0) {
+        return processActivityApi.create();
+      } else {
+        return processActivityApi.edit(self.businessKey);
+      }
+    })()
+      .then(response => {
+        var jsonData = response.data;
+        self.loading = false;
+
+        if (jsonData.result) {
+            self.formModel = jsonData.data;
+            if(jsonData.data.ccPersonIdList!=null&&jsonData.data.ccPersonIdList.length>0){
+              var ccPersonIdList = jsonData.data.ccPersonIdList;
+              var ccPersonIdArray = new Array();
+              ccPersonIdList.forEach((item, index) => {
+                ccPersonIdArray.push(item)
+              })
+              self.formModel.ccPersonIdArray = ccPersonIdArray;
+            }
+
+            if(jsonData.data.approvedPersonIdList!=null&&jsonData.data.approvedPersonIdList.length>0){
+              var approvedPersonIdList = jsonData.data.approvedPersonIdList;
+              var approvedPersonIdArray = new Array();
+              approvedPersonIdList.forEach((item, index) => {
+                approvedPersonIdArray.push(item)
+              })
+              self.formModel.approvedPersonIdArray = approvedPersonIdArray;
+            }
+
+            if(jsonData.data.companyIdList!=null&&jsonData.data.companyIdList.length>0){
+              var companyIdList = jsonData.data.companyIdList;
+              var companyIdArray = new Array();
+              companyIdList.forEach((item, index) => {
+                companyIdArray.push(item)
+              })
+              self.formModel.companyIdArray = companyIdArray;
+            }
+
+            if(jsonData.data.roleIdList!=null&&jsonData.data.roleIdList.length>0){
+              var roleIdList = jsonData.data.roleIdList;
+              var roleIdArray = new Array();
+              roleIdList.forEach((item, index) => {
+                roleIdArray.push(item)
+              })
+              self.formModel.roleIdArray = roleIdArray;
+            }
+            
+
+        } else {
+          self.$message.error(jsonData.message + "");
+        }
+      })
+      .catch(error => {
+        self.$message.error(error + "");
+      });
+  },
+};
+</script>

+ 306 - 0
src/views/workflow/processActivity-list.vue

@@ -0,0 +1,306 @@
+<template>
+  <div>
+    <el-breadcrumb separator=">">
+      <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
+      <el-breadcrumb-item>
+        <a href="#">基础信息</a>
+      </el-breadcrumb-item>
+      <el-breadcrumb-item>
+        <a href="/processActivity">流程步骤</a>
+      </el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-divider></el-divider>
+    <el-row class="button-group">
+      <el-button type="primary" size="small" plain icon="el-icon-circle-plus" @click="handleAdd">新增</el-button>
+    </el-row>
+    <el-table
+      ref="formTable"
+      :data="tableData"
+      v-loading="loading"
+      :element-loading-text="loadingText"
+      stripe
+      :height="tableHeight"
+      @sort-change="sortChange"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column prop="name" label="流程名称" width="200"></el-table-column>
+      <el-table-column prop="remark" label="审核者(人——部门——角色——相对职位)" >
+        <template slot-scope="{row}">
+          <span v-if="row.approvedPersons">
+            {{row.approvedPersons}}
+          </span>
+          <span v-else>
+              空
+          </span>——
+          <span v-if="row.companys">
+            {{row.companys}}
+          </span>
+          <span v-else>
+              空
+          </span>——
+          <span v-if="row.roles">
+            {{row.roles}}
+          </span>
+          <span v-else>
+              空
+          </span>——
+          <span v-if="row.relativePosition">
+            {{row.relativePosition}}
+          </span>
+          <span v-else>
+              空
+          </span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="activityOrder" label="步骤序号" width="200"></el-table-column>
+      <el-table-column label="操作" width="250" fixed="right">
+        <template slot-scope="{row}">
+          <el-row>
+            <el-col :span="6">
+              <el-link type="primary" @click="handleEdit(row)">编辑</el-link>
+            </el-col>
+            <el-col :span="6">
+              <el-link type="danger" @click="handleDelete(row)">删除</el-link>
+            </el-col>
+            <el-col :span="6">
+              <el-link v-if="row.activityOrder!=1" type="primary" @click="handleDelete(row)">上移</el-link>
+              <el-link v-else type="primary" @click="handleDelete(row)">上移</el-link>
+            </el-col>
+            <el-col :span="6">
+              <el-link type="primary" @click="handleDelete(row)">下移</el-link>
+            </el-col>
+          </el-row>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      :current-page.sync="pageIndex"
+      :total="totalElements"
+      :page-sizes="pageSizeList"
+      @current-change="changePage"
+      @size-change="pageSizeChange"
+      layout="total, sizes, prev, pager, next, jumper"
+    ></el-pagination>
+    <processActivity-detail
+      v-if="showModal"
+      :businessKey="businessKey"
+      :processTemplateId="processTemplateId"
+      :title="modalTitle"
+      @close="onDetailModalClose"
+    ></processActivity-detail>
+  </div>
+</template>
+<script>
+import processActivityDetail from "./processActivity-detail";
+import processActivityApi from "@/api/workflow/processActivity";
+import pageUtil from "@/utils/page";
+import "nprogress/nprogress.css"; // progress bar style
+
+export default {
+  name: 'workflowProcessActivityList',
+  data() {
+    var self = this;
+
+    return {
+      queryModel: {
+        name: "",
+      },
+      processTemplateId:"",
+      loading: false,
+      loadingText: "加载中",
+      tableData: [],
+      pageIndex: 1,
+      pageSize: 10,
+      totalPages: 0,
+      totalElements: 0,
+      field: "",
+      direction: "",
+      pageSizeList: [10, 20, 30],
+      multipleSelection: [],
+      showModal: false,
+      modalTitle: "",
+      businessKey: "",
+      tableHeight: 400,
+      dialogVisible: false,
+      ruleDeviceId: "",
+      ruleModel: {
+        mode: "",
+        needCap: "",
+        needMask: "",
+        measureTemperature: "",
+        type: "",
+        minimum: "",
+        maximum: "",
+        preAlarmOffset: "",
+        alarmThreshold: ""
+      },
+      treeData: [],
+      props: {
+        // 配置项(必选)
+        value: "id",
+        label: "name",
+        children: "children"
+      },
+    };
+  },
+  methods: {
+    changePage(pageIndex) {
+      var self = this;
+
+      self.loading = true;
+      self.loadingText = "加载中...";
+
+      self.pageIndex = pageIndex;
+      var formData = new FormData();
+
+    formData.append("pageIndex", self.pageIndex);
+    formData.append("pageSize", self.pageSize);
+
+    formData.append("processTemplateId",self.processTemplateId);
+
+      processActivityApi
+        .pageList(formData)
+        .then(function(response) {
+          self.loading = false;
+          var jsonData = response.data;
+          
+          if(jsonData.result) {
+              var page = jsonData.data;
+
+              self.tableData = page.data;
+              self.totalPages = page.totalPages;
+              self.totalElements = page.recordsTotal;
+          }
+          else{
+            self.$message.warning(jsonData.message + "");
+          }
+        })
+        .catch(error => {
+          self.loading = false;
+        });
+    },
+    pageSizeChange(pageSize) {
+      this.pageSize = pageSize;
+    },
+    sortChange(data) {
+      console.log(data);
+
+      this.field = data.column.sortBy;
+      this.direction = data.order == "ascending" ? "asc" : "desc";
+
+      this.changePage(this.pageIndex);
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    handleReset(name) {
+      this.$refs[name].resetFields();
+    },
+    handleAdd() {
+      this.modalTitle = "新增";
+      this.businessKey = "";
+      this.showModal = true;
+    },
+    handleEdit(record) {
+      this.modalTitle = "编辑";
+      this.businessKey = record.id;
+      this.processTemplateId = 
+      this.showModal = true;
+    },
+    handleDelete(record) {
+      var self = this;
+
+      self
+        .$confirm("是否确认删除?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+        .then(() => {
+          processActivityApi.remove(record.id).then(function(response) {
+            var jsonData = response.data;
+
+            if (jsonData.result) {
+              // var index = self.tableData.indexOf(record);
+              // self.tableData.splice(index, 1);
+              self.changePage(self.pageIndex);
+
+              self.$message({
+                type: "success",
+                message: "删除成功!"
+              });
+            }
+          });
+        });
+    },
+    handleBatchDelete() {
+      var self = this;
+
+      var idList = this.multipleSelection.map(record => {
+        return record.id;
+      });
+
+      this.$confirm("是否确认删除选中项?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        processActivityApi.batchRemove(idList).then(function(response) {
+          var jsonData = response.data;
+
+          if (jsonData.result) {
+            self.changePage(self.pageIndex);
+
+            self.$message({
+              type: "success",
+              message: "删除成功!"
+            });
+          }
+        });
+      });
+    },
+    onDetailModalClose(refreshed) {
+      //保存成功后回调
+      this.showModal = false;
+      this.showDeviceModal = false;
+
+      if (refreshed) {
+        this.changePage(this.pageIndex);
+      }
+    },
+  },
+  mounted: function() {
+    this.processTemplateId = this.$route.query.processTemplateId;
+
+    var self = this;
+    this.changePage(1);
+
+    setTimeout(()=>{
+      self.tableHeight = pageUtil.autoAdjustHeight(self.$refs.formTable.$el);
+    },1000);
+  },
+  components: {
+    "processActivity-detail": processActivityDetail,
+  }
+};
+</script>
+<style lang="scss" scoped>
+.el-breadcrumb {
+  margin: 10px;
+  line-height: 20px;
+}
+
+.el-divider {
+  margin: 5px 0;
+}
+
+.demo-form-inline {
+  margin-left: 10px;
+  text-align: left;
+}
+
+.button-group {
+  margin-left: 10px;
+  text-align: left;
+}
+</style>

+ 147 - 0
src/views/workflow/processSet-detail.vue

@@ -0,0 +1,147 @@
+
+<style scoped>
+.user-panel {
+  margin: 10px auto;
+}
+</style>
+<template>
+  <el-dialog
+    :visible.sync="showDialog"
+    :title="title"
+    :modal-append-to-body="false"
+    style="text-align:left;"
+    @close="closeDialog"
+    :close-on-click-modal="false"
+    width="35%"
+  >
+    <div class="user-panel" v-loading="loading">
+      <el-form ref="form" :model="formModel" :rules="ruleValidate" :label-width="'100px'">
+        <el-form-item label="流程KEY" prop="proKey" style="width:450px">
+            <el-input v-model="formModel.proKey" placeholder="请输入五位ID编号" ></el-input>
+        </el-form-item>
+        <el-form-item label="流程名称" prop="name" style="width:450px">
+            <el-input v-model="formModel.name" placeholder="请输入流程名称" ></el-input>
+        </el-form-item>
+        <el-form-item label="流程说明" prop="remark" style="width:450px">
+            <el-input v-model="formModel.remark" placeholder="请输入流程说明" ></el-input>
+        </el-form-item>
+        <el-form-item label="状态" prop="status" style="width:450px">
+          <el-switch
+            v-model="formModel.status"
+            active-color="#13ce66"
+            inactive-color="#ff4949">
+          </el-switch>
+        </el-form-item>
+        
+      </el-form>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="closeDialog">取 消</el-button>
+      <el-button type="primary" @click="handleSubmit" :loading="submitting">确 定</el-button>
+    </span>
+  </el-dialog>
+</template>
+<script>
+import processSetApi from "@/api/workflow/processSet";
+
+export default {
+  props: ["businessKey", "title"],
+  data() {
+    return {
+      formModel: {},
+      ruleValidate: {
+        proKey: [
+          { required: true, message: "流程KEY不能为空", trigger: "blur" }
+        ],
+        name: [
+          { required: true, message: "流程名称不能为空", trigger: "blur" }
+        ],
+        remark: [
+          { required: true, message: "流程说明不能为空", trigger: "blur" }
+        ],
+      },
+      showDialog: true,
+      loading: false,
+      submitting: false,
+      canQuery: true,
+      treeData: [],
+      props: {
+        // 配置项(必选)
+        value: "id",
+        label: "name",
+        children: "children"
+      },
+    };
+  },
+  created() {
+  },
+  methods: {
+    closeDialog() {
+      this.$emit("close", false);
+    },
+    handleSubmit() {
+      var self = this;
+
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          (function() {
+            var id = self.formModel.id;
+
+            self.loading = true;
+
+            if (id == null || id.length == 0) {
+              return processSetApi.add(self.formModel);
+            } else {
+              return processSetApi.update(self.formModel);
+            }
+          })().then(function(response) {
+            self.loading = false;
+            var jsonData = response.data;
+
+            if (jsonData.result) {
+              self.$message({
+                message: "保存成功!",
+                type: "success"
+              });
+
+              self.$emit("close", true);
+            } else {
+              self.$message({
+                message: jsonData.message + "",
+                type: "warning"
+              });
+
+              //self.$emit("close", false);
+            }
+          });
+        }
+      });
+    },
+  },
+  mounted: function() {
+    var self = this;
+    (function() {
+      self.loading = true;
+
+      if (self.businessKey.length == 0) {
+        return processSetApi.create();
+      } else {
+        return processSetApi.edit(self.businessKey);
+      }
+    })()
+      .then(response => {
+        var jsonData = response.data;
+        self.loading = false;
+
+        if (jsonData.result) {
+            self.formModel = jsonData.data;
+        } else {
+          self.$message.error(jsonData.message + "");
+        }
+      })
+      .catch(error => {
+        self.$message.error(error + "");
+      });
+  },
+};
+</script>

+ 348 - 0
src/views/workflow/processSet-list.vue

@@ -0,0 +1,348 @@
+<template>
+  <div>
+    <el-breadcrumb separator=">">
+      <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
+      <el-breadcrumb-item>
+        <a href="#">基础信息</a>
+      </el-breadcrumb-item>
+      <el-breadcrumb-item>
+        <a href="/processSet">流程设置</a>
+      </el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-divider></el-divider>
+    <!--
+      要resetFields起作用,必须配置:model和prop
+    -->
+    <el-form ref="queryForm" :model="queryModel" inline class="demo-form-inline">
+
+      <el-form-item label="流程名称" prop="name">
+        <el-input type="text" size="mini" v-model="queryModel.name"></el-input>
+      </el-form-item>
+      <el-form-item>
+        <el-button
+          type="primary"
+          size="mini"
+          icon="ios-search"
+          @click="changePage(1)"
+          :loading="loading"
+        >查询</el-button>&nbsp;
+        <el-button
+          type="info"
+          size="mini"
+          style="margin-left: 8px"
+          @click="handleReset('queryForm')"
+        >重置</el-button>&nbsp;
+      </el-form-item>
+    </el-form>
+    <el-divider></el-divider>
+    <el-row class="button-group">
+      <el-button type="primary" size="small" plain icon="el-icon-circle-plus" @click="handleAdd">新增</el-button>
+      <el-button
+        type="primary"
+        size="small"
+        plain
+        icon="el-icon-remove"
+        :disabled="multipleSelection.length==0"
+        @click="handleBatchDelete"
+      >删除选中项</el-button>
+    </el-row>
+    <el-table
+      ref="formTable"
+      :data="tableData"
+      v-loading="loading"
+      :element-loading-text="loadingText"
+      stripe
+      :height="tableHeight"
+      @sort-change="sortChange"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column type="selection" width="55"></el-table-column>
+      <el-table-column prop="proKey" label="流程KEY" width="150"></el-table-column>
+      <el-table-column prop="name" label="流程名称" width="150"></el-table-column>
+      <el-table-column prop="remark" label="流程说明" width="400"></el-table-column>
+      <el-table-column prop="status" label="状态" width="120" >
+        <template slot-scope="{row}">
+          <el-switch
+            v-model="row.status"
+            active-color="#13ce66"
+            inactive-color="#ff4949"
+            @change="handleChange(row)">
+          </el-switch>
+        </template>
+      </el-table-column>
+      <el-table-column prop="updateTime" label="最后更新时间" ></el-table-column>
+      <el-table-column label="操作" width="250" fixed="right">
+        <template slot-scope="{row}">
+          <el-row>
+            <el-col :span="6">
+              <el-link type="primary" @click="handleEdit(row)">编辑</el-link>
+            </el-col>
+            <el-col :span="6">
+              <el-link type="danger" @click="handleDelete(row)">删除</el-link>
+            </el-col>
+            <el-col :span="8">
+              <el-link type="primary" @click="handleToTemplate(row)">模版管理</el-link>
+            </el-col>
+          </el-row>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      :current-page.sync="pageIndex"
+      :total="totalElements"
+      :page-sizes="pageSizeList"
+      @current-change="changePage"
+      @size-change="pageSizeChange"
+      layout="total, sizes, prev, pager, next, jumper"
+    ></el-pagination>
+    <processSet-detail
+      v-if="showModal"
+      :businessKey="businessKey"
+      :title="modalTitle"
+      @close="onDetailModalClose"
+    ></processSet-detail>
+  </div>
+</template>
+<script>
+import processSetDetail from "./processSet-detail";
+import processSetApi from "@/api/workflow/processSet";
+import pageUtil from "@/utils/page";
+import "nprogress/nprogress.css"; // progress bar style
+
+export default {
+  name: 'workflowProcessSetList',
+  data() {
+    var self = this;
+
+    return {
+      queryModel: {
+        name: "",
+      },
+      canteenId:"",
+      loading: false,
+      loadingText: "加载中",
+      tableData: [],
+      pageIndex: 1,
+      pageSize: 10,
+      totalPages: 0,
+      totalElements: 0,
+      field: "",
+      direction: "",
+      pageSizeList: [10, 20, 30],
+      multipleSelection: [],
+      showModal: false,
+      modalTitle: "",
+      businessKey: "",
+      tableHeight: 400,
+      dialogVisible: false,
+      ruleDeviceId: "",
+      ruleModel: {
+        mode: "",
+        needCap: "",
+        needMask: "",
+        measureTemperature: "",
+        type: "",
+        minimum: "",
+        maximum: "",
+        preAlarmOffset: "",
+        alarmThreshold: ""
+      },
+      treeData: [],
+      props: {
+        // 配置项(必选)
+        value: "id",
+        label: "name",
+        children: "children"
+      },
+    };
+  },
+  methods: {
+    changePage(pageIndex) {
+      var self = this;
+
+      self.loading = true;
+      self.loadingText = "加载中...";
+
+      self.pageIndex = pageIndex;
+      var formData = new FormData();
+
+    formData.append("pageIndex", self.pageIndex);
+    formData.append("pageSize", self.pageSize);
+
+    formData.append("name", self.queryModel.name);
+
+      processSetApi
+        .pageList(formData)
+        .then(function(response) {
+          self.loading = false;
+          var jsonData = response.data;
+          
+          if(jsonData.result) {
+              var page = jsonData.data;
+
+              self.tableData = page.data;
+              self.totalPages = page.totalPages;
+              self.totalElements = page.recordsTotal;
+          }
+          else{
+            self.$message.warning(jsonData.message + "");
+          }
+        })
+        .catch(error => {
+          self.loading = false;
+        });
+    },
+    pageSizeChange(pageSize) {
+      this.pageSize = pageSize;
+    },
+    sortChange(data) {
+      console.log(data);
+
+      this.field = data.column.sortBy;
+      this.direction = data.order == "ascending" ? "asc" : "desc";
+
+      this.changePage(this.pageIndex);
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    handleReset(name) {
+      this.$refs[name].resetFields();
+    },
+    handleAdd() {
+      this.modalTitle = "新增";
+      this.businessKey = "";
+      this.showModal = true;
+    },
+    handleEdit(record) {
+      this.modalTitle = "编辑";
+      this.businessKey = record.id;
+      this.showModal = true;
+    },
+    handleDelete(record) {
+      var self = this;
+
+      self
+        .$confirm("是否确认删除?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+        .then(() => {
+          processSetApi.remove(record.id).then(function(response) {
+            var jsonData = response.data;
+
+            if (jsonData.result) {
+              // var index = self.tableData.indexOf(record);
+              // self.tableData.splice(index, 1);
+              self.changePage(self.pageIndex);
+
+              self.$message({
+                type: "success",
+                message: "删除成功!"
+              });
+            }
+          });
+        });
+    },
+    handleBatchDelete() {
+      var self = this;
+
+      var idList = this.multipleSelection.map(record => {
+        return record.id;
+      });
+
+      this.$confirm("是否确认删除选中项?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        processSetApi.batchRemove(idList).then(function(response) {
+          var jsonData = response.data;
+
+          if (jsonData.result) {
+            self.changePage(self.pageIndex);
+
+            self.$message({
+              type: "success",
+              message: "删除成功!"
+            });
+          }
+        });
+      });
+    },
+    onDetailModalClose(refreshed) {
+      //保存成功后回调
+      this.showModal = false;
+      this.showDeviceModal = false;
+
+      if (refreshed) {
+        this.changePage(this.pageIndex);
+      }
+    },
+    handleChange(row){
+      var self = this;
+
+      var formData = new FormData();
+
+      formData.append("id", row.id);
+      formData.append("status", row.status);
+
+      processSetApi.updateStatus(formData).then((response) => {
+        var jsonData = response.data;
+        if (jsonData.result) {
+            self.changePage(self.pageIndex);
+          }
+      });
+
+    },
+    handleToTemplate(row){
+      var path = "/workflow/processTemplate/list";
+
+      this.$store.dispatch("tagsView/delView", {
+          name: "workflowProcessTemplateList",
+          path: path,
+          })
+          .then(({ visitedViews }) => {
+          this.$router.push({
+              path: path,
+              query: {
+                processSetId: row.id,
+              },
+          });
+      });
+    }
+  },
+  mounted: function() {
+    var self = this;
+    this.changePage(1);
+
+    setTimeout(()=>{
+      self.tableHeight = pageUtil.autoAdjustHeight(self.$refs.formTable.$el);
+    },1000);
+  },
+  components: {
+    "processSet-detail": processSetDetail,
+  }
+};
+</script>
+<style lang="scss" scoped>
+.el-breadcrumb {
+  margin: 10px;
+  line-height: 20px;
+}
+
+.el-divider {
+  margin: 5px 0;
+}
+
+.demo-form-inline {
+  margin-left: 10px;
+  text-align: left;
+}
+
+.button-group {
+  margin-left: 10px;
+  text-align: left;
+}
+</style>

+ 161 - 0
src/views/workflow/processTemplate-detail.vue

@@ -0,0 +1,161 @@
+
+<style scoped>
+.user-panel {
+  margin: 10px auto;
+}
+</style>
+<template>
+  <el-dialog
+    :visible.sync="showDialog"
+    :title="title"
+    :modal-append-to-body="false"
+    style="text-align:left;"
+    @close="closeDialog"
+    :close-on-click-modal="false"
+    width="35%"
+  >
+    <div class="user-panel" v-loading="loading">
+      <el-form ref="form" :model="formModel" :rules="ruleValidate" :label-width="'100px'">
+        <el-form-item label="模版名称" prop="name">
+            <el-input v-model="formModel.name" placeholder="请输入模版名称" ></el-input>
+        </el-form-item>
+        <el-form-item label="谁可以发起" prop="companyArray" >
+            <el-select v-model="formModel.companyArray" multiple filterable  placeholder="请选择" style="width:420px">
+                <el-option
+                v-for="item in companyList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id">
+                </el-option>
+            </el-select>
+        </el-form-item>
+        
+      </el-form>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="closeDialog">取 消</el-button>
+      <el-button type="primary" @click="handleSubmit" :loading="submitting">确 定</el-button>
+    </span>
+  </el-dialog>
+</template>
+<script>
+import processTemplateApi from "@/api/workflow/processTemplate";
+import companyInfoApi from "@/api/base/companyInfo";
+
+export default {
+  props: ["businessKey", "title","processSetId"],
+  data() {
+    return {
+      formModel: {
+        name:"",
+        companyArray:[],
+      },
+      ruleValidate: {
+        name: [
+          { required: true, message: "流程名称不能为空", trigger: "blur" }
+        ],
+        companyArray: [
+          { required: true, message: "谁能发起不能为空", trigger: "blur" }
+        ],
+      },
+      showDialog: true,
+      loading: false,
+      submitting: false,
+      canQuery: true,
+      companyList:[],
+      props: {
+        // 配置项(必选)
+        value: "id",
+        label: "name",
+        children: "children"
+      },
+    };
+  },
+  created() {
+    var self = this;
+
+    companyInfoApi.departmentList().then(response => {
+        var jsonData = response.data;
+        self.companyList = jsonData.data;
+    });
+  },
+  methods: {
+    closeDialog() {
+      this.$emit("close", false);
+    },
+    handleSubmit() {
+      var self = this;
+
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          (function() {
+            var id = self.formModel.id;
+
+            self.loading = true;
+
+            self.formModel.processSetId = self.processSetId;
+
+            if (id == null || id.length == 0) {
+              return processTemplateApi.add(self.formModel);
+            } else {
+              return processTemplateApi.update(self.formModel);
+            }
+          })().then(function(response) {
+            self.loading = false;
+            var jsonData = response.data;
+
+            if (jsonData.result) {
+              self.$message({
+                message: "保存成功!",
+                type: "success"
+              });
+
+              self.$emit("close", true);
+            } else {
+              self.$message({
+                message: jsonData.message + "",
+                type: "warning"
+              });
+
+              //self.$emit("close", false);
+            }
+          });
+        }
+      });
+    },
+  },
+  mounted: function() {
+    var self = this;
+    (function() {
+      self.loading = true;
+
+      if (self.businessKey.length == 0) {
+        return processTemplateApi.create();
+      } else {
+        return processTemplateApi.edit(self.businessKey);
+      }
+    })()
+      .then(response => {
+        var jsonData = response.data;
+        self.loading = false;
+
+        if (jsonData.result) {
+            self.formModel = jsonData.data;
+            if(jsonData.data.companyNameList!=null&&jsonData.data.companyNameList.length>0){
+              var companyNameList = jsonData.data.companyNameList;
+              var companyArray = new Array();
+              companyNameList.forEach((item, index) => {
+                companyArray.push(item.id)
+              })
+              self.formModel.companyArray = companyArray;
+            }
+        } else {
+          self.$message.error(jsonData.message + "");
+        }
+      })
+      .catch(error => {
+        self.$message.error(error + "");
+      });
+  },
+};
+</script>

+ 306 - 0
src/views/workflow/processTemplate-list.vue

@@ -0,0 +1,306 @@
+<template>
+  <div>
+    <el-breadcrumb separator=">">
+      <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
+      <el-breadcrumb-item>
+        <a href="#">基础信息</a>
+      </el-breadcrumb-item>
+      <el-breadcrumb-item>
+        <a href="/processTemplate">流程模版</a>
+      </el-breadcrumb-item>
+    </el-breadcrumb>
+    <el-divider></el-divider>
+    <el-row class="button-group">
+      <el-button type="primary" size="small" plain icon="el-icon-circle-plus" @click="handleAdd">新增</el-button>
+    </el-row>
+    <el-table
+      ref="formTable"
+      :data="tableData"
+      v-loading="loading"
+      :element-loading-text="loadingText"
+      stripe
+      :height="tableHeight"
+      @sort-change="sortChange"
+      @selection-change="handleSelectionChange"
+    >
+      <el-table-column prop="name" label="模版名称" width="200"></el-table-column>
+      <el-table-column prop="companyId" label="谁可以发起" >
+        <template slot-scope="{row}">
+          <div v-for="item in row.companyNameList" v-bind:key="item.id" >
+              {{item.name}}
+          </div>
+        </template>
+      </el-table-column>
+      <el-table-column prop="sort" label="模版顺序" width="120" ></el-table-column>
+      <el-table-column label="操作" width="250" fixed="right">
+        <template slot-scope="{row}" width="350">
+          <el-row>
+            <el-col :span="6">
+              <el-link type="primary" @click="handleEdit(row)">编辑</el-link>
+            </el-col>
+            <el-col :span="6">
+              <el-link type="danger" @click="handleDelete(row)">删除</el-link>
+            </el-col>
+            <el-col :span="8">
+              <el-link type="primary" @click="handleToActivity(row)">编辑步骤</el-link>
+            </el-col>
+            <el-col :span="6">
+              <el-link type="primary" @click="handleDelete(row)">上移</el-link>
+            </el-col>
+            <el-col :span="6">
+              <el-link type="primary" @click="handleDelete(row)">下移</el-link>
+            </el-col>
+          </el-row>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+      :current-page.sync="pageIndex"
+      :total="totalElements"
+      :page-sizes="pageSizeList"
+      @current-change="changePage"
+      @size-change="pageSizeChange"
+      layout="total, sizes, prev, pager, next, jumper"
+    ></el-pagination>
+    <processTemplate-detail
+      v-if="showModal"
+      :businessKey="businessKey"
+      :processSetId="processSetId"
+      :title="modalTitle"
+      @close="onDetailModalClose"
+    ></processTemplate-detail>
+  </div>
+</template>
+<script>
+import processTemplateDetail from "./processTemplate-detail";
+import processTemplateApi from "@/api/workflow/processTemplate";
+import pageUtil from "@/utils/page";
+import "nprogress/nprogress.css"; // progress bar style
+
+export default {
+  name: 'workflowProcessTemplateList',
+  data() {
+    var self = this;
+
+    return {
+      queryModel: {
+        name: "",
+      },
+      processSetId:"",
+      canteenId:"",
+      loading: false,
+      loadingText: "加载中",
+      tableData: [],
+      pageIndex: 1,
+      pageSize: 10,
+      totalPages: 0,
+      totalElements: 0,
+      field: "",
+      direction: "",
+      pageSizeList: [10, 20, 30],
+      multipleSelection: [],
+      showModal: false,
+      modalTitle: "",
+      businessKey: "",
+      tableHeight: 400,
+      dialogVisible: false,
+      ruleDeviceId: "",
+      ruleModel: {
+        mode: "",
+        needCap: "",
+        needMask: "",
+        measureTemperature: "",
+        type: "",
+        minimum: "",
+        maximum: "",
+        preAlarmOffset: "",
+        alarmThreshold: ""
+      },
+      treeData: [],
+      props: {
+        // 配置项(必选)
+        value: "id",
+        label: "name",
+        children: "children"
+      },
+    };
+  },
+  created() {
+
+  },
+  methods: {
+    changePage(pageIndex) {
+      var self = this;
+
+      self.loading = true;
+      self.loadingText = "加载中...";
+
+      self.pageIndex = pageIndex;
+      var formData = new FormData();
+
+    formData.append("pageIndex", self.pageIndex);
+    formData.append("pageSize", self.pageSize);
+
+    formData.append("processSetId", self.processSetId);
+
+      processTemplateApi
+        .pageList(formData)
+        .then(function(response) {
+          self.loading = false;
+          var jsonData = response.data;
+          
+          if(jsonData.result) {
+              var page = jsonData.data;
+
+              self.tableData = page.data;
+              self.totalPages = page.totalPages;
+              self.totalElements = page.recordsTotal;
+          }
+          else{
+            self.$message.warning(jsonData.message + "");
+          }
+        })
+        .catch(error => {
+          self.loading = false;
+        });
+    },
+    pageSizeChange(pageSize) {
+      this.pageSize = pageSize;
+    },
+    sortChange(data) {
+      console.log(data);
+
+      this.field = data.column.sortBy;
+      this.direction = data.order == "ascending" ? "asc" : "desc";
+
+      this.changePage(this.pageIndex);
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    handleReset(name) {
+      this.$refs[name].resetFields();
+    },
+    handleAdd() {
+      this.modalTitle = "新增";
+      this.businessKey = "";
+      this.showModal = true;
+    },
+    handleEdit(record) {
+      this.modalTitle = "编辑";
+      this.businessKey = record.id;
+      this.showModal = true;
+    },
+    handleDelete(record) {
+      var self = this;
+
+      self
+        .$confirm("是否确认删除?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning"
+        })
+        .then(() => {
+          processTemplateApi.remove(record.id).then(function(response) {
+            var jsonData = response.data;
+
+            if (jsonData.result) {
+              // var index = self.tableData.indexOf(record);
+              // self.tableData.splice(index, 1);
+              self.changePage(self.pageIndex);
+
+              self.$message({
+                type: "success",
+                message: "删除成功!"
+              });
+            }
+          });
+        });
+    },
+    handleBatchDelete() {
+      var self = this;
+
+      var idList = this.multipleSelection.map(record => {
+        return record.id;
+      });
+
+      this.$confirm("是否确认删除选中项?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      }).then(() => {
+        processTemplateApi.batchRemove(idList).then(function(response) {
+          var jsonData = response.data;
+
+          if (jsonData.result) {
+            self.changePage(self.pageIndex);
+
+            self.$message({
+              type: "success",
+              message: "删除成功!"
+            });
+          }
+        });
+      });
+    },
+    onDetailModalClose(refreshed) {
+      //保存成功后回调
+      this.showModal = false;
+      this.showDeviceModal = false;
+
+      if (refreshed) {
+        this.changePage(this.pageIndex);
+      }
+    },
+    handleToActivity(row){
+      var path = "/workflow/processActivity/list";
+
+      this.$store.dispatch("tagsView/delView", {
+          name: "workflowProcessActivityList",
+          path: path,
+          })
+          .then(({ visitedViews }) => {
+          this.$router.push({
+              path: path,
+              query: {
+                processTemplateId: row.id,
+              },
+          });
+      });
+    }
+  },
+  mounted: function() {
+    this.processSetId = this.$route.query.processSetId
+
+    var self = this;
+    this.changePage(1);
+
+    setTimeout(()=>{
+      self.tableHeight = pageUtil.autoAdjustHeight(self.$refs.formTable.$el);
+    },1000);
+  },
+  components: {
+    "processTemplate-detail": processTemplateDetail,
+  }
+};
+</script>
+<style lang="scss" scoped>
+.el-breadcrumb {
+  margin: 10px;
+  line-height: 20px;
+}
+
+.el-divider {
+  margin: 5px 0;
+}
+
+.demo-form-inline {
+  margin-left: 10px;
+  text-align: left;
+}
+
+.button-group {
+  margin-left: 10px;
+  text-align: left;
+}
+</style>