上传
This commit is contained in:
41
src/api/finance/plan.js
Normal file
41
src/api/finance/plan.js
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// 获取提成结算参数
|
||||||
|
export const getCommissionParams = async () => {
|
||||||
|
return await request.get({ url: '/admin-api/oa/percentage/get-percentage-param' })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 创建
|
||||||
|
export const createPlan = (data) => {
|
||||||
|
return request.post({ url: '/admin-api/oa/percentage/create', data, isSubmitForm: true })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改
|
||||||
|
export const updatePlan = (data) => {
|
||||||
|
return request.put({ url: '/admin-api/oa/percentage/update', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改状态
|
||||||
|
export const updatePlanStatus = (data) => {
|
||||||
|
return request.put({ url: '/admin-api/oa/percentage/status/update', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分页
|
||||||
|
export const getPlanPage = (params) => {
|
||||||
|
return request.get({ url: '/admin-api/oa/percentage/page', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 列表
|
||||||
|
export const getPlanSimpleList = (params) => {
|
||||||
|
return request.get({ url: '/admin-api/oa/percentage/simple-list', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 详情
|
||||||
|
export const getPlanDetail = (id) => {
|
||||||
|
return request.get({ url: '/admin-api/oa/percentage/get', params: { id } })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
export const deletePlan = (id) => {
|
||||||
|
return request.delete({ url: '/admin-api/oa/percentage/delete', params: { id } })
|
||||||
|
}
|
||||||
36
src/api/finance/salary.js
Normal file
36
src/api/finance/salary.js
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
|
||||||
|
// 创建
|
||||||
|
export const createSalary = (data) => {
|
||||||
|
return request.post({ url: '/admin-api/oa/user-salary/create', data, isSubmitForm: true })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改
|
||||||
|
export const updateSalary = (data) => {
|
||||||
|
return request.put({ url: '/admin-api/oa/user-salary/update', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改状态
|
||||||
|
export const updateSalaryStatus = (data) => {
|
||||||
|
return request.put({ url: '/admin-api/oa/user-salary/status/update', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分页
|
||||||
|
export const getSalaryPage = (params) => {
|
||||||
|
return request.get({ url: '/admin-api/oa/user-salary/page', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 列表
|
||||||
|
export const getSalarySimpleList = (params) => {
|
||||||
|
return request.get({ url: '/admin-api/oa/user-salary/simple-list', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 详情
|
||||||
|
export const getSalaryDetail = (id) => {
|
||||||
|
return request.get({ url: '/admin-api/oa/user-salary/get', params: { id } })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除
|
||||||
|
export const deleteSalary = (id) => {
|
||||||
|
return request.delete({ url: '/admin-api/oa/user-salary/delete', params: { id } })
|
||||||
|
}
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
import request from '@/config/axios'
|
|
||||||
// 线索情况
|
|
||||||
export const getUserClueCount = async (params) => {
|
|
||||||
return await request.get({ url: '/admin-api/crm/home/get-user-count', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 成交率
|
|
||||||
export const getClueSignSignRate = async (params) => {
|
|
||||||
return await request.get({ url: '/admin-api/crm/home/get-sign-rate', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 成交率
|
|
||||||
export const getClueSignSignRank = async (params) => {
|
|
||||||
return await request.get({ url: '/admin-api/crm/home/get-sign-top10', params })
|
|
||||||
}
|
|
||||||
|
|
||||||
// 成交率
|
|
||||||
export const getClueFollowRank = async (params) => {
|
|
||||||
return await request.get({ url: '/admin-api/crm/home/get-follow-top10', params })
|
|
||||||
}
|
|
||||||
20
src/api/home/salary.js
Normal file
20
src/api/home/salary.js
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import request from '@/config/axios'
|
||||||
|
// 生成工资条
|
||||||
|
export const createSalarySlip = async (data) => {
|
||||||
|
return await request.post({ url: '/admin-api/oa/user-salary-grant/create', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 导入工资条
|
||||||
|
export const importSalarySlip = async (params) => {
|
||||||
|
return await request.get({ url: '/admin-api/oa/user-salary-grant/import', params })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改工资条
|
||||||
|
export const updateSalarySlip = async (data) => {
|
||||||
|
return await request.put({ url: '/admin-api/oa/user-salary-grant/update', data })
|
||||||
|
}
|
||||||
|
|
||||||
|
// 封存
|
||||||
|
export const sealupSalarySlip = async (data) => {
|
||||||
|
return await request.post({ url: '/admin-api/oa/user-salary-grant/confirm', data })
|
||||||
|
}
|
||||||
@@ -10,8 +10,8 @@
|
|||||||
>
|
>
|
||||||
<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="name">
|
<el-form-item label="方案名称" prop="percentageName">
|
||||||
<el-input v-model="formData.name" placeholder="请输入方案名称" clearable />
|
<el-input v-model="formData.percentageName" placeholder="请输入方案名称" clearable />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" :offset="0">
|
<el-col :span="12" :offset="0">
|
||||||
@@ -27,9 +27,9 @@
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-button type="primary" class="mb-10px" plain @click="handleAddRules"
|
<el-button type="primary" class="mb-10px" plain @click="handleAddRules">
|
||||||
>添加提成档位</el-button
|
添加提成档位
|
||||||
>
|
</el-button>
|
||||||
<el-row :gutter="20" class="mb-10px">
|
<el-row :gutter="20" class="mb-10px">
|
||||||
<el-col
|
<el-col
|
||||||
:span="24"
|
:span="24"
|
||||||
@@ -41,17 +41,17 @@
|
|||||||
<el-select v-model="item.ruleParam1" style="width: 100px">
|
<el-select v-model="item.ruleParam1" style="width: 100px">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="it in opts.percentage_param1"
|
v-for="it in opts.percentage_param1"
|
||||||
:key="Number(it.value)"
|
:key="it.value"
|
||||||
:label="it.label"
|
:label="it.label"
|
||||||
:value="Number(it.value)"
|
:value="it.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
<el-select class="ml-5px" v-model="item.ruleParam2" style="width: 100px">
|
<el-select class="ml-5px" v-model="item.ruleParam2" style="width: 100px">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="it in opts.percentage_param2"
|
v-for="it in opts.percentage_param2"
|
||||||
:key="Number(it.value)"
|
:key="it.value"
|
||||||
:label="it.label"
|
:label="it.label"
|
||||||
:value="Number(it.value)"
|
:value="it.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
<span class="ml-5px">满</span>
|
<span class="ml-5px">满</span>
|
||||||
@@ -67,9 +67,9 @@
|
|||||||
<el-select class="ml-5px" v-model="item.ruleParam4" style="width: 120px">
|
<el-select class="ml-5px" v-model="item.ruleParam4" style="width: 120px">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="it in opts.percentage_param4"
|
v-for="it in opts.percentage_param4"
|
||||||
:key="Number(it.value)"
|
:key="it.value"
|
||||||
:label="it.label"
|
:label="it.label"
|
||||||
:value="Number(it.value)"
|
:value="it.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
<div v-if="item.ruleParam4 == 2" class="inline-flex items-center">
|
<div v-if="item.ruleParam4 == 2" class="inline-flex items-center">
|
||||||
@@ -88,9 +88,9 @@
|
|||||||
<el-select class="ml-5px" v-model="item.ruleParam5" style="width: 100px">
|
<el-select class="ml-5px" v-model="item.ruleParam5" style="width: 100px">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="it in opts.percentage_param5"
|
v-for="it in opts.percentage_param5"
|
||||||
:key="Number(it.value)"
|
:key="it.value"
|
||||||
:label="it.label"
|
:label="it.label"
|
||||||
:value="Number(it.value)"
|
:value="it.value"
|
||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
<span class="ml-5px">结算</span>
|
<span class="ml-5px">结算</span>
|
||||||
@@ -105,6 +105,7 @@
|
|||||||
<template #suffix> % </template>
|
<template #suffix> % </template>
|
||||||
</el-input>
|
</el-input>
|
||||||
</div>
|
</div>
|
||||||
|
<Icon icon="ep:remove-filled" class="text-red-500 ml-20px" @click="handleRemove(index)" />
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
@@ -113,17 +114,17 @@
|
|||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12" :offset="0">
|
<el-col :span="12" :offset="0">
|
||||||
<el-form-item label="是否扣除其他支出" labelWidth="150px">
|
<el-form-item label="是否扣除其他支出" labelWidth="150px">
|
||||||
<el-radio-group v-model="formData.qitazhichu">
|
<el-radio-group v-model="formData.isDeductExtraPay">
|
||||||
<el-radio :label="0"> 是 </el-radio>
|
<el-radio :label="true"> 是 </el-radio>
|
||||||
<el-radio :label="1"> 否 </el-radio>
|
<el-radio :label="false"> 否 </el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</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="是否扣除售后" labelWidth="150px">
|
<el-form-item label="是否扣除售后" labelWidth="150px">
|
||||||
<el-radio-group v-model="formData.shouhou">
|
<el-radio-group v-model="formData.isDeductAfterSale">
|
||||||
<el-radio :label="0"> 是 </el-radio>
|
<el-radio :label="true"> 是 </el-radio>
|
||||||
<el-radio :label="1"> 否 </el-radio>
|
<el-radio :label="false"> 否 </el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -131,15 +132,15 @@
|
|||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
<el-col :span="12" :offset="0">
|
<el-col :span="12" :offset="0">
|
||||||
<el-form-item label="是否关联成交率" labelWidth="150px">
|
<el-form-item label="是否关联成交率" labelWidth="150px">
|
||||||
<el-radio-group v-model="formData.saleCommissionRelateDealConfig">
|
<el-radio-group v-model="formData.isRelateSignRate">
|
||||||
<el-radio label="true"> 是 </el-radio>
|
<el-radio :label="true"> 是 </el-radio>
|
||||||
<el-radio label="false"> 否 </el-radio>
|
<el-radio :label="false"> 否 </el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</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="提成计算时间" labelWidth="150px">
|
<el-form-item label="提成计算时间" labelWidth="150px">
|
||||||
<el-radio-group v-model="formData.jisuanshijian">
|
<el-radio-group v-model="formData.calculateType">
|
||||||
<el-radio :label="1">成交后</el-radio>
|
<el-radio :label="1">成交后</el-radio>
|
||||||
<el-radio :label="2">回款后</el-radio>
|
<el-radio :label="2">回款后</el-radio>
|
||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
@@ -148,7 +149,7 @@
|
|||||||
</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="关联规则" v-if="formData.saleCommissionRelateDealConfig == 'true'">
|
<el-form-item label="关联规则" v-if="formData.isRelateSignRate == 'true'">
|
||||||
<div>
|
<div>
|
||||||
<el-button @click="formData.saleCommissionRelateRulesConfig.push({})">
|
<el-button @click="formData.saleCommissionRelateRulesConfig.push({})">
|
||||||
新增规则
|
新增规则
|
||||||
@@ -198,7 +199,9 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="DialogCommissionPlan">
|
<script setup name="DialogCommissionPlan">
|
||||||
|
import * as PlanApi from '@/api/finance/plan'
|
||||||
const message = useMessage() // 消息弹窗
|
const message = useMessage() // 消息弹窗
|
||||||
|
const { t } = useI18n() // 国际化
|
||||||
|
|
||||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||||
const dialogTitle = ref('工资条设置')
|
const dialogTitle = ref('工资条设置')
|
||||||
@@ -206,7 +209,7 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加
|
|||||||
|
|
||||||
const formData = ref({})
|
const formData = ref({})
|
||||||
const rules = {
|
const rules = {
|
||||||
name: { required: true, message: '方案名称不可为空', trigger: 'blur' }
|
percentageName: { required: true, message: '方案名称不可为空', trigger: 'blur' }
|
||||||
}
|
}
|
||||||
const opts = ref({
|
const opts = ref({
|
||||||
percentage_param1: [],
|
percentage_param1: [],
|
||||||
@@ -224,16 +227,16 @@ const open = async (type, row) => {
|
|||||||
resetForm()
|
resetForm()
|
||||||
|
|
||||||
if (!opts.value.length) {
|
if (!opts.value.length) {
|
||||||
// const arr = await ClassApi.getCommissionParams()
|
const arr = await PlanApi.getCommissionParams()
|
||||||
// arr.map((item) => {
|
arr.map((item) => {
|
||||||
// opts.value[item.dictType].push(item)
|
opts.value[item.dictType].push(item)
|
||||||
// })
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if (row?.id) {
|
if (row?.percentageId) {
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
// formData.value = await UserApi.getUser(id)
|
formData.value = await PlanApi.getPlanDetail(row.percentageId)
|
||||||
} finally {
|
} finally {
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
@@ -244,32 +247,35 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
|||||||
/** 重置表单 */
|
/** 重置表单 */
|
||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
formData.value = {
|
formData.value = {
|
||||||
name: undefined,
|
percentageName: undefined,
|
||||||
percentageType: 1,
|
percentageType: 1,
|
||||||
rules: [
|
rules: [
|
||||||
{
|
{
|
||||||
ruleParam1: 1,
|
ruleParam1: '2',
|
||||||
ruleParam2: 1,
|
ruleParam2: '1',
|
||||||
ruleParam3: 0,
|
ruleParam3: 0,
|
||||||
ruleParam4: 1,
|
ruleParam4: '1',
|
||||||
ruleParam5: 1,
|
ruleParam5: '1',
|
||||||
ruleParam6: 10
|
ruleParam6: 10
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
saleCommissionRelateDealConfig: 'false',
|
isRelateSignRate: false,
|
||||||
saleCommissionRelateRulesConfig: []
|
saleCommissionRelateRulesConfig: [],
|
||||||
|
isDeductExtraPay: true,
|
||||||
|
isDeductAfterSale: true,
|
||||||
|
calculateType: 1
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleAddRules() {
|
function handleAddRules() {
|
||||||
formData.value.rules.push({
|
formData.value.rules.push({
|
||||||
ruleParam1: 1,
|
ruleParam1: '2',
|
||||||
ruleParam2: 1,
|
ruleParam2: '1',
|
||||||
ruleParam3: 0,
|
ruleParam3: 0,
|
||||||
ruleParam4: 1,
|
ruleParam4: '1',
|
||||||
ruleParam5: 1,
|
ruleParam5: '1',
|
||||||
ruleParam6: 1
|
ruleParam6: 0
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -283,11 +289,12 @@ const submitForm = async () => {
|
|||||||
// 提交请求
|
// 提交请求
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
|
const data = { ...formData.value }
|
||||||
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
|
||||||
@@ -297,6 +304,10 @@ const submitForm = async () => {
|
|||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleRemove(index) {
|
||||||
|
formData.value.rules.splice(index, 1)
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped></style>
|
<style lang="scss" scoped></style>
|
||||||
|
|||||||
@@ -2,7 +2,11 @@
|
|||||||
<div>
|
<div>
|
||||||
<el-form :model="searchForm" inline @submit.prevent>
|
<el-form :model="searchForm" inline @submit.prevent>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-input v-model="searchForm.name" placeholder="方案名称" @keyup.enter="handleQuery" />
|
<el-input
|
||||||
|
v-model="searchForm.percentageName"
|
||||||
|
placeholder="方案名称"
|
||||||
|
@keyup.enter="handleQuery"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-select
|
<el-select
|
||||||
@@ -30,7 +34,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
<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="name" width="240" />
|
<el-table-column label="方案名称" prop="percentageName" width="240" />
|
||||||
<el-table-column label="结算方式" prop="percentageType" width="150" />
|
<el-table-column label="结算方式" prop="percentageType" width="150" />
|
||||||
<el-table-column label="结算规则">
|
<el-table-column label="结算规则">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
@@ -61,7 +65,7 @@
|
|||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
link
|
link
|
||||||
@click="handleDelete(scope.row.id)"
|
@click="handleDelete(scope.row.percentageId)"
|
||||||
v-hasPermi="['finance:commission:delete']"
|
v-hasPermi="['finance:commission:delete']"
|
||||||
>
|
>
|
||||||
删除
|
删除
|
||||||
@@ -82,8 +86,14 @@
|
|||||||
|
|
||||||
<script name="CommissionPlan" setup>
|
<script name="CommissionPlan" setup>
|
||||||
import DialogPlan from './Comp/DialogPlan.vue'
|
import DialogPlan from './Comp/DialogPlan.vue'
|
||||||
|
import * as PlanApi from '@/api/finance/plan'
|
||||||
|
import { removeNullField } from '@/utils'
|
||||||
|
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
|
const { t } = useI18n() // 国际化
|
||||||
|
|
||||||
const searchForm = ref({
|
const searchForm = ref({
|
||||||
name: undefined,
|
percentageName: undefined,
|
||||||
status: undefined,
|
status: undefined,
|
||||||
pageNo: 1,
|
pageNo: 1,
|
||||||
pageSize: 20
|
pageSize: 20
|
||||||
@@ -106,10 +116,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
|
||||||
}
|
}
|
||||||
@@ -124,9 +133,9 @@ const handleStatusChange = async (row) => {
|
|||||||
try {
|
try {
|
||||||
// 修改状态的二次确认
|
// 修改状态的二次确认
|
||||||
const text = row.status === 0 ? '启用' : '停用'
|
const text = row.status === 0 ? '启用' : '停用'
|
||||||
await message.confirm('确认要"' + text + '""' + row.name + '"方案吗?')
|
await message.confirm('确认要"' + text + '""' + row.percentageName + '"方案吗?')
|
||||||
// 发起修改状态
|
// 发起修改状态
|
||||||
// await UserApi.updateUserStatus(row.id, row.status)
|
await PlanApi.updatePlanStatus({ percentageId: row.percentageId, status: row.status })
|
||||||
// 刷新列表
|
// 刷新列表
|
||||||
await getList()
|
await getList()
|
||||||
} catch {
|
} catch {
|
||||||
@@ -134,6 +143,19 @@ const handleStatusChange = async (row) => {
|
|||||||
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>
|
||||||
|
|||||||
@@ -13,22 +13,22 @@
|
|||||||
<el-divider direction="horizontal" content-position="left">应发</el-divider>
|
<el-divider direction="horizontal" content-position="left">应发</el-divider>
|
||||||
<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="dixin">
|
<el-form-item label="基本工资" prop="baseSalary">
|
||||||
<el-input-number v-model="formData.dixin" :min="0" :controls="false" />
|
<el-input-number v-model="formData.baseSalary" :min="0" :controls="false" />
|
||||||
</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="jiangjin">
|
<el-form-item label="奖金" prop="rewardSalary">
|
||||||
<el-input-number v-model="formData.jiangjin" :min="0" :controls="false" />
|
<el-input-number v-model="formData.rewardSalary" :min="0" :controls="false" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</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="tichengfangan">
|
<el-form-item label="提成方案" prop="planId">
|
||||||
<el-select v-model="formData.tichengfangan" placeholder="请选择" filterable>
|
<el-select v-model="formData.planId" placeholder="请选择" filterable>
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in tichengfanganOptions"
|
v-for="item in planOptions"
|
||||||
:key="item.value"
|
:key="item.value"
|
||||||
:label="item.label"
|
:label="item.label"
|
||||||
:value="item.value"
|
:value="item.value"
|
||||||
@@ -49,39 +49,39 @@
|
|||||||
</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="qitayingfa">
|
<el-form-item label="其他应发" prop="extraSalary">
|
||||||
<el-input-number v-model="formData.qitayingfa" :min="0" :controls="false" />
|
<el-input-number v-model="formData.extraSalary" :min="0" :controls="false" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
<el-divider direction="horizontal" content-position="left">应扣</el-divider>
|
<el-divider direction="horizontal" content-position="left">应扣</el-divider>
|
||||||
<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="jixiao">
|
<el-form-item label="绩效">
|
||||||
<el-input placeholder="生成后录入" disabled />
|
<el-input placeholder="生成后录入" disabled />
|
||||||
</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="kaoqin">
|
<el-form-item label="考勤">
|
||||||
<el-input placeholder="自动计算" disabled />
|
<el-input placeholder="自动计算" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</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="shebao">
|
<el-form-item label="社保" prop="socialDeduct">
|
||||||
<el-input-number v-model="formData.shebao" :min="0" :controls="false" />
|
<el-input-number v-model="formData.socialDeduct" :min="0" :controls="false" />
|
||||||
</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="gongjijin">
|
<el-form-item label="公积金" prop="accumulationFundDeduct">
|
||||||
<el-input-number v-model="formData.gongjijin" :min="0" :controls="false" />
|
<el-input-number v-model="formData.accumulationFundDeduct" :min="0" :controls="false" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</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="shuie">
|
<el-form-item label="税额">
|
||||||
<el-input placeholder="自动计算" disabled />
|
<el-input placeholder="自动计算" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -103,7 +103,8 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="DialogSalarySetting">
|
<script setup name="DialogSalarySetting">
|
||||||
// const message = useMessage() // 消息弹窗
|
import * as SalaryApi from '@/api/finance/salary'
|
||||||
|
const message = useMessage() // 消息弹窗
|
||||||
|
|
||||||
const dialogVisible = ref(false) // 弹窗的是否展示
|
const dialogVisible = ref(false) // 弹窗的是否展示
|
||||||
const dialogTitle = ref('工资条设置')
|
const dialogTitle = ref('工资条设置')
|
||||||
@@ -112,41 +113,40 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加
|
|||||||
const formData = ref({})
|
const formData = ref({})
|
||||||
|
|
||||||
const rules = {
|
const rules = {
|
||||||
dixin: { required: true, message: '基本工资不可为空', trigger: 'blur' }
|
baseSalary: { required: true, message: '基本工资不可为空', trigger: 'blur' }
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 打开弹窗 */
|
/** 打开弹窗 */
|
||||||
const open = async (row) => {
|
const open = async (row) => {
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
dialogTitle.value = `工资条设置-【${row.nickname}】`
|
dialogTitle.value = `工资条设置-【${row.name}】`
|
||||||
resetForm()
|
resetForm()
|
||||||
getOptions()
|
getOptions()
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
// formData.value = await UserApi.getUser(id)
|
formData.value = await SalaryApi.getSalaryDetail(id)
|
||||||
} finally {
|
} finally {
|
||||||
formLoading.value = false
|
formLoading.value = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗
|
||||||
|
|
||||||
const tichengfanganOptions = ref([])
|
const planOptions = ref([])
|
||||||
function getOptions() {
|
function getOptions() {
|
||||||
tichengfanganOptions.value = []
|
planOptions.value = []
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 重置表单 */
|
/** 重置表单 */
|
||||||
const resetForm = () => {
|
const resetForm = () => {
|
||||||
formData.value = {
|
formData.value = {
|
||||||
dixin: 0,
|
baseSalary: 0,
|
||||||
tichengfangan: undefined,
|
planId: undefined,
|
||||||
jiangjin: 0,
|
rewardSalary: 0,
|
||||||
qitayingfa: 0,
|
butie: 0,
|
||||||
jixiao: 0,
|
manqin: 0,
|
||||||
kaoqin: 0,
|
extraSalary: 0,
|
||||||
shebao: 0,
|
socialDeduct: 0,
|
||||||
gongjijin: 0,
|
accumulationFundDeduct: 0,
|
||||||
shuie: 0,
|
|
||||||
qitayingkou: 0
|
qitayingkou: 0
|
||||||
}
|
}
|
||||||
formRef.value?.resetFields()
|
formRef.value?.resetFields()
|
||||||
@@ -162,13 +162,13 @@ const submitForm = async () => {
|
|||||||
// 提交请求
|
// 提交请求
|
||||||
formLoading.value = true
|
formLoading.value = true
|
||||||
try {
|
try {
|
||||||
// const data = formData.value as unknown as UserApi.UserVO
|
const data = formData.value
|
||||||
// if (formType.value === 'create') {
|
if (formType.value === 'create') {
|
||||||
// await UserApi.createUser(data)
|
await SalaryApi.createSalary(data)
|
||||||
// message.success(t('common.createSuccess'))
|
message.success(t('common.createSuccess'))
|
||||||
// } else {
|
} else {
|
||||||
// await UserApi.updateUser(data)
|
await SalaryApi.updateSalary(data)
|
||||||
// }
|
}
|
||||||
message.success('配置成功')
|
message.success('配置成功')
|
||||||
dialogVisible.value = false
|
dialogVisible.value = false
|
||||||
// 发送操作成功的事件
|
// 发送操作成功的事件
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
<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="nickname" />
|
||||||
<el-table-column label="部门" key="deptName" prop="deptName" />
|
<el-table-column label="部门" key="deptName" prop="deptName" />
|
||||||
<el-table-column label="手机号码" prop="mobile" width="120" />
|
<el-table-column label="手机号码" prop="mobile" width="120" />
|
||||||
<el-table-column label="在职状态" prop="status" />
|
<el-table-column label="在职状态" prop="status" />
|
||||||
@@ -50,6 +50,9 @@
|
|||||||
|
|
||||||
<script name="EmployeeList" setup>
|
<script name="EmployeeList" setup>
|
||||||
import DialogSalary from './Comp/DialogSalary.vue'
|
import DialogSalary from './Comp/DialogSalary.vue'
|
||||||
|
import * as SalaryApi from '@/api/finance/salary'
|
||||||
|
import { removeNullField } from '@/utils'
|
||||||
|
|
||||||
const searchForm = ref({
|
const searchForm = ref({
|
||||||
name: undefined,
|
name: undefined,
|
||||||
status: 0,
|
status: 0,
|
||||||
@@ -74,10 +77,9 @@ const total = ref(0)
|
|||||||
const getList = async () => {
|
const getList = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
tableList.value = [1, 2]
|
const data = await SalaryApi.getSalaryPage(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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-tabs v-model="tabName">
|
<el-tabs v-model="tabName">
|
||||||
<el-tab-pane label="考勤方案" name="kqfa" v-if="checkPermi['per:setting:attendance-plan']">
|
<el-tab-pane label="考勤方案" name="kqfa" v-if="checkPermi(['per:setting:attendance-plan'])">
|
||||||
<AttendancePlan v-if="tabName == 'kqfa'" />
|
<AttendancePlan v-if="tabName == 'kqfa'" />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
</el-tabs>
|
</el-tabs>
|
||||||
|
|||||||
Reference in New Issue
Block a user