shj
2022-08-17 d50aa9534c1bd65dd68d2f96039e06d861a086cf
对接
已修改2个文件
已添加2个文件
517 ■■■■■ 文件已修改
src/api/goalManagement/index.ts 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/DailogClass/index.vue 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/goalManagement/targetClassification/index.vue 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/goalManagement/targetDecompositionYear/component/DailogAdd.vue 58 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/goalManagement/index.ts
@@ -256,8 +256,8 @@
                data: params
            })
        },
         //   目标检查上报 查看审批流程
         getworkApproveListCode: (params: object) => {
        //   目标检查上报 查看审批流程
        getworkApproveListCode: (params: object) => {
            return request({
                url: "/targetDutyWorkApprove/page/list",
                method: "post",
@@ -288,16 +288,16 @@
                data: params
            })
        },
         //   目标检查上报 新增数据
         getworkApproveUpdata: (params: object) => {
        //   目标检查上报 新增数据
        getworkApproveUpdata: (params: object) => {
            return request({
                url: "/targetDutyWorkApprove/update",
                method: "post",
                data: params
            })
        },
         //   目标检查上报 删除
         getworkApproveDelete: (params: any) => {
        //   目标检查上报 删除
        getworkApproveDelete: (params: any) => {
            return request({
                url: "/targetDutyWorkApprove/delete",
                method: "post",
@@ -319,25 +319,56 @@
                method: "get"
            })
        },
        beforeUploadFile(fileName1:string,fileName2:string) {
        beforeUploadFile(fileName1: string, fileName2: string) {
            return request({
                url: '/minio/file/presign?prefixName='+fileName1+'&suffixName='+fileName2,
                url: '/minio/file/presign?prefixName=' + fileName1 + '&suffixName=' + fileName2,
                method: 'get',
            })
        },
        searchFile(fileName:string) {
        searchFile(fileName: string) {
            return request({
                url: '/minio/file/view?obj='+fileName,
                url: '/minio/file/view?obj=' + fileName,
                method: 'get',
            })
        },
        // 应急统计
        emergencyStat(params:object){
        emergencyStat(params: object) {
            return request({
                url:`/emergencyCount/emergencyDrillExecute/count`,
                url: `/emergencyCount/emergencyDrillExecute/count`,
                method: 'post',
                data: params
            })
        },
        // 目标分类 分页查询数据
        gettargetClassList(params:object){
            return request({
                url:"/targetType/page/list",
                method:"post",
                data:params
            })
        }
        },
        // 目标分类 查询单条数据
        gettargetClassDetail(params:any){
            return request({
                url:`/targetType/selectOne/${params}`,
                method:"get",
            })
        },
        // 目标分类 新增或者修改数据
        gettargetClassAdd(params:object){
            return request({
                url:"/targetType/addOrUpdate",
                method:"post",
                data:params
            })
        },
        // 目标分类 删除
        gettargetClassDelete(params:any){
            return request({
                url:"/targetType/delete",
                method:"post",
                data:params
            })
        },
    }
}
src/components/DailogClass/index.vue
对比新文件
@@ -0,0 +1,141 @@
<template>
    <el-dialog v-model="dialogVisible" @close="resetForm(ruleFormRef)" :fullscreen="full" title="目标分解" width="30%" draggable>
        <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
        <el-form :model="form" ref="ruleFormRef" :rules="rules" :disabled="disabled" label-width="120px">
            <el-row>
                <el-col :span="20">
                    <el-form-item label="名称" size="default" prop="typeName">
                        <el-input v-model="form.typeName" />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="20">
                    <el-form-item label="描述" size="default" prop="memo">
                        <el-input v-model="form.memo" type="textarea" />
                    </el-form-item>
                </el-col>
            </el-row>
        </el-form>
        <template #footer>
            <span class="dialog-footer">
                <el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
                <el-button type="primary" v-if="disabled == false" @click="submitForm(ruleFormRef)" size="default">确定</el-button>
            </span>
        </template>
    </el-dialog>
</template>
<script lang="ts">
import { defineComponent, ref, reactive } from 'vue';
import { timeDate } from '/@/assets/index.ts';
import type { FormInstance, FormRules } from 'element-plus';
import { Search, FullScreen } from '@element-plus/icons-vue';
import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
import { goalManagementApi } from '/@/api/goalManagement';
export default defineComponent({
    components: {},
    setup(props, { emit }) {
        const ruleFormRef = ref<FormInstance>();
        const dialogVisible = ref<boolean>(false);
        const form = ref({
            typeName: '',
            memo: '',
        });
        const targetType = ref();
        const disabled = ref(false);
        const titles = ref();
        const openDailog = (title: string, type: any, id: number) => {
            dialogVisible.value = true;
            titles.value = title;
            targetType.value = type;
            disabled.value = title == '查看' ? true : false;
            if (title == '查看' || title == '修改') {
                goalManagementApi()
                    .gettargetClassDetail(id)
                    .then((res) => {
                        if (res.data.code == 200) {
                            form.value = res.data.data;
                        } else {
                            ElMessage.error(res.data.msg);
                        }
                    });
            }
        };
        const rules = reactive<FormRules>({
            typeName: [
                {
                    required: true,
                    message: '名称不能为空',
                    trigger: 'blur',
                },
            ],
            memo: [
                {
                    required: true,
                    message: '描述不能为空',
                    trigger: 'blur',
                },
            ],
        });
        const submitForm = async (formEl: FormInstance | undefined) => {
            if (!formEl) return;
            await formEl.validate((valid, fields) => {
                if (valid) {
                    dialogVisible.value = false;
                    goalManagementApi()
                        .gettargetClassAdd(form.value)
                        .then((res) => {
                            if (res.data.code == 200) {
                                ElMessage({
                                    message: res.data.msg,
                                    type: 'success',
                                });
                                emit('onAdd');
                            } else {
                                ElMessage.error(res.data.msg);
                            }
                        });
                } else {
                    console.log('error submit!', fields);
                }
            });
        };
        const resetForm = (formEl: FormInstance | undefined) => {
            if (!formEl) return;
            formEl.resetFields();
            dialogVisible.value = false;
        };
        //全屏
        const full = ref(false);
        const toggleFullscreen = () => {
            if (full.value == false) {
                full.value = true;
            } else {
                full.value = false;
            }
        };
        return {
            timeDate,
            ruleFormRef,
            rules,
            submitForm,
            resetForm,
            form,
            dialogVisible,
            openDailog,
            Search,
            full,
            toggleFullscreen,
            FullScreen,
            targetType,
            disabled,
            titles,
        };
    },
});
</script>
<style scoped>
.el-row {
    padding: 0 0 20px 0;
}
</style>
src/views/goalManagement/targetClassification/index.vue
对比新文件
@@ -0,0 +1,261 @@
<template>
    <div>
        <!-- <el-form :model="ruleForm" status-icon label-width="20px" class="topTitle">
            <el-row>
                <el-col :span="4">
                    <el-form-item>
                        <el-input v-model="ruleForm.searchParams.qName" size="default" placeholder="安全目标指标" />
                    </el-form-item>
                </el-col>
                <el-col :span="4">
                    <el-form-item>
                        <el-input v-model="ruleForm.searchParams.indexNum" size="default" placeholder="目标指标编号" />
                    </el-form-item>
                </el-col>
                <el-col :span="16">
                    <el-form-item>
                        <el-button type="primary" size="default" @click="listApi">查询</el-button>
                        <el-button size="default" @click="resetForm">重置</el-button>
                    </el-form-item>
                </el-col>
            </el-row>
        </el-form> -->
        <div class="minCenter">
            <div class="btns">
                <div>
                    <el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
                    <el-button size="default" type="warning" :disabled="warning" :icon="EditPen" plain @click="openD('修改', deletAll[0])">修改</el-button>
                    <el-button size="default" type="danger" :disabled="danger" :icon="Delete" plain @click="onDeleteAll">删除</el-button>
                </div>
            </div>
            <el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
                <el-table-column label="序号" align="center" type="index" width="70" />
                <el-table-column type="selection" align="center" width="55" />
                <el-table-column label="名称" align="center" property="typeName" sortable />
                <el-table-column property="memo" align="center" label="描述" sortable />
                <!-- <el-table-column property="year" label="年度" align="center" sortable show-overflow-tooltip />
                <el-table-column property="value" label="指标值" align="center" sortable show-overflow-tooltip /> -->
                <el-table-column label="操作" align="center" sortable show-overflow-tooltip>
                    <template #default="scope">
                        <el-button link type="primary" size="small" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
                        <el-button link type="primary" size="small" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
                        <el-button link type="primary" size="small" :icon="Delete" @click="onDelete(scope.row.id)">删除</el-button>
                    </template>
                </el-table-column>
            </el-table>
            <div class="pages">
                <el-pagination
                    v-model:currentPage="currentPage4"
                    v-model:page-size="pageSize4"
                    :page-sizes="[10, 20, 30, 40]"
                    layout="total, sizes, prev, pager, next, jumper"
                    :total="total"
                    @size-change="handleSizeChange"
                    @current-change="handleCurrentChange"
                />
            </div>
        </div>
        <DailogClass ref="Show" @onAdd="add"></DailogClass>
    </div>
</template>
<script lang="ts">
import DailogClass from '/@/components/DailogClass/index.vue';
import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext, FormInstance } from 'element-plus';
import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
import { goalManagementApi } from '/@/api/goalManagement';
export default defineComponent({
    components: { ElButton, ElInput,DailogClass },
    setup() {
        // 搜索条件
        const ruleForm = reactive({
            pageSize: 10,
            pageIndex: 1,
            searchParams: {
                typeName: '', ////分类名称
            },
        });
        // 下方导航与表格
        const tableData = ref([]);
        const currentPage4 = ref();
        const pageSize4 = ref();
        const total = ref();
        // const resetForm = () => {
        //     ruleForm.searchParams.qName = '';
        //     ruleForm.searchParams.indexNum = '';
        //     listApi();
        // };
        const listApi = () => {
            goalManagementApi()
                .gettargetClassList(ruleForm)
                .then((res) => {
                    if (res.data.code == 200) {
                        tableData.value = res.data.data;
                        currentPage4.value = res.data.pageIndex;
                        pageSize4.value = res.data.pageSize;
                        total.value = res.data.total;
                    } else {
                        ElMessage.error(res.data.msg);
                    }
                });
        };
        onMounted(() => {
            listApi();
        });
        const handleSizeChange = (val: number) => {
            // console.log(`${val} items per page`);
            ruleForm.pageSize = val;
            listApi();
        };
        const handleCurrentChange = (val: number) => {
            // console.log(`current page: ${val}`);
            ruleForm.pageIndex = val;
            listApi();
        };
        const activeNames = ref('1');
        // 打开弹窗
        const Show = ref();
        const openD = (title: String, id: number) => {
            Show.value.openDailog(title, ruleForm.searchParams.targetType,id);
        };
        // 删除
        const onDelete = (id: number) => {
            let arr = [];
            arr.push(id);
            ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning',
            })
                .then(() => {
                    goalManagementApi()
                        .gettargetClassDelete(arr)
                        .then((res) => {
                            if (res.data.code == 200) {
                                ElMessage({
                                    message: res.data.msg,
                                    type: 'success',
                                });
                                listApi();
                            } else {
                                ElMessage.error(res.data.msg);
                            }
                        });
                })
                .catch(() => {
                    // ElMessage({
                    //     type: 'info',
                    //     message: 'Delete canceled',
                    // });
                });
        };
        // 批量删除
        const warning = ref(true);
        const danger = ref(true);
        const deletAll = ref();
        const handleSelectionChange = (val: any) => {
            let valId = JSON.parse(JSON.stringify(val));
            let arr = [];
            for (let i = 0; i < valId.length; i++) {
                arr.push(valId[i].id);
            }
            deletAll.value = arr;
            if (val.length == 1) {
                warning.value = false;
                danger.value = false;
            } else if (val.length == 0) {
                warning.value = true;
                danger.value = true;
            } else {
                warning.value = true;
                danger.value = false;
            }
        };
        const onDeleteAll = () => {
            ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning',
            })
                .then(() => {
                    goalManagementApi()
                        .gettargetClassDelete(deletAll.value)
                        .then((res) => {
                            if (res.data.code == 200) {
                                ElMessage({
                                    message: res.data.msg,
                                    type: 'success',
                                });
                                listApi();
                            } else {
                                ElMessage.error(res.data.msg);
                            }
                        });
                })
                .catch(() => {
                    ElMessage({
                        type: 'info',
                        message: 'Delete canceled',
                    });
                });
        };
        const add = () => {
            listApi();
        };
        return {
            listApi,
            add,
            // resetForm,
            tableData,
            currentPage4,
            pageSize4,
            total,
            ruleForm,
            handleSizeChange,
            handleCurrentChange,
            Show,
            openD,
            activeNames,
            onDelete,
            warning,
            danger,
            deletAll,
            handleSelectionChange,
            onDeleteAll,
            Plus,
            Delete,
            Upload,
            Download,
            Refresh,
            View,
            EditPen,
        };
    },
});
</script>
<style scoped>
.topTitle {
    background-color: #fff;
    padding: 20px 0px 20px 0px;
}
.minCenter {
    width: 100%;
    background-color: #fff;
    margin-top: 10px;
    padding: 0 20px;
}
.btns {
    padding: 20px 0px 10px 0px;
    display: flex;
    justify-content: space-between;
}
.pages {
    padding: 20px 0;
    display: flex;
    justify-content: right;
}
.tableC {
    margin: 0 10%;
}
</style>
src/views/goalManagement/targetDecompositionYear/component/DailogAdd.vue
@@ -2,10 +2,26 @@
    <el-dialog v-model="dialogVisible" :fullscreen="full" :title="titles" width="50%" draggable @close="resetForm(ruleFormRef)">
        <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
        <el-form :model="form" :disabled="disabled" label-width="120px" ref="ruleFormRef" :rules="rules">
            <!-- <el-row>
                <el-col :span="11">
                    <el-form-item label="考核指标" prop="value" size="default"> </el-form-item>
                </el-col>
                <el-col :span="11" :offset="2">
                    <el-form-item label="考核指标" prop="value" size="default"> </el-form-item>
                </el-col>
            </el-row> -->
            <el-row>
                <el-col :span="11">
                    <el-form-item label="责任部门" prop="dutyDepartmentId" size="default">
                        <el-tree-select v-model="form.dutyDepartmentId" check-strictly="true" @current-change="dutyName" :data="data" class="w100" :props="propse" placeholder="请选择" />
                        <el-tree-select
                            v-model="form.dutyDepartmentId"
                            check-strictly="true"
                            @current-change="dutyName"
                            :data="data"
                            class="w100"
                            :props="propse"
                            placeholder="请选择"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="11" :offset="2">
@@ -17,12 +33,27 @@
            <el-row>
                <el-col :span="11">
                    <el-form-item label="制定人部门" prop="makerDepartmentId" size="default">
                        <el-tree-select v-model="form.makerDepartmentId" :data="data" @current-change="makerName" check-strictly="true" class="w100" :props="propse" placeholder="请选择" />
                        <el-tree-select
                            v-model="form.makerDepartmentId"
                            :data="data"
                            @current-change="makerName"
                            check-strictly="true"
                            class="w100"
                            :props="propse"
                            placeholder="请选择"
                        />
                    </el-form-item>
                </el-col>
                <el-col :span="11" :offset="2">
                    <el-form-item label="制定日期" prop="makeDate" size="default">
                        <el-date-picker v-model="form.makeDate" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择" style="width: 100%" />
                        <el-date-picker
                            v-model="form.makeDate"
                            format="YYYY-MM-DD HH:mm:ss"
                            value-format="YYYY-MM-DD HH:mm:ss"
                            type="datetime"
                            placeholder="请选择"
                            style="width: 100%"
                        />
                    </el-form-item>
                </el-col>
            </el-row>
@@ -39,7 +70,6 @@
        </el-form>
        <template #footer>
            <span class="dialog-footer">
                <el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
                <el-button type="primary" @click="submitForm(ruleFormRef)" :disabled="disabled" size="default">确定</el-button>
            </span>
@@ -57,7 +87,7 @@
export default defineComponent({
    components: { DailogSearchUser },
    setup(props, { emit }) {
        const ruleFormRef = ref<FormInstance>()
        const ruleFormRef = ref<FormInstance>();
        const form = ref({
            dutyDepartmentId: '', ////责任部门/外键
            makerDepartmentId: '', ////制定人部门/外键
@@ -166,10 +196,10 @@
        const resetForm = (formEl: FormInstance | undefined) => {
            // console.log(formEl);
            if (!formEl) return
            if (!formEl) return;
            formEl.clearValidate();
            dialogVisible.value = false;
            form.value={}
            form.value = {};
        };
        // const handleClose = (formEl: any) => {
        //     formEl.resetFields();
@@ -185,16 +215,16 @@
        };
        const data = ref();
        const onUser = (e: any) => {
            console.log(e)
            console.log(e);
            form.value.commitPersonId = e.uid;
            form.value.commitPersonName = e.realName;
        };
        const makerName=(data:any)=>{
            form.value.makerDepartmentName=data.depName
        }
        const dutyName=(data:any)=>{
            form.value.dutyDepartmentName=data.depName
        }
        const makerName = (data: any) => {
            form.value.makerDepartmentName = data.depName;
        };
        const dutyName = (data: any) => {
            form.value.dutyDepartmentName = data.depName;
        };
        return {
            disabled,
            makerName,