Browse Source

Merge branch 'master' of http://139.196.39.194:9021/chenc/cd-work-flow-web

liangyan0105 3 years ago
parent
commit
307cce84cb
3 changed files with 1151 additions and 9 deletions
  1. 8 1
      src/api/api.js
  2. 0 8
      src/views/demo/useSeal.vue
  3. 1143 0
      src/views/process-center/applyListByTableName.vue

+ 8 - 1
src/api/api.js

@@ -113,6 +113,11 @@ const queryList=(params)=>getAction("/tbTableInfo/queryList",params)
 //修改
 const updateTbTableInfo=(params)=>putAction("/tbTableInfo/updateTbTableInfo",params)
 
+//流程相关
+//批量保存显示列
+const saveBuchColumnsShow = (params)=>postAction("/cdColumnsShow/saveBuchColumnsShow",params);
+//获取表单显示列
+const getColumnsShowList=(params)=>getAction("/cdColumnsShow/getColumnsShowList",params)
 
 export {
   // imgView,
@@ -173,7 +178,9 @@ export {
   queryMyDepartTreeList,
   tableList,
   queryList,
-  updateTbTableInfo
+  updateTbTableInfo,
+  saveBuchColumnsShow,
+  getColumnsShowList
 }
 
 

File diff suppressed because it is too large
+ 0 - 8
src/views/demo/useSeal.vue


+ 1143 - 0
src/views/process-center/applyListByTableName.vue

@@ -0,0 +1,1143 @@
+<template>
+  <a-card :bordered="false">
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+          <a-col :md="6" :sm="8">
+            <a-form-item label="标题">
+              <a-input placeholder="请输入搜索关键词" v-model="queryParam.title"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="状态">
+              <a-select v-model="queryParam.status" placeholder="请选择" :allowClear="true">
+                <a-select-option value="0">草稿</a-select-option>
+                <a-select-option value="1">处理中</a-select-option>
+                <a-select-option value="2">已结束</a-select-option>
+                <a-select-option value="3">已撤回</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="结果">
+              <a-select v-model="queryParam.result" placeholder="请选择" :allowClear="true">
+                <a-select-option value="0">未提交</a-select-option>
+                <a-select-option value="1">处理中</a-select-option>
+                <a-select-option value="2">通过</a-select-option>
+                <a-select-option value="3">驳回</a-select-option>
+              </a-select>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="10">
+            <a-form-item label="创建时间" :labelCol="labelCol" :wrapperCol="wrapperCol">
+              <a-range-picker
+                style="width: 210px"
+                v-model="queryParam.createTimeRange"
+                format="YYYY-MM-DD"
+                :placeholder="['开始时间', '结束时间']"
+                @change="onDateChange"
+                @ok="onDateOk"
+              />
+            </a-form-item>
+          </a-col>
+
+          <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+            <a-col :md="6" :sm="12">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button
+                type="primary"
+                @click="searchReset"
+                icon="reload"
+                style="margin-left: 8px;"
+              >重置</a-button>
+              <a-dropdown
+                v-if="data.length > 0"
+                v-model="visible"
+                :trigger="['click']"
+                class="selectMenuCont"
+                placement="bottomLeft"
+              >
+                <a-menu slot="overlay">
+                  <a-tree
+                    class="paperCheck"
+                    v-model="checkedColumn"
+                    checkable
+                    :tree-data="tableColumns"
+                    :default-expanded-keys="expandedKeys"
+                    draggable
+                    @dragenter="onDragEnter"
+                    @drop="onDrop"
+                    style="height:300px;overflow:auto"
+                  />
+                  <a-menu-divider />
+                  <a-menu-item>
+                    <a-button
+                      style="margin: 0px 2px;"
+                      @click="handleMenuClickAll_comm"
+                    >{{ selectText }}</a-button>
+                    <a-button style="margin: 0px 2px;" @click="handleMenuClick_comm">确定</a-button>
+                    <a-button style="margin: 0px 2px;" @click="colseMenuClick">取消</a-button>
+                  </a-menu-item>
+                </a-menu>
+                <a-button style="margin-left: 8px;" @click="e => e.preventDefault()" v-has="'applyListByTableName:display-column'">
+                  显示列
+                  <a-icon type="down" />
+                </a-button>
+              </a-dropdown>
+            </a-col>
+          </span>
+          <span style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
+            <a-col :md="12" :sm="12">
+              <a-button
+                type="primary"
+                @click="addApply"
+                :loading="addApplyLoading"
+                style="left: 10px"
+                icon="plus-circle"
+              >发起申请</a-button>
+            </a-col>
+          </span>
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- table区域-begin -->
+    <div class="card-container">
+      <div class="defineList">
+        <a-row>
+          <a-col :span="24"></a-col>
+        </a-row>
+        <div>
+          <!-- <a-table
+            bordered
+            :loading="loading"
+            ref="table"
+            :columns="selectedColumns"
+            :data-source="data"
+            :pagination="false"
+          ></a-table>-->
+          <a-table
+            bordered
+            ref="table"
+            size="small"
+            rowKey="id"
+            :dataSource="dataSource"
+            :pagination="ipagination"
+            :loading="loading"
+            @change="handleTableChange"
+            :columns="selectedColumns"
+          >
+            <template slot="status" slot-scope="t,r,i">
+              <span :style="{color:getStatus(t).color}">{{getStatus(t).text}}</span>
+            </template>
+
+            <template slot="result" slot-scope="t,r,i">
+              <span :style="{color:getResult(t).color}">{{getResult(t).text}}</span>
+            </template>
+            <a-table-column title="创建时间" data-index="createTime" :width="150" align="center">
+              <template slot-scope="t,r,i">
+                <span>{{t}}</span>
+              </template>
+            </a-table-column>
+            <a-table-column title="提交申请时间" data-index="applyTime" :width="150" align="center">
+              <template slot-scope="t,r,i">
+                <span>{{t}}</span>
+              </template>
+            </a-table-column>
+            <!-- <a-table-column title="操作" data-index align="center" :width="200"></a-table-column> -->
+            <!-- <span  slot-scope="text, record"> -->
+            <template slot="action" slot-scope="t,r,i">
+              <template v-if="r.status == 0">
+                <a href="javascript:void(0);" style="color: #00A0E9" @click="apply(r)">提交申请</a>
+                <a-divider type="vertical" />
+                <a href="javascript:void(0);" @click="edit(r)" style="color: #000000">编辑</a>
+                <a-divider type="vertical" />
+                <a-popconfirm title="确定删除吗?" @confirm="() => remove(r)">
+                  <a href="javascript:void(0);" style="color: red">删除</a>
+                </a-popconfirm>
+              </template>
+              <template v-else-if="r.status == 1">
+                <a href="javascript:void(0);" @click="cancel(r)" style="color:#8000ff;">撤回</a>
+                <a-divider type="vertical" />
+                <a href="javascript:void(0);" @click="history(r)" style="color:blue;">查看进度</a>
+                <a-divider type="vertical" />
+                <a href="javascript:void(0);" @click="detail(r)" style="color:#999;">表单数据</a>
+              </template>
+              <template v-else-if="(r.status == 2 && r.result == 3) || r.status == 3">
+                <a-popconfirm title="确定提交申请吗?" @confirm="() => apply(r)">
+                  <a href="javascript:void(0);" style="color:#00A0E9;">重新申请</a>
+                </a-popconfirm>
+                <a-divider type="vertical" />
+                <a href="javascript:void(0);" @click="edit(r)" style="color:#000000;">编辑</a>
+                <a-divider type="vertical" />
+                <a href="javascript:void(0);" @click="history(r)" style="color:blue;">审批历史</a>
+                <a-divider type="vertical" />
+                <a-popconfirm title="确定删除吗?" @confirm="() => remove(r)">
+                  <a href="javascript:void(0);" style="color: red">删除</a>
+                </a-popconfirm>
+              </template>
+              <template v-else>
+                <a href="javascript:void(0);" @click="detail(r)" style="color:#999;">表单数据</a>
+                <a-divider type="vertical" />
+                <a href="javascript:void(0);" @click="history(r)" style="color:blue;">审批历史</a>
+              </template>
+            </template>
+            <!-- </span> -->
+          </a-table>
+        </div>
+      </div>
+    </div>
+    <!-- table区域-end -->
+    <!--流程申请选择-->
+    <a-drawer
+      title="选择流程"
+      width="33%"
+      placement="right"
+      :closable="false"
+      @close="processModalVisible = false"
+      :visible="processModalVisible"
+    >
+      <a-input-search
+        style="margin-bottom: 10px;width: 200px"
+        placeholder="输入流程名称"
+        @search="onSearchProcess"
+      />
+      <a-empty description="无流程可供选择" v-if="activeKeyAll.length==0" />
+      <div v-else>
+        <a-collapse v-model="activeKey">
+          <a-collapse-panel
+            v-for="(value, index)  in activeKeyAll"
+            :header="filterDictText(dictOptions,value)||'未分类'"
+            :key="value"
+          >
+            <a-list :grid="{ gutter: 10,column:1}" :dataSource="processDataMap[value]">
+              <a-list-item slot="renderItem" slot-scope="item">
+                <a-card>
+                  <div slot="title">
+                    <a-row>
+                      <a-col span="12" :title="item.name">{{item.name}}</a-col>
+                      <a-col span="12" style="text-align: right;">
+                        <a href="javascript:void (0)" @click="chooseProcess(item)">发起申请</a>
+                      </a-col>
+                    </a-row>
+                  </div>
+                  <b>版本:</b>
+                  v.{{item.version}}
+                  <br />
+                  <b>说明:</b>
+                  {{item.description}}
+                </a-card>
+              </a-list-item>
+            </a-list>
+          </a-collapse-panel>
+        </a-collapse>
+      </div>
+    </a-drawer>
+    <!--流程表单-->
+    <a-modal
+      :title="lcModa.title"
+      v-model="lcModa.visible"
+      :footer="null"
+      :maskClosable="false"
+      width="100%"
+    >
+      <component
+        :disabled="lcModa.disabled"
+        v-if="lcModa.visible"
+        :is="lcModa.formComponent"
+        :processData="lcModa.processData"
+        :isNew="lcModa.isNew"
+        @afterSubmit="afterSub"
+        @close="lcModa.visible=false,lcModa.disabled = false"
+      ></component>
+    </a-modal>
+    <!-- <onl-cgform-auto-modal ref="modal" code="b0bea65bfce141deb0ae3fcb18982d76" /> -->
+    <!--提交申请表单-->
+    <a-modal title="提交申请" v-model="modalVisible" :mask-closable="false" :width="500" :footer="null">
+      <div v-if="modalVisible">
+        <a-form-item label="选择审批人" v-show="showAssign">
+          <a-select
+            style="width: 100%"
+            v-model="form.assignees"
+            placeholder="请选择"
+            mode="multiple"
+            :allowClear="true"
+          >
+            <a-select-option
+              v-for="(item, i) in assigneeList"
+              :key="i"
+              :value="item.username"
+            >{{item.realname}}</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="下一审批人" v-show="isGateway">
+          <a-alert type="info" showIcon message="分支网关处不支持自定义选择下一审批人,将自动下发给所有可审批人。">,将发送给下一节点所有人</a-alert>
+        </a-form-item>
+        <a-form-item label="优先级" prop="priority">
+          <a-select
+            v-model="form.priority"
+            placeholder="请选择"
+            :allowClear="true"
+            style="width: 100%"
+          >
+            <a-select-option :value="0">普通</a-select-option>
+            <a-select-option :value="1">重要</a-select-option>
+            <a-select-option :value="2">紧急</a-select-option>
+          </a-select>
+        </a-form-item>
+        <a-form-item label="消息通知">
+          <a-checkbox v-model="form.sendMessage">站内消息通知</a-checkbox>
+          <!-- <a-checkbox v-model="form.sendSms" disabled>短信通知</a-checkbox>
+          <a-checkbox v-model="form.sendEmail" disabled>邮件通知</a-checkbox>-->
+        </a-form-item>
+        <div slot="footer">
+          <a-button type="text" @click="modalVisible=false">取消</a-button>
+          <div style="display:inline-block;width: 20px;"></div>
+          <a-button type="primary" :disabled="submitLoading" @click="applySubmit">提交</a-button>
+        </div>
+      </div>
+    </a-modal>
+    <a-modal
+      title="审批历史"
+      v-model="modalLsVisible"
+      :mask-closable="false"
+      :width="'80%'"
+      :footer="null"
+    >
+      <div v-if="modalLsVisible">
+        <historicDetail :procInstId="procInstId"></historicDetail>
+      </div>
+    </a-modal>
+    <a-modal title="确认撤回" v-model="modalCancelVisible" :mask-closable="false" :width="500">
+      <a-form ref="delForm" v-model="cancelForm" :label-width="70" v-if="modalCancelVisible">
+        <a-form-item label="撤回原因" prop="reason">
+          <a-input type="textarea" v-model="cancelForm.reason" :rows="4" />
+        </a-form-item>
+      </a-form>
+      <div slot="footer">
+        <a-button type="text" @click="modalCancelVisible=false">取消</a-button>
+        <a-button type="primary" :disabled="submitLoading" @click="handelSubmitCancel">提交</a-button>
+      </div>
+    </a-modal>
+  </a-card>
+</template>
+
+<script>
+import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+import { activitiMixin } from '@/views/activiti/mixins/activitiMixin'
+import { filterObj } from '@/utils/util'
+import JEllipsis from '@/components/jeecg/JEllipsis'
+import { saveBuchColumnsShow, getColumnsShowList } from '@/api/api'
+import { deleteAction, getAction, downFile } from '@/api/manage'
+import pick from 'lodash.pick'
+import JTreeSelect from '@/components/jeecg/JTreeSelect'
+import { initDictOptions, filterDictText } from '@/components/dict/JDictSelectUtil'
+import historicDetail from '@/views/activiti/historicDetail'
+const data = []
+for (let i = 0; i < 5; i++) {
+  data.push({
+    key: i,
+    uuid: `小灰灰`,
+    name: `平底锅`,
+    code: `2010-01-06`,
+    sortNum: `¥16,340.20`,
+    squarePerPage: `小白`,
+    pathName: `水波`,
+    psPath: `现金`,
+    Path: `国家`
+  })
+}
+export default {
+  name: 'applyList',
+  mixins: [activitiMixin, JeecgListMixin],
+  components: {
+    JEllipsis,
+    JTreeSelect,
+    historicDetail
+  },
+  data() {
+    return {
+      columns: [],
+      selectText: '全选',
+      checkedColumn: [],
+      selectedColumns: [],
+      expandedKeys: [],
+      loading: false,
+      data,
+      visible: false,
+
+      tableColumns: [],
+      description: '我的申请',
+      dictOptions: [],
+      url: {
+        list: '/actBusiness/getActBusinessList',
+        getProcessDataList: '/activiti_process/listData',
+        delByIds: '/actBusiness/delByIds',
+        getFirstNode: '/actProcessIns/getFirstNode',
+        applyBusiness: '/actBusiness/apply',
+        cancelApply: '/actBusiness/cancel'
+      },
+      // 查询条件
+      queryParam: {
+        createTimeRange: [],
+        keyWord: ''
+      },
+      // 表头
+      labelCol: {
+        xs: { span: 4 },
+        sm: { span: 4 }
+      },
+      wrapperCol: {
+        xs: { span: 20 },
+        sm: { span: 20 }
+      },
+      processModalVisible: null,
+      activeKeyAll: [],
+      activeKey: [],
+      processDataMap: {},
+      searchProcessKey: null,
+      addApplyLoading: false,
+      lcModa: {
+        title: '',
+        disabled: false,
+        visible: false,
+        formComponent: null,
+        isNew: false
+      },
+      form: {
+        priority: 0,
+        assignees: [],
+        sendMessage: true
+      },
+      modalVisible: false,
+      showAssign: false,
+      assigneeList: [],
+      isGateway: false,
+      dictPriority: [],
+      submitLoading: false,
+      error: '',
+      /*审批历史*/
+      modalLsVisible: false,
+      procInstId: '',
+      modalCancelVisible: false,
+      cancelForm: {},
+      tableDataObject: {}, //表单发起所属表单相关数据
+      tableName: '' //当前页面地址
+    }
+  },
+  created() {
+    console.log(this.$route.params)
+    this.tableName = this.$route.params.tableName
+  },
+  //时刻监听,一旦切换到其他申请表单则重新加载数据
+  watch: {
+    $route(to, from) {
+      if (this.tableName != this.$route.params.tableName) {
+        this.clear()
+        this.tableName = this.$route.params.tableName
+        ///////根据表单名称查询对应相关数据
+        let businessTable = this.$route.params.tableName //表单表名称
+        this.postFormAction('/activiti_process/listData', {
+          businessTable: businessTable,
+          status: 1,
+          roles: true
+        }).then(res => {
+          // this.activeKeyAll = []
+          //是否查询成功
+          if (res.success) {
+            var result = res.result || []
+            if (result.length > 0) {
+              //获取所属表单的相关数据
+              this.tableDataObject = result[0]
+            }
+          }
+        })
+        this.loadData(1)
+      }
+    }
+  },
+
+  activated: function() {},
+  mounted() {
+    // this.columns = [
+    //   {
+    //     ellipsis: true,
+    //     title: '喜羊羊',
+    //     dataIndex: 'uuid',
+    //     key: 'uuid'
+    //   },
+    //   {
+    //     ellipsis: true,
+    //     title: '懒羊羊',
+    //     dataIndex: 'name',
+    //     key: 'name'
+    //   },
+    //   {
+    //     ellipsis: true,
+    //     title: '美羊羊',
+    //     dataIndex: 'code',
+    //     key: 'code'
+    //   },
+    //   {
+    //     ellipsis: true,
+    //     title: '沸羊羊',
+    //     dataIndex: 'sortNum',
+    //     key: 'sortNum'
+    //   },
+    //   {
+    //     ellipsis: true,
+    //     title: '慢羊羊',
+    //     dataIndex: 'squarePerPage',
+    //     key: 'squarePerPage'
+    //   },
+    //   {
+    //     ellipsis: true,
+    //     title: '暖羊羊',
+    //     dataIndex: 'pathName',
+    //     key: 'pathName'
+    //   },
+    //   {
+    //     ellipsis: true,
+    //     title: '灰太狼',
+    //     dataIndex: 'psPath',
+    //     key: 'psPath'
+    //   },
+    //   {
+    //     ellipsis: true,
+    //     title: '红太狼',
+    //     dataIndex: 'Path',
+    //     key: 'Path'
+    //   }
+    // ]
+    // this.selectedColumns = this.columns
+    // this.tableColumns = [
+    //   {
+    //     ellipsis: true,
+    //     title: '标题',
+    //     dataIndex: 'title',
+    //     key: 'title'
+    //   },
+    //   {
+    //     ellipsis: true,
+    //     title: '所属流程',
+    //     dataIndex: 'processName',
+    //     key: 'processName'
+    //   },
+    //   {
+    //     ellipsis: true,
+    //     title: '当前审批环节',
+    //     dataIndex: 'currTaskName',
+    //     key: 'currTaskName'
+    //   },
+    //   {
+    //     ellipsis: true,
+    //     title: '状态',
+    //     dataIndex: 'status',
+    //     key: 'status',
+    //     scopedSlots: { customRender: 'status' }
+    //   },
+    //   {
+    //     ellipsis: true,
+    //     title: '结果',
+    //     dataIndex: 'result',
+    //     key: 'result',
+    //     scopedSlots: { customRender: 'result' }
+    //   },
+    //   {
+    //     ellipsis: true,
+    //     title: '创建时间',
+    //     dataIndex: 'createTime',
+    //     key: 'createTime'
+    //   },
+    //   {
+    //     ellipsis: true,
+    //     title: '提交申请时间',
+    //     dataIndex: 'applyTime',
+    //     key: 'applyTime'
+    //   },
+    //   {
+    //     title: '操作',
+    //     key: 'action',
+    //     scopedSlots: { customRender: 'action' }
+    //   }
+    // ]
+    // this.selectedColumns = this.tableColumns
+    // //默认选中的列
+    // this.tableColumns.forEach(element => {
+    //   this.checkedColumn.push(element.key)
+    // })
+  },
+  computed: {},
+  methods: {
+    handleMenuClickAll_comm() {
+      console.log(this.tableColumns)
+      if (this.checkedColumn.length === this.tableColumns.length) {
+        this.selectText = '全选'
+        this.checkedColumn = []
+      } else if (this.checkedColumn.length > 0 && this.checkedColumn.length < this.tableColumns.length) {
+        if (this.selectText === '全选') {
+          this.checkedColumn = []
+          this.tableColumns.forEach(item => {
+            this.checkedColumn.push(item.key)
+          })
+          this.selectText = '全取消'
+        } else {
+          this.checkedColumn = []
+          this.selectText = '全选'
+        }
+      } else {
+        this.selectText = '全取消'
+        this.checkedColumn = []
+        this.tableColumns.forEach(item => {
+          this.checkedColumn.push(item.key)
+        })
+      }
+      // console.log(this.columns)
+      // if (this.checkedColumn.length === this.columns.length) {
+      //   this.selectText = '全选'
+      //   this.checkedColumn = []
+      // } else if (this.checkedColumn.length > 0 && this.checkedColumn.length < this.columns.length) {
+      //   if (this.selectText === '全选') {
+      //     this.checkedColumn = []
+      //     this.columns.forEach(item => {
+      //       this.checkedColumn.push(item.key)
+      //     })
+      //     this.selectText = '全取消'
+      //   } else {
+      //     this.checkedColumn = []
+      //     this.selectText = '全选'
+      //   }
+      // } else {
+      //   this.selectText = '全取消'
+      //   this.checkedColumn = []
+      //   this.columns.forEach(item => {
+      //     this.checkedColumn.push(item.key)
+      //   })
+      // }
+    },
+    handleMenuClick_comm(e) {
+      if (this.checkedColumn.length === 0) {
+        this.$message.info('请至少勾选一项!')
+        return
+      }
+      let cdColumnsShowList = [] //整理保存数据
+      this.visible = false
+      if (this.checkedColumn.length > 0) {
+        let selectedColumns = this.tableColumns.map(item => {
+          //判断是否页面临时处理字段
+          let isscopedSlots = '1'
+          if (item.scopedSlots) {
+            isscopedSlots = '2'
+          }
+          if (this.checkedColumn.indexOf(item.key) >= 0) {
+            //选中显示数据
+            cdColumnsShowList.push({
+              columnName: item.key,
+              columnDescribe: item.title,
+              isShow: '2',
+              isScopedSlots: isscopedSlots
+            })
+            item.isShow = '1'
+            return item
+          } else {
+            //未选中显示数据
+            cdColumnsShowList.push({
+              columnName: item.key,
+              columnDescribe: item.title,
+              isShow: '1',
+              isScopedSlots: isscopedSlots
+            })
+            return null
+          }
+        })
+        this.selectedColumns = _.cloneDeep([...selectedColumns.filter(item => item !== null)])
+        // console.log(this.tableColumns)
+      }
+      //显示列记录保存到数据库
+      let dataObject = {
+        tableName: this.$route.params.tableName,
+        cdColumnsShowList: cdColumnsShowList
+      }
+      saveBuchColumnsShow(dataObject).then(res => {
+        if (res.success) {
+          this.$message.success('保存成功')
+          this.loadData(1)
+        } else {
+          this.$message.error('保存失败')
+        }
+      })
+      // if (this.checkedColumn.length === 0) {
+      //   this.$message.info('请至少勾选一项!')
+      //   return
+      // }
+      // this.visible = false
+      // if (this.checkedColumn.length > 0) {
+      //   let selectedColumns =this.tableColumns.map(item => {
+      //     if (this.checkedColumn.indexOf(item.key) >= 0) {
+      //       item.isShow = '1'
+      //       return item
+      //     } else {
+      //       return null
+      //     }
+      //   })
+      //   this.selectedColumns = _.cloneDeep([...selectedColumns.filter(item => item !== null)])
+      // }
+    },
+    colseMenuClick() {
+      this.checkedColumn=[]
+      this.tableColumns.forEach(t => {
+        if (t.isShow == '2') {
+          //默认显示列选择选中的列
+          this.checkedColumn.push(t.key)
+        }
+      })
+      this.visible = false
+    },
+    onDrop(info) {
+      const dropKey = info.node.eventKey
+      const dragKey = info.dragNode.eventKey
+      const dropPos = info.node.pos.split('-')
+      const dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1])
+      const loop = (data, key, callback) => {
+        data.forEach((item, index, arr) => {
+          if (item.key === key) {
+            return callback(item, index, arr)
+          }
+          if (item.children) {
+            return loop(item.children, key, callback)
+          }
+        })
+      }
+      const data = [...this.tableColumns]
+
+      // Find dragObject
+      // 只在父级下进行拖拽
+      let dragObj
+      loop(data, dragKey, (item, index, arr) => {
+        arr.splice(index, 1)
+        dragObj = item
+      })
+      let ar
+      let i
+      loop(data, dropKey, (item, index, arr) => {
+        ar = arr
+        i = index
+      })
+      if (dropPosition === -1) {
+        ar.splice(i, 0, dragObj)
+      } else {
+        ar.splice(i + 1, 0, dragObj)
+      }
+      this.tableColumns = data
+    },
+    onDragEnter(info) {
+      console.log(info)
+    },
+
+    clear() {
+      this.dictOptions = []
+      // 查询条件
+      this.queryParam = {}
+      this.processModalVisible = null
+      this.activeKeyAll = []
+      this.activeKey = []
+      this.processDataMap = {}
+      this.searchProcessKey = null
+      this.addApplyLoading = false
+      this.lcModa = {
+        title: '',
+        disabled: false,
+        visible: false,
+        formComponent: null,
+        isNew: false
+      }
+      this.form = {
+        priority: 0,
+        assignees: [],
+        sendMessage: true
+      }
+      this.modalVisible = false
+      this.showAssign = false
+      this.assigneeList = []
+      this.isGateway = false
+      this.dictPriority = []
+      this.submitLoading = false
+      this.error = ''
+      /*审批历史*/
+      this.modalLsVisible = false
+      this.procInstId = ''
+      this.modalCancelVisible = false
+      this.cancelForm = {}
+      this.tableDataObject = {} //表单发起所属表单相关数据
+      this.tableName = '' //当前页面地址
+      this.columns = []
+      this.selectText = '全选'
+      this.checkedColumn = []
+      this.selectedColumns = []
+      this.expandedKeys = []
+      this.loading = false
+      this.visible = false
+    },
+    initDictConfig() {
+      //初始化字典 - 流程分类
+      initDictOptions('bpm_process_type').then(res => {
+        if (res.success) {
+          this.dictOptions = res.result
+        }
+      })
+    },
+    filterDictText(dictOptions, text) {
+      if (dictOptions instanceof Array) {
+        for (let dictItem of dictOptions) {
+          if (text === dictItem.value) {
+            return dictItem.text
+          }
+        }
+      }
+      return text || text == 'null' ? '' : text
+    },
+    getProcessList() {
+      this.addApplyLoading = true
+      this.postFormAction(this.url.getProcessDataList, { status: 1, roles: true })
+        .then(res => {
+          this.activeKeyAll = []
+          if (res.success) {
+            var result = res.result || []
+            if (result.length > 0) {
+              let searchProcessKey = this.searchProcessKey
+              if (searchProcessKey) {
+                //过滤条件
+                result = _.filter(result, function(o) {
+                  return o.name.indexOf(searchProcessKey) > -1
+                })
+              }
+              this.processDataMap = _.groupBy(result, 'categoryId')
+              for (const categoryId in this.processDataMap) {
+                this.activeKeyAll.push(categoryId)
+              }
+              this.activeKey = this.activeKeyAll
+            }
+            this.processModalVisible = true
+          } else {
+            this.$message.warning(res.message)
+          }
+        })
+        .finally(() => (this.addApplyLoading = false))
+    },
+    loadData(arg) {
+      console.log('loadData')
+      if (!this.url.list) {
+        this.$message.error('请设置url.list属性!')
+        return
+      }
+      //获取显示列相关数据
+      getColumnsShowList({ tableName: this.$route.params.tableName }).then(res => {
+        this.selectedColumns = []
+        this.checkedColumn = []
+        this.tableColumns = res.result
+        this.tableColumns.forEach(t => {
+          if (t.isShow == '2') {
+            //获取需要显示列
+            this.selectedColumns.push(t)
+            //默认显示列选择选中的列
+            this.checkedColumn.push(t.key)
+          }
+        })
+      })
+      //加载数据 若传入参数1则加载第一页的内容
+      if (arg === 1) {
+        this.ipagination.current = 1
+      }
+      this.queryParam.tableName = this.$route.params.tableName
+      var params = this.getQueryParams() //查询条件
+      console.log(params)
+      this.loading = true
+      getAction(this.url.list, params).then(res => {
+        if (res.success) {
+          let records = res.result || []
+          this.dataSource = records
+          this.ipagination.total = records.length
+        }
+        if (res.code === 510) {
+          this.$message.warning(res.message)
+        }
+        this.loading = false
+      })
+    },
+    getQueryParams() {
+      var param = Object.assign({}, this.queryParam, this.isorter)
+      delete param.createTimeRange // 时间参数不传递后台
+      return filterObj(param)
+    },
+
+    // 重置
+    searchReset() {
+      var that = this
+      var logType = that.queryParam.logType
+      that.queryParam = {} //清空查询区域参数
+      that.queryParam.logType = logType
+      that.loadData(this.ipagination.current)
+    },
+    onDateChange: function(value, dateString) {
+      console.log(dateString[0], dateString[1])
+      this.queryParam.createTime_begin = dateString[0]
+      this.queryParam.createTime_end = dateString[1]
+    },
+    onDateOk(value) {
+      console.log(value)
+    },
+
+    getStatus(status) {
+      let text = '未知',
+        color = ''
+      if (status == 0) {
+        text = '草稿'
+        color = 'default'
+      } else if (status == 1) {
+        text = '处理中'
+        color = 'orange'
+      } else if (status == 2) {
+        text = '已结束'
+        color = 'blue'
+      } else if (status == 3) {
+        text = '已撤回'
+        color = 'magenta'
+      }
+      return { text: text, color: color }
+    },
+    getResult(result) {
+      let text = '未知',
+        color = ''
+      if (result == 0) {
+        text = '未提交'
+        color = 'default'
+      } else if (result == 1) {
+        text = '处理中'
+        color = 'orange'
+      } else if (result == 2) {
+        text = '已通过'
+        color = 'green'
+      } else if (result == 3) {
+        text = '已驳回'
+        color = 'red'
+      }
+      return { text: text, color: color }
+    },
+    apply(v) {
+      if (!v.procDefId || v.procDefId == 'null') {
+        this.$message.error('流程定义为空')
+        return
+      }
+      this.form.id = v.id
+      this.form.procDefId = v.procDefId
+      this.form.title = v.title
+      // 加载审批人
+      this.getAction(this.url.getFirstNode, { procDefId: v.procDefId }).then(res => {
+        if (res.success) {
+          if (res.result.type == 3 || res.result.type == 4) {
+            this.isGateway = true
+            this.modalVisible = true
+            this.form.firstGateway = true
+            this.showAssign = false
+            this.error = ''
+            return
+          }
+          this.form.firstGateway = false
+          this.isGateway = false
+          if (res.result.users && res.result.users.length > 0) {
+            this.error = ''
+            this.assigneeList = res.result.users
+            // 默认勾选
+            let ids = []
+            res.result.users.forEach(e => {
+              ids.push(e.username)
+            })
+            this.form.assignees = ids
+            this.showAssign = true
+          } else {
+            this.form.assignees = []
+            this.showAssign = true
+            this.error = '审批节点未分配候选审批人员,请联系管理员!'
+          }
+          if (this.error) {
+            this.$message.error(this.error)
+            return
+          }
+          this.modalVisible = true
+        } else {
+          this.$message.error(res.message)
+        }
+      })
+    },
+    applySubmit() {
+      if (this.showAssign && this.form.assignees.length < 1) {
+        this.error = '请至少选择一个审批人'
+        this.$message.error(this.error)
+        return
+      } else {
+        this.error = ''
+      }
+      this.submitLoading = true
+      var params = Object.assign({}, this.form)
+      params.assignees = params.assignees.join(',')
+      this.postFormAction(this.url.applyBusiness, params)
+        .then(res => {
+          if (res.success) {
+            this.$message.success('操作成功')
+            this.loadData()
+            this.modalVisible = false
+          } else {
+            this.$message.error(res.message)
+          }
+        })
+        .finally(() => (this.submitLoading = false))
+    },
+    edit(r, isView) {
+      if (!r.routeName) {
+        this.$message.warning('该流程信息未配置表单,请联系开发人员!')
+        return
+      }
+      if (r.routeName.indexOf('外部表单') != -1) {
+        alert('调用其他项目页面')
+      } else if (r.routeName.indexOf('自定义') != -1) {
+        isView = isView || false
+        this.lcModa.disabled = isView
+        this.lcModa.title = '修改流程业务信息:' + r.title
+        if (isView) this.lcModa.title = '查看流程业务信息:' + r.title
+        let com = { component: () => import(`@/views/activiti/form/demoForm2`) }
+        this.lcModa.formComponent = com.component
+        this.lcModa.isNew = false
+        this.lcModa.processData = r
+        this.lcModa.visible = true
+      } else {
+        isView = isView || false
+        this.lcModa.disabled = isView
+        this.lcModa.title = '修改流程业务信息:' + r.title
+        if (isView) this.lcModa.title = '查看流程业务信息:' + r.title
+        this.lcModa.formComponent = this.getFormComponent(r.routeName).component
+        this.lcModa.processData = r
+        this.lcModa.isNew = false
+        this.lcModa.visible = true
+      }
+    },
+    remove(r) {
+      this.postFormAction(this.url.delByIds, { ids: r.id }).then(res => {
+        if (res.success) {
+          this.$message.success(res.message)
+          this.loadData()
+        } else {
+          this.$message.error(res.message)
+        }
+      })
+    },
+    cancel(v) {
+      this.cancelForm.id = v.id
+      this.cancelForm.procInstId = v.procInstId
+      this.modalCancelVisible = true
+    },
+    handelSubmitCancel() {
+      this.submitLoading = true
+      this.postFormAction(this.url.cancelApply, this.cancelForm)
+        .then(res => {
+          if (res.success) {
+            this.$message.success('操作成功')
+            this.loadData()
+            this.modalCancelVisible = false
+          } else {
+            this.$message.error(res.message)
+          }
+        })
+        .finally(() => (this.submitLoading = false))
+    },
+    history(v) {
+      if (!v.procInstId) {
+        this.$message.error('流程实例ID不存在')
+        return
+      }
+      this.procInstId = v.procInstId
+      this.modalLsVisible = true
+    },
+    detail(v) {
+      // this.$refs.modal.detail("1","8a8080f079ea4ed50179ea4f6c470001")
+      this.edit(v, true)
+    },
+    handleTableChange(pagination, filters, sorter) {
+      //分页、排序、筛选变化时触发
+      //TODO 筛选
+      if (Object.keys(sorter).length > 0) {
+        this.isorter.column = sorter.field
+        this.isorter.order = 'ascend' == sorter.order ? 'asc' : 'desc'
+      }
+      this.ipagination = pagination
+      // this.loadData();
+    },
+    addApply() {
+      // this.getProcessList()
+
+      let v = this.tableDataObject //表单所需相关数据
+      if (!v.routeName) {
+        this.$message.warning('该流程信息未配置表单,请联系开发人员!')
+        return
+      }
+      if (v.routeName.indexOf('外部表单') != -1) {
+        alert('调用其他项目页面')
+      } else if (v.routeName.indexOf('自定义') != -1) {
+        this.lcModa.disabled = false
+        let com = { component: () => import(`@/views/activiti/form/demoForm2`) }
+        this.lcModa.formComponent = com.component
+        this.lcModa.title = '发起流程:' + v.name
+        this.lcModa.isNew = true
+        this.lcModa.processData = v
+        this.lcModa.visible = true
+      } else {
+        this.lcModa.disabled = false
+        this.lcModa.formComponent = this.getFormComponent(v.routeName).component
+        this.lcModa.title = '发起流程:' + v.name
+        this.lcModa.isNew = true
+        this.lcModa.processData = v
+        this.lcModa.visible = true
+      }
+    },
+    onSearchProcess(value) {
+      this.searchProcessKey = value
+      this.getProcessList()
+    },
+    chooseProcess(v) {
+      console.log(v)
+      // this.$refs.modal.add("1")
+      if (!v.routeName) {
+        this.$message.warning('该流程信息未配置表单,请联系开发人员!')
+        return
+      }
+      if (v.routeName.indexOf('外部表单') != -1) {
+        alert('调用其他项目页面')
+      } else if (v.routeName.indexOf('自定义') != -1) {
+        this.lcModa.disabled = false
+        let com = { component: () => import(`@/views/activiti/form/demoForm2`) }
+        this.lcModa.formComponent = com.component
+        this.lcModa.title = '发起流程:' + v.name
+        this.lcModa.isNew = true
+        this.lcModa.processData = v
+        this.lcModa.visible = true
+      } else {
+        this.lcModa.disabled = false
+        this.lcModa.formComponent = this.getFormComponent(v.routeName).component
+        this.lcModa.title = '发起流程:' + v.name
+        this.lcModa.isNew = true
+        this.lcModa.processData = v
+        this.lcModa.visible = true
+      }
+
+      console.log('发起', v)
+    },
+    afterSub(formData) {
+      this.lcModa.visible = false
+      this.loadData()
+    }
+  }
+}
+</script>
+<style scoped>
+@import '~@assets/less/common.less';
+</style>

Some files were not shown because too many files changed in this diff