From 556a06bbd866af3ef2dde46dce3f587ec58c3ca9 Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期二, 26 十一月 2024 12:09:25 +0800
Subject: [PATCH] 流程类型管理
---
src/views/flowable/typemanagement/index.vue | 341 ++++++++++++++++++++++++++++++++++++++++++++++++
src/api/flowable/typeManagement.js | 35 +++++
2 files changed, 376 insertions(+), 0 deletions(-)
diff --git a/src/api/flowable/typeManagement.js b/src/api/flowable/typeManagement.js
new file mode 100644
index 0000000..28e2911
--- /dev/null
+++ b/src/api/flowable/typeManagement.js
@@ -0,0 +1,35 @@
+
+import request from '@/utils/request'
+
+export const getTypeList = (params) => {
+ return request({
+ url: '/flowable_type/list',
+ method: 'get',
+ params: params
+ })
+}
+
+export const addType = (data) => {
+ return request({
+ url: '/flowable_type',
+ method: 'post',
+ data: data
+ })
+}
+
+export const updateType = (data) => {
+ return request({
+ url: '/flowable_type',
+ method: 'put',
+ data: data
+ })
+}
+
+
+export function delType(typeId) {
+ return request({
+ url: '/flowable_type/' + typeId,
+ method: 'delete'
+ })
+}
+
diff --git a/src/views/flowable/typemanagement/index.vue b/src/views/flowable/typemanagement/index.vue
new file mode 100644
index 0000000..1662371
--- /dev/null
+++ b/src/views/flowable/typemanagement/index.vue
@@ -0,0 +1,341 @@
+<template>
+ <div class="app-container">
+ <el-form
+ :model="queryParams"
+ ref="queryForm"
+ size="small"
+ :inline="true"
+ v-show="showSearch"
+ >
+ <el-form-item label="鍚嶇О" prop="name">
+ <el-input
+ v-model="queryParams.name"
+ placeholder="璇疯緭鍏ュ悕绉�"
+ clearable
+ @keyup.enter.native="handleQuery"
+ />
+ </el-form-item>
+ <el-form-item label="鐘舵��" prop="status">
+ <el-select v-model="queryParams.status" placeholder="鐘舵��" clearable>
+ <el-option
+ v-for="dict in dict.type.sys_normal_disable"
+ :key="dict.value"
+ :label="dict.label"
+ :value="dict.value"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item>
+ <el-button
+ type="primary"
+ icon="el-icon-search"
+ size="mini"
+ @click="handleQuery"
+ >鎼滅储</el-button
+ >
+ <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+ >閲嶇疆</el-button
+ >
+ </el-form-item>
+ </el-form>
+
+ <el-row :gutter="10" class="mb8">
+ <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="el-icon-plus"
+ size="mini"
+ @click="handleAdd"
+ v-hasPermi="['system:type:add']"
+ >鏂板</el-button
+ >
+ </el-col>
+ </el-row>
+
+ <el-table
+ v-if="refreshTable"
+ v-loading="loading"
+ :data="typeList"
+ row-key="id"
+ :default-expand-all="isExpandAll"
+ :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
+ >
+ <el-table-column
+ prop="name"
+ label="绫诲瀷鍚嶇О"
+ :show-overflow-tooltip="true"
+ width="200"
+ ></el-table-column>
+ <el-table-column
+ prop="orderNum"
+ label="鎺掑簭"
+ width="60"
+ ></el-table-column>
+ <el-table-column prop="status" label="鐘舵��" width="80">
+ <template slot-scope="scope">
+ <dict-tag
+ :options="dict.type.sys_normal_disable"
+ :value="scope.row.status"
+ />
+ </template>
+ </el-table-column>
+ <el-table-column label="鍒涘缓鏃堕棿" align="center" prop="createTime">
+ <template slot-scope="scope">
+ <span>{{ parseTime(scope.row.createTime) }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ class-name="small-padding fixed-width"
+ >
+ <template slot-scope="scope">
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-edit"
+ @click="handleUpdate(scope.row)"
+ v-hasPermi="['system:type:edit']"
+ >淇敼</el-button
+ >
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-plus"
+ @click="handleAdd(scope.row)"
+ v-hasPermi="['system:type:add']"
+ >鏂板</el-button
+ >
+ <el-button
+ size="mini"
+ type="text"
+ icon="el-icon-delete"
+ @click="handleDelete(scope.row)"
+ v-hasPermi="['system:type:remove']"
+ >鍒犻櫎</el-button
+ >
+ </template>
+ </el-table-column>
+ </el-table>
+
+ <!-- 娣诲姞鎴栦慨鏀瑰璇濇 -->
+ <el-dialog :title="title" :visible.sync="open" width="680px" append-to-body>
+ <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+ <el-row>
+ <el-col :span="24">
+ <el-form-item label="涓婄骇" prop="parentId">
+ <treeselect
+ v-model="form.parentId"
+ :options="typeOptions"
+ :normalizer="normalizer"
+ :show-count="true"
+ placeholder="閫夋嫨涓婄骇"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍚嶇О" prop="name">
+ <el-input v-model="form.name" placeholder="璇疯緭鍏ュ悕绉�" />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏄剧ず鎺掑簭" prop="orderNum">
+ <el-input-number
+ v-model="form.orderNum"
+ controls-position="right"
+ :min="0"
+ />
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item prop="status">
+ <span slot="label"> 鐘舵�� </span>
+ <el-radio-group v-model="form.status">
+ <el-radio
+ v-for="dict in dict.type.sys_normal_disable"
+ :key="dict.value"
+ :label="dict.value"
+ >{{ dict.label }}</el-radio
+ >
+ </el-radio-group>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <div slot="footer" class="dialog-footer">
+ <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="cancel">鍙� 娑�</el-button>
+ </div>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import Treeselect from "@riophae/vue-treeselect";
+import "@riophae/vue-treeselect/dist/vue-treeselect.css";
+import {
+ getTypeList,
+ addType,
+ updateType,
+ delType,
+} from "@/api/flowable/typeManagement";
+
+export default {
+ dicts: ["sys_show_hide", "sys_normal_disable"],
+ components: { Treeselect },
+ data() {
+ return {
+ // 閬僵灞�
+ loading: true,
+ // 鏄剧ず鎼滅储鏉′欢
+ showSearch: true,
+ // 琛ㄦ牸鏍戞暟鎹�
+ typeList: [],
+ // 鏍戦�夐」
+ typeOptions: [],
+ // 寮瑰嚭灞傛爣棰�
+ title: "",
+ // 鏄惁鏄剧ず寮瑰嚭灞�
+ open: false,
+ // 鏄惁灞曞紑锛岄粯璁ゅ叏閮ㄦ姌鍙�
+ isExpandAll: false,
+ // 閲嶆柊娓叉煋琛ㄦ牸鐘舵��
+ refreshTable: true,
+ // 鏌ヨ鍙傛暟
+ queryParams: {
+ name: undefined,
+ status: undefined,
+ },
+ // 琛ㄥ崟鍙傛暟
+ form: {},
+ // 琛ㄥ崟鏍¢獙
+ rules: {
+ name: [{ required: true, message: "鍚嶇О涓嶈兘涓虹┖", trigger: "blur" }],
+ },
+ };
+ },
+ created() {
+ this.getList();
+ },
+ methods: {
+ getList() {
+ this.loading = true;
+ getTypeList(this.queryParams).then((response) => {
+ this.typeList = this.handleTree(response.data, "id");
+ this.loading = false;
+ });
+ },
+ /** 杞崲鏁版嵁缁撴瀯 */
+ normalizer(node) {
+ if (node.children && !node.children.length) {
+ delete node.children;
+ }
+ return {
+ id: node.id,
+ label: node.name,
+ children: node.children,
+ };
+ },
+ /** 鏌ヨ涓嬫媺鏍戠粨鏋� */
+ getTreeselect() {
+ getTypeList().then((response) => {
+ this.typeOptions = [];
+ const type = { id: 0, name: "涓荤被鐩�", children: [] };
+ type.children = this.handleTree(response.data, "id");
+ this.typeOptions.push(type);
+ });
+ },
+ // 鍙栨秷鎸夐挳
+ cancel() {
+ this.open = false;
+ this.reset();
+ },
+ // 琛ㄥ崟閲嶇疆
+ reset() {
+ this.form = {
+ id: undefined,
+ parentId: 0,
+ name: undefined,
+ orderNum: undefined,
+ status: "0",
+ };
+ this.resetForm("form");
+ },
+ /** 鎼滅储鎸夐挳鎿嶄綔 */
+ handleQuery() {
+ this.getList();
+ },
+ /** 閲嶇疆鎸夐挳鎿嶄綔 */
+ resetQuery() {
+ this.resetForm("queryForm");
+ this.handleQuery();
+ },
+ /** 鏂板鎸夐挳鎿嶄綔 */
+ handleAdd(row) {
+ this.reset();
+ this.getTreeselect();
+ if (row != null && row.id) {
+ this.form.parentId = row.id;
+ } else {
+ this.form.parentId = 0;
+ }
+ this.open = true;
+ this.title = "娣诲姞";
+ },
+ /** 灞曞紑/鎶樺彔鎿嶄綔 */
+ toggleExpandAll() {
+ this.refreshTable = false;
+ this.isExpandAll = !this.isExpandAll;
+ this.$nextTick(() => {
+ this.refreshTable = true;
+ });
+ },
+ /** 淇敼鎸夐挳鎿嶄綔 */
+ handleUpdate(row) {
+ this.reset();
+ this.getTreeselect();
+
+ this.form = row;
+ this.open = true;
+ this.title = "淇敼";
+ },
+ /** 鎻愪氦鎸夐挳 */
+ submitForm: function () {
+ this.$refs["form"].validate((valid) => {
+ if (valid) {
+ if (this.form.id != undefined) {
+ updateType(this.form).then((response) => {
+ this.$modal.msgSuccess("淇敼鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ } else {
+ addType(this.form).then((response) => {
+ this.$modal.msgSuccess("鏂板鎴愬姛");
+ this.open = false;
+ this.getList();
+ });
+ }
+ }
+ });
+ },
+ /** 鍒犻櫎鎸夐挳鎿嶄綔 */
+ handleDelete(row) {
+ this.$modal
+ .confirm('鏄惁纭鍒犻櫎鍚嶇О涓�"' + row.name + '"鐨勬暟鎹」锛�')
+ .then(function () {
+ return delType(row.id);
+ })
+ .then(() => {
+ this.getList();
+ this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+ })
+ .catch(() => {});
+ },
+ },
+};
+</script>
+
+<style>
+</style>
\ No newline at end of file
--
Gitblit v1.8.0