水电费

公积金缴纳账户 类型是对公
This commit is contained in:
SGK\17962 2025-08-27 16:44:47 +08:00
parent b9fa6eb66f
commit c3c13687a6
5 changed files with 196 additions and 166 deletions

View File

@ -12,7 +12,7 @@ declare namespace Api {
/** 所属大类ID */ /** 所属大类ID */
categoryId: CommonType.IdType; categoryId: CommonType.IdType;
/** 业务类型ID */ /** 业务类型ID */
typeId: CommonType.IdType; typeId: string;
/** 业务子类名称 */ /** 业务子类名称 */
name: string; name: string;
/** 业务子类状态 */ /** 业务子类状态 */

View File

@ -82,14 +82,14 @@ const {
// ellipsis: true, // ellipsis: true,
// resizable: true // resizable: true
// }, // },
// { {
// key: 'typeId', key: 'typeId',
// title: 'ID', title: '业务子类ID',
// align: 'center', align: 'center',
// minWidth: 120, minWidth: 120,
// ellipsis: true, ellipsis: true,
// resizable: true resizable: true
// }, },
{ {
key: 'name', key: 'name',
title: '业务子类名称', title: '业务子类名称',

View File

@ -2,8 +2,8 @@
import { computed, reactive, watch } from 'vue'; import { computed, reactive, watch } from 'vue';
import { fetchCreateSubcategory, fetchUpdateSubcategory } from '@/service/api/business/subcategory'; import { fetchCreateSubcategory, fetchUpdateSubcategory } from '@/service/api/business/subcategory';
import { useFormRules, useNaiveForm } from '@/hooks/common/form'; import { useFormRules, useNaiveForm } from '@/hooks/common/form';
import { $t } from '@/locales';
import {useDict} from "@/hooks/business/dict"; import {useDict} from "@/hooks/business/dict";
import { $t } from '@/locales';
defineOptions({ defineOptions({
name: 'SubcategoryOperateDrawer' name: 'SubcategoryOperateDrawer'
@ -15,7 +15,7 @@ interface Props {
/** the edit row data */ /** the edit row data */
rowData?: Api.Business.Subcategory | null; rowData?: Api.Business.Subcategory | null;
/** the category id */ /** the category id */
categoryId: string; categoryId: CommonType.IdType;
} }
const props = defineProps<Props>(); const props = defineProps<Props>();
@ -96,16 +96,16 @@ function closeDrawer() {
async function handleSubmit() { async function handleSubmit() {
await validate(); await validate();
const { id, categoryId, name, status,pricingRule } = model; const { id, categoryId, name,typeId, status,pricingRule } = model;
// request // request
if (props.operateType === 'add') { if (props.operateType === 'add') {
const { error } = await fetchCreateSubcategory({ categoryId, name, status,pricingRule }); const { error } = await fetchCreateSubcategory({ categoryId, name,typeId, status,pricingRule });
if (error) return; if (error) return;
} }
if (props.operateType === 'edit') { if (props.operateType === 'edit') {
const { error } = await fetchUpdateSubcategory({ id, categoryId, name, status,pricingRule }); const { error } = await fetchUpdateSubcategory({ id, categoryId, name,typeId, status,pricingRule });
if (error) return; if (error) return;
} }
@ -138,7 +138,7 @@ watch(visible, () => {
<NInput v-model:value="model.name" placeholder="请输入业务子类名称" /> <NInput v-model:value="model.name" placeholder="请输入业务子类名称" />
</NFormItem> </NFormItem>
<NFormItem label="业务子类id" path="typeId"> <NFormItem label="业务子类id" path="typeId">
<NInput v-model:value="model.typeId" placeholder="请输入业务子类id" /> <NInput v-model:value="model.typeId" :disabled="props.operateType === 'edit'" placeholder="请输入业务子类id" />
</NFormItem> </NFormItem>
<NFormItem label="状态" path="status"> <NFormItem label="状态" path="status">
<DictRadio v-model:value="model.status" dict-code="sys_normal_disable" /> <DictRadio v-model:value="model.status" dict-code="sys_normal_disable" />

View File

@ -117,14 +117,6 @@ const {
ellipsis: true, ellipsis: true,
resizable: true resizable: true
}, },
{
key: 'yxName',
title: '营销人员名称',
align: 'center',
minWidth: 120,
ellipsis: true,
resizable: true
},
{ {
key: 'jbName', key: 'jbName',
title: '经办人员名称', title: '经办人员名称',
@ -134,16 +126,24 @@ const {
resizable: true resizable: true
}, },
{ {
key: 'yxId', key: 'jbId',
title: '营销人员营销号', title: '经办人员营销号',
align: 'center', align: 'center',
minWidth: 120, minWidth: 120,
ellipsis: true, ellipsis: true,
resizable: true resizable: true
}, },
{ {
key: 'jbId', key: 'yxName',
title: '经办人员营销号', title: '营销人员名称',
align: 'center',
minWidth: 120,
ellipsis: true,
resizable: true
},
{
key: 'yxId',
title: '营销人员营销号',
align: 'center', align: 'center',
minWidth: 120, minWidth: 120,
ellipsis: true, ellipsis: true,
@ -314,7 +314,7 @@ const {
}, },
{ {
key: 'heatingNo', key: 'heatingNo',
title: '取暖费户号', title: '户号',
align: 'center', align: 'center',
minWidth: 120, minWidth: 120,
ellipsis: true, ellipsis: true,

View File

@ -87,7 +87,27 @@ function createDefaultModel(): Model {
}; };
} }
type RuleKey = Extract<keyof Model, 'subcategoryId' | 'jbName' | 'jbId' | 'yxName' | 'yxId' | 'subcategoryName' | 'date' | 'custPhoneNo' | 'custId' | 'custAcctNo' | 'custType'|'custName' | 'acquiringId' | 'heatingNo' >;// type RuleKey = Extract<
keyof Model,
| 'subcategoryId'
| 'jbName'
| 'jbId'
| 'yxName'
| 'yxId'
| 'subcategoryName'
| 'date'
| 'custPhoneNo'
| 'custId'
| 'custAcctNo'
| 'custType'
| 'custName'
| 'acquiringId'
| 'heatingNo'
| 'acquiringName'
| 'workplace'
| 'surplusAccountName'
| 'internetChannel'
>;
const phonePatternRule = { const phonePatternRule = {
pattern: /^1[3-9]\d{9}$/, pattern: /^1[3-9]\d{9}$/,
message: '请输入正确的手机号', message: '请输入正确的手机号',
@ -136,7 +156,11 @@ const rules: Record<RuleKey, App.Global.FormRule | App.Global.FormRule[]> = {
custId: [idCardPatternRule,createRequiredRule('客户手机号不能为空')], custId: [idCardPatternRule,createRequiredRule('客户手机号不能为空')],
custAcctNo: [accountPatternRule,createRequiredRule('账户号不能为空')], custAcctNo: [accountPatternRule,createRequiredRule('账户号不能为空')],
custType: createRequiredRule('客户类型不能为空'), custType: createRequiredRule('客户类型不能为空'),
acquiringId: acquiringIdPatternRule acquiringId: [acquiringIdPatternRule,createRequiredRule('综合收单商户号不能为空')],
acquiringName: createRequiredRule('综合收单商户名不能为空'),
workplace: createRequiredRule('职工所属单位不能为空'),
surplusAccountName: createRequiredRule('公积金缴纳账户名称不能为空'),
internetChannel: createRequiredRule('互联网渠道不能为空')
}; };
// const showMarketingFields = ref(false); // const showMarketingFields = ref(false);
@ -370,7 +394,7 @@ watch(
); );
// //
const isdisplaycustinfo = ref(false); const isdisplaymktinfo = ref(false);
const isdisplaycustTypeinfo = ref(false); const isdisplaycustTypeinfo = ref(false);
const isdisplaymagneticCardList = ref(false); const isdisplaymagneticCardList = ref(false);
const isdisplayacquiringName = ref(false); const isdisplayacquiringName = ref(false);
@ -385,18 +409,27 @@ watch(
() => model.subcategoryName, () => model.subcategoryName,
newVal => { newVal => {
// //
if(newVal === '新增综合收单商户(首月)'){ switch (newVal) {
case '新增综合收单商户(首月)':
isdisplaycustTypeinfo.value = true; isdisplaycustTypeinfo.value = true;
}else if(newVal === '智e通企业版'){ break;
case '智e通企业版':
case '公积金缴纳账户':
case '企业手机银行':
model.custType = '2'; model.custType = '2';
model.custId = '';
model.custPhoneNo = '';
isdisplaycustTypeinfo.value = false; isdisplaycustTypeinfo.value = false;
}else{ break;
default:
model.custType = '1'; model.custType = '1';
isdisplaycustTypeinfo.value = false; isdisplaycustTypeinfo.value = false;
break;
} }
switch (newVal) { switch (newVal) {
case '公积金缴纳账户': case '公积金缴纳账户':
isdisplaycustinfo.value = false; isdisplaymktinfo.value = true;
isdisplaymagneticCardList.value = false; isdisplaymagneticCardList.value = false;
isdisplayacquiringName.value = false; isdisplayacquiringName.value = false;
isdisplayacquiringId.value = false; isdisplayacquiringId.value = false;
@ -405,16 +438,9 @@ watch(
isdisplayworkplace.value = false; isdisplayworkplace.value = false;
isdisplaysurplusAccountName.value = true; isdisplaysurplusAccountName.value = true;
isdisplayheatingNo.value = false; isdisplayheatingNo.value = false;
model.custId = '';
model.custName = '';
model.custType = '';
model.custAcctNo = '';
model.custPhoneNo = '';
break; break;
case '磁条卡更换金融IC卡': case '磁条卡更换金融IC卡':
isdisplaycustinfo.value = true; isdisplaymktinfo.value = true;
model.custType = '1';
isdisplaymagneticCardList.value = true; isdisplaymagneticCardList.value = true;
isdisplayacquiringName.value = false; isdisplayacquiringName.value = false;
isdisplayacquiringId.value = false; isdisplayacquiringId.value = false;
@ -425,7 +451,7 @@ watch(
isdisplayheatingNo.value = false; isdisplayheatingNo.value = false;
break; break;
case '代收交警罚没款': case '代收交警罚没款':
isdisplaycustinfo.value = true; isdisplaymktinfo.value = true;
isdisplaymagneticCardList.value = false; isdisplaymagneticCardList.value = false;
isdisplayacquiringName.value = false; isdisplayacquiringName.value = false;
isdisplayacquiringId.value = false; isdisplayacquiringId.value = false;
@ -436,7 +462,7 @@ watch(
isdisplayheatingNo.value = false; isdisplayheatingNo.value = false;
break; break;
case '新增综合收单商户(首月)': case '新增综合收单商户(首月)':
isdisplaycustinfo.value = true; isdisplaymktinfo.value = true;
isdisplaymagneticCardList.value = false; isdisplaymagneticCardList.value = false;
isdisplayacquiringName.value = true; isdisplayacquiringName.value = true;
isdisplayacquiringId.value = true; isdisplayacquiringId.value = true;
@ -447,7 +473,7 @@ watch(
isdisplayheatingNo.value = false; isdisplayheatingNo.value = false;
break; break;
case '网上支付客户': case '网上支付客户':
isdisplaycustinfo.value = true; isdisplaymktinfo.value = true;
isdisplaymagneticCardList.value = false; isdisplaymagneticCardList.value = false;
isdisplayacquiringName.value = false; isdisplayacquiringName.value = false;
isdisplayacquiringId.value = false; isdisplayacquiringId.value = false;
@ -458,7 +484,7 @@ watch(
isdisplayheatingNo.value = false; isdisplayheatingNo.value = false;
break; break;
case '营销职工社保卡': case '营销职工社保卡':
isdisplaycustinfo.value = true; isdisplaymktinfo.value = true;
isdisplaymagneticCardList.value = false; isdisplaymagneticCardList.value = false;
isdisplayacquiringName.value = false; isdisplayacquiringName.value = false;
isdisplayacquiringId.value = false; isdisplayacquiringId.value = false;
@ -469,7 +495,9 @@ watch(
isdisplayheatingNo.value = false; isdisplayheatingNo.value = false;
break; break;
case '取暖费': case '取暖费':
isdisplaycustinfo.value = true; case '代收水费':
case '代收电费':
isdisplaymktinfo.value = true;
isdisplaymagneticCardList.value = false; isdisplaymagneticCardList.value = false;
isdisplayacquiringName.value = false; isdisplayacquiringName.value = false;
isdisplayacquiringId.value = false; isdisplayacquiringId.value = false;
@ -480,15 +508,15 @@ watch(
isdisplayheatingNo.value = true; isdisplayheatingNo.value = true;
break; break;
default: default:
isdisplaycustinfo.value = true; isdisplaymktinfo.value = false;
isdisplaymagneticCardList.value = false; // isdisplaymagneticCardList.value = false;
isdisplayacquiringName.value = false; // isdisplayacquiringName.value = false;
isdisplayacquiringId.value = false; // isdisplayacquiringId.value = false;
isdisplayinternetChannel.value = false; // isdisplayinternetChannel.value = false;
isdisplaytrafficList.value = false; // isdisplaytrafficList.value = false;
isdisplayworkplace.value = false; // isdisplayworkplace.value = false;
isdisplaysurplusAccountName.value = false; // isdisplaysurplusAccountName.value = false;
isdisplayheatingNo.value = false; // isdisplayheatingNo.value = false;
break; break;
} }
if( props.operateType==='add'){ if( props.operateType==='add'){
@ -651,7 +679,7 @@ watch(visible, () => {
</div> </div>
<!-- 客户信息部分 --> <!-- 客户信息部分 -->
<div v-if="isdisplaycustinfo" class="form-section"> <div class="form-section">
<NDivider class="section-divider">客户信息</NDivider> <NDivider class="section-divider">客户信息</NDivider>
<NGrid :cols="24" :x-gap="24" responsive="screen"> <NGrid :cols="24" :x-gap="24" responsive="screen">
<NGridItem v-if="isdisplaycustTypeinfo" :span="24"> <NGridItem v-if="isdisplaycustTypeinfo" :span="24">
@ -686,6 +714,7 @@ watch(visible, () => {
</NGridItem> </NGridItem>
</NGrid> </NGrid>
</div> </div>
<div class="form-section" v-if="isdisplaymktinfo">
<NDivider class="section-divider">营销信息</NDivider> <NDivider class="section-divider">营销信息</NDivider>
<NFormItem v-if="isdisplaymagneticCardList" label="磁条卡更换登记"> <NFormItem v-if="isdisplaymagneticCardList" label="磁条卡更换登记">
<NTable :bordered="true" :single-line="false"> <NTable :bordered="true" :single-line="false">
@ -786,9 +815,10 @@ watch(visible, () => {
<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" 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="请输入户号" />
</NFormItem> </NFormItem>
</div>
<div v-if="false" class="form-section"> <div v-if="false" class="form-section">
<NDivider class="section-divider">核对信息</NDivider> <NDivider class="section-divider">核对信息</NDivider>
<NFormItem label="核对状态" path="checkFlag"> <NFormItem label="核对状态" path="checkFlag">