|
@@ -10,12 +10,15 @@
|
|
|
<el-button style="margin-left: 10px;" @click="resetSeach">重置</el-button>
|
|
|
</div>
|
|
|
<div class="PeriodBtn">
|
|
|
+ <!-- $utils.havePurview('evalDepartment:oneLevel:add')
|
|
|
+ $utils.havePurview('evalDepartment:oneLevel:save')
|
|
|
+ $utils.havePurview('evalDepartment:oneLevel:delete') -->
|
|
|
<btns
|
|
|
:showImport="false"
|
|
|
:showExport="false"
|
|
|
- :showAdd="$utils.havePurview('evalDepartment:oneLevel:add')"
|
|
|
- :showSave="$utils.havePurview('evalDepartment:oneLevel:save')"
|
|
|
- :showDelete="$utils.havePurview('evalDepartment:oneLevel:delete')"
|
|
|
+ :showAdd="true"
|
|
|
+ :showSave="true"
|
|
|
+ :showDelete="true"
|
|
|
:disSave="changeDateSelect.length === 0 || changeDateSelect.length>1"
|
|
|
:disDelete="changeDateSelect.length === 0"
|
|
|
:disImport="true"
|
|
@@ -30,14 +33,22 @@
|
|
|
<div class="evaluationDepartmentTableData">
|
|
|
<el-table :data="evaluationDepartmentData" style="width: 100%" @select="rowClick" @select-all="rowClick">
|
|
|
<el-table-column type="selection" label="操作" align="center"></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="考评规则" prop="evaluateRuleName" />
|
|
|
- <el-table-column label="业务阶段" prop="binStageName" />
|
|
|
- <el-table-column label="业务属性" prop="binSectionName" />
|
|
|
- <!-- <el-table-column label="年" prop="year" />
|
|
|
- <el-table-column label="月" prop="month" /> -->
|
|
|
+ <el-table-column label="部门编码" prop="deptId" />
|
|
|
+ <el-table-column label="部门名称" prop="deptName" />
|
|
|
+ <el-table-column label="部门简称" prop="shortDeptName" />
|
|
|
+ <el-table-column label="考评类型" >
|
|
|
+ <template #default="scope">
|
|
|
+ <span>{{scope.row.evaluationCategory === 'BMKP'?'部门考评':''}}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="指标名称" prop="indicatorNames" width="400">
|
|
|
+ <template #default="scope">
|
|
|
+ <span>{{scope.row.indicatorNames.join(',')}}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="年" prop="annual" />
|
|
|
+ <el-table-column label="月" prop="monthly" />
|
|
|
+ <el-table-column label="描述" prop="des" />
|
|
|
<el-table-column label="创建时间" prop="createTime" />
|
|
|
</el-table>
|
|
|
<el-pagination
|
|
@@ -50,64 +61,152 @@
|
|
|
</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="organizationName">
|
|
|
- <el-select v-model="ruleForm.organizationName" placeholder="请选择部门" @change="changeRule">
|
|
|
- <el-option
|
|
|
- v-for="item in departmentDataAll"
|
|
|
- :key="item.id"
|
|
|
- :label="item.name"
|
|
|
- :value="item.id">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </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.binStage" placeholder="请选择业务阶段" disabled>
|
|
|
- <el-option
|
|
|
- v-for="item in stageData"
|
|
|
- :key="item.id"
|
|
|
- :label="item.stageName"
|
|
|
- :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.id"
|
|
|
- :label="item.sectionName"
|
|
|
- :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="orderNum">
|
|
|
- <el-input-number v-model="ruleForm.orderNum" :min="1" />
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
+ <el-dialog :title="title" v-model="dialogVisible" width="70vw" :close-on-click-modal="false">
|
|
|
+ <el-row class="periodFrom">
|
|
|
+ <el-col :span="8">
|
|
|
+ <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="DruleForm" :validate-on-rule-change="false">
|
|
|
+ <el-form-item label="指标名称" prop="indicatorName">
|
|
|
+ <el-input v-model="ruleForm.indicatorName" placeholder="请输入指标名称" @blur="blurInput"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="指标编码" prop="indicatorCode">
|
|
|
+ <el-input v-model="ruleForm.indicatorCode" placeholder="请输入指标编码" :disabled="isSave" @blur="blurInput"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="指标类别" prop="indicatorType">
|
|
|
+ <el-select v-model="ruleForm.indicatorType" placeholder="请选择指标类别">
|
|
|
+ <el-option
|
|
|
+ v-for="item in indicatorTypeData"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.typeName"
|
|
|
+ :value="item.id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="指标单位" prop="indicatorUnit">
|
|
|
+ <el-input v-model="ruleForm.indicatorUnit" placeholder="请输入指标单位"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="所属部门" prop="department">
|
|
|
+ <el-select v-model="ruleForm.department" placeholder="请选择所属部门">
|
|
|
+ <el-option
|
|
|
+ v-for="item in departData"
|
|
|
+ :key="item.dataKey"
|
|
|
+ :label="item.keyName"
|
|
|
+ :value="item.dataKey">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="业务阶段" prop="binStage">
|
|
|
+ <el-select v-model="ruleForm.binStage" placeholder="请选择业务阶段">
|
|
|
+ <el-option
|
|
|
+ v-for="item in stageData"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.stageName"
|
|
|
+ :value="item.id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </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.id"
|
|
|
+ :label="item.sectionName"
|
|
|
+ :value="item.id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="是否量化">
|
|
|
+ <el-radio-group v-model="ruleForm.isQuantified">
|
|
|
+ <el-radio border label="是" />
|
|
|
+ <el-radio border label="否" />
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="是否专项">
|
|
|
+ <el-radio-group v-model="ruleForm.isAdditional">
|
|
|
+ <el-radio border label="是" />
|
|
|
+ <el-radio border label="否" />
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="指标顺序" prop="orderNum">
|
|
|
+ <el-input-number v-model="ruleForm.orderNum" :min="1" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="描述" prop="desc">
|
|
|
+ <el-input v-model="ruleForm.desc" :rows="5" type="textarea" placeholder="请输入描述"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="16" class="indicatorItemBtn">
|
|
|
+ <div class="PeriodBtnDia">
|
|
|
+ <p class="indItemC">指标项配置管理</p>
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ size="mini"
|
|
|
+ @click="handleAddChild"
|
|
|
+ >
|
|
|
+ <img :src="addW" style="margin-right: 10px">
|
|
|
+ <span>新增</span>
|
|
|
+ </el-button>
|
|
|
+ </div>
|
|
|
+ <div class="indicatorItemTableData">
|
|
|
+ <div class="datasMsg" v-if="indicatoroptions.length>0" >
|
|
|
+ <el-collapse accordion>
|
|
|
+ <el-collapse-item v-for="item in indicatoroptions" :key="item" :name="item.id">
|
|
|
+ <template #title>
|
|
|
+ <div style="display:flex;height:30px">
|
|
|
+ <div style="display:flex;height:30px">
|
|
|
+ <span class="nameTit">指标名称:</span>
|
|
|
+ <el-input v-model="item.childName" placeholder="请输入子指标项名称"></el-input>
|
|
|
+ </div>
|
|
|
+ <div style="display:flex">
|
|
|
+ <span class="nameTit">指标编码:</span>
|
|
|
+ <el-input v-model="item.childCode" placeholder="请输入子指标项编码"></el-input>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div style="padding:10px 20px;max-height: 50vh;overflow-y: auto;">
|
|
|
+ <div class="tableBtn add" @click="handleAddTableChild(item)">
|
|
|
+ <img :src="addIcon" alt="">
|
|
|
+ <span>新增</span>
|
|
|
+ </div>
|
|
|
+ <el-table :data="item.list">
|
|
|
+ <el-table-column label="序号" type="index" align="center" />
|
|
|
+ <el-table-column label="指标项名称" prop="optionName">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-select v-model="scope.row.optionName" filterable placeholder="请选择指标项名称" @change="(val)=>changeOptionName(val,scope.row)">
|
|
|
+ <el-option
|
|
|
+ v-for="item in indicItemoptions"
|
|
|
+ :key="item.keyValue"
|
|
|
+ :label="item.keyName"
|
|
|
+ :value="item.keyName">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="指标项编码" prop="optionCode">
|
|
|
+ <template #default="scope">
|
|
|
+ <span>{{scope.row.optionCode}}</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="描述">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-input v-model="scope.row.des" :rows="1" type="textarea" placeholder="请输入描述"></el-input>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" width="100">
|
|
|
+ <template #default="scope">
|
|
|
+ <p class="indicitem" @click="handleDeleteTableChild(item, scope.row)">删除</p>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </el-collapse-item>
|
|
|
+ </el-collapse>
|
|
|
+ </div>
|
|
|
+ <div v-else>
|
|
|
+ <span class="emptyData">暂无数据</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
<template #footer>
|
|
|
<span class="dialog-footer">
|
|
|
<el-button @click="dialogVisible = false">取 消</el-button>
|
|
@@ -116,7 +215,6 @@
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
- <indicator-item ref="indicatorItem"></indicator-item>
|
|
|
</div>
|
|
|
<import-dailog ref="importPage" @successImport="successImport" @importLoading="importLoading"></import-dailog>
|
|
|
</div>
|
|
@@ -125,7 +223,9 @@
|
|
|
<script>
|
|
|
import importDailog from '../importPage/importDailog.vue'
|
|
|
import btns from '../elbuttonS.vue'
|
|
|
-import {apiGetOrganizationList, apiGetorganizationSaveList, apiGetorganizationdeleteList,
|
|
|
+import addW from '../../assets/btnIcon/addW.png'
|
|
|
+import addIcon from '../../assets/btnIcon/add.png'
|
|
|
+import {apiGetEvaluationDeptList, apiGetorganizationSaveList, apiGetorganizationdeleteList,
|
|
|
apiGetdatadictionaryList,apiGetbinstageList,apiGetbinsectionList, apiGetevaluateListAll, apiGetorganizationstructureFromTree} from '../../api/api'
|
|
|
export default {
|
|
|
components: { importDailog, btns },
|
|
@@ -142,6 +242,8 @@ export default {
|
|
|
stageData: [],
|
|
|
ruleDataAll: [],
|
|
|
periodData: [],
|
|
|
+ addW: addW,
|
|
|
+ addIcon: addIcon,
|
|
|
departmentDataAll: [],
|
|
|
ruleForm: {
|
|
|
organizationName: '',
|
|
@@ -192,12 +294,11 @@ export default {
|
|
|
getEvalCompanyData() {
|
|
|
let that = this
|
|
|
let params = {
|
|
|
- pageNum: this.page.currentPage,
|
|
|
- pageSize: this.page.pagesize,
|
|
|
- organizationType: 'BMKP',
|
|
|
- organizationName: that.departmentS
|
|
|
+ pageNum: that.page.currentPage,
|
|
|
+ pageSize: that.page.pagesize,
|
|
|
+ deptName: that.departmentS
|
|
|
}
|
|
|
- apiGetOrganizationList(params).then(datas =>{
|
|
|
+ apiGetEvaluationDeptList(params).then(datas =>{
|
|
|
if (datas && datas.data) {
|
|
|
that.evaluationDepartmentData = datas.data.records
|
|
|
that.page.total = datas.data.total
|
|
@@ -275,6 +376,25 @@ export default {
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
+ //新增子指标
|
|
|
+ handleAddChild() {
|
|
|
+ this.$nextTick(() =>{
|
|
|
+ let itemForm = {
|
|
|
+ childName: '输入子指标名称',
|
|
|
+ childCode: '输入子指标编码',
|
|
|
+ list: [],
|
|
|
+ }
|
|
|
+ this.indicatoroptions.push(itemForm)
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //新增子指标
|
|
|
+ handleAddTableChild(row) {
|
|
|
+ let childitemForm = {
|
|
|
+ optionName: '',
|
|
|
+ optionCode: ''
|
|
|
+ }
|
|
|
+ row.list.push(childitemForm)
|
|
|
+ },
|
|
|
handleEdit() {
|
|
|
this.dialogVisible = true
|
|
|
this.isSave = true
|
|
@@ -467,12 +587,150 @@ export default {
|
|
|
.indexdialog{
|
|
|
.el-overlay{
|
|
|
.el-dialog{
|
|
|
+ margin-top: 10vh;
|
|
|
.el-dialog__body{
|
|
|
- padding: 30px 60px 30px 20px !important;
|
|
|
+ padding: 0px 20px 0px 20px !important;
|
|
|
+ border-top: 1px solid #D6DBEA;
|
|
|
+ border-bottom: 1px solid #D6DBEA;
|
|
|
.periodFrom{
|
|
|
.el-select, .el-input{
|
|
|
width: 100%;
|
|
|
}
|
|
|
+ .el-select{
|
|
|
+ .el-input__inner, .is-disabled{
|
|
|
+ height:30px !important;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .DruleForm{
|
|
|
+ padding: 20px 60px 20px 20px;
|
|
|
+ }
|
|
|
+ .indicatorItemBtn{
|
|
|
+ padding: 10px 20px 0 20px;
|
|
|
+ border-left: 1px solid #D6DBEA;
|
|
|
+ span{
|
|
|
+ font-size:14px;
|
|
|
+ }
|
|
|
+ .PeriodBtnDia{
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 20px 0;
|
|
|
+ .indItemC{
|
|
|
+ position: relative;
|
|
|
+ // left: -600px;
|
|
|
+ top: 15px;
|
|
|
+ font-size: 16px;
|
|
|
+ font-family: Microsoft YaHei;
|
|
|
+ font-weight: 600;
|
|
|
+ color: #3B7AD1;
|
|
|
+ }
|
|
|
+ .el-button{
|
|
|
+ height: 30px;
|
|
|
+ padding: 0 30px ;
|
|
|
+ span{
|
|
|
+ margin:0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .is-disabled{
|
|
|
+ opacity: 0.5;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .indicatorItemTableData{
|
|
|
+ max-height: 55vh !important;
|
|
|
+ overflow-y: auto;
|
|
|
+ .datasMsg{
|
|
|
+ .tableBtn {
|
|
|
+ display: flex;
|
|
|
+ justify-content: end;
|
|
|
+ margin-right: 30px;
|
|
|
+ img{
|
|
|
+ margin-right: 5px;
|
|
|
+ margin-top: 1px;
|
|
|
+ width: 18px;
|
|
|
+ height: 18px;
|
|
|
+ }
|
|
|
+ span{
|
|
|
+ position: relative;
|
|
|
+ top: -2px;
|
|
|
+ font-size: 14px;
|
|
|
+ font-family: Microsoft YaHei;
|
|
|
+ font-weight: 400;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .add{
|
|
|
+ cursor: pointer;
|
|
|
+ span{
|
|
|
+ color: #3B7AD1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-collapse{
|
|
|
+ .el-collapse-item{
|
|
|
+ .el-collapse-item__header{
|
|
|
+ .nameTit{
|
|
|
+ display: inline-block;
|
|
|
+ height: 20px;
|
|
|
+ font-size: 12px;
|
|
|
+ font-weight: bold;
|
|
|
+ position: relative;
|
|
|
+ top: -8px;
|
|
|
+ }
|
|
|
+ .el-input{
|
|
|
+ width: 150px;
|
|
|
+ margin-right: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-table{
|
|
|
+ .el-table__body-wrapper{
|
|
|
+ }
|
|
|
+ .el-input__inner{
|
|
|
+ height: 30px !important;
|
|
|
+ }
|
|
|
+ .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;
|
|
|
+ text-align: end;
|
|
|
+ position: relative;
|
|
|
+ }
|
|
|
+ .el-button{
|
|
|
+ height: 26px;
|
|
|
+ padding: 0 15px ;
|
|
|
+ span{
|
|
|
+ margin:0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .emptyData{
|
|
|
+ display: inline-block;
|
|
|
+ width: 100%;
|
|
|
+ // border: 1px solid #d9d9d9;
|
|
|
+ text-align: center;
|
|
|
+ margin-top: 50px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .el-dialog__footer{
|
|
|
+ .dialog-footer{
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ .el-button{
|
|
|
+ width: 180px !important;
|
|
|
+ height: 40px !important;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|