浏览代码

考评人员配置增删改查服务联调;增加搜索条件功能;

SunZehao 2 年之前
父节点
当前提交
9c101d857d

+ 31 - 10
src/api/api.js

@@ -47,8 +47,7 @@ export function apiGetWeather(params) {
 
 //----------------------------------------对标业务------------------------------------------------
 //----------------------------------------考评业务------------------------------------------------
-//----------------------------------------对标考评知识库------------------------------------------------
-//----------------------------------------对标体系配置------------------------------------------------
+//----------------------------------------考评体系配置------------------------------------------------
 //----考评指标管理
 //----"指标-查询"
 export function apiGetIndicatorList(params) {
@@ -88,13 +87,6 @@ export function apiGetIndicatordicdeleteList(params) {
         method: 'post'
     })
 }
-//----"指标项条目-查询"
-export function apiGetdataDictionaryList() {
-    return httpRequest({
-        url: 'data-dictionary/list?superKey=ZBX0001',
-        method: 'get'
-    })
-}
 //----考评规则配置
 //----考评规则-list
 export function apiGetevaluateRuleList(params) {
@@ -115,7 +107,7 @@ export function apiGetevaluateRuledeleteList(params) {
         method: 'post'
     })
 }
-//----"规则模块,规则阶段数据"
+//----"规则模块,规则阶段数据" || "指标项条目-查询"
 export function apiGetdatadictionaryList(params) {
     return httpRequest({
         url: 'data-dictionary/list',
@@ -196,4 +188,33 @@ export function apiGetpersonneldeleteList(params) {
         method: 'post'
     })
 }
+//----------------------------------------考评知识库------------------------------------------------
+//----考评得分规则列表查询-list
+export function apiGetevaluationscoringruleList(params) {
+    return httpRequest({
+        url: 'evaluation-scoring-rule/list',
+        method: 'get',
+        params: params
+    })
+}
+//----"考评得分规则-保存/修改"
+export function apiGetevaluationscoringSaveList(params) {
+    return httpRequest.post('evaluation-scoring-rule/saveOrUpdate', params)
+}
+//-----组织结构-查询
+export function apiGetorganizationgetTree(params) {
+    return httpRequest({
+        url: 'organization-structure/getTree',
+        method: 'get',
+        params: params
+    })
+}
+//-----人员-查询
+export function apiGetuserListAll(params) {
+    return httpRequest({
+        url: 'user/listAll',
+        method: 'get',
+        params: params
+    })
+}
 //----------------------------------------基础信息配置------------------------------------------------

+ 4 - 1
src/components/evaluationSystem/IndicatorItemPage.vue

@@ -160,7 +160,10 @@ export default {
         // 查询指标项条目
         getindicItemData() {
             let that = this
-            apiGetdataDictionaryList().then(datas =>{
+            let params = {
+                superKey: 'ZBX0001'
+            }
+            apiGetdataDictionaryList(params).then(datas =>{
                 if (datas && datas.data) {
                     that.indicItemoptions = datas.data
                 }

+ 29 - 7
src/components/evaluationSystem/evaluationCompanyPage.vue

@@ -122,7 +122,14 @@
                                 </el-select>
                             </el-form-item>
                             <el-form-item label="考评周期" prop="evaluationCycle">
-                                <el-input-number v-model="ruleForm.evaluationCycle" :min="1" />
+                                <el-select v-model="ruleForm.evaluationCycle" placeholder="请选择业务阶段">
+                                    <el-option
+                                    v-for="item in periodData"
+                                    :key="item.keyValue"
+                                    :label="item.keyName"
+                                    :value="item.keyValue">
+                                    </el-option>
+                                </el-select>
                             </el-form-item>
                             <el-form-item label="指标顺序" prop="orderNum">
                                 <el-input-number v-model="ruleForm.orderNum" :min="1" />
@@ -145,7 +152,8 @@
 
 <script>
 import importDailog from '../importPage/importDailog.vue'
-import {apiGetOrganizationList, apiGetorganizationSaveList, apiGetorganizationdeleteList, apiGetdatadictionaryList, apiGetevaluateListAll} from '../../api/api'
+import {apiGetOrganizationList, apiGetorganizationSaveList, apiGetorganizationdeleteList,
+ apiGetdatadictionaryList, apiGetevaluateListAll} from '../../api/api'
 export default {
   components: { importDailog },
     data() {
@@ -160,21 +168,19 @@ export default {
             moduleData: [],
             stageData: [],
             ruleDataAll: [],
+            periodData: [],
             ruleForm: {
                 organizationName: '',
                 evaluateRule: '',
                 binSection: '',
                 binStage: '',
-                evaluationCycle: 1,
+                evaluationCycle: '',
                 orderNum: 1
             },
             rules: {
                 organizationName: [
                     { required: true, message: '请输入单位名称', trigger: 'blur' }
                 ],
-                evaluationCycle: [
-                    { required: true, message: '请输入考评周期', trigger: 'blur' }
-                ],
                 evaluateRule: [
                     { required: true, message: '请选择考评规则', trigger: 'change' }
                 ],
@@ -184,6 +190,9 @@ export default {
                 binStage: [
                     { required: true, message: '请输入业务阶段', trigger: 'change' }
                 ],
+                evaluationCycle: [
+                    { required: true, message: '请选择考评周期', trigger: 'change' }
+                ],
                 orderNum: [
                     { required: true, message: '请输入指标顺序', trigger: 'blur' }
                 ]
@@ -202,6 +211,7 @@ export default {
         this.getRuleallData()
         this.getDataDictionary('MK0001') //模块
         this.getDataDictionary('JD0001') //阶段
+        this.getPeriodData()
     },
     methods:{
         // 查询单位数据
@@ -246,6 +256,18 @@ export default {
                 }
             })
         },
+        //考评周期
+        getPeriodData() {
+            let that = this
+            let params = {
+                superKey: 'KPZQ0001'
+            }
+            apiGetdatadictionaryList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.periodData = datas
+                }
+            })
+        },
         changeRule(val) {
             this.ruleDataAll.forEach(item =>{
                 if (item.id === val) {
@@ -266,7 +288,7 @@ export default {
                     evaluateRule: '',
                     binSection: '',
                     binStage: '',
-                    evaluationCycle: 1,
+                    evaluationCycle: '',
                     orderNum: 1
                 }
             })

+ 27 - 5
src/components/evaluationSystem/evaluationDepartmentPage.vue

@@ -122,7 +122,14 @@
                                 </el-select>
                             </el-form-item>
                             <el-form-item label="考评周期" prop="evaluationCycle">
-                                <el-input-number v-model="ruleForm.evaluationCycle" :min="1" />
+                                <el-select v-model="ruleForm.evaluationCycle" placeholder="请选择业务阶段">
+                                    <el-option
+                                    v-for="item in periodData"
+                                    :key="item.keyValue"
+                                    :label="item.keyName"
+                                    :value="item.keyValue">
+                                    </el-option>
+                                </el-select>
                             </el-form-item>
                             <el-form-item label="指标顺序" prop="orderNum">
                                 <el-input-number v-model="ruleForm.orderNum" :min="1" />
@@ -145,7 +152,8 @@
 
 <script>
 import importDailog from '../importPage/importDailog.vue'
-import {apiGetOrganizationList, apiGetorganizationSaveList, apiGetorganizationdeleteList, apiGetdatadictionaryList, apiGetevaluateListAll} from '../../api/api'
+import {apiGetOrganizationList, apiGetorganizationSaveList, apiGetorganizationdeleteList, 
+apiGetdatadictionaryList, apiGetevaluateListAll} from '../../api/api'
 export default {
   components: { importDailog },
     data() {
@@ -160,12 +168,13 @@ export default {
             moduleData: [],
             stageData: [],
             ruleDataAll: [],
+            periodData: [],
             ruleForm: {
                 organizationName: '',
                 evaluateRule: '',
                 binSection: '',
                 binStage: '',
-                evaluationCycle: 1,
+                evaluationCycle: '',
                 orderNum: 1
             },
             rules: {
@@ -173,7 +182,7 @@ export default {
                     { required: true, message: '请输入部门名称', trigger: 'blur' }
                 ],
                 evaluationCycle: [
-                    { required: true, message: '请输入考评周期', trigger: 'blur' }
+                    { required: true, message: '请选择考评周期', trigger: 'change' }
                 ],
                 evaluateRule: [
                     { required: true, message: '请选择考评规则', trigger: 'change' }
@@ -202,6 +211,7 @@ export default {
         this.getRuleallData()
         this.getDataDictionary('MK0001') //模块
         this.getDataDictionary('JD0001') //阶段
+        this.getPeriodData()
     },
     methods:{
         // 查询部门数据
@@ -246,6 +256,18 @@ export default {
                 }
             })
         },
+        //考评周期
+        getPeriodData() {
+            let that = this
+            let params = {
+                superKey: 'KPZQ0001'
+            }
+            apiGetdatadictionaryList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.periodData = datas.data
+                }
+            })
+        },
         changeRule(val) {
             this.ruleDataAll.forEach(item =>{
                 if (item.id === val) {
@@ -266,7 +288,7 @@ export default {
                     evaluateRule: '',
                     binSection: '',
                     binStage: '',
-                    evaluationCycle: 1,
+                    evaluationCycle: '',
                     orderNum: 1
                 }
             })

+ 7 - 7
src/components/evaluationSystem/evaluationIndexPage.vue

@@ -68,10 +68,10 @@
                     <el-table-column label="指标名称" prop="indicatorName" />
                     <el-table-column label="指标编码" prop="indicatorCode" />
                     <el-table-column label="指标单位" prop="unit" />
-                    <el-table-column label="业务板块" prop="binSection" />
-                    <el-table-column label="业务阶段" prop="binStage" />
-                    <el-table-column label="部门" prop="dept" />
-                    <el-table-column label="公司" prop="company" />
+                    <el-table-column label="业务板块" prop="binSectionName" />
+                    <el-table-column label="业务阶段" prop="binStageName" />
+                    <!-- <el-table-column label="公司" prop="company" />
+                    <el-table-column label="部门" prop="dept" /> -->
                     <el-table-column label="是否专项" prop="isAdditional" />
                     <el-table-column label="是否量化" prop="isQuantified" />
                     <el-table-column label="描述">
@@ -102,7 +102,7 @@
                                 <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-input v-model="ruleForm.indicatorCode" placeholder="请输入指标编码" :disabled="isSave"></el-input>
                             </el-form-item>
                             <el-form-item label="指标单位" prop="indicatorUnit">
                                 <el-input v-model="ruleForm.indicatorUnit" placeholder="请输入指标单位"></el-input>
@@ -278,7 +278,7 @@ export default {
         handleAdd() {
             this.dialogVisible = true
             this.isSave = false
-            this.title = '新增考评管理'
+            this.title = '新增考评指标'
             this.$nextTick(() =>{
                 // this.$refs['ruleForm'].resetFields()
                 this.ruleForm = {
@@ -297,7 +297,7 @@ export default {
         handleEdit() {
             this.dialogVisible = true
             this.isSave = true
-            this.title = '修改考评管理'
+            this.title = '修改考评指标'
             this.evalradio = this.changeDateSelect[0]
             this.ruleForm = {
                 indicatorName: this.evalradio.indicatorName,

+ 493 - 248
src/components/evaluationSystem/evaluationPersonnelPage.vue

@@ -1,27 +1,17 @@
 <template>
-    <div class="evaluationRules" v-loading="loadingImport">
-        <div class="evaluationRulesBtn">
-            <p class="titleSty">考评人员配置</p>
+    <div class="evaluationPerson" v-loading="loadingImport">
+        <div class="evaluationPersonBtn">
+            <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,25 @@
                             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="evaluationPersonTableData">
+                <el-table :data="evaluationPersonData" 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="companyName" />
+                    <el-table-column label="所属部门" prop="deptName" />
+                    <el-table-column label="人员名称" prop="personnelName" />
+                    <el-table-column label="人员岗位" prop="position" />
+                    <el-table-column label="人员职称" prop="rank" />
+                    <el-table-column label="考评周期" prop="evaluationCycle" />
+                    <el-table-column label="考评规则ID" prop="evaluateRuleId" />
+                    <el-table-column label="是否考核" prop="isCheck" />
+                    <el-table-column label="考核级别" prop="evaluationLevel" />
+                    <el-table-column label="年份" prop="year" />
+                    <el-table-column label="月份" prop="month" />
                 </el-table>
                 <el-pagination
                     @size-change="handleSizeChange"
@@ -131,58 +85,110 @@
                     layout="total, prev, pager, next, jumper"
                     :total="page.total">
                 </el-pagination>
+            </div>'
+            <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="companyName">
+                                <el-select v-model="ruleForm.companyName" placeholder="请选择所属公司" @change="changeCompany">
+                                    <el-option
+                                    v-for="item in companyDatas"
+                                    :key="item.id"
+                                    :label="item.name"
+                                    :value="item.id">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="所属部门" prop="deptName">
+                                <el-select v-model="ruleForm.deptName" placeholder="请选择所属部门" @change="changeDepartment">
+                                    <el-option
+                                    v-for="item in departmentDatas"
+                                    :key="item.id"
+                                    :label="item.name"
+                                    :value="item.id">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="人员名称" prop="personnelName">
+                                <el-select v-model="ruleForm.personnelName" placeholder="请选择人员名称" @change="changePerson">
+                                    <el-option
+                                    v-for="item in personDatas"
+                                    :key="item.id"
+                                    :label="item.name"
+                                    :value="item.id">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="人员岗位" prop="position">
+                                <el-input v-model="ruleForm.position" placeholder="请输入人员岗位"></el-input>
+                            </el-form-item>
+                            <el-form-item label="人员职称" prop="rank">
+                                <el-input v-model="ruleForm.rank" placeholder="请输入人员职称"></el-input>
+                            </el-form-item>
+                            <el-form-item label="是否考核">
+                                <el-radio-group v-model="ruleForm.isCheck">
+                                    <el-radio border label="是" />
+                                    <el-radio border label="否" />
+                                </el-radio-group>
+                            </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="考评周期" prop="evaluationCycle">
+                                <el-select v-model="ruleForm.evaluationCycle" placeholder="请选择业务阶段">
+                                    <el-option
+                                    v-for="item in periodData"
+                                    :key="item.keyValue"
+                                    :label="item.keyName"
+                                    :value="item.keyValue">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="考评级别" prop="evaluationLevel">
+                                <el-select v-model="ruleForm.evaluationLevel" placeholder="请选择考评级别">
+                                    <el-option
+                                    v-for="item in levelDatas"
+                                    :key="item.keyValue"
+                                    :label="item.keyName"
+                                    :value="item.keyValue">
+                                    </el-option>
+                                </el-select>
+                            </el-form-item>
+                            <el-form-item label="年份" prop="year">
+                                <el-date-picker
+                                    v-model="ruleForm.year"
+                                    type="year"
+                                    value-format="YYYY"
+                                    placeholder="请选择年份"
+                                    />
+                            </el-form-item>
+                            <el-form-item label="月份">
+                                <el-date-picker
+                                    v-model="ruleForm.month"
+                                    type="month"
+                                    value-format="MM"
+                                    placeholder="请选择月份"
+                                    />
+                            </el-form-item>
+                        </el-form>
+                    </div>
+                    <template #footer>
+                        <span class="dialog-footer">
+                            <el-button @click="dialogVisible = false">取 消</el-button>
+                            <el-button type="primary" @click="saveevaluationPersonMsg('ruleForm')">确 定</el-button>
+                        </span>
+                    </template>
+                </el-dialog>
             </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>
+            <indicator-item ref="indicatorItem"></indicator-item>
         </div>
         <import-dailog ref="importPage" @successImport="successImport" @importLoading="importLoading"></import-dailog>
     </div>
@@ -190,70 +196,324 @@
 
 <script>
 import importDailog from '../importPage/importDailog.vue'
-import {apiGetgetStandardPointManagementList, apiGetdeleteStandardPointManagement} from '../../api/api'
+import {apiGetpersonnelList, apiGetpersonnelSaveList, apiGetpersonneldeleteList,
+ apiGetevaluateListAll, apiGetorganizationgetTree, apiGetdatadictionaryList, apiGetuserListAll} from '../../api/api'
 export default {
   components: { importDailog },
     data() {
         return {
             dialogVisible: false,
             title: '',
+            isSave: false,
+            changeDateSelect: [],
+            indicatoroptions: [],
+            companyS: '',
+            evaluationPersonData:[],
+            ruleDataAll: [],
+            periodData: [],
+            levelDatas: [],
+            companyDatas: [],
+            departmentDatas: [],
+            personDatas: [],
             ruleForm: {
-                indicatorId: '',
-                totalScore: '',
-                evaluateMethod: '',
-                evaluateFormula: '',
-                mappingFun: '',
-                desc: ''
+                companyName: '',
+                deptName: '',
+                personnelName: '',
+                position: '',
+                rank: '',
+                isCheck: '否',
+                evaluateRule: '',
+                evaluationCycle: '',
+                evaluationLevel: '',
+                year: '',
+                month: ''
             },
             rules: {
-                indicatorId: [
-                    { required: true, message: '请选择指标名称', trigger: 'blur' }
+                companyName: [
+                    { required: true, message: '请输入所属公司', trigger: 'blur' }
+                ],
+                deptName: [
+                    { required: true, message: '请输入所属部门', trigger: 'blur' }
                 ],
-                totalScore: [
-                    { required: true, message: '请输入指标总分', trigger: 'blur' }
+                personnelName: [
+                    { required: true, message: '请输入人员名称', trigger: 'blur' }
                 ],
-                evaluateMethod: [
-                    { required: true, message: '请选择评分方式', trigger: 'change' }
+                position: [
+                    { required: true, message: '请输入人员岗位', trigger: 'blur' }
                 ],
-                evaluateFormula: [
-                    { required: true, message: '请输入评分公式', trigger: 'blur' }
+                rank: [
+                    { required: true, message: '请输入人员职称', trigger: 'blur' }
                 ],
-                mappingFun: [
-                    { required: true, message: '请选择隐射函数', trigger: 'change' }
+                evaluateRule: [
+                    { required: true, message: '请选择考评规则', trigger: 'change' }
                 ],
-                desc: [
-                    { required: true, message: '请输入描述', trigger: 'change' }
+                evaluationCycle: [
+                    { required: true, message: '请选择考评周期', trigger: 'change' }
+                ],
+                evaluationLevel: [
+                    { required: true, message: '请输入考评级别', trigger: 'blur' }
+                ],
+                year: [
+                    { required: true, message: '请选择年份', trigger: 'change' }
                 ]
             },
-            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.getEvalpersonData()
+        this.getRuleallData()
+        this.getOrganizetionData(23031000, 2, 'GS')
+        this.getPeriodData()
+        this.getevalLevel()
     },
     methods:{
+        // 查询人员配置数据
+        getEvalpersonData(type) {
+            let that = this
+            let params = {
+                pageNum: this.page.currentPage,
+                pageSize: this.page.pagesize,
+                organizationType: 'DWKP'
+            }
+            if (type) {
+                params.personnelName = that.companyS
+            }
+            apiGetpersonnelList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.evaluationPersonData = datas.data.records
+                    that.page.total = datas.data.total
+                }
+            })
+        },
+        //查询组织数据
+        getOrganizetionData(id, num, type) {
+            let that = this
+            let params = {
+                id: id,
+                num: num
+            }
+            apiGetorganizationgetTree(params).then(datas =>{
+                if (datas && datas.data && datas.data[0].children.length>0) {
+                    if (type === 'GS') {
+                        that.companyDatas = datas.data[0].children
+                    } else {
+                        that.departmentDatas = datas.data[0].children
+                    }
+                }
+            })
+        },
+        // 查询人员
+        getDepartMentPerson(id) {
+            let that = this
+            let params = {
+                orgId: id
+            }
+            apiGetuserListAll(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.personDatas = datas.data
+                }
+            })
+        },
+        //考评周期
+        getPeriodData() {
+            let that = this
+            let params = {
+                superKey: 'KPZQ0001'
+            }
+            apiGetdatadictionaryList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.periodData = datas.data
+                }
+            })
+        },
+        // 考评级别
+        getevalLevel() {
+            let that = this
+            let params = {
+                superKey: 'KHJB0001'
+            }
+            apiGetdatadictionaryList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.levelDatas = 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
+                }
+            })
+        },
+        changeCompany(val) {
+            this.getOrganizetionData(val, 3, 'BM')
+        },
+        changeDepartment(val) {
+            this.getDepartMentPerson(val)
+        },
+        // 新增区域信息
+        handleAdd() {
+            this.dialogVisible = true
+            this.isSave = false
+            this.title = '新增考评人员'
+            this.$nextTick(() =>{
+                // this.$refs['ruleForm'].resetFields()
+                this.ruleForm = {
+                    companyName: '',
+                    deptName: '',
+                    personnelName: '',
+                    position: '',
+                    rank: '',
+                    isCheck: '否',
+                    evaluateRule: '',
+                    evaluationCycle: '',
+                    evaluationLevel: '',
+                    year: '',
+                    month: ''
+                }
+            })
+        },
+        handleEdit() {
+            this.dialogVisible = true
+            this.isSave = true
+            this.title = '修改考评人员'
+            this.evalradio = this.changeDateSelect[0]
+            this.ruleForm = {
+                companyName: this.evalradio.companyId,
+                deptName: this.evalradio.deptId,
+                personnelName: this.evalradio.personnelId,
+                position: this.evalradio.position,
+                rank: this.evalradio.rank,
+                isCheck: this.evalradio.isCheck,
+                evaluateRule: this.evalradio.evaluateRuleId,
+                evaluationCycle: this.evalradio.evaluationCycle,
+                evaluationLevel: this.evalradio.evaluationLevel,
+                year: this.evalradio.year,
+                month: this.evalradio.month
+            }
+            this.changeCompany(this.evalradio.companyId, 3, 'BM')
+            this.changeDepartment(this.evalradio.deptId)
+        },
+        saveevaluationPersonMsg(formName) {
+            let that = this
+            that.$refs[formName].validate((valid) => {
+                if (valid) {
+                    that.saveAndEditIndicatorData()
+                }
+            });
+        },
+        //新增/修改指标数据
+        saveAndEditIndicatorData() {
+            let that = this
+            let comName = ''
+            let departName = ''
+            let personName = ''
+            this.companyDatas.forEach(it =>{
+                if (it.id === that.ruleForm.companyName) {
+                    comName = it.name
+                }
+            })
+            this.departmentDatas.forEach(it =>{
+                if (it.id === that.ruleForm.deptName) {
+                    departName = it.name
+                }
+            })
+            this.personDatas.forEach(it =>{
+                if (it.id === that.ruleForm.personnelName) {
+                    personName = it.name
+                }
+            })
+            let params = {
+                companyId: that.ruleForm.companyName,
+                companyName: comName,
+                deptId: that.ruleForm.deptName,
+                deptName: departName,
+                personnelId: that.ruleForm.personnelName,
+                personnelName: personName,
+                position: that.ruleForm.position,
+                rank: that.ruleForm.rank,
+                isCheck: that.ruleForm.isCheck,
+                evaluateRuleId: that.ruleForm.evaluateRule,
+                evaluationCycle: that.ruleForm.evaluationCycle,
+                evaluationLevel: that.ruleForm.evaluationLevel,
+                year: that.ruleForm.year,
+                month: that.ruleForm.month
+            }
+            if (that.isSave) {
+                params.id = this.evalradio.id
+            }
+            apiGetpersonnelSaveList(params).then(datas =>{
+                if (!that.isSave) {
+                    that.$message({
+                        message: '考评人员新增成功',
+                        type: 'success'
+                    });
+                } else {
+                    that.$message({
+                        message: '考评人员修改成功',
+                        type: 'success'
+                    });
+                }
+                that.dialogVisible = false
+                that.changeDateSelect = []
+                that.getEvalpersonData()
+            })
+        },
+        //删除指标数据
+        handleDelete() {
+            this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(async() => {
+                let that = this
+                let paramsArr = []
+                that.changeDateSelect.forEach(it =>{
+                    paramsArr.push(it.id)
+                })
+                await apiGetpersonneldeleteList(paramsArr.join(',')).then(datas =>{
+                    if (datas) {
+                        that.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        });
+                        that.changeDateSelect = []
+                        that.getEvalpersonData()
+                    }
+                })
+            })
+        },        
+        rowClick(selection, row) {
+            this.changeDateSelect = selection
+        },
         getSeachData() {
             this.page.currentPage = 1
-            this.getCollectorwireprojectList('seach')
+            this.getEvalpersonData('seach')
+        },
+        resetSeach() {
+            this.page.currentPage = 1
+            this.companyS = ''
+            this.getEvalpersonData()
         },
         successImport(val) {
             this.loadingImport = false
-            this.getCollectorwireprojectList()
+            this.getEvalpersonData()
         },
         importLoading(val) {
             this.loadingImport = true
@@ -264,42 +524,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 +533,33 @@ export default {
 </script>
 
 <style lang="less">
-.evaluationRules{
-  .evaluationRulesBtn{
+.evaluationPerson{
+  .evaluationPersonBtn{
     //   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 +570,53 @@ 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%;
+                            }
+                            .el-input{
+                                height: 30px;
+                            }
+                        }
                     }
                 }
             }
-      }
-      .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{
+        }
+    }
+  .evaluationPersonTableData{
     padding: 10px 20px;
     .el-table{
         .el-table__body-wrapper{
-            .el-table__empty-block{
             height: 64vh !important;
-            }
         }
         .el-input__inner{
             height: 30px !important;
@@ -378,6 +624,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 +641,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>

+ 2 - 2
src/components/evaluationSystem/evaluationRulesPage.vue

@@ -98,7 +98,7 @@
                                 <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-select v-model="ruleForm.binSection" placeholder="请选择业务模块" :disabled="isSave">
                                     <el-option
                                     v-for="item in moduleData"
                                     :key="item.keyValue"
@@ -108,7 +108,7 @@
                                 </el-select>
                             </el-form-item>
                             <el-form-item label="业务阶段" prop="binStage">
-                                <el-select v-model="ruleForm.binStage" placeholder="请选择业务阶段">
+                                <el-select v-model="ruleForm.binStage" placeholder="请选择业务阶段" :disabled="isSave">
                                     <el-option
                                     v-for="item in stageData"
                                     :key="item.keyValue"

src/components/counterPage.vue → src/components/knowledgePage/counterPage.vue


+ 416 - 0
src/components/knowledgePage/scoringRulesDetailPage.vue

@@ -0,0 +1,416 @@
+<template>
+    <div class="rulesDetail">
+        <el-dialog title="考评得分规则详情" v-model="editEvaluaVisible" width="70vw" :close-on-click-modal="false">
+            <div class="rulesDetailAll">
+                <div class="rulesDetailBtn">
+                    <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="rulesDetailTableData">
+                        <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="50vw" :close-on-click-modal="false">
+                                <el-form :model="itemForm" :rules="rules" ref="itemForm" label-width="50px" :validate-on-rule-change="false">
+                                    <div class="periodFrom">
+                                        <div class="fromLeft">
+                                            <el-tabs type="border-card">
+                                                <el-tab-pane label="指标名称">
+                                                    <el-table
+                                                        size="mini"
+                                                        fit
+                                                        :show-header="false"
+                                                        :highlight-current-row="true"
+                                                        :stripe="false"
+                                                        :border="false"
+                                                        height="240"
+                                                        :data="[]"
+                                                    >
+                                                        <el-table-column prop="uniformCode" />
+                                                        <el-table-column prop="name" />
+                                                    </el-table>
+                                                </el-tab-pane>
+                                                <el-tab-pane label="指标项名称">
+                                                    <el-table
+                                                        size="mini"
+                                                        fit
+                                                        :show-header="false"
+                                                        :highlight-current-row="true"
+                                                        :stripe="false"
+                                                        :border="false"
+                                                        height="240"
+                                                        :data="[]"
+                                                    >
+                                                        <el-table-column prop="uniformCode" />
+                                                        <el-table-column prop="name" />
+                                                    </el-table>
+                                                </el-tab-pane>
+                                                <el-tab-pane label="函数">
+                                                    <el-table
+                                                        size="mini"
+                                                        fit
+                                                        :show-header="false"
+                                                        :highlight-current-row="true"
+                                                        :stripe="false"
+                                                        :border="false"
+                                                        :height="270"
+                                                        :data="[]"
+                                                    >
+                                                        <el-table-column min-width="60%">
+                                                        <template #default="scope">
+                                                            <el-popover trigger="hover" placement="bottom">
+                                                            <p>描述:{{ scope.row.describe }}</p>
+                                                            <p>参数:{{ scope.row.param }}</p>
+                                                            <template #reference>
+                                                                <span size="medium" transition="fade-in-linear">{{
+                                                                scope.row.lab
+                                                                }}</span>
+                                                            </template>
+                                                            </el-popover>
+                                                        </template>
+                                                        </el-table-column>
+                                                        <el-table-column min-width="40%">
+                                                        <template #default="scope">
+                                                            <el-popover trigger="hover" placement="bottom">
+                                                            <p>描述:{{ scope.row.describe }}</p>
+                                                            <p>参数:{{ scope.row.param }}</p>
+                                                            <template #reference>
+                                                                <span size="medium" transition="fade-in-linear">{{
+                                                                scope.row.name
+                                                                }}</span>
+                                                            </template>
+                                                            </el-popover>
+                                                        </template>
+                                                        </el-table-column>
+                                                    </el-table>
+                                                </el-tab-pane>
+                                                <el-tab-pane label="运算符">
+                                                    <!-- <el-button-group>
+                                                        <el-button
+                                                        v-for="item in operator"
+                                                        :key="item"
+                                                        plain
+                                                        type="primary"
+                                                        @click="elInputSplit(item)"
+                                                        style="width: 60px; margin: 7px 12px; height: 40px"
+                                                        >
+                                                        {{ item }}
+                                                        </el-button>
+                                                    </el-button-group> -->
+                                                </el-tab-pane>
+                                            </el-tabs>
+                                        </div>
+                                        <div class="fromRight">
+                                            <div>
+                                                <p>表达式</p>
+                                                <el-input
+                                                type="textarea"
+                                                rows="10"
+                                                v-model="itemForm.desc"
+                                                />
+                                            </div>
+                                            <div>
+                                                <p>表达式</p>
+                                                <el-input
+                                                type="textarea"
+                                                rows="4"
+                                                v-model="itemForm.desc"
+                                                />
+                                            </div>
+                                        </div>
+                                    </div>
+                                    <el-form-item label="描述">
+                                        <el-input v-model="itemForm.desc" :rows="5" type="textarea" placeholder="请输入描述"></el-input>
+                                    </el-form-item>
+                                </el-form>
+                            <template #footer>
+                                <span class="dialog-footer">
+                                    <el-button @click="dialogVisible = false">取 消</el-button>
+                                    <el-button type="primary" @click="saverulesDetailMsg('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.getrulesDetailData(row)
+            this.getindicItemData()
+        },
+        // 查询指标项数据
+        getrulesDetailData(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
+            }
+        },
+        saverulesDetailMsg(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.getrulesDetailData(that.rowevalradio)
+            })
+        },
+        //删除指标数据
+        handleDelete() {
+            this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(() => {
+                let that = this
+                let paramsArr = []
+                that.changeDateSelect.forEach(it =>{
+                    paramsArr.push(it.id)
+                })
+                apiGetIndicatordicdeleteList(paramsArr.join(',')).then(datas =>{
+                    that.$message({
+                        type: 'success',
+                        message: '删除成功!'
+                    });
+                    that.changeDateSelect = []
+                    that.getrulesDetailData(that.rowevalradio)
+                })
+            })
+        },        
+        rowClick(selection, row) {
+            this.changeDateSelect = selection
+        },
+        getSeachData() {
+            this.page.currentPage = 1
+            this.getrulesDetailData(this.rowevalradio, 'seach')
+        },
+        resetSeach() {
+            this.page.currentPage = 1
+            this.indicItem = ''
+            this.getrulesDetailData(this.rowevalradio)
+        },
+        handleSizeChange(val){
+            this.page.pagesize = val
+        },
+        handleCurrentChange(val){
+            this.page.currentPage =val
+        },
+    }
+}
+</script>
+
+<style lang="less">
+.rulesDetail{
+    .el-overlay{
+        .el-dialog{
+            margin-top: 5vh !important;
+            .el-dialog__body{
+                padding: 0 20px 30px 20px !important;
+                .rulesDetailAll{
+                    .el-select, .el-input{
+                        width: 100%;
+                    }
+                    .rulesDetailBtn{
+                        padding: 10px 20px 0 20px;
+                    }
+                    .rulesDetailTableData{
+                        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;
+                                .el-dialog__body{
+                                    padding: 20px !important;
+                                }
+                                .periodFrom{
+                                    display: flex;
+                                    .fromLeft{
+                                        width: 65%;
+                                        margin-right: 20px;
+                                    }
+                                    .fromRight{
+                                        width: 33%;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+}
+</style>

+ 245 - 103
src/components/knowledgePage/scoringRulesPage.vue

@@ -4,13 +4,13 @@
             <p class="titleSty">考评得分规则</p>
             <div class="collectSeach">
                 <div class="exceed">
-                    <span style="margin-top: 3px;">选项名称:</span>
-                    <el-select v-model="indicatorIdS" placeholder="请选择指标名称">
+                    <span style="margin-top: 3px;">指标名称:</span>
+                    <el-select v-model="indicatorStr" placeholder="请选择指标名称">
                         <el-option
-                        v-for="item in indicatoroptions"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
+                        v-for="item in indicItemoptions"
+                        :key="item.indicatorCode"
+                        :label="item.indicatorName"
+                        :value="item.indicatorCode">
                         </el-option>
                     </el-select>
                 </div>
@@ -37,6 +37,7 @@
                         plain
                         icon="Edit"
                         size="mini"
+                        :disabled="changeDateSelect.length === 0 || changeDateSelect.length > 1"
                         >修改</el-button>
                     </el-col>
                     <el-col :span="1.5">
@@ -45,7 +46,7 @@
                         plain
                         icon="Delete"
                         size="mini"
-                        :disabled="deleteSelect.length === 0"
+                        :disabled="changeDateSelect.length === 0"
                         @click="handleDelete"
                         >批量删除</el-button>
                     </el-col>
@@ -55,6 +56,7 @@
                         plain
                         icon="Upload"
                         size="mini"
+                        disabled
                         @click="handleImport"
                         >导入</el-button>
                     </el-col>
@@ -64,7 +66,7 @@
                             plain
                             icon="Download"
                             size="mini"
-                            @click="handleExport"
+                            disabled
                         >导出</el-button>
                     </el-col>
                 </el-row>
@@ -72,29 +74,13 @@
             <div class="scoringRulesTableData">
                 <el-table :data="scoringRulesData" border style="width: 100%" @select="rowClick" @select-all="allSelect">
                     <el-table-column type="selection" label="操作" align="center"></el-table-column>
-                    <el-table-column label="指标名称">
+                    <el-table-column label="指标名称" prop="indicatorUnit" width="150" />
+                    <el-table-column label="业务板块" prop="businessPhase" width="150" />
+                    <el-table-column label="业务阶段" prop="type" width="150" />
+                    <el-table-column label="描述" prop="describe" />
+                    <el-table-column label="操作" width="100">
                         <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="取值范围">
-                        <template #default="scope">
-                            <span>{{scope.row.indicator_id}}</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>
+                            <p class="indicitem" @click="scoringRuleDetail(scope.row)">详情</p>
                         </template>
                     </el-table-column>
                 </el-table>
@@ -111,30 +97,51 @@
                 <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-select v-model="ruleForm.indicatorId" placeholder="请选择指标名称" @change="chooseIndic">
                                 <el-option
-                                v-for="item in indicatoroptions"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
+                                v-for="item in indicItemoptions"
+                                :key="item.id"
+                                :label="item.indicatorName"
+                                :value="item.id">
                                 </el-option>
                             </el-select>
                         </el-form-item>
-                        <el-form-item label="取值范围" prop="optionOrder">
-                            <el-input v-model="ruleForm.optionOrder" placeholder="请输入取值范围"></el-input>
+                        <el-form-item label="指标项名称" prop="optionName">
+                            <el-select v-model="ruleForm.optionName" placeholder="请选择指标项名称" multiple collapse-tags>
+                                <el-option
+                                v-for="item in indicatorItems"
+                                :key="item.optionCode"
+                                :label="item.optionName"
+                                :value="item.optionCode">
+                                </el-option>
+                            </el-select>
                         </el-form-item>
-                        <el-form-item label="计算公式" prop="optionName">
-                            <!-- <el-select v-model="ruleForm.optionName" placeholder="请选择计算公式">
+                        <!-- <el-form-item label="业务模块" prop="binSection">
+                            <el-select v-model="ruleForm.binSection" placeholder="请选择业务模块">
                                 <el-option
-                                v-for="item in optionNameoptions"
-                                :key="item.value"
-                                :label="item.label"
-                                :value="item.value">
+                                v-for="item in moduleData"
+                                :key="item.keyValue"
+                                :label="item.keyName"
+                                :value="item.keyValue">
                                 </el-option>
-                            </el-select> -->
-                            <!-- <el-input v-model="ruleForm.optionName" @focus="showCounter" readonly placeholder="请输入计算公式"></el-input> -->
-                            <div class="counterSx" @click="showCounter">{{ruleForm.optionName}}</div>
+                            </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.keyValue">
+                                </el-option>
+                                </el-select>
+                        </el-form-item> -->
+                        <!-- <el-form-item label="取值范围" prop="optionOrder">
+                            <el-input v-model="ruleForm.optionOrder" placeholder="请输入取值范围"></el-input>
                         </el-form-item>
+                        <el-form-item label="计算公式" prop="optionName">
+                            <div class="counterSx" @click="showCounter">{{ruleForm.optionName}}</div>
+                        </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>
@@ -143,57 +150,60 @@
                 <template #footer>
                     <span class="dialog-footer">
                         <el-button @click="dialogVisible = false">取 消</el-button>
-                        <el-button type="primary">确 定</el-button>
+                        <el-button type="primary" @click="saveevaluscoringruleMsg('ruleForm')">确 定</el-button>
                     </span>
                 </template>
             </el-dialog>
+            <scoring-rules-detail-page ref="rulesDetail"></scoring-rules-detail-page>
         </div>
         <import-dailog ref="importPage" @successImport="successImport" @importLoading="importLoading"></import-dailog>
-        <counter-page ref="counter" @counterStr="counterStr"></counter-page>
     </div>
 </template>
 
 <script>
 import importDailog from '../importPage/importDailog.vue'
-import counterPage from '../counterPage.vue'
-import {apiGetgetStandardPointManagementList, apiGetdeleteStandardPointManagement} from '../../api/api'
+import scoringRulesDetailPage from './scoringRulesDetailPage.vue'
+import {apiGetevaluationscoringruleList, apiGetindicatorListAll, apiGetdatadictionaryList, apiGetevaluationscoringSaveList, apiGetIndicatordictionaryList} from '../../api/api'
 export default {
-  components: { importDailog, counterPage },
+  components: { importDailog, scoringRulesDetailPage },
     data() {
         return {
             dialogVisible: false,
             title: '',
+            indicItemoptions: [],
+            indicatorItems: [],
+            indicatorStr: '',
+            rowdataMsg: {},
+            changeDateSelect: [],
+            isSave: false,
+            moduleData: [],
+            stageData: [],
             ruleForm: {
                 indicatorId: '',
                 optionName: '',
-                optionOrder: '',
+                // binSection: '',
+                // binStage: '',
                 desc: ''
             },
             rules: {
                 indicatorId: [
-                    { required: true, message: '请选择指标名称', trigger: 'blur' }
+                    { required: true, message: '请选择指标名称', trigger: 'change' }
                 ],
                 optionName: [
-                    { required: true, message: '请选择选项名称', trigger: 'change' }
-                ],
-                optionOrder: [
-                    { required: true, message: '请输入选项顺序', trigger: 'blur' }
+                    { required: true, message: '请选择指标项名称', trigger: 'change' }
                 ],
+                // binSection: [
+                //     { required: true, message: '请选择业务模块', trigger: 'change' }
+                // ],
+                // binStage: [
+                //     { required: true, message: '请选择业务阶段', trigger: 'change' }
+                // ],
                 desc: [
-                    { required: true, message: '请输入描述', trigger: 'change' }
+                    { required: true, message: '请输入描述', trigger: 'blur' }
                 ]
             },
-            indicatoroptions: [],
-            optionNameoptions:[],
-            indicatorIdS: '',
-
-            windframradio: {},
-            deleteSelect: [],
-            changeDateSelect: [],
             loadingImport: false,
             scoringRulesData:[],
-            single: false,
-            regionaloptions:[],
             page:{
                 pagesize: 12,
                 currentPage: 1,
@@ -201,16 +211,172 @@ export default {
             }
         }
     },
-    mounted() {
-        // this.getCollectorwireprojectList()
+    created() {
+        this.getEvalpersonData()
+        this.getEvaluationData()
+        // this.getDataDictionary('MK0001') //模块
+        // this.getDataDictionary('JD0001') //阶段
     },
     methods:{
+        // 查询得分规则数据
+        getEvalpersonData(type) {
+            let that = this
+            let params = {
+                pageNum: this.page.currentPage,
+                pageSize: this.page.pagesize
+            }
+            if (type) {
+                params.organizationName = that.companyS
+            }
+            apiGetevaluationscoringruleList(params).then(datas =>{
+                if (datas && datas.data) {
+                    that.scoringRulesData = datas.data
+                    that.page.total = datas.data.total
+                }
+            })
+        },
+        // 查询指标数据
+        getEvaluationData() {
+            let that = this
+            apiGetindicatorListAll().then(datas =>{
+                if (datas && datas.data) {
+                    that.indicItemoptions = datas.data
+                }
+            })
+        },
+        // 查询指标项数据
+        getIndicatorItemData(id) {
+            let that = this
+            let params = {
+                pageNum: 1,
+                pageSize: 50,
+                indicatorId: id
+            }
+            apiGetIndicatordictionaryList(params).then(datas =>{
+                if (datas) {
+                    that.indicatorItems = datas
+                }
+            })
+        },
+        // 查询规则模块和阶段数据
+        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
+                    }
+                }
+            })
+        },
+        chooseIndic(val) {
+            this.getIndicatorItemData(val)
+        },
+        // 新增区域信息
+        handleAdd() {
+            this.dialogVisible = true
+            this.isSave = false
+            this.title = '新增考评得分规则'
+            this.$nextTick(() =>{
+                this.ruleForm = {
+                    indicatorId: '',
+                    optionName: '',
+                    // binSection: '',
+                    // binStage: '',
+                    desc: ''
+                }
+            })
+        },
+        handleEdit() {
+            this.dialogVisible = true
+            this.isSave = true
+            this.title = '修改考评得分规则'
+            let evalradio = this.changeDateSelect[0]
+            this.ruleForm = {
+                companyName: evalradio.companyName,
+                deptName: evalradio.deptName,
+                personnelName: evalradio.personnelName,
+                rank: evalradio.rank,
+                deptName: evalradio.deptName,
+                isCheck: '否',
+                evaluateRule: evalradio.evaluateRuleId,
+                evaluationCycle: evalradio.evaluationCycle
+            }
+        },
+        saveevaluscoringruleMsg(formName) {
+            let that = this
+            that.$refs[formName].validate((valid) => {
+                if (valid) {
+                    that.saveAndEditIndicatorData()
+                }
+            });
+        },
+        //新增/修改指标数据
+        saveAndEditIndicatorData() {
+            let that = this
+            let params = {
+                indicatorId: that.ruleForm.indicatorId,
+                optionCode: that.ruleForm.optionName,
+                des: that.ruleForm.desc
+            }
+            if (that.isSave) {
+                params.id = this.evalradio.id
+            }
+            apiGetpersonnelSaveList(params).then(datas =>{
+                if (!that.isSave) {
+                    that.$message({
+                        message: '考评人员新增成功',
+                        type: 'success'
+                    });
+                } else {
+                    that.$message({
+                        message: '考评人员修改成功',
+                        type: 'success'
+                    });
+                }
+                that.dialogVisible = false
+                that.changeDateSelect = []
+                that.getEvalpersonData()
+            })
+        },
+        //删除指标数据
+        handleDelete() {
+            this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
+                confirmButtonText: '确定',
+                cancelButtonText: '取消',
+                type: 'warning'
+            }).then(async() => {
+                let that = this
+                let paramsArr = []
+                that.changeDateSelect.forEach(it =>{
+                    paramsArr.push(it.id)
+                })
+                await apiGetpersonneldeleteList(paramsArr.join(',')).then(datas =>{
+                    if (datas) {
+                        that.$message({
+                            type: 'success',
+                            message: '删除成功!'
+                        });
+                        that.changeDateSelect = []
+                        that.getEvalpersonData()
+                    }
+                })
+            })
+        },  
         showCounter() {
             this.$refs.counter.init(this.ruleForm.optionName)
         },
         counterStr(val) {
             this.ruleForm.optionName = val
         },
+        scoringRuleDetail(row) {
+            this.$refs.rulesDetail.init(row)
+        },
         getSeachData() {
             this.page.currentPage = 1
             this.getCollectorwireprojectList('seach')
@@ -229,38 +395,7 @@ export default {
             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()
-            })
+            this.changeDateSelect = selection
         },
         handleImport() {
             this.$refs.importPage.upload.title = "考评指标管理信息导入"
@@ -332,9 +467,7 @@ export default {
     padding: 10px 20px;
     .el-table{
         .el-table__body-wrapper{
-            .el-table__empty-block{
             height: 64vh !important;
-            }
         }
         .el-input__inner{
             height: 30px !important;
@@ -342,6 +475,15 @@ 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;