Browse Source

更新绩效报表汇总

master
YF-yuan 3 years ago
parent
commit
378caf561f
12 changed files with 657 additions and 416 deletions
  1. +6
    -0
      src/api/summary/basicTarget.js
  2. +6
    -0
      src/api/summary/constraint.js
  3. +6
    -0
      src/api/summary/reward.js
  4. BIN
      src/assets/dashboard.jpg
  5. +40
    -15
      src/views/basicTable/category.vue
  6. +5
    -384
      src/views/dashboard/workplace.vue
  7. +122
    -2
      src/views/summary/basicTarget.vue
  8. +114
    -0
      src/views/summary/components/search.vue
  9. +117
    -0
      src/views/summary/components/searchReward.vue
  10. +116
    -2
      src/views/summary/constraint.vue
  11. +8
    -1
      src/views/summary/department.vue
  12. +117
    -12
      src/views/summary/reward.vue

+ 6
- 0
src/api/summary/basicTarget.js View File

@@ -0,0 +1,6 @@
import axios from "@/config/axios"
export default{
getList(params){
return axios.get("/statistics/basicTask",{params})
}
}

+ 6
- 0
src/api/summary/constraint.js View File

@@ -0,0 +1,6 @@
import axios from "@/config/axios"
export default{
getList(params){
return axios.get("/statistics/rigidityConstraint",{params})
}
}

+ 6
- 0
src/api/summary/reward.js View File

@@ -0,0 +1,6 @@
import axios from "@/config/axios"
export default{
getList(params){
return axios.get("/statistics/specialPower",{params})
}
}

BIN
src/assets/dashboard.jpg View File

Before After
Width: 1677  |  Height: 843  |  Size: 379KB

+ 40
- 15
src/views/basicTable/category.vue View File

@@ -100,8 +100,8 @@
@current-change="getDataList()"
/>
</el-card>
<el-dialog
title="添加表"
<el-dialog
:title="dialogTitle"
:visible.sync="showAdd"
width="400px"
custom-class="ele-dialog-form"
@@ -118,19 +118,21 @@
ref="editForm"
:rules="rules"
>
<el-form-item label="考核年度:" prop="year">
<el-date-picker
type="year"
placeholder="选择考核年度"
style="width: 100%"
v-model="form.year"
format="yyyy"
value-format="yyyy"
>
</el-date-picker>
<el-form-item label="考核年度:" prop="createTime">
<el-date-picker
:disabled='ischecked=="look"'
type="year"
placeholder="选择考核年度"
style="width: 100%"
v-model="form.createTime"
format="yyyy"
value-format="yyyy"
>
</el-date-picker>
</el-form-item>
<el-form-item label="表格名称:" prop="name">
<el-input
:disabled='ischecked=="look"'
placeholder="请输入如表格名称"
clearable
v-model="form.name"
@@ -138,18 +140,28 @@
</el-form-item>
<el-form-item label="表编号:" prop="code">
<el-input
:disabled='ischecked=="look"'
placeholder="请输入表编号"
clearable
v-model="form.code"
></el-input>
</el-form-item>
<el-form-item v-if="ischecked == 'look'" label="创建人:" prop='createUser'>
<el-input
:disabled='ischecked=="look"'
placeholder="请输入创建人"
clearable
v-model="form.createUser"
></el-input>
</el-form-item>
<el-form-item label="备注:">
<el-input type="textarea" :rows="4" v-model="form.note"></el-input>
<el-input :disabled='ischecked=="look"' type="textarea" :rows="4" v-model="form.note"></el-input>
</el-form-item>
</el-form>
<div slot="footer">
<el-button @click="showAdd = false">取消</el-button>&nbsp;
<el-button type="primary" @click="save">保存</el-button>
<el-button type="primary" @click="save" v-if="ischecked !== 'look'">保存</el-button>
</div>
</el-dialog>
</div>
@@ -168,6 +180,8 @@ export default {
loading: false,
dataList: [],
count: 0,
dialogTitle:'添加表',
ischecked: 'edit',
page: {
page: 1,
limit: Math.floor(
@@ -229,12 +243,23 @@ export default {
});
},
add() {
this.dialogTitle = '添加表'
this.form = { code: "", name: "", note: "", year: "" };
this.showAdd = true;
this.ischecked = 'add'
},
look(row) {
console.log(row);
this.form = Object.assign({}, row)
this.dialogTitle = '查看表'
this.showAdd = true
this.ischecked = 'look'
},
edit(row) {
this.form = Object.assign({}, row);
this.form = Object.assign({}, row)
this.showAdd = true;
this.dialogTitle = '编辑表'
this.ischecked = 'edit'
},
remove(row) {
if (!row) {

+ 5
- 384
src/views/dashboard/workplace.vue View File

@@ -1,268 +1,18 @@
<template>
<div class="ele-body">
<!-- 顶部卡片 -->
<el-card shadow="never" body-style="padding: 20px;">
<div class="ele-cell workplace-user-card">
<div class="ele-cell-content ele-cell">
<el-avatar :size="68" :src="$store.state.user.user.avatar"/>
<div class="ele-cell-content" style="overflow: hidden;">
<h4 class="ele-elip">早安,{{ $store.state.user.user.nickname }},开始您一天的工作吧!</h4>
<div class="ele-text-secondary ele-elip" style="margin-top: 8px;">
<i class="el-icon-heavy-rain"></i><s/><s/>今日阴转小雨,22℃ - 32℃,出门记得带伞哦。
</div>
</div>
</div>
<div class="workplace-count-group">
<div class="workplace-count-item">
<div class="workplace-count-header">
<el-tag size="small" class="ele-tag-round"><i class="el-icon-menu"></i></el-tag>
<span class="workplace-count-name">项目数</span>
</div>
<div class="workplace-count-num">3</div>
</div>
<div class="workplace-count-item">
<div class="workplace-count-header">
<el-tag type="warning" size="small" class="ele-tag-round"><i class="el-icon-finished"></i></el-tag>
<span class="workplace-count-name">待办项</span>
</div>
<div class="workplace-count-num">6 / 24</div>
</div>
<div class="workplace-count-item">
<div class="workplace-count-header">
<el-tag type="success" size="small" class="ele-tag-round"><i class="el-icon-bell"></i></el-tag>
<span class="workplace-count-name">消息</span>
</div>
<div class="workplace-count-num">1,689</div>
</div>
</div>
</div>
</el-card>
<el-row :gutter="15">
<el-col :md="3" :sm="6" :xs="12">
<el-card shadow="hover" body-style="padding:0;">
<div class="app-link-block" @click="$router.push('/system/user')">
<i class="app-link-icon el-icon-user"></i>
<div class="app-link-title">用户</div>
</div>
</el-card>
</el-col>
<el-col :md="3" :sm="6" :xs="12">
<el-card shadow="hover" body-style="padding:0;">
<div class="app-link-block">
<i class="app-link-icon el-icon-data-line" style="color: #95de64;"></i>
<div class="app-link-title">分析</div>
</div>
</el-card>
</el-col>
<el-col :md="3" :sm="6" :xs="12">
<el-card shadow="hover" body-style="padding:0;">
<div class="app-link-block">
<i class="app-link-icon el-icon-shopping-cart-2" style="color: #ff9c6e;"></i>
<div class="app-link-title">商品</div>
</div>
</el-card>
</el-col>
<el-col :md="3" :sm="6" :xs="12">
<el-card shadow="hover" body-style="padding:0;">
<div class="app-link-block">
<i class="app-link-icon el-icon-tickets" style="color: #b37feb;"></i>
<div class="app-link-title">订单</div>
</div>
</el-card>
</el-col>
<el-col :md="3" :sm="6" :xs="12">
<el-card shadow="hover" body-style="padding:0;">
<div class="app-link-block">
<i class="app-link-icon el-icon-bank-card" style="color: #ffd666;"></i>
<div class="app-link-title">票据</div>
</div>
</el-card>
</el-col>
<el-col :md="3" :sm="6" :xs="12">
<el-card shadow="hover" body-style="padding:0;">
<div class="app-link-block">
<i class="app-link-icon el-icon-message" style="color: #5cdbd3;"></i>
<div class="app-link-title">消息</div>
</div>
</el-card>
</el-col>
<el-col :md="3" :sm="6" :xs="12">
<el-card shadow="hover" body-style="padding:0;">
<div class="app-link-block">
<i class="app-link-icon el-icon-discount" style="color: #ff85c0;"></i>
<div class="app-link-title">标签</div>
</div>
</el-card>
</el-col>
<el-col :md="3" :sm="6" :xs="12">
<el-card shadow="hover" body-style="padding:0;">
<div class="app-link-block">
<i class="app-link-icon el-icon-s-operation" style="color: #ffc069;"></i>
<div class="app-link-title">配置</div>
</div>
</el-card>
</el-col>
</el-row>
<el-row :gutter="15">
<el-col :sm="8">
<el-card shadow="never" header="最新动态" body-style="padding:0;">
<el-scrollbar style="height:318px;" wrapStyle="overflow-x:hidden;" viewStyle="padding:20px 10px;">
<el-timeline :reverse="false" class="ele-timeline ele-timeline-act">
<el-timeline-item v-for="(act,index) in activities" :key="index" :timestamp="act.timestamp"
:type="act.primary?'primary':''">{{ act.title }}
</el-timeline-item>
</el-timeline>
</el-scrollbar>
</el-card>
</el-col>
<el-col :sm="8">
<el-card class="workplace-table-card" shadow="never" header="我的任务" body-style="padding: 0;">
<el-table-draggable handle=".sort-handle" :animate="300">
<el-table :data="taskList" :height="318" class="ele-table-default-head">
<el-table-column width="38" align="center">
<template>
<i class="sort-handle el-icon-_nav ele-text-placeholder"></i>
</template>
</el-table-column>
<el-table-column label="优先级" width="65">
<template slot-scope="{row}">
<el-tag :type="['danger','warning','primary'][row.priority-1]"
size="mini" class="ele-tag-round">{{ row.priority }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="任务名称">
<template slot-scope="{row}">
<el-link type="primary" :underline="false">{{ row.taskName }}</el-link>
</template>
</el-table-column>
<el-table-column label="状态" width="70" align="center">
<template slot-scope="{row}">
<span :class="['ele-text-warning','ele-text-success','ele-text-info ele-text-delete'][row.state]">
{{ ['未开始', '进行中', '已完成'][row.state] }}
</span>
</template>
</el-table-column>
</el-table>
</el-table-draggable>
</el-card>
</el-col>
<el-col :sm="8">
<el-card shadow="never" header="本月目标">
<div class="workplace-goal-group">
<el-progress type="dashboard" :percentage="80" :width="170" :format="()=>{return ''}"/>
<div class="workplace-goal-content">
<el-tag size="large" class="ele-tag-round"><i class="el-icon-s-data"></i></el-tag>
<div class="workplace-goal-num">285</div>
</div>
<div class="workplace-goal-text">恭喜,本月目标已达标!</div>
</div>
</el-card>
</el-col>
<el-col :sm="16">
<el-card class="workplace-table-card" shadow="never" header="项目进度" body-style="padding:12px;">
<el-table :data="projectList" height="358">
<el-table-column type="index" width="35" min-width="35" align="right"/>
<el-table-column label="项目名称" min-width="110">
<template slot-scope="{row}">
<el-link type="primary" :underline="false">{{ row.projectName }}</el-link>
</template>
</el-table-column>
<el-table-column prop="startDate" label="开始时间" width="95" min-width="80" align="center"/>
<el-table-column prop="endDate" label="结束时间" width="95" min-width="80" align="center"/>
<el-table-column label="状态" width="70" min-width="60" align="center">
<template slot-scope="{row}">
<span
:class="['ele-text-success','ele-text-danger','ele-text-warning','ele-text-info ele-text-delete'][row.state]">
{{ ['进行中', '已延期', '未开始', '已结束'][row.state] }}
</span>
</template>
</el-table-column>
<el-table-column label="进度" width="160" min-width="100" align="center">
<template slot-scope="{row}">
<el-progress :percentage="row.progress" class="ele-text-small"/>
</template>
</el-table-column>
</el-table>
</el-card>
</el-col>
<el-col :sm="8">
<el-card shadow="never" header="小组成员" body-style="padding:19px 0;">
<div v-for="(item,index) in userList" :key="index" class="ele-cell user-list-item">
<el-avatar :size="42" :src="item.avatar"/>
<div class="ele-cell-content">
<div class="ele-cell-title">{{ item.name }}</div>
<div class="ele-cell-desc">{{ item.desc }}</div>
</div>
<el-tag size="mini" :type="['success','danger'][item.state]">{{ ['在线', '离线'][item.state] }}</el-tag>
</div>
</el-card>
</el-col>
</el-row>
<img class="showImg" src="@/assets/dashboard.jpg" alt="">
</div>
</template>

<script>
import ElTableDraggable from '@/components/Sortable/ElTableDraggable'

export default {
name: "Workplace",
components: {ElTableDraggable},
components: {},
data() {
return {
activities: [
{title: 'SunSmile 解决了bug 登录提示操作失败', timestamp: '20:30', primary: false},
{title: 'Jasmine 解决了bug 按钮颜色与设计不符', timestamp: '19:30', primary: false},
{title: '项目经理 指派了任务 解决项目一的bug', timestamp: '18:30', primary: true},
{title: '项目经理 指派了任务 解决项目二的bug', timestamp: '17:30', primary: true},
{title: '项目经理 指派了任务 解决项目三的bug', timestamp: '16:30', primary: true},
{title: '项目经理 指派了任务 解决项目四的bug', timestamp: '15:30', primary: false},
{title: '项目经理 指派了任务 解决项目五的bug', timestamp: '14:30', primary: false},
{title: '项目经理 指派了任务 解决项目六的bug', timestamp: '12:30', primary: false},
{title: '项目经理 指派了任务 解决项目七的bug', timestamp: '11:30', primary: true},
{title: '项目经理 指派了任务 解决项目八的bug', timestamp: '10:30', primary: false},
{title: '项目经理 指派了任务 解决项目九的bug', timestamp: '09:30', primary: false},
{title: '项目经理 指派了任务 解决项目十的bug', timestamp: '08:30', primary: false}
],
taskList: [
{id: 1, priority: 1, taskName: '解决项目一的bug', state: 0},
{id: 2, priority: 2, taskName: '解决项目二的bug', state: 0},
{id: 3, priority: 2, taskName: '解决项目三的bug', state: 1},
{id: 4, priority: 3, taskName: '解决项目四的bug', state: 1},
{id: 5, priority: 3, taskName: '解决项目五的bug', state: 2},
{id: 6, priority: 3, taskName: '解决项目六的bug', state: 2}
],
projectList: [
{projectName: '项目0000001', state: 0, startDate: '2020-03-01', endDate: '2020-06-01', progress: 30},
{projectName: '项目0000002', state: 0, startDate: '2020-03-01', endDate: '2020-08-01', progress: 10},
{projectName: '项目0000003', state: 1, startDate: '2020-01-01', endDate: '2020-05-01', progress: 60},
{projectName: '项目0000004', state: 1, startDate: '2020-06-01', endDate: '2020-10-01', progress: 0},
{projectName: '项目0000005', state: 2, startDate: '2020-01-01', endDate: '2020-03-01', progress: 100},
{projectName: '项目0000006', state: 3, startDate: '2020-01-01', endDate: '2020-03-01', progress: 100},
{projectName: '项目0000007', state: 3, startDate: '2020-01-01', endDate: '2020-03-01', progress: 100}
],
userList: [
{
name: 'SunSmile', desc: 'UI设计师、交互专家', state: 0,
avatar: 'https://cdn.eleadmin.com/20200609/c184eef391ae48dba87e3057e70238fb.jpg'
},
{
name: '你的名字很好听', desc: '前端工程师', state: 0,
avatar: 'https://cdn.eleadmin.com/20200609/b6a811873e704db49db994053a5019b2.jpg'
},
{
name: '全村人的希望', desc: '前端工程师', state: 0,
avatar: 'https://cdn.eleadmin.com/20200609/948344a2a77c47a7a7b332fe12ff749a.jpg'
},
{
name: 'Jasmine', desc: '产品经理、项目经理', state: 1,
avatar: 'https://cdn.eleadmin.com/20200609/f6bc05af944a4f738b54128717952107.jpg'
},
{
name: '酷酷的大叔', desc: '组长、后端工程师', state: 1,
avatar: 'https://cdn.eleadmin.com/20200609/2d98970a51b34b6b859339c96b240dcd.jpg'
}
]
}
},
mounted() {
@@ -275,138 +25,9 @@ export default {
.ele-body {
padding-bottom: 0;
}

.el-card {
margin-bottom: 15px;
}

/** 顶部统计 */
.workplace-count-group {
white-space: nowrap;
}

.workplace-count-item {
padding: 0 5px 0 25px;
box-sizing: border-box;
display: inline-block;
text-align: right;
}

.workplace-count-name {
padding-left: 5px;
}

.workplace-count-num {
font-size: 23px;
margin-top: 6px;
}

@media screen and (max-width: 992px) {
.workplace-count-item {
padding: 0 5px 0 10px;
}
}

@media screen and (max-width: 768px) {
.workplace-user-card, .workplace-count-group {
display: block;
}

.workplace-count-group {
margin-top: 15px;
text-align: right;
}
}

/** 快捷方式 */
.app-link-block {
cursor: pointer;
text-align: center;
padding: 15px 0;
}

.app-link-block .app-link-icon {
color: #69c0ff;
font-size: 30px;
margin-top: 5px;
}

.app-link-block .app-link-title {
margin-top: 8px;
}

/** 最新动态时间轴 */
.ele-timeline-act {
padding-left: 50px;
}

.ele-timeline-act >>> .el-timeline-item__timestamp {
margin: 0;
position: absolute;
top: 3px;
left: -45px;
}

.ele-timeline-act >>> .el-timeline-item {
padding-bottom: 19px;
}

.ele-timeline-act >>> .el-timeline-item:last-child {
padding-bottom: 0;
}

/** 表格 */
.workplace-table-card >>> .el-table tbody > .el-table__row:last-child td {
border-bottom: none;
}

.workplace-table-card >>> .el-table:before {
display: none;
}

.sort-handle {
cursor: move;
font-size: 18px;
vertical-align: middle;
}

.ele-body >>> .el-table__row.sortable-chosen {
background-color: hsla(0, 0%, 60%, .1);
}

.ele-body >>> .el-table__row.sortable-chosen td {
background-color: transparent;
}

/** 本月目标 */
.workplace-goal-group {
text-align: center;
position: relative;
padding: 48px 0;
}

.workplace-goal-group .workplace-goal-content {
position: absolute;
top: 90px;
left: 0;
.showImg {
width: 100%;
height: auto;
}

.workplace-goal-group .workplace-goal-num {
font-size: 40px;
margin-top: 15px;
}

/** 小组成员 */
.user-list-item {
padding: 13px 18px;
}

.user-list-item + .user-list-item {
border-top: 1px solid hsla(0, 0%, 60%, .15);
}

.user-list-item .ele-cell-desc {
margin-top: 5px;
}
</style>

+ 122
- 2
src/views/summary/basicTarget.vue View File

@@ -1,10 +1,130 @@
<template>
<div class="basic-target ele-body"></div>
<div class="basic-target ele-body">
<el-card>
<search></search>
<el-table
highlight-current-row
:data="dataList"
border
:height="tableHeight"
@selection-change="selectionChange"
v-loading="loading"
>
<el-table-column
type="index"
width="50"
align="center"
label="编号"
></el-table-column>
<el-table-column
label="考核内容和计分规则"
min-width="80"
align="center"
prop="content"
></el-table-column>
<el-table-column
label="分值"
min-width="100"
align="center"
prop="points"
></el-table-column>
<el-table-column
label="预计得分"
min-width="100"
align="center"
prop="expectedPoints"
></el-table-column>
<el-table-column
label="区牵头单位"
min-width="100"
align="center"
prop="leaderUnit"
></el-table-column>
<el-table-column
label="牵头部门"
min-width="80"
align="center"
prop="leaderDeptList"
></el-table-column>
<el-table-column
label="责任领导"
min-width="100"
align="center"
prop="leaderPrincipal"
></el-table-column>
<el-table-column
label="得分说明"
min-width="80"
align="center"
prop="note"
></el-table-column>
</el-table>
<el-pagination
:current-page.sync="page.page"
:page-size="page.limit"
:total="count"
:background="true"
layout="total, prev, pager, next, jumper"
:pager-count="5"
class="ele-pagination-circle"
@current-change="getDataList()"
/>
</el-card>
</div>
</template>

<script>
import search from '../assessingTarget/search'
import api from '../../api/summary/basicTarget'
export default {

name: 'basic-target',
data() {
return {
loading:false,
tableHeight: document.documentElement.clientHeight - 360,
dataList: [],
count: 0,
page: {
page: 1,
limit: Math.floor(
(document.documentElement.clientHeight - 360 - 45) / 45
),
},
}
},
components: {
search,
},
created() {
this.getDataList();
this.$store.dispatch('base/getQuota1List',1)
},
methods: {
selectionChange(rows) {
this.multipleSelection = rows;
},
getDataList(params) {
this.loading=true
api
.getList(params ? Object.assign(this.page, params) : this.page)
.then((res) => {
this.loading=false
let data = res.data.data.records;
data = data.map((item) => {
item.year = item.year + "";
return item;
});
this.dataList = data;
this.count = res.data.data.total;
console.log(res.data);
})
.catch(() => {
this.loading=false
this.dataList = [];
this.count = 0;
});
}
}
}
</script>


+ 114
- 0
src/views/summary/components/search.vue View File

@@ -0,0 +1,114 @@
<template>
<div class="search">
<el-form :inline="true" :model="searchParams" size="small">
<el-form-item label="考核指标:">
<el-select v-model="searchParams.code" clearable filterable>
<el-option
v-for="(item, index) of indexList"
:key="index"
:label="item.code"
:value="item.code"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="考核内容:">
<el-input
placeholder="请输入考核内容"
v-model="searchParams.content"
clearable
></el-input>
</el-form-item>
<el-form-item label="牵头单位:">
<el-input
placeholder="请输入牵头单位"
v-model="searchParams.utils"
clearable
></el-input>
</el-form-item>
<el-form-item label="牵头部门:">
<el-select v-model="searchParams.code" clearable filterable>
<el-option
v-for="(item, index) of indexList"
:key="index"
:label="item.code"
:value="item.code"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="配合部门:">
<el-select v-model="searchParams.code" clearable filterable>
<el-option
v-for="(item, index) of indexList"
:key="index"
:label="item.code"
:value="item.code"
></el-option>
</el-select>
</el-form-item>
<el-button type="primary" size="small" class="search-btn" @click="search"
>查询</el-button
>
<el-button
type="default"
size="small"
class="search-btn"
@click="
clear();
search();
"
>清空</el-button
>
</el-form>
</div>
</template>

<script>
import api from "@/api/basicTable/category";
export default {
data() {
return {
searchParams: {
year: "",
code: "",
name: "",
},
indexList: [],
};
},
methods: {
clear() {
this.searchParams = {
year: "",
code: "",
name: "",
};
},
search() {
this.$emit("search", this.searchParams);
},
getCodeByYear() {
api
.getCodeByYear(this.searchParams.year)
.then((res) => {
this.codeList = res.data.data;
})
.catch(() => {
this.codeList = [];
});
},
},
watch: {
"searchParams.year"(val) {
console.log(val);
if (!val) {
this.$set(this.searchParams, "code", "");
this.codeList = [];
}
},
},
};
</script>

<style scoped>
</style>

+ 117
- 0
src/views/summary/components/searchReward.vue View File

@@ -0,0 +1,117 @@
<template>
<div class="search">
<el-form :inline="true" :model="searchParams" size="small">
<el-form-item label="一级指标:">
<el-select v-model="searchParams.code" clearable filterable>
<el-option
v-for="(item, index) of indexList"
:key="index"
:label="item.code"
:value="item.code"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="表二级指标:">
<el-select v-model="searchParams.code" clearable filterable>
<el-option
v-for="(item, index) of indexList"
:key="index"
:label="item.code"
:value="item.code"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="考核内容:">
<el-input
placeholder="请输入考核内容"
v-model="searchParams.content"
clearable
></el-input>
</el-form-item>
<el-form-item label="牵头部门:">
<el-select v-model="searchParams.code" clearable filterable>
<el-option
v-for="(item, index) of indexList"
:key="index"
:label="item.code"
:value="item.code"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="配合部门:">
<el-select v-model="searchParams.code" clearable filterable>
<el-option
v-for="(item, index) of indexList"
:key="index"
:label="item.code"
:value="item.code"
></el-option>
</el-select>
</el-form-item>
<el-button type="primary" size="small" class="search-btn" @click="search"
>查询</el-button
>
<el-button
type="default"
size="small"
class="search-btn"
@click="
clear();
search();
"
>清空</el-button
>
</el-form>
</div>
</template>

<script>
import api from "@/api/basicTable/category";
export default {
data() {
return {
searchParams: {
year: "",
code: "",
name: "",
},
indexList: [],
};
},
methods: {
clear() {
this.searchParams = {
year: "",
code: "",
name: "",
};
},
search() {
this.$emit("search", this.searchParams);
},
getCodeByYear() {
api
.getCodeByYear(this.searchParams.year)
.then((res) => {
this.codeList = res.data.data;
})
.catch(() => {
this.codeList = [];
});
},
},
watch: {
"searchParams.year"(val) {
console.log(val);
if (!val) {
this.$set(this.searchParams, "code", "");
this.codeList = [];
}
},
},
};
</script>

<style scoped>
</style>

+ 116
- 2
src/views/summary/constraint.vue View File

@@ -1,10 +1,124 @@
<template>
<div class="constraint ele-body"></div>
<div class="constraint ele-body">
<el-card>
<search></search>
<el-table
highlight-current-row
:data="dataList"
border
:height="tableHeight"
@selection-change="selectionChange"
v-loading="loading"
>
<el-table-column
type="index"
width="50"
align="center"
label="编号"
></el-table-column>
<el-table-column
label="考核内容和计分规则"
min-width="80"
align="center"
prop="content"
></el-table-column>
<el-table-column
label="预计扣分"
min-width="100"
align="center"
prop="expectedPoints"
></el-table-column>
<el-table-column
label="区牵头单位"
min-width="100"
align="center"
prop="leaderUnit"
></el-table-column>
<el-table-column
label="牵头部门"
min-width="80"
align="center"
prop="leaderDept"
></el-table-column>
<el-table-column
label="责任领导"
min-width="100"
align="center"
prop="leaderPrincipal"
></el-table-column>
<el-table-column
label="扣分说明"
min-width="80"
align="center"
prop="note"
></el-table-column>
</el-table>
<el-pagination
:current-page.sync="page.page"
:page-size="page.limit"
:total="count"
:background="true"
layout="total, prev, pager, next, jumper"
:pager-count="5"
class="ele-pagination-circle"
@current-change="getDataList()"
/>
</el-card>
</div>
</template>

<script>
import search from '../assessingTarget/search'
import api from '../../api/summary/constraint'
export default {

name: 'constraint',
data() {
return {
loading:false,
tableHeight: document.documentElement.clientHeight - 360,
dataList: [],
count: 0,
page: {
page: 1,
limit: Math.floor(
(document.documentElement.clientHeight - 360 - 45) / 45
),
},
}
},
components: {
search,
},
created() {
this.getDataList();
this.$store.dispatch('base/getQuota1List',1)
},
methods: {
selectionChange(rows) {
this.multipleSelection = rows;
},
getDataList(params) {
this.loading=true
api
.getList(params ? Object.assign(this.page, params) : this.page)
.then((res) => {
this.loading=false
let data = res.data.data.records;
data = data.map((item) => {
item.year = item.year + "";
return item;
});
this.dataList = data;
this.count = res.data.data.total;
console.log(res.data);
})
.catch(() => {
this.loading=false
this.dataList = [];
this.count = 0;
});
}
}
}
</script>


+ 8
- 1
src/views/summary/department.vue View File

@@ -80,7 +80,14 @@
</template>

<script>
export default {};
export default {
name: 'department',
data () {
return {
dataList: [],
}
}
};
</script>

<style scoped>

+ 117
- 12
src/views/summary/reward.vue View File

@@ -1,23 +1,128 @@
<template>
<div class="reward ele-body">
<el-table :data="dataList" style="width:500px;">
<el-table-column label="测试">
<template slot-scope="{row}">
<el-input type="textarea" resize="none" v-model="row.name"></el-input>
<!-- <span>{{row.name}}</span> -->
</template>
</el-table-column>
</el-table>
<el-card>
<search></search>
<el-table
highlight-current-row
:data="dataList"
border
:height="tableHeight"
@selection-change="selectionChange"
v-loading="loading"
>
<el-table-column
type="index"
width="50"
align="center"
label="编号"
></el-table-column>
<el-table-column
label="考核内容和计分规则"
min-width="80"
align="center"
prop="content"
></el-table-column>
<el-table-column
label="封顶分值"
min-width="100"
align="center"
prop="points"
></el-table-column>
<el-table-column
label="预计加分"
min-width="100"
align="center"
prop="expectedPoints"
></el-table-column>
<el-table-column
label="区牵头单位"
min-width="100"
align="center"
prop="leaderUnit"
></el-table-column>
<el-table-column
label="牵头部门"
min-width="80"
align="center"
prop="leaderDept"
></el-table-column>
<el-table-column
label="责任领导"
min-width="100"
align="center"
prop="leaderPrincipal"
></el-table-column>
<el-table-column
label="得分说明"
min-width="80"
align="center"
prop="note"
></el-table-column>
</el-table>
<el-pagination
:current-page.sync="page.page"
:page-size="page.limit"
:total="count"
:background="true"
layout="total, prev, pager, next, jumper"
:pager-count="5"
class="ele-pagination-circle"
@current-change="getDataList()"
/>
</el-card>
</div>
</template>

<script>
import search from '../assessingTarget/search';
import api from '../../api/summary/reward'
export default {
data(){
name: '',
data() {
return {
dataList:[
{name:"zhou"}
]
loading:false,
tableHeight: document.documentElement.clientHeight - 360,
dataList: [],
count: 0,
page: {
page: 1,
limit: Math.floor(
(document.documentElement.clientHeight - 360 - 45) / 45
),
},
}
},
components: {
search,
},
created() {
this.getDataList();
this.$store.dispatch('base/getQuota1List',1)
},
methods: {
selectionChange(rows) {
this.multipleSelection = rows;
},
getDataList(params) {
this.loading=true
api
.getList(params ? Object.assign(this.page, params) : this.page)
.then((res) => {
this.loading=false
let data = res.data.data.records;
data = data.map((item) => {
item.year = item.year + "";
return item;
});
this.dataList = data;
this.count = res.data.data.total;
console.log(res.data);
})
.catch(() => {
this.loading=false
this.dataList = [];
this.count = 0;
});
}
}
}

Loading…
Cancel
Save