Browse Source

feat(home): 添加首页绩效打分提醒卡片功能

- 在首页添加了我的绩效打分提醒卡片组件
- 实现了绩效打分数据的获取和显示逻辑
- 添加了卡片点击跳转到绩效打分列表页面功能
- 新增了绩效打分提醒API接口调用
- 实现了路由参数传递和筛选条件初始化功能
- 添加了绩效打分提醒数量统计和展示
master
qiankanghui 2 weeks ago
parent
commit
4b66d0d6bf
  1. 2
      src/api/supplierPerformance/myPerformanceEvaluateRequest.js
  2. 44
      src/views/common/home.vue
  3. 14
      src/views/modules/supplierPerformance/perMyScore.vue

2
src/api/supplierPerformance/myPerformanceEvaluateRequest.js

@ -22,3 +22,5 @@ export const deleteEvaluateRequest = data => createAPI('/perEvaluateRequest/dele
export const getEvaluateRequestOwners = data => createAPI('/perEvaluateRequest/owner/list', 'POST', data)
// 新增: 保存(或提交)指标打分
export const saveEvaluateRequestIndicatorScore = data => createAPI('/perEvaluateRequest/indicator/saveScore', 'POST', data)
// 新增: 首页待办统计 - 我的绩效打分任务数
export const myPerformanceScoreReminder = data => createAPI('/perEvaluateRequest/myScoreReminder', 'POST', data)

44
src/views/common/home.vue

@ -29,6 +29,16 @@
<div class="home-reminder-card__count">{{ contractExpireReminderCount }}</div>
<div class="home-reminder-card__hint">{{ contractExpireReminderCount > 0 ? '' : 'Null' }}</div>
</div>
<div
v-show="homeTileShow.myPerformanceScore"
class="home-reminder-card tech-card"
:class="{ 'is-clickable': myPerformanceScoreCount > 0, 'tech-card--active': myPerformanceScoreCount > 0 }"
@click="onMyPerformanceScoreClick">
<div class="tech-card__grid" aria-hidden="true"></div>
<div class="home-reminder-card__title">My Performance Score</div>
<div class="home-reminder-card__count">{{ myPerformanceScoreCount }}</div>
<div class="home-reminder-card__hint">{{ myPerformanceScoreCount > 0 ? '' : 'Null' }}</div>
</div>
</div>
</div>
</div>
@ -38,6 +48,7 @@
<script>
import {searchSysLanguagePack} from "../../api/sysLanguage";
import { supplierDocExpireReminder, supplierContractRequestExpireReminder } from '@/api/srm/srmSupplier.js'
import { myPerformanceScoreReminder } from '@/api/supplierPerformance/myPerformanceEvaluateRequest.js'
export default {
data(){
@ -47,9 +58,11 @@ export default {
docExpireReminderIds: [],
contractExpireReminderCount: 0,
contractExpireReminderIds: [],
myPerformanceScoreCount: 0,
homeTileShow: {
supplierDocExpire: true,
contractRequestExpire: true,
myPerformanceScore: true,
},
/** 代办卡片悬停外圈脉冲(双环);false 时无任何脉冲描边 */
homeCardPulseEnabled: false,
@ -62,6 +75,9 @@ export default {
onContractCardClick () {
this.goContractRequestExpireList()
},
onMyPerformanceScoreClick () {
this.goMyPerformanceScoreList()
},
loadDocExpireReminder () {
const site = this.$store.state.user.site
supplierDocExpireReminder({ site }).then(({ data }) => {
@ -92,6 +108,26 @@ export default {
if (!ids) return
this.$router.push({ name: 'srmSupplier-supplierContractRequest', query: { contractExpireRequestIds: ids } })
},
loadMyPerformanceScoreReminder () {
const site = this.$store.state.user.site
const username = this.$store.state.user.name
myPerformanceScoreReminder({ site, username }).then(({ data }) => {
if (data && data.code === 0 && data.data) {
this.myPerformanceScoreCount = data.data.count != null ? data.data.count : 0
}
}).catch(() => {})
},
goMyPerformanceScoreList () {
if (!this.myPerformanceScoreCount) return
//
this.$router.push({
name: 'supplierPerformance-perMyScore',
query: {
statusList: '未开始,进行中,已完成',
createBy: this.$store.state.user.name
}
})
},
languageRefresh(){
console.log("欢迎使用 旭捷管理系统!!!")
},
@ -128,6 +164,9 @@ export default {
if (this.homeTileShow.contractRequestExpire) {
this.loadContractExpireReminder()
}
if (this.homeTileShow.myPerformanceScore) {
this.loadMyPerformanceScoreReminder()
}
},
watch: {
'homeTileShow.supplierDocExpire'(v) {
@ -139,6 +178,11 @@ export default {
if (v) {
this.loadContractExpireReminder()
}
},
'homeTileShow.myPerformanceScore'(v) {
if (v) {
this.loadMyPerformanceScoreReminder()
}
}
},

14
src/views/modules/supplierPerformance/perMyScore.vue

@ -252,10 +252,24 @@ export default {
mounted() {
this.calcHeight();
window.addEventListener('resize', this.calcHeight)
//
this.initSearchParamsFromRoute()
this.getList()
},
beforeDestroy() { window.removeEventListener('resize', this.calcHeight) },
methods: {
//
initSearchParamsFromRoute() {
const query = this.$route.query
if (query.statusList) {
//
this.searchData.statusList = query.statusList.split(',')
}
if (query.createBy) {
// /
this.searchData.createBy = query.createBy
}
},
// S
getBaseList (val,type) {
this.tagNo = val

Loading…
Cancel
Save