index.vue 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. <template>
  2. <div class="ele-body">
  3. <el-card shadow="never">
  4. <div class="filter-container">
  5. <el-form
  6. label-width="100px"
  7. class="ele-form-search"
  8. @keyup.enter.native="reload"
  9. @submit.native.prevent
  10. >
  11. <el-row :gutter="15">
  12. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  13. <el-form-item label="流程分类:" prop="processTypeName">
  14. <el-input
  15. clearable
  16. v-model.trim="params.processTypeName"
  17. ></el-input>
  18. </el-form-item>
  19. </el-col>
  20. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  21. <el-form-item label="任务名:" prop="name">
  22. <el-input clearable v-model.trim="params.name"></el-input>
  23. </el-form-item>
  24. </el-col>
  25. <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  26. <el-form-item label="状态:" prop="status">
  27. <el-select
  28. v-model="params.status"
  29. placeholder="请选择状态"
  30. clearable
  31. >
  32. <el-option
  33. v-for="dict in statusList"
  34. :key="dict.value"
  35. :label="dict.label"
  36. :value="dict.value"
  37. />
  38. </el-select>
  39. </el-form-item>
  40. </el-col> -->
  41. <el-col
  42. v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }"
  43. style="width: 300px"
  44. >
  45. <el-form-item label="创建时间:" prop="createTime">
  46. <el-date-picker
  47. v-model="params.createTime"
  48. style="width: 240px"
  49. value-format="yyyy-MM-dd HH:mm:ss"
  50. type="daterange"
  51. range-separator="-"
  52. start-placeholder="开始日期"
  53. end-placeholder="结束日期"
  54. :default-time="['00:00:00', '23:59:59']"
  55. />
  56. </el-form-item>
  57. </el-col>
  58. <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
  59. <div class="ele-form-actions">
  60. <el-button
  61. type="primary"
  62. icon="el-icon-search"
  63. class="ele-btn-icon"
  64. @click="reload"
  65. >
  66. 查询
  67. </el-button>
  68. <el-button @click="reset">重置</el-button>
  69. </div>
  70. </el-col>
  71. </el-row>
  72. </el-form>
  73. </div>
  74. <ele-pro-table
  75. ref="table"
  76. :columns="columns"
  77. :datasource="datasource"
  78. cache-key="systemRoleTable5"
  79. >
  80. <template v-slot:status="{ row }">
  81. <el-tag type="success" v-if="row.suspensionState === 1">激活</el-tag>
  82. <el-tag type="warning" v-if="row.suspensionState === 2">挂起</el-tag>
  83. </template>
  84. <template v-slot:name="{ row }">
  85. <el-link
  86. type="primary"
  87. :underline="false"
  88. @click="handleAudit('', row)"
  89. >
  90. {{ row.name }}</el-link
  91. >
  92. </template>
  93. <!-- 操作列 -->
  94. <template v-slot:action="{ row }">
  95. <el-button
  96. size="mini"
  97. type="text"
  98. icon="el-icon-edit"
  99. @click="handleAudit('audit', row)"
  100. >处理</el-button
  101. >
  102. <!-- <el-button-->
  103. <!-- size="mini"-->
  104. <!-- type="text"-->
  105. <!-- icon="el-icon-edit"-->
  106. <!-- @click="handleAudit('audit', row)"-->
  107. <!-- >转派</el-button-->
  108. <!-- >-->
  109. <!-- <el-button
  110. size="mini"
  111. type="text"
  112. icon="el-icon-edit"
  113. @click="openEdit('upDate', row)"
  114. >待办详情</el-button
  115. > -->
  116. </template>
  117. </ele-pro-table>
  118. </el-card>
  119. <handleTask ref="handleTaskRef" @reload="reload"></handleTask>
  120. <handleFormParserTask
  121. v-if="formParserDialogFlag"
  122. @reload="reload"
  123. :formParserDialogFlag.sync="formParserDialogFlag"
  124. ref="formParserDialogRef"
  125. ></handleFormParserTask>
  126. <detail ref="detailRef"></detail>
  127. <!-- <el-button type="text" @click="dialogVisible = true"
  128. >点击打开 Dialog</el-button
  129. >
  130. <el-dialog title="提示" :visible.sync="dialogVisible" width="90%">
  131. <inOut />
  132. <span slot="footer" class="dialog-footer">
  133. <el-button @click="dialogVisible = false">取 消</el-button>
  134. <el-button type="primary" @click="dialogVisible = false"
  135. >确 定</el-button
  136. >
  137. </span>
  138. </el-dialog> -->
  139. </div>
  140. </template>
  141. <script>
  142. import { getTodoTaskPage } from '@/api/bpm/task';
  143. import handleTask from '@/views/bpm/handleTask/index.vue';
  144. import handleFormParserTask from '@/views/bpm/handleTask/formParser/formParserDialog.vue';
  145. import detail from '@/views/bpm/processInstance/detail.vue';
  146. import inOut from '../outgoingManagement/add.vue';
  147. // import {getDate} from "@/utils/dateUtils";
  148. // 默认表单数据
  149. const defaultParams = {
  150. status: '',
  151. processTypeName: '',
  152. name: ''
  153. };
  154. export default {
  155. name: 'BpmDoneTask',
  156. components: { handleTask, detail, inOut, handleFormParserTask },
  157. computed: {
  158. // 是否开启响应式布局
  159. styleResponsive() {
  160. return this.$store.state.theme.styleResponsive;
  161. }
  162. },
  163. data() {
  164. return {
  165. dialogVisible: false,
  166. formParserDialogFlag: false,
  167. // 遮罩层
  168. loading: true,
  169. params: { ...defaultParams },
  170. statusList: [],
  171. columns: [
  172. {
  173. columnKey: 'index',
  174. label: '序号',
  175. type: 'index',
  176. width: 55,
  177. align: 'center',
  178. showOverflowTooltip: true,
  179. fixed: 'left'
  180. },
  181. {
  182. prop: 'processInstance.processTypeName',
  183. label: '流程分类',
  184. align: 'center',
  185. showOverflowTooltip: true,
  186. minWidth: 200
  187. },
  188. {
  189. prop: 'processInstance.name',
  190. label: '流程名称',
  191. align: 'center',
  192. showOverflowTooltip: true,
  193. minWidth: 200
  194. },
  195. {
  196. prop: 'name',
  197. label: '任务名称',
  198. align: 'center',
  199. slot: 'name',
  200. showOverflowTooltip: true,
  201. minWidth: 200
  202. },
  203. {
  204. prop: 'processInstance.startUserNickname',
  205. label: '流程发起人',
  206. align: 'center',
  207. showOverflowTooltip: true,
  208. minWidth: 200
  209. },
  210. // {
  211. // prop: 'suspensionState',
  212. // slot: 'suspensionState',
  213. // label: '状态',
  214. // align: 'center',
  215. // showOverflowTooltip: true,
  216. // minWidth: 200
  217. // },
  218. {
  219. prop: 'createTime',
  220. label: '创建时间',
  221. align: 'center',
  222. showOverflowTooltip: true,
  223. minWidth: 180
  224. },
  225. {
  226. columnKey: 'action',
  227. label: '操作',
  228. width: 230,
  229. align: 'center',
  230. resizable: false,
  231. slot: 'action',
  232. showOverflowTooltip: true,
  233. fixed: 'right'
  234. }
  235. ]
  236. };
  237. },
  238. created() {},
  239. methods: {
  240. /* 表格数据源 */
  241. datasource({ page, limit, where, order }) {
  242. return getTodoTaskPage({
  243. pageNo: page,
  244. pageSize: limit,
  245. ...this.params
  246. });
  247. },
  248. /* 刷新表格 */
  249. reload(where) {
  250. this.$refs.table.reload({ page: 1, where });
  251. },
  252. /* 重置 */
  253. reset() {
  254. this.params = { ...defaultParams };
  255. this.reload();
  256. },
  257. /** 处理审批按钮 */
  258. handleAudit(type, row) {
  259. if (type == 'audit') {
  260. if (Object.keys(row.formJson).length) {
  261. this.formParserDialogFlag = true;
  262. this.$nextTick(() => {
  263. this.$refs.formParserDialogRef.open({
  264. // id: row.processInstance.id,
  265. // taskId: row.id,
  266. // taskDefinitionKey: row.taskDefinitionKey,
  267. // formJson:row.formJson,
  268. // valueJsom:row.formJson,
  269. ...row
  270. });
  271. });
  272. } else {
  273. this.$refs.handleTaskRef.open({
  274. id: row.processInstance.id,
  275. businessId: row.businessId,
  276. taskId: row.id,
  277. taskDefinitionKey: row.taskDefinitionKey,
  278. pcHandleRouter: row.pcHandleRouter,
  279. pcViewRouter: row.pcViewRouter
  280. });
  281. }
  282. } else {
  283. this.$refs.detailRef.open(row.processInstance.id);
  284. }
  285. }
  286. }
  287. };
  288. </script>