index.vue 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  1. <template>
  2. <div class="app-container">
  3. <el-form
  4. :model="queryParams"
  5. ref="queryForm"
  6. size="small"
  7. :inline="true"
  8. v-show="showSearch"
  9. label-width="68px"
  10. >
  11. <el-form-item label="流程名称" prop="processName">
  12. <el-input
  13. v-model="queryParams.processName"
  14. placeholder="请输入流程名称"
  15. clearable
  16. @keyup.enter.native="handleQuery"
  17. />
  18. </el-form-item>
  19. <el-form-item label="流程别名" prop="processKey">
  20. <el-input
  21. v-model="queryParams.processKey"
  22. placeholder="请输入流程别名"
  23. clearable
  24. @keyup.enter.native="handleQuery"
  25. />
  26. </el-form-item>
  27. <el-form-item label="流程开启状态" prop="processOpneState">
  28. <el-input
  29. v-model="queryParams.processOpneState"
  30. placeholder="请输入流程开启状态"
  31. clearable
  32. @keyup.enter.native="handleQuery"
  33. />
  34. </el-form-item>
  35. <el-form-item label="流程部署时间" prop="processDeployTime">
  36. <el-date-picker
  37. clearable
  38. v-model="queryParams.processDeployTime"
  39. type="date"
  40. value-format="yyyy-MM-dd"
  41. placeholder="请选择流程部署时间"
  42. >
  43. </el-date-picker>
  44. </el-form-item>
  45. <el-form-item label="版本状态" prop="processVersion">
  46. <el-input
  47. v-model="queryParams.processVersion"
  48. placeholder="请输入版本状态"
  49. clearable
  50. @keyup.enter.native="handleQuery"
  51. />
  52. </el-form-item>
  53. <el-form-item label="xml文件存放地址" prop="processXmlPath">
  54. <el-input
  55. v-model="queryParams.processXmlPath"
  56. placeholder="请输入xml文件存放地址"
  57. clearable
  58. @keyup.enter.native="handleQuery"
  59. />
  60. </el-form-item>
  61. <el-form-item>
  62. <el-button
  63. type="primary"
  64. icon="el-icon-search"
  65. size="mini"
  66. @click="handleQuery"
  67. >搜索</el-button
  68. >
  69. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  70. >重置</el-button
  71. >
  72. </el-form-item>
  73. </el-form>
  74. <el-row :gutter="10" class="mb8">
  75. <el-col :span="1.5">
  76. <el-button
  77. type="primary"
  78. plain
  79. icon="el-icon-plus"
  80. size="mini"
  81. @click="handleAdd"
  82. v-hasPermi="['system:process:add']"
  83. >新增</el-button
  84. >
  85. </el-col>
  86. <el-col :span="1.5">
  87. <el-button
  88. type="success"
  89. plain
  90. icon="el-icon-edit"
  91. size="mini"
  92. :disabled="single"
  93. @click="handleUpdate"
  94. v-hasPermi="['system:process:edit']"
  95. >修改</el-button
  96. >
  97. </el-col>
  98. <el-col :span="1.5">
  99. <el-button
  100. type="danger"
  101. plain
  102. icon="el-icon-delete"
  103. size="mini"
  104. :disabled="multiple"
  105. @click="handleDelete"
  106. v-hasPermi="['system:process:remove']"
  107. >删除</el-button
  108. >
  109. </el-col>
  110. <el-col :span="1.5">
  111. <el-button
  112. type="warning"
  113. plain
  114. icon="el-icon-download"
  115. size="mini"
  116. @click="handleExport"
  117. v-hasPermi="['system:process:export']"
  118. >导出</el-button
  119. >
  120. </el-col>
  121. <right-toolbar
  122. :showSearch.sync="showSearch"
  123. @queryTable="getList"
  124. ></right-toolbar>
  125. </el-row>
  126. <el-table
  127. v-loading="loading"
  128. :data="processList"
  129. @selection-change="handleSelectionChange"
  130. >
  131. <el-table-column type="selection" width="55" align="center" />
  132. <el-table-column label="主键" align="center" prop="processId" />
  133. <el-table-column label="流程名称" align="center" prop="processName" />
  134. <el-table-column label="流程别名" align="center" prop="processKey" />
  135. <el-table-column
  136. label="流程状态"
  137. align="center"
  138. prop="processOpneState"
  139. />
  140. <el-table-column label="流程类型" align="center" prop="processType" />
  141. <el-table-column
  142. label="流程部署时间"
  143. align="center"
  144. prop="processDeployTime"
  145. width="180"
  146. >
  147. <template slot-scope="scope">
  148. <span>{{
  149. parseTime(scope.row.processDeployTime, "{y}-{m}-{d}")
  150. }}</span>
  151. </template>
  152. </el-table-column>
  153. <el-table-column
  154. label="启动事件类型"
  155. align="center"
  156. prop="startEventType"
  157. />
  158. <el-table-column label="版本注释" align="center" prop="note" />
  159. <el-table-column label="版本状态" align="center" prop="processVersion" />
  160. <!-- <el-table-column label="节点json串" align="center" prop="processJson" /> -->
  161. <!-- <el-table-column
  162. label="xml文件存放地址"
  163. align="center"
  164. prop="processXmlPath"
  165. /> -->
  166. <el-table-column label="备注" align="center" prop="remark" />
  167. <el-table-column
  168. label="操作"
  169. align="center"
  170. class-name="small-padding fixed-width"
  171. >
  172. <template slot-scope="scope">
  173. <el-dropdown>
  174. <el-button type="warning" plain size="small">
  175. 处理<i class="el-icon-arrow-down el-icon--right"></i>
  176. </el-button>
  177. <el-dropdown-menu slot="dropdown">
  178. <el-dropdown-item
  179. ><el-button
  180. size="mini"
  181. type="text"
  182. icon="el-icon-edit"
  183. @click="handleUpdate(scope.row)"
  184. v-hasPermi="['system:user:edit']"
  185. >修改</el-button
  186. ></el-dropdown-item
  187. >
  188. <el-dropdown-item
  189. ><el-button
  190. size="mini"
  191. type="text"
  192. icon="el-icon-edit"
  193. @click="handleEditbpmn(scope.row)"
  194. v-hasPermi="['system:user:edit']"
  195. >编辑流程图</el-button
  196. ></el-dropdown-item
  197. >
  198. <el-dropdown-item
  199. ><el-button
  200. size="mini"
  201. type="text"
  202. icon="el-icon-delete"
  203. @click="handleDelete(scope.row)"
  204. v-hasPermi="['system:user:remove']"
  205. >删除</el-button
  206. >
  207. </el-dropdown-item>
  208. </el-dropdown-menu>
  209. </el-dropdown>
  210. </template>
  211. </el-table-column>
  212. </el-table>
  213. <pagination
  214. v-show="total > 0"
  215. :total="total"
  216. :page.sync="queryParams.pageNum"
  217. :limit.sync="queryParams.pageSize"
  218. @pagination="getList"
  219. />
  220. <!-- 添加或修改流程定义对话框 -->
  221. <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  222. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  223. <el-form-item label="流程名称" prop="processName">
  224. <el-input v-model="form.processName" placeholder="请输入流程名称" />
  225. </el-form-item>
  226. <el-form-item label="流程别名" prop="processKey">
  227. <el-input v-model="form.processKey" placeholder="请输入流程别名" />
  228. </el-form-item>
  229. <el-form-item label="流程开启状态" prop="processOpneState">
  230. <el-input
  231. v-model="form.processOpneState"
  232. placeholder="请输入流程开启状态"
  233. />
  234. </el-form-item>
  235. <el-form-item label="流程部署时间" prop="processDeployTime">
  236. <el-date-picker
  237. clearable
  238. v-model="form.processDeployTime"
  239. type="date"
  240. value-format="yyyy-MM-dd"
  241. placeholder="请选择流程部署时间"
  242. >
  243. </el-date-picker>
  244. </el-form-item>
  245. <el-form-item label="版本注释" prop="note">
  246. <el-input
  247. v-model="form.note"
  248. type="textarea"
  249. placeholder="请输入内容"
  250. />
  251. </el-form-item>
  252. <el-form-item label="版本状态" prop="processVersion">
  253. <el-input
  254. v-model="form.processVersion"
  255. placeholder="请输入版本状态"
  256. />
  257. </el-form-item>
  258. <el-form-item label="xml文件存放地址" prop="processXmlPath">
  259. <el-input
  260. v-model="form.processXmlPath"
  261. placeholder="请输入xml文件存放地址"
  262. />
  263. </el-form-item>
  264. <el-form-item label="删除标志" prop="delFlag">
  265. <el-input v-model="form.delFlag" placeholder="请输入删除标志" />
  266. </el-form-item>
  267. <el-form-item label="备注" prop="remark">
  268. <el-input v-model="form.remark" placeholder="请输入备注" />
  269. </el-form-item>
  270. </el-form>
  271. <div slot="footer" class="dialog-footer">
  272. <el-button type="primary" @click="submitForm">确 定</el-button>
  273. <el-button @click="cancel">取 消</el-button>
  274. </div>
  275. </el-dialog>
  276. </div>
  277. </template>
  278. <script>
  279. import {
  280. listProcess,
  281. getProcess,
  282. delProcess,
  283. addProcess,
  284. updateProcess,
  285. } from "@/api/bpmprocess/process";
  286. export default {
  287. name: "Process",
  288. data() {
  289. return {
  290. // 遮罩层
  291. loading: true,
  292. // 选中数组
  293. ids: [],
  294. // 非单个禁用
  295. single: true,
  296. // 非多个禁用
  297. multiple: true,
  298. // 显示搜索条件
  299. showSearch: true,
  300. // 总条数
  301. total: 0,
  302. // 流程定义表格数据
  303. processList: [],
  304. // 弹出层标题
  305. title: "",
  306. // 是否显示弹出层
  307. open: false,
  308. // 查询参数
  309. queryParams: {
  310. pageNum: 1,
  311. pageSize: 10,
  312. processName: null,
  313. processKey: null,
  314. processOpneState: null,
  315. processType: null,
  316. processDeployTime: null,
  317. startEventType: null,
  318. note: null,
  319. processVersion: null,
  320. processXml: null,
  321. processJson: null,
  322. processXmlContent: null,
  323. processXmlPath: null,
  324. },
  325. // 表单参数
  326. form: {},
  327. // 表单校验
  328. rules: {},
  329. };
  330. },
  331. created() {
  332. this.getList();
  333. },
  334. methods: {
  335. /** 查询流程定义列表 */
  336. getList() {
  337. this.loading = true;
  338. listProcess(this.queryParams).then((response) => {
  339. this.processList = response.rows;
  340. this.total = response.total;
  341. this.loading = false;
  342. });
  343. },
  344. // 取消按钮
  345. cancel() {
  346. this.open = false;
  347. this.reset();
  348. },
  349. // 表单重置
  350. reset() {
  351. this.form = {
  352. processId: null,
  353. processName: null,
  354. processKey: null,
  355. processOpneState: null,
  356. processType: null,
  357. processDeployTime: null,
  358. startEventType: null,
  359. note: null,
  360. processVersion: null,
  361. processXml: null,
  362. processJson: null,
  363. processXmlContent: null,
  364. processXmlPath: null,
  365. createBy: null,
  366. createTime: null,
  367. updateBy: null,
  368. updateTime: null,
  369. delFlag: null,
  370. remark: null,
  371. };
  372. this.resetForm("form");
  373. },
  374. /** 搜索按钮操作 */
  375. handleQuery() {
  376. this.queryParams.pageNum = 1;
  377. this.getList();
  378. },
  379. /** 重置按钮操作 */
  380. resetQuery() {
  381. this.resetForm("queryForm");
  382. this.handleQuery();
  383. },
  384. // 多选框选中数据
  385. handleSelectionChange(selection) {
  386. this.ids = selection.map((item) => item.processId);
  387. this.single = selection.length !== 1;
  388. this.multiple = !selection.length;
  389. },
  390. /** 新增按钮操作 */
  391. handleAdd() {
  392. this.reset();
  393. this.open = true;
  394. this.title = "添加流程定义";
  395. },
  396. /** 修改按钮操作 */
  397. handleUpdate(row) {
  398. this.reset();
  399. const processId = row.processId || this.ids;
  400. getProcess(processId).then((response) => {
  401. this.form = response.data;
  402. this.open = true;
  403. this.title = "修改流程定义";
  404. });
  405. },
  406. /** */
  407. handleEditbpmn(row) {
  408. this.$router.push({
  409. path: "/processModeling/bpmnPro",
  410. query: {
  411. id: row.processId,
  412. },
  413. });
  414. },
  415. /** 提交按钮 */
  416. submitForm() {
  417. this.$refs["form"].validate((valid) => {
  418. if (valid) {
  419. if (this.form.processId != null) {
  420. updateProcess(this.form).then((response) => {
  421. this.$modal.msgSuccess("修改成功");
  422. this.open = false;
  423. this.getList();
  424. });
  425. } else {
  426. addProcess(this.form).then((response) => {
  427. this.$modal.msgSuccess("新增成功");
  428. this.open = false;
  429. this.getList();
  430. });
  431. }
  432. }
  433. });
  434. },
  435. /** 删除按钮操作 */
  436. handleDelete(row) {
  437. const processIds = row.processId || this.ids;
  438. this.$modal
  439. .confirm('是否确认删除流程定义编号为"' + processIds + '"的数据项?')
  440. .then(function () {
  441. return delProcess(processIds);
  442. })
  443. .then(() => {
  444. this.getList();
  445. this.$modal.msgSuccess("删除成功");
  446. })
  447. .catch(() => {});
  448. },
  449. /** 导出按钮操作 */
  450. handleExport() {
  451. this.download(
  452. "system/process/export",
  453. {
  454. ...this.queryParams,
  455. },
  456. `process_${new Date().getTime()}.xlsx`
  457. );
  458. },
  459. },
  460. };
  461. </script>