Explorar o código

考评单位配置,考评部门配置页面的增删改查服务联调,增加搜索功能;增加首页大致布局;

SunZehao %!s(int64=2) %!d(string=hai) anos
pai
achega
36713ea369

+ 47 - 0
src/api/api.js

@@ -149,4 +149,51 @@ export function apiGetindicatorListAll() {
         method: 'get'
     })
 }
+
+//----单位/部门考评配置-list
+export function apiGetOrganizationList(params) {
+    return httpRequest({
+        url: 'organization-evaluation-rule/list',
+        method: 'get',
+        params: params
+    })
+}
+//----"单位/部门考评配置-保存/修改"
+export function apiGetorganizationSaveList(params) {
+    return httpRequest.post('organization-evaluation-rule/save', params)
+}
+//----"单位/部门考评配置-删除"
+export function apiGetorganizationdeleteList(params) {
+    return httpRequest({
+        url: `organization-evaluation-rule/remove/${params}`,
+        method: 'post'
+    })
+}
+//----单位/部门考评配置  --查询规则
+export function apiGetevaluateListAll() {
+    return httpRequest({
+        url: 'evaluate-rule/listAll',
+        method: 'get'
+    })
+}
+
+//----考评人员配置-list
+export function apiGetpersonnelList(params) {
+    return httpRequest({
+        url: 'personnel-evaluation-rule/list',
+        method: 'get',
+        params: params
+    })
+}
+//----"考评人员配置-保存/修改"
+export function apiGetpersonnelSaveList(params) {
+    return httpRequest.post('personnel-evaluation-rule/save', params)
+}
+//----"考评人员配置-删除"
+export function apiGetpersonneldeleteList(params) {
+    return httpRequest({
+        url: `personnel-evaluation-rule/remove/${params}`,
+        method: 'post'
+    })
+}
 //----------------------------------------基础信息配置------------------------------------------------

+ 10 - 8
src/components/evaluationSystem/IndicatorItemPage.vue

@@ -230,18 +230,20 @@ export default {
                 confirmButtonText: '确定',
                 cancelButtonText: '取消',
                 type: 'warning'
-            }).then(async() => {
+            }).then(() => {
                 let that = this
                 let paramsArr = []
-                this.changeDateSelect.forEach(it =>{
+                that.changeDateSelect.forEach(it =>{
                     paramsArr.push(it.id)
                 })
-                await apiGetIndicatordicdeleteList(paramsArr.join(',')).then(datas =>{})
-                that.$message({
-                    type: 'success',
-                    message: '删除成功!'
-                });
-                that.getIndicatorItemData(that.rowevalradio)
+                apiGetIndicatordicdeleteList(paramsArr.join(',')).then(datas =>{
+                    that.$message({
+                        type: 'success',
+                        message: '删除成功!'
+                    });
+                    that.changeDateSelect = []
+                    that.getIndicatorItemData(that.rowevalradio)
+                })
             })
         },        
         rowClick(selection, row) {

+ 340 - 248
src/components/evaluationSystem/evaluationCompanyPage.vue

@@ -1,27 +1,17 @@
 <template>
-    <div class="evaluationRules" v-loading="loadingImport">
-        <div class="evaluationRulesBtn">
-            <p class="titleSty">考评单位配置</p>
+    <div class="evaluationCompany" v-loading="loadingImport">
+        <div class="evaluationCompanyBtn">
+            <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="companyS" 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,64 +57,23 @@
                             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="evaluationCompanyTableData">
+                <el-table :data="evaluationCompanyData" 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="描述">
-                        <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>
-                        </template>
-                    </el-table-column>
-                    <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>
-                        </template>
-                    </el-table-column>
+                    <el-table-column label="单位名称" prop="organizationName" />
+                    <el-table-column label="考评类别" prop="organizationType" />
+                    <el-table-column label="考评周期" prop="evaluationCycle" />
+                    <el-table-column label="考评规则ID" prop="evaluateRuleId" />
+                    <el-table-column label="业务版块" prop="binSection" />
+                    <el-table-column label="业务阶段" prop="binStage" />
+                    <!-- <el-table-column label="年" prop="year" />
+                    <el-table-column label="月" prop="month" /> -->
+                    <el-table-column label="创建时间" prop="createTime" />
                 </el-table>
                 <el-pagination
                     @size-change="handleSizeChange"
@@ -132,57 +84,60 @@
                     :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="organizationName">
+                                <el-input v-model="ruleForm.organizationName" placeholder="请输入单位名称名称"></el-input>
+                            </el-form-item>
+                            <el-form-item label="考评规则" prop="evaluateRule">
+                                <el-select v-model="ruleForm.evaluateRule" placeholder="请选择考评规则" @change="changeRule">
+                                    <el-option
+                                    v-for="item in ruleDataAll"
+                                    :key="item.id"
+                                    :label="item.ruleName"
+                                    :value="item.id">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="业务模块">
+                                <el-select v-model="ruleForm.binSection" placeholder="请选择业务模块" disabled>
+                                    <el-option
+                                    v-for="item in moduleData"
+                                    :key="item.keyValue"
+                                    :label="item.keyName"
+                                    :value="item.keyValue">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="业务阶段">
+                                <el-select v-model="ruleForm.binStage" placeholder="请选择业务阶段" disabled>
+                                    <el-option
+                                    v-for="item in stageData"
+                                    :key="item.keyValue"
+                                    :label="item.keyName"
+                                    :value="item.keyValue">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="考评周期" prop="evaluationCycle">
+                                <el-input-number v-model="ruleForm.evaluationCycle" :min="1" />
+                            </el-form-item>
+                            <el-form-item label="指标顺序" prop="orderNum">
+                                <el-input-number v-model="ruleForm.orderNum" :min="1" />
+                            </el-form-item>
+                        </el-form>
+                    </div>
+                    <template #footer>
+                        <span class="dialog-footer">
+                            <el-button @click="dialogVisible = false">取 消</el-button>
+                            <el-button type="primary" @click="saveevaluationCompanyMsg('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>
@@ -190,70 +145,225 @@
 
 <script>
 import importDailog from '../importPage/importDailog.vue'
-import {apiGetgetStandardPointManagementList, apiGetdeleteStandardPointManagement} from '../../api/api'
+import {apiGetOrganizationList, apiGetorganizationSaveList, apiGetorganizationdeleteList, apiGetdatadictionaryList, apiGetevaluateListAll} from '../../api/api'
 export default {
   components: { importDailog },
     data() {
         return {
             dialogVisible: false,
             title: '',
+            isSave: false,
+            changeDateSelect: [],
+            indicatoroptions: [],
+            companyS: '',
+            evaluationCompanyData:[],
+            moduleData: [],
+            stageData: [],
+            ruleDataAll: [],
             ruleForm: {
-                indicatorId: '',
-                totalScore: '',
-                evaluateMethod: '',
-                evaluateFormula: '',
-                mappingFun: '',
-                desc: ''
+                organizationName: '',
+                evaluateRule: '',
+                binSection: '',
+                binStage: '',
+                evaluationCycle: 1,
+                orderNum: 1
             },
             rules: {
-                indicatorId: [
-                    { required: true, message: '请选择指标名称', trigger: 'blur' }
+                organizationName: [
+                    { required: true, message: '请输入单位名称', trigger: 'blur' }
                 ],
-                totalScore: [
-                    { required: true, message: '请输入指标总分', trigger: 'blur' }
+                evaluationCycle: [
+                    { required: true, message: '请输入考评周期', trigger: 'blur' }
                 ],
-                evaluateMethod: [
-                    { required: true, message: '请选择评分方式', trigger: 'change' }
+                evaluateRule: [
+                    { required: true, message: '请选择考评规则', trigger: 'change' }
                 ],
-                evaluateFormula: [
-                    { required: true, message: '请输入评分公式', trigger: 'blur' }
+                binSection: [
+                    { required: true, message: '请选择业务模块', trigger: 'change' }
                 ],
-                mappingFun: [
-                    { required: true, message: '请选择隐射函数', trigger: 'change' }
+                binStage: [
+                    { required: true, message: '请输入业务阶段', trigger: 'change' }
                 ],
-                desc: [
-                    { required: true, message: '请输入描述', trigger: 'change' }
+                orderNum: [
+                    { 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.getEvalCompanyData()
+        this.getRuleallData()
+        this.getDataDictionary('MK0001') //模块
+        this.getDataDictionary('JD0001') //阶段
     },
     methods:{
+        // 查询单位数据
+        getEvalCompanyData(type) {
+            let that = this
+            let params = {
+                pageNum: this.page.currentPage,
+                pageSize: this.page.pagesize,
+                organizationType: 'DWKP'
+            }
+            if (type) {
+                params.organizationName = that.companyS
+            }
+            apiGetOrganizationList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.evaluationCompanyData = 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
+                    }
+                }
+            })
+        },
+        getRuleallData() {
+            let that = this
+            apiGetevaluateListAll().then(datas =>{
+                if (datas && datas.data) {
+                    that.ruleDataAll = datas.data
+                }
+            })
+        },
+        changeRule(val) {
+            this.ruleDataAll.forEach(item =>{
+                if (item.id === val) {
+                    this.ruleForm.binSection = item.binSection
+                    this.ruleForm.binStage = item.binStage
+                }
+            })
+        },
+        // 新增区域信息
+        handleAdd() {
+            this.dialogVisible = true
+            this.isSave = false
+            this.title = '新增考评单位'
+            this.$nextTick(() =>{
+                // this.$refs['ruleForm'].resetFields()
+                this.ruleForm = {
+                    organizationName: '',
+                    evaluateRule: '',
+                    binSection: '',
+                    binStage: '',
+                    evaluationCycle: 1,
+                    orderNum: 1
+                }
+            })
+        },
+        handleEdit() {
+            this.dialogVisible = true
+            this.isSave = true
+            this.title = '修改考评单位'
+            this.evalradio = this.changeDateSelect[0]
+            this.ruleForm = {
+                organizationName: this.evalradio.organizationName,
+                evaluationCycle: this.evalradio.evaluationCycle,
+                evaluateRule: this.evalradio.evaluateRuleId,
+                binSection: this.evalradio.binSection,
+                binStage: this.evalradio.binStage,
+                orderNum: this.evalradio.orderNum
+            }
+        },
+        saveevaluationCompanyMsg(formName) {
+            let that = this
+            that.$refs[formName].validate((valid) => {
+                if (valid) {
+                    that.saveAndEditIndicatorData()
+                }
+            });
+        },
+        //新增/修改指标数据
+        saveAndEditIndicatorData() {
+            let that = this
+            let params = {
+                organizationName: that.ruleForm.organizationName,
+                evaluationCycle: that.ruleForm.evaluationCycle,
+                organizationType: 'DWKP',
+                evaluateRuleId: that.ruleForm.evaluateRule,
+                binSection: that.ruleForm.binSection,
+                binStage: that.ruleForm.binStage,
+                orderNum: that.ruleForm.orderNum
+            }
+            if (that.isSave) {
+                params.id = this.evalradio.id
+            }
+            apiGetorganizationSaveList(params).then(datas =>{
+                if (!that.isSave) {
+                    that.$message({
+                        message: '考评单位新增成功',
+                        type: 'success'
+                    });
+                } else {
+                    that.$message({
+                        message: '考评单位修改成功',
+                        type: 'success'
+                    });
+                }
+                that.dialogVisible = false
+                that.changeDateSelect = []
+                that.getEvalCompanyData()
+            })
+        },
+        //删除指标数据
+        handleDelete() {
+            this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(async() => {
+                let that = this
+                let paramsArr = []
+                that.changeDateSelect.forEach(it =>{
+                    paramsArr.push(it.id)
+                })
+                await apiGetorganizationdeleteList(paramsArr.join(',')).then(datas =>{
+                    if (datas) {
+                        that.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        });
+                        that.changeDateSelect = []
+                        that.getEvalCompanyData()
+                    }
+                })
+            })
+        },        
+        rowClick(selection, row) {
+            this.changeDateSelect = selection
+        },
         getSeachData() {
             this.page.currentPage = 1
-            this.getCollectorwireprojectList('seach')
+            this.getEvalCompanyData('seach')
+        },
+        resetSeach() {
+            this.page.currentPage = 1
+            this.companyS = ''
+            this.getEvalCompanyData()
         },
         successImport(val) {
             this.loadingImport = false
-            this.getCollectorwireprojectList()
+            this.getEvalCompanyData()
         },
         importLoading(val) {
             this.loadingImport = true
@@ -264,42 +374,8 @@ 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
         },
     }
@@ -307,16 +383,33 @@ export default {
 </script>
 
 <style lang="less">
-.evaluationRules{
-  .evaluationRulesBtn{
+.evaluationCompany{
+  .evaluationCompanyBtn{
     //   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 +420,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{
+        }
+    }
+  .evaluationCompanyTableData{
     padding: 10px 20px;
     .el-table{
         .el-table__body-wrapper{
-            .el-table__empty-block{
             height: 64vh !important;
-            }
         }
         .el-input__inner{
             height: 30px !important;
@@ -378,6 +471,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 +488,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>

+ 340 - 248
src/components/evaluationSystem/evaluationDepartmentPage.vue

@@ -1,27 +1,17 @@
 <template>
-    <div class="evaluationRules" v-loading="loadingImport">
-        <div class="evaluationRulesBtn">
-            <p class="titleSty">考评部门配置</p>
+    <div class="evaluationDepartment" v-loading="loadingImport">
+        <div class="evaluationDepartmentBtn">
+            <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="departmentS" 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,64 +57,23 @@
                             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="evaluationDepartmentTableData">
+                <el-table :data="evaluationDepartmentData" 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="描述">
-                        <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>
-                        </template>
-                    </el-table-column>
-                    <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>
-                        </template>
-                    </el-table-column>
+                    <el-table-column label="部门名称" prop="organizationName" />
+                    <el-table-column label="考评类别" prop="organizationType" />
+                    <el-table-column label="考评周期" prop="evaluationCycle" />
+                    <el-table-column label="考评规则ID" prop="evaluateRuleId" />
+                    <el-table-column label="业务版块" prop="binSection" />
+                    <el-table-column label="业务阶段" prop="binStage" />
+                    <!-- <el-table-column label="年" prop="year" />
+                    <el-table-column label="月" prop="month" /> -->
+                    <el-table-column label="创建时间" prop="createTime" />
                 </el-table>
                 <el-pagination
                     @size-change="handleSizeChange"
@@ -132,57 +84,60 @@
                     :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="organizationName">
+                                <el-input v-model="ruleForm.organizationName" placeholder="请输入部门名称名称"></el-input>
+                            </el-form-item>
+                            <el-form-item label="考评规则" prop="evaluateRule">
+                                <el-select v-model="ruleForm.evaluateRule" placeholder="请选择考评规则" @change="changeRule">
+                                    <el-option
+                                    v-for="item in ruleDataAll"
+                                    :key="item.id"
+                                    :label="item.ruleName"
+                                    :value="item.id">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="业务模块">
+                                <el-select v-model="ruleForm.binSection" placeholder="请选择业务模块" disabled>
+                                    <el-option
+                                    v-for="item in moduleData"
+                                    :key="item.keyValue"
+                                    :label="item.keyName"
+                                    :value="item.keyValue">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="业务阶段">
+                                <el-select v-model="ruleForm.binStage" placeholder="请选择业务阶段" disabled>
+                                    <el-option
+                                    v-for="item in stageData"
+                                    :key="item.keyValue"
+                                    :label="item.keyName"
+                                    :value="item.keyValue">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="考评周期" prop="evaluationCycle">
+                                <el-input-number v-model="ruleForm.evaluationCycle" :min="1" />
+                            </el-form-item>
+                            <el-form-item label="指标顺序" prop="orderNum">
+                                <el-input-number v-model="ruleForm.orderNum" :min="1" />
+                            </el-form-item>
+                        </el-form>
+                    </div>
+                    <template #footer>
+                        <span class="dialog-footer">
+                            <el-button @click="dialogVisible = false">取 消</el-button>
+                            <el-button type="primary" @click="saveevaluationDepartmentMsg('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>
@@ -190,70 +145,225 @@
 
 <script>
 import importDailog from '../importPage/importDailog.vue'
-import {apiGetgetStandardPointManagementList, apiGetdeleteStandardPointManagement} from '../../api/api'
+import {apiGetOrganizationList, apiGetorganizationSaveList, apiGetorganizationdeleteList, apiGetdatadictionaryList, apiGetevaluateListAll} from '../../api/api'
 export default {
   components: { importDailog },
     data() {
         return {
             dialogVisible: false,
             title: '',
+            isSave: false,
+            changeDateSelect: [],
+            indicatoroptions: [],
+            departmentS: '',
+            evaluationDepartmentData:[],
+            moduleData: [],
+            stageData: [],
+            ruleDataAll: [],
             ruleForm: {
-                indicatorId: '',
-                totalScore: '',
-                evaluateMethod: '',
-                evaluateFormula: '',
-                mappingFun: '',
-                desc: ''
+                organizationName: '',
+                evaluateRule: '',
+                binSection: '',
+                binStage: '',
+                evaluationCycle: 1,
+                orderNum: 1
             },
             rules: {
-                indicatorId: [
-                    { required: true, message: '请选择指标名称', trigger: 'blur' }
+                organizationName: [
+                    { required: true, message: '请输入部门名称', trigger: 'blur' }
                 ],
-                totalScore: [
-                    { required: true, message: '请输入指标总分', trigger: 'blur' }
+                evaluationCycle: [
+                    { required: true, message: '请输入考评周期', trigger: 'blur' }
                 ],
-                evaluateMethod: [
-                    { required: true, message: '请选择评分方式', trigger: 'change' }
+                evaluateRule: [
+                    { required: true, message: '请选择考评规则', trigger: 'change' }
                 ],
-                evaluateFormula: [
-                    { required: true, message: '请输入评分公式', trigger: 'blur' }
+                binSection: [
+                    { required: true, message: '请选择业务模块', trigger: 'change' }
                 ],
-                mappingFun: [
-                    { required: true, message: '请选择隐射函数', trigger: 'change' }
+                binStage: [
+                    { required: true, message: '请输入业务阶段', trigger: 'change' }
                 ],
-                desc: [
-                    { required: true, message: '请输入描述', trigger: 'change' }
+                orderNum: [
+                    { 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.getEvalCompanyData()
+        this.getRuleallData()
+        this.getDataDictionary('MK0001') //模块
+        this.getDataDictionary('JD0001') //阶段
     },
     methods:{
+        // 查询部门数据
+        getEvalCompanyData(type) {
+            let that = this
+            let params = {
+                pageNum: this.page.currentPage,
+                pageSize: this.page.pagesize,
+                organizationType: 'BMKP'
+            }
+            if (type) {
+                params.organizationName = that.departmentS
+            }
+            apiGetOrganizationList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.evaluationDepartmentData = 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
+                    }
+                }
+            })
+        },
+        getRuleallData() {
+            let that = this
+            apiGetevaluateListAll().then(datas =>{
+                if (datas && datas.data) {
+                    that.ruleDataAll = datas.data
+                }
+            })
+        },
+        changeRule(val) {
+            this.ruleDataAll.forEach(item =>{
+                if (item.id === val) {
+                    this.ruleForm.binSection = item.binSection
+                    this.ruleForm.binStage = item.binStage
+                }
+            })
+        },
+        // 新增区域信息
+        handleAdd() {
+            this.dialogVisible = true
+            this.isSave = false
+            this.title = '新增考评部门'
+            this.$nextTick(() =>{
+                // this.$refs['ruleForm'].resetFields()
+                this.ruleForm = {
+                    organizationName: '',
+                    evaluateRule: '',
+                    binSection: '',
+                    binStage: '',
+                    evaluationCycle: 1,
+                    orderNum: 1
+                }
+            })
+        },
+        handleEdit() {
+            this.dialogVisible = true
+            this.isSave = true
+            this.title = '修改考评部门'
+            this.evalradio = this.changeDateSelect[0]
+            this.ruleForm = {
+                organizationName: this.evalradio.organizationName,
+                evaluationCycle: this.evalradio.evaluationCycle,
+                evaluateRule: this.evalradio.evaluateRuleId,
+                binSection: this.evalradio.binSection,
+                binStage: this.evalradio.binStage,
+                orderNum: this.evalradio.orderNum
+            }
+        },
+        saveevaluationDepartmentMsg(formName) {
+            let that = this
+            that.$refs[formName].validate((valid) => {
+                if (valid) {
+                    that.saveAndEditIndicatorData()
+                }
+            });
+        },
+        //新增/修改指标数据
+        saveAndEditIndicatorData() {
+            let that = this
+            let params = {
+                organizationName: that.ruleForm.organizationName,
+                evaluationCycle: that.ruleForm.evaluationCycle,
+                organizationType: 'BMKP',
+                evaluateRuleId: that.ruleForm.evaluateRule,
+                binSection: that.ruleForm.binSection,
+                binStage: that.ruleForm.binStage,
+                orderNum: that.ruleForm.orderNum
+            }
+            if (that.isSave) {
+                params.id = this.evalradio.id
+            }
+            apiGetorganizationSaveList(params).then(datas =>{
+                if (!that.isSave) {
+                    that.$message({
+                        message: '考评部门新增成功',
+                        type: 'success'
+                    });
+                } else {
+                    that.$message({
+                        message: '考评部门修改成功',
+                        type: 'success'
+                    });
+                }
+                that.dialogVisible = false
+                that.changeDateSelect = []
+                that.getEvalCompanyData()
+            })
+        },
+        //删除指标数据
+        handleDelete() {
+            this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(async() => {
+                let that = this
+                let paramsArr = []
+                that.changeDateSelect.forEach(it =>{
+                    paramsArr.push(it.id)
+                })
+                await apiGetorganizationdeleteList(paramsArr.join(',')).then(datas =>{
+                    if (datas) {
+                        that.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        });
+                        that.changeDateSelect = []
+                        that.getEvalCompanyData()
+                    }
+                })
+            })
+        },        
+        rowClick(selection, row) {
+            this.changeDateSelect = selection
+        },
         getSeachData() {
             this.page.currentPage = 1
-            this.getCollectorwireprojectList('seach')
+            this.getEvalCompanyData('seach')
+        },
+        resetSeach() {
+            this.page.currentPage = 1
+            this.departmentS = ''
+            this.getEvalCompanyData()
         },
         successImport(val) {
             this.loadingImport = false
-            this.getCollectorwireprojectList()
+            this.getEvalCompanyData()
         },
         importLoading(val) {
             this.loadingImport = true
@@ -264,42 +374,8 @@ 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
         },
     }
@@ -307,16 +383,33 @@ export default {
 </script>
 
 <style lang="less">
-.evaluationRules{
-  .evaluationRulesBtn{
+.evaluationDepartment{
+  .evaluationDepartmentBtn{
     //   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 +420,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{
+        }
+    }
+  .evaluationDepartmentTableData{
     padding: 10px 20px;
     .el-table{
         .el-table__body-wrapper{
-            .el-table__empty-block{
             height: 64vh !important;
-            }
         }
         .el-input__inner{
             height: 30px !important;
@@ -378,6 +471,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 +488,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>

+ 16 - 14
src/components/evaluationSystem/evaluationIndexPage.vue

@@ -76,7 +76,7 @@
                     <el-table-column label="是否量化" prop="isQuantified" />
                     <el-table-column label="描述">
                         <template #default="scope">
-                            <span>{{scope.row.desc}}</span>
+                            <span>{{scope.row.des}}</span>
                         </template>
                     </el-table-column>
                     <el-table-column label="操作">
@@ -113,7 +113,7 @@
                                     v-for="item in moduleData"
                                     :key="item.keyValue"
                                     :label="item.keyName"
-                                    :value="item.keyName">
+                                    :value="item.keyValue">
                                     </el-option>
                                 </el-select>
                             </el-form-item>
@@ -123,7 +123,7 @@
                                     v-for="item in stageData"
                                     :key="item.keyValue"
                                     :label="item.keyName"
-                                    :value="item.keyName">
+                                    :value="item.keyValue">
                                     </el-option>
                                 </el-select>
                             </el-form-item>
@@ -186,7 +186,7 @@ export default {
                 binStage: '',
                 isQuantified: '否',
                 isAdditional: '否',
-                orderNum: '',
+                orderNum: 1,
                 desc: ''
             },
             rules: {
@@ -200,10 +200,10 @@ export default {
                     { required: true, message: '请输入指标单位', trigger: 'blur' }
                 ],
                 binSection: [
-                    { required: true, message: '请输入业务模块', trigger: 'blur' }
+                    { required: true, message: '请选择业务模块', trigger: 'change' }
                 ],
                 binStage: [
-                    { required: true, message: '请输入业务阶段', trigger: 'blur' }
+                    { required: true, message: '请输入业务阶段', trigger: 'change' }
                 ],
                 orderNum: [
                     { required: true, message: '请输入指标顺序', trigger: 'blur' }
@@ -289,7 +289,7 @@ export default {
                     binStage: '',
                     isQuantified: '否',
                     isAdditional: '否',
-                    orderNum: '',
+                    orderNum: 1,
                     desc: ''
                 }
             })
@@ -359,18 +359,20 @@ export default {
                 confirmButtonText: '确定',
                 cancelButtonText: '取消',
                 type: 'warning'
-            }).then(async() => {
+            }).then(() => {
                 let that = this
                 let paramsArr = []
                 that.changeDateSelect.forEach(it =>{
                     paramsArr.push(it.id)
                 })
-                await apiGetIndicatorDelete(paramsArr.join(',')).then(datas =>{})
-                that.$message({
-                    type: 'success',
-                    message: '删除成功!'
-                });
-                that.getEvaluationData()
+                apiGetIndicatorDelete(paramsArr.join(',')).then(datas =>{
+                    that.$message({
+                        type: 'success',
+                        message: '删除成功!'
+                    });
+                    that.getEvaluationData()
+                    that.changeDateSelect = []
+                })
             })
         },        
         rowClick(selection, row) {

+ 26 - 13
src/components/evaluationSystem/evaluationRulesPage.vue

@@ -4,8 +4,8 @@
             <p class="titleSty">考评规则管理</p>
             <div class="collectSeach">
                 <div class="exceed">
-                    <span class="exceedSpan" style="margin-top: 3px;">模块名称:</span>
-                    <el-input v-model="moduleStr" placeholder="请输入模块名称"></el-input>
+                    <span class="exceedSpan" style="margin-top: 3px;">业务板块:</span>
+                    <el-input v-model="moduleStr" 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>
@@ -65,6 +65,7 @@
             <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="规则名称" prop="ruleName" />
                     <el-table-column label="业务板块" prop="binSection" />
                     <el-table-column label="业务阶段" prop="binStage" />
                     <el-table-column label="创建者" prop="createBy" />
@@ -93,13 +94,16 @@
                 <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="ruleName">
+                                <el-input v-model="ruleForm.ruleName" placeholder="请输入规则名称"></el-input>
+                            </el-form-item>
                             <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">
+                                    :value="item.keyValue">
                                     </el-option>
                                 </el-select>
                             </el-form-item>
@@ -109,7 +113,7 @@
                                     v-for="item in stageData"
                                     :key="item.keyValue"
                                     :label="item.keyName"
-                                    :value="item.keyName">
+                                    :value="item.keyValue">
                                     </el-option>
                                 </el-select>
                             </el-form-item>
@@ -149,16 +153,20 @@ export default {
             moduleStr: '',
             evaluationRuleData:[],
             ruleForm: {
+                ruleName: '',
                 binSection: '',
                 binStage: '',
                 desc: ''
             },
             rules: {
+                ruleName: [
+                    { required: true, message: '请输入规则名称', trigger: 'blur' }
+                ],
                 binSection: [
-                    { required: true, message: '请输入业务模块', trigger: 'blur' }
+                    { required: true, message: '请输入业务模块', trigger: 'change' }
                 ],
                 binStage: [
-                    { required: true, message: '请输入业务阶段', trigger: 'blur' }
+                    { required: true, message: '请输入业务阶段', trigger: 'change' }
                 ],
                 desc: [
                     { required: true, message: '请输入描述', trigger: 'blur' }
@@ -220,6 +228,7 @@ export default {
             this.$nextTick(() =>{
                 // this.$refs['ruleForm'].resetFields()
                 this.ruleForm = {
+                    ruleName: '',
                     binSection: '',
                     binStage: '',
                     desc: ''
@@ -232,6 +241,7 @@ export default {
             this.title = '修改考评规则'
             this.evalradio = this.changeDateSelect[0]
             this.ruleForm = {
+                ruleName: this.evalradio.ruleName,
                 binSection: this.evalradio.binSection,
                 binStage: this.evalradio.binStage,
                 desc: this.evalradio.des
@@ -249,6 +259,7 @@ export default {
         saveAndEditRuleData() {
             let that = this
             let params = {
+                ruleName: that.ruleForm.ruleName,
                 binSection: that.ruleForm.binSection,
                 binStage: that.ruleForm.binStage,
                 des: that.ruleForm.desc
@@ -279,18 +290,20 @@ export default {
                 confirmButtonText: '确定',
                 cancelButtonText: '取消',
                 type: 'warning'
-            }).then(async() => {
+            }).then(() => {
                 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()
+                apiGetevaluateRuledeleteList(paramsArr.join(',')).then(datas =>{
+                    that.$message({
+                        type: 'success',
+                        message: '删除成功!'
+                    });
+                    that.changeDateSelect = []
+                    that.getEvalRuleData()
+                })
             })
         },        
         rowClick(selection, row) {

+ 11 - 9
src/components/evaluationSystem/ruleDetailPage.vue

@@ -76,7 +76,7 @@
                                             v-for="item in indicItemoptions"
                                             :key="item.indicatorCode"
                                             :label="item.indicatorName"
-                                            :value="item.indicatorName">
+                                            :value="item.indicatorCode">
                                             </el-option>
                                         </el-select>
                                     </el-form-item>
@@ -247,18 +247,20 @@ export default {
                 confirmButtonText: '确定',
                 cancelButtonText: '取消',
                 type: 'warning'
-            }).then(async() => {
+            }).then(() => {
                 let that = this
                 let paramsArr = []
-                this.changeDateSelect.forEach(it =>{
+                that.changeDateSelect.forEach(it =>{
                     paramsArr.push(it.id)
                 })
-                await apiGetevaluateRuleinfodeleteList(paramsArr.join(',')).then(datas =>{})
-                that.$message({
-                    type: 'success',
-                    message: '删除成功!'
-                });
-                that.getruleDetailData(that.rowevalradio)
+                apiGetevaluateRuleinfodeleteList(paramsArr.join(',')).then(datas =>{
+                    that.$message({
+                        type: 'success',
+                        message: '删除成功!'
+                    });
+                    that.changeDateSelect = []
+                    that.getruleDetailData(that.rowevalradio)
+                })
             })
         },        
         rowClick(selection, row) {

+ 283 - 4
src/components/gatewayPage.vue

@@ -1,7 +1,63 @@
 <template>
     <div class="gatewayPage">
-        <div class="mainMessage">
-            gatewayPage
+        <div class="gateway_top">
+            <div class="gateway_top_com">
+                <p>单位评级:</p>
+                <div id="companyLevel" style="width: 100%;height: 250px;"></div>
+            </div>
+            <div class="gateway_top_com">
+                <p>部门评级:</p>
+                <div id="departmentLevel" style="width: 100%;height: 250px;"></div>
+            </div>
+            <div class="gateway_top_table">
+                <p>公告栏:</p>
+                <el-table :data="tableData" style="width: 100%">
+                    <el-table-column type="index" label="序号" width="50" />
+                    <el-table-column prop="name" label="公告标题" width="300" />
+                    <el-table-column prop="address" label="发布部门" />
+                    <el-table-column prop="address" label="发布日期" />
+                </el-table>
+            </div>
+        </div>
+        <div class="gateway_cen">
+            <div class="gateway_cen_left">
+                <p>目标完成率:</p>
+                <div style="display:flex;width:100%">
+                    <div id="target1" style="width: 25%;height: 250px;"></div>
+                    <div id="target2" style="width: 25%;height: 250px;"></div>
+                    <div id="target3" style="width: 25%;height: 250px;"></div>
+                    <div id="target4" style="width: 25%;height: 250px;"></div>
+                </div>
+            </div>
+            <div class="gateway_cen_right">
+                <p>考评公告栏:</p>
+                <el-table :data="tableData" style="width: 100%">
+                    <el-table-column type="index" label="序号" width="50" />
+                    <el-table-column prop="name" label="公告标题" width="300" />
+                    <el-table-column prop="address" label="发布部门" />
+                    <el-table-column prop="address" label="发布日期" />
+                </el-table>
+            </div>
+        </div>
+        <div class="gateway_bot">
+            <div class="gateway_bot_left">
+                <p>任务完成排行榜:</p>
+                <el-table :data="tableData" style="width: 100%">
+                    <el-table-column type="index" label="序号" width="50" />
+                    <el-table-column prop="name" label="公告标题" width="300" />
+                    <el-table-column prop="address" label="发布部门" />
+                    <el-table-column prop="address" label="发布日期" />
+                </el-table>
+            </div>
+            <div class="gateway_bot_right">
+                <p>年度评级公示栏:</p>
+                <el-table :data="tableData" style="width: 100%">
+                    <el-table-column type="index" label="序号" width="50" />
+                    <el-table-column prop="name" label="公告标题" width="300" />
+                    <el-table-column prop="address" label="发布部门" />
+                    <el-table-column prop="address" label="发布日期" />
+                </el-table>
+            </div>
         </div>
     </div>
 </template>
@@ -16,16 +72,239 @@ export default {
     created() {
     },
     mounted() {
+        this.getCompanyData()
+        this.getdepartmentData()
+        this.getTargetData()
+        this.getTargetData2()
+        this.getTargetData3()
+        this.getTargetData4()
     },
     methods: {
+        //单位评级数据
+        getCompanyData() {
+            let data = [
+                { value: 16, name: 'A级' },
+                { value: 20, name: 'B级' },
+                { value: 10, name: 'C级' },
+                { value: 3, name: 'D级' }
+            ]
+            this.levelPieData('companyLevel', data)
+        },
+        //部门评级数据
+        getdepartmentData() {
+            let data = [
+                { value: 16, name: 'A级' },
+                { value: 20, name: 'B级' },
+                { value: 10, name: 'C级' },
+                { value: 3, name: 'D级' }
+            ]
+            this.levelPieData('departmentLevel', data)
+        },
+        levelPieData(name, data) {
+            let option = {
+                tooltip: {
+                    trigger: 'item'
+                },
+                legend: {
+                    orient: 'vertical',
+                    right: '10%',
+                    bottom: '20%'
+                },
+                series: [
+                    {
+                        name: '部门评级',
+                        type: 'pie',
+                        radius: ['35%', '65%'],
+                        right: '25%',
+                        data: data,
+                        itemStyle: {
+                            borderRadius: 5,
+                            borderColor: '#fff',
+                            borderWidth: 2
+                        }
+                    }
+                ]
+            }
+            let dom = document.getElementById(name);
+            dom.removeAttribute("_echarts_instance_")
+            let myChart = this.$echarts.init(dom);
+            myChart.setOption(option);
+            window.addEventListener("resize", function () {
+                myChart.resize()
+            })
+        },
+        // 目标完成率
+        getTargetData() {
+            let data = [
+                { value: 26, name: '火电' },
+                { value: 17, name: '水电' },
+                { value: 22, name: '新能源' },
+                { value: 35, name: '矿山' }
+            ]
+            this.departmentPieData('target1', data, '生产运营')
+        },
+        getTargetData2() {
+            let data = [
+                { value: 26, name: '火电' },
+                { value: 17, name: '水电' },
+                { value: 22, name: '新能源' },
+                { value: 35, name: '矿山' }
+            ]
+            this.departmentPieData('target2', data, '前期')
+        },
+        getTargetData3() {
+            let data = [
+                { value: 26, name: '火电' },
+                { value: 17, name: '水电' },
+                { value: 22, name: '新能源' },
+                { value: 35, name: '矿山' }
+            ]
+            this.departmentPieData('target3', data, '基建')
+        },
+        getTargetData4() {
+            let data = [
+                { value: 26, name: '火电' },
+                { value: 17, name: '水电' },
+                { value: 22, name: '新能源' },
+                { value: 35, name: '矿山' }
+            ]
+            this.departmentPieData('target4', data, '其他')
+        },
+        departmentPieData(name, data, title) {
+            let option = {
+                title: {
+                    text: title,
+                    bottom: '2%',
+                    left: 'center',
+                    textStyle: {
+                        fontSize: 14
+                    }
+                },
+                tooltip: {
+                    trigger: 'item'
+                },
+                legend: {},
+                series: [
+                    {
+                        name: '部门评级',
+                        type: 'pie',
+                        radius: ['25%', '55%'],
+                        label: {
+                            show:false
+                        },
+                        // right: '25%',
+                        data: data,
+                        itemStyle: {
+                            borderRadius: 5,
+                            borderColor: '#fff',
+                            borderWidth: 2
+                        }
+                    }
+                ]
+            }
+            let dom = document.getElementById(name);
+            dom.removeAttribute("_echarts_instance_")
+            let myChart = this.$echarts.init(dom);
+            myChart.setOption(option);
+            window.addEventListener("resize", function () {
+                myChart.resize()
+            })
+        },
+        //公告栏
     }
 }
 </script>
 
 <style lang="less">
 .gatewayPage{
-    .mainMessage{
-        height: 90vh;
+    height: 90vh;
+    .gateway_top{
+        display: flex;
+        margin-bottom: 10px;
+        .gateway_top_com{
+            width: 29vw;
+            margin-right: 10px;
+            background: #fff;
+            border-radius: 20px;
+            padding: 10px 0 0 10px;
+            p{
+                font-weight: bold;
+                font-size: 14px;
+                margin-bottom: 10px;
+            }
+        }
+        .gateway_top_table{
+            width: calc(40vw - 10px);
+            background: #fff;
+            border-radius: 20px;
+            padding: 15px 5px 5px 5px;
+            p{
+                font-weight: bold;
+                font-size: 14px;
+                margin-bottom: 10px;
+            }
+        }
+    }
+    .gateway_cen{
+        display: flex;
+        margin-bottom: 10px;
+        .gateway_cen_left{
+            width: 60vw;
+            margin-right: 10px;
+            background: #fff;
+            border-radius: 20px;
+            padding: 10px 0 0 10px;
+            p{
+                font-weight: bold;
+                font-size: 14px;
+                margin-bottom: 10px;
+            }
+        }
+        .gateway_cen_right{
+            width: 40vw;
+            background: #fff;
+            border-radius: 20px;
+            padding: 10px 0 0 10px;
+            p{
+                font-weight: bold;
+                font-size: 14px;
+                margin-bottom: 10px;
+            }
+        }
+    }
+    .gateway_bot{
+        display: flex;
+        .gateway_bot_left{
+            width: 60vw;
+            background: #fff;
+            margin-right: 10px;
+            border-radius: 20px;
+            padding: 10px 0 0 10px;
+            p{
+                font-weight: bold;
+                font-size: 14px;
+                margin-bottom: 10px;
+            }
+        }
+        .gateway_bot_right{
+            width: 40vw;
+            background: #fff;
+            border-radius: 20px;
+            padding: 10px 0 0 10px;
+            p{
+                font-weight: bold;
+                font-size: 14px;
+                margin-bottom: 10px;
+            }
+        }
+    }
+    .el-table th{
+        background: #fff !important;
+    }
+    .el-table{
+        .el-table__body-wrapper{
+            height: 18vh !important;
+        }
     }
 }
 </style>

+ 3 - 3
src/views/homePage.vue

@@ -45,7 +45,7 @@
                         <span>{{ tag.name }}</span>
                     </el-tag>
                 </div>
-                <div class="mainMessage">
+                <div class="mainMessage" :style="$route.path === '/home'? 'background: #f3f7f8;': 'background: #fff;padding-top: 10px'">
                     <router-view></router-view>
                 </div>
             </div>
@@ -542,8 +542,8 @@ export default {
             }
             .mainMessage{
                 width: 85vw;
-                padding-top: 10px;
-                background: #fff;
+                // padding-top: 10px;
+                // background: #fff;
                 border-radius: 20px;
             }
         }