4 files modified
1 files added
| | |
| | | import request from '@/axios'; |
| | | |
| | | // export const getList = (current, size, params) => { |
| | | // return request({ |
| | | // url: '/assessment/assessmentScore/list', |
| | | // method: 'get', |
| | | // params: { |
| | | // ...params, |
| | | // current, |
| | | // size, |
| | | // } |
| | | // }) |
| | | // } |
| | | |
| | | export const getList = (current, size, params, type, assessmentTaskId) => { |
| | | return request({ |
| | | url: `/assessment/assessmentScore/listGroupByTask/${type}/${assessmentTaskId}`, |
| | |
| | | size, |
| | | } |
| | | }) |
| | | } |
| | | |
| | | export const getDetailList = (beId, assessmentTaskId) => { |
| | | return request({ |
| | | url: '/assessment/assessmentScore/list', |
| | | method: 'get', |
| | | params: { |
| | | beId, |
| | | assessmentTaskId |
| | | // ...params, |
| | | // current, |
| | | // size, |
| | | } |
| | | }) |
| | | } |
| | |
| | | } |
| | | }, |
| | | data() { |
| | | // const validateWeight = |
| | | // const validateRange = |
| | | return { |
| | | defaults: {}, |
| | | form: {}, |
| | |
| | | page: { |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 1, |
| | | total: 0, |
| | | }, |
| | | selectList: [], |
| | | weightRange: 100, |
| New file |
| | |
| | | <template> |
| | | <el-dialog title="详情" v-model="params.visible" width="60%" destroy-on-close> |
| | | <avue-crud :data="data" v-model:page="page" :option="option" @on-load="onLoad" > |
| | | </avue-crud> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script setup> |
| | | import { onMounted, ref } from 'vue'; |
| | | import { getDetailList } from '@/api/assessment/assessmentScore' |
| | | |
| | | const option = ref({ |
| | | height: '400', |
| | | calcHeight: 32, |
| | | tip: true, |
| | | searchMenuSpan: 6, |
| | | border: true, |
| | | index: true, |
| | | addBtn: false, |
| | | viewBtn: false, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | menu: false, |
| | | menuLeft: false, |
| | | header: false, |
| | | column: [ |
| | | { |
| | | label: '参与考核人', |
| | | type: 'input', |
| | | prop: 'userName' |
| | | }, |
| | | { |
| | | label: '职务', |
| | | type: 'input', |
| | | prop: 'postName' |
| | | }, |
| | | { |
| | | label: '权值', |
| | | type: 'input', |
| | | prop: 'weight' |
| | | }, |
| | | { |
| | | label: '考核分数', |
| | | type: 'input', |
| | | prop: 'scoreVal' |
| | | }, |
| | | { |
| | | label: '考核评语', |
| | | type: 'input', |
| | | prop: 'remark' |
| | | }, |
| | | { |
| | | label: '考核状态', |
| | | type: 'input', |
| | | formatter: () => { |
| | | return '评分完成' |
| | | } |
| | | } |
| | | ] |
| | | }) |
| | | |
| | | const data = ref([]) |
| | | |
| | | const page = ref({ |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 0, |
| | | }) |
| | | |
| | | const $props = defineProps({ |
| | | params: { |
| | | type: Object, |
| | | default: () => { |
| | | return { |
| | | visible: false, |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | |
| | | |
| | | const onLoad = () => { |
| | | const { beId, assessmentTaskId, visible } = $props.params |
| | | visible && getDetailList(beId, assessmentTaskId).then(res => { |
| | | data.value = res.data.data.records |
| | | console.log(res.data.data); |
| | | }) |
| | | } |
| | | |
| | | onMounted(() => { |
| | | onLoad() |
| | | }) |
| | | </script> |
| | | |
| | | <style lang="scss" scoped></style> |
| | |
| | | @row-save="rowSave" @row-del="rowDel" @search-change="searchChange" @search-reset="searchReset" |
| | | @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange" |
| | | @refresh-change="refreshChange" @on-load="onLoad"> |
| | | <template #menu="{ row }"> |
| | | <el-button type="primary" size="small" @click="handleDetail(row)">查看详情</el-button> |
| | | </template> |
| | | </avue-crud> |
| | | <resultDetail :params="detailParams" /> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { getList } from '@/api/assessment/assessmentScore' |
| | | import resultDetail from './resultDetail.vue' |
| | | |
| | | export default { |
| | | components: { |
| | | resultDetail |
| | | }, |
| | | props: { |
| | | params: { |
| | | type: Object, |
| | |
| | | border: true, |
| | | index: true, |
| | | addBtn: false, |
| | | viewBtn: true, |
| | | viewBtn: false, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | selection: false, |
| | | dialogClickModal: false, |
| | | menu: false, |
| | | menuWidth: 200, |
| | | menu: true, |
| | | column: [ |
| | | { |
| | | label: "被考核人", |
| | |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | total: 1, |
| | | } |
| | | }, |
| | | detailParams: {} |
| | | } |
| | | }, |
| | | watch: { |
| | |
| | | // }); |
| | | // }, |
| | | beforeOpen(done, type) { |
| | | if (["edit", "view"].includes(type)) { |
| | | getDetail(this.form.id).then(res => { |
| | | this.form = res.data.data; |
| | | }); |
| | | } |
| | | done(); |
| | | // if (["edit", "view"].includes(type)) { |
| | | // getDetail(this.form.id).then(res => { |
| | | // this.form = res.data.data; |
| | | // }); |
| | | // } |
| | | // done(); |
| | | }, |
| | | searchReset() { |
| | | this.query = {}; |
| | |
| | | this.loading = false; |
| | | this.selectionClear(); |
| | | }); |
| | | }, |
| | | handleDetail(row) { |
| | | this.detailParams = { |
| | | visible: true, |
| | | ...row |
| | | } |
| | | } |
| | | }, |
| | | mounted() { |
| | |
| | | <template> |
| | | <el-dialog v-model="params.visible" :title="params.title" width="60%" destroyOnClose> |
| | | <el-dialog v-model="params.visible" :title="params.title" width="60%" destroy-on-close> |
| | | <div class="content"> |
| | | <el-form :model="addForm" label-width="130px" :rules="rules" ref="addFormRef"> |
| | | <el-form-item label="任务名称:" prop="taskName"> |
| | |
| | | <div class="select-list"> |
| | | <el-form-item v-for="content in selectGroup" :key="content.deptId" :label="content.deptName" |
| | | class="select-item"> |
| | | <el-input-number min="1" :max="content.employees.length" v-model="content.val" |
| | | controls-position="right" placeholder="请输入候选人数量" class="select-num"></el-input-number> |
| | | <span v-if="!params.type"> |
| | | <el-input-number min="0" :max="content.employees.length || 0" v-model="content.val" |
| | | controls-position="right" placeholder="请输入候选人数量" class="select-num"></el-input-number> |
| | | </span> |
| | | <el-select v-model="content.users" value-key="id" multiple placeholder="请输入候选人"> |
| | | <el-option v-for="employee in content.employees" :key="employee.id" :label="employee.name" |
| | | :value="employee"></el-option> |
| | |
| | | format="YYYY-MM-DD HH:mm:ss" valueFormat="YYYY-MM-DD HH:mm:ss" style="width: 100%;" /> |
| | | </el-form-item> |
| | | <el-form-item label="评优数量:" prop="evaluateNum"> |
| | | <el-input-number min="1" :max="maxEvaluateNum" v-model="addForm.evaluateNum" controls-position="right" |
| | | <el-input-number min="0" :max="maxEvaluateNum || 0" v-model="addForm.evaluateNum" controls-position="right" |
| | | :placeholder="`请输入评优数量(最多不可大于${maxEvaluateNum}人)`" class="evaluateNum-input"></el-input-number> |
| | | </el-form-item> |
| | | <el-form-item label="评优截止日期:" prop="evaluateCutoffTime"> |
| | |
| | | 'params.visible': { |
| | | handler(val) { |
| | | val && this.initData(website.tenantId); |
| | | this.addForm.type = this.params.type + ''; |
| | | this.addForm = this.params.addForm; |
| | | val && (this.addForm.type = this.params.type + '') |
| | | if (this.params.isEdit) { |
| | | this.addForm = this.params.addForm; |
| | | this.addForm.type = this.params.type + ''; |
| | |
| | | }); |
| | | }); |
| | | this.maxEvaluateNum += (item.val * 1); |
| | | console.log(item.val); |
| | | this.addForm.candidateNum.push({ |
| | | deptId: item.deptId, |
| | | deptName: item.deptName, |
| | |
| | | }); |
| | | }, |
| | | setDefaultValue(depts) { |
| | | const params = _.cloneDeep(this.params.addForm.candidateNum); |
| | | const params = _.cloneDeep(this.params.addForm.candidateNum) || [] |
| | | params.forEach(item => { |
| | | const value = depts.find(dept => item.deptId === dept.deptId); |
| | | item.employees = value?.employees || []; |
| | |
| | | this.selectGroup = params; |
| | | }, |
| | | }, |
| | | mounted() { }, |
| | | }; |
| | | </script> |
| | | |
| | |
| | | |
| | | .evaluateNum-input { |
| | | width: 100%; |
| | | |
| | | :deep() { |
| | | .el-input__inner { |
| | | text-align: left; |