shj
2022-07-27 09a7d782235db3192db6cd0013e96a3a9265a3fd
对接
已修改13个文件
1453 ■■■■■ 文件已修改
src/api/goalManagement/index.ts 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/DailogSearch/DailogSearch.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/goalManagement/Goalsummary/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/goalManagement/IncentiveRecording/component/DailogAdd.vue 79 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/goalManagement/IncentiveRecording/component/DailogSearch.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/goalManagement/IncentiveRecording/index.vue 347 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/goalManagement/Incentivestandard/component/DailogAdd.vue 101 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/goalManagement/Incentivestandard/index.vue 343 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/goalManagement/TargetBook/component/DailogAdd.vue 103 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/goalManagement/TargetBook/component/DailogSearch.vue 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/goalManagement/TargetBook/index.vue 336 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/goalManagement/targetDecompositionYear/component/Dailog.vue 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/goalManagement/targetSettings/component/dailogAdd.vue 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/goalManagement/index.ts
@@ -56,14 +56,14 @@
            })
        },
        // 目标责任书 查询单条数据
        gettargetDutyfileInfoDetail: (params: any) => {
        gettargetDutyfileInfoDetail: (params: number) => {
            return request({
                url: `/targetDutyfileInfo/selectOne/${params}`,
                method: "get"
            })
        },
        // 目标责任书 新增或者修改数据 
        gettargetDutyfileInfoAddorUpdata: (params: object) => {
        gettargetDutyfileInfoAddorUpdata: (params: any) => {
            return request({
                url: `/targetDutyfileInfo/addOrUpdate`,
                method: "post",
src/components/DailogSearch/DailogSearch.vue
@@ -93,7 +93,7 @@
                qName: '', ////安全目标指标
                indexNum: '', ////目标指标编号
                targetType: '', ////指标类型 1:年指标 2:月指标
                divideStatus: '', ////分解状态 1:已分解 2:未分解
                divideStatus: '2', ////分解状态 1:已分解 2:未分解
            },
        });
        // 下方导航与表格
src/views/goalManagement/Goalsummary/index.vue
@@ -9,7 +9,7 @@
                </el-col>
                <el-col :span="4">
                    <el-form-item>
                        <el-tree-select v-model="form.searchParams.departmentId" :data="data" class="w100" placeholder="请选择" />
                        <el-tree-select v-model="ruleForm.searchParams.departmentId" :data="data" class="w100" placeholder="请选择" />
                    </el-form-item>
                </el-col>
                <el-col :span="4">
src/views/goalManagement/IncentiveRecording/component/DailogAdd.vue
@@ -1,7 +1,7 @@
<template>
    <el-dialog v-model="dialogVisible" :fullscreen="full" title="新建奖惩记录" width="50%" draggable>
    <el-dialog v-model="dialogVisible" :before-close="resetForm" :fullscreen="full" :title="titles" width="50%" draggable>
        <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
        <el-form :model="form" label-width="120px">
        <el-form :model="form" :disabled="disabled" label-width="120px">
            <el-row>
                <el-col :span="24">
                    <el-form-item label="员工姓名" size="default">
@@ -49,8 +49,8 @@
        </el-form>
        <template #footer>
            <span class="dialog-footer">
                <el-button @click="dialogVisible = false" size="default">关闭</el-button>
                <el-button type="primary" @click="dialogVisible = false" size="default">确定</el-button>
                <el-button @click="resetForm" size="default">关闭</el-button>
                <el-button type="primary" @click="submitForm" size="default">确定</el-button>
            </span>
        </template>
    </el-dialog>
@@ -61,27 +61,59 @@
import { defineComponent, ref, reactive } from 'vue';
import { Search, FullScreen } from '@element-plus/icons-vue';
import DailogSearch from './DailogSearch.vue';
import { goalManagementApi } from '/@/api/goalManagement';
import DailogSearchUser from '/@/components/DailogSearchUser/index.vue';
import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
export default defineComponent({
    components: { DailogSearch, DailogSearchUser },
    setup() {
    setup(props,{emit}) {
        const dialogVisible = ref<boolean>(false);
        const form = reactive({
            name: '',
            region: '',
            date1: '',
            date2: '',
            delivery: false,
            type: [],
            resource: '',
            desc: '',
        });
        const openDailog = (type: string, value: any, projectList: any, projectId: string) => {
        const form = ref({});
        const titles = ref();
        const disabled = ref(false);
        // 打开弹窗
        const openDailog = (title: string, value: any, id: number) => {
            dialogVisible.value = true;
            titles.value = `${title}奖惩标准设定`;
            disabled.value = title == '查看' ? true : false;
            if (title == '查看' || title == '修改')
                goalManagementApi()
                    .getrewardPunishmentDetail(id)
                    .then((res) => {
                        if (res.data.code == 200) {
                            form.value = res.data.data;
                        } else {
                            ElMessage.error(res.data.msg);
                        }
                    });
        };
        // 导航
        const activeName = ref('1');
        // 表格
        // 提交
        const submitForm = () => {
            dialogVisible.value = false;
            goalManagementApi()
                .getrewardPunishmentAddOrUpdate(form.value)
                .then((res) => {
                    if (res.data.code == 200) {
                        ElMessage({
                            message: res.data.msg,
                            type: 'success',
                        });
                        emit('navAddorUpdata');
                    } else {
                        ElMessage.error(res.data.msg);
                    }
                });
            form.value = {
            }
        };
        //   取消
        const resetForm = () => {
            dialogVisible.value = false;
            form.value = {
            };
        };
        // 安全目标指标弹窗
        const Shows = ref();
@@ -102,17 +134,20 @@
            }
        };
        return {
            form,
            dialogVisible,
            form,
            titles,
            disabled,
            openDailog,
            activeName,
            submitForm,
            resetForm,
            Shows,
            daiInpt,
            Show,
            daiInpts,
            Search,
            full,
            toggleFullscreen,
            Search,
            FullScreen,
        };
    },
src/views/goalManagement/IncentiveRecording/component/DailogSearch.vue
@@ -17,8 +17,8 @@
                </el-col> -->
                        <el-col :span="11" :offset="1">
                            <el-form-item>
                                <el-button size="default" type="primary" @click="submitForm(ruleFormRef)">查询</el-button>
                                <el-button size="default" @click="resetForm(ruleFormRef)">重置</el-button>
                                <el-button size="default" type="primary" @click="submitForm">查询</el-button>
                                <el-button size="default" @click="resetForm">重置</el-button>
                            </el-form-item>
                        </el-col>
                    </el-row>
@@ -35,11 +35,8 @@
                    v-model:currentPage="currentPage4"
                    v-model:page-size="pageSize4"
                    :page-sizes="[100, 200, 300, 400]"
                    :small="small"
                    :disabled="disabled"
                    :background="background"
                    layout="total, sizes, prev, pager, next, jumper"
                    :total="400"
                    :total="1"
                    @size-change="handleSizeChange"
                    @current-change="handleCurrentChange"
                />
src/views/goalManagement/IncentiveRecording/index.vue
@@ -1,184 +1,262 @@
<template>
<div>
    <el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
        <el-row>
            <el-col :span="4">
                <el-form-item size="default">
                    <el-input v-model="ruleForm.name" placeholder="请选择被奖惩者">
                            <template #append> <el-button :icon="Search" @click="openSearch" /> </template
                        ></el-input>
                </el-form-item>
            </el-col>
            <!-- <el-col :span="4">
    <div>
        <el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
            <el-row>
                <el-col :span="4">
                    <el-form-item size="default">
                        <el-input v-model="ruleForm.searchParams.personId" placeholder="请选择被奖惩者">
                            <template #append>
                                <el-button :icon="Search" @click="openSearch" />
                            </template>
                        </el-input>
                    </el-form-item>
                </el-col>
                <!-- <el-col :span="4">
                <el-form-item>
                    <el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" />
                </el-form-item>
            </el-col> -->
            <el-col :span="4">
                <el-form-item>
                    <el-button size="default" type="primary" @click="submitForm(ruleFormRef)">查询</el-button>
                    <el-button size="default" @click="resetForm(ruleFormRef)">重置</el-button>
                </el-form-item>
            </el-col>
        </el-row>
    </el-form>
    <div class="minCenter">
                <el-col :span="4">
                    <el-form-item>
                        <el-button size="default" type="primary" @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" plain :icon="EditPen">修改</el-button>
                    <el-button size="default" type="danger" :icon="Delete" plain>删除</el-button>
                    <el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
                    <el-button size="default" type="warning" plain :icon="EditPen">修改</el-button>
                    <el-button size="default" type="danger" :icon="Delete" plain @click="handleSelectionChange">删除 </el-button>
                </div>
                <div>
                    <!-- <el-button size="default" :icon="Download"></el-button>
                    <el-button size="default" :icon="Refresh"></el-button> -->
                </div>
            </div>
        <el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
            <el-table-column type="selection" align="center" width="55" />
            <el-table-column label="奖惩日期" align="center" sortable>
                <template #default="scope">{{ scope.row.date }}</template>
            </el-table-column>
            <el-table-column property="name" align="center" label="奖惩类型" sortable />
            <el-table-column property="name" align="center" label="被奖惩者" sortable />
            <el-table-column property="address" label="奖惩内容" align="center" sortable show-overflow-tooltip />
            <el-table-column property="address" label="奖惩依据" align="center" sortable show-overflow-tooltip />
            <!-- <el-table-column property="address" label="指标级别" align="center" sortable show-overflow-tooltip />
            <el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
                <el-table-column type="selection" align="center" width="55" />
                <el-table-column property="createTime" align="center" label="奖惩日期" sortable />
                <el-table-column label="奖惩类型" align="center" sortable>
                    <template #default="scope">
                    <span v-if="scope.row.standardType==1">奖励</span>
                    <span v-if="scope.row.standardType==2">惩罚</span>
                    </template>
                </el-table-column>
                <el-table-column property="personName" align="center" label="被奖惩者" sortable />
                <el-table-column property="content" label="奖惩内容" align="center" sortable show-overflow-tooltip />
                <el-table-column property="reason" label="奖惩依据" align="center" sortable show-overflow-tooltip />
                <!-- <el-table-column property="address" label="指标级别" align="center" sortable show-overflow-tooltip />
            <el-table-column property="address" label="完成期限" align="center" sortable show-overflow-tooltip />
            <el-table-column property="address" label="状态" align="center" sortable show-overflow-tooltip /> -->
            <el-table-column label="操作" align="center" style="width:300px">
                <template #default>
                    <el-button link type="primary" size="default" :icon="View">查看</el-button>
                    <el-button link type="primary" size="default" :icon="EditPen">修改</el-button>
                    <el-button link type="primary" size="default" :icon="Delete">删除</el-button>
                </template>
            </el-table-column>
        </el-table>
        <div class="pages">
            <el-pagination
                v-model:currentPage="currentPage4"
                v-model:page-size="pageSize4"
                :page-sizes="[100, 200, 300, 400]"
                :small="small"
                :disabled="disabled"
                :background="background"
                layout="total, sizes, prev, pager, next, jumper"
                :total="400"
                @size-change="handleSizeChange"
                @current-change="handleCurrentChange"
            />
                <el-table-column label="操作" align="center" style="width: 300px">
                    <template #defaultt="scope">
                        <el-button link type="primary" size="default" :icon="View"  @click="openD('查看', scope.row.id)">查看</el-button>
                        <el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
                        <el-button link type="primary" size="default" :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>
            <DailogAdd ref="openAdd"></DailogAdd>
            <DailogSearchUser ref="openUser"></DailogSearchUser>
        </div>
        <DailogAdd ref="openAdd"></DailogAdd>
        <DailogSearchUser ref="openUser"></DailogSearchUser>
    </div>
    </div>
</template>
<script lang="ts">
import DailogAdd from './component/DailogAdd.vue'
import DailogSearchUser from '/@/components/DailogSearchUser/index.vue'
import DailogAdd from './component/DailogAdd.vue';
import DailogSearchUser from '/@/components/DailogSearchUser/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,Search} from '@element-plus/icons-vue';
interface User {
    date: string;
    name: string;
    address: string;
}
import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
import { Plus, Delete, Upload, Download, Refresh, View, EditPen, Search } from '@element-plus/icons-vue';
import { goalManagementApi } from '/@/api/goalManagement';
export default defineComponent({
    components: { ElButton, ElInput,DailogAdd,DailogSearchUser },
    components: { ElButton, ElInput, DailogAdd, DailogSearchUser },
    setup() {
        // 搜索条件
        const ruleForm = reactive({
            pass: '',
            checkPass: '',
            pageSize: 10,
            pageIndex: 1,
            searchParams: {
                personId: '1', ////员工
            },
        });
        const formatter = (row: User, column: TableColumnCtx<User>) => {
            return row.address;
        // 重置
        const resetForm = () => {
            ruleForm.searchParams.personId = '';
            listApi();
        };
        const tableData: User[] = [
            {
                date: '2016-05-03',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-02',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-04',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-01',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-08',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-06',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-07',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
        ];
        const currentPage4 = ref(4);
        const pageSize4 = ref(100);
        const small = ref(false);
        const disabled = ref(false);
        const background = ref(false);
        const listApi = () => {
            goalManagementApi()
                .getrewardPunishmentList(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);
                    }
                });
        };
        //
        const handleClick = (val: any) => {
            let targetType = JSON.parse(JSON.stringify(val));
            ruleForm.searchParams.personId = targetType.paneName;
            listApi();
        };
        onMounted(() => {
            listApi();
        });
        const onAddorUpdata = () => {
            listApi();
        };
        // 表格
        const tableData = ref();
        const currentPage4 = ref();
        const pageSize4 = ref();
        const total = ref();
        const handleSizeChange = (val: number) => {
            console.log(`${val} items per page`);
            // console.log(`${val} items per page`);
            ruleForm.pageSize = val;
            listApi();
        };
        const handleCurrentChange = (val: number) => {
            console.log(`current page: ${val}`);
            // console.log(`current page: ${val}`);
            ruleForm.pageIndex = val;
            listApi();
        };
        // 弹窗
        const openAdd = ref();
        const openD = () => {
            openAdd.value.openDailog();
        const openD = (title: String, id: number) => {
            openAdd.value.openDailog(title, ruleForm.searchParams.personId, id);
        };
        const openUser =ref();
        // 删除
        const onDelete = (id: number) => {
            ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning',
            })
                .then(() => {
                    goalManagementApi()
                        .getrewardPunishmentDelete(id)
                        .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.toString();
            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()
                        .getrewardPunishmentDelete(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 openUser=ref()
        const openSearch=()=>{
            openUser.value.openDailog()
        }
        return {
            ruleForm,
            resetForm,
            listApi,
            handleClick,
            onAddorUpdata,
            tableData,
            formatter,
            currentPage4,
            pageSize4,
            total,
            handleSizeChange,
            handleCurrentChange,
            openAdd,
            openD,
            small,
            disabled,
            background,
            ruleForm,
            openUser,
            onDelete,
            openAdd,
            warning,
            danger,
            deletAll,
            openSearch,
            handleSelectionChange,
            onDeleteAll,
            openUser,
            Plus,
            Delete,
            Upload,
            Download,
            Refresh,
            View,
            EditPen,
            Search
            EditPen,
            Search,
        };
    },
});
@@ -190,16 +268,19 @@
    margin-top: 10px;
    padding: 0 20px;
}
.topTitle {
  background-color: #fff;
  padding: 20px 0px 20px 0px;
  margin-bottom:10px ;
    background-color: #fff;
    padding: 20px 0px 20px 0px;
    margin-bottom: 10px;
}
.btns {
    padding: 10px 0px 10px 0px;
    display: flex;
    justify-content: space-between;
}
.pages {
    padding: 20px 0;
    display: flex;
src/views/goalManagement/Incentivestandard/component/DailogAdd.vue
@@ -1,46 +1,46 @@
<template>
    <el-dialog v-model="dialogVisible" :fullscreen="full" title="新建奖惩标准设定" width="50%" draggable>
    <el-dialog v-model="dialogVisible"  :before-close="resetForm" :fullscreen="full" :title="titles" width="50%" draggable>
        <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
        <el-form :model="form" label-width="120px">
        <el-form :model="form" :disabled="disabled" label-width="120px">
            <el-row>
                <el-col :span="11">
                    <el-form-item label="奖惩类型" size="default">
                        <el-select v-model="form.region" style="width: 100%" placeholder="">
                            <el-option label="Zone one" value="shanghai" />
                            <el-option label="Zone two" value="beijing" />
                        <el-select v-model="form.standardType" style="width: 100%" placeholder="请选择">
                            <el-option label="奖励" value="1" />
                            <el-option label="惩罚" value="2" />
                        </el-select>
                    </el-form-item>
                </el-col>
                <el-col :span="11" :offset="2">
                    <el-form-item label="奖惩内容" size="default">
                        <el-input v-model="form.name" />
                        <el-input v-model="form.content" />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="11">
                    <el-form-item label="奖惩名称" size="default">
                        <el-input v-model="form.name" />
                        <el-input v-model="form.qName" />
                    </el-form-item>
                </el-col>
                <el-col :span="11" :offset="2">
                    <el-form-item label="依据" size="default">
                        <el-input v-model="form.name" />
                        <el-input v-model="form.reason" />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="24">
                    <el-form-item label="备注信息">
                        <el-input v-model="form.name" type="textarea" />
                        <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="dialogVisible = false" size="default">关闭</el-button>
                <el-button type="primary" @click="dialogVisible = false" size="default">确定</el-button>
                <el-button @click="resetForm" size="default">关闭</el-button>
                <el-button type="primary" @click="submitForm" size="default">确定</el-button>
            </span>
        </template>
    </el-dialog>
@@ -48,24 +48,72 @@
<script lang="ts">
import { defineComponent, ref, reactive } from 'vue';
import { Search, FullScreen } from '@element-plus/icons-vue';
import { goalManagementApi } from '/@/api/goalManagement';
import { ElMessageBox, ElMessage, ElButton, ElInput, TabsPaneContext } from 'element-plus';
export default defineComponent({
    setup() {
    setup(props, { emit }) {
        let Shows = ref(false);
        const dialogVisible = ref<boolean>(false);
        const form = reactive({
            name: '',
            region: '',
            date1: '',
            date2: '',
            delivery: false,
            type: [],
            resource: '',
            desc: '',
        const form = ref({
            qName: "", ////奖惩名称
            reason: "", ////依据
            memo: "", ////备注信息
            content: "", ////奖惩内容
            standardType: null ////奖惩类型 1:奖励 2:惩罚
        });
        const openDailog = (type: string, value: any, projectList: any, projectId: string) => {
        const titles = ref();
        const disabled = ref(false);
        // 打开弹窗
        const openDailog = (title: string, value: any, id: number) => {
            dialogVisible.value = true;
            titles.value = `${title}奖惩标准设定`;
            disabled.value = title == '查看' ? true : false;
            if (title == '查看' || title == '修改')
                goalManagementApi()
                    .getrewardPunishmentStandardDetail(id)
                    .then((res) => {
                        if (res.data.code == 200) {
                            form.value = res.data.data;
                        } else {
                            ElMessage.error(res.data.msg);
                        }
                    });
        };
        // 导航
        const activeName = ref('1');
        // 提交
        const submitForm = () => {
            dialogVisible.value = false;
            goalManagementApi()
                .getrewardPunishmentStandardaddOrUpdate(form.value)
                .then((res) => {
                    if (res.data.code == 200) {
                        ElMessage({
                            message: res.data.msg,
                            type: 'success',
                        });
                        emit('navAddorUpdata');
                    } else {
                        ElMessage.error(res.data.msg);
                    }
                });
            form.value = {
                qName: "", ////奖惩名称
                reason: "", ////依据
                memo: "", ////备注信息
                content: "", ////奖惩内容
                standardType: null, ////奖惩类型 1:奖励 2:惩罚
            }
        };
        //   取消
        const resetForm = () => {
            dialogVisible.value = false;
            form.value = {
                qName: "", ////奖惩名称
                reason: "", ////依据
                memo: "", ////备注信息
                content: "", ////奖惩内容
                standardType: null, ////奖惩类型 1:奖励 2:惩罚
            };
        };
        //全屏
        const full = ref(false);
        const toggleFullscreen = () => {
@@ -78,10 +126,13 @@
        return {
            form,
            titles,
            dialogVisible,
            openDailog,
            activeName,
            disabled,
            Search,
            submitForm,
            resetForm,
            full,
            toggleFullscreen,
            FullScreen,
src/views/goalManagement/Incentivestandard/index.vue
@@ -1,34 +1,34 @@
<template>
<div>
    <el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
        <el-row>
            <el-col :span="4">
                <el-form-item>
                    <el-select v-model="ruleForm.region" size="default" style="width:100%" placeholder="">
                        <el-option label="Zone one" value="shanghai" />
                        <el-option label="Zone two" value="beijing" />
                    </el-select>
                </el-form-item>
            </el-col>
            <!-- <el-col :span="4">
    <div>
        <el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
            <el-row>
                <el-col :span="4">
                    <el-form-item>
                        <el-select v-model="ruleForm.searchParams.standardType" size="default" style="width: 100%" placeholder="请选择">
                            <el-option label="奖励" value="1" />
                            <el-option label="惩罚" value="2" />
                        </el-select>
                    </el-form-item>
                </el-col>
                <!-- <el-col :span="4">
                <el-form-item>
                    <el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" />
                </el-form-item>
            </el-col> -->
            <el-col :span="4">
                <el-form-item>
                    <el-button size="default" type="primary" @click="submitForm(ruleFormRef)">查询</el-button>
                    <el-button size="default" @click="resetForm(ruleFormRef)">重置</el-button>
                </el-form-item>
            </el-col>
        </el-row>
    </el-form>
    <div class="minCenter">
                <el-col :span="4">
                    <el-form-item>
                        <el-button size="default" type="primary" @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" plain :icon="EditPen">修改</el-button>
                    <el-button size="default" type="danger" :icon="Delete" plain>删除</el-button>
                    <el-button size="default" type="primary" :icon="Plus" @click="openD('新建')" >新建</el-button>
                    <el-button size="default" type="warning" :disabled="warning" plain :icon="EditPen" @click="openD">修改 </el-button>
                    <el-button size="default" type="danger" :disabled="danger" :icon="Delete" plain @click="handleSelectionChange">删除</el-button>
                </div>
                <div>
                    <!-- <el-button size="default" :icon="Upload" @click="upButton"></el-button>
@@ -36,152 +36,218 @@
                    <el-button size="default" :icon="Refresh"></el-button> -->
                </div>
            </div>
        <el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
            <el-table-column type="selection" align="center" width="55" />
            <el-table-column label="奖惩名称" align="center" sortable>
                <template #default="scope">{{ scope.row.date }}</template>
            </el-table-column>
            <el-table-column property="name" align="center" label="奖惩类型" sortable />
            <el-table-column property="address" label="奖惩内容" align="center" sortable show-overflow-tooltip />
            <el-table-column property="address" label="依据" align="center" sortable show-overflow-tooltip />
            <!-- <el-table-column property="address" label="指标级别" align="center" sortable show-overflow-tooltip />
            <el-table-column property="address" label="完成期限" align="center" sortable show-overflow-tooltip />
            <el-table-column property="address" label="状态" align="center" sortable show-overflow-tooltip /> -->
            <el-table-column property="address" label="备注信息" align="center" sortable show-overflow-tooltip />
            <el-table-column label="操作" align="center" sortable show-overflow-tooltip>
                <template #default>
                    <el-button link type="primary" size="default" :icon="View">查看</el-button>
                    <el-button link type="primary" size="default" :icon="EditPen">修改</el-button>
                    <el-button link type="primary" size="default" :icon="Delete">删除</el-button>
                </template>
            </el-table-column>
        </el-table>
        <div class="pages">
            <el-pagination
                v-model:currentPage="currentPage4"
                v-model:page-size="pageSize4"
                :page-sizes="[100, 200, 300, 400]"
                :small="small"
                :disabled="disabled"
                :background="background"
                layout="total, sizes, prev, pager, next, jumper"
                :total="400"
                @size-change="handleSizeChange"
                @current-change="handleCurrentChange"
            />
            <el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
                <el-table-column type="selection" align="center" width="55" />
                <el-table-column property="qname" align="center" label="奖惩名称" sortable />
                <el-table-column property="name" align="center" label="奖惩类型" sortable>
                    <template #default="scope">
                        <span v-if="scope.row.standardType == 1">奖励</span>
                        <span v-if="scope.row.standardType == 2">惩罚</span>
                    </template>
                </el-table-column>
                <el-table-column property="content" label="奖惩内容" align="center" sortable show-overflow-tooltip />
                <el-table-column property="reason" label="依据" align="center" sortable show-overflow-tooltip />
                <el-table-column property="memo" 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="default" :icon="View" @click="openD('查看', scope.row.id)">查看 </el-button>
                        <el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
                        <el-button link type="primary" size="default" :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>
            <DailogAdd ref="openAdd" @navAddorUpdata="onAddorUpdata"></DailogAdd>
            <!-- <upData ref="upShow"></upData> -->
        </div>
        <DailogAdd ref="openAdd"></DailogAdd>
        <upData ref="upShow"></upData>
    </div>
    </div>
</template>
<script lang="ts">
import DailogAdd from './component/DailogAdd.vue'
import DailogAdd from './component/DailogAdd.vue';
import upData from '../../../components/updata/updata.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';
interface User {
    date: string;
    name: string;
    address: string;
}
import { Plus, Delete, Upload, Download, Refresh, View, EditPen } from '@element-plus/icons-vue';
import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
import { goalManagementApi } from '/@/api/goalManagement';
export default defineComponent({
    components: { ElButton, ElInput, upData,DailogAdd },
    components: { ElButton, ElInput, upData, DailogAdd },
    setup() {
        // 搜索条件
        const ruleForm = reactive({
            pass: '',
            checkPass: '',
            pageSize: 10,
            pageIndex: 1,
            searchParams: {
                standardType: '', ////奖惩类型 1:奖励 2:惩罚
            },
        });
        const formatter = (row: User, column: TableColumnCtx<User>) => {
            return row.address;
        // 重置
        const resetForm = () => {
            ruleForm.searchParams.standardType = '';
            listApi();
        };
        const tableData: User[] = [
            {
                date: '2016-05-03',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-02',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-04',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-01',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-08',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-06',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-07',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
        ];
        const currentPage4 = ref(4);
        const pageSize4 = ref(100);
        const small = ref(false);
        const disabled = ref(false);
        const background = ref(false);
        const listApi = () => {
            goalManagementApi()
                .getrewardPunishmentStandardList(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);
                    }
                });
        };
        //
        const handleClick = (val: any) => {
            let targetType = JSON.parse(JSON.stringify(val));
            ruleForm.searchParams.standardType = targetType.paneName;
            listApi();
        };
        onMounted(() => {
            listApi();
        });
        const onAddorUpdata = () => {
            listApi();
        };
        // 表格
        const tableData = ref();
        const currentPage4 = ref();
        const pageSize4 = ref();
        const total = ref();
        const handleSizeChange = (val: number) => {
            console.log(`${val} items per page`);
            // console.log(`${val} items per page`);
            ruleForm.pageSize = val;
            listApi();
        };
        const handleCurrentChange = (val: number) => {
            console.log(`current page: ${val}`);
            // console.log(`current page: ${val}`);
            ruleForm.pageIndex = val;
            listApi();
        };
        // 弹窗
        const openAdd = ref();
        const openD = () => {
            openAdd.value.openDailog();
        const openD = (title: String, id: number) => {
            openAdd.value.openDailog(title, ruleForm.searchParams.standardType, id);
        };
        // 上传
        const upShow = ref();
        const upButton = () => {
            upShow.value.openDialog();
        // 删除
        const onDelete = (id: number) => {
            ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning',
            })
                .then(() => {
                    goalManagementApi()
                        .getrewardPunishmentStandardDelete(id)
                        .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.toString();
            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()
                        .getrewardPunishmentStandardDelete(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',
                    // });
                });
        };
        return {
            ruleForm,
            resetForm,
            listApi,
            handleClick,
            onAddorUpdata,
            tableData,
            formatter,
            currentPage4,
            pageSize4,
            total,
            handleSizeChange,
            handleCurrentChange,
            openAdd,
            openD,
            upShow,
            upButton,
            small,
            disabled,
            background,
            ruleForm,
            onDelete,
            warning,
            danger,
            deletAll,
            handleSelectionChange,
            onDeleteAll,
            Plus,
            Delete,
            Upload,
            Download,
            Refresh,
            View,
            EditPen
            EditPen,
        };
    },
});
@@ -193,16 +259,19 @@
    margin-top: 10px;
    padding: 0 20px;
}
.topTitle {
  background-color: #fff;
  padding: 20px 0px 20px 0px;
  margin-bottom:10px ;
    background-color: #fff;
    padding: 20px 0px 20px 0px;
    margin-bottom: 10px;
}
.btns {
    padding: 10px 0px 10px 0px;
    display: flex;
    justify-content: space-between;
}
.pages {
    padding: 20px 0;
    display: flex;
src/views/goalManagement/TargetBook/component/DailogAdd.vue
@@ -1,11 +1,11 @@
<template>
    <el-dialog v-model="dialogVisible" :fullscreen="full" title="新建目标责任书" width="50%" draggable>
    <el-dialog v-model="dialogVisible" :before-close="resetForm" :fullscreen="full" :title="titles" width="50%" draggable>
        <el-button @click="toggleFullscreen" size="small" class="pot" :icon="FullScreen"></el-button>
        <el-form :model="form" label-width="120px">
        <el-form :model="form" :disabled="disabled" label-width="120px">
            <el-row>
                <el-col :span="24">
                    <el-form-item label="岗位" size="default">
                        <el-input v-model="form.name" placeholder="请选择">
                        <el-input v-model="form.jobId" placeholder="请选择">
                            <template #append> <el-button :icon="Search" @click="daiInpt" /> </template
                        ></el-input>
                    </el-form-item>
@@ -14,14 +14,14 @@
            <el-row>
                <el-col :span="24">
                    <el-form-item label="责任书签订日期" size="default">
                        <el-date-picker v-model="form.date1" type="date" placeholder="Pick a date" style="width: 100%" />
                        <el-date-picker v-model="form.signDate" style="width:100%" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择日期时间" />
                    </el-form-item>
                </el-col>
            </el-row>
            <el-row>
                <el-col :span="24">
                    <el-form-item label="备注信息">
                        <el-input v-model="form.name" type="textarea" />
                        <el-input v-model="form.memo" type="textarea" />
                    </el-form-item>
                </el-col>
            </el-row>
@@ -50,12 +50,12 @@
        </el-form>
        <template #footer>
            <span class="dialog-footer">
                <el-button @click="dialogVisible = false" size="default">关闭</el-button>
                <el-button type="primary" @click="dialogVisible = false" size="default">确定</el-button>
                <el-button @click="resetForm" size="default">关闭</el-button>
                <el-button type="primary" @click="submitForm" size="default">确定</el-button>
            </span>
        </template>
    </el-dialog>
    <DailogSearch ref="Shows"></DailogSearch>
    <DailogSearch ref="Shows" @backNum="IdNumber"></DailogSearch>
</template>
<script lang="ts">
import { defineComponent, ref, reactive } from 'vue';
@@ -63,32 +63,79 @@
import DailogSearch from './DailogSearch.vue';
import { ElMessage, ElMessageBox } from 'element-plus';
import type { UploadProps, UploadUserFile } from 'element-plus';
import { goalManagementApi } from '/@/api/goalManagement';
export default defineComponent({
    components: { DailogSearch },
    setup() {
    setup(props, { emit }) {
        const dialogVisible = ref<boolean>(false);
        const form = reactive({
            name: '',
            region: '',
            date1: '',
            date2: '',
            delivery: false,
            type: [],
            resource: '',
            desc: '',
        const form = ref({
            indexNum: '', //目标指标编号
            memo: '', ////备注信息
            signDate: '', //责任书签订日期
            extraFile: '666', //责任书附件
            jobId: '', //岗位
        });
        const openDailog = (type: string, value: any, projectList: any, projectId: string) => {
        const titles = ref();
        const disabled = ref(false);
        // 打开弹窗
        const openDailog = (title: string, value: any, id: number) => {
            dialogVisible.value = true;
            titles.value =`${title}目标责任书`;
            disabled.value = title == '查看' ? true : false;
            if (title == '查看' || title == '修改')
                goalManagementApi()
                    .gettargetDutyfileInfoDetail(id)
                    .then((res) => {
                        if (res.data.code == 200) {
                            form.value = res.data.data;
                        } else {
                            ElMessage.error(res.data.msg);
                        }
                    });
        };
        // 导航
        const activeName = ref('1');
        // 表格
        // 提交
        const submitForm = () => {
            dialogVisible.value = false;
            goalManagementApi()
                .gettargetDutyfileInfoAddorUpdata(form.value)
                .then((res) => {
                    if (res.data.code == 200) {
                        ElMessage({
                            message: res.data.msg,
                            type: 'success',
                        });
                        emit('navAddorUpdata');
                    } else {
                        ElMessage.error(res.data.msg);
                    }
                });
            form.value = {
                indexNum: '', //目标指标编号
                memo: '', ////备注信息
                signDate: '', //责任书签订日期
                extraFile: '666', //责任书附件
                jobId: '', //岗位
            };
        };
        //   取消
        const resetForm = () => {
            dialogVisible.value = false;
            form.value = {
                indexNum: '', //目标指标编号
                memo: '', ////备注信息
                signDate: '', //责任书签订日期
                extraFile: '666', //责任书附件
                jobId: '', //岗位
            };
        };
        // 安全目标指标弹窗
        const Shows = ref();
        const daiInpt = () => {
            Shows.value.openDailog();
        };
        const IdNumber=(val:any)=>{
         form.value.jobId=val.id
        }
        // 点击上传
        const fileList = ref<UploadUserFile[]>([
            {
@@ -129,12 +176,16 @@
            }
        };
        return {
            form,
            IdNumber,
            dialogVisible,
            form,
            disabled,
            titles,
            openDailog,
            activeName,
            Shows,
            daiInpt,
            submitForm,
            resetForm,
            Shows,
            Search,
            fileList,
            handleRemove,
src/views/goalManagement/TargetBook/component/DailogSearch.vue
@@ -24,8 +24,14 @@
                    </el-row>
                </el-form>
                <el-button size="default" :icon="Delete">清除选择</el-button>
                <el-table :data="tableData" style="width: 100%; margin-top: 20px">
                    <el-table-column align="center" type="selection" />
                <el-table :data="tableData" style="width: 100%; margin-top: 20px"  @cell-click="radio">
                    <el-table-column align="center">
                        <template #default="scope">
                            <el-radio-group v-model="radio1">
                                <el-radio :label="scope.row.id" size="large">{{ null }}</el-radio>
                            </el-radio-group>
                        </template>
                    </el-table-column>
                    <el-table-column align="center" prop="date" label="岗位名称" />
                </el-table>
                <el-pagination
@@ -43,6 +49,7 @@
                />
            </el-col>
            <el-col :span="7">
            <div v-if="dynamicTags[0]==''?false:true">
                <el-tag
                    v-for="tag in dynamicTags"
                    :key="tag"
@@ -52,14 +59,15 @@
                    :disable-transitions="false"
                    @close="handleClose(tag)"
                >
                    {{ tag }}
                    {{ tag.id }}
                </el-tag>
                </div>
            </el-col>
        </el-row>
        <template #footer>
            <span class="dialog-footer">
                <el-button @click="dialogVisible = false" size="default">关闭</el-button>
                <el-button type="primary" @click="dialogVisible = false" size="default">确定</el-button>
                <el-button type="primary" @click="submitForm" size="default">确定</el-button>
            </span>
        </template>
    </el-dialog>
@@ -68,7 +76,7 @@
import { defineComponent, reactive, ref } from 'vue';
import { Delete, FullScreen } from '@element-plus/icons-vue';
export default defineComponent({
    setup() {
    setup(props,{emit}) {
        const dialogVisible = ref<boolean>(false);
        const openDailog = () => {
            dialogVisible.value = true;
@@ -80,22 +88,24 @@
        });
        // 表格
        const tableData = [
            {
            {   id:1,
                date: '2016-05-03',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                id:2,
                date: '2016-05-02',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
            {
                id:3,
                date: '2016-05-04',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
            {    id:4,
                date: '2016-05-01',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
@@ -109,10 +119,24 @@
            console.log(`current page: ${val}`);
        };
        // 右方点击添加后显示标签
        const dynamicTags = ref(['Tag 1', 'Tag 2', 'Tag 3']);
        const dynamicTags = ref(['']);
        const handleClose = (tag: string) => {
            dynamicTags.value.splice(dynamicTags.value.indexOf(tag), 1);
            radio1.value = '';
        };
        const radio1 = ref('');
        const radio = (event: any) => {
            dynamicTags.value[0] = event;
        };
        const clear=()=>{
            dynamicTags.value=['']
            radio1.value=""
        }
            const submitForm=()=>{
            let obj=JSON.parse(JSON.stringify(dynamicTags.value))
            emit("backNum",obj[0])
            dialogVisible.value = false
        }
        //全屏
        const full = ref(false);
        const toggleFullscreen = () => {
@@ -123,6 +147,9 @@
            }
        };
        return {
            radio1,
            radio,
            clear,
            dialogVisible,
            openDailog,
            ruleForm,
@@ -132,6 +159,7 @@
            handleCurrentChange,
            dynamicTags,
            handleClose,
            submitForm,
            Delete,
            full,
            toggleFullscreen,
src/views/goalManagement/TargetBook/index.vue
@@ -1,175 +1,243 @@
<template>
    <div>
    <el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
        <el-row>
            <el-col :span="4">
                <el-form-item size="default">
                    <el-input v-model="ruleForm.name" placeholder="请选择岗位">
    <div>
        <el-form ref="ruleFormRef" :model="ruleForm" status-icon label-width="20px" class="topTitle">
            <el-row>
                <el-col :span="4">
                    <el-form-item size="default">
                        <el-input v-model="ruleForm.searchParams.jobId" placeholder="请选择岗位">
                            <template #append> <el-button :icon="Search" @click="openSearch" /> </template
                        ></el-input>
                </el-form-item>
            </el-col>
            <!-- <el-col :span="4">
                    </el-form-item>
                </el-col>
                <!-- <el-col :span="4">
                <el-form-item>
                    <el-input v-model="ruleForm.checkPass" placeholder="目标指标编号" />
                </el-form-item>
            </el-col> -->
            <el-col :span="4">
                <el-form-item>
                    <el-button size="default" type="primary" @click="submitForm(ruleFormRef)">查询</el-button>
                    <el-button size="default" @click="resetForm(ruleFormRef)">重置</el-button>
                </el-form-item>
            </el-col>
        </el-row>
    </el-form>
    <div class="minCenter">
                <el-col :span="4">
                    <el-form-item>
                        <el-button size="default" type="primary" @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" plain :icon="EditPen">修改</el-button>
                    <el-button size="default" type="danger" :icon="Delete" plain>删除</el-button>
                    <el-button size="default" type="primary" :icon="Plus" @click="openD('新建')">新建</el-button>
                    <el-button size="default" :disabled="warning" type="warning" plain :icon="EditPen">修改</el-button>
                    <el-button size="default" :disabled="danger" type="danger" :icon="Delete" plain @click="onDeleteAll">删除</el-button>
                </div>
                <div>
                    <!-- <el-button size="default" :icon="Download"></el-button>
                    <el-button size="default" :icon="Refresh"></el-button> -->
                </div>
            </div>
        <el-table ref="multipleTableRef" :data="tableData" style="width: 100%">
            <el-table-column type="selection" align="center" width="55" />
            <el-table-column type="index" label="序号" align="center" width="70" />
            <el-table-column label="岗位" align="center" sortable>
                <template #default="scope">{{ scope.row.date }}</template>
            </el-table-column>
            <el-table-column property="name" align="center" label="责任书签订日期" sortable />
            <el-table-column property="name" align="center" label="附件" sortable />
            <el-table-column property="address" label="备注信息" align="center" sortable show-overflow-tooltip />
            <!-- <el-table-column property="address" label="奖惩依据" align="center" sortable show-overflow-tooltip /> -->
            <!-- <el-table-column property="address" label="指标级别" align="center" sortable show-overflow-tooltip />
            <el-table-column property="address" label="完成期限" align="center" sortable show-overflow-tooltip />
            <el-table-column property="address" label="状态" align="center" sortable show-overflow-tooltip /> -->
            <el-table-column label="操作" align="center" style="width:300px">
                <template #default>
                    <el-button link type="primary" size="default" :icon="View">查看</el-button>
                    <el-button link type="primary" size="default" :icon="EditPen">修改</el-button>
                    <el-button link type="primary" size="default" :icon="Delete">删除</el-button>
                </template>
            </el-table-column>
        </el-table>
        <div class="pages">
            <el-pagination
                v-model:currentPage="currentPage4"
                v-model:page-size="pageSize4"
                :page-sizes="[100, 200, 300, 400]"
                :small="small"
                :disabled="disabled"
                :background="background"
                layout="total, sizes, prev, pager, next, jumper"
                :total="400"
                @size-change="handleSizeChange"
                @current-change="handleCurrentChange"
            />
            <el-table ref="multipleTableRef" :data="tableData" @selection-change="handleSelectionChange" style="width: 100%">
                <el-table-column type="selection" align="center" width="55" />
                <el-table-column type="index" label="序号" align="center" width="70" />
                <el-table-column property="jobId" align="center" label="岗位" sortable />
                <el-table-column property="signDate" align="center" label="责任书签订日期" sortable />
                <el-table-column property="extraFile" align="center" label="附件" sortable />
                <el-table-column property="memo" label="备注信息" align="center" sortable show-overflow-tooltip />
                <el-table-column label="操作" align="center" style="width: 300px">
                    <template #default="scope">
                        <el-button link type="primary" size="default" :icon="View" @click="openD('查看', scope.row.id)">查看</el-button>
                        <el-button link type="primary" size="default" :icon="EditPen" @click="openD('修改', scope.row.id)">修改</el-button>
                        <el-button link type="primary" size="default" :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>
            <DailogAdd ref="openAdd" @navAddorUpdata="onAddorUpdata"></DailogAdd>
            <DailogSearch ref="openUser"></DailogSearch>
        </div>
        <DailogAdd ref="openAdd"></DailogAdd>
        <DailogSearch ref="openUser"></DailogSearch>
    </div>
    </div>
</template>
<script lang="ts">
import DailogAdd from './component/DailogAdd.vue'
import DailogSearch from './component/DailogSearch.vue'
import DailogAdd from './component/DailogAdd.vue';
import DailogSearch from './component/DailogSearch.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,Search} from '@element-plus/icons-vue';
interface User {
    date: string;
    name: string;
    address: string;
}
import { Plus, Delete, Upload, Download, Refresh, View, EditPen, Search } from '@element-plus/icons-vue';
import { goalManagementApi } from '/@/api/goalManagement';
import type { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
export default defineComponent({
    components: { ElButton, ElInput,DailogAdd,DailogSearch },
    components: { ElButton, ElInput, DailogAdd, DailogSearch },
    setup() {
        // 搜索条件
        const ruleForm = reactive({
            pass: '',
            checkPass: '',
            pageSize: 10,
            pageIndex: 1,
            searchParams: {
                jobId: '', ////岗位号/外键
            },
        });
        const formatter = (row: User, column: TableColumnCtx<User>) => {
            return row.address;
        // 重置
        const resetForm = () => {
            ruleForm.searchParams.jobId = '';
            listApi();
        };
        const tableData: User[] = [
            {
                date: '2016-05-03',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-02',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-04',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-01',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-08',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-06',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
            {
                date: '2016-05-07',
                name: 'Tom',
                address: 'No. 189, Grove St, Los Angeles',
            },
        ];
        const currentPage4 = ref(4);
        const pageSize4 = ref(100);
        const small = ref(false);
        const disabled = ref(false);
        const background = ref(false);
        const listApi = () => {
            goalManagementApi()
                .gettargetDutyfileInfoList(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);
                    }
                });
        };
        //
        const handleClick = (val: any) => {
            let targetType = JSON.parse(JSON.stringify(val));
            ruleForm.searchParams.jobId = targetType.paneName;
            listApi();
        };
        onMounted(() => {
            listApi();
        });
        const onAddorUpdata = () => {
            listApi();
        };
        // 表格
        const tableData = ref();
        const currentPage4 = ref();
        const pageSize4 = ref();
        const total = ref();
        const handleSizeChange = (val: number) => {
            console.log(`${val} items per page`);
            // console.log(`${val} items per page`);
            ruleForm.pageSize = val;
            listApi();
        };
        const handleCurrentChange = (val: number) => {
            console.log(`current page: ${val}`);
            // console.log(`current page: ${val}`);
            ruleForm.pageIndex = val;
            listApi();
        };
        // 弹窗
        const openAdd = ref();
        const openD = () => {
            openAdd.value.openDailog();
        const openD = (title: String, id: number) => {
            openAdd.value.openDailog(title, ruleForm.searchParams.jobId, id);
        };
        const openUser =ref();
        const openSearch=()=>{
            openUser.value.openDailog()
        }
        // 删除
        const onDelete = (id: number) => {
            ElMessageBox.confirm('确定删除所选项吗?', 'Warning', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning',
            })
                .then(() => {
                    goalManagementApi()
                        .gettargetDutyfileInfoDelete(id)
                        .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.toString();
            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()
                        .gettargetDutyfileInfoDelete(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 openUser = ref();
        const openSearch = () => {
            openUser.value.openDailog();
        };
        return {
            ruleForm,
            resetForm,
            listApi,
            handleClick,
            onAddorUpdata,
            tableData,
            formatter,
            currentPage4,
            pageSize4,
            total,
            handleSizeChange,
            handleCurrentChange,
            openAdd,
            openD,
            small,
            disabled,
            background,
            ruleForm,
            onDelete,
            warning,
            danger,
            deletAll,
            handleSelectionChange,
            onDeleteAll,
            openUser,
            openSearch,
            Plus,
@@ -178,8 +246,8 @@
            Download,
            Refresh,
            View,
            EditPen,
            Search
            EditPen,
            Search,
        };
    },
});
@@ -192,9 +260,9 @@
    padding: 0 20px;
}
.topTitle {
  background-color: #fff;
  padding: 20px 0px 20px 0px;
  margin-bottom:10px ;
    background-color: #fff;
    padding: 20px 0px 20px 0px;
    margin-bottom: 10px;
}
.btns {
    padding: 10px 0px 10px 0px;
src/views/goalManagement/targetDecompositionYear/component/Dailog.vue
@@ -34,17 +34,17 @@
                <el-button type="primary" size="default" @click="daiAdd" :disabled="disabled">新增</el-button>
            </el-tab-pane>
        </el-tabs>
        <el-table :data="tableData" style="width: 100%">
            <el-table-column align="center" prop="dutyDepartmentId" label="责任部门" width="180" />
            <el-table-column align="center" prop="value" label="考核指标" width="180" />
            <el-table-column align="center" prop="makerDepartmentId" label="制定人部门" />
            <el-table-column align="center" prop="makeDate" label="制定日期" />
            <el-table-column align="center" prop="commitPersonId" label="上报人" />
            <el-table-column align="center" label="操作">
                <template #default>
                    <el-button link type="primary">查看</el-button>
                    <el-button link :disabled="disabled" type="primary">修改</el-button>
                    <el-button link :disabled="disabled" type="primary">删除</el-button>
        <el-table :data="form.targetDivideDetailList" style="width: 100%">
            <el-table-column align="center" property="dutyDepartmentId" label="责任部门" width="180" />
            <el-table-column align="center" property="value" label="考核指标" width="180" />
            <el-table-column align="center" property="makerDepartmentId" label="制定人部门" />
            <el-table-column align="center" property="makeDate" label="制定日期" />
            <el-table-column align="center" property="commitPersonId" label="上报人" />
            <el-table-column align="center" property="操作">
                <template #default="scope">
                    <el-button link type="primary" @click="daiAdd('查看', scope.row)">查看</el-button>
                    <el-button link :disabled="disabled" type="primary" @click="daiAdd('修改', scope.row)">修改</el-button>
                    <el-button link :disabled="disabled" type="primary" @click="Delete(scope.row)">删除</el-button>
                </template>
            </el-table-column>
        </el-table>
@@ -103,23 +103,43 @@
            Show.value.openDailog();
        };
        const formUp = reactive({
            targetId:"", //关联的目标指标/外键
            targetId: '', //关联的目标指标/外键
            delTargetDivideDetails: '', //要删除的目标指标分解ID,多个用逗号隔开
            targetDivideDetailList: [], //目标指标分解列表
        });
        const add = (e:any) => {
            formUp.targetDivideDetailList.push(e)
        const add = (e: any) => {
            formUp.targetDivideDetailList.push(e);
            // let obj=JSON.parse(JSON.stringify(form.value))
            formUp.targetId=form.value.id
            goalManagementApi().gettargetDivideDetail(formUp).then(res=>{
                if(res.data.code==200){
                }
            })
            formUp.targetId = form.value.id;
            goalManagementApi()
                .gettargetDivideDetail(formUp)
                .then((res) => {
                    if (res.data.code == 200) {
                        ElMessage({
                            message: res.data.msg,
                            type: 'success',
                        });
                    }else{
                        ElMessage.error(res.data.msg);
                    }
                });
        };
        const submitForm=()=>{
        }
        const submitForm = () => {};
        // 删除
        const Delete = (data: any) => {
            formUp.delTargetDivideDetails=data.id
            goalManagementApi()
                .gettargetDivideDetail(formUp).then(res=>{
                    if(res.data.code==200){
                        ElMessage({
                            message: res.data.msg,
                            type: 'success',
                        });
                    }else{
                        ElMessage.error(res.data.msg);
                    }
                })
        };
        // 安全目标指标弹窗
        const Shows = ref();
        const daiInpt = () => {
@@ -161,7 +181,8 @@
            titles,
            add,
            formUp,
            submitForm
            submitForm,
            Delete
        };
    },
});
src/views/goalManagement/targetSettings/component/dailogAdd.vue
@@ -38,7 +38,8 @@
                </el-col>
                <el-col :span="11" :offset="2">
                    <el-form-item label="完成期限" size="default">
                        <el-date-picker v-model="form.completeDate" format="YYYY-MM-DD HH:mm:ss" type="datetime" placeholder="请选择" style="width: 100%" />
                        <el-date-picker v-model="form.completeDate" format="YYYY-MM-DD HH:mm:ss" type="datetime"
                            placeholder="请选择" style="width: 100%" />
                    </el-form-item>
                </el-col>
            </el-row>
@@ -49,7 +50,8 @@
        <template #footer>
            <span class="dialog-footer">
                <el-button @click="resetForm(ruleFormRef)" size="default">关闭</el-button>
                <el-button type="primary" v-if="titles == '查看目标设定' ? false : true" @click="submitForm(ruleFormRef)" size="default">确定</el-button>
                <el-button type="primary" v-if="titles == '查看目标设定' ? false : true" @click="submitForm(ruleFormRef)"
                    size="default">确定</el-button>
            </span>
        </template>
    </el-dialog>
@@ -73,7 +75,7 @@
            memo: '', ////备注信息
            targetType: '', ////指标类型 1:年指标 2:月指标
            completeDate: '', ////完成期限
            divideStatus: '1', ////分解状态 1:已分解 2:未分解
            divideStatus: '2', ////分解状态 1:已分解 2:未分解
            value: '', ////指标值
        });
        const titles = ref();
@@ -134,6 +136,7 @@
                },
            ],
        });
        // 提交
        const submitForm = async (formEl: FormInstance | undefined) => {
            if (!formEl) return;
            await formEl.validate((valid, fields) => {
@@ -169,7 +172,7 @@
                value: '', ////指标值
            };
        };
        //   取消
        const resetForm = (formEl: FormInstance | undefined) => {
            if (!formEl) return;
            formEl.resetFields();
@@ -192,6 +195,7 @@
            Shows,
            form,
            full,
            disabled,
            toggleFullscreen,
            rules,
            ruleFormRef,