|
@@ -1,66 +1,54 @@
|
|
|
<template>
|
|
|
<div class="monthQuarter">
|
|
|
<div class="monthQuarterBtn">
|
|
|
- <p class="titleSty">月/季度考评</p>
|
|
|
<div class="collectSeach">
|
|
|
<div class="exceed">
|
|
|
<span class="exceedSpan">业务编号:</span>
|
|
|
- <el-input v-model="usernames" placeholder="请输入业务编号"></el-input>
|
|
|
+ <el-input v-model="rescode" placeholder="请输入业务编号"></el-input>
|
|
|
</div>
|
|
|
<div class="exceed">
|
|
|
- <span class="exceedSpan">流程状态:</span>
|
|
|
- <el-input v-model="usernames" placeholder="请输入流程状态"></el-input>
|
|
|
+ <span class="exceedSpan">业务简述:</span>
|
|
|
+ <el-input v-model="resDes" 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">
|
|
|
- <el-col :span="1.5">
|
|
|
- <el-col :span="1.5">
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- plain
|
|
|
- icon="Plus"
|
|
|
- size="mini"
|
|
|
- @click="handleAdd"
|
|
|
- >新增</el-button>
|
|
|
- </el-col>
|
|
|
- <el-button
|
|
|
- type="danger"
|
|
|
- plain
|
|
|
- icon="Delete"
|
|
|
- size="mini"
|
|
|
- :disabled="deleteSelect.length === 0"
|
|
|
- @click="handleDelete"
|
|
|
- >批量删除</el-button>
|
|
|
- </el-col>
|
|
|
- <el-col :span="1.5">
|
|
|
- <el-button
|
|
|
- type="warning"
|
|
|
- plain
|
|
|
- icon="Download"
|
|
|
- size="mini"
|
|
|
- @click="handleExport"
|
|
|
- >导出</el-button>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
+ <div class="PeriodBtn">
|
|
|
+ <btns
|
|
|
+ :showImport="false"
|
|
|
+ :showSave="false"
|
|
|
+ :disDelete="deleteSelect.length === 0"
|
|
|
+ :disExport="true"
|
|
|
+ @handleAdd="handleAdd"
|
|
|
+ @handleDelete="handleDelete"
|
|
|
+ @handleExport="handleExport"
|
|
|
+ ></btns>
|
|
|
</div>
|
|
|
<div class="monthQuarterTableData">
|
|
|
- <el-table :data="monthQuarterData" border style="width: 100%" @select="rowClick" @select-all="allSelect">
|
|
|
+ <el-table :data="monthQuarterData" style="width: 100%" @select="rowClick" @select-all="allSelect">
|
|
|
<el-table-column type="selection" label="操作" align="center"></el-table-column>
|
|
|
- <el-table-column label="业务编号" prop="create_time" />
|
|
|
- <el-table-column label="考评单位" prop="create_by" />
|
|
|
- <el-table-column label="业务类别" prop="indicator_id" />
|
|
|
- <el-table-column label="考评纬度" prop="total_score" />
|
|
|
- <el-table-column label="流程状态" prop="desc" />
|
|
|
- <el-table-column label="业务简述" prop="update_time" />
|
|
|
- <el-table-column label="填报日期" prop="update_by" />
|
|
|
- <el-table-column label="考评总分" prop="evaluate_formula" />
|
|
|
- <el-table-column label="考评排名" prop="evaluate_method" />
|
|
|
+ <el-table-column label="业务编号" prop="responsibilityCode" width="300" />
|
|
|
+ <el-table-column label="考评单位" prop="organizationName" width="330" />
|
|
|
+ <el-table-column label="业务类别">
|
|
|
+ <template #default="scope">
|
|
|
+ <span v-if="scope.row.checkCycle === 'YDKP'" style="font-size: 12px;">月度考评</span>
|
|
|
+ <span v-else-if="scope.row.checkCycle === 'JDKP'" style="font-size: 12px;">季度考评</span>
|
|
|
+ <span v-else style="font-size: 12px;">年度考评</span>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="年度" prop="year" />
|
|
|
+ <el-table-column label="月度/季度" prop="month" />
|
|
|
+ <el-table-column label="流程状态" prop="stage" />
|
|
|
+ <el-table-column label="业务简述" prop="des" />
|
|
|
+ <!-- <el-table-column label="综合得分" prop="checkCycle" /> -->
|
|
|
+ <el-table-column label="考核开始时间" prop="beginDate" />
|
|
|
+ <el-table-column label="考核截止时间" prop="endDate" />
|
|
|
+ <!-- <el-table-column label="考评排名" prop="beginDate" />
|
|
|
+ <el-table-column label="考评评级" prop="endDate" /> -->
|
|
|
<el-table-column label="操作">
|
|
|
<template #default="scope">
|
|
|
- <p class="indicitem" @click="editRuleDetail(scope.row)">详情</p>
|
|
|
+ <p class="indicitem" v-if="scope.row.stage === '流程未启动'" @click="agetdeptresponsibility(scope.row)">启动</p>
|
|
|
+ <p class="indicitem" v-else @click="getDetail(scope.row)">详情</p>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -73,33 +61,81 @@
|
|
|
:total="page.total">
|
|
|
</el-pagination>
|
|
|
</div>
|
|
|
- <el-dialog :title="title" v-model="dialogVisible" width="1400px" :close-on-click-modal="false">
|
|
|
- <!-- <start-from-list></start-from-list> -->
|
|
|
+ <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="organizationType">
|
|
|
+ <el-select v-model="ruleForm.organizationType" placeholder="请选择考评类别" @change="(val)=>chooseRule(val,'类别')">
|
|
|
+ <el-option
|
|
|
+ v-for="item in organizationType"
|
|
|
+ :key="item.code"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.code">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="考评周期" prop="evaluationCycle">
|
|
|
+ <el-select v-model="ruleForm.evaluationCycle" placeholder="请选择考评周期" @change="(val)=>chooseRule(val,'周期')">
|
|
|
+ <el-option
|
|
|
+ v-for="item in periodData"
|
|
|
+ :key="item.keyValue"
|
|
|
+ :label="item.keyName"
|
|
|
+ :value="item.keyValue"
|
|
|
+ :disabled="item.keyValue === 'NDKP'">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <!-- <el-form-item label="考评规则" prop="evaluateRule">
|
|
|
+ <el-select v-model="ruleForm.evaluateRule" placeholder="请选择考评规则">
|
|
|
+ <el-option
|
|
|
+ v-for="item in ruleDataAll"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.evaluateRuleName"
|
|
|
+ :value="item.id">
|
|
|
+ </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="月份" v-if="!isShowYear">
|
|
|
+ <el-input-number v-model="ruleForm.month" :min="1" :max="12" />
|
|
|
+ </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 type="primary" plain>发 布</el-button>
|
|
|
- <el-button type="warning" plain>保 存</el-button>
|
|
|
- <el-button >流 程</el-button>
|
|
|
- <el-button type="success" plain>导 出</el-button>
|
|
|
+ <el-button @click="dialogVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="saveevaluaStart('ruleForm')">确 定</el-button>
|
|
|
</span>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
+ <start-from-list ref="startFromDetail"></start-from-list>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-// import startFromList from './monthQuarterFrom.vue'
|
|
|
-import {apiGetAssessmentList, apiGetdeleteStandardPointManagement} from '../../api/api'
|
|
|
+import startFromList from './monthQuarterFrom.vue'
|
|
|
+import btns from '../elbuttonS.vue'
|
|
|
+import {apiGetdeptresponsibilityList, apiGetdeptresponsibilitySave,apiGetdeptresponsibilitygenerate, apiGetdatadictionaryList} from '../../api/api'
|
|
|
export default {
|
|
|
components: {
|
|
|
- // startFromList
|
|
|
+ startFromList,
|
|
|
+ btns
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
dialogVisible: false,
|
|
|
title: '',
|
|
|
-
|
|
|
windframradio: {},
|
|
|
deleteSelect: [],
|
|
|
changeDateSelect: [],
|
|
@@ -108,31 +144,186 @@ export default {
|
|
|
pagesize: 12,
|
|
|
currentPage: 1,
|
|
|
total: 0
|
|
|
- }
|
|
|
+ },
|
|
|
+ ruleForm: {
|
|
|
+ organizationType: '',
|
|
|
+ evaluationCycle: '',
|
|
|
+ evaluateRule: '',
|
|
|
+ year: '',
|
|
|
+ month: 0,
|
|
|
+ desc: ''
|
|
|
+ },
|
|
|
+ rules: {
|
|
|
+ organizationType: [
|
|
|
+ { required: true, message: '请选择考评类别', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ evaluationCycle: [
|
|
|
+ { required: true, message: '请选择考评周期', trigger: 'blur' }
|
|
|
+ ],
|
|
|
+ evaluateRule: [
|
|
|
+ { required: true, message: '请选择考评规则', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ year: [
|
|
|
+ { required: true, message: '请选择年份', trigger: 'change' }
|
|
|
+ ],
|
|
|
+ desc: [
|
|
|
+ { required: true, message: '请输入描述', trigger: 'blur' }
|
|
|
+ ]
|
|
|
+ },
|
|
|
+ organizationType: [],
|
|
|
+ periodData: [],
|
|
|
+ ruleDataAll: [],
|
|
|
+ isShowYear: true,
|
|
|
+ rescode: '',
|
|
|
+ resDes: ''
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
|
- this.getmonthQuarterData()
|
|
|
+ this.organizationType = [
|
|
|
+ {
|
|
|
+ label: '单位考评',
|
|
|
+ code: 'DWKP'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: '部门考评',
|
|
|
+ code: 'BMKP'
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ this.getevaluStartList()
|
|
|
+ this.getPeriodData()
|
|
|
},
|
|
|
methods:{
|
|
|
- //获取月/季度考评列表
|
|
|
- getmonthQuarterData() {
|
|
|
+ // 查询列表页面
|
|
|
+ getevaluStartList(type) {
|
|
|
+ let that = this
|
|
|
+ let params = {
|
|
|
+ pageNum: that.page.currentPage,
|
|
|
+ pageSize: that.page.pagesize,
|
|
|
+ chechCycle: 'YDKP,JDKP'
|
|
|
+ }
|
|
|
+ if (type) {
|
|
|
+ params.responsibilityCode = that.rescode
|
|
|
+ params.des = that.resDes
|
|
|
+ }
|
|
|
+ apiGetdeptresponsibilityList(params).then(datas =>{
|
|
|
+ if (datas && datas.data) {
|
|
|
+ that.monthQuarterData = datas.data.records
|
|
|
+ that.page.total = datas.data.total
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ //考评周期
|
|
|
+ getPeriodData() {
|
|
|
+ let that = this
|
|
|
+ let params = {
|
|
|
+ superKey: 'KPZQ0001'
|
|
|
+ }
|
|
|
+ apiGetdatadictionaryList(params).then(datas =>{
|
|
|
+ if (datas && datas.data) {
|
|
|
+ that.periodData = datas.data
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ chooseRule(val, type) {
|
|
|
+ if (type === '周期') {
|
|
|
+ if (val === 'YDKP' || val === 'JDKP') {
|
|
|
+ this.isShowYear = false
|
|
|
+ } else {
|
|
|
+ this.isShowYear = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ saveevaluaStart(formName) {
|
|
|
+ let that = this
|
|
|
+ that.$refs[formName].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ that.saveAndEditIndicatorData()
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ //新增/修改考评启动数据
|
|
|
+ saveAndEditIndicatorData() {
|
|
|
+ let that = this
|
|
|
+ let params = {
|
|
|
+ organizationType: that.ruleForm.organizationType,
|
|
|
+ checkCycle: that.ruleForm.evaluationCycle,
|
|
|
+ // organizationEvaluationRuleId: that.ruleForm.evaluateRule,
|
|
|
+ year: that.ruleForm.year,
|
|
|
+ des: that.ruleForm.desc
|
|
|
+ }
|
|
|
+ if (that.isSave) {
|
|
|
+ params.id = this.evalradio.id
|
|
|
+ }
|
|
|
+ if (!that.isShowYear) {
|
|
|
+ params.month = that.ruleForm.month
|
|
|
+ }
|
|
|
+ apiGetdeptresponsibilitySave(params).then(datas =>{
|
|
|
+ if (!datas.success) {
|
|
|
+ that.$message({
|
|
|
+ message: datas.message,
|
|
|
+ type: 'error'
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ if (!that.isSave) {
|
|
|
+ that.$message({
|
|
|
+ message: '考评规则新增成功',
|
|
|
+ type: 'success'
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ that.$message({
|
|
|
+ message: '考评规则修改成功',
|
|
|
+ type: 'success'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ that.dialogVisible = false
|
|
|
+ that.changeDateSelect = []
|
|
|
+ that.getevaluStartList()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ agetdeptresponsibility(row) {
|
|
|
let that = this
|
|
|
- let params = {}
|
|
|
- apiGetAssessmentList(params).then(datas =>{
|
|
|
- if (datas) {
|
|
|
- that.monthQuarterData = datas
|
|
|
+ let params = {
|
|
|
+ responsibilityIds: row.id
|
|
|
+ }
|
|
|
+ apiGetdeptresponsibilitygenerate(params).then(datas =>{
|
|
|
+ if (datas && datas.data) {
|
|
|
+ if (!datas.success) {
|
|
|
+ that.$message({
|
|
|
+ message: datas.message,
|
|
|
+ type: 'error'
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ that.$message({
|
|
|
+ message: '考评规则已启动',
|
|
|
+ type: 'success'
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
})
|
|
|
},
|
|
|
+ //明细
|
|
|
+ getDetail(row) {
|
|
|
+ this.$refs.startFromDetail.init(row)
|
|
|
+ },
|
|
|
getSeachData() {
|
|
|
this.page.currentPage = 1
|
|
|
+ this.getevaluStartList('seach')
|
|
|
+ },
|
|
|
+ resetSeach() {
|
|
|
+ this.page.currentPage = 1
|
|
|
+ this.rescode = ''
|
|
|
+ this.resDes = ''
|
|
|
+ this.getevaluStartList()
|
|
|
},
|
|
|
handleSizeChange(val){
|
|
|
this.page.pagesize = val
|
|
|
+ this.getevaluStartList()
|
|
|
},
|
|
|
handleCurrentChange(val){
|
|
|
this.page.currentPage =val
|
|
|
+ this.getevaluStartList()
|
|
|
},
|
|
|
rowClick(selection, row) {
|
|
|
this.windframradio = {}
|
|
@@ -168,23 +359,38 @@ export default {
|
|
|
|
|
|
<style lang="less">
|
|
|
.monthQuarter{
|
|
|
- .monthQuarterBtn{
|
|
|
- // background: #fff;
|
|
|
- padding: 10px 20px 0 20px;
|
|
|
- .collectSeach{
|
|
|
- display: flex;
|
|
|
- margin: 20px 20px 10px;
|
|
|
- .exceed{
|
|
|
+ .monthQuarterBtn{
|
|
|
+ .collectSeach{
|
|
|
display: flex;
|
|
|
- margin-right: 10px;
|
|
|
- .exceedSpan{
|
|
|
- margin-top: 3px;
|
|
|
- display: inline-block;
|
|
|
- width: 100px;
|
|
|
+ padding: 24px 20px;
|
|
|
+ border-bottom: 1px solid#D6DBEA;
|
|
|
+ .exceed{
|
|
|
+ display: flex;
|
|
|
+ .exceedSpan{
|
|
|
+ width: 100px;
|
|
|
+ height: 12px;
|
|
|
+ font-size: 14px;
|
|
|
+ font-family: Microsoft YaHei;
|
|
|
+ font-weight: 400;
|
|
|
+ color: #8991B0;
|
|
|
+ line-height: 12px;
|
|
|
+ margin-top: 10px;
|
|
|
+ }
|
|
|
+ .el-input{
|
|
|
+ margin-right:10px;
|
|
|
+ height: 40px;
|
|
|
+ .el-input__inner{
|
|
|
+ height:40px;
|
|
|
+ }
|
|
|
+ .el-input__suffix{
|
|
|
+ .el-select__caret{
|
|
|
+ line-height:30px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- .el-input{
|
|
|
+ .el-select{
|
|
|
margin-right:10px;
|
|
|
- height: 30px;
|
|
|
.el-input__inner{
|
|
|
height:30px;
|
|
|
}
|
|
@@ -194,73 +400,63 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
+ span{
|
|
|
+ font-size:14px;
|
|
|
+ }
|
|
|
+ .PeriodBtn{
|
|
|
+ display: flex;
|
|
|
+ justify-content: end;
|
|
|
+ padding: 20px 0;
|
|
|
+ }
|
|
|
+ .el-button{
|
|
|
+ height: 30px;
|
|
|
+ // width:100px;
|
|
|
+ padding: 0 20px ;
|
|
|
+ // padding-top: 8px;
|
|
|
+ span{
|
|
|
+ margin:0;
|
|
|
}
|
|
|
- .el-select{
|
|
|
- margin-right:10px;
|
|
|
+ }
|
|
|
+ .monthQuarterTableData{
|
|
|
+ .el-table{
|
|
|
+ .el-table__body-wrapper{
|
|
|
+ height: 64vh !important;
|
|
|
+ }
|
|
|
.el-input__inner{
|
|
|
- height:30px;
|
|
|
+ height: 30px !important;
|
|
|
}
|
|
|
- .el-input__suffix{
|
|
|
- .el-select__caret{
|
|
|
- line-height:30px;
|
|
|
+ .el-radio__label{
|
|
|
+ display: none;
|
|
|
+ }
|
|
|
+ .indicitem{
|
|
|
+ color: #409EFF;
|
|
|
+ font-size: 12px;
|
|
|
+ margin-right: 20px;
|
|
|
+ cursor:pointer;
|
|
|
+ &:hover{
|
|
|
+ text-decoration: underline;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- .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 20px ;
|
|
|
- // padding-top: 8px;
|
|
|
- span{
|
|
|
- margin:0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- .monthQuarterTableData{
|
|
|
- padding: 10px 20px;
|
|
|
- .el-table{
|
|
|
- .el-table__body-wrapper{
|
|
|
- .el-table__empty-block{
|
|
|
- height: 64vh !important;
|
|
|
+ .el-pagination{
|
|
|
+ margin-top: 20px;
|
|
|
+ text-align: end;
|
|
|
+ position: relative;
|
|
|
}
|
|
|
}
|
|
|
- .el-input__inner{
|
|
|
- height: 30px !important;
|
|
|
- }
|
|
|
- .el-radio__label{
|
|
|
- display: none;
|
|
|
- }
|
|
|
- }
|
|
|
- .el-pagination{
|
|
|
- margin-top: 20px;
|
|
|
- text-align: end;
|
|
|
- position: relative;
|
|
|
- }
|
|
|
- }
|
|
|
- .el-overlay{
|
|
|
- .el-dialog{
|
|
|
- margin-top: 10vh;
|
|
|
- .el-dialog__body{
|
|
|
- padding: 0px 60px 20px 20px !important;
|
|
|
- }
|
|
|
- .el-dialog__footer{
|
|
|
- .dialog-footer{
|
|
|
- text-align: center;
|
|
|
+ .el-overlay{
|
|
|
+ .el-dialog{
|
|
|
+ .el-dialog__body{
|
|
|
+ padding: 30px 60px 30px 20px !important;
|
|
|
+ .periodFrom{
|
|
|
+ .el-select, .el-input{
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ .el-input{
|
|
|
+ height: 30px;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|