From d795a97527ef11b59b2157da4b17ec2a85cf6a13 Mon Sep 17 00:00:00 2001
From: GuLiMmo <2820890765@qq.com>
Date: Fri, 22 Dec 2023 17:40:48 +0800
Subject: [PATCH] 部门页面修改
---
src/views/assessment/components/assessmentWeight.vue | 46 +++---
src/option/assessmentTask/assessmentTask.js | 19 ++
src/views/assessment/components/popoverTable.vue | 213 +++++++++++++++++++++++++++++++++++
src/views/assessment/assessmentTaskSetting.vue | 32 +++++
4 files changed, 283 insertions(+), 27 deletions(-)
diff --git a/src/option/assessmentTask/assessmentTask.js b/src/option/assessmentTask/assessmentTask.js
index db0d078..6af1245 100644
--- a/src/option/assessmentTask/assessmentTask.js
+++ b/src/option/assessmentTask/assessmentTask.js
@@ -39,9 +39,24 @@
],
},
{
- label: "考核目的",
+ // label: "考核目的",
+ label: "考核种类",
prop: "assessmentPurpose",
- type: "input",
+ type: "select",
+ dicData: [
+ {
+ label: '月度考核',
+ value: '月度考核'
+ },
+ {
+ label: '季度考核',
+ value: '季度考核'
+ },
+ {
+ label: '年度考核',
+ value: '年度考核'
+ }
+ ],
rules: [
{
required: true,
diff --git a/src/views/assessment/assessmentTaskSetting.vue b/src/views/assessment/assessmentTaskSetting.vue
index d97d5f5..758710e 100644
--- a/src/views/assessment/assessmentTaskSetting.vue
+++ b/src/views/assessment/assessmentTaskSetting.vue
@@ -8,8 +8,15 @@
@tree-load="treeLoad" @on-load="onLoad">
<template #menu="{ size, row, index }">
<el-button type="primary" size="small" @click="handleWeight(row)">
- 考核权重
+ 添加考核人
</el-button>
+ </template>
+ <template #assessmentPerson="{ row }">
+ <popoverTable :params="{...row, type: defaultTaskType}">
+ <template #content>
+ xxxx
+ </template>
+ </popoverTable>
</template>
<template #deptCategory="{ row }">
<el-tag>{{ row.deptCategoryName }}</el-tag>
@@ -24,13 +31,15 @@
<script>
import assessmentWeight from './components/assessmentWeight.vue'
+import popoverTable from '@/views/assessment/components/popoverTable.vue'
import { getList } from '@/api/system/user.js'
import { getLazyList } from '@/api/system/dept';
import _ from 'lodash'
export default {
components: {
- assessmentWeight
+ assessmentWeight,
+ popoverTable,
},
data() {
return {
@@ -53,6 +62,7 @@
editBtn: false,
delBtn: false,
menuWidth: 200,
+ menuFixed: 'right',
column: [
{
label: "主键",
@@ -69,17 +79,20 @@
// prop: "userName",
type: "input",
search: true,
+ minWidth: 70
},
{
label: "工号",
prop: 'code',
type: "input",
+ minWidth: 70
},
{
label: "部门",
prop: "deptName",
type: "tree",
search: true,
+ minWidth: 120,
dicUrl: `/blade-system/dept/tree?tenantId=${this.website.tenantId}`,
dicFormatter: (res) => {
this.selectGroup.depts = res.data
@@ -95,6 +108,7 @@
prop: "postName",
type: "select",
search: true,
+ minWidth: 100,
dicUrl: `/blade-system/post/select?tenantId=${this.website.tenantId}`,
dicFormatter: (res) => {
this.selectGroup.posts = res.data
@@ -109,16 +123,25 @@
label: "人员类型",
prop: "personnelType",
type: "input",
+ minWidth: 70
},
{
label: "合伙类型",
prop: "partnerType",
type: "input",
+ minWidth: 70
},
{
label: "联系方式",
prop: "phone",
type: "input",
+ minWidth: 150,
+ },
+ {
+ label: "考核人",
+ minWidth: 120,
+ prop: "assessmentPerson",
+ slot: true,
},
]
},
@@ -160,6 +183,11 @@
prop: 'deptCategory',
slot: true,
},
+ {
+ label: '考核人',
+ prop: 'assessmentPerson',
+ slot: true
+ }
],
},
page: {
diff --git a/src/views/assessment/components/assessmentWeight.vue b/src/views/assessment/components/assessmentWeight.vue
index 969a338..984f414 100644
--- a/src/views/assessment/components/assessmentWeight.vue
+++ b/src/views/assessment/components/assessmentWeight.vue
@@ -135,29 +135,29 @@
},
],
},
- {
- label: "评分范围",
- prop: "rangeVal",
- type: "input",
- placeholder: '评分范围(100分制)±N',
- rules: [
- {
- validator: (rule, value, callback) => {
- if (value === '') {
- callback(new Error('请填写评分范围'))
- } else {
- if (value > 100) {
- callback(new Error('输入的请填写评分范围不可超过100'))
- } else {
- callback()
- }
- }
- },
- required: true,
- trigger: 'click',
- },
- ],
- }
+ // {
+ // label: "评分范围",
+ // prop: "rangeVal",
+ // type: "input",
+ // placeholder: '评分范围(100分制)±N',
+ // rules: [
+ // {
+ // validator: (rule, value, callback) => {
+ // if (value === '') {
+ // callback(new Error('请填写评分范围'))
+ // } else {
+ // if (value > 100) {
+ // callback(new Error('输入的请填写评分范围不可超过100'))
+ // } else {
+ // callback()
+ // }
+ // }
+ // },
+ // required: true,
+ // trigger: 'click',
+ // },
+ // ],
+ // }
]
},
page: {
diff --git a/src/views/assessment/components/popoverTable.vue b/src/views/assessment/components/popoverTable.vue
new file mode 100644
index 0000000..845571f
--- /dev/null
+++ b/src/views/assessment/components/popoverTable.vue
@@ -0,0 +1,213 @@
+<template>
+ <el-popover placement="top-end" :title="!params.type ? '个人考核权重' : '部门考核权重'" :width="700" height="400" @show="popoverShow" @hide="popoverHide" trigger="hover">
+ <template v-if="visible">
+ <avue-crud :option="option" v-model:defaults="defaults" v-model:search="search" v-model:page="page"
+ v-model="form" :table-loading="loading" :data="data" ref="crud" @selection-change="selectionChange"
+ @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
+ </avue-crud>
+ </template>
+ <template #reference>
+ <slot name="content"></slot>
+ </template>
+ </el-popover>
+</template>
+
+<script>
+import { getList, getDeptList } from '@/api/assessment/assessmentSet'
+
+export default {
+ props: {
+ params: {
+ type: Object,
+ default() {
+ return {}
+ }
+ }
+ },
+ data() {
+ return {
+ defaults: {},
+ form: {},
+ query: {},
+ search: {},
+ loading: true,
+ data: [],
+ option: {
+ height: '300',
+ calcHeight: 32,
+ tip: true,
+ searchMenuSpan: 6,
+ border: true,
+ index: true,
+ addBtn: false,
+ viewBtn: true,
+ editBtn: true,
+ delBtn: true,
+ header: false,
+ menu: false,
+ menuBtn: false,
+ column: [
+ {
+ label: "考核人",
+ prop: "toUserName",
+ type: "select",
+ rules: [
+ {
+ required: true,
+ message: '请选择考核人',
+ trigger: 'click',
+ },
+ ],
+ dicUrl: '/blade-system/user/page?current=1&size=999999999',
+ dicFormatter: (res) => {
+ this.selectList = res.data.records
+ return res.data.records
+ },
+ props: {
+ label: 'name',
+ value: 'name'
+ },
+ control: (val, form) => {
+ const toUser = this.selectList.find(option => val === option.name)
+ form.toPostName = toUser?.postName || ''
+ form.toDeptName = toUser?.deptName || ''
+ }
+ },
+ {
+ label: "考核人部门",
+ prop: "toDeptName",
+ type: "input",
+ disabled: true,
+ // hide: true,
+ rules: [
+ {
+ required: true,
+ message: '请填写考核人部门',
+ trigger: 'click',
+ },
+ ],
+ },
+ {
+ label: "考核人职务",
+ prop: "toPostName",
+ type: "input",
+ disabled: true,
+ // hide: true,
+ rules: [
+ {
+ required: true,
+ message: '请填写被考核人职务',
+ trigger: 'click',
+ },
+ ],
+ },
+ {
+ label: "权值",
+ prop: "weight",
+ type: "input",
+ rules: [
+ {
+ validator: (rule, value, callback) => {
+ if (value === '') {
+ callback(new Error('请输入权值'))
+ } else {
+ if (value > this.weightRange) {
+ callback(new Error('输入的权值不可超过' + this.weightRange))
+ } else {
+ callback()
+ }
+ }
+ },
+ required: true,
+ trigger: 'click',
+ },
+ ],
+ },
+ {
+ label: "评分范围",
+ prop: "rangeVal",
+ type: "input",
+ placeholder: '评分范围(100分制)±N',
+ rules: [
+ {
+ validator: (rule, value, callback) => {
+ if (value === '') {
+ callback(new Error('请填写评分范围'))
+ } else {
+ if (value > 100) {
+ callback(new Error('输入的请填写评分范围不可超过100'))
+ } else {
+ callback()
+ }
+ }
+ },
+ required: true,
+ trigger: 'click',
+ },
+ ],
+ }
+ ]
+ },
+ page: {
+ pageSize: 10,
+ currentPage: 1,
+ total: 0,
+ },
+ visible: false
+ }
+ },
+ watch: {
+ },
+ methods: {
+ selectionChange(list) {
+ this.selectionList = list;
+ },
+ selectionClear() {
+ this.selectionList = [];
+ // this.$refs.crud.toggleSelection();
+ },
+ currentChange(currentPage) {
+ this.page.currentPage = currentPage;
+ },
+ sizeChange(pageSize) {
+ this.page.pageSize = pageSize;
+ },
+ refreshChange() {
+ this.onLoad(this.page, this.query);
+ },
+ onLoad(page, params = {}) {
+ this.loading = true;
+
+ const {
+ } = this.query;
+
+ let values = {
+ // toUserId: this.params.id
+ // userId: this.params.id
+ };
+ this.params.isDept && Object.assign(values, {
+ deptId: this.params.id
+ });
+ !this.params.isDept && Object.assign(values, {
+ userId: this.params.id
+ });
+ (this.params.isDept ? getDeptList(page.currentPage, page.pageSize, values) : getList(page.currentPage, page.pageSize, values)).then(res => {
+ const data = res.data.data;
+ this.page.total = data.total;
+ this.data = data.records;
+ this.loading = false;
+ this.selectionClear();
+ });
+ },
+ popoverShow() {
+ this.visible = true;
+ },
+ popoverHide() {
+ this.visible = false;
+ }
+ },
+}
+</script>
+
+<style lang="scss" scoped></style>
+
\ No newline at end of file
--
Gitblit v1.9.3