上传
This commit is contained in:
36
src/api/pers/attendancePlan.js
Normal file
36
src/api/pers/attendancePlan.js
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// 创建
|
||||||
|
export const createPlan = (data) => {
|
||||||
|
return request.post({ url: '/admin-api/oa/attendance-setting/create', data, isSubmitForm: true })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改
|
||||||
|
export const updatePlan = (data) => {
|
||||||
|
return request.put({ url: '/admin-api/oa/attendance-setting/update', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改状态
|
||||||
|
export const updatePlanStatus = (data) => {
|
||||||
|
return request.put({ url: '/admin-api/oa/attendance-setting/status/update', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分页
|
||||||
|
export const getPlanPage = (params) => {
|
||||||
|
return request.get({ url: '/admin-api/oa/attendance-setting/page', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 列表
|
||||||
|
export const getPlanSimpleList = (params) => {
|
||||||
|
return request.get({ url: '/admin-api/oa/attendance-setting/simple-list', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 详情
|
||||||
|
export const getPlanDetail = (id) => {
|
||||||
|
return request.get({ url: '/admin-api/oa/attendance-setting/get', params: { id } })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
export const deletePlan = (id) => {
|
||||||
|
return request.delete({ url: '/admin-api/oa/attendance-setting/delete', params: { id } })
|
||||||
|
}
|
||||||
31
src/api/pers/employee.js
Normal file
31
src/api/pers/employee.js
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// 创建
|
||||||
|
export const createEmployee = (data) => {
|
||||||
|
return request.post({ url: '/admin-api/oa/employee/create', data, isSubmitForm: true })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改
|
||||||
|
export const updateEmployee = (data) => {
|
||||||
|
return request.put({ url: '/admin-api/oa/employee/update', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改状态
|
||||||
|
export const updateEmployeeStatus = (data) => {
|
||||||
|
return request.put({ url: '/admin-api/oa/employee/status/update', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分页
|
||||||
|
export const getEmployeePage = (params) => {
|
||||||
|
return request.get({ url: '/admin-api/oa/employee/page', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 详情
|
||||||
|
export const getEmployeeDetail = (id) => {
|
||||||
|
return request.get({ url: '/admin-api/oa/employee/get', params: { id } })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
export const deleteEmployee = (id) => {
|
||||||
|
return request.delete({ url: '/admin-api/oa/employee/delete', params: { id } })
|
||||||
|
}
|
||||||
5
src/api/system/app/index.js
Normal file
5
src/api/system/app/index.js
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
export const getSimpleAppList = async () => {
|
||||||
|
return await request.get({ url: '/admin-api/system/serviceInstance/simple-list' })
|
||||||
|
}
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
// 查询知识库列表
|
|
||||||
export const getLibraryPage = (params) => {
|
|
||||||
return request.get({ url: '/admin-api/crm/knowledge-lib/page', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询知识库详情
|
|
||||||
export const getLibrary = (id) => {
|
|
||||||
return request.get({ url: '/admin-api/crm/knowledge-lib/get?id=' + id })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新增知识库
|
|
||||||
export const createLibrary = (data) => {
|
|
||||||
return request.post({ url: '/admin-api/crm/knowledge-lib/create', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改知识库
|
|
||||||
export const updateLibrary = (data) => {
|
|
||||||
return request.put({ url: '/admin-api/crm/knowledge-lib/update', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除知识库
|
|
||||||
export const deleteLibrary = (id) => {
|
|
||||||
return request.delete({ url: '/admin-api/crm/knowledge-lib/delete?id=' + id })
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
import request from '@/config/axios'
|
|
||||||
|
|
||||||
// 查询资源列表
|
|
||||||
export const getResourcePage = (params) => {
|
|
||||||
return request.get({ url: '/admin-api/crm/knowledge-lib-info/page', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 查询资源详情
|
|
||||||
export const getResource = (id) => {
|
|
||||||
return request.get({ url: '/admin-api/crm/knowledge-lib-info/get?id=' + id })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 新增资源
|
|
||||||
export const createResource = (data) => {
|
|
||||||
return request.post({ url: '/admin-api/crm/knowledge-lib-info/create', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改资源
|
|
||||||
export const updateResource = (data) => {
|
|
||||||
return request.put({ url: '/admin-api/crm/knowledge-lib-info/update', data })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 删除资源
|
|
||||||
export const deleteResource = (id) => {
|
|
||||||
return request.delete({ url: '/admin-api/crm/knowledge-lib-info/delete?id=' + id })
|
|
||||||
}
|
|
||||||
@@ -213,7 +213,7 @@ export const fenToYuan = (amount: string | number): number => {
|
|||||||
export const removeNullField = (obj: Object) => {
|
export const removeNullField = (obj: Object) => {
|
||||||
for (const key in obj) {
|
for (const key in obj) {
|
||||||
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
||||||
if (obj[key] == '') {
|
if (obj[key] === '' || obj[key] === null || obj[key] === undefined) {
|
||||||
delete obj[key]
|
delete obj[key]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,6 +84,19 @@
|
|||||||
<span v-else> {{ row.jbgz }}</span>
|
<span v-else> {{ row.jbgz }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="奖金" min-width="90px">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-input-number
|
||||||
|
v-if="row.edit"
|
||||||
|
v-model="row.jiangjin"
|
||||||
|
:min="0"
|
||||||
|
:controls="false"
|
||||||
|
size="small"
|
||||||
|
style="width: 65px"
|
||||||
|
/>
|
||||||
|
<span v-else> {{ row.jiangjin }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="满勤" min-width="90px">
|
<el-table-column label="满勤" min-width="90px">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
@@ -269,7 +282,6 @@
|
|||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<DialogCreateSalary ref="createSalaryRef" @success="getList" />
|
<DialogCreateSalary ref="createSalaryRef" @success="getList" />
|
||||||
<DialogImportSalary ref="importSalaryRef" @success="getList" />
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
>
|
>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="员工姓名" prop="nickname">
|
<el-form-item label="员工姓名" prop="name">
|
||||||
<el-input v-model="formData.nickname" placeholder="请输入员工姓名" />
|
<el-input v-model="formData.name" placeholder="请输入员工姓名" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
@@ -35,8 +35,8 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="职位" prop="job">
|
<el-form-item label="职位" prop="post">
|
||||||
<el-input v-model="formData.job" placeholder="请输入职位" />
|
<el-input v-model="formData.post" placeholder="请输入职位" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@@ -54,36 +54,38 @@
|
|||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12" :offset="0">
|
<el-col :span="12" :offset="0">
|
||||||
<el-form-item label="考勤方案" prop="kaoqinfangan">
|
<el-form-item label="考勤方案" prop="attendanceSettingId">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formData.kaoqinfangan"
|
v-model="formData.attendanceSettingId"
|
||||||
placeholder="选择考勤方案"
|
placeholder="选择考勤方案"
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in kaoqinfanganOptions"
|
v-for="item in attendanceSettingIdOptions"
|
||||||
:key="item.value"
|
:key="item.attendanceSettingId"
|
||||||
:label="item.label"
|
:label="item.name"
|
||||||
:value="item.value"
|
:disabled="item.status == 1"
|
||||||
|
:value="item.attendanceSettingId"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" :offset="0">
|
<el-col :span="12" :offset="0">
|
||||||
<el-form-item label="开通系统" prop="kaitongxitong">
|
<el-form-item label="开通系统" prop="instanceIds">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formData.kaitongxitong"
|
v-model="formData.instanceIds"
|
||||||
placeholder="选择考勤方案"
|
placeholder="选择考勤方案"
|
||||||
multiple
|
multiple
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
>
|
>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in kaitongxitongOptions"
|
v-for="item in instanceIdsOptions"
|
||||||
:key="item.value"
|
:key="item.instanceId"
|
||||||
:label="item.label"
|
:label="item.instanceName"
|
||||||
:value="item.value"
|
:disabled="item.status == 1"
|
||||||
|
:value="item.instanceId"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -123,8 +125,10 @@
|
|||||||
<script name="DialogEmployee" setup>
|
<script name="DialogEmployee" setup>
|
||||||
import { CommonStatusEnum } from '@/utils/constants'
|
import { CommonStatusEnum } from '@/utils/constants'
|
||||||
import { formatDate } from '@/utils/formatTime'
|
import { formatDate } from '@/utils/formatTime'
|
||||||
|
import { getPlanSimpleList } from '@/api/pers/attendancePlan'
|
||||||
|
import { getSimpleAppList } from '@/api/system/app'
|
||||||
|
|
||||||
import * as UserApi from '@/api/system/user'
|
import * as EmployeeApi from '@/api/pers/employee'
|
||||||
|
|
||||||
const { t } = useI18n() // 国际化
|
const { t } = useI18n() // 国际化
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
@@ -134,8 +138,7 @@ const dialogTitle = ref('') // 弹窗的标题
|
|||||||
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
|
||||||
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
const formType = ref('') // 表单的类型:create - 新增;update - 修改
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
nickname: '',
|
name: '',
|
||||||
deptId: '',
|
|
||||||
mobile: '',
|
mobile: '',
|
||||||
email: '',
|
email: '',
|
||||||
id: undefined,
|
id: undefined,
|
||||||
@@ -145,12 +148,12 @@ const formData = ref({
|
|||||||
remark: '',
|
remark: '',
|
||||||
status: CommonStatusEnum.ENABLE,
|
status: CommonStatusEnum.ENABLE,
|
||||||
hireDate: '',
|
hireDate: '',
|
||||||
kaoqinfangan: undefined,
|
attendanceSettingId: undefined,
|
||||||
kaitongxitong: []
|
instanceIds: []
|
||||||
})
|
})
|
||||||
const formRules = ref({
|
const formRules = ref({
|
||||||
nickname: [{ required: true, message: '员工姓名不能为空', trigger: 'blur' }],
|
name: [{ required: true, message: '员工姓名不能为空', trigger: 'blur' }],
|
||||||
job: { required: true, message: '职位不能为空', trigger: 'blur' },
|
post: { required: true, message: '职位不能为空', trigger: 'blur' },
|
||||||
email: [
|
email: [
|
||||||
{
|
{
|
||||||
type: 'email',
|
type: 'email',
|
||||||
@@ -161,8 +164,8 @@ const formRules = ref({
|
|||||||
mobile: [{ required: true, message: '手机号不能为空', trigger: 'blur' }]
|
mobile: [{ required: true, message: '手机号不能为空', trigger: 'blur' }]
|
||||||
})
|
})
|
||||||
const formRef = ref() // 表单 Ref
|
const formRef = ref() // 表单 Ref
|
||||||
const kaoqinfanganOptions = ref([])
|
const attendanceSettingIdOptions = ref([])
|
||||||
const kaitongxitongOptions = ref([])
|
const instanceIdsOptions = ref([])
|
||||||
|
|
||||||
/** 打开弹窗 */
|
/** 打开弹窗 */
|
||||||
const open = async (type, id) => {
|
const open = async (type, id) => {
|
||||||
@@ -174,7 +177,7 @@ const open = async (type, id) => {
|
|||||||
if (id) {
|
if (id) {
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
formData.value = await UserApi.getUser(id)
|
formData.value = await EmployeeApi.getEmployeeDetail(id)
|
||||||
} finally {
|
} finally {
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
@@ -184,8 +187,12 @@ const open = async (type, id) => {
|
|||||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||||
|
|
||||||
function getOptions() {
|
function getOptions() {
|
||||||
kaoqinfanganOptions.value = []
|
getSimpleAppList().then((data) => {
|
||||||
kaitongxitongOptions.value = []
|
instanceIdsOptions.value = data
|
||||||
|
})
|
||||||
|
getPlanSimpleList().then((data) => {
|
||||||
|
attendanceSettingIdOptions.value = data
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 提交表单 */
|
/** 提交表单 */
|
||||||
@@ -200,10 +207,10 @@ const submitForm = async () => {
|
|||||||
try {
|
try {
|
||||||
const data = formData.value
|
const data = formData.value
|
||||||
if (formType.value === 'create') {
|
if (formType.value === 'create') {
|
||||||
await UserApi.createUser(data)
|
await EmployeeApi.createEmployee(data)
|
||||||
message.success(t('common.createSuccess'))
|
message.success(t('common.createSuccess'))
|
||||||
} else {
|
} else {
|
||||||
await UserApi.updateUser(data)
|
await EmployeeApi.updateEmployee(data)
|
||||||
message.success(t('common.updateSuccess'))
|
message.success(t('common.updateSuccess'))
|
||||||
}
|
}
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
@@ -217,8 +224,7 @@ const submitForm = async () => {
|
|||||||
/** 重置表单 */
|
/** 重置表单 */
|
||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
formData.value = {
|
formData.value = {
|
||||||
nickname: '',
|
name: '',
|
||||||
deptId: '',
|
|
||||||
mobile: '',
|
mobile: '',
|
||||||
email: '',
|
email: '',
|
||||||
id: undefined,
|
id: undefined,
|
||||||
@@ -228,8 +234,8 @@ const resetForm = () => {
|
|||||||
remark: '',
|
remark: '',
|
||||||
status: CommonStatusEnum.ENABLE,
|
status: CommonStatusEnum.ENABLE,
|
||||||
hireDate: formatDate(new Date(), 'YYYY-MM-DD'),
|
hireDate: formatDate(new Date(), 'YYYY-MM-DD'),
|
||||||
kaoqinfangan: undefined,
|
attendanceSettingId: undefined,
|
||||||
kaitongxitong: []
|
instanceIds: []
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<el-form :model="searchForm" inline>
|
<el-form :model="searchForm" inline>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input v-model="searchForm.name" placeholder="请输入员工姓名" />
|
<el-input v-model="searchForm.name" placeholder="请输入员工姓名" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-radio-group v-model="searchForm.status">
|
<el-radio-group v-model="searchForm.status">
|
||||||
@@ -25,11 +25,11 @@
|
|||||||
|
|
||||||
<el-table v-loading="loading" :data="tableList" border stripe>
|
<el-table v-loading="loading" :data="tableList" border stripe>
|
||||||
<el-table-column type="index" width="50" />
|
<el-table-column type="index" width="50" />
|
||||||
<el-table-column label="用户姓名" prop="nickname" />
|
<el-table-column label="用户姓名" prop="name" />
|
||||||
<el-table-column label="职位" prop="job" />
|
<el-table-column label="职位" prop="post" />
|
||||||
<el-table-column label="手机号码" prop="mobile" width="120" />
|
<el-table-column label="手机号码" prop="mobile" width="120" />
|
||||||
<el-table-column label="考勤方案" />
|
<el-table-column label="考勤方案" prop="attendanceSettingName" />
|
||||||
<el-table-column label="已开通系统" />
|
<el-table-column label="已开通系统" prop="instanceName" />
|
||||||
<el-table-column label="在职状态" key="status" width="150">
|
<el-table-column label="在职状态" key="status" width="150">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-switch
|
<el-switch
|
||||||
@@ -74,6 +74,12 @@
|
|||||||
|
|
||||||
<script name="OAEmployee" setup>
|
<script name="OAEmployee" setup>
|
||||||
import DialogEmployee from './Comp/DialogEmployee.vue'
|
import DialogEmployee from './Comp/DialogEmployee.vue'
|
||||||
|
import { removeNullField } from '@/utils'
|
||||||
|
import * as EmployeeApi from '@/api/pers/employee'
|
||||||
|
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
|
const { t } = useI18n() // 国际化
|
||||||
|
|
||||||
const searchForm = ref({
|
const searchForm = ref({
|
||||||
name: undefined,
|
name: undefined,
|
||||||
status: 0,
|
status: 0,
|
||||||
@@ -98,10 +104,9 @@ const total = ref(0)
|
|||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
tableList.value = [{ status: 0 }]
|
const data = await EmployeeApi.getEmployeePage(removeNullField(searchForm.value))
|
||||||
// const data = await UserApi.getUserPage(queryParams)
|
tableList.value = data.list
|
||||||
// tableList.value = data.list
|
total.value = data.total
|
||||||
// total.value = data.total
|
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
}
|
}
|
||||||
@@ -118,12 +123,13 @@ const handleStatusChange = async (row) => {
|
|||||||
try {
|
try {
|
||||||
// 修改状态的二次确认
|
// 修改状态的二次确认
|
||||||
const text = row.status === 0 ? '启用' : '停用'
|
const text = row.status === 0 ? '启用' : '停用'
|
||||||
await message.confirm('确认要"' + text + '""' + row.nickname + '"用户吗?')
|
await message.confirm('确认要"' + text + '""' + row.name + '"用户吗?')
|
||||||
// 发起修改状态
|
// 发起修改状态
|
||||||
await UserApi.updateUserStatus(row.id, row.status)
|
await EmployeeApi.updateEmployeeStatus({ id: row.id, status: row.status })
|
||||||
// 刷新列表
|
// 刷新列表
|
||||||
await getList()
|
await getList()
|
||||||
} catch {
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
// 取消后,进行恢复按钮
|
// 取消后,进行恢复按钮
|
||||||
row.status = row.status === 0 ? 1 : 0
|
row.status = row.status === 0 ? 1 : 0
|
||||||
}
|
}
|
||||||
@@ -135,7 +141,7 @@ const handleDelete = async (id) => {
|
|||||||
// 删除的二次确认
|
// 删除的二次确认
|
||||||
await message.delConfirm()
|
await message.delConfirm()
|
||||||
// 发起删除
|
// 发起删除
|
||||||
await UserApi.deleteUser(id)
|
await EmployeeApi.deleteEmployee(id)
|
||||||
message.success(t('common.delSuccess'))
|
message.success(t('common.delSuccess'))
|
||||||
// 刷新列表
|
// 刷新列表
|
||||||
await getList()
|
await getList()
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<el-form :model="searchForm" inline>
|
<el-form :model="searchForm" inline>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input v-model="searchForm.name" placeholder="方案名称" />
|
<el-input v-model="searchForm.name" placeholder="方案名称" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-select v-model="searchForm.status" placeholder="启用状态" clearable filterable>
|
<el-select v-model="searchForm.status" placeholder="启用状态" clearable filterable>
|
||||||
@@ -31,7 +31,9 @@
|
|||||||
<el-table-column label="操作" width="200">
|
<el-table-column label="操作" width="200">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<el-button type="primary" link @click="openForm('update', scope.row)"> 修改 </el-button>
|
<el-button type="primary" link @click="openForm('update', scope.row)"> 修改 </el-button>
|
||||||
<el-button type="primary" link @click="handleDelete(scope.row.id)"> 删除 </el-button>
|
<el-button type="primary" link @click="handleDelete(scope.row.attendanceSettingId)">
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -48,6 +50,11 @@
|
|||||||
|
|
||||||
<script name="PersSetting" setup>
|
<script name="PersSetting" setup>
|
||||||
import DialogPlan from './DialogPlan.vue'
|
import DialogPlan from './DialogPlan.vue'
|
||||||
|
import * as PlanApi from '@/api/pers/attendancePlan'
|
||||||
|
import { removeNullField } from '@/utils'
|
||||||
|
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
|
const { t } = useI18n() // 国际化
|
||||||
const searchForm = ref({
|
const searchForm = ref({
|
||||||
name: undefined,
|
name: undefined,
|
||||||
status: undefined,
|
status: undefined,
|
||||||
@@ -72,10 +79,9 @@ const total = ref(0)
|
|||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
tableList.value = [{ status: 0 }]
|
const data = await PlanApi.getPlanPage(removeNullField(searchForm.value))
|
||||||
// const data = await UserApi.getUserPage(queryParams)
|
tableList.value = data.list
|
||||||
// tableList.value = data.list
|
total.value = data.total
|
||||||
// total.value = data.total
|
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
}
|
}
|
||||||
@@ -92,14 +98,31 @@ const handleStatusChange = async (row) => {
|
|||||||
const text = row.status === 0 ? '启用' : '停用'
|
const text = row.status === 0 ? '启用' : '停用'
|
||||||
await message.confirm('确认要"' + text + '""' + row.name + '"方案吗?')
|
await message.confirm('确认要"' + text + '""' + row.name + '"方案吗?')
|
||||||
// 发起修改状态
|
// 发起修改状态
|
||||||
// await UserApi.updateUserStatus(row.id, row.status)
|
await PlanApi.updatePlanStatus({
|
||||||
|
attendanceSettingId: row.attendanceSettingId,
|
||||||
|
status: row.status
|
||||||
|
})
|
||||||
// 刷新列表
|
// 刷新列表
|
||||||
await getList()
|
await getList()
|
||||||
} catch {
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
// 取消后,进行恢复按钮
|
// 取消后,进行恢复按钮
|
||||||
row.status = row.status === 0 ? 1 : 0
|
row.status = row.status === 0 ? 1 : 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** 删除按钮操作 */
|
||||||
|
const handleDelete = async (id) => {
|
||||||
|
try {
|
||||||
|
// 删除的二次确认
|
||||||
|
await message.delConfirm()
|
||||||
|
// 发起删除
|
||||||
|
await PlanApi.deletePlan(id)
|
||||||
|
message.success(t('common.delSuccess'))
|
||||||
|
// 刷新列表
|
||||||
|
await getList()
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped></style>
|
<style lang="scss" scoped></style>
|
||||||
|
|||||||
@@ -12,19 +12,18 @@
|
|||||||
<el-table :data="form.planList" border stripe>
|
<el-table :data="form.planList" border stripe>
|
||||||
<el-table-column label="年份" width="150px">
|
<el-table-column label="年份" width="150px">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-date-picker
|
<el-input-number
|
||||||
v-model="row.year"
|
v-model="row.year"
|
||||||
type="year"
|
size="small"
|
||||||
placeholder="选择年份"
|
:min="1"
|
||||||
format="YYYY"
|
:controls="false"
|
||||||
value-format="YYYY"
|
style="width: 100px"
|
||||||
style="width: 120px"
|
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column
|
<el-table-column
|
||||||
v-for="item in 12"
|
v-for="item in 12"
|
||||||
:prop="item"
|
:prop="item + ''"
|
||||||
:key="item"
|
:key="item"
|
||||||
:label="item + '月'"
|
:label="item + '月'"
|
||||||
width="140px"
|
width="140px"
|
||||||
@@ -32,7 +31,7 @@
|
|||||||
<el-table-column label="应出勤">
|
<el-table-column label="应出勤">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="row[item].yingchuqin"
|
v-model="row[item + ''].shouldWorkDay"
|
||||||
size="small"
|
size="small"
|
||||||
:min="1"
|
:min="1"
|
||||||
:max="31"
|
:max="31"
|
||||||
@@ -44,7 +43,7 @@
|
|||||||
<el-table-column label="带薪假">
|
<el-table-column label="带薪假">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="row[item].daixinjia"
|
v-model="row[item].paidLeaveDay"
|
||||||
size="small"
|
size="small"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="31"
|
:max="31"
|
||||||
@@ -71,6 +70,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="DialogAttendancePlan">
|
<script setup name="DialogAttendancePlan">
|
||||||
|
import * as PlanApi from '@/api/pers/attendancePlan'
|
||||||
|
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
|
|
||||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||||
@@ -84,11 +85,25 @@ const open = async (type, row) => {
|
|||||||
dialogTitle.value = type == 'create' ? `新增方案` : '修改方案'
|
dialogTitle.value = type == 'create' ? `新增方案` : '修改方案'
|
||||||
formType.value = type
|
formType.value = type
|
||||||
resetForm()
|
resetForm()
|
||||||
|
if (row?.attendanceSettingId) {
|
||||||
if (row?.id) {
|
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
// comissionForm.value = await UserApi.getUser(id)
|
const data = await PlanApi.getPlanDetail(row.attendanceSettingId)
|
||||||
|
const list = data.attendancePeriodS.map((item) => {
|
||||||
|
item.monthSettings.map((it) => {
|
||||||
|
item[it.month + ''] = {
|
||||||
|
shouldWorkDay: it.shouldWorkDay,
|
||||||
|
paidLeaveDay: it.paidLeaveDay
|
||||||
|
}
|
||||||
|
})
|
||||||
|
item.year = item.year
|
||||||
|
delete item.monthSettings
|
||||||
|
return item
|
||||||
|
})
|
||||||
|
form.value = {
|
||||||
|
name: data.name,
|
||||||
|
planList: list
|
||||||
|
}
|
||||||
} finally {
|
} finally {
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
@@ -110,18 +125,18 @@ function resetForm() {
|
|||||||
function handleAddYearPlan() {
|
function handleAddYearPlan() {
|
||||||
form.value.planList.push({
|
form.value.planList.push({
|
||||||
year: new Date().getFullYear(),
|
year: new Date().getFullYear(),
|
||||||
1: { yingchuqin: undefined, daixinjia: undefined },
|
1: { shouldWorkDay: undefined, paidLeaveDay: undefined },
|
||||||
2: { yingchuqin: undefined, daixinjia: undefined },
|
2: { shouldWorkDay: undefined, paidLeaveDay: undefined },
|
||||||
3: { yingchuqin: undefined, daixinjia: undefined },
|
3: { shouldWorkDay: undefined, paidLeaveDay: undefined },
|
||||||
4: { yingchuqin: undefined, daixinjia: undefined },
|
4: { shouldWorkDay: undefined, paidLeaveDay: undefined },
|
||||||
5: { yingchuqin: undefined, daixinjia: undefined },
|
5: { shouldWorkDay: undefined, paidLeaveDay: undefined },
|
||||||
6: { yingchuqin: undefined, daixinjia: undefined },
|
6: { shouldWorkDay: undefined, paidLeaveDay: undefined },
|
||||||
7: { yingchuqin: undefined, daixinjia: undefined },
|
7: { shouldWorkDay: undefined, paidLeaveDay: undefined },
|
||||||
8: { yingchuqin: undefined, daixinjia: undefined },
|
8: { shouldWorkDay: undefined, paidLeaveDay: undefined },
|
||||||
9: { yingchuqin: undefined, daixinjia: undefined },
|
9: { shouldWorkDay: undefined, paidLeaveDay: undefined },
|
||||||
10: { yingchuqin: undefined, daixinjia: undefined },
|
10: { shouldWorkDay: undefined, paidLeaveDay: undefined },
|
||||||
11: { yingchuqin: undefined, daixinjia: undefined },
|
11: { shouldWorkDay: undefined, paidLeaveDay: undefined },
|
||||||
12: { yingchuqin: undefined, daixinjia: undefined }
|
12: { shouldWorkDay: undefined, paidLeaveDay: undefined }
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,16 +150,35 @@ const submitForm = async () => {
|
|||||||
// 提交请求
|
// 提交请求
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
|
const arr = form.value.planList.map((item) => {
|
||||||
|
const list = []
|
||||||
|
for (let i = 1; i <= 12; i++) {
|
||||||
|
list.push({
|
||||||
|
month: i,
|
||||||
|
...item[i + '']
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
year: item.year,
|
||||||
|
monthSettings: list
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const data = {
|
||||||
|
name: form.value.name,
|
||||||
|
attendancePeriodS: arr
|
||||||
|
}
|
||||||
if (formType.value === 'create') {
|
if (formType.value === 'create') {
|
||||||
// await ClassApi.createClassType(data)
|
await PlanApi.createPlan(data)
|
||||||
message.success(t('common.createSuccess'))
|
message.success(t('common.createSuccess'))
|
||||||
} else {
|
} else {
|
||||||
// await ClassApi.updateClassType(data)
|
await PlanApi.updatePlan(data)
|
||||||
message.success(t('common.updateSuccess'))
|
message.success(t('common.updateSuccess'))
|
||||||
}
|
}
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
// 发送操作成功的事件
|
// 发送操作成功的事件
|
||||||
emit('success')
|
emit('success')
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
} finally {
|
} finally {
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user