分成比例页面 支行下拉选,

增加部门选择框:部门名+网点号
This commit is contained in:
zhuangdashia 2025-09-01 16:08:37 +08:00
parent 1d49ccea4f
commit 0bee6780ea
7 changed files with 113 additions and 19 deletions

View File

@ -49,3 +49,11 @@ export function fetchGetDeptSelect() {
method: 'get' method: 'get'
}); });
} }
/** 获取部门选择框列表 */
export function fetchGetDeptBranchIdSelect() {
return request<Api.System.Dept[]>({
url: '/system/dept/optionselectBranchId',
method: 'get'
});
}

View File

@ -1,8 +1,9 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed, reactive, watch } from 'vue'; import {computed, onMounted, reactive, ref, watch} from 'vue';
import { fetchCreatePercentage, fetchUpdatePercentage } from '@/service/api/business/percentage'; import { fetchCreatePercentage, fetchUpdatePercentage } from '@/service/api/business/percentage';
import { useFormRules, useNaiveForm } from '@/hooks/common/form'; import { useFormRules, useNaiveForm } from '@/hooks/common/form';
import { $t } from '@/locales'; import { $t } from '@/locales';
import {fetchGetDeptBranchIdSelect} from "@/service/api/system";
defineOptions({ defineOptions({
name: 'PercentageOperateDrawer' name: 'PercentageOperateDrawer'
@ -142,19 +143,47 @@ const displayJbPercent = computed({
set: (val) => { set: (val) => {
model.jbPercent = val ? val / 100 : 0 model.jbPercent = val ? val / 100 : 0
} }
}) });
onMounted(() => {
getDeptIdOptions()
});
const deptIdOptions = ref<CommonType.Option<CommonType.IdType>[]>([]);
//
async function getDeptIdOptions(){
const { error, data } = await fetchGetDeptBranchIdSelect();
if (!error) {
deptIdOptions.value = data.map(item => ({
label: item.deptName,
value: item.deptCategory
}));
}
}
function handleDeptUpdate(value: string, option: CommonType.Option<CommonType.IdType>) {
model.branchId = value;
model.branchName = option.label;
}
</script> </script>
<template> <template>
<NDrawer v-model:show="visible" :title="title" display-directive="show" :width="800" class="max-w-90%"> <NDrawer v-model:show="visible" :title="title" display-directive="show" :width="800" class="max-w-90%">
<NDrawerContent :title="title" :native-scrollbar="false" closable> <NDrawerContent :title="title" :native-scrollbar="false" closable>
<NForm ref="formRef" :model="model" :rules="rules"> <NForm ref="formRef" :model="model" :rules="rules">
<NFormItem label="支行代码" path="branchId">
<NInput v-model:value="model.branchId" placeholder="请输入支行代码" />
</NFormItem>
<NFormItem label="支行名称" path="branchName"> <NFormItem label="支行名称" path="branchName">
<NInput v-model:value="model.branchName" placeholder="请输入支行名称" /> <!-- <NInput v-model:value="model.branchName" placeholder="请输入支行名称" />-->
<NSelect
v-model:value="model.branchName"
filterable
placeholder="选择支行"
:options="deptIdOptions"
clearable
@update:value="handleDeptUpdate"
/>
</NFormItem> </NFormItem>
<NFormItem label="支行代码" path="branchId">
<NInput v-model:value="model.branchId" disabled placeholder="请输入支行代码" />
</NFormItem>
<NFormItem label="营销人员分成比例" path="yxPercent"> <NFormItem label="营销人员分成比例" path="yxPercent">
<!-- <NInput v-model:value="model.yxPercent" placeholder="请输入营销人员分成比例" />--> <!-- <NInput v-model:value="model.yxPercent" placeholder="请输入营销人员分成比例" />-->
<NInput-number <NInput-number

View File

@ -1,7 +1,8 @@
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue'; import {onMounted, ref} from 'vue';
import { useNaiveForm } from '@/hooks/common/form'; import { useNaiveForm } from '@/hooks/common/form';
import { $t } from '@/locales'; import { $t } from '@/locales';
import {fetchGetDeptBranchIdSelect} from "@/service/api/system";
defineOptions({ defineOptions({
name: 'PercentageSearch' name: 'PercentageSearch'
@ -30,6 +31,26 @@ async function search() {
await validate(); await validate();
emit('search'); emit('search');
} }
onMounted(() => {
getDeptIdOptions()
});
const deptIdOptions = ref<CommonType.Option<CommonType.IdType>[]>([]);
//
async function getDeptIdOptions(){
const { error, data } = await fetchGetDeptBranchIdSelect();
if (!error) {
deptIdOptions.value = data.map(item => ({
label: item.deptName,
value: item.deptCategory
}));
}
}
function handleDeptUpdate(value: string, option: CommonType.Option<CommonType.IdType>) {
model.value.branchId = value;
// model.value.branchName = option.label;
}
</script> </script>
<template> <template>
@ -38,18 +59,28 @@ async function search() {
<NCollapseItem :title="$t('common.search')" name="user-search"> <NCollapseItem :title="$t('common.search')" name="user-search">
<NForm ref="formRef" :model="model" label-placement="left" :label-width="80"> <NForm ref="formRef" :model="model" label-placement="left" :label-width="80">
<NGrid responsive="screen" item-responsive> <NGrid responsive="screen" item-responsive>
<NFormItemGi span="24 s:12 m:6" label="支行名称" path="branchName" class="pr-24px">
<!-- <NInput v-model:value="model.branchName" placeholder="请输入支行名称" />-->
<NSelect
v-model:value="model.branchName"
filterable
placeholder="选择支行"
:options="deptIdOptions"
clearable
@update:value="handleDeptUpdate"
/>
</NFormItemGi>
<NFormItemGi span="24 s:12 m:6" label="支行代码" path="branchId" class="pr-24px"> <NFormItemGi span="24 s:12 m:6" label="支行代码" path="branchId" class="pr-24px">
<NInput v-model:value="model.branchId" placeholder="请输入支行代码" /> <NInput v-model:value="model.branchId" placeholder="请输入支行代码" />
</NFormItemGi> </NFormItemGi>
<NFormItemGi span="24 s:12 m:6" label="支行名称" path="branchName" class="pr-24px">
<NInput v-model:value="model.branchName" placeholder="请输入支行名称" /> <!-- <NFormItemGi span="24 s:12 m:6" label="营销人员分成比例" path="yxPercent" class="pr-24px">-->
</NFormItemGi> <!-- <NInput v-model:value="model.yxPercent" placeholder="请输入营销人员分成比例" />-->
<NFormItemGi span="24 s:12 m:6" label="营销人员分成比例" path="yxPercent" class="pr-24px"> <!-- </NFormItemGi>-->
<NInput v-model:value="model.yxPercent" placeholder="请输入营销人员分成比例" /> <!-- <NFormItemGi span="24 s:12 m:6" label="经办人员分成比例" path="jbPercent" class="pr-24px">-->
</NFormItemGi> <!-- <NInput v-model:value="model.jbPercent" placeholder="请输入经办人员分成比例" />-->
<NFormItemGi span="24 s:12 m:6" label="经办人员分成比例" path="jbPercent" class="pr-24px"> <!-- </NFormItemGi>-->
<NInput v-model:value="model.jbPercent" placeholder="请输入经办人员分成比例" />
</NFormItemGi>
<NFormItemGi span="24" class="pr-24px"> <NFormItemGi span="24" class="pr-24px">
<NSpace class="w-full" justify="end"> <NSpace class="w-full" justify="end">
<NButton @click="reset"> <NButton @click="reset">

View File

@ -81,9 +81,9 @@ async function search() {
<!-- <NFormItemGi span="24 s:12 m:6" label="营销人员营销号" path="yxId" class="pr-24px">--> <!-- <NFormItemGi span="24 s:12 m:6" label="营销人员营销号" path="yxId" class="pr-24px">-->
<!-- <NInput v-model:value="model.yxId" placeholder="请输入营销人员营销号" />--> <!-- <NInput v-model:value="model.yxId" placeholder="请输入营销人员营销号" />-->
<!-- </NFormItemGi>--> <!-- </NFormItemGi>-->
<!-- <NFormItemGi span="24 s:12 m:6" label="经办人员营销号" path="jbId" class="pr-24px">--> <NFormItemGi span="24 s:12 m:6" label="营销号" path="jbId" class="pr-24px">
<!-- <NInput v-model:value="model.jbId" placeholder="请输入经办人员营销号" />--> <NInput v-model:value="model.jbId" placeholder="请输入经办人员营销号" />
<!-- </NFormItemGi>--> </NFormItemGi>
<!-- <NFormItemGi span="24 s:12 m:6" label="数据日期" path="date" class="pr-24px">--> <!-- <NFormItemGi span="24 s:12 m:6" label="数据日期" path="date" class="pr-24px">-->
<!-- <NDatePicker--> <!-- <NDatePicker-->
<!-- v-model:formatted-value="model.date"--> <!-- v-model:formatted-value="model.date"-->

View File

@ -140,4 +140,15 @@ public class SysDeptController extends BaseController {
return R.ok(deptService.selectDeptByIds(deptIds == null ? null : List.of(deptIds))); return R.ok(deptService.selectDeptByIds(deptIds == null ? null : List.of(deptIds)));
} }
/**
* 获取部门选择框列表
*
* @param deptIds 部门ID串
*/
@SaCheckPermission("system:dept:query")
@GetMapping("/optionselectBranchId")
public R<List<SysDeptVo>> optionselectBranchId(@RequestParam(required = false) Long[] deptIds) {
return R.ok(deptService.selectDeptCatByIds(deptIds == null ? null : List.of(deptIds)));
}
} }

View File

@ -74,6 +74,13 @@ public interface ISysDeptService {
*/ */
List<SysDeptVo> selectDeptByIds(List<Long> deptIds); List<SysDeptVo> selectDeptByIds(List<Long> deptIds);
/**
* 通过部门id查网点号
* @param deptIds
* @return
*/
List<SysDeptVo> selectDeptCatByIds(List<Long> deptIds);
/** /**
* 根据ID查询所有子部门数正常状态 * 根据ID查询所有子部门数正常状态
* *

View File

@ -193,6 +193,14 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService {
.in(CollUtil.isNotEmpty(deptIds), SysDept::getDeptId, deptIds)); .in(CollUtil.isNotEmpty(deptIds), SysDept::getDeptId, deptIds));
} }
@Override
public List<SysDeptVo> selectDeptCatByIds(List<Long> deptIds) {
return baseMapper.selectDeptList(new LambdaQueryWrapper<SysDept>()
.select(SysDept::getDeptCategory, SysDept::getDeptName, SysDept::getLeader)
.eq(SysDept::getStatus, SystemConstants.NORMAL)
.in(CollUtil.isNotEmpty(deptIds), SysDept::getDeptId, deptIds));
}
/** /**
* 通过部门ID查询部门名称 * 通过部门ID查询部门名称
* *