ExecutionList.vue 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366
  1. <template>
  2. <div class="container-fluid">
  3. <Navbar title="执行列表" :is-go-back="false" />
  4. <ul id="myTab" class="nav nav-tabs">
  5. <li class="active">
  6. <a data-toggle="tab" @click="changeSelectTab('HTTP')">HTTP实例</a>
  7. </li>
  8. <li>
  9. <a data-toggle="tab" @click="changeSelectTab('PROCESS_REPORT')">流程报表实例</a>
  10. </li>
  11. <li>
  12. <a data-toggle="tab" @click="changeSelectTab('PROCESS')">流程任务</a>
  13. </li>
  14. </ul>
  15. <div id="myTabContent" class="tab-content">
  16. <div>
  17. <div class="form-inline">
  18. <div class="form-group">
  19. <label>选择任务:</label>
  20. <select
  21. v-model="selectedTaskDefineId"
  22. class="form-control"
  23. @change="changeFilterData"
  24. >
  25. <option
  26. v-for="(data, index) in taskDefineDtos"
  27. :key="index"
  28. :value="data.id"
  29. >
  30. {{ data.taskName }}
  31. </option>
  32. </select>
  33. </div>
  34. <div class="form-group">
  35. <label>选择运行状态:</label>
  36. <select
  37. v-model="selectedTaskInstanceStatus"
  38. class="form-control"
  39. @change="changeFilterData"
  40. >
  41. <option
  42. v-for="(data, index) in taskInstanceStatus"
  43. :key="index"
  44. :value="data.value"
  45. >
  46. {{ data.label }}
  47. </option>
  48. </select>
  49. </div>
  50. <div class="form-group">
  51. <label>开始时间:</label>
  52. <DateTime v-model="startDate" />
  53. </div>
  54. <div class="form-group">
  55. <label>结束时间:</label>
  56. <DateTime v-model="endDate" />
  57. </div>
  58. <div class="form-group">
  59. <button class="btn btn-info" @click="changeFilterData">查询</button>
  60. </div>
  61. </div>
  62. <div>
  63. <CommonTable
  64. ref="table"
  65. :columns="columns"
  66. :data-source="taskInstanceDtos"
  67. :total="pagination.total"
  68. @get-pager="getPageParams"
  69. >
  70. <template #headerCell="{ column }">
  71. <template v-if="column.key == 'httpRequestType'">
  72. <span>
  73. {{
  74. taskType == "HTTP"
  75. ? "HTTP请求类型"
  76. : taskType == "PROCESS"
  77. ? "流程编号"
  78. : "流程报表文件编码"
  79. }}
  80. </span>
  81. </template>
  82. <template v-if="column.key == 'httpRequestUrl'">
  83. <span>
  84. {{
  85. taskType == "HTTP"
  86. ? "HTTP请求路径"
  87. : taskType == "PROCESS"
  88. ? "流程任务名称"
  89. : "流程报表名称"
  90. }}
  91. </span>
  92. </template>
  93. </template>
  94. <template #bodyCell="{ column, record }">
  95. <template v-if="column.key == 'taskType'">
  96. {{
  97. record.taskType == null
  98. ? ""
  99. : record.taskType == "HTTP"
  100. ? "HTTP请求"
  101. : record.taskType == "PROCESS"
  102. ? "流程任务"
  103. : "流程报表"
  104. }}
  105. </template>
  106. <template v-if="column.key == 'httpRequestType'">
  107. {{
  108. record.taskType == "HTTP"
  109. ? record.httpRequestType
  110. : taskType == "PROCESS"
  111. ? record.processNo
  112. : record.processReportNo
  113. }}
  114. </template>
  115. <template v-if="column.key == 'httpRequestUrl'">
  116. {{
  117. record.taskType == "HTTP"
  118. ? record.httpRequestUrl
  119. : taskType == "PROCESS"
  120. ? record.taskName
  121. : record.processReportName
  122. }}
  123. </template>
  124. <template v-if="column.key == 'taskInstanceStatus'">
  125. {{
  126. record.taskInstanceStatus == "SUCCESS"
  127. ? "成功"
  128. : record.taskInstanceStatus == "IN_OPERATION"
  129. ? "运行中"
  130. : "失败"
  131. }}
  132. </template>
  133. </template>
  134. </CommonTable>
  135. </div>
  136. </div>
  137. </div>
  138. <Loading v-if="loading" />
  139. </div>
  140. </template>
  141. <script>
  142. import Common from '../common/Common.js';
  143. import TaskInstanceResource from '../api/base/TaskInstanceResource.js';
  144. import TaskDefineResource from '../api/task/TaskDefineResource.js';
  145. import vSelect from 'vue-select';
  146. import 'vue-select/dist/vue-select.css';
  147. import CommonTable from '../common/CommonTable.vue';
  148. export default {
  149. components: {
  150. vSelect,
  151. CommonTable,
  152. },
  153. data: function () {
  154. return {
  155. columns: [
  156. {
  157. title: '序号',
  158. dataIndex: 'index',
  159. key: 'index',
  160. customRender: ({ text, record, index }) => `${index + 1}`,
  161. },
  162. {
  163. title: '任务名',
  164. dataIndex: 'taskName',
  165. key: 'taskName',
  166. },
  167. {
  168. title: '任务类型',
  169. dataIndex: 'taskType',
  170. key: 'taskType',
  171. },
  172. {
  173. title: 'HTTP请求类型',
  174. dataIndex: 'httpRequestType',
  175. key: 'httpRequestType',
  176. width: 180,
  177. },
  178. {
  179. title: 'HTTP请求路径',
  180. dataIndex: 'httpRequestUrl',
  181. key: 'httpRequestUrl',
  182. width: 180,
  183. },
  184. {
  185. title: '开始时间',
  186. dataIndex: 'startDate',
  187. key: 'startDate',
  188. },
  189. {
  190. title: '结束时间',
  191. dataIndex: 'endDate',
  192. key: 'endDate',
  193. },
  194. {
  195. title: '运行状态',
  196. dataIndex: 'taskInstanceStatus',
  197. key: 'taskInstanceStatus',
  198. },
  199. {
  200. title: '运行结果',
  201. dataIndex: 'operationResult',
  202. key: 'operationResult',
  203. width: 180,
  204. fixed: 'right',
  205. ellipsis: true,
  206. },
  207. ].map(item => ({ ...item, align: 'center' })),
  208. pagination: {
  209. total: 0,
  210. per_page: Common.pageSize, // required
  211. current_page: 1, // required
  212. last_page: 0, // required
  213. },
  214. loading: false,
  215. taskType: 'HTTP',
  216. selectedTaskDefineId: null,
  217. selectedTaskInstanceStatus: 'ALL',
  218. taskDefineDtos: [],
  219. taskInstanceDtos: [],
  220. taskInstanceStatus: [
  221. {
  222. value: 'ALL',
  223. label: '全部',
  224. },
  225. {
  226. value: 'SUCCESS',
  227. label: '成功',
  228. },
  229. {
  230. value: 'IN_OPERATION',
  231. label: '运行中',
  232. },
  233. {
  234. value: 'FAIL',
  235. label: '失败',
  236. },
  237. ],
  238. startDate: null,
  239. endDate: null,
  240. };
  241. },
  242. mounted: function () {
  243. var _self = this;
  244. _self.getAllTaskDefineDtos();
  245. _self.getDatas();
  246. },
  247. methods: {
  248. getPageParams: function (start, length) {
  249. this.pagination.current_page = start;
  250. this.pagination.per_page = length;
  251. this.getDatas();
  252. },
  253. changeSelectTab: function (value) {
  254. var _self = this;
  255. _self.taskType = value;
  256. _self.selectedTaskDefineId = null;
  257. _self.getAllTaskDefineDtos();
  258. _self.getDatas();
  259. },
  260. changeFilterData: function () {
  261. var _self = this;
  262. _self.$refs.table.backFirstPage();
  263. },
  264. getAllTaskDefineDtos: function () {
  265. var _self = this;
  266. var taskDefineSelectRequest = {
  267. id: null,
  268. taskName: null,
  269. taskDescription: null,
  270. taskType: _self.taskType,
  271. start: 0,
  272. length: 0,
  273. };
  274. _self.taskDefineDtos.splice(0, _self.taskDefineDtos.length);
  275. TaskDefineResource.getAllTaskDefine(taskDefineSelectRequest).then(
  276. successData => {
  277. // console.log(successData, 'getAllTaskDefine');
  278. if (successData && successData.errorCode == 0) {
  279. _self.taskDefineDtos = successData.datas;
  280. // _self.pagination.total = successData.total;
  281. }
  282. },
  283. errorData => {
  284. Common.processException(errorData);
  285. },
  286. );
  287. },
  288. getDatas: function () {
  289. var _self = this;
  290. var selectedTaskInstanceStatus = null;
  291. if (_self.selectedTaskInstanceStatus != 'ALL') {
  292. selectedTaskInstanceStatus = _self.selectedTaskInstanceStatus;
  293. }
  294. var taskInstanceQueryDto = {
  295. taskDefineId: _self.selectedTaskDefineId,
  296. taskName: null,
  297. taskDescription: null,
  298. taskType: _self.taskType,
  299. startDate: _self.startDate,
  300. endDate: _self.endDate,
  301. taskInstanceStatus: selectedTaskInstanceStatus,
  302. start: (this.pagination.current_page - 1) * this.pagination.per_page,
  303. length: this.pagination.per_page,
  304. };
  305. _self.loading = true;
  306. TaskInstanceResource.list(taskInstanceQueryDto).then(
  307. successData => {
  308. // console.log(successData, 'list');
  309. _self.loading = false;
  310. if (successData && successData.errorCode == 0) {
  311. _self.taskInstanceDtos = successData.datas;
  312. _self.pagination.total = successData.total;
  313. _self.pagination.last_page = Math.ceil(
  314. successData.total / _self.pagination.per_page,
  315. );
  316. }
  317. },
  318. errorData => {
  319. _self.loading = false;
  320. Common.processException(errorData);
  321. },
  322. );
  323. },
  324. },
  325. };
  326. </script>
  327. <style scoped>
  328. .flex-content {
  329. width: 100%;
  330. /*视口被均分为100单位的vh 占据整个窗口,扣掉顶部topNav的距离后,计算得到container的高度*/
  331. height: calc(100vh - 150px);
  332. }
  333. .fixed-table {
  334. table-layout: fixed;
  335. width: 1050px !important;
  336. min-width: 1050px !important;
  337. }
  338. table.fixed-table tr {
  339. height: 40px;
  340. }
  341. #myTabContent {
  342. margin-top: 8px;
  343. }
  344. .form-group {
  345. margin-right: 8px;
  346. }
  347. table.fixed-table th,
  348. table.fixed-table td {
  349. overflow: hidden;
  350. white-space: nowrap;
  351. text-overflow: ellipsis;
  352. }
  353. </style>