|
|
@@ -1,14 +1,19 @@
|
|
|
<template>
|
|
|
<div class="ele-body">
|
|
|
- <el-card class="card_box" :body-style="{display:'flex',alignItems: 'flex-start'}" shadow="never">
|
|
|
+ <el-card class="card_box" :body-style="{display:'flex',flexDirection: 'column',alignItems: 'flex-start'}"
|
|
|
+ shadow="never">
|
|
|
<!-- 动态表单配置-->
|
|
|
<div class="content-box">
|
|
|
<div v-for="category in Object.keys(templateList)" :key="category" class="category_box">
|
|
|
- <div class="category_box_title">{{ getDictV('collaborative_type',category) }}</div>
|
|
|
+ <div class="category_box_title">{{ getDictV('collaborative_type', category) }}</div>
|
|
|
<div class="category_box_content">
|
|
|
<div v-for="v in templateList[category]" :key="v.id" class="category_content"
|
|
|
@click="handleStartProcess(v)">
|
|
|
- <span :class="v.icon"></span>
|
|
|
+ <svg-icon
|
|
|
+ style="width: 1.5em;height: 1.5em;"
|
|
|
+ :icon-class="v.icon"
|
|
|
+ className="svg-icon-set"
|
|
|
+ ></svg-icon>
|
|
|
<span>
|
|
|
{{ v.name }}
|
|
|
</span>
|
|
|
@@ -16,82 +21,91 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <div class="tab-box" >
|
|
|
+ <div class="tab-box el-form-box">
|
|
|
<el-tabs type="border-card">
|
|
|
<el-tab-pane label="个人记录">
|
|
|
- <div class="filter-container">
|
|
|
- <el-form
|
|
|
- label-width="90px"
|
|
|
- class="ele-form-search"
|
|
|
- @keyup.enter.native="reload"
|
|
|
- @submit.native.prevent
|
|
|
- >
|
|
|
- <el-row :gutter="15">
|
|
|
- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 5 }">
|
|
|
- <el-form-item label="分类:">
|
|
|
- <el-select v-model="params.formId" >
|
|
|
- <el-option v-for="(item,index) in defaultTemplateList" :key="index" :value="item.id" :label="item.name" ></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 5 }">
|
|
|
- <el-form-item label="结果:" prop="result" label-width="70px">
|
|
|
- <!-- <el-select
|
|
|
- v-model="params.status"
|
|
|
- placeholder="请选择状态"
|
|
|
- clearable
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="dict in statusList"
|
|
|
- :key="dict.value"
|
|
|
- :label="dict.label"
|
|
|
- :value="dict.value"
|
|
|
- />
|
|
|
- </el-select> -->
|
|
|
- <DictSelection
|
|
|
- dictName="流程实例的结果"
|
|
|
- clearable
|
|
|
- v-model="params.result"
|
|
|
- >
|
|
|
- </DictSelection>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col v-bind="styleResponsive ? { lg: 8, md: 12 } : { span: 8 }">
|
|
|
- <el-form-item label="创建时间:" prop="createTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="params.createTime"
|
|
|
- style="width: 100%"
|
|
|
- value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
- type="daterange"
|
|
|
- range-separator="-"
|
|
|
- start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期"
|
|
|
- :default-time="['00:00:00', '23:59:59']"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
|
|
|
- <div class="ele-form-actions">
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- icon="el-icon-search"
|
|
|
- class="ele-btn-icon"
|
|
|
- @click="reload"
|
|
|
- >
|
|
|
- 查询
|
|
|
- </el-button>
|
|
|
- <el-button @click="reset">重置</el-button>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
+
|
|
|
<ele-pro-table
|
|
|
ref="table"
|
|
|
+ :toolkit="[]"
|
|
|
+ height="calc(100vh - 450px)"
|
|
|
:columns="columns"
|
|
|
:datasource="datasource"
|
|
|
cache-key="datasource-1"
|
|
|
+ :init-load="false"
|
|
|
>
|
|
|
+ <template v-slot:toolbar="{ row }">
|
|
|
+ <div class="filter-container">
|
|
|
+ <el-form
|
|
|
+ class="ele-form-search"
|
|
|
+ @keyup.enter.native="reload"
|
|
|
+ @submit.native.prevent
|
|
|
+ >
|
|
|
+ <el-row :gutter="15" style="display: flex;align-items: center">
|
|
|
+ <el-col v-bind="{ span: 3 }">
|
|
|
+ <el-form-item label="分类:" label-width="60px">
|
|
|
+ <el-select v-model="params.formId">
|
|
|
+ <el-option v-for="(item,index) in defaultTemplateList" :key="index" :value="item.id"
|
|
|
+ :label="item.name"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col v-bind="{ span: 4 }">
|
|
|
+ <el-form-item label="结果:" prop="result" label-width="60px">
|
|
|
+ <!-- <el-select
|
|
|
+ v-model="params.status"
|
|
|
+ placeholder="请选择状态"
|
|
|
+ clearable
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="dict in statusList"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ />
|
|
|
+ </el-select> -->
|
|
|
+ <DictSelection
|
|
|
+ dictName="流程实例的结果"
|
|
|
+ clearable
|
|
|
+ v-model="params.result"
|
|
|
+ >
|
|
|
+ </DictSelection>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col v-bind="styleResponsive ? { lg: 8, md: 12 } : { span: 10 }">
|
|
|
+ <el-form-item label="创建时间:" prop="createTime" label-width="90px">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="params.createTime"
|
|
|
+ style="width: 100%"
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ type="daterange"
|
|
|
+ range-separator="-"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ :default-time="['00:00:00', '23:59:59']"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template v-slot:toolkit="{ row }">
|
|
|
+ <div class="filter-container">
|
|
|
+ <div class="ele-form-actions">
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ icon="el-icon-search"
|
|
|
+ class="ele-btn-icon"
|
|
|
+ @click="reload"
|
|
|
+ >
|
|
|
+ 查询
|
|
|
+ </el-button>
|
|
|
+ <el-button @click="reset">重置</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
<template v-slot:result="{ row }">
|
|
|
<el-tag size="medium" :type="getTimelineItemType(getDictValue('流程实例的结果', row.result))">
|
|
|
{{ getDictValue('流程实例的结果', row.result) }}
|
|
|
@@ -107,6 +121,34 @@
|
|
|
</el-link
|
|
|
>
|
|
|
</template>
|
|
|
+ <template v-if="formColumnList.length" v-for="(item,index) in formColumnList"
|
|
|
+ v-slot:[item.model]="{ row }">
|
|
|
+ <div v-if="item.type=='imgupload'">
|
|
|
+ <el-image
|
|
|
+ v-if="row[item.model].length"
|
|
|
+ style="width: 100px; height: 100px"
|
|
|
+ :src="row[item.model][0].url"
|
|
|
+ :preview-src-list="row[item.model].map(i=>i.url)">
|
|
|
+ </el-image>
|
|
|
+ </div>
|
|
|
+ <div v-else-if="item.type=='fileupload'">
|
|
|
+ <el-button type="text" @click="getFiles(row[item.model])">下载</el-button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div v-else-if="item.type=='userSelect'">
|
|
|
+ {{ getUserName(row[item.model]) }}
|
|
|
+ </div>
|
|
|
+ <div v-else-if="item.type=='deptAndUserCascader'">
|
|
|
+ {{ getDeptAndUserName(row[item.model]) }}
|
|
|
+ </div>
|
|
|
+ <div v-else-if="item.type=='deptCascader'">
|
|
|
+ {{ getDeptName(row[item.model]) }}
|
|
|
+ </div>
|
|
|
+ <div v-else>
|
|
|
+ {{ row[item.model] }}
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </template>
|
|
|
<!-- 操作列 -->
|
|
|
<template v-slot:action="{ row }">
|
|
|
<el-button
|
|
|
@@ -121,80 +163,121 @@
|
|
|
</ele-pro-table>
|
|
|
|
|
|
</el-tab-pane>
|
|
|
- <el-tab-pane label="部门记录" >
|
|
|
- <div class="filter-container">
|
|
|
- <el-form
|
|
|
- label-width="90px"
|
|
|
- class="ele-form-search"
|
|
|
- @keyup.enter.native="deptReload"
|
|
|
- @submit.native.prevent
|
|
|
- >
|
|
|
- <el-row :gutter="15">
|
|
|
- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 5 }">
|
|
|
- <el-form-item label="分类:">
|
|
|
- <el-select v-model="params.formId" >
|
|
|
- <el-option v-for="(item,index) in defaultTemplateList" :key="index" :value="item.id" :label="item.name" ></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 5 }">
|
|
|
- <el-form-item label="结果:" prop="result" label-width="70px">
|
|
|
- <!-- <el-select
|
|
|
- v-model="params.status"
|
|
|
- placeholder="请选择状态"
|
|
|
- clearable
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="dict in statusList"
|
|
|
- :key="dict.value"
|
|
|
- :label="dict.label"
|
|
|
- :value="dict.value"
|
|
|
- />
|
|
|
- </el-select> -->
|
|
|
- <DictSelection
|
|
|
- dictName="流程实例的结果"
|
|
|
- clearable
|
|
|
- v-model="params.result"
|
|
|
- >
|
|
|
- </DictSelection>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col v-bind="styleResponsive ? { lg: 8, md: 12 } : { span: 8 }">
|
|
|
- <el-form-item label="创建时间:" prop="createTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="params.createTime"
|
|
|
- style="width: 100%"
|
|
|
- value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
- type="daterange"
|
|
|
- range-separator="-"
|
|
|
- start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期"
|
|
|
- :default-time="['00:00:00', '23:59:59']"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
|
|
|
- <div class="ele-form-actions">
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- icon="el-icon-search"
|
|
|
- class="ele-btn-icon"
|
|
|
- @click="deptReload"
|
|
|
- >
|
|
|
- 查询
|
|
|
- </el-button>
|
|
|
- <el-button @click="deptReset">重置</el-button>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
+ <el-tab-pane label="部门记录">
|
|
|
+
|
|
|
<ele-pro-table
|
|
|
ref="deptTable"
|
|
|
:columns="deptColumns"
|
|
|
:datasource="deptDatasource"
|
|
|
cache-key="deptDatasource"
|
|
|
+ :toolkit="[]"
|
|
|
+ height="calc(100vh - 450px)"
|
|
|
+ :init-load="false"
|
|
|
>
|
|
|
+ <template v-slot:toolbar="{ row }">
|
|
|
+ <div class="filter-container">
|
|
|
+ <el-form
|
|
|
+ class="ele-form-search"
|
|
|
+ @keyup.enter.native="reload"
|
|
|
+ @submit.native.prevent
|
|
|
+ >
|
|
|
+ <el-row :gutter="15" style="display: flex;align-items: center">
|
|
|
+ <el-col v-bind="{ span: 3 }">
|
|
|
+ <el-form-item label="分类:" label-width="60px">
|
|
|
+ <el-select v-model="params.formId">
|
|
|
+ <el-option v-for="(item,index) in defaultTemplateList" :key="index" :value="item.id"
|
|
|
+ :label="item.name"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col v-bind="{ span: 4 }">
|
|
|
+ <el-form-item label="结果:" prop="result" label-width="60px">
|
|
|
+ <!-- <el-select
|
|
|
+ v-model="params.status"
|
|
|
+ placeholder="请选择状态"
|
|
|
+ clearable
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="dict in statusList"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ />
|
|
|
+ </el-select> -->
|
|
|
+ <DictSelection
|
|
|
+ dictName="流程实例的结果"
|
|
|
+ clearable
|
|
|
+ v-model="params.result"
|
|
|
+ >
|
|
|
+ </DictSelection>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col v-bind="{ span: 4 }">
|
|
|
+ <el-form-item label="发起人:" prop="startUserName" label-width="70px">
|
|
|
+ <el-input v-model="params.startUserName"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col v-bind="{ span: 10 }">
|
|
|
+ <el-form-item label="创建时间:" prop="createTime" label-width="90px">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="params.createTime"
|
|
|
+ style="width: 100%"
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ type="daterange"
|
|
|
+ range-separator="-"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ :default-time="['00:00:00', '23:59:59']"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template v-slot:toolkit="{ row }">
|
|
|
+ <div class="filter-container">
|
|
|
+ <div class="ele-form-actions">
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ icon="el-icon-search"
|
|
|
+ class="ele-btn-icon"
|
|
|
+ @click="reload"
|
|
|
+ >
|
|
|
+ 查询
|
|
|
+ </el-button>
|
|
|
+ <el-button @click="reset">重置</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template v-if="formColumnList.length" v-for="(item,index) in formColumnList"
|
|
|
+ v-slot:[item.model]="{ row }">
|
|
|
+ <div v-if="item.type=='imgupload'">
|
|
|
+ <el-image
|
|
|
+ v-if="row[item.model].length"
|
|
|
+ style="width: 100px; height: 100px"
|
|
|
+ :src="row[item.model][0].url"
|
|
|
+ :preview-src-list="row[item.model].map(i=>i.url)">
|
|
|
+ </el-image>
|
|
|
+ </div>
|
|
|
+ <div v-else-if="item.type=='fileupload'">
|
|
|
+ <el-button type="text" @click="getFiles(row[item.model])">下载</el-button>
|
|
|
+ </div>
|
|
|
+ <div v-else-if="item.type=='userSelect'">
|
|
|
+ {{ getUserName(row[item.model]) }}
|
|
|
+ </div>
|
|
|
+ <div v-else-if="item.type=='deptAndUserCascader'">
|
|
|
+ {{ getDeptAndUserName(row[item.model]) }}
|
|
|
+ </div>
|
|
|
+ <div v-else-if="item.type=='deptCascader'">
|
|
|
+ {{ getDeptName(row[item.model]) }}
|
|
|
+ </div>
|
|
|
+ <div v-else>
|
|
|
+ {{ row[item.model] }}
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </template>
|
|
|
<template v-slot:result="{ row }">
|
|
|
<el-tag size="medium" :type="getTimelineItemType(getDictValue('流程实例的结果', row.result))">
|
|
|
{{ getDictValue('流程实例的结果', row.result) }}
|
|
|
@@ -224,79 +307,120 @@
|
|
|
</ele-pro-table>
|
|
|
</el-tab-pane>
|
|
|
<el-tab-pane label="通知记录">
|
|
|
- <div class="filter-container">
|
|
|
- <el-form
|
|
|
- label-width="90px"
|
|
|
- class="ele-form-search"
|
|
|
- @keyup.enter.native="noticeReload"
|
|
|
- @submit.native.prevent
|
|
|
- >
|
|
|
- <el-row :gutter="15">
|
|
|
- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 5 }">
|
|
|
- <el-form-item label="分类:">
|
|
|
- <el-select v-model="params.formId" >
|
|
|
- <el-option v-for="(item,index) in defaultTemplateList" :key="index" :value="item.id" :label="item.name" ></el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 5 }">
|
|
|
- <el-form-item label="结果:" prop="result" label-width="70px">
|
|
|
- <!-- <el-select
|
|
|
- v-model="params.status"
|
|
|
- placeholder="请选择状态"
|
|
|
- clearable
|
|
|
- >
|
|
|
- <el-option
|
|
|
- v-for="dict in statusList"
|
|
|
- :key="dict.value"
|
|
|
- :label="dict.label"
|
|
|
- :value="dict.value"
|
|
|
- />
|
|
|
- </el-select> -->
|
|
|
- <DictSelection
|
|
|
- dictName="流程实例的结果"
|
|
|
- clearable
|
|
|
- v-model="params.result"
|
|
|
- >
|
|
|
- </DictSelection>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col v-bind="styleResponsive ? { lg: 8, md: 12 } : { span: 8 }">
|
|
|
- <el-form-item label="创建时间:" prop="createTime">
|
|
|
- <el-date-picker
|
|
|
- v-model="params.createTime"
|
|
|
- style="width: 100%"
|
|
|
- value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
- type="daterange"
|
|
|
- range-separator="-"
|
|
|
- start-placeholder="开始日期"
|
|
|
- end-placeholder="结束日期"
|
|
|
- :default-time="['00:00:00', '23:59:59']"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
|
|
|
- <div class="ele-form-actions">
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- icon="el-icon-search"
|
|
|
- class="ele-btn-icon"
|
|
|
- @click="noticeReload"
|
|
|
- >
|
|
|
- 查询
|
|
|
- </el-button>
|
|
|
- <el-button @click="noticeReset">重置</el-button>
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
+
|
|
|
<ele-pro-table
|
|
|
ref="noticeTable"
|
|
|
:columns="deptColumns"
|
|
|
:datasource="noticeDatasource"
|
|
|
cache-key="noticeDatasource"
|
|
|
+ height="calc(100vh - 450px)"
|
|
|
+ :toolkit="[]"
|
|
|
+ :init-load="false"
|
|
|
>
|
|
|
+ <template v-slot:toolbar="{ row }">
|
|
|
+ <div class="filter-container">
|
|
|
+ <el-form
|
|
|
+ class="ele-form-search"
|
|
|
+ @keyup.enter.native="reload"
|
|
|
+ @submit.native.prevent
|
|
|
+ >
|
|
|
+ <el-row :gutter="15" style="display: flex;align-items: center">
|
|
|
+ <el-col v-bind="{ span: 3 }">
|
|
|
+ <el-form-item label="分类:" label-width="60px">
|
|
|
+ <el-select v-model="params.formId">
|
|
|
+ <el-option v-for="(item,index) in defaultTemplateList" :key="index" :value="item.id"
|
|
|
+ :label="item.name"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col v-bind="{ span: 4 }">
|
|
|
+ <el-form-item label="结果:" prop="result" label-width="60px">
|
|
|
+ <!-- <el-select
|
|
|
+ v-model="params.status"
|
|
|
+ placeholder="请选择状态"
|
|
|
+ clearable
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="dict in statusList"
|
|
|
+ :key="dict.value"
|
|
|
+ :label="dict.label"
|
|
|
+ :value="dict.value"
|
|
|
+ />
|
|
|
+ </el-select> -->
|
|
|
+ <DictSelection
|
|
|
+ dictName="流程实例的结果"
|
|
|
+ clearable
|
|
|
+ v-model="params.result"
|
|
|
+ >
|
|
|
+ </DictSelection>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col v-bind="{ span: 4 }">
|
|
|
+ <el-form-item label="发起人:" prop="startUserName" label-width="70px">
|
|
|
+ <el-input v-model="params.startUserName"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col v-bind="{ span: 10 }">
|
|
|
+ <el-form-item label="创建时间:" prop="createTime" label-width="90px">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="params.createTime"
|
|
|
+ style="width: 100%"
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ type="daterange"
|
|
|
+ range-separator="-"
|
|
|
+ start-placeholder="开始日期"
|
|
|
+ end-placeholder="结束日期"
|
|
|
+ :default-time="['00:00:00', '23:59:59']"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template v-slot:toolkit="{ row }">
|
|
|
+ <div class="filter-container">
|
|
|
+ <div class="ele-form-actions">
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ icon="el-icon-search"
|
|
|
+ class="ele-btn-icon"
|
|
|
+ @click="reload"
|
|
|
+ >
|
|
|
+ 查询
|
|
|
+ </el-button>
|
|
|
+ <el-button @click="reset">重置</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <template v-if="formColumnList.length" v-for="(item,index) in formColumnList"
|
|
|
+ v-slot:[item.model]="{ row }">
|
|
|
+ <div v-if="item.type=='imgupload'">
|
|
|
+ <el-image
|
|
|
+ v-if="row[item.model].length"
|
|
|
+ style="width: 100px; height: 100px"
|
|
|
+ :src="row[item.model][0].url"
|
|
|
+ :preview-src-list="row[item.model].map(i=>i.url)">
|
|
|
+ </el-image>
|
|
|
+ </div>
|
|
|
+ <div v-else-if="item.type=='fileupload'">
|
|
|
+ <el-button type="text" @click="getFiles(row[item.model])">下载</el-button>
|
|
|
+ </div>
|
|
|
+ <div v-else-if="item.type=='userSelect'">
|
|
|
+ {{ getUserName(row[item.model]) }}
|
|
|
+ </div>
|
|
|
+ <div v-else-if="item.type=='deptAndUserCascader'">
|
|
|
+ {{ getDeptAndUserName(row[item.model]) }}
|
|
|
+ </div>
|
|
|
+ <div v-else-if="item.type=='deptCascader'">
|
|
|
+ {{ getDeptName(row[item.model]) }}
|
|
|
+ </div>
|
|
|
+ <div v-else>
|
|
|
+ {{ row[item.model] }}
|
|
|
+ </div>
|
|
|
+
|
|
|
+ </template>
|
|
|
<template v-slot:result="{ row }">
|
|
|
<el-tag size="medium" :type="getTimelineItemType(getDictValue('流程实例的结果', row.result))">
|
|
|
{{ getDictValue('流程实例的结果', row.result) }}
|
|
|
@@ -312,6 +436,7 @@
|
|
|
</el-link
|
|
|
>
|
|
|
</template>
|
|
|
+
|
|
|
<!-- 操作列 -->
|
|
|
<template v-slot:action="{ row }">
|
|
|
<el-button
|
|
|
@@ -345,12 +470,14 @@ import {getDate} from "@/utils/dateUtils";
|
|
|
import dictMixins from "@/mixins/dictMixins";
|
|
|
import detail from "@/views/bpm/processInstance/detail.vue";
|
|
|
import {getByCode} from "@/api/system/dictionary-data";
|
|
|
-
|
|
|
+import {getFile} from "@/api/system/file";
|
|
|
+import {getUserPage} from '@/api/tickets';
|
|
|
+import {listOrganizations} from "@/api/system/organization";
|
|
|
// 默认表单数据
|
|
|
const defaultParams = {
|
|
|
status: '',
|
|
|
name: '',
|
|
|
- formId:''
|
|
|
+ formId: ''
|
|
|
};
|
|
|
export default {
|
|
|
name: "index",
|
|
|
@@ -365,6 +492,8 @@ export default {
|
|
|
templateList: {},
|
|
|
dictList: {},
|
|
|
defaultTemplateList: [],
|
|
|
+ userList: [],
|
|
|
+ deptList: [],
|
|
|
params: {...defaultParams},
|
|
|
statusList: [],
|
|
|
formColumnList: [],
|
|
|
@@ -396,13 +525,21 @@ export default {
|
|
|
showOverflowTooltip: true,
|
|
|
fixed: 'left'
|
|
|
},
|
|
|
+ {
|
|
|
+ prop: 'formName',
|
|
|
+ label: '分类',
|
|
|
+ align: 'center',
|
|
|
+ slot: 'formName',
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ minWidth: 100
|
|
|
+ },
|
|
|
{
|
|
|
prop: 'name',
|
|
|
label: '名称',
|
|
|
align: 'center',
|
|
|
slot: 'name',
|
|
|
showOverflowTooltip: true,
|
|
|
- minWidth: 150
|
|
|
+ minWidth: 100
|
|
|
},
|
|
|
...list,
|
|
|
{
|
|
|
@@ -469,6 +606,14 @@ export default {
|
|
|
showOverflowTooltip: true,
|
|
|
fixed: 'left'
|
|
|
},
|
|
|
+ {
|
|
|
+ prop: 'formName',
|
|
|
+ label: '分类',
|
|
|
+ align: 'center',
|
|
|
+ slot: 'formName',
|
|
|
+ showOverflowTooltip: true,
|
|
|
+ minWidth: 150
|
|
|
+ },
|
|
|
{
|
|
|
prop: 'name',
|
|
|
label: '名称',
|
|
|
@@ -528,10 +673,46 @@ export default {
|
|
|
// }
|
|
|
]
|
|
|
},
|
|
|
+ getUserName() {
|
|
|
+ return (id) => {
|
|
|
+ if (!id) return ''
|
|
|
+ let find = this.userList.find(item => item.id == id) || {}
|
|
|
+ return find.name
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getDeptAndUserName() {
|
|
|
+ return (id = []) => {
|
|
|
+ if (!id.length) return ''
|
|
|
+ let find = this.userList.find(item => item.id == id[id.length - 1]) || {}
|
|
|
+ return find.name
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getDeptName() {
|
|
|
+ return (id = []) => {
|
|
|
+
|
|
|
+ if (!id.length) return ''
|
|
|
+ let find = this.deptList.find(item => item.id == id[id.length - 1]) || {}
|
|
|
+ console.log(find.name,'===========');
|
|
|
+ return find.name
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ 'params.formId': {
|
|
|
+ handler(val) {
|
|
|
+ this.reload()
|
|
|
+ this.deptReload()
|
|
|
+ this.reload()
|
|
|
+ this.noticeReload()
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
- created() {
|
|
|
- this.getDictList('collaborative_type')
|
|
|
- this.getTemplateList()
|
|
|
+ async created() {
|
|
|
+ await this.getDictList('collaborative_type')
|
|
|
+ await this.getTemplateList()
|
|
|
+ await this.getUserList()
|
|
|
+ await this.getDeptList()
|
|
|
},
|
|
|
methods: {
|
|
|
getDictV(code, val) {
|
|
|
@@ -548,12 +729,30 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
+ //获取人员数据
|
|
|
+ async getUserList() {
|
|
|
+ let params = {pageNum: 1, size: -1};
|
|
|
+ let {list} = await getUserPage(params);
|
|
|
+ this.userList = list
|
|
|
+ },
|
|
|
+ //获取部门数据
|
|
|
+ async getDeptList() {
|
|
|
+ this.deptList = await listOrganizations()
|
|
|
+ console.log(this.deptList);
|
|
|
+ },
|
|
|
+ getFiles(row = []) {
|
|
|
+ row.forEach(item => {
|
|
|
+ getFile({objectName: item.storePath}, item.name);
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
async getTemplateList() {
|
|
|
this.defaultTemplateList = await getBpmCustomFormList()
|
|
|
this.templateList = _.groupBy(this.defaultTemplateList, 'dictType');
|
|
|
- this.params.formId = this.defaultTemplateList[0]?.id
|
|
|
- let makingJson = JSON.parse(this.defaultTemplateList[0].formJson.makingJson) || {}
|
|
|
+ this.params.formId = this.defaultTemplateList[0]?.id
|
|
|
+ let makingJson = JSON.parse(this.defaultTemplateList[0].formJson.makingJson) || {}
|
|
|
this.formColumnList = makingJson.list
|
|
|
+ console.log(this.formColumnList);
|
|
|
},
|
|
|
handleStartProcess(i) {
|
|
|
this.processSubmitDialogFlag = true;
|
|
|
@@ -562,28 +761,29 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
/* 表格数据源 */
|
|
|
- async datasource({page, limit, where, order}) {
|
|
|
- let data = await getProcessInstancePage({
|
|
|
- pageNo: page,
|
|
|
- pageSize: limit,
|
|
|
- ...this.params,
|
|
|
- processType: '1',
|
|
|
- });
|
|
|
- data = data.list.map(item => {
|
|
|
- return {
|
|
|
- ...
|
|
|
- item,
|
|
|
- ...
|
|
|
- item.valueJson
|
|
|
- }
|
|
|
- })
|
|
|
- return data
|
|
|
+ async datasource({page, limit, where, order}) {
|
|
|
+ let data = await getProcessInstancePage({
|
|
|
+ pageNo: page,
|
|
|
+ pageSize: limit,
|
|
|
+ ...this.params,
|
|
|
+ processType: '1',
|
|
|
+ });
|
|
|
+ data = data.list.map(item => {
|
|
|
+ return {
|
|
|
+ ...
|
|
|
+ item,
|
|
|
+ ...
|
|
|
+ item.valueJson
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return data
|
|
|
},
|
|
|
/* 刷新表格 */
|
|
|
reload(where) {
|
|
|
- let find = this.defaultTemplateList.find(item=>item.id==this.params.formId)||{};
|
|
|
- let makingJson = JSON.parse(find.formJson.makingJson) || {}
|
|
|
+ let find = this.defaultTemplateList.find(item => item.id == this.params.formId) || {};
|
|
|
+ let makingJson = JSON.parse(find.formJson.makingJson) || {}
|
|
|
this.formColumnList = makingJson.list
|
|
|
+ console.log(this.formColumnList);
|
|
|
this.$refs.table.reload({page: 1, where});
|
|
|
this.$refs.table.reRenderTable()
|
|
|
},
|
|
|
@@ -591,13 +791,12 @@ export default {
|
|
|
/* 重置 */
|
|
|
reset() {
|
|
|
this.params = {...defaultParams};
|
|
|
- this.params.formId = this.defaultTemplateList[0]?.id
|
|
|
+ this.params.formId = this.defaultTemplateList[0]?.id
|
|
|
this.reload();
|
|
|
},
|
|
|
/* 表格数据源 */
|
|
|
- async deptDatasource({page, limit, where, order}) {
|
|
|
- console.log(11112222);
|
|
|
- let data = await getProcessInstanceDeptPage({
|
|
|
+ async deptDatasource({page, limit, where, order}) {
|
|
|
+ let data = await getProcessInstanceDeptPage({
|
|
|
pageNo: page,
|
|
|
pageSize: limit,
|
|
|
...this.params,
|
|
|
@@ -615,19 +814,19 @@ export default {
|
|
|
},
|
|
|
/* 刷新表格 */
|
|
|
deptReload(where) {
|
|
|
- let find = this.defaultTemplateList.find(item=>item.id==this.params.formId)||{};
|
|
|
- let makingJson = JSON.parse(find.formJson.makingJson) || {}
|
|
|
+ let find = this.defaultTemplateList.find(item => item.id == this.params.formId) || {};
|
|
|
+ let makingJson = JSON.parse(find.formJson.makingJson) || {}
|
|
|
this.formColumnList = makingJson.list
|
|
|
this.$refs.deptTable.reload({page: 1, where});
|
|
|
},
|
|
|
/* 重置 */
|
|
|
deptReset() {
|
|
|
this.params = {...defaultParams};
|
|
|
- this.params.formId = this.defaultTemplateList[0]?.id
|
|
|
+ this.params.formId = this.defaultTemplateList[0]?.id
|
|
|
this.deptReload();
|
|
|
},
|
|
|
/* 表格数据源 */
|
|
|
- async noticeDatasource({page, limit, where, order}) {
|
|
|
+ async noticeDatasource({page, limit, where, order}) {
|
|
|
let data = await getProcessInstanceNoticePage({
|
|
|
pageNo: page,
|
|
|
pageSize: limit,
|
|
|
@@ -646,15 +845,15 @@ export default {
|
|
|
},
|
|
|
/* 刷新表格 */
|
|
|
noticeReload(where) {
|
|
|
- let find = this.defaultTemplateList.find(item=>item.id==this.params.formId)||{};
|
|
|
- let makingJson = JSON.parse(find.formJson.makingJson) || {}
|
|
|
+ let find = this.defaultTemplateList.find(item => item.id == this.params.formId) || {};
|
|
|
+ let makingJson = JSON.parse(find.formJson.makingJson) || {}
|
|
|
this.formColumnList = makingJson.list
|
|
|
this.$refs.noticeTable.reload({page: 1, where});
|
|
|
},
|
|
|
/* 重置 */
|
|
|
noticeReset() {
|
|
|
this.params = {...defaultParams};
|
|
|
- this.params.formId = this.defaultTemplateList[0]?.id
|
|
|
+ this.params.formId = this.defaultTemplateList[0]?.id
|
|
|
this.noticeReload();
|
|
|
},
|
|
|
/** 处理审批按钮 */
|
|
|
@@ -689,18 +888,19 @@ export default {
|
|
|
}
|
|
|
|
|
|
.content-box {
|
|
|
-
|
|
|
- flex: 1;
|
|
|
+ width: 100%;
|
|
|
+ //max-width: 273px;
|
|
|
+ //min-width: 90px;
|
|
|
margin-right: 10px;
|
|
|
display: flex;
|
|
|
flex-direction: row;
|
|
|
- flex-wrap: wrap;
|
|
|
- justify-content: space-between;
|
|
|
+ //flex-wrap: wrap;
|
|
|
+ //justify-content: space-between;
|
|
|
|
|
|
.category_box {
|
|
|
border: 1px solid #e1e1e1;
|
|
|
border-radius: 1px;
|
|
|
- width: 100%;
|
|
|
+ width: 25%;
|
|
|
margin-top: 5px;
|
|
|
|
|
|
.category_box_title {
|
|
|
@@ -718,10 +918,11 @@ export default {
|
|
|
.category_box_content {
|
|
|
display: flex;
|
|
|
flex-direction: row;
|
|
|
+ flex-wrap: wrap;
|
|
|
|
|
|
.category_content {
|
|
|
- width: 90px;
|
|
|
- height: 90px;
|
|
|
+ width: 60px;
|
|
|
+ height: 60px;
|
|
|
display: flex;
|
|
|
flex-direction: column;
|
|
|
border-right: 1px solid #e1e1e1;
|
|
|
@@ -736,7 +937,7 @@ export default {
|
|
|
}
|
|
|
|
|
|
span:nth-child(2) {
|
|
|
- padding-top: 10px;
|
|
|
+ padding-top: 5px;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -752,7 +953,9 @@ export default {
|
|
|
}
|
|
|
|
|
|
.tab-box {
|
|
|
- width: 80%;
|
|
|
+ width: 100%;
|
|
|
+ //max-width: 1100px;
|
|
|
+ //min-width: 600px;
|
|
|
margin-top: 6px;
|
|
|
height: 98%;
|
|
|
|