sc
This commit is contained in:
@@ -12,7 +12,7 @@ export const syncFalseDiligence = async (params) => {
|
|||||||
|
|
||||||
// 修改考勤数据
|
// 修改考勤数据
|
||||||
export const updateFalseDiligence = async (data) => {
|
export const updateFalseDiligence = async (data) => {
|
||||||
return await request.put({ url: '/admin-api/oa/dingtalk/attendance/update', data })
|
return await request.put({ url: '/admin-api/oa/dingtalk/attendance/batchUpdate', data })
|
||||||
}
|
}
|
||||||
|
|
||||||
// 封存考勤数据
|
// 封存考勤数据
|
||||||
|
|||||||
@@ -29,3 +29,8 @@ export const getEmployeeDetail = (id) => {
|
|||||||
export const deleteEmployee = (id) => {
|
export const deleteEmployee = (id) => {
|
||||||
return request.delete({ url: '/admin-api/oa/employee/delete', params: { id } })
|
return request.delete({ url: '/admin-api/oa/employee/delete', params: { id } })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 详情
|
||||||
|
export const getDingUserId = (params) => {
|
||||||
|
return request.get({ url: '/admin-api/oa/employee/getDingTalkUserIdByMobile', params })
|
||||||
|
}
|
||||||
|
|||||||
@@ -81,6 +81,19 @@
|
|||||||
<span v-else> {{ row.reallyWorkDay }}</span>
|
<span v-else> {{ row.reallyWorkDay }}</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
<el-table-column label="调休天数" align="center">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-input-number
|
||||||
|
v-if="row.edit"
|
||||||
|
v-model="row.compensatoryLeaveDay"
|
||||||
|
:min="0"
|
||||||
|
:controls="false"
|
||||||
|
size="small"
|
||||||
|
style="width: 65px"
|
||||||
|
/>
|
||||||
|
<span v-else> {{ row.compensatoryLeaveDay }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column label="缺勤天数" align="center">
|
<el-table-column label="缺勤天数" align="center">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
@@ -270,8 +283,8 @@ async function getList() {
|
|||||||
function spanMethod({ row, columnIndex }) {
|
function spanMethod({ row, columnIndex }) {
|
||||||
if (row.userDingAttendanceRespVOList && row.userDingAttendanceRespVOList.length > 0) {
|
if (row.userDingAttendanceRespVOList && row.userDingAttendanceRespVOList.length > 0) {
|
||||||
if (columnIndex === 0) {
|
if (columnIndex === 0) {
|
||||||
return [1, 12]
|
return [1, 13]
|
||||||
} else if (columnIndex == 12 && row.id) {
|
} else if (columnIndex == 13 && row.id) {
|
||||||
return [1, 1]
|
return [1, 1]
|
||||||
} else {
|
} else {
|
||||||
return [0, 0]
|
return [0, 0]
|
||||||
@@ -313,9 +326,7 @@ async function handleSave(row) {
|
|||||||
text: `假勤数据保存中,请稍后...`,
|
text: `假勤数据保存中,请稍后...`,
|
||||||
background: 'rgba(0, 0, 0, 0.7)'
|
background: 'rgba(0, 0, 0, 0.7)'
|
||||||
})
|
})
|
||||||
await FalseDiligenceApi.updateFalseDiligence({
|
await FalseDiligenceApi.updateFalseDiligence(row.userDingAttendanceRespVOList)
|
||||||
userDingAttendanceSaveReqVO: row.userDingAttendanceRespVOList
|
|
||||||
})
|
|
||||||
globalLoading.value.close()
|
globalLoading.value.close()
|
||||||
message.success('保存成功!')
|
message.success('保存成功!')
|
||||||
getList()
|
getList()
|
||||||
@@ -332,6 +343,7 @@ async function handleSealup(row) {
|
|||||||
await FalseDiligenceApi.saveFalseDiligence({
|
await FalseDiligenceApi.saveFalseDiligence({
|
||||||
period: row.period
|
period: row.period
|
||||||
})
|
})
|
||||||
|
message.success('封存成功!')
|
||||||
// 刷新列表
|
// 刷新列表
|
||||||
await getList()
|
await getList()
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
@@ -431,6 +431,7 @@ async function handleSealup(row) {
|
|||||||
grantIdList: row.userSalaryGrantRespVOList.map((it) => it.grantId),
|
grantIdList: row.userSalaryGrantRespVOList.map((it) => it.grantId),
|
||||||
period: row.period
|
period: row.period
|
||||||
})
|
})
|
||||||
|
message.success('封存成功!')
|
||||||
// 刷新列表
|
// 刷新列表
|
||||||
await getList()
|
await getList()
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
v-loading="formLoading"
|
v-loading="formLoading"
|
||||||
:model="formData"
|
:model="formData"
|
||||||
:rules="formRules"
|
:rules="formRules"
|
||||||
label-width="80px"
|
label-width="100px"
|
||||||
>
|
>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
@@ -69,8 +69,9 @@
|
|||||||
<el-form-item label="开通系统" prop="instanceIds">
|
<el-form-item label="开通系统" prop="instanceIds">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="formData.instanceIds"
|
v-model="formData.instanceIds"
|
||||||
placeholder="选择考勤方案"
|
placeholder="选择开通系统"
|
||||||
multiple
|
multiple
|
||||||
|
collapse-tags
|
||||||
clearable
|
clearable
|
||||||
filterable
|
filterable
|
||||||
>
|
>
|
||||||
@@ -127,11 +128,28 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
|
<el-col :span="12" :offset="0">
|
||||||
|
<el-form-item label="钉钉手机号">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.ddPhone"
|
||||||
|
placeholder="请输入钉钉手机号"
|
||||||
|
clearable
|
||||||
|
@blur="getDingdingUserId"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12" :offset="0">
|
||||||
|
<el-form-item label="钉钉Id" prop="dingUserId">
|
||||||
|
<el-input v-model="formData.dingUserId" disabled />
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
<el-col :span="12">
|
<el-col :span="12">
|
||||||
<el-form-item label="微信号" prop="wxAlias">
|
<el-form-item label="微信号" prop="wxAlias">
|
||||||
<el-input v-model="formData.wxAlias" placeholder="请输入微信号" />
|
<el-input v-model="formData.wxAlias" placeholder="请输入微信号" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-row :gutter="20">
|
||||||
<el-col :span="24">
|
<el-col :span="24">
|
||||||
<el-form-item label="备注">
|
<el-form-item label="备注">
|
||||||
<el-input v-model="formData.remark" placeholder="请输入内容" type="textarea" />
|
<el-input v-model="formData.remark" placeholder="请输入内容" type="textarea" />
|
||||||
@@ -253,4 +271,16 @@ const resetForm = () => {
|
|||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function getDingdingUserId() {
|
||||||
|
try {
|
||||||
|
if (!formData.value.ddPhone) {
|
||||||
|
formData.value.dingUserId = undefined
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const data = await EmployeeApi.getDingUserId({ mobile: formData.value.ddPhone })
|
||||||
|
formData.value.dingUserId = data
|
||||||
|
} finally {
|
||||||
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -22,16 +22,16 @@
|
|||||||
<el-tab-pane :label="t('profile.info.resetPwd')" name="resetPwd">
|
<el-tab-pane :label="t('profile.info.resetPwd')" name="resetPwd">
|
||||||
<ResetPwd />
|
<ResetPwd />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane :label="t('profile.info.userSocial')" name="userSocial">
|
<!-- <el-tab-pane :label="t('profile.info.userSocial')" name="userSocial">
|
||||||
<UserSocial />
|
<UserSocial />
|
||||||
</el-tab-pane>
|
</el-tab-pane> -->
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
</div>
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts" name="Profile">
|
<script setup lang="ts" name="Profile">
|
||||||
import { BasicInfo, ProfileUser, ResetPwd, UserSocial } from './components/'
|
import { BasicInfo, ProfileUser, ResetPwd } from './components/'
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
|
||||||
const activeName = ref('basicInfo')
|
const activeName = ref('basicInfo')
|
||||||
|
|||||||
@@ -26,14 +26,14 @@ const { t } = useI18n()
|
|||||||
// 表单校验
|
// 表单校验
|
||||||
const rules = reactive<FormRules>({
|
const rules = reactive<FormRules>({
|
||||||
nickname: [{ required: true, message: t('profile.rules.nickname'), trigger: 'blur' }],
|
nickname: [{ required: true, message: t('profile.rules.nickname'), trigger: 'blur' }],
|
||||||
email: [
|
// email: [
|
||||||
{ required: true, message: t('profile.rules.mail'), trigger: 'blur' },
|
// { required: true, message: t('profile.rules.mail'), trigger: 'blur' },
|
||||||
{
|
// {
|
||||||
type: 'email',
|
// type: 'email',
|
||||||
message: t('profile.rules.truemail'),
|
// message: t('profile.rules.truemail'),
|
||||||
trigger: ['blur', 'change']
|
// trigger: ['blur', 'change']
|
||||||
}
|
// }
|
||||||
],
|
// ],
|
||||||
mobile: [
|
mobile: [
|
||||||
{ required: true, message: t('profile.rules.phone'), trigger: 'blur' },
|
{ required: true, message: t('profile.rules.phone'), trigger: 'blur' },
|
||||||
{
|
{
|
||||||
@@ -59,6 +59,11 @@ const schema = reactive<FormSchema[]>([
|
|||||||
label: t('profile.user.email'),
|
label: t('profile.user.email'),
|
||||||
component: 'Input'
|
component: 'Input'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'wxAlias',
|
||||||
|
label: '微信号',
|
||||||
|
component: 'Input'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
field: 'sex',
|
field: 'sex',
|
||||||
label: t('profile.user.sex'),
|
label: t('profile.user.sex'),
|
||||||
|
|||||||
Reference in New Issue
Block a user