index.vue 9.2 KB

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