From 74fd2e9414fe5bb67ad8743aa370a07fa5f8caf4 Mon Sep 17 00:00:00 2001
From: yubo <autumnal_wind@yeah.net>
Date: 星期二, 10 三月 2026 23:15:26 +0800
Subject: [PATCH] feat(dashboard): 添加转正提醒功能
---
src/views/dashboard/index.vue | 48 +++++++++++
src/views/dashboard/zzUser.vue | 172 +++++++++++++++++++++++++++++++++++++++++++
2 files changed, 218 insertions(+), 2 deletions(-)
diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue
index e64e473..53302e3 100644
--- a/src/views/dashboard/index.vue
+++ b/src/views/dashboard/index.vue
@@ -213,6 +213,18 @@
<p>不良记录</p>
</el-card>
</el-col>
+ <el-col>
+ <el-card shadow="always" class="card-info" @click.native="showbl('不良记录','3')">
+ <p class="card-number">{{ total.sxyg }}</p>
+ <p>四险提醒</p>
+ </el-card>
+ </el-col>
+ <el-col>
+ <el-card shadow="always" class="card-info" @click.native="showProbation('转正提醒')">
+ <p class="card-number">{{ total.probation }}</p>
+ <p>转正提醒</p>
+ </el-card>
+ </el-col>
</el-row>
<on-the-job-user
ref="jobUser"
@@ -244,6 +256,7 @@
<yg-user ref="ygUser" :dialog-visible="dialog.dialogShowyg" :title="title" @cancleChooseUser="cancleygUser" />
<sfz-user ref="sfzUser" :dialog-visible="dialog.dialogShowSfz" :title="title" @cancleChooseUser="cancleSfzUser" />
<ct-user ref="ctUser" :dialog-visible="dialog.dialogShowct" :title="title" @cancleChooseUser="canclectUser" />
+ <zz-user ref="zzUser" :dialog-visible="dialog.dialogShowProbation" :title="title" @cancleChooseUser="cancleZzUser" />
</div>
</template>
<script>
@@ -262,8 +275,10 @@
import YgUser from './ygUser'
import CtUser from './ctUser'
import SfzUser from './sfzUser'
+import ZzUser from './zzUser'
+
export default {
- components: { SfzUser, YgUser, QjUser, LzUser, GsUser, YwUser, SbUser, YjUser, TjUser, TgUser, BlUser, CqUser, HtUser, OnTheJobUser, CtUser },
+ components: { SfzUser, YgUser, QjUser, LzUser, GsUser, YwUser, SbUser, YjUser, TjUser, TgUser, BlUser, CqUser, HtUser, OnTheJobUser, CtUser, ZzUser },
data() {
return {
dialog: {
@@ -282,6 +297,8 @@
dialogShowqj: false,
dialogShowCq: false,
dialogShowSfz: false,
+ dialgoShowProbation: false,
+ dialogShowProbation: false,
title: '',
type: ''
},
@@ -314,7 +331,10 @@
ygtj: 0,
sfz: 0,
ygtg: 0,
- bljl: 0
+ bljl: 0,
+ zzyg: 0,
+ sxyg: 0,
+ probation: 0
},
pickerOptions: {
shortcuts: [
@@ -353,6 +373,7 @@
},
mounted() {
this.selectTab(0)
+ this.fetchProbationCount()
},
methods: {
showSfz(title, number) {
@@ -486,6 +507,29 @@
this.$refs.ctUser.setjobUser(btime, etime, index, number)
this.dialog.dialogShowct = true
},
+ showProbation(title) {
+ this.dialog.dialogShowProbation = true
+ this.title = title
+ const values = this.value2
+ const btime = values[0]
+ const etime = values[1]
+ const index = this.selectIndex
+ this.$refs.zzUser.setjobUser(btime, etime, index, null)
+ },
+ cancleZzUser() {
+ this.dialog.dialogShowProbation = false
+ },
+ fetchProbationCount() {
+ this.$get('hr/empBaseInfo/probation/alert', {
+ pageSize: 1,
+ pageNum: 1,
+ delFlag: 0,
+ empStatus: 0
+ }).then((r) => {
+ const data = r.data.data
+ this.total.probation = data.total || 0
+ })
+ },
cancleChooseUser() {
this.dialog.isVisible = false
},
diff --git a/src/views/dashboard/zzUser.vue b/src/views/dashboard/zzUser.vue
new file mode 100644
index 0000000..89001bf
--- /dev/null
+++ b/src/views/dashboard/zzUser.vue
@@ -0,0 +1,172 @@
+<template>
+ <el-dialog
+ :title="title"
+ top="80px"
+ width="80%"
+ :close-on-click-modal="false"
+ :close-on-press-escape="false"
+ :visible.sync="isVisible"
+ :before-close="beforeClose"
+ >
+ <div class="app-container">
+ <div class="filter-container" style="margin-left: -340px;">
+ <el-input v-model="queryParams.name" placeholder="姓名/身份证号/护卫点/员工编号" class="filter-item search-item" />
+ <el-button class="filter-item" type="primary" @click="search">
+ {{ $t('table.search') }}
+ </el-button>
+ <el-button class="filter-item" type="success" @click="reset">
+ {{ $t('table.reset') }}
+ </el-button>
+ </div>
+ <el-table
+ ref="multipleTable"
+ :data="list"
+ row-key="empId"
+ stripe
+ border
+ :cell-style="{padding:'7px 0','text-align':'center'}"
+ :header-cell-style="{'height':'5.3vh','background-color':'#e6e6e6','text-align':'center'}"
+ style="width: 100%;"
+ >
+ <el-table-column show-overflow-tooltip type="index" width="55" label="序号" />
+ <el-table-column show-overflow-tooltip prop="empNumb" label="员工编号" width="120" />
+ <el-table-column show-overflow-tooltip prop="allDeptName" label="部门(护卫点)" />
+ <el-table-column show-overflow-tooltip prop="jobName" label="岗位" width="120" />
+ <el-table-column show-overflow-tooltip prop="empName" label="姓名" width="120" />
+ <el-table-column show-overflow-tooltip prop="certificateNumb" label="身份证号码" width="160" />
+ <el-table-column show-overflow-tooltip prop="birthdate" label="出生日期" width="150" />
+ <el-table-column show-overflow-tooltip prop="insuranceTypeName" label="社保档位" width="180" />
+ <el-table-column show-overflow-tooltip prop="socialNumb" label="社保电脑号" width="180" />
+ <el-table-column show-overflow-tooltip prop="entryDate" label="入职日期" width="150" />
+ <el-table-column show-overflow-tooltip prop="probationDate" label="转正日期" width="120" />
+ <el-table-column show-overflow-tooltip prop="probationStatusName" label="转正状态" width="120" />
+ </el-table>
+ <pagination
+ v-show="total>0"
+ :total="total"
+ :page.sync="pagination.num"
+ :limit.sync="pagination.size"
+ @pagination="search"
+ />
+ <el-button type="danger" @click="cancleChoose">关闭</el-button>
+ </div>
+ </el-dialog>
+</template>
+<script>
+// 引用翻页组件
+import Pagination from '@/components/Pagination'
+
+export default {
+ components: {
+ Pagination
+ },
+ props: {
+ dialogVisible: {
+ type: Boolean,
+ default: false
+ },
+ title: {
+ type: String,
+ default: ''
+ },
+ multipleselect: {
+ type: Boolean,
+ default: false
+ }
+ },
+ data() {
+ return {
+ show: false,
+ headerHeight: '70px',
+ deptTree: [],
+ selection: [],
+ multipleSelection: [],
+ total: 0, // 总数量
+ queryParams: {
+ name: null,
+ btime: null,
+ etime: null,
+ index: null,
+ number: null
+ }, // 查询参数
+ sort: {}, // 排序
+ pagination: { // 分页参数
+ size: 5,
+ num: 1
+ },
+ probationStatusOptions: [],
+ list: [], // 给table显示的数据
+ defaultProps: {
+ children: 'children',
+ label: 'label'
+ }
+ }
+ },
+ computed: {
+ isVisible: {
+ get() {
+ return this.dialogVisible
+ }
+ }
+ },
+ mounted() {
+ setTimeout(() => {
+ this.getDicts('PROBATIONSTATUS').then(response => {
+ this.probationStatusOptions = response.data
+ })
+ }, 1000)
+ },
+ methods: {
+ probationStatusFormat(row, column) {
+ return this.selectDictLabel(this.probationStatusOptions, row.probationStatus)
+ },
+ beforeClose(done) {
+ this.$emit('cancleChooseUser')
+ },
+ search() {
+ this.fetch({
+ ...this.queryParams
+ })
+ },
+ reset() {
+ this.queryParams.name = null
+ this.search()
+ },
+ // 翻页方法
+ setjobUser(btime, etime, index, number) {
+ this.queryParams.btime = btime
+ this.queryParams.etime = etime
+ this.queryParams.index = index
+ this.queryParams.number = number
+ this.queryParams.name = null
+ this.search()
+ },
+ fetch(params = {}) {
+ var that = this
+ params.pageSize = this.pagination.size
+ params.pageNum = this.pagination.num
+ params.delFlag = 0
+ params.empStatus = 0
+ this.$get('hr/empBaseInfo/probation/alert', {
+ ...params
+ }).then((r) => {
+ const data = r.data.data
+ that.total = data.total
+ that.list = data.rows
+ })
+ },
+ cancleChoose() {
+ this.$emit('cancleChooseUser')
+ }
+ }
+}
+</script>
+<style lang="scss" scoped>
+ .link_button {
+ color: #169BD5;
+ }
+
+ .del_button {
+ color: #D9001B;
+ }
+</style>
--
Gitblit v1.8.0