gaoshp
2025-06-12 f3af687c2f3cb7ce99af4bf0f271932889c3c291
新增我的流程页面
已添加1个文件
339 ■■■■■ 文件已修改
src/views/flow/todolist.vue 339 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/flow/todolist.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,339 @@
<template>
    <basic-container>
        <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="form"
            :permission="permissionList" :before-open="beforeOpen" :before-close="beforeClose" @row-del="rowDel"
             @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
            @refresh-change="refreshChange" @on-load="onLoad">
            <template #menu-left>
                <el-button type="primary"  plain
                    @click="reassign">重新指派
                </el-button>
            </template>
            <!-- <template #source="{ row }">
                <div style="text-align: center">
                    <i :class="row.source" />
                </div>
            </template> -->
        </avue-crud>
    </basic-container>
</template>
<script>
import { getLazyList, remove, update, add, getMenu } from '@/api/system/menu';
import { mapGetters } from 'vuex';
import iconList from '@/config/iconList';
import func from '@/utils/func';
import { getMenuTree } from '@/api/system/menu';
export default {
    data() {
        return {
            form: {},
            query: {},
            loading: true,
            selectionList: [],
            parentId: 0,
            page: {
                pageSize: 10,
                currentPage: 1,
                total: 0,
            },
            option: {
                addBtn: false,
                lazy: true,
                tip: false,
                simplePage: true,
                searchShow: true,
                searchMenuSpan: 6,
                dialogWidth: '60%',
                tree: true,
                border: true,
                index: true,
                selection: true,
                viewBtn: true,
                menuWidth: 320,
                dialogClickModal: false,
                column: [
                    {
                        label: '创建时间',
                        prop: 'time',
                        width: 300,
                        type: 'datetime',
                        search: true,
                        searchRange: true,
                        searchSpan: 8,
                        hide: true,
                    },
                    {
                        label: '关键字',
                        prop: 'keyWord',
                        width: 300,
                        search: true,
                        searchType: 'input',
                        hide: true,
                        dicData: [
                            {
                                label: '涉密网程序',
                                value: 1,
                            },
                            {
                                label: '工控网车床程序',
                                value: 2,
                            },
                        ],
                    },
                    {
                        label: '编号',
                        prop: 'name',
                        width: 300,
                    },
                    {
                        label: '流程类型',
                        prop: 'path',
                        rules: [
                            {
                                required: true,
                                message: '请输入路由地址',
                                trigger: 'blur',
                            },
                        ],
                    },
                    {
                        label: '实例编号',
                        type: 'tree',
                    },
                    {
                        label: '流程实例名',
                        type: 'tree',
                    },
                    {
                        label: '机床',
                        type: 'tree',
                    },
                    {
                        label: '创建人',
                        type: 'tree',
                    },
                    {
                        label: '创建时间',
                        type: 'tree',
                    },
                    {
                        label: '到达时间',
                        type: 'tree',
                    },
                    {
                        label: '到达描述',
                        type: 'tree',
                    },
                    {
                        label: '文件',
                        type: 'tree',
                    },
                    {
                        label: '到达时间',
                        type: 'tree',
                    },
                ],
            },
            data: [],
        };
    },
    watch: {
        'form.category'() {
            const category = func.toInt(this.form.category);
            this.$refs.crud.option.column.filter(item => {
                if (item.prop === 'path') {
                    item.rules[0].required = category === 1;
                }
                if (item.prop === 'isOpen') {
                    item.disabled = category === 2;
                }
            });
        },
    },
    computed: {
        ...mapGetters(['userInfo', 'permission']),
        permissionList() {
            return {
                addBtn: this.validData(this.permission.menu_add, false),
                viewBtn: this.validData(this.permission.menu_view, false),
                delBtn: this.validData(this.permission.menu_delete, false),
                editBtn: this.validData(this.permission.menu_edit, false),
            };
        },
        ids() {
            let ids = [];
            this.selectionList.forEach(ele => {
                ids.push(ele.id);
            });
            return ids.join(',');
        },
    },
    methods: {
        reassign () {// é‡æ–°æŒ‡æ´¾
        },
        initData() {
            getMenuTree().then(res => {
                const column = this.findObject(this.option.column, 'parentId');
                column.dicData = res.data.data;
            });
        },
        handleAdd(row) {
            this.parentId = row.id;
            const column = this.findObject(this.option.column, 'parentId');
            column.value = row.id;
            column.addDisabled = true;
            this.$refs.crud.rowAdd();
        },
        rowSave(row, done, loading) {
            add(row).then(
                res => {
                    // èŽ·å–æ–°å¢žæ•°æ®çš„ç›¸å…³å­—æ®µ
                    const data = res.data.data;
                    row.id = data.id;
                    this.$message({
                        type: 'success',
                        message: '操作成功!',
                    });
                    // æ•°æ®å›žè°ƒè¿›è¡Œåˆ·æ–°
                    done(row);
                },
                error => {
                    window.console.log(error);
                    loading();
                }
            );
        },
        rowUpdate(row, index, done, loading) {
            update(row).then(
                () => {
                    this.$message({
                        type: 'success',
                        message: '操作成功!',
                    });
                    // æ•°æ®å›žè°ƒè¿›è¡Œåˆ·æ–°
                    done(row);
                },
                error => {
                    window.console.log(error);
                    loading();
                }
            );
        },
        rowDel(row, index, done) {
            this.$confirm('确定将选择数据删除?', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning',
            })
                .then(() => {
                    return remove(row.id);
                })
                .then(() => {
                    this.$message({
                        type: 'success',
                        message: '操作成功!',
                    });
                    // æ•°æ®å›žè°ƒè¿›è¡Œåˆ·æ–°
                    done(row);
                });
        },
        handleDelete() {
            if (this.selectionList.length === 0) {
                this.$message.warning('请选择至少一条数据');
                return;
            }
            this.$confirm('确定将选择数据删除?', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning',
            })
                .then(() => {
                    return remove(this.ids);
                })
                .then(() => {
                    // åˆ·æ–°è¡¨æ ¼æ•°æ®å¹¶é‡è½½
                    this.data = [];
                    this.parentId = 0;
                    this.$refs.crud.refreshTable();
                    this.$refs.crud.toggleSelection();
                    // è¡¨æ ¼æ•°æ®é‡è½½
                    this.onLoad(this.page);
                    this.$message({
                        type: 'success',
                        message: '操作成功!',
                    });
                });
        },
        searchReset() {
            this.query = {};
            this.parentId = 0;
            this.onLoad(this.page);
        },
        searchChange(params, done) {
            this.query = params;
            this.parentId = '';
            this.page.currentPage = 1;
            this.onLoad(this.page, params);
            done();
        },
        selectionChange(list) {
            this.selectionList = list;
        },
        selectionClear() {
            this.selectionList = [];
            this.$refs.crud.toggleSelection();
        },
        beforeOpen(done, type) {
            if (['add', 'edit'].includes(type)) {
                this.initData();
            }
            if (['edit', 'view'].includes(type)) {
                getMenu(this.form.id).then(res => {
                    this.form = Object.assign(res.data.data, {
                        hasChildren: this.form.hasChildren,
                    });
                });
            }
            done();
        },
        beforeClose(done) {
            this.parentId = '';
            const column = this.findObject(this.option.column, 'parentId');
            column.value = '';
            column.addDisabled = false;
            done();
        },
        currentChange(currentPage) {
            this.page.currentPage = currentPage;
        },
        sizeChange(pageSize) {
            this.page.pageSize = pageSize;
        },
        refreshChange() {
            this.onLoad(this.page, this.query);
        },
        onLoad(page, params = {}) {
            this.loading = true;
            getLazyList(this.parentId, Object.assign(params, this.query)).then(res => {
                this.data = res.data.data;
                this.loading = false;
                this.selectionClear();
            });
        },
        treeLoad(tree, treeNode, resolve) {
            const parentId = tree.id;
            // getLazyList(parentId).then(res => {
            //     resolve(res.data.data);
            // });
        },
    },
};
</script>
<style></style>