浏览代码

考评指标管理中指标项配置增删改查服务联调,新增搜索功能;修改目录项,增加考评首页项;指标管理新增搜索功能;

SunZehao 2 年之前
父节点
当前提交
db2cb71d28

+ 54 - 0
src/api/api.js

@@ -77,4 +77,58 @@ export function apiGetIndicatordictionaryList(params) {
         params: params
     })
 }
+//----"指标项-保存/修改"
+export function apiGetIndicatordicsaveList(params) {
+    return httpRequest.post('indicator-dictionary/save', params)
+}
+//----"指标项-删除"
+export function apiGetIndicatordicdeleteList(params) {
+    return httpRequest({
+        url: `indicator-dictionary/remove/${params}`,
+        method: 'delete'
+    })
+}
+//----"指标项条目-查询"
+export function apiGetdataDictionaryList() {
+    return httpRequest({
+        url: 'data-dictionary/list?superKey=ZBX0001',
+        method: 'get'
+    })
+}
+//----考评规则配置
+//----考评规则-list
+export function apiGetevaluateRuleList(params) {
+    return httpRequest({
+        url: 'evaluate-rule/list',
+        method: 'get',
+        params: params
+    })
+}
+//----"规则-保存/修改"
+export function apiGetevaluateRuleSaveList(params) {
+    return httpRequest.post('evaluate-rule/save', params)
+}
+//----"规则-删除"
+export function apiGetevaluateRuledeleteList(params) {
+    return httpRequest({
+        url: `evaluate-rule/remove/${params}`,
+        method: 'delete'
+    })
+}
+//----"规则模块,规则阶段数据"
+export function apiGetdatadictionaryList(params) {
+    return httpRequest({
+        url: 'data-dictionary/list',
+        method: 'get',
+        params: params
+    })
+}
+//----考评规则详情-list
+export function apiGetevaluateRuleinfoList(params) {
+    return httpRequest({
+        url: 'evaluate-rule-info/list',
+        method: 'get',
+        params: params
+    })
+}
 //----------------------------------------基础信息配置------------------------------------------------

+ 361 - 0
src/components/evaluationSystem/IndicatorItemPage.vue

@@ -0,0 +1,361 @@
+<template>
+    <div class="indicatorItem">
+        <el-dialog title="指标项配置管理" v-model="editEvaluaVisible" width="70vw" :close-on-click-modal="false">
+            <div class="indicatorItemAll">
+                <div class="indicatorItemBtn">
+                    <div class="collectSeach">
+                        <div class="exceed">
+                            <span class="indicatorSpan">指标项:</span>
+                            <el-input v-model="indicItem" placeholder="请输入指标项名称"></el-input>
+                        </div>
+                        <el-button type="primary" style="margin-left: 10px;" @click="getSeachData">搜索</el-button>
+                        <el-button style="margin-left: 10px;" @click="resetSeach">重置</el-button>
+                    </div>
+                    <div style="display:flex;justify-content: space-between;padding: 10px;">
+                        <el-row :gutter="10" class="PeriodBtn">
+                            <el-col :span="1.5">
+                                <el-button
+                                type="primary"
+                                plain
+                                icon="Plus"
+                                size="mini"
+                                @click="handleAdd"
+                                >新增</el-button>
+                            </el-col>
+                            <el-col :span="1.5">
+                                <el-button
+                                type="success"
+                                plain
+                                icon="Edit"
+                                size="mini"
+                                @click="handleEdit"
+                                :disabled="changeDateSelect.length === 0 || changeDateSelect.length>1"
+                                >修改</el-button>
+                            </el-col>
+                            <el-col :span="1.5">
+                                <el-button
+                                type="danger"
+                                plain
+                                icon="Delete"
+                                size="mini"
+                                :disabled="changeDateSelect.length === 0"
+                                @click="handleDelete"
+                                >批量删除</el-button>
+                            </el-col>
+                        </el-row>
+                    </div>
+                    <div class="indicatorItemTableData">
+                        <el-table :data="indicatoroptions" border style="width: 100%" @select="rowClick" @select-all="rowClick">
+                            <el-table-column type="selection" label="操作" align="center"></el-table-column>
+                            <el-table-column label="指标项名称" prop="optionName" />
+                            <el-table-column label="指标项编码" prop="optionCode" />
+                            <el-table-column label="创建者" prop="createBy" />
+                            <el-table-column label="创建时间" prop="createTime" />
+                            <el-table-column label="描述">
+                                <template #default="scope">
+                                    <span>{{scope.row.des}}</span>
+                                </template>
+                            </el-table-column>
+                        </el-table>
+                        <el-pagination
+                            @size-change="handleSizeChange"
+                            @current-change="handleCurrentChange"
+                            :current-page="page.currentPage"
+                            :page-size="page.pagesize"
+                            layout="total, prev, pager, next, jumper"
+                            :total="page.total">
+                        </el-pagination>
+                    </div>
+                    <div class="onlyDialog">
+                        <el-dialog :title="title" v-model="dialogVisible" width="600px" :close-on-click-modal="false">
+                            <div class="periodFrom">
+                                <el-form :model="itemForm" :rules="rules" ref="itemForm" label-width="100px" :validate-on-rule-change="false">
+                                    <el-form-item label="指标项名称" prop="optionName">
+                                        <el-select v-model="itemForm.optionName" placeholder="请选择指标项名称">
+                                            <el-option
+                                            v-for="item in indicItemoptions"
+                                            :key="item.keyValue"
+                                            :label="item.keyName"
+                                            :value="item.keyValue">
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                    <el-form-item label="描述">
+                                        <el-input v-model="itemForm.desc" :rows="5" type="textarea" placeholder="请输入描述"></el-input>
+                                    </el-form-item>
+                                </el-form>
+                            </div>
+                            <template #footer>
+                                <span class="dialog-footer">
+                                    <el-button @click="dialogVisible = false">取 消</el-button>
+                                    <el-button type="primary" @click="saveindicatorItemMsg('itemForm')">确 定</el-button>
+                                </span>
+                            </template>
+                        </el-dialog>
+                    </div>
+                </div>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import {apiGetIndicatordictionaryList, apiGetdataDictionaryList, apiGetIndicatordicsaveList, apiGetIndicatordicdeleteList} from '../../api/api'
+export default {
+    data() {
+        return {
+            editEvaluaVisible: false,
+            isSave: false,
+            changeDateSelect: [],
+            indicatoroptions: [],
+            indicItemoptions: [],
+            indicItem: '',
+            evaluationIndexData:[],
+            itemForm: {
+                optionName: '',
+                desc: ''
+            },
+            rules: {
+                optionName: [
+                    { required: true, message: '请选择指标名称', trigger: 'change' }
+                ]
+            },
+            page:{
+                pagesize: 12,
+                currentPage: 1,
+                total: 0
+            },
+            evalradio: {},
+            rowevalradio: {},
+            dialogVisible: false
+        }
+    },
+    methods: {
+        init(row) {
+            this.editEvaluaVisible = true
+            this.indicatoroptions = []
+            this.indicItemoptions = []
+            this.rowevalradio = row
+            this.getIndicatorItemData(row)
+            this.getindicItemData()
+        },
+        // 查询指标项数据
+        getIndicatorItemData(row, type) {
+            let that = this
+            let params = {
+                pageNum: this.page.currentPage,
+                pageSize: this.page.pagesize,
+                indicatorId: row.id
+            }
+            if (type) {
+                params.optionName = that.indicItem
+            }
+            apiGetIndicatordictionaryList(params).then(datas =>{
+                if (datas) {
+                    that.indicatoroptions = datas
+                    that.changeDateSelect = []
+                }
+            })
+        },
+        // 查询指标项条目
+        getindicItemData() {
+            let that = this
+            apiGetdataDictionaryList().then(datas =>{
+                if (datas && datas.data) {
+                    that.indicItemoptions = datas.data
+                }
+            })
+        },
+        // 新增区域信息
+        handleAdd() {
+            this.dialogVisible = true
+            this.isSave = false
+            this.title = '新增指标项管理'
+            this.$nextTick(() =>{
+                this.itemForm = {
+                    optionName: '',
+                    desc: ''
+                }
+                // this.$refs['itemForm'].resetFields()
+            })
+        },
+        handleEdit() {
+            this.dialogVisible = true
+            this.isSave = true
+            this.title = '修改指标项管理'
+            this.evalradio = this.changeDateSelect[0]
+            this.itemForm = {
+                optionName: this.evalradio.optionCode,
+                desc: this.evalradio.des
+            }
+        },
+        saveindicatorItemMsg(formName) {
+            let that = this
+            that.$refs[formName].validate((valid) => {
+                if (valid) {
+                    that.saveAndEditIndicatorData()
+                }
+            });
+        },
+        //新增/修改指标数据
+        saveAndEditIndicatorData() {
+            let that = this
+            let params = {
+                indicatorId: that.rowevalradio.id,
+                optionCode: that.itemForm.optionName,
+                des: that.itemForm.desc
+            }
+            if (that.isSave) {
+                params.id = this.evalradio.id
+            }
+            apiGetIndicatordicsaveList(params).then(datas =>{
+                if (!that.isSave) {
+                    that.$message({
+                        message: '指标项新增成功',
+                        type: 'success'
+                    });
+                } else {
+                    that.$message({
+                        message: '指标项修改成功',
+                        type: 'success'
+                    });
+                }
+                that.dialogVisible = false
+                that.getIndicatorItemData(that.rowevalradio)
+            })
+        },
+        //删除指标数据
+        handleDelete() {
+            this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(async() => {
+                let that = this
+                let paramsArr = []
+                this.changeDateSelect.forEach(it =>{
+                    paramsArr.push(it.id)
+                })
+                await apiGetIndicatordicdeleteList(paramsArr.join(',')).then(datas =>{})
+                that.$message({
+                    type: 'success',
+                    message: '删除成功!'
+                });
+                that.getIndicatorItemData(that.rowevalradio)
+            })
+        },        
+        rowClick(selection, row) {
+            this.changeDateSelect = selection
+        },
+        getSeachData() {
+            this.page.currentPage = 1
+            this.getIndicatorItemData(this.rowevalradio, 'seach')
+        },
+        resetSeach() {
+            this.page.currentPage = 1
+            this.indicItem = ''
+            this.getIndicatorItemData(this.rowevalradio)
+        },
+        handleSizeChange(val){
+            this.page.pagesize = val
+        },
+        handleCurrentChange(val){
+            this.page.currentPage =val
+        },
+    }
+}
+</script>
+
+<style lang="less">
+.indicatorItem{
+    .el-overlay{
+        .el-dialog{
+            margin-top: 5vh !important;
+            .el-dialog__body{
+                padding: 0 20px 30px 20px !important;
+                .indicatorItemAll{
+                    .el-select, .el-input{
+                        width: 100%;
+                    }
+                    .indicatorItemBtn{
+                        padding: 10px 20px 0 20px;
+                        .collectSeach{
+                            display: flex;
+                            margin: 20px 20px 10px;
+                                .exceed{
+                                    display: flex;
+                                    .indicatorSpan{
+                                        margin-top: 3px;
+                                        width: 80px;
+                                        display: inline-block;
+                                    }
+                                    .el-input{
+                                        margin-right:10px;
+                                        .el-input__inner{
+                                            height:30px;
+                                        }
+                                        .el-input__suffix{
+                                            .el-select__caret{
+                                                line-height:30px;
+                                            }
+                                        }
+                                    }
+                                }
+                                .el-select{
+                                    margin-right:10px;
+                                    .el-input__inner{
+                                        height:30px;
+                                    }
+                                    .el-input__suffix{
+                                        .el-select__caret{
+                                            line-height:30px;
+                                        }
+                                    }
+                                }
+                        }
+                        span{
+                            font-size:14px;
+                        }
+                        .PeriodBtn{
+                            padding-left: 10px;
+                        }
+                        .el-button{
+                            height: 30px;
+                            padding: 0 30px ;
+                            span{
+                                margin:0;
+                            }
+                        }
+                    }
+                    .indicatorItemTableData{
+                        padding: 10px 20px;
+                        .el-table{
+                            .el-table__body-wrapper{
+                                height: 55vh !important;
+                            }
+                            .el-input__inner{
+                                height: 30px !important;
+                            }
+                            .el-radio__label{
+                                display: none;
+                            }
+                        }
+                        .el-pagination{
+                            margin-top: 20px;
+                            text-align: end;
+                            position: relative;
+                        }
+                    }
+                    .onlyDialog{
+                        .el-overlay{
+                            .el-dialog{
+                                margin-top: 10vh !important;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
+</style>

+ 162 - 131
src/components/evaluationSystem/evaluationIndexPage.vue

@@ -4,24 +4,14 @@
             <p class="titleSty">考评指标管理</p>
             <div class="collectSeach">
                 <div class="exceed">
-                    <span style="margin-top: 3px;">指标名称:</span>
-                    <el-select v-model="indicatorIdS" placeholder="请选择指标名称">
-                        <el-option
-                        v-for="item in indicatoroptions"
-                        :key="item.id"
-                        :label="item.optionName"
-                        :value="item.id">
-                        </el-option>
-                    </el-select>
+                    <span class="exceedSpan" style="margin-top: 3px;">指标名称:</span>
+                    <el-input v-model="indicatorIdS" placeholder="请输入指标名称"></el-input>
                 </div>
                 <el-button type="primary" style="margin-left: 10px;" @click="getSeachData">搜索</el-button>
-                <el-button style="margin-left: 10px;" @click="reset">重置</el-button>
+                <el-button style="margin-left: 10px;" @click="resetSeach">重置</el-button>
             </div>
             <div style="display:flex;justify-content: space-between;padding: 10px;">
                 <el-row :gutter="10" class="PeriodBtn">
-                    
-                        <!-- @click="handleAdd"
-                        @click="handleUpdate" -->
                     <el-col :span="1.5">
                         <el-button
                         type="primary"
@@ -57,6 +47,7 @@
                         plain
                         icon="Upload"
                         size="mini"
+                        disabled
                         @click="handleImport"
                         >导入</el-button>
                     </el-col>
@@ -66,7 +57,7 @@
                             plain
                             icon="Download"
                             size="mini"
-                            @click="handleExport"
+                            disabled
                         >导出</el-button>
                     </el-col>
                 </el-row>
@@ -88,6 +79,11 @@
                             <span>{{scope.row.desc}}</span>
                         </template>
                     </el-table-column>
+                    <el-table-column label="操作">
+                        <template #default="scope">
+                            <p class="indicitem" @click="editEvaluaIndex(scope.row)">指标项配置</p>
+                        </template>
+                    </el-table-column>
                 </el-table>
                 <el-pagination
                     @size-change="handleSizeChange"
@@ -98,58 +94,54 @@
                     :total="page.total">
                 </el-pagination>
             </div>
-            <el-dialog :title="title" v-model="dialogVisible" width="600px" :close-on-click-modal="false">
-                <div class="periodFrom">
-                    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" :validate-on-rule-change="false">
-                        <el-form-item label="指标名称" prop="indicatorName">
-                            <el-select v-model="ruleForm.indicatorName" placeholder="请选择指标名称">
-                                <el-option
-                                v-for="item in indicatoroptions"
-                                :key="item.optionName"
-                                :label="item.optionName"
-                                :value="item.optionName">
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="指标编码" prop="indicatorCode">
-                            <el-input v-model="ruleForm.indicatorCode" placeholder="请输入指标编码"></el-input>
-                        </el-form-item>
-                        <el-form-item label="指标单位" prop="indicatorUnit">
-                            <el-input v-model="ruleForm.indicatorUnit" placeholder="请输入指标单位"></el-input>
-                        </el-form-item>
-                        <el-form-item label="业务板块" prop="binSection">
-                            <el-input v-model="ruleForm.binSection" placeholder="请输入业务板块"></el-input>
-                        </el-form-item>
-                        <el-form-item label="业务阶段" prop="binStage">
-                            <el-input v-model="ruleForm.binStage" placeholder="请输入业务阶段"></el-input>
-                        </el-form-item>
-                        <el-form-item label="是否量化">
-                            <el-radio-group v-model="ruleForm.isQuantified">
-                                <el-radio border label="是" />
-                                <el-radio border label="否" />
-                            </el-radio-group>
-                        </el-form-item>
-                        <el-form-item label="是否专项">
-                            <el-radio-group v-model="ruleForm.isAdditional">
-                                <el-radio border label="是" />
-                                <el-radio border label="否" />
-                            </el-radio-group>
-                        </el-form-item>
-                        <el-form-item label="指标顺序" prop="orderNum">
-                            <el-input-number v-model="ruleForm.orderNum" :min="1" />
-                        </el-form-item>
-                        <el-form-item label="描述" prop="desc">
-                            <el-input v-model="ruleForm.desc" :rows="5" type="textarea" placeholder="请输入描述"></el-input>
-                        </el-form-item>
-                    </el-form>
-                </div>
-                <template #footer>
-                    <span class="dialog-footer">
-                        <el-button @click="dialogVisible = false">取 消</el-button>
-                        <el-button type="primary" @click="saveEvaluationIndexMsg('ruleForm')">确 定</el-button>
-                    </span>
-                </template>
-            </el-dialog>
+            <div class="indexdialog">
+                <el-dialog :title="title" v-model="dialogVisible" width="600px" :close-on-click-modal="false">
+                    <div class="periodFrom">
+                        <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" :validate-on-rule-change="false">
+                            <el-form-item label="指标名称" prop="indicatorName">
+                                <el-input v-model="ruleForm.indicatorName" placeholder="请输入指标名称"></el-input>
+                            </el-form-item>
+                            <el-form-item label="指标编码" prop="indicatorCode">
+                                <el-input v-model="ruleForm.indicatorCode" placeholder="请输入指标编码"></el-input>
+                            </el-form-item>
+                            <el-form-item label="指标单位" prop="indicatorUnit">
+                                <el-input v-model="ruleForm.indicatorUnit" placeholder="请输入指标单位"></el-input>
+                            </el-form-item>
+                            <el-form-item label="业务板块" prop="binSection">
+                                <el-input v-model="ruleForm.binSection" placeholder="请输入业务板块"></el-input>
+                            </el-form-item>
+                            <el-form-item label="业务阶段" prop="binStage">
+                                <el-input v-model="ruleForm.binStage" placeholder="请输入业务阶段"></el-input>
+                            </el-form-item>
+                            <el-form-item label="是否量化">
+                                <el-radio-group v-model="ruleForm.isQuantified">
+                                    <el-radio border label="是" />
+                                    <el-radio border label="否" />
+                                </el-radio-group>
+                            </el-form-item>
+                            <el-form-item label="是否专项">
+                                <el-radio-group v-model="ruleForm.isAdditional">
+                                    <el-radio border label="是" />
+                                    <el-radio border label="否" />
+                                </el-radio-group>
+                            </el-form-item>
+                            <el-form-item label="指标顺序" prop="orderNum">
+                                <el-input-number v-model="ruleForm.orderNum" :min="1" />
+                            </el-form-item>
+                            <el-form-item label="描述" prop="desc">
+                                <el-input v-model="ruleForm.desc" :rows="5" type="textarea" placeholder="请输入描述"></el-input>
+                            </el-form-item>
+                        </el-form>
+                    </div>
+                    <template #footer>
+                        <span class="dialog-footer">
+                            <el-button @click="dialogVisible = false">取 消</el-button>
+                            <el-button type="primary" @click="saveEvaluationIndexMsg('ruleForm')">确 定</el-button>
+                        </span>
+                    </template>
+                </el-dialog>
+            </div>
+            <indicator-item ref="indicatorItem"></indicator-item>
         </div>
         <import-dailog ref="importPage" @successImport="successImport" @importLoading="importLoading"></import-dailog>
     </div>
@@ -157,9 +149,10 @@
 
 <script>
 import importDailog from '../importPage/importDailog.vue'
+import indicatorItem from './IndicatorItemPage.vue'
 import {apiGetIndicatorList, apiGetIndicatorSave, apiGetIndicatorDelete, apiGetIndicatordictionaryList} from '../../api/api'
 export default {
-  components: { importDailog },
+  components: { importDailog, indicatorItem },
     data() {
         return {
             dialogVisible: false,
@@ -209,7 +202,7 @@ export default {
                 total: 0
             },
             evalradio: {},
-            loadingImport: false           
+            loadingImport: false,
         }
     },
     created() {
@@ -218,12 +211,14 @@ export default {
     },
     methods:{
         // 查询指标数据
-        getEvaluationData() {
+        getEvaluationData(type) {
             let that = this
             let params = {
                 pageNum: this.page.currentPage,
                 pageSize: this.page.pagesize,
-
+            }
+            if (type) {
+                params.indicatorName = that.indicatorIdS
             }
             apiGetIndicatorList(params).then(datas =>{
                 if (datas && datas.data) {
@@ -238,7 +233,6 @@ export default {
             let params = {
                 pageNum: this.page.currentPage,
                 pageSize: this.page.pagesize,
-
             }
             apiGetIndicatordictionaryList(params).then(datas =>{
                 if (datas) {
@@ -252,7 +246,18 @@ export default {
             this.isSave = false
             this.title = '新增考评管理'
             this.$nextTick(() =>{
-                this.$refs['ruleForm'].resetFields()
+                // this.$refs['ruleForm'].resetFields()
+                this.ruleForm = {
+                    indicatorName: '',
+                    indicatorCode: '',
+                    indicatorUnit: '',
+                    binSection: '',
+                    binStage: '',
+                    isQuantified: '否',
+                    isAdditional: '否',
+                    orderNum: '',
+                    desc: ''
+                }
             })
         },
         handleEdit() {
@@ -310,6 +315,7 @@ export default {
                     });
                 }
                 that.dialogVisible = false
+                that.changeDateSelect = []
                 that.getEvaluationData()
             })
         },
@@ -322,7 +328,7 @@ export default {
             }).then(async() => {
                 let that = this
                 let paramsArr = []
-                this.changeDateSelect.forEach(it =>{
+                that.changeDateSelect.forEach(it =>{
                     paramsArr.push(it.id)
                 })
                 await apiGetIndicatorDelete(paramsArr.join(',')).then(datas =>{})
@@ -332,18 +338,22 @@ export default {
                 });
                 that.getEvaluationData()
             })
-        },
-        
+        },        
         rowClick(selection, row) {
             this.changeDateSelect = selection
         },
         getSeachData() {
             this.page.currentPage = 1
-            this.getCollectorwireprojectList('seach')
+            this.getEvaluationData('seach')
+        },
+        resetSeach() {
+            this.page.currentPage = 1
+            this.indicatorIdS = ''
+            this.getEvaluationData()
         },
         successImport(val) {
             this.loadingImport = false
-            this.getCollectorwireprojectList()
+            this.getEvaluationData()
         },
         importLoading(val) {
             this.loadingImport = true
@@ -354,12 +364,15 @@ export default {
         handleCurrentChange(val){
             this.page.currentPage =val
         },
-        
-        
         handleImport() {
             this.$refs.importPage.upload.title = "考评指标管理信息导入"
             this.$refs.importPage.upload.open = true
         },
+
+        //指标项配置
+        editEvaluaIndex(row) {
+            this.$refs.indicatorItem.init(row)
+        }
     }
 }
 </script>
@@ -368,13 +381,30 @@ export default {
 .evaluationIndex{
   .evaluationIndexBtn{
     //   background: #fff;
-      padding: 10px 20px 0 20px;
-      .collectSeach{
-          display: flex;
-          margin: 20px 20px 10px;
-            .exceed{
-                display: flex;
-                .el-input{
+        padding: 10px 20px 0 20px;
+        .collectSeach{
+            display: flex;
+            margin: 20px 20px 10px;
+                .exceed{
+                    display: flex;
+                    .exceedSpan{
+                        margin-top: 3px;
+                        width: 100px;
+                        display: inline-block;
+                    }
+                    .el-input{
+                        margin-right:10px;
+                        .el-input__inner{
+                            height:30px;
+                        }
+                        .el-input__suffix{
+                            .el-select__caret{
+                                line-height:30px;
+                            }
+                        }
+                    }
+                }
+                .el-select{
                     margin-right:10px;
                     .el-input__inner{
                         height:30px;
@@ -385,43 +415,45 @@ export default {
                         }
                     }
                 }
+        }
+        .titleSty{
+            border-left: 4px solid #007aab;
+            padding-left: 5px;
+            font-size: 16px;
+            font-weight: bold;
+            font-family: '微软雅黑';
+            margin-left:20px;
+        }
+        span{
+            font-size:14px;
+        }
+        .PeriodBtn{
+            padding-left: 10px;
+        }
+        .el-button{
+            height: 30px;
+            // width:100px;
+            padding: 0 30px ;
+            // padding-top: 8px;
+            span{
+                margin:0;
             }
-            .el-select{
-                margin-right:10px;
-                .el-input__inner{
-                    height:30px;
-                }
-                .el-input__suffix{
-                    .el-select__caret{
-                        line-height:30px;
+        }
+        .indexdialog{
+            .el-overlay{
+                .el-dialog{
+                    .el-dialog__body{
+                        padding: 30px 60px 30px 20px !important;
+                        .periodFrom{
+                            .el-select, .el-input{
+                                width: 100%;
+                            }
+                        }
                     }
                 }
             }
-      }
-      .titleSty{
-          border-left: 4px solid #007aab;
-          padding-left: 5px;
-          font-size: 16px;
-          font-weight: bold;
-          font-family: '微软雅黑';
-          margin-left:20px;
-      }
-      span{
-          font-size:14px;
-      }
-      .PeriodBtn{
-          padding-left: 10px;
-      }
-      .el-button{
-          height: 30px;
-          // width:100px;
-          padding: 0 30px ;
-          // padding-top: 8px;
-          span{
-              margin:0;
-          }
-      }
-  }
+        }
+    }
   .evaluationIndexTableData{
     padding: 10px 20px;
     .el-table{
@@ -434,6 +466,16 @@ export default {
         .el-radio__label{
             display: none;
         }
+        
+        .indicitem{
+            color: #409EFF;
+            font-size: 12px;
+            margin-right: 20px;
+            cursor:pointer;
+            &:hover{
+                text-decoration: underline;
+            }
+        }
     }
     .el-pagination{
         margin-top: 20px;
@@ -441,17 +483,6 @@ export default {
         position: relative;
     }
     }
-    .el-overlay{
-        .el-dialog{
-            .el-dialog__body{
-                padding: 30px 60px 30px 20px !important;
-                .periodFrom{
-                    .el-select, .el-input{
-                        width: 100%;
-                    }
-                }
-            }
-        }
-    }
+    
 }
 </style>

+ 284 - 243
src/components/evaluationSystem/evaluationRulesPage.vue

@@ -1,27 +1,17 @@
 <template>
-    <div class="evaluationRules" v-loading="loadingImport">
-        <div class="evaluationRulesBtn">
-            <p class="titleSty">考评规则配置</p>
+    <div class="evaluationRule" v-loading="loadingImport">
+        <div class="evaluationRuleBtn">
+            <p class="titleSty">考评规则管理</p>
             <div class="collectSeach">
                 <div class="exceed">
-                    <span style="margin-top: 3px;">选项名称:</span>
-                    <el-select v-model="indicatorIdS" placeholder="请选择指标名称">
-                        <el-option
-                        v-for="item in indicatoroptions"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                        </el-option>
-                    </el-select>
+                    <span class="exceedSpan" style="margin-top: 3px;">指标名称:</span>
+                    <el-input v-model="indicatorIdS" placeholder="请输入指标名称"></el-input>
                 </div>
                 <el-button type="primary" style="margin-left: 10px;" @click="getSeachData">搜索</el-button>
-                <el-button style="margin-left: 10px;" @click="reset">重置</el-button>
+                <el-button style="margin-left: 10px;" @click="resetSeach">重置</el-button>
             </div>
             <div style="display:flex;justify-content: space-between;padding: 10px;">
                 <el-row :gutter="10" class="PeriodBtn">
-                    
-                        <!-- @click="handleAdd"
-                        @click="handleUpdate" -->
                     <el-col :span="1.5">
                         <el-button
                         type="primary"
@@ -37,6 +27,8 @@
                         plain
                         icon="Edit"
                         size="mini"
+                        @click="handleEdit"
+                        :disabled="changeDateSelect.length === 0 || changeDateSelect.length>1"
                         >修改</el-button>
                     </el-col>
                     <el-col :span="1.5">
@@ -45,7 +37,7 @@
                         plain
                         icon="Delete"
                         size="mini"
-                        :disabled="deleteSelect.length === 0"
+                        :disabled="changeDateSelect.length === 0"
                         @click="handleDelete"
                         >批量删除</el-button>
                     </el-col>
@@ -55,6 +47,7 @@
                         plain
                         icon="Upload"
                         size="mini"
+                        disabled
                         @click="handleImport"
                         >导入</el-button>
                     </el-col>
@@ -64,62 +57,26 @@
                             plain
                             icon="Download"
                             size="mini"
-                            @click="handleExport"
+                            disabled
                         >导出</el-button>
                     </el-col>
                 </el-row>
             </div>
-            <div class="evaluationRulesTableData">
-                <el-table :data="evaluationRulesData" border style="width: 100%" @select="rowClick" @select-all="allSelect">
+            <div class="evaluationRuleTableData">
+                <el-table :data="evaluationRuleData" border style="width: 100%" @select="rowClick" @select-all="rowClick">
                     <el-table-column type="selection" label="操作" align="center"></el-table-column>
-                    <el-table-column label="创建时间">
-                        <template #default="scope">
-                            <span>{{scope.row.create_time}}</span>
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="创建者">
-                        <template #default="scope">
-                            <span>{{scope.row.create_by}}</span>
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="指标ID">
-                        <template #default="scope">
-                            <span>{{scope.row.indicator_id}}</span>
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="指标总分">
-                        <template #default="scope">
-                            <span>{{scope.row.total_score}}</span>
-                        </template>
-                    </el-table-column>
+                    <el-table-column label="业务板块" prop="binSection" />
+                    <el-table-column label="业务阶段" prop="binStage" />
+                    <el-table-column label="创建者" prop="createBy" />
+                    <el-table-column label="创建时间" prop="createTime" />
                     <el-table-column label="描述">
                         <template #default="scope">
-                            <span>{{scope.row.desc}}</span>
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="更新时间">
-                        <template #default="scope">
-                            <span>{{scope.row.update_time}}</span>
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="更新者">
-                        <template #default="scope">
-                            <span>{{scope.row.update_by}}</span>
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="评分公式">
-                        <template #default="scope">
-                            <span>{{scope.row.evaluate_formula}}</span>
+                            <span>{{scope.row.des}}</span>
                         </template>
                     </el-table-column>
-                    <el-table-column label="评分方式">
+                    <el-table-column label="操作">
                         <template #default="scope">
-                            <span>{{scope.row.evaluate_method}}</span>
-                        </template>
-                    </el-table-column>
-                    <el-table-column label="隐射函数">
-                        <template #default="scope">
-                            <span>{{scope.row.mapping_function}}</span>
+                            <p class="indicitem" @click="editRuleDetail(scope.row)">详情</p>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -132,57 +89,44 @@
                     :total="page.total">
                 </el-pagination>
             </div>
-            <el-dialog :title="title" v-model="dialogVisible" width="600px" :close-on-click-modal="false">
-                <div class="periodFrom">
-                    <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" :validate-on-rule-change="false">
-                        <el-form-item label="指标名称" prop="indicatorId">
-                            <el-select v-model="ruleForm.indicatorId" placeholder="请选择指标名称">
-                                <el-option
-                                v-for="item in indicatoroptions"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="指标总分" prop="totalScore">
-                            <el-input v-model="ruleForm.totalScore" placeholder="请输入指标总分"></el-input>
-                        </el-form-item>
-                        <el-form-item label="评分方式" prop="evaluateMethod">
-                            <el-select v-model="ruleForm.evaluateMethod" placeholder="请选择评分方式">
-                                <el-option
-                                v-for="item in optionNameoptions"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="评分公式" prop="evaluateFormula">
-                            <el-input v-model="ruleForm.evaluateFormula" placeholder="请输入评分公式"></el-input>
-                        </el-form-item>
-                        <el-form-item label="隐射函数" prop="mappingFun">
-                            <el-select v-model="ruleForm.mappingFun" placeholder="请选择隐射函数">
-                                <el-option
-                                v-for="item in optionNameoptions"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
-                                </el-option>
-                            </el-select>
-                        </el-form-item>
-                        <el-form-item label="描述" prop="desc">
-                            <el-input v-model="ruleForm.desc" :rows="5" type="textarea" placeholder="请输入描述"></el-input>
-                        </el-form-item>
-                    </el-form>
-                </div>
-                <template #footer>
-                    <span class="dialog-footer">
-                        <el-button @click="dialogVisible = false">取 消</el-button>
-                        <el-button type="primary">确 定</el-button>
-                    </span>
-                </template>
-            </el-dialog>
+            <div class="indexdialog">
+                <el-dialog :title="title" v-model="dialogVisible" width="600px" :close-on-click-modal="false">
+                    <div class="periodFrom">
+                        <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm" :validate-on-rule-change="false">
+                            <el-form-item label="业务模块" prop="binSection">
+                                <el-select v-model="ruleForm.binSection" placeholder="请选择业务模块">
+                                    <el-option
+                                    v-for="item in moduleData"
+                                    :key="item.keyValue"
+                                    :label="item.keyName"
+                                    :value="item.keyName">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="业务阶段" prop="binStage">
+                                <el-select v-model="ruleForm.binStage" placeholder="请选择业务阶段">
+                                    <el-option
+                                    v-for="item in stageData"
+                                    :key="item.keyValue"
+                                    :label="item.keyName"
+                                    :value="item.keyName">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="描述" prop="desc">
+                                <el-input v-model="ruleForm.desc" :rows="5" type="textarea" placeholder="请输入描述"></el-input>
+                            </el-form-item>
+                        </el-form>
+                    </div>
+                    <template #footer>
+                        <span class="dialog-footer">
+                            <el-button @click="dialogVisible = false">取 消</el-button>
+                            <el-button type="primary" @click="saveevaluationRuleMsg('ruleForm')">确 定</el-button>
+                        </span>
+                    </template>
+                </el-dialog>
+            </div>
+            <rule-detail-page ref="ruleDetail"></rule-detail-page>
         </div>
         <import-dailog ref="importPage" @successImport="successImport" @importLoading="importLoading"></import-dailog>
     </div>
@@ -190,70 +134,180 @@
 
 <script>
 import importDailog from '../importPage/importDailog.vue'
-import {apiGetgetStandardPointManagementList, apiGetdeleteStandardPointManagement} from '../../api/api'
+import ruleDetailPage from './ruleDetailPage.vue'
+import {apiGetevaluateRuleList, apiGetevaluateRuleSaveList, apiGetevaluateRuledeleteList, apiGetdatadictionaryList} from '../../api/api'
 export default {
-  components: { importDailog },
+    components: { importDailog, ruleDetailPage },
     data() {
         return {
             dialogVisible: false,
             title: '',
+            isSave: false,
+            changeDateSelect: [],
+            moduleData: [],
+            stageData: [],
+            indicatorIdS: '',
+            evaluationRuleData:[],
             ruleForm: {
-                indicatorId: '',
-                totalScore: '',
-                evaluateMethod: '',
-                evaluateFormula: '',
-                mappingFun: '',
+                binSection: '',
+                binStage: '',
                 desc: ''
             },
             rules: {
-                indicatorId: [
-                    { required: true, message: '请选择指标名称', trigger: 'blur' }
+                binSection: [
+                    { required: true, message: '请输入业务模块', trigger: 'blur' }
                 ],
-                totalScore: [
-                    { required: true, message: '请输入指标总分', trigger: 'blur' }
-                ],
-                evaluateMethod: [
-                    { required: true, message: '请选择评分方式', trigger: 'change' }
-                ],
-                evaluateFormula: [
-                    { required: true, message: '请输入评分公式', trigger: 'blur' }
-                ],
-                mappingFun: [
-                    { required: true, message: '请选择隐射函数', trigger: 'change' }
+                binStage: [
+                    { required: true, message: '请输入业务阶段', trigger: 'blur' }
                 ],
                 desc: [
-                    { required: true, message: '请输入描述', trigger: 'change' }
+                    { required: true, message: '请输入描述', trigger: 'blur' }
                 ]
             },
-            indicatoroptions: [],
-            optionNameoptions:[],
-            indicatorIdS: '',
-
-            windframradio: {},
-            deleteSelect: [],
-            changeDateSelect: [],
-            loadingImport: false,
-            evaluationRulesData:[],
-            single: false,
-            regionaloptions:[],
             page:{
                 pagesize: 12,
                 currentPage: 1,
                 total: 0
-            }
+            },
+            evalradio: {},
+            loadingImport: false,
         }
     },
-    mounted() {
-        // this.getCollectorwireprojectList()
+    created() {
+        this.getEvalRuleData()
+        this.getDataDictionary('MK0001') //模块
+        this.getDataDictionary('JD0001') //阶段
     },
     methods:{
+        // 查询指标数据
+        getEvalRuleData(type) {
+            let that = this
+            let params = {
+                pageNum: this.page.currentPage,
+                pageSize: this.page.pagesize,
+            }
+            if (type) {
+                params.indicatorName = that.indicatorIdS
+            }
+            apiGetevaluateRuleList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.evaluationRuleData = datas.data.records
+                    that.page.total = datas.data.total
+                }
+            })
+        },
+        // 查询规则模块和阶段数据
+        getDataDictionary(val) {
+            let that = this
+            let params = {
+                superKey: val
+            }
+            apiGetdatadictionaryList(params).then(datas =>{
+                if (datas && datas.data) {
+                    if (val === 'MK0001') {
+                        that.moduleData = datas.data
+                    } else {
+                        that.stageData = datas.data
+                    }
+                }
+            })
+        },
+        // 新增区域信息
+        handleAdd() {
+            this.dialogVisible = true
+            this.isSave = false
+            this.title = '新增考评规则'
+            this.$nextTick(() =>{
+                // this.$refs['ruleForm'].resetFields()
+                this.ruleForm = {
+                    binSection: '',
+                    binStage: '',
+                    desc: ''
+                }
+            })
+        },
+        handleEdit() {
+            this.dialogVisible = true
+            this.isSave = true
+            this.title = '修改考评规则'
+            this.evalradio = this.changeDateSelect[0]
+            this.ruleForm = {
+                binSection: this.evalradio.binSection,
+                binStage: this.evalradio.binStage,
+                desc: this.evalradio.des
+            }
+        },
+        saveevaluationRuleMsg(formName) {
+            let that = this
+            that.$refs[formName].validate((valid) => {
+                if (valid) {
+                    that.saveAndEditRuleData()
+                }
+            });
+        },
+        //新增/修改指标数据
+        saveAndEditRuleData() {
+            let that = this
+            let params = {
+                binSection: that.ruleForm.binSection,
+                binStage: that.ruleForm.binStage,
+                des: that.ruleForm.desc
+            }
+            if (that.isSave) {
+                params.id = this.evalradio.id
+            }
+            apiGetevaluateRuleSaveList(params).then(datas =>{
+                if (!that.isSave) {
+                    that.$message({
+                        message: '指标新增成功',
+                        type: 'success'
+                    });
+                } else {
+                    that.$message({
+                        message: '指标修改成功',
+                        type: 'success'
+                    });
+                }
+                that.dialogVisible = false
+                that.changeDateSelect = []
+                that.getEvalRuleData()
+            })
+        },
+        //删除指标数据
+        handleDelete() {
+            this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(async() => {
+                let that = this
+                let paramsArr = []
+                that.changeDateSelect.forEach(it =>{
+                    paramsArr.push(it.id)
+                })
+                await apiGetevaluateRuledeleteList(paramsArr.join(',')).then(datas =>{})
+                that.$message({
+                    type: 'success',
+                    message: '删除成功!'
+                });
+                that.getEvalRuleData()
+            })
+        },        
+        rowClick(selection, row) {
+            this.changeDateSelect = selection
+        },
         getSeachData() {
             this.page.currentPage = 1
-            this.getCollectorwireprojectList('seach')
+            this.getEvalRuleData('seach')
+        },
+        resetSeach() {
+            this.page.currentPage = 1
+            this.indicatorIdS = ''
+            this.getEvalRuleData()
         },
         successImport(val) {
             this.loadingImport = false
-            this.getCollectorwireprojectList()
+            this.getEvalRuleData()
         },
         importLoading(val) {
             this.loadingImport = true
@@ -264,59 +318,47 @@ export default {
         handleCurrentChange(val){
             this.page.currentPage =val
         },
-        rowClick(selection, row) {
-            this.windframradio = {}
-            this.deleteSelect = []
-            this.changeDateSelect = []
-            if (selection.length === 1) { 
-                this.windframradio = selection[0]
-            }
-            if (selection.length > 0) {
-                selection.forEach(item =>{
-                    this.deleteSelect.push(item.itemNo)
-                    this.changeDateSelect.push(item.itemNo)
-                })
-            }
-        },
-        allSelect(selection) {
-            this.deleteSelect = []
-            this.changeDateSelect = []
-            if (selection.length > 0) {
-                selection.forEach(item =>{
-                    this.deleteSelect.push(item.itemNo)
-                    this.changeDateSelect.push(item.itemNo)
-                })
-            }
-        },
-        // 新增区域信息
-        handleAdd() {
-            this.dialogVisible = true
-            // this.single = false
-            this.title = '新增考评规则配置'
-            this.$nextTick(() =>{
-                // this.resetForm()
-                // this.$refs['ruleForm'].clearValidate()
-            })
-        },
         handleImport() {
-            this.$refs.importPage.upload.title = "考评规则配置信息导入"
+            this.$refs.importPage.upload.title = "考评指标管理信息导入"
             this.$refs.importPage.upload.open = true
         },
+
+        //指标项配置
+        editRuleDetail(row) {
+            this.$refs.ruleDetail.init(row)
+        }
     }
 }
 </script>
 
 <style lang="less">
-.evaluationRules{
-  .evaluationRulesBtn{
+.evaluationRule{
+  .evaluationRuleBtn{
     //   background: #fff;
-      padding: 10px 20px 0 20px;
-      .collectSeach{
-          display: flex;
-          margin: 20px 20px 10px;
-            .exceed{
-                display: flex;
-                .el-input{
+        padding: 10px 20px 0 20px;
+        .collectSeach{
+            display: flex;
+            margin: 20px 20px 10px;
+                .exceed{
+                    display: flex;
+                    .exceedSpan{
+                        margin-top: 3px;
+                        width: 100px;
+                        display: inline-block;
+                    }
+                    .el-input{
+                        margin-right:10px;
+                        .el-input__inner{
+                            height:30px;
+                        }
+                        .el-input__suffix{
+                            .el-select__caret{
+                                line-height:30px;
+                            }
+                        }
+                    }
+                }
+                .el-select{
                     margin-right:10px;
                     .el-input__inner{
                         height:30px;
@@ -327,50 +369,50 @@ export default {
                         }
                     }
                 }
+        }
+        .titleSty{
+            border-left: 4px solid #007aab;
+            padding-left: 5px;
+            font-size: 16px;
+            font-weight: bold;
+            font-family: '微软雅黑';
+            margin-left:20px;
+        }
+        span{
+            font-size:14px;
+        }
+        .PeriodBtn{
+            padding-left: 10px;
+        }
+        .el-button{
+            height: 30px;
+            // width:100px;
+            padding: 0 30px ;
+            // padding-top: 8px;
+            span{
+                margin:0;
             }
-            .el-select{
-                margin-right:10px;
-                .el-input__inner{
-                    height:30px;
-                }
-                .el-input__suffix{
-                    .el-select__caret{
-                        line-height:30px;
+        }
+        .indexdialog{
+            .el-overlay{
+                .el-dialog{
+                    .el-dialog__body{
+                        padding: 30px 60px 30px 20px !important;
+                        .periodFrom{
+                            .el-select, .el-input{
+                                width: 100%;
+                            }
+                        }
                     }
                 }
             }
-      }
-      .titleSty{
-          border-left: 4px solid #007aab;
-          padding-left: 5px;
-          font-size: 16px;
-          font-weight: bold;
-          font-family: '微软雅黑';
-          margin-left:20px;
-      }
-      span{
-          font-size:14px;
-      }
-      .PeriodBtn{
-          padding-left: 10px;
-      }
-      .el-button{
-          height: 30px;
-          // width:100px;
-          padding: 0 30px ;
-          // padding-top: 8px;
-          span{
-              margin:0;
-          }
-      }
-  }
-  .evaluationRulesTableData{
+        }
+    }
+  .evaluationRuleTableData{
     padding: 10px 20px;
     .el-table{
         .el-table__body-wrapper{
-            .el-table__empty-block{
             height: 64vh !important;
-            }
         }
         .el-input__inner{
             height: 30px !important;
@@ -378,6 +420,16 @@ export default {
         .el-radio__label{
             display: none;
         }
+        
+        .indicitem{
+            color: #409EFF;
+            font-size: 12px;
+            margin-right: 20px;
+            cursor:pointer;
+            &:hover{
+                text-decoration: underline;
+            }
+        }
     }
     .el-pagination{
         margin-top: 20px;
@@ -385,17 +437,6 @@ export default {
         position: relative;
     }
     }
-    .el-overlay{
-        .el-dialog{
-            .el-dialog__body{
-                padding: 30px 60px 30px 20px !important;
-                .periodFrom{
-                    .el-select, .el-input{
-                        width: 100%;
-                    }
-                }
-            }
-        }
-    }
+    
 }
 </style>

+ 351 - 0
src/components/evaluationSystem/ruleDetailPage.vue

@@ -0,0 +1,351 @@
+<template>
+    <div class="ruleItem">
+        <el-dialog title="规则详情" v-model="editEvaluaVisible" width="70vw" :close-on-click-modal="false">
+            <div class="indicatorItemAll">
+                <div class="indicatorItemBtn">
+                    <div class="collectSeach">
+                        <div class="exceed">
+                            <span class="indicatorSpan">指标项:</span>
+                            <el-input v-model="indicItem" placeholder="请输入指标项名称"></el-input>
+                        </div>
+                        <el-button type="primary" style="margin-left: 10px;" @click="getSeachData">搜索</el-button>
+                        <el-button style="margin-left: 10px;" @click="resetSeach">重置</el-button>
+                    </div>
+                    <div style="display:flex;justify-content: space-between;padding: 10px;">
+                        <el-row :gutter="10" class="PeriodBtn">
+                            <el-col :span="1.5">
+                                <el-button
+                                type="primary"
+                                plain
+                                icon="Plus"
+                                size="mini"
+                                @click="handleAdd"
+                                >新增</el-button>
+                            </el-col>
+                            <el-col :span="1.5">
+                                <el-button
+                                type="success"
+                                plain
+                                icon="Edit"
+                                size="mini"
+                                @click="handleEdit"
+                                :disabled="changeDateSelect.length === 0 || changeDateSelect.length>1"
+                                >修改</el-button>
+                            </el-col>
+                            <el-col :span="1.5">
+                                <el-button
+                                type="danger"
+                                plain
+                                icon="Delete"
+                                size="mini"
+                                :disabled="changeDateSelect.length === 0"
+                                @click="handleDelete"
+                                >批量删除</el-button>
+                            </el-col>
+                        </el-row>
+                    </div>
+                    <div class="indicatorItemTableData">
+                        <el-table :data="ruleDetailData" border style="width: 100%" @select="rowClick" @select-all="rowClick">
+                            <el-table-column type="selection" label="操作" align="center"></el-table-column>
+                            <el-table-column label="指标项名称" prop="optionName" />
+                            <el-table-column label="指标项编码" prop="optionCode" />
+                            <el-table-column label="创建者" prop="createBy" />
+                            <el-table-column label="创建时间" prop="createTime" />
+                            <el-table-column label="描述">
+                                <template #default="scope">
+                                    <span>{{scope.row.des}}</span>
+                                </template>
+                            </el-table-column>
+                        </el-table>
+                        <el-pagination
+                            @size-change="handleSizeChange"
+                            @current-change="handleCurrentChange"
+                            :current-page="page.currentPage"
+                            :page-size="page.pagesize"
+                            layout="total, prev, pager, next, jumper"
+                            :total="page.total">
+                        </el-pagination>
+                    </div>
+                    <div class="onlyDialog">
+                        <el-dialog :title="title" v-model="dialogVisible" width="600px" :close-on-click-modal="false">
+                            <div class="periodFrom">
+                                <el-form :model="itemForm" :rules="rules" ref="itemForm" label-width="100px" :validate-on-rule-change="false">
+                                    <el-form-item label="指标项名称" prop="optionName">
+                                        <el-select v-model="itemForm.optionName" placeholder="请选择指标项名称">
+                                            <el-option
+                                            v-for="item in indicItemoptions"
+                                            :key="item.keyValue"
+                                            :label="item.keyName"
+                                            :value="item.keyValue">
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                    <el-form-item label="描述">
+                                        <el-input v-model="itemForm.desc" :rows="5" type="textarea" placeholder="请输入描述"></el-input>
+                                    </el-form-item>
+                                </el-form>
+                            </div>
+                            <template #footer>
+                                <span class="dialog-footer">
+                                    <el-button @click="dialogVisible = false">取 消</el-button>
+                                    <el-button type="primary" @click="saveindicatorItemMsg('itemForm')">确 定</el-button>
+                                </span>
+                            </template>
+                        </el-dialog>
+                    </div>
+                </div>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+import {apiGetevaluateRuleinfoList, apiGetIndicatordicsaveList, apiGetIndicatordicdeleteList} from '../../api/api'
+export default {
+    data() {
+        return {
+            editEvaluaVisible: false,
+            isSave: false,
+            changeDateSelect: [],
+            ruleDetailData: [],
+            indicItemoptions: [],
+            indicItem: '',
+            evaluationIndexData:[],
+            itemForm: {
+                optionName: '',
+                desc: ''
+            },
+            rules: {
+                optionName: [
+                    { required: true, message: '请选择指标名称', trigger: 'change' }
+                ]
+            },
+            page:{
+                pagesize: 12,
+                currentPage: 1,
+                total: 0
+            },
+            evalradio: {},
+            rowevalradio: {},
+            dialogVisible: false
+        }
+    },
+    methods: {
+        init(row) {
+            this.editEvaluaVisible = true
+            this.ruleDetailData = []
+            this.indicItemoptions = []
+            this.rowevalradio = row
+            this.getruleDetailData(row)
+        },
+        // 查询规则数据
+        getruleDetailData(row, type) {
+            let that = this
+            let params = {
+                pageNum: this.page.currentPage,
+                pageSize: this.page.pagesize,
+                indicatorId: row.id
+            }
+            if (type) {
+                params.optionName = that.indicItem
+            }
+            apiGetevaluateRuleinfoList(params).then(datas =>{
+                if (datas) {
+                    that.ruleDetailData = datas
+                    that.changeDateSelect = []
+                }
+            })
+        },
+        // 新增区域信息
+        handleAdd() {
+            this.dialogVisible = true
+            this.isSave = false
+            this.title = '新增指标项管理'
+            this.$nextTick(() =>{
+                this.itemForm = {
+                    optionName: '',
+                    desc: ''
+                }
+                // this.$refs['itemForm'].resetFields()
+            })
+        },
+        handleEdit() {
+            this.dialogVisible = true
+            this.isSave = true
+            this.title = '修改指标项管理'
+            this.evalradio = this.changeDateSelect[0]
+            this.itemForm = {
+                optionName: this.evalradio.optionCode,
+                desc: this.evalradio.des
+            }
+        },
+        saveindicatorItemMsg(formName) {
+            let that = this
+            that.$refs[formName].validate((valid) => {
+                if (valid) {
+                    that.saveAndEditIndicatorData()
+                }
+            });
+        },
+        //新增/修改指标数据
+        saveAndEditIndicatorData() {
+            let that = this
+            let params = {
+                indicatorId: that.rowevalradio.id,
+                optionCode: that.itemForm.optionName,
+                des: that.itemForm.desc
+            }
+            if (that.isSave) {
+                params.id = this.evalradio.id
+            }
+            apiGetIndicatordicsaveList(params).then(datas =>{
+                if (!that.isSave) {
+                    that.$message({
+                        message: '指标项新增成功',
+                        type: 'success'
+                    });
+                } else {
+                    that.$message({
+                        message: '指标项修改成功',
+                        type: 'success'
+                    });
+                }
+                that.dialogVisible = false
+                that.getIndicatorItemData(that.rowevalradio)
+            })
+        },
+        //删除指标数据
+        handleDelete() {
+            this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(async() => {
+                let that = this
+                let paramsArr = []
+                this.changeDateSelect.forEach(it =>{
+                    paramsArr.push(it.id)
+                })
+                await apiGetIndicatordicdeleteList(paramsArr.join(',')).then(datas =>{})
+                that.$message({
+                    type: 'success',
+                    message: '删除成功!'
+                });
+                that.getIndicatorItemData(that.rowevalradio)
+            })
+        },        
+        rowClick(selection, row) {
+            this.changeDateSelect = selection
+        },
+        getSeachData() {
+            this.page.currentPage = 1
+            this.getIndicatorItemData(this.rowevalradio, 'seach')
+        },
+        resetSeach() {
+            this.page.currentPage = 1
+            this.indicItem = ''
+            this.getIndicatorItemData(this.rowevalradio)
+        },
+        handleSizeChange(val){
+            this.page.pagesize = val
+        },
+        handleCurrentChange(val){
+            this.page.currentPage =val
+        },
+    }
+}
+</script>
+
+<style lang="less">
+.ruleItem{
+    .el-overlay{
+        .el-dialog{
+            margin-top: 5vh !important;
+            .el-dialog__body{
+                padding: 0 20px 30px 20px !important;
+                .indicatorItemAll{
+                    .el-select, .el-input{
+                        width: 100%;
+                    }
+                    .indicatorItemBtn{
+                        padding: 10px 20px 0 20px;
+                        .collectSeach{
+                            display: flex;
+                            margin: 20px 20px 10px;
+                                .exceed{
+                                    display: flex;
+                                    .indicatorSpan{
+                                        margin-top: 3px;
+                                        width: 80px;
+                                        display: inline-block;
+                                    }
+                                    .el-input{
+                                        margin-right:10px;
+                                        .el-input__inner{
+                                            height:30px;
+                                        }
+                                        .el-input__suffix{
+                                            .el-select__caret{
+                                                line-height:30px;
+                                            }
+                                        }
+                                    }
+                                }
+                                .el-select{
+                                    margin-right:10px;
+                                    .el-input__inner{
+                                        height:30px;
+                                    }
+                                    .el-input__suffix{
+                                        .el-select__caret{
+                                            line-height:30px;
+                                        }
+                                    }
+                                }
+                        }
+                        span{
+                            font-size:14px;
+                        }
+                        .PeriodBtn{
+                            padding-left: 10px;
+                        }
+                        .el-button{
+                            height: 30px;
+                            padding: 0 30px ;
+                            span{
+                                margin:0;
+                            }
+                        }
+                    }
+                    .indicatorItemTableData{
+                        padding: 10px 20px;
+                        .el-table{
+                            .el-table__body-wrapper{
+                                height: 55vh !important;
+                            }
+                            .el-input__inner{
+                                height: 30px !important;
+                            }
+                            .el-radio__label{
+                                display: none;
+                            }
+                        }
+                        .el-pagination{
+                            margin-top: 20px;
+                            text-align: end;
+                            position: relative;
+                        }
+                    }
+                    .onlyDialog{
+                        .el-overlay{
+                            .el-dialog{
+                                margin-top: 10vh !important;
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
+</style>

+ 6 - 2
src/components/gatewayPage.vue

@@ -22,6 +22,10 @@ export default {
 }
 </script>
 
-<style>
-
+<style lang="less">
+.gatewayPage{
+    .mainMessage{
+        height: 90vh;
+    }
+}
 </style>

+ 11 - 11
src/router/index.js

@@ -22,17 +22,17 @@ const routes = [
                         '../components/gatewayPage.vue'
                     ),
             },
-            {
-                path: '/benchmark',
-                name: 'benchmark',
-                meta: {
-                    title: '对标业务',
-                },
-                component: () =>
-                    import(
-                        '../components/benchmarkingPage.vue'
-                    ),
-            },
+            // {
+            //     path: '/benchmark',
+            //     name: 'benchmark',
+            //     meta: {
+            //         title: '对标业务',
+            //     },
+            //     component: () =>
+            //         import(
+            //             '../components/benchmarkingPage.vue'
+            //         ),
+            // },
             {
                 path: '/assessment',
                 name: 'assessment',

+ 1 - 1
src/utils/baseUrl.js

@@ -15,7 +15,7 @@ switch (process.env.NODE_ENV) {
         break
  
     case 'production': 
-        baseUrl.ROOT = "http://120.46.129.85:8086/"
+        baseUrl.ROOT = "http://123.60.219.66:18800/"
         // baseUrl.ROOT = "http://10.155.32.7:8086/"
         break 
 }

+ 109 - 104
src/views/homePage.vue

@@ -17,7 +17,7 @@
         </div> -->
         <div class="frameMain" :style="allHeight">
             <div class="treeList">
-                <p>全业务域对标考评系统</p>
+                <p>全业务域考评系统</p>
                 <el-tree ref="tree" :data="forecastDatas" :props="defaultProps" highlight-current node-key="id"
                 :default-expanded-keys="expendData" @node-click="handleNodeClick" @node-expand="handleNodeExpand">
                     <template #default="{ node, data }">
@@ -93,49 +93,49 @@ export default {
             // }
         ]
         this.forecastDatas = [
-            // {
-            //     id: '0',
-            //     label: '系统首页',
-            //     path: '/home'
-            // },
             {
-                id: '1',
-                label: '对标业务',
-                children: [
-                    {
-                        id: '1-1',
-                        label: '排行榜',
-                    },
-                    {
-                        id: '1-2',
-                        label: '分类对标',
-                    },
-                    {
-                        id: '1-3',
-                        label: '综合对标',
-                    },
-                    {
-                        id: '1-4',
-                        label: '立标管理',
-                    },
-                    {
-                        id: '1-5',
-                        label: '寻标管理',
-                    },
-                    {
-                        id: '1-6',
-                        label: '达标管理',
-                    },
-                    {
-                        id: '1-7',
-                        label: '超标管理',
-                    },
-                    {
-                        id: '1-8',
-                        label: '对标报告'
-                    }
-                ]
+                id: '0',
+                label: '考评首页',
+                path: '/home'
             },
+            // {
+            //     id: '1',
+            //     label: '对标业务',
+            //     children: [
+            //         {
+            //             id: '1-1',
+            //             label: '排行榜',
+            //         },
+            //         {
+            //             id: '1-2',
+            //             label: '分类对标',
+            //         },
+            //         {
+            //             id: '1-3',
+            //             label: '综合对标',
+            //         },
+            //         {
+            //             id: '1-4',
+            //             label: '立标管理',
+            //         },
+            //         {
+            //             id: '1-5',
+            //             label: '寻标管理',
+            //         },
+            //         {
+            //             id: '1-6',
+            //             label: '达标管理',
+            //         },
+            //         {
+            //             id: '1-7',
+            //             label: '超标管理',
+            //         },
+            //         {
+            //             id: '1-8',
+            //             label: '对标报告'
+            //         }
+            //     ]
+            // },
             {
                 id: '2',
                 label: '考评业务',
@@ -204,55 +204,6 @@ export default {
                 ]
             },
             {
-                id: '3',
-                label: '对标考评知识库',
-                children: [
-                    {
-                        id: '3-1',
-                        label: '对标指标标准',
-                    },
-                    {
-                        id: '3-2',
-                        label: '对标算法规则',
-                    },
-                    {
-                        id: '3-3',
-                        label: '对标预警规则',
-                    },
-                    {
-                        id: '3-4',
-                        label: '考评得分规则',
-                        path: '/knowledgePage/scoringRules'
-                    },
-                    {
-                        id: '3-5',
-                        label: '考评评级规则',
-                    },
-                    {
-                        id: '3-6',
-                        label: '考评预警规则',
-                    },
-                ]
-            },
-            {
-                id: '4',
-                label: '对标体系配置',
-                children: [
-                    {
-                        id: '4-1',
-                        label: '对标指标管理',
-                    },
-                    {
-                        id: '4-2',
-                        label: '指标规则配置',
-                    },
-                    {
-                        id: '4-3',
-                        label: '对标结构配置',
-                    },
-                ]
-            },
-            {
                 id: '5',
                 label: '考评体系配置',
                 children: [
@@ -284,15 +235,72 @@ export default {
                 ]
             },
             {
+                id: '3',
+                label: '考评知识库',
+                children: [
+                    // {
+                    //     id: '3-1',
+                    //     label: '对标指标标准',
+                    // },
+                    // {
+                    //     id: '3-2',
+                    //     label: '对标算法规则',
+                    // },
+                    // {
+                    //     id: '3-3',
+                    //     label: '对标预警规则',
+                    // },
+                    {
+                        id: '3-4',
+                        label: '考评得分规则',
+                        path: '/knowledgePage/scoringRules'
+                    },
+                    {
+                        id: '3-5',
+                        label: '考评评级规则',
+                    },
+                    {
+                        id: '3-6',
+                        label: '考评预警规则',
+                    },
+                ]
+            },
+            // {
+            //     id: '4',
+            //     label: '对标体系配置',
+            //     children: [
+            //         {
+            //             id: '4-1',
+            //             label: '对标指标管理',
+            //         },
+            //         {
+            //             id: '4-2',
+            //             label: '指标规则配置',
+            //         },
+            //         {
+            //             id: '4-3',
+            //             label: '对标结构配置',
+            //         },
+            //     ]
+            // },            
+            {
                 id: '6',
-                label: '基础信息配置',
+                label: '信息权限配置',
                 children: [
                     {
                         id: '6-1',
-                        label: '人员权限配置',
+                        label: '单位信息配置',
                     },
                     {
                         id: '6-2',
+                        label: '部门信息配置',
+                    },
+                    {
+                        id: '6-3',
+                        label: '人员权限配置',
+                    },
+                    {
+                        id: '6-4',
                         label: '工作流程配置',
                     }
                 ]
@@ -303,20 +311,15 @@ export default {
             if (this.$route?.path === '/') {
                 this.$router.push({ path: this.routeTags[0].path})
             }
-            // this.$nextTick(() =>{
-            //     if (this.$refs.tree) {
-            //         this.$refs.tree.setCurrentKey(this.routeTags[0].id)
-            //         this.expendData = [this.routeTags[0].id]
-            //     }
-            // })
         } else {
             this.routeTags = [
                 {
-                    id: '5-1',
-                    label: '考评指标管理',
-                    path: '/evaluationSystem/evaluationIndex'
+                    id: '0',
+                    name: '考评首页',
+                    path: '/home'
                 }
             ]
+            this.$router.push({ path: this.routeTags[0].path})
             window.localStorage.setItem('routeTags', JSON.stringify(this.routeTags))
         }
         
@@ -485,7 +488,8 @@ export default {
         display: flex;
         .treeList{
             margin-left: 5px;
-            width: 15%;
+            // width: 15%;
+            width: 13vw;
             // background: #fff;
             border-radius: 20px;
             p{
@@ -530,13 +534,14 @@ export default {
             }
         }
         .homeMain{
+            width: 87vw;
             .tagArr{
                 height: 25px;
                 margin-right: 10px;
                 cursor: pointer;
             }
             .mainMessage{
-                width: 100%;
+                width: 85vw;
                 padding-top: 10px;
                 background: #fff;
                 border-radius: 20px;

+ 1 - 1
vue.config.js

@@ -21,7 +21,7 @@ module.exports = defineConfig({
           ]
     },
     devServer: {
-        port: 8090,
+        port: 8080,
         proxy: process.env.NODE_ENV === "development" ? {
             [baseUrl.ROOT]: {
                 target: baseUrl.URL,