Merge remote-tracking branch 'origin/main' into main
This commit is contained in:
commit
44dafe6068
@ -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'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -47,8 +47,6 @@ declare module "@elegant-router/types" {
|
|||||||
"original": "/original";
|
"original": "/original";
|
||||||
"original_batch-account-info": "/original/batch-account-info";
|
"original_batch-account-info": "/original/batch-account-info";
|
||||||
"original_batch-bank-card-info": "/original/batch-bank-card-info";
|
"original_batch-bank-card-info": "/original/batch-bank-card-info";
|
||||||
"original_batch-account-info": "/original/batch-account-info";
|
|
||||||
"original_batch-bank-card-info": "/original/batch-bank-card-info";
|
|
||||||
"original_dianfei": "/original/dianfei";
|
"original_dianfei": "/original/dianfei";
|
||||||
"original_e-m-banking": "/original/e-m-banking";
|
"original_e-m-banking": "/original/e-m-banking";
|
||||||
"original_gjj-payment": "/original/gjj-payment";
|
"original_gjj-payment": "/original/gjj-payment";
|
||||||
@ -218,9 +216,6 @@ declare module "@elegant-router/types" {
|
|||||||
| "system_client"
|
| "system_client"
|
||||||
| "system_config"
|
| "system_config"
|
||||||
| "system_dept-transfer"
|
| "system_dept-transfer"
|
||||||
| "report"
|
|
||||||
| "original_batch-account-info"
|
|
||||||
| "original_batch-bank-card-info"
|
|
||||||
| "system_dept"
|
| "system_dept"
|
||||||
| "system_dict"
|
| "system_dict"
|
||||||
| "system_menu"
|
| "system_menu"
|
||||||
@ -308,7 +303,7 @@ declare module "@elegant-router/types" {
|
|||||||
component: `view.${K}`;
|
component: `view.${K}`;
|
||||||
}
|
}
|
||||||
: never;
|
: never;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the center level route
|
* the center level route
|
||||||
*/
|
*/
|
||||||
@ -331,7 +326,7 @@ declare module "@elegant-router/types" {
|
|||||||
children: (CenterLevelRoute<GetChildRouteKey<K>> | LastLevelRoute<GetChildRouteKey<K>>)[];
|
children: (CenterLevelRoute<GetChildRouteKey<K>> | LastLevelRoute<GetChildRouteKey<K>>)[];
|
||||||
}
|
}
|
||||||
: never;
|
: never;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* the custom first level route
|
* the custom first level route
|
||||||
*/
|
*/
|
||||||
|
@ -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
|
||||||
|
@ -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">
|
||||||
|
@ -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"-->
|
||||||
|
@ -52,7 +52,7 @@ function createDefaultModel(): Model {
|
|||||||
employeeName: '',
|
employeeName: '',
|
||||||
marketingCode: '',
|
marketingCode: '',
|
||||||
addItem: 0,
|
addItem: 0,
|
||||||
recordMonth: dayjs().subtract(1, 'month').startOf('month').valueOf() ,
|
recordMonth: dayjs().subtract(1, 'month').startOf('month').format('YYYY-MM')
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -222,9 +222,9 @@ function disablePreviousDate(ts: number) {
|
|||||||
|
|
||||||
<NFormItem label="附加项" path="addItem">
|
<NFormItem label="附加项" path="addItem">
|
||||||
<NInput-number
|
<NInput-number
|
||||||
v-model:value="model.addItem"
|
:value="Number(model.addItem)"
|
||||||
|
@update:value="newVal => model.addItem = newVal"
|
||||||
:precision="0"
|
:precision="2"
|
||||||
step="1"
|
step="1"
|
||||||
placeholder="请输入附加项"
|
placeholder="请输入附加项"
|
||||||
/>
|
/>
|
||||||
@ -232,8 +232,9 @@ function disablePreviousDate(ts: number) {
|
|||||||
<NFormItem label="记录月份" path="recordMonth">
|
<NFormItem label="记录月份" path="recordMonth">
|
||||||
<!-- <NInput v-model:value="model.recordMonth" placeholder="请输入记录月份" />-->
|
<!-- <NInput v-model:value="model.recordMonth" placeholder="请输入记录月份" />-->
|
||||||
<NDatePicker
|
<NDatePicker
|
||||||
v-model:value="model.recordMonth"
|
v-model:formatted-value="model.recordMonth"
|
||||||
type="month"
|
type="month"
|
||||||
|
:value-format="'yyyy-MM'"
|
||||||
placeholder="请输入选择月份"
|
placeholder="请输入选择月份"
|
||||||
:is-date-disabled="disablePreviousDate"
|
:is-date-disabled="disablePreviousDate"
|
||||||
/>
|
/>
|
||||||
|
@ -237,7 +237,7 @@ const {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
// 如果只有magneticCardId但没有magneticCardList,则显示magneticCardId
|
// 如果只有magneticCardId但没有magneticCardList,则显示magneticCardId
|
||||||
return row.magneticCardId || '';
|
return '';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -293,7 +293,7 @@ const {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
// 如果只有trafficId但没有trafficList,则显示trafficId
|
// 如果只有trafficId但没有trafficList,则显示trafficId
|
||||||
return row.trafficId || '';
|
return '';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -484,9 +484,9 @@ function edit(dataId: CommonType.IdType) {
|
|||||||
handleEdit('dataId', dataId);
|
handleEdit('dataId', dataId);
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleImport() {
|
// function handleImport() {
|
||||||
openImportModal();
|
// openImportModal();
|
||||||
}
|
// }
|
||||||
|
|
||||||
function handleExport() {
|
function handleExport() {
|
||||||
download('/mps/market/export', searchParams, `营销数据管理_${new Date().getTime()}.xlsx`);
|
download('/mps/market/export', searchParams, `营销数据管理_${new Date().getTime()}.xlsx`);
|
||||||
@ -525,20 +525,20 @@ async function getSubcategoryOptions() {
|
|||||||
:loading="loading"
|
:loading="loading"
|
||||||
:show-add="hasAuth('mps:market:add')"
|
:show-add="hasAuth('mps:market:add')"
|
||||||
:show-delete="hasAuth('mps:market:remove')"
|
:show-delete="hasAuth('mps:market:remove')"
|
||||||
:show-export="hasAuth('mps:market:export')"
|
:show-export="false"
|
||||||
@add="handleAdd"
|
@add="handleAdd"
|
||||||
@delete="handleBatchDelete"
|
@delete="handleBatchDelete"
|
||||||
@export="handleExport"
|
@export="handleExport"
|
||||||
@refresh="getData"
|
@refresh="getData"
|
||||||
>
|
>
|
||||||
<template #after>
|
<!-- <template #after>-->
|
||||||
<NButton v-if="hasAuth('mps:market:export')" size="small" ghost @click="handleImport">
|
<!-- <NButton v-if="hasAuth('mps:market:export')" size="small" ghost @click="handleImport">-->
|
||||||
<template #icon>
|
<!-- <template #icon>-->
|
||||||
<SvgIcon local-icon="upload-rounded" class="text-icon"/>
|
<!-- <SvgIcon local-icon="upload-rounded" class="text-icon"/>-->
|
||||||
</template>
|
<!-- </template>-->
|
||||||
{{ $t('common.import') }}
|
<!-- {{ $t('common.import') }}-->
|
||||||
</NButton>
|
<!-- </NButton>-->
|
||||||
</template>
|
<!-- </template>-->
|
||||||
</TableHeaderOperation>
|
</TableHeaderOperation>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { computed, onMounted, reactive, ref, watch } from 'vue';
|
import { computed,defineComponent, onMounted, reactive, ref, watch } from 'vue';
|
||||||
import { fetchCreateMarket, fetchUpdateMarket } from '@/service/api/mps/market';
|
import { fetchCreateMarket, fetchUpdateMarket } from '@/service/api/mps/market';
|
||||||
import { fetchGetMuUserSelect } from '@/service/api/system';
|
import { fetchGetMuUserSelect } from '@/service/api/system';
|
||||||
import { useAuthStore } from '@/store/modules/auth';
|
import { useAuthStore } from '@/store/modules/auth';
|
||||||
@ -8,10 +8,13 @@ import { useDict } from '@/hooks/business/dict';
|
|||||||
import { $t } from '@/locales';
|
import { $t } from '@/locales';
|
||||||
import { useLoading } from '~/packages/hooks';
|
import { useLoading } from '~/packages/hooks';
|
||||||
|
|
||||||
|
|
||||||
defineOptions({
|
defineOptions({
|
||||||
name: 'MarketOperateDrawer'
|
name: 'MarketOperateDrawer'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
/** the type of operation */
|
/** the type of operation */
|
||||||
operateType: NaiveUI.TableOperateType;
|
operateType: NaiveUI.TableOperateType;
|
||||||
@ -136,6 +139,13 @@ const acquiringIdPatternRule = {
|
|||||||
trigger: 'change'
|
trigger: 'change'
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 交警处罚决定书编号长度限制规则
|
||||||
|
const onlyAllowCharNumber= (value: string) => !value || /^[a-zA-Z0-9]+$/.test(value);
|
||||||
|
//
|
||||||
|
const onlyAllowNumber= (value: string) => !value || /^\d+$/.test(value);
|
||||||
|
const noSideSpace= (value: string) => !value.startsWith(' ') && !value.endsWith(' ');
|
||||||
|
|
||||||
|
|
||||||
// const custTypeRule = computed(() => {
|
// const custTypeRule = computed(() => {
|
||||||
// // 当业务类型不是"公积金缴纳账户"时,客户类型为必填
|
// // 当业务类型不是"公积金缴纳账户"时,客户类型为必填
|
||||||
// if (model.subcategoryName !== '公积金缴纳账户') {
|
// if (model.subcategoryName !== '公积金缴纳账户') {
|
||||||
@ -754,19 +764,19 @@ watch(
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr v-for="(item, index) in model.magneticCardList" :key="index">
|
<tr v-for="(item, index) in model.magneticCardList" :key="index">
|
||||||
<td>
|
<td>
|
||||||
<NInputNumber
|
<NInput
|
||||||
v-model:value="item.oldCardNo"
|
v-model:value="item.oldCardNo"
|
||||||
placeholder="请输入老卡号"
|
placeholder="请输入老卡号"
|
||||||
:show-button="false"
|
:allow-input = "onlyAllowNumber"
|
||||||
:controls="false" style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<NInputNumber
|
<NInput
|
||||||
v-model:value="item.newCardNo"
|
v-model:value="item.newCardNo"
|
||||||
placeholder="请输入新卡号"
|
placeholder="请输入新卡号"
|
||||||
:show-button="false"
|
:allow-input = "onlyAllowNumber"
|
||||||
:controls="false" style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
@ -782,7 +792,7 @@ watch(
|
|||||||
</NTable>
|
</NTable>
|
||||||
</NFormItem>
|
</NFormItem>
|
||||||
<NFormItem v-if="isdisplayacquiringName" label="综合收单商户名" path="acquiringName">
|
<NFormItem v-if="isdisplayacquiringName" label="综合收单商户名" path="acquiringName">
|
||||||
<NInput v-model:value="model.acquiringName" placeholder="请输入综合收单商户名" />
|
<NInput v-model:value="model.acquiringName" :allow-input="noSideSpace" placeholder="请输入综合收单商户名" />
|
||||||
</NFormItem>
|
</NFormItem>
|
||||||
<NFormItem v-if="isdisplayacquiringId" label="综合收单商户号" path="acquiringId">
|
<NFormItem v-if="isdisplayacquiringId" label="综合收单商户号" path="acquiringId">
|
||||||
<NInput v-model:value="model.acquiringId" placeholder="请输入综合收单商户号" />
|
<NInput v-model:value="model.acquiringId" placeholder="请输入综合收单商户号" />
|
||||||
@ -812,16 +822,26 @@ watch(
|
|||||||
<tbody>
|
<tbody>
|
||||||
<tr v-for="(item, index) in model.trafficList || []" :key="index">
|
<tr v-for="(item, index) in model.trafficList || []" :key="index">
|
||||||
<td>
|
<td>
|
||||||
<NInputNumber
|
<NInput
|
||||||
v-model:value="item.trafficNo"
|
v-model:value="item.trafficNo"
|
||||||
placeholder="请输入决定书编号"
|
placeholder="请输入决定书编号"
|
||||||
:show-button="false"
|
:allow-input = "onlyAllowCharNumber"
|
||||||
:controls="false"
|
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
/>
|
/>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<NInputNumber v-model:value="item.trafficAmt" placeholder="请输入处罚金额" :min="0" style="width: 100%" />
|
<NInputNumber
|
||||||
|
v-model:value="item.trafficAmt"
|
||||||
|
placeholder="请输入处罚金额"
|
||||||
|
:min="0"
|
||||||
|
:precision="2"
|
||||||
|
:show-button="false"
|
||||||
|
style="width: 100%"
|
||||||
|
>
|
||||||
|
<template #suffix>
|
||||||
|
元
|
||||||
|
</template>
|
||||||
|
</NInputNumber>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<NButton text type="error" @click="removeTrafficItem(index)">删除</NButton>
|
<NButton text type="error" @click="removeTrafficItem(index)">删除</NButton>
|
||||||
@ -836,10 +856,10 @@ watch(
|
|||||||
</NTable>
|
</NTable>
|
||||||
</NFormItem>
|
</NFormItem>
|
||||||
<NFormItem v-if="isdisplayworkplace" label="职工所属单位" path="workplace">
|
<NFormItem v-if="isdisplayworkplace" label="职工所属单位" path="workplace">
|
||||||
<NInput v-model:value="model.workplace" placeholder="请输入职工所属单位" />
|
<NInput v-model:value="model.workplace" :allow-input="noSideSpace" placeholder="请输入职工所属单位" />
|
||||||
</NFormItem>
|
</NFormItem>
|
||||||
<NFormItem v-if="isdisplaysurplusAccountName" label="公积金缴纳账户名称" path="surplusAccountName">
|
<NFormItem v-if="isdisplaysurplusAccountName" label="公积金缴纳账户名称" path="surplusAccountName">
|
||||||
<NInput v-model:value="model.surplusAccountName" placeholder="请输入公积金缴纳账户名称" />
|
<NInput v-model:value="model.surplusAccountName" :allow-input="noSideSpace" placeholder="请输入公积金缴纳账户名称" />
|
||||||
</NFormItem>
|
</NFormItem>
|
||||||
<NFormItem v-if="isdisplayheatingNo" label="户号" path="heatingNo">
|
<NFormItem v-if="isdisplayheatingNo" label="户号" path="heatingNo">
|
||||||
<NInput v-model:value="model.heatingNo" placeholder="请输入户号" />
|
<NInput v-model:value="model.heatingNo" placeholder="请输入户号" />
|
||||||
|
@ -17,6 +17,9 @@ const props = withDefaults(defineProps<Props>(), {
|
|||||||
subcategoryIdOptions: () => []
|
subcategoryIdOptions: () => []
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const { options: mps_cust_type } = useDict('mps_cust_type');
|
||||||
|
|
||||||
|
|
||||||
interface Emits {
|
interface Emits {
|
||||||
(e: 'reset'): void;
|
(e: 'reset'): void;
|
||||||
(e: 'search'): void;
|
(e: 'search'): void;
|
||||||
@ -49,7 +52,7 @@ 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:8" label="业务类型" path="subcategoryName" class="pr-24px">
|
<NFormItemGi span="24" label="业务类型" path="subcategoryName" class="pr-24px">
|
||||||
<NSelect
|
<NSelect
|
||||||
v-model:value="model.subcategoryId"
|
v-model:value="model.subcategoryId"
|
||||||
filterable
|
filterable
|
||||||
@ -83,20 +86,20 @@ async function search() {
|
|||||||
<!-- <NFormItemGi span="24 s:12 m:6" label="部门id" path="deptId" class="pr-24px">-->
|
<!-- <NFormItemGi span="24 s:12 m:6" label="部门id" path="deptId" class="pr-24px">-->
|
||||||
<!-- <NInput v-model:value="model.deptId" placeholder="请输入部门id" />-->
|
<!-- <NInput v-model:value="model.deptId" placeholder="请输入部门id" />-->
|
||||||
<!-- </NFormItemGi>-->
|
<!-- </NFormItemGi>-->
|
||||||
<!-- <NFormItemGi span="24 s:12 m:6" label="客户类型(1-个人,2-对公)" path="custType" class="pr-24px">-->
|
<NFormItemGi span="24 s:12 m:6" label="客户类型" path="custType" class="pr-24px">
|
||||||
<!-- <NSelect-->
|
<NSelect
|
||||||
<!-- v-model:value="model.custType"-->
|
v-model:value="model.custType"
|
||||||
<!-- placeholder="请选择客户类型(1-个人,2-对公)"-->
|
placeholder="请选择客户类型(1-个人,2-对公)"
|
||||||
<!-- :options="[]"-->
|
:options="mps_cust_type"
|
||||||
<!-- clearable-->
|
clearable
|
||||||
<!-- />-->
|
/>
|
||||||
<!-- </NFormItemGi>-->
|
</NFormItemGi>
|
||||||
<!-- <NFormItemGi span="24 s:12 m:6" label="客户身份证号" path="custId" class="pr-24px">-->
|
<!-- <NFormItemGi span="24 s:12 m:6" label="客户身份证号" path="custId" class="pr-24px">-->
|
||||||
<!-- <NInput v-model:value="model.custId" placeholder="请输入客户身份证号" />-->
|
<!-- <NInput v-model:value="model.custId" placeholder="请输入客户身份证号" />-->
|
||||||
<!-- </NFormItemGi>-->
|
<!-- </NFormItemGi>-->
|
||||||
<!-- <NFormItemGi span="24 s:12 m:6" label="客户姓名" path="custName" class="pr-24px">-->
|
<NFormItemGi span="24 s:12 m:6" label="客户姓名" path="custName" class="pr-24px">
|
||||||
<!-- <NInput v-model:value="model.custName" placeholder="请输入客户姓名" />-->
|
<NInput v-model:value="model.custName" placeholder="请输入客户姓名" />
|
||||||
<!-- </NFormItemGi>-->
|
</NFormItemGi>
|
||||||
<!-- <NFormItemGi span="24 s:12 m:6" label="客户账号/卡号" path="custAcctNo" class="pr-24px">-->
|
<!-- <NFormItemGi span="24 s:12 m:6" label="客户账号/卡号" path="custAcctNo" class="pr-24px">-->
|
||||||
<!-- <NInput v-model:value="model.custAcctNo" placeholder="请输入客户账号/卡号" />-->
|
<!-- <NInput v-model:value="model.custAcctNo" placeholder="请输入客户账号/卡号" />-->
|
||||||
<!-- </NFormItemGi>-->
|
<!-- </NFormItemGi>-->
|
||||||
@ -127,7 +130,7 @@ async function search() {
|
|||||||
<!-- <NFormItemGi span="24 s:12 m:6" label="取暖费户号" path="heatingNo" class="pr-24px">-->
|
<!-- <NFormItemGi span="24 s:12 m:6" label="取暖费户号" path="heatingNo" class="pr-24px">-->
|
||||||
<!-- <NInput v-model:value="model.heatingNo" placeholder="请输入取暖费户号" />-->
|
<!-- <NInput v-model:value="model.heatingNo" placeholder="请输入取暖费户号" />-->
|
||||||
<!-- </NFormItemGi>-->
|
<!-- </NFormItemGi>-->
|
||||||
<NFormItemGi span="24 s:12 m:8" label="核对标志" path="checkFlag" class="pr-24px">
|
<NFormItemGi span="24 s:12 m:6" label="核对标志" path="checkFlag" class="pr-24px">
|
||||||
<NSelect v-model:value="model.checkFlag" :options="mpsCheckStatusOptions" placeholder="请选择核对状态" />
|
<NSelect v-model:value="model.checkFlag" :options="mpsCheckStatusOptions" placeholder="请选择核对状态" />
|
||||||
</NFormItemGi>
|
</NFormItemGi>
|
||||||
<!-- <NFormItemGi span="24 s:12 m:6" label="核对时间" path="checkTime" class="pr-24px">-->
|
<!-- <NFormItemGi span="24 s:12 m:6" label="核对时间" path="checkTime" class="pr-24px">-->
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { h, ref, watch } from 'vue';
|
import { h, ref, watch } from 'vue';
|
||||||
import type { UploadFileInfo } from 'naive-ui';
|
import type { UploadFileInfo } from 'naive-ui';
|
||||||
|
import dayjs from "dayjs";
|
||||||
import { getToken } from '@/store/modules/auth/shared';
|
import { getToken } from '@/store/modules/auth/shared';
|
||||||
import { useDownload } from '@/hooks/business/download';
|
import { useDownload } from '@/hooks/business/download';
|
||||||
import { getServiceBaseURL } from '@/utils/service';
|
import { getServiceBaseURL } from '@/utils/service';
|
||||||
@ -36,7 +37,8 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
const data = ref<Record<string, any>>({
|
const data = ref<Record<string, any>>({
|
||||||
updateSupport: false
|
updateSupport: false,
|
||||||
|
importMonth: dayjs().subtract(1, 'month').startOf('month').valueOf()
|
||||||
});
|
});
|
||||||
|
|
||||||
const fileList = ref<UploadFileInfo[]>([]);
|
const fileList = ref<UploadFileInfo[]>([]);
|
||||||
@ -98,6 +100,16 @@
|
|||||||
message.value = '';
|
message.value = '';
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
function disablePreviousDate(ts: number) {
|
||||||
|
// 只允许选择当前月或上个月
|
||||||
|
const currentMonthStart = new Date(new Date().getFullYear(), new Date().getMonth(), 1).getTime()
|
||||||
|
const prevMonthStart = new Date(new Date().getFullYear(), new Date().getMonth() - 1, 1).getTime()
|
||||||
|
return ts !== currentMonthStart && ts !== prevMonthStart
|
||||||
|
// const prevMonthStart = dayjs().subtract(1, 'month').startOf('month')
|
||||||
|
// // 禁用所有早于上个月1号的日期
|
||||||
|
// return ts < prevMonthStart.valueOf()
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
]]]
|
]]]
|
||||||
|
|
||||||
@ -143,7 +155,15 @@
|
|||||||
</NUploadDragger>
|
</NUploadDragger>
|
||||||
</NUpload>
|
</NUpload>
|
||||||
<div class="flex-center">
|
<div class="flex-center">
|
||||||
<NCheckbox v-model="data.updateSupport">{{ $t('common.updateExisting') }}</NCheckbox>
|
<!-- <NCheckbox v-model="data.updateSupport">{{ $t('common.updateExisting') }}</NCheckbox>-->
|
||||||
|
<!-- <n-divider vertical />-->
|
||||||
|
<NDatePicker
|
||||||
|
v-model:value="data.importMonth"
|
||||||
|
type="month"
|
||||||
|
:placeholder="$t('common.selectImportMonth')"
|
||||||
|
:is-date-disabled="disablePreviousDate"
|
||||||
|
disabled
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<NAlert v-if="message" :title="$t('common.importResult')" :type="success ? 'success' : 'error'" :bordered="false">
|
<NAlert v-if="message" :title="$t('common.importResult')" :type="success ? 'success' : 'error'" :bordered="false">
|
||||||
<template #default>
|
<template #default>
|
||||||
@ -152,7 +172,7 @@
|
|||||||
</NAlert>
|
</NAlert>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<NSpace justify="end" :size="16">
|
<NSpace justify="end" :size="16">
|
||||||
<NButton @click="handleDownloadTemplate">{{ $t('common.downloadTemplate') }}</NButton>
|
<!-- <NButton @click="handleDownloadTemplate">{{ $t('common.downloadTemplate') }}</NButton>-->
|
||||||
<NButton type="primary" @click="handleSubmit">{{ $t('common.import') }}</NButton>
|
<NButton type="primary" @click="handleSubmit">{{ $t('common.import') }}</NButton>
|
||||||
</NSpace>
|
</NSpace>
|
||||||
</template>
|
</template>
|
||||||
|
@ -115,7 +115,7 @@ function createDefaultModel(): Model {
|
|||||||
fixedTermWealthAmount: undefined,
|
fixedTermWealthAmount: undefined,
|
||||||
newHousingFundCustomerCount: undefined,
|
newHousingFundCustomerCount: undefined,
|
||||||
newHousingFundCustomerAmount: undefined,
|
newHousingFundCustomerAmount: undefined,
|
||||||
addItem: undefined,
|
addItem: 0.00,
|
||||||
totalCount: undefined,
|
totalCount: undefined,
|
||||||
totalAmount: undefined,
|
totalAmount: undefined,
|
||||||
recordDate: undefined,
|
recordDate: undefined,
|
||||||
@ -581,7 +581,7 @@ watch(visible, () => {
|
|||||||
<NInput v-model:value="model.newHousingFundCustomerAmount" placeholder="请输入新营销公积金缴存客户奖励金额" />
|
<NInput v-model:value="model.newHousingFundCustomerAmount" placeholder="请输入新营销公积金缴存客户奖励金额" />
|
||||||
</NFormItem>
|
</NFormItem>
|
||||||
<NFormItem label="附加项" path="addItem">
|
<NFormItem label="附加项" path="addItem">
|
||||||
<NInput-number v-model:value="model.addItem" placeholder="请输入附加项" />
|
<NInput-number v-model:value="model.addItem" placeholder="请输入附加项" disabled />
|
||||||
</NFormItem>
|
</NFormItem>
|
||||||
<NFormItem label="有效个数总计" path="totalCount">
|
<NFormItem label="有效个数总计" path="totalCount">
|
||||||
<NInput-number :min="0" v-model:value="model.totalCount" placeholder="请输入有效个数总计" />
|
<NInput-number :min="0" v-model:value="model.totalCount" placeholder="请输入有效个数总计" />
|
||||||
|
@ -168,7 +168,7 @@ public class BusinessSubcategoryServiceImpl implements IBusinessSubcategoryServi
|
|||||||
return baseMapper.selectSubcategoryList(new LambdaQueryWrapper<BusinessSubcategory>()
|
return baseMapper.selectSubcategoryList(new LambdaQueryWrapper<BusinessSubcategory>()
|
||||||
//.select(SysUser::getUserId, SysUser::getMktNo, SysUser::getNickName)
|
//.select(SysUser::getUserId, SysUser::getMktNo, SysUser::getNickName)
|
||||||
.select(BusinessSubcategory::getId, BusinessSubcategory::getName)
|
.select(BusinessSubcategory::getId, BusinessSubcategory::getName)
|
||||||
.ne( BusinessSubcategory::getTypeId, "BIZ006")//BIZ006 新增综合收单商户留存率提升(当季)不录入
|
// .ne( BusinessSubcategory::getTypeId, "BIZ006")//BIZ006 新增综合收单商户留存率提升(当季)不录入
|
||||||
.eq(BusinessSubcategory::getStatus, "0"));
|
.eq(BusinessSubcategory::getStatus, "0"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -180,6 +180,11 @@ public class MpsMarket extends TenantEntity {
|
|||||||
*/
|
*/
|
||||||
private String checkMsg;
|
private String checkMsg;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 创建时间
|
||||||
|
*/
|
||||||
|
private String entryDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除标志(0代表存在 1代表删除)
|
* 删除标志(0代表存在 1代表删除)
|
||||||
*/
|
*/
|
||||||
|
@ -3,6 +3,7 @@ package org.dromara.mps.service.impl;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.collection.CollectionUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
|
import cn.idev.excel.util.DateUtils;
|
||||||
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
|
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
|
||||||
import org.dromara.common.core.utils.MapstructUtils;
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
@ -178,6 +179,7 @@ public class MpsMarketServiceImpl implements IMpsMarketService {
|
|||||||
// }
|
// }
|
||||||
// MpsMarket add = mpsMarketConverter.convert(bo);
|
// MpsMarket add = mpsMarketConverter.convert(bo);
|
||||||
MpsMarket add = MapstructUtils.convert(bo, MpsMarket.class);
|
MpsMarket add = MapstructUtils.convert(bo, MpsMarket.class);
|
||||||
|
add.setEntryDate(DateUtils.format(new Date(), "yyyy_MM_dd"));
|
||||||
validEntityBeforeAdd(add);
|
validEntityBeforeAdd(add);
|
||||||
System.out.println("add:--->"+add);
|
System.out.println("add:--->"+add);
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package org.dromara.original.controller;
|
package org.dromara.original.controller;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
@ -7,6 +8,9 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.*;
|
import jakarta.validation.constraints.*;
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import org.dromara.common.core.enums.FormatsType;
|
||||||
|
import org.dromara.common.core.utils.DateUtils;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import org.dromara.common.excel.core.ExcelResult;
|
import org.dromara.common.excel.core.ExcelResult;
|
||||||
@ -79,8 +83,11 @@ public class OriginalBatchAccountInfoController extends BaseController {
|
|||||||
@Log(title = "批量账户信息查询(对公)", businessType = BusinessType.IMPORT)
|
@Log(title = "批量账户信息查询(对公)", businessType = BusinessType.IMPORT)
|
||||||
@SaCheckPermission("original:batchAccountInfo:import")
|
@SaCheckPermission("original:batchAccountInfo:import")
|
||||||
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
@PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
||||||
public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport) throws Exception {
|
public R<Void> importData(@RequestPart("file") MultipartFile file, boolean updateSupport,
|
||||||
ExcelResult<OriginalBatchAccountInfoImportVo> result = ExcelUtil.importExcel(file.getInputStream(), OriginalBatchAccountInfoImportVo.class, new OriginalBatchAccountInfoImportListener(updateSupport));
|
@RequestParam @DateTimeFormat(pattern = "yyyy-MM") Date importMonth) throws Exception {
|
||||||
|
String importTime = DateUtils.parseDateToStr(FormatsType.YYYY_MM,importMonth);
|
||||||
|
originalBatchAccountInfoService.deleteDataByMonth(importTime);
|
||||||
|
ExcelResult<OriginalBatchAccountInfoImportVo> result = ExcelUtil.importExcel(file.getInputStream(), OriginalBatchAccountInfoImportVo.class, new OriginalBatchAccountInfoImportListener(updateSupport,importTime));
|
||||||
return R.ok(result.getAnalysis());
|
return R.ok(result.getAnalysis());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,6 +38,7 @@ public class OriginalBatchAccountInfoImportListener extends AnalysisEventListene
|
|||||||
private final Boolean isUpdateSupport;
|
private final Boolean isUpdateSupport;
|
||||||
private final Long operUserId;
|
private final Long operUserId;
|
||||||
private int countN = 1;
|
private int countN = 1;
|
||||||
|
private final String importTime;
|
||||||
|
|
||||||
// 存储所有解析成功的对象
|
// 存储所有解析成功的对象
|
||||||
private final Collection<OriginalBatchAccountInfo> successList = new ArrayList<>();
|
private final Collection<OriginalBatchAccountInfo> successList = new ArrayList<>();
|
||||||
@ -47,10 +48,11 @@ public class OriginalBatchAccountInfoImportListener extends AnalysisEventListene
|
|||||||
//private final Collection<Pair<OriginalBatchAccountInfoImportVo, String>> failureList = new ArrayList<>();
|
//private final Collection<Pair<OriginalBatchAccountInfoImportVo, String>> failureList = new ArrayList<>();
|
||||||
private final Collection<Pair<Integer, String>> failureList = new ArrayList<>();
|
private final Collection<Pair<Integer, String>> failureList = new ArrayList<>();
|
||||||
|
|
||||||
public OriginalBatchAccountInfoImportListener(Boolean isUpdateSupport) {
|
public OriginalBatchAccountInfoImportListener(Boolean isUpdateSupport, String importTime) {
|
||||||
this.originalBatchAccountInfoService = SpringUtils.getBean(IOriginalBatchAccountInfoService.class);
|
this.originalBatchAccountInfoService = SpringUtils.getBean(IOriginalBatchAccountInfoService.class);
|
||||||
this.isUpdateSupport = isUpdateSupport;
|
this.isUpdateSupport = isUpdateSupport;
|
||||||
this.operUserId = LoginHelper.getUserId();
|
this.operUserId = LoginHelper.getUserId();
|
||||||
|
this.importTime = importTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -66,7 +68,7 @@ public class OriginalBatchAccountInfoImportListener extends AnalysisEventListene
|
|||||||
|
|
||||||
// 2. 转换为业务对象
|
// 2. 转换为业务对象
|
||||||
OriginalBatchAccountInfo originalBatchAccountInfo = BeanUtil.toBean(originalBatchAccountInfoImportVo, OriginalBatchAccountInfo.class);
|
OriginalBatchAccountInfo originalBatchAccountInfo = BeanUtil.toBean(originalBatchAccountInfoImportVo, OriginalBatchAccountInfo.class);
|
||||||
|
originalBatchAccountInfo.setImportTime(importTime);
|
||||||
// 3. 添加到成功列表(稍后批量处理)
|
// 3. 添加到成功列表(稍后批量处理)
|
||||||
successList.add(originalBatchAccountInfo);
|
successList.add(originalBatchAccountInfo);
|
||||||
|
|
||||||
|
@ -72,4 +72,6 @@ public interface IOriginalBatchAccountInfoService {
|
|||||||
* @return 是否删除成功
|
* @return 是否删除成功
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
Boolean deleteDataByMonth(String importTime);
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.original.domain.OriginalTraffic;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.dromara.original.domain.bo.OriginalBatchAccountInfoBo;
|
import org.dromara.original.domain.bo.OriginalBatchAccountInfoBo;
|
||||||
import org.dromara.original.domain.vo.OriginalBatchAccountInfoVo;
|
import org.dromara.original.domain.vo.OriginalBatchAccountInfoVo;
|
||||||
@ -194,4 +195,9 @@ public class OriginalBatchAccountInfoServiceImpl implements IOriginalBatchAccoun
|
|||||||
}
|
}
|
||||||
return baseMapper.deleteByIds(ids) > 0;
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean deleteDataByMonth(String importTime) {
|
||||||
|
return baseMapper.delete(new LambdaQueryWrapper<OriginalBatchAccountInfo>().eq(OriginalBatchAccountInfo::getImportTime, importTime))>0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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查询所有子部门数(正常状态)
|
||||||
*
|
*
|
||||||
|
@ -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查询部门名称
|
||||||
*
|
*
|
||||||
|
@ -23,6 +23,8 @@ import org.dromara.common.core.utils.*;
|
|||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
import org.dromara.common.satoken.utils.LoginHelper;
|
||||||
|
import org.dromara.mps.domain.MpsMarket;
|
||||||
|
import org.dromara.mps.mapper.MpsMarketMapper;
|
||||||
import org.dromara.system.domain.*;
|
import org.dromara.system.domain.*;
|
||||||
import org.dromara.system.domain.bo.SysUserBo;
|
import org.dromara.system.domain.bo.SysUserBo;
|
||||||
import org.dromara.system.domain.vo.SysPostVo;
|
import org.dromara.system.domain.vo.SysPostVo;
|
||||||
@ -55,6 +57,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
|
|||||||
private final SysPostMapper postMapper;
|
private final SysPostMapper postMapper;
|
||||||
private final SysUserRoleMapper userRoleMapper;
|
private final SysUserRoleMapper userRoleMapper;
|
||||||
private final SysUserPostMapper userPostMapper;
|
private final SysUserPostMapper userPostMapper;
|
||||||
|
private final MpsMarketMapper mpsMarketMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TableDataInfo<SysUserVo> selectPageUserList(SysUserBo user, PageQuery pageQuery) {
|
public TableDataInfo<SysUserVo> selectPageUserList(SysUserBo user, PageQuery pageQuery) {
|
||||||
@ -513,6 +516,9 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
|
|||||||
*/
|
*/
|
||||||
private void insertUserPost(SysUserBo user, boolean clear) {
|
private void insertUserPost(SysUserBo user, boolean clear) {
|
||||||
Long[] posts = user.getPostIds();
|
Long[] posts = user.getPostIds();
|
||||||
|
if (posts.length >1) {
|
||||||
|
throw new ServiceException("用户" + user.getUserName() + "不能添加多个岗位");
|
||||||
|
}
|
||||||
if (ArrayUtil.isNotEmpty(posts)) {
|
if (ArrayUtil.isNotEmpty(posts)) {
|
||||||
if (clear) {
|
if (clear) {
|
||||||
// 删除用户与岗位关联
|
// 删除用户与岗位关联
|
||||||
@ -599,6 +605,12 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public int deleteUserById(Long userId) {
|
public int deleteUserById(Long userId) {
|
||||||
|
SysUserVo user = selectUserById(userId);
|
||||||
|
//校验是否有营销数据,若yxid或jbid等于user.getMktNo(),则提示用户有营销数据,请先删除营销数据
|
||||||
|
if (mpsMarketMapper.selectCount(new LambdaQueryWrapper<MpsMarket>().eq(MpsMarket::getYxId, user.getMktNo())) > 0 ||
|
||||||
|
mpsMarketMapper.selectCount(new LambdaQueryWrapper<MpsMarket>().eq(MpsMarket::getJbId, user.getMktNo())) > 0) {
|
||||||
|
throw new ServiceException("用户有营销数据,请先删除营销数据");
|
||||||
|
};
|
||||||
// 删除用户与角色关联
|
// 删除用户与角色关联
|
||||||
userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
|
userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().eq(SysUserRole::getUserId, userId));
|
||||||
// 删除用户与岗位表
|
// 删除用户与岗位表
|
||||||
@ -623,6 +635,12 @@ public class SysUserServiceImpl implements ISysUserService, UserService {
|
|||||||
for (Long userId : userIds) {
|
for (Long userId : userIds) {
|
||||||
checkUserAllowed(userId);
|
checkUserAllowed(userId);
|
||||||
checkUserDataScope(userId);
|
checkUserDataScope(userId);
|
||||||
|
SysUserVo user = selectUserById(userId);
|
||||||
|
//校验是否有营销数据,若yxid或jbid等于user.getMktNo(),则提示用户有营销数据,请先删除营销数据
|
||||||
|
if (mpsMarketMapper.selectCount(new LambdaQueryWrapper<MpsMarket>().eq(MpsMarket::getYxId, user.getMktNo())) > 0 ||
|
||||||
|
mpsMarketMapper.selectCount(new LambdaQueryWrapper<MpsMarket>().eq(MpsMarket::getJbId, user.getMktNo())) > 0) {
|
||||||
|
throw new ServiceException("用户有营销数据,请先删除营销数据");
|
||||||
|
};
|
||||||
}
|
}
|
||||||
List<Long> ids = List.of(userIds);
|
List<Long> ids = List.of(userIds);
|
||||||
// 删除用户与角色关联
|
// 删除用户与角色关联
|
||||||
|
Loading…
Reference in New Issue
Block a user