|
|
@@ -1,221 +1,292 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
<van-sticky>
|
|
|
- <van-nav-bar :title="generateTitle($route.name,$route.params.title||$route.meta.title)"
|
|
|
- :left-text="$t('common.button.back')" left-arrow @click-left="$router.push({ name: 'dashboard' })" />
|
|
|
- <van-search v-model="subject" show-action placeholder="请输入搜索关键词" @search="onSearch">
|
|
|
+ <van-nav-bar
|
|
|
+ :title="
|
|
|
+ generateTitle($route.name, $route.params.title || $route.meta.title)
|
|
|
+ "
|
|
|
+ :left-text="$t('common.button.back')"
|
|
|
+ left-arrow
|
|
|
+ @click-left="$router.push({ name: 'dashboard' })"
|
|
|
+ />
|
|
|
+ <van-search
|
|
|
+ v-model="subject"
|
|
|
+ show-action
|
|
|
+ placeholder="请输入搜索关键词"
|
|
|
+ @search="onSearch"
|
|
|
+ >
|
|
|
<template #left>
|
|
|
- <van-icon name="bars" :class="{'ibps-active':$utils.isNotEmpty(typeId)}" class="ibps-pr-5"
|
|
|
- @click="clickType" />
|
|
|
+ <van-icon
|
|
|
+ name="bars"
|
|
|
+ :class="{ 'ibps-active': $utils.isNotEmpty(typeId) }"
|
|
|
+ class="ibps-pr-5"
|
|
|
+ @click="clickType"
|
|
|
+ />
|
|
|
</template>
|
|
|
<template #action>
|
|
|
- <van-icon name="filter-o" :class="{'ibps-active':stateActive}" @click="clickMoreSearch" />
|
|
|
+ <van-icon
|
|
|
+ name="filter-o"
|
|
|
+ :class="{ 'ibps-active': stateActive }"
|
|
|
+ @click="clickMoreSearch"
|
|
|
+ />
|
|
|
</template>
|
|
|
</van-search>
|
|
|
</van-sticky>
|
|
|
<div class="ibps-blank-bar" />
|
|
|
<van-pull-refresh v-model="refreshing" @refresh="onRefresh">
|
|
|
<van-list v-model="loading" :finished="finished" @load="loadData">
|
|
|
- <van-cell v-for="(item,index) in listData" :key="item.id+index" :title="item.taskName"
|
|
|
- :label="getTaskDesc(item.subject)" size="large" @click="onClick(item,index)">
|
|
|
+ <van-cell
|
|
|
+ v-for="(item, index) in listData"
|
|
|
+ :key="item.id + index"
|
|
|
+ :title="item.taskName"
|
|
|
+ :label="getTaskDesc(item.subject)"
|
|
|
+ size="large"
|
|
|
+ @click="onClick(item, index)"
|
|
|
+ >
|
|
|
<!-- <template slot="icon">
|
|
|
<ibps-avatar :icon="_randomIcon(index)" :text="item.name" :bg-color="_randomColor(index)" radius="4"
|
|
|
icon-prefix="ibps-icon" class="ibps-mr-10" />
|
|
|
</template> -->
|
|
|
- <span>{{ item.createTime|formatRelativeTime }}</span>
|
|
|
+ <span>{{ item.createTime | formatRelativeTime }}</span>
|
|
|
<div>
|
|
|
<!-- <van-tag plain :type=" item.status | optionsFilter(bpmnStatusOptions,'type')">{{ item.status | optionsFilter(bpmnStatusOptions) }}</van-tag> -->
|
|
|
- <van-tag size="medium"
|
|
|
- :color="item.status | optionsFilter(bpmnStatusOptions,'type') | optionsFilter(colorOptions,'color','type')"
|
|
|
- :text-color="item.status | optionsFilter(bpmnStatusOptions,'type') | optionsFilter(colorOptions,'textColor','type')">
|
|
|
- {{ item.status=='submit'?'编辑':item.status| optionsFilter(bpmnStatusOptions) }}</van-tag>
|
|
|
+ <van-tag
|
|
|
+ size="medium"
|
|
|
+ :color="
|
|
|
+ item.status
|
|
|
+ | optionsFilter(bpmnStatusOptions, 'type')
|
|
|
+ | optionsFilter(colorOptions, 'color', 'type')
|
|
|
+ "
|
|
|
+ :text-color="
|
|
|
+ item.status
|
|
|
+ | optionsFilter(bpmnStatusOptions, 'type')
|
|
|
+ | optionsFilter(colorOptions, 'textColor', 'type')
|
|
|
+ "
|
|
|
+ >
|
|
|
+ {{
|
|
|
+ item.status == 'submit'
|
|
|
+ ? '编辑'
|
|
|
+ : item.status | optionsFilter(bpmnStatusOptions)
|
|
|
+ }}</van-tag
|
|
|
+ >
|
|
|
</div>
|
|
|
</van-cell>
|
|
|
- <ibps-list-result-page :result-type="resultType" :error-type="errorType" :result-message="resultMessage" />
|
|
|
+ <ibps-list-result-page
|
|
|
+ :result-type="resultType"
|
|
|
+ :error-type="errorType"
|
|
|
+ :result-message="resultMessage"
|
|
|
+ />
|
|
|
</van-list>
|
|
|
</van-pull-refresh>
|
|
|
- <ibps-more-search :show="moreSearchPopup" :search-forms="searchForms" @callback="onMoreSearch"
|
|
|
- @close="show => moreSearchPopup = show" @reset-form="resetForm" />
|
|
|
+ <ibps-more-search
|
|
|
+ :show="moreSearchPopup"
|
|
|
+ :search-forms="searchForms"
|
|
|
+ @callback="onMoreSearch"
|
|
|
+ @close="show => (moreSearchPopup = show)"
|
|
|
+ @reset-form="resetForm"
|
|
|
+ />
|
|
|
|
|
|
- <ibps-type-tree v-model="typeTreePopup" title="流程分类" category-key="FLOW_TYPE" @node-click="clickTypeNode"
|
|
|
- @close="visible => typeTreePopup = visible" />
|
|
|
-
|
|
|
- <ibps-bpmn-formrender-dialog :visible="formrenderVisible" :title="formrenderTitle" :inst-id="instId"
|
|
|
- @close="visible => formrenderVisible = visible" />
|
|
|
+ <ibps-type-tree
|
|
|
+ v-model="typeTreePopup"
|
|
|
+ title="流程分类"
|
|
|
+ category-key="FLOW_TYPE"
|
|
|
+ @node-click="clickTypeNode"
|
|
|
+ @close="visible => (typeTreePopup = visible)"
|
|
|
+ />
|
|
|
|
|
|
+ <ibps-bpmn-formrender-dialog
|
|
|
+ :visible="formrenderVisible"
|
|
|
+ :title="formrenderTitle"
|
|
|
+ :inst-id="instId"
|
|
|
+ @close="visible => (formrenderVisible = visible)"
|
|
|
+ />
|
|
|
</div>
|
|
|
-
|
|
|
</template>
|
|
|
<script>
|
|
|
- import { handledTask } from '@/api/platform/office/bpmReceived'
|
|
|
+import { handledTask } from '@/api/platform/office/bpmReceived'
|
|
|
|
|
|
- import ActionUtils from '@/utils/action'
|
|
|
- import i18n from '@/utils/i18n'
|
|
|
- import random from '@/mixins/random'
|
|
|
- import bpmnStatus from '@/mixins/bpmnStatus'
|
|
|
+import ActionUtils from '@/utils/action'
|
|
|
+import i18n from '@/utils/i18n'
|
|
|
+import random from '@/mixins/random'
|
|
|
+import bpmnStatus from '@/mixins/bpmnStatus'
|
|
|
|
|
|
- import IbpsMoreSearch from '@/components/ibps-more-search'
|
|
|
- import IbpsTypeTree from '@/business/platform/cat/type/tree'
|
|
|
- import IbpsAvatar from '@/components/ibps-avatar'
|
|
|
- import IbpsListResultPage from '@/components/ibps-list-result-page'
|
|
|
- import IbpsBpmnFormrenderDialog from '@/business/platform/bpmn/form/dialog'
|
|
|
+import IbpsMoreSearch from '@/components/ibps-more-search'
|
|
|
+import IbpsTypeTree from '@/business/platform/cat/type/tree'
|
|
|
+import IbpsAvatar from '@/components/ibps-avatar'
|
|
|
+import IbpsListResultPage from '@/components/ibps-list-result-page'
|
|
|
+import IbpsBpmnFormrenderDialog from '@/business/platform/bpmn/form/dialog'
|
|
|
|
|
|
- export default {
|
|
|
- components: {
|
|
|
- IbpsMoreSearch,
|
|
|
- IbpsTypeTree,
|
|
|
- IbpsAvatar,
|
|
|
- IbpsListResultPage,
|
|
|
- IbpsBpmnFormrenderDialog
|
|
|
- },
|
|
|
- mixins: [random, bpmnStatus],
|
|
|
- data() {
|
|
|
- return {
|
|
|
- stateActive: false,
|
|
|
- moreSearchPopup: false,
|
|
|
- typeTreePopup: false,
|
|
|
- searchForms: {
|
|
|
- forms: [
|
|
|
- { prop: 'Q^SUBJECT_^SL', label: '事务名称', fieldType: 'text' },
|
|
|
- // { prop: 'Q^TASK_NAME_^SL', label: '事务说明', fieldType: 'text' },
|
|
|
- { prop: 'Q^inst.subject_^SL', label: '事务说明', fieldType: 'text' },
|
|
|
- { prop: ['Q^COMPLETE_TIME_^DL', 'Q^COMPLETE_TIME_^DG'], label: '创建时间', fieldType: 'dateRange', options: { datefmt: 'yyyy-MM-dd' } },
|
|
|
- {
|
|
|
- prop: 'Q^APO.STATUS_^S', label: '是否结束', fieldType: 'checker', cols: 3, valueKey: 'value', options: [
|
|
|
- { value: 'agree', label: '是' },
|
|
|
- { value: 'oppose', label: '否' },
|
|
|
- // { value: 'reject', label: '驳回' },
|
|
|
- // { value: 'rejectToStart', label: '驳回发起人' },
|
|
|
- // { value: 'abandon', label: '弃权' }
|
|
|
- ]
|
|
|
- }
|
|
|
- ]
|
|
|
- },
|
|
|
+export default {
|
|
|
+ components: {
|
|
|
+ IbpsMoreSearch,
|
|
|
+ IbpsTypeTree,
|
|
|
+ IbpsAvatar,
|
|
|
+ IbpsListResultPage,
|
|
|
+ IbpsBpmnFormrenderDialog
|
|
|
+ },
|
|
|
+ mixins: [random, bpmnStatus],
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ stateActive: false,
|
|
|
+ moreSearchPopup: false,
|
|
|
+ typeTreePopup: false,
|
|
|
+ searchForms: {
|
|
|
+ forms: [
|
|
|
+ { prop: 'Q^inst.subject_^SL', label: '事务说明', fieldType: 'text' },
|
|
|
+ // { prop: 'Q^TASK_NAME_^SL', label: '事务说明', fieldType: 'text' },
|
|
|
+ // { prop: 'Q^inst.subject_^SL', label: '事务说明', fieldType: 'text' },
|
|
|
+ {
|
|
|
+ prop: ['Q^inst.create_time_^DL', 'Q^inst.create_time_^DG'],
|
|
|
+ label: '创建时间',
|
|
|
+ fieldType: 'dateRange',
|
|
|
+ options: { datefmt: 'yyyy-MM-dd' }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ prop: 'Q^APO.STATUS_^S',
|
|
|
+ label: '是否结束',
|
|
|
+ fieldType: 'checker',
|
|
|
+ cols: 3,
|
|
|
+ valueKey: 'value',
|
|
|
+ options: [
|
|
|
+ { value: 'agree', label: '是' },
|
|
|
+ { value: 'oppose', label: '否' }
|
|
|
+ // { value: 'reject', label: '驳回' },
|
|
|
+ // { value: 'rejectToStart', label: '驳回发起人' },
|
|
|
+ // { value: 'abandon', label: '弃权' }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
|
|
|
- subject: '',
|
|
|
- typeId: '',
|
|
|
- moreParams: {},
|
|
|
+ subject: '',
|
|
|
+ typeId: '',
|
|
|
+ moreParams: {},
|
|
|
|
|
|
- listData: [],
|
|
|
- pagination: {},
|
|
|
- sorts: {},
|
|
|
+ listData: [],
|
|
|
+ pagination: { limit: 100 },
|
|
|
+ sorts: {},
|
|
|
|
|
|
- loading: false,
|
|
|
- finished: false,
|
|
|
- refreshing: false,
|
|
|
- resultType: 'init',
|
|
|
- errorType: null,
|
|
|
- resultMessage: null,
|
|
|
+ loading: false,
|
|
|
+ finished: false,
|
|
|
+ refreshing: false,
|
|
|
+ resultType: 'init',
|
|
|
+ errorType: null,
|
|
|
+ resultMessage: null,
|
|
|
|
|
|
- instId: '',
|
|
|
- formrenderVisible: false,
|
|
|
- formrenderTitle: ''
|
|
|
- }
|
|
|
+ instId: '',
|
|
|
+ formrenderVisible: false,
|
|
|
+ formrenderTitle: ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ generateTitle(name, title) {
|
|
|
+ // generateTitle by vue-i18n
|
|
|
+ return i18n.generateTitle(name, title)
|
|
|
},
|
|
|
- methods: {
|
|
|
- generateTitle(name, title) { // generateTitle by vue-i18n
|
|
|
- return i18n.generateTitle(name, title)
|
|
|
- },
|
|
|
- /**
|
|
|
- * 加载数据
|
|
|
- */
|
|
|
- loadData() {
|
|
|
- this.loading = true
|
|
|
- handledTask(this.getSearcFormData()).then(response => {
|
|
|
+ /**
|
|
|
+ * 加载数据
|
|
|
+ */
|
|
|
+ loadData() {
|
|
|
+ this.loading = true
|
|
|
+ handledTask(this.getSearcFormData())
|
|
|
+ .then(response => {
|
|
|
// 处理数据
|
|
|
- ActionUtils.handleListData(this, response.data)
|
|
|
- }).catch((e) => {
|
|
|
+ ActionUtils.existHandleListData(
|
|
|
+ this,
|
|
|
+ response.data,
|
|
|
+ this.$store.getters.flowList,
|
|
|
+ 'procDefId',
|
|
|
+ 'bpmn_liu_cheng_di'
|
|
|
+ )
|
|
|
+ })
|
|
|
+ .catch(e => {
|
|
|
ActionUtils.handleErrorData(this, e)
|
|
|
})
|
|
|
- },
|
|
|
- /**
|
|
|
- * 获取格式化参数
|
|
|
- */
|
|
|
- getSearcFormData() {
|
|
|
- let params = {}
|
|
|
- if (this.$utils.isNotEmpty(this.subject)) {
|
|
|
- params['Q^subject_^SL'] = this.subject
|
|
|
- }
|
|
|
- if (this.$utils.isNotEmpty(this.moreParams)) {
|
|
|
- params = Object.assign(params, this.moreParams)
|
|
|
- }
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 获取格式化参数
|
|
|
+ */
|
|
|
+ getSearcFormData() {
|
|
|
+ let params = {}
|
|
|
+ if (this.$utils.isNotEmpty(this.subject)) {
|
|
|
+ params['Q^subject_^SL'] = this.subject
|
|
|
+ }
|
|
|
+ if (this.$utils.isNotEmpty(this.moreParams)) {
|
|
|
+ params = Object.assign(params, this.moreParams)
|
|
|
+ }
|
|
|
|
|
|
- return ActionUtils.formatParams(
|
|
|
- params,
|
|
|
- this.pagination,
|
|
|
- this.sorts)
|
|
|
- },
|
|
|
- /**
|
|
|
- * 下拉刷新
|
|
|
- */
|
|
|
- onRefresh() {
|
|
|
- this.refreshing = true
|
|
|
- this.finished = false
|
|
|
- this.loading = true
|
|
|
- this.onSearch()
|
|
|
- },
|
|
|
- /**
|
|
|
- * 查询
|
|
|
- */
|
|
|
- onSearch() {
|
|
|
- this.stateActive = false
|
|
|
- ActionUtils.initListData(this)
|
|
|
- this.loadData()
|
|
|
- },
|
|
|
- /**
|
|
|
- * 高级查询
|
|
|
- */
|
|
|
- onMoreSearch(params) {
|
|
|
- if (this.$utils.isNotEmpty(this.typeId)) {
|
|
|
- params['Q^type_id_^SL'] = this.typeId
|
|
|
- }
|
|
|
- this.moreParams = params
|
|
|
- this.onSearch()
|
|
|
- if (this.$utils.isNotEmpty(params)) {
|
|
|
- this.stateActive = true
|
|
|
- }
|
|
|
- },
|
|
|
- /**
|
|
|
- * 弹窗更多查询条件
|
|
|
- */
|
|
|
- clickMoreSearch() {
|
|
|
- this.moreSearchPopup = true
|
|
|
- this.stateActive = false
|
|
|
- },
|
|
|
- /**
|
|
|
- * 重置表单
|
|
|
- */
|
|
|
- resetForm() {
|
|
|
- this.typeId = ''
|
|
|
- },
|
|
|
- clickType() {
|
|
|
- this.typeTreePopup = true
|
|
|
- },
|
|
|
- clickTypeNode(data) {
|
|
|
- this.typeId = data.id
|
|
|
- this.onMoreSearch({})
|
|
|
- },
|
|
|
- getTaskDesc(v) {
|
|
|
- if (!v.includes('#')) {
|
|
|
- return ''
|
|
|
- }
|
|
|
- return v.split('#')[1] || ''
|
|
|
- },
|
|
|
- onClick(item) {
|
|
|
- this.instId = item.procInstId
|
|
|
- this.formrenderTitle = item.taskName
|
|
|
- this.formrenderVisible = true
|
|
|
+ return ActionUtils.formatParams(params, this.pagination, this.sorts)
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 下拉刷新
|
|
|
+ */
|
|
|
+ onRefresh() {
|
|
|
+ this.refreshing = true
|
|
|
+ this.finished = false
|
|
|
+ this.loading = true
|
|
|
+ this.onSearch()
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 查询
|
|
|
+ */
|
|
|
+ onSearch() {
|
|
|
+ this.stateActive = false
|
|
|
+ ActionUtils.initListData(this)
|
|
|
+ this.loadData()
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 高级查询
|
|
|
+ */
|
|
|
+ onMoreSearch(params) {
|
|
|
+ if (this.$utils.isNotEmpty(this.typeId)) {
|
|
|
+ params['Q^type_id_^SL'] = this.typeId
|
|
|
}
|
|
|
+ this.moreParams = params
|
|
|
+ this.onSearch()
|
|
|
+ if (this.$utils.isNotEmpty(params)) {
|
|
|
+ this.stateActive = true
|
|
|
+ }
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 弹窗更多查询条件
|
|
|
+ */
|
|
|
+ clickMoreSearch() {
|
|
|
+ this.moreSearchPopup = true
|
|
|
+ this.stateActive = false
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 重置表单
|
|
|
+ */
|
|
|
+ resetForm() {
|
|
|
+ this.typeId = ''
|
|
|
+ },
|
|
|
+ clickType() {
|
|
|
+ this.typeTreePopup = true
|
|
|
+ },
|
|
|
+ clickTypeNode(data) {
|
|
|
+ this.typeId = data.id
|
|
|
+ this.onMoreSearch({})
|
|
|
+ },
|
|
|
+ getTaskDesc(v) {
|
|
|
+ if (!v.includes('#')) {
|
|
|
+ return ''
|
|
|
+ }
|
|
|
+ return v.split('#')[1] || ''
|
|
|
+ },
|
|
|
+ onClick(item) {
|
|
|
+ this.instId = item.procInstId
|
|
|
+ this.formrenderTitle = item.taskName
|
|
|
+ this.formrenderVisible = true
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
+}
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
|
- ::v-deep .van-cell__title {
|
|
|
- width: 65%;
|
|
|
+::v-deep .van-cell__title {
|
|
|
+ width: 65%;
|
|
|
|
|
|
- .van-cell__label {
|
|
|
- overflow-wrap: break-word;
|
|
|
- }
|
|
|
+ .van-cell__label {
|
|
|
+ overflow-wrap: break-word;
|
|
|
}
|
|
|
-</style>
|
|
|
+}
|
|
|
+</style>
|