水电费

公积金缴纳账户 类型是对公
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 */
categoryId: CommonType.IdType;
/** 业务类型ID */
typeId: CommonType.IdType;
typeId: string;
/** 业务子类名称 */
name: string;
/** 业务子类状态 */

View File

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

View File

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

View File

@ -117,14 +117,6 @@ const {
ellipsis: true,
resizable: true
},
{
key: 'yxName',
title: '营销人员名称',
align: 'center',
minWidth: 120,
ellipsis: true,
resizable: true
},
{
key: 'jbName',
title: '经办人员名称',
@ -134,16 +126,24 @@ const {
resizable: true
},
{
key: 'yxId',
title: '营销人员营销号',
key: 'jbId',
title: '经办人员营销号',
align: 'center',
minWidth: 120,
ellipsis: true,
resizable: true
},
{
key: 'jbId',
title: '经办人员营销号',
key: 'yxName',
title: '营销人员名称',
align: 'center',
minWidth: 120,
ellipsis: true,
resizable: true
},
{
key: 'yxId',
title: '营销人员营销号',
align: 'center',
minWidth: 120,
ellipsis: true,
@ -314,7 +314,7 @@ const {
},
{
key: 'heatingNo',
title: '取暖费户号',
title: '户号',
align: 'center',
minWidth: 120,
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 = {
pattern: /^1[3-9]\d{9}$/,
message: '请输入正确的手机号',
@ -136,7 +156,11 @@ const rules: Record<RuleKey, App.Global.FormRule | App.Global.FormRule[]> = {
custId: [idCardPatternRule,createRequiredRule('客户手机号不能为空')],
custAcctNo: [accountPatternRule,createRequiredRule('账户号不能为空')],
custType: createRequiredRule('客户类型不能为空'),
acquiringId: acquiringIdPatternRule
acquiringId: [acquiringIdPatternRule,createRequiredRule('综合收单商户号不能为空')],
acquiringName: createRequiredRule('综合收单商户名不能为空'),
workplace: createRequiredRule('职工所属单位不能为空'),
surplusAccountName: createRequiredRule('公积金缴纳账户名称不能为空'),
internetChannel: createRequiredRule('互联网渠道不能为空')
};
// const showMarketingFields = ref(false);
@ -370,7 +394,7 @@ watch(
);
//
const isdisplaycustinfo = ref(false);
const isdisplaymktinfo = ref(false);
const isdisplaycustTypeinfo = ref(false);
const isdisplaymagneticCardList = ref(false);
const isdisplayacquiringName = ref(false);
@ -385,18 +409,27 @@ watch(
() => model.subcategoryName,
newVal => {
//
if(newVal === '新增综合收单商户(首月)'){
isdisplaycustTypeinfo.value = true;
}else if(newVal === '智e通企业版'){
model.custType = '2';
isdisplaycustTypeinfo.value = false;
}else{
model.custType = '1';
isdisplaycustTypeinfo.value = false;
switch (newVal) {
case '新增综合收单商户(首月)':
isdisplaycustTypeinfo.value = true;
break;
case '智e通企业版':
case '公积金缴纳账户':
case '企业手机银行':
model.custType = '2';
model.custId = '';
model.custPhoneNo = '';
isdisplaycustTypeinfo.value = false;
break;
default:
model.custType = '1';
isdisplaycustTypeinfo.value = false;
break;
}
switch (newVal) {
case '公积金缴纳账户':
isdisplaycustinfo.value = false;
isdisplaymktinfo.value = true;
isdisplaymagneticCardList.value = false;
isdisplayacquiringName.value = false;
isdisplayacquiringId.value = false;
@ -405,16 +438,9 @@ watch(
isdisplayworkplace.value = false;
isdisplaysurplusAccountName.value = true;
isdisplayheatingNo.value = false;
model.custId = '';
model.custName = '';
model.custType = '';
model.custAcctNo = '';
model.custPhoneNo = '';
break;
case '磁条卡更换金融IC卡':
isdisplaycustinfo.value = true;
model.custType = '1';
isdisplaymktinfo.value = true;
isdisplaymagneticCardList.value = true;
isdisplayacquiringName.value = false;
isdisplayacquiringId.value = false;
@ -425,7 +451,7 @@ watch(
isdisplayheatingNo.value = false;
break;
case '代收交警罚没款':
isdisplaycustinfo.value = true;
isdisplaymktinfo.value = true;
isdisplaymagneticCardList.value = false;
isdisplayacquiringName.value = false;
isdisplayacquiringId.value = false;
@ -436,7 +462,7 @@ watch(
isdisplayheatingNo.value = false;
break;
case '新增综合收单商户(首月)':
isdisplaycustinfo.value = true;
isdisplaymktinfo.value = true;
isdisplaymagneticCardList.value = false;
isdisplayacquiringName.value = true;
isdisplayacquiringId.value = true;
@ -447,7 +473,7 @@ watch(
isdisplayheatingNo.value = false;
break;
case '网上支付客户':
isdisplaycustinfo.value = true;
isdisplaymktinfo.value = true;
isdisplaymagneticCardList.value = false;
isdisplayacquiringName.value = false;
isdisplayacquiringId.value = false;
@ -458,7 +484,7 @@ watch(
isdisplayheatingNo.value = false;
break;
case '营销职工社保卡':
isdisplaycustinfo.value = true;
isdisplaymktinfo.value = true;
isdisplaymagneticCardList.value = false;
isdisplayacquiringName.value = false;
isdisplayacquiringId.value = false;
@ -469,7 +495,9 @@ watch(
isdisplayheatingNo.value = false;
break;
case '取暖费':
isdisplaycustinfo.value = true;
case '代收水费':
case '代收电费':
isdisplaymktinfo.value = true;
isdisplaymagneticCardList.value = false;
isdisplayacquiringName.value = false;
isdisplayacquiringId.value = false;
@ -480,15 +508,15 @@ watch(
isdisplayheatingNo.value = true;
break;
default:
isdisplaycustinfo.value = true;
isdisplaymagneticCardList.value = false;
isdisplayacquiringName.value = false;
isdisplayacquiringId.value = false;
isdisplayinternetChannel.value = false;
isdisplaytrafficList.value = false;
isdisplayworkplace.value = false;
isdisplaysurplusAccountName.value = false;
isdisplayheatingNo.value = false;
isdisplaymktinfo.value = false;
// isdisplaymagneticCardList.value = false;
// isdisplayacquiringName.value = false;
// isdisplayacquiringId.value = false;
// isdisplayinternetChannel.value = false;
// isdisplaytrafficList.value = false;
// isdisplayworkplace.value = false;
// isdisplaysurplusAccountName.value = false;
// isdisplayheatingNo.value = false;
break;
}
if( props.operateType==='add'){
@ -651,7 +679,7 @@ watch(visible, () => {
</div>
<!-- 客户信息部分 -->
<div v-if="isdisplaycustinfo" class="form-section">
<div class="form-section">
<NDivider class="section-divider">客户信息</NDivider>
<NGrid :cols="24" :x-gap="24" responsive="screen">
<NGridItem v-if="isdisplaycustTypeinfo" :span="24">
@ -686,109 +714,111 @@ watch(visible, () => {
</NGridItem>
</NGrid>
</div>
<NDivider class="section-divider">营销信息</NDivider>
<NFormItem v-if="isdisplaymagneticCardList" label="磁条卡更换登记">
<NTable :bordered="true" :single-line="false">
<thead>
<tr>
<th>老卡号</th>
<th>新卡号</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in model.magneticCardList" :key="index">
<td>
<NInputNumber
v-model:value="item.oldCardNo"
placeholder="请输入老卡号"
:show-button="false"
:controls="false" style="width: 100%"
/>
</td>
<td>
<NInputNumber
v-model:value="item.newCardNo"
placeholder="请输入新卡号"
:show-button="false"
:controls="false" style="width: 100%"
/>
</td>
<td>
<NButton text type="error" @click="removeMagneticCardItem(index)">删除</NButton>
</td>
</tr>
<tr>
<td colspan="3" style="text-align: center">
<NButton text type="primary" block @click="addMagneticCardItem()">添加卡号</NButton>
</td>
</tr>
</tbody>
</NTable>
</NFormItem>
<NFormItem v-if="isdisplayacquiringName" label="综合收单商户名" path="acquiringName">
<NInput v-model:value="model.acquiringName" placeholder="请输入综合收单商户名" />
</NFormItem>
<NFormItem v-if="isdisplayacquiringId" label="综合收单商户号" path="acquiringId">
<NInput v-model:value="model.acquiringId" placeholder="请输入综合收单商户号" />
</NFormItem>
<NFormItem v-if="isdisplayinternetChannel" label="网上支付开通渠道" path="internetChannel">
<NCheckboxGroup v-model:value="model.internetChannel">
<NSpace>
<NCheckbox value="微信">微信</NCheckbox>
<NCheckbox value="支付宝">支付宝</NCheckbox>
<NCheckbox value="京东">京东</NCheckbox>
<NCheckbox value="美团">美团</NCheckbox>
<NCheckbox value="抖音">抖音</NCheckbox>
<NCheckbox value="拼多多">拼多多</NCheckbox>
<NCheckbox value="其他">其他</NCheckbox>
</NSpace>
</NCheckboxGroup>
</NFormItem>
<NFormItem v-if="isdisplaytrafficList" label="交警处罚决定书">
<NTable :bordered="true" :single-line="false">
<thead>
<tr>
<th>决定书编号</th>
<th>处罚金额</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in model.trafficList || []" :key="index">
<td>
<NInputNumber
v-model:value="item.trafficNo"
placeholder="请输入决定书编号"
:show-button="false"
:controls="false"
style="width: 100%"
/>
</td>
<td>
<NInputNumber v-model:value="item.trafficAmt" placeholder="请输入处罚金额" :min="0" style="width: 100%" />
</td>
<td>
<NButton text type="error" @click="removeTrafficItem(index)">删除</NButton>
</td>
</tr>
<tr>
<td colspan="3" style="text-align: center">
<NButton text type="primary" block @click="addTrafficItem()">添加决定书</NButton>
</td>
</tr>
</tbody>
</NTable>
</NFormItem>
<NFormItem v-if="isdisplayworkplace" label="职工所属单位" path="workplace">
<NInput v-model:value="model.workplace" placeholder="请输入职工所属单位" />
</NFormItem>
<NFormItem v-if="isdisplaysurplusAccountName" label="公积金缴纳账户名称" path="surplusAccountName">
<NInput v-model:value="model.surplusAccountName" placeholder="请输入公积金缴纳账户名称" />
</NFormItem>
<NFormItem v-if="isdisplayheatingNo" label="取暖费户号" path="heatingNo">
<NInput v-model:value="model.heatingNo" placeholder="请输入取暖费户号" />
</NFormItem>
<div class="form-section" v-if="isdisplaymktinfo">
<NDivider class="section-divider">营销信息</NDivider>
<NFormItem v-if="isdisplaymagneticCardList" label="磁条卡更换登记">
<NTable :bordered="true" :single-line="false">
<thead>
<tr>
<th>老卡号</th>
<th>新卡号</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in model.magneticCardList" :key="index">
<td>
<NInputNumber
v-model:value="item.oldCardNo"
placeholder="请输入老卡号"
:show-button="false"
:controls="false" style="width: 100%"
/>
</td>
<td>
<NInputNumber
v-model:value="item.newCardNo"
placeholder="请输入新卡号"
:show-button="false"
:controls="false" style="width: 100%"
/>
</td>
<td>
<NButton text type="error" @click="removeMagneticCardItem(index)">删除</NButton>
</td>
</tr>
<tr>
<td colspan="3" style="text-align: center">
<NButton text type="primary" block @click="addMagneticCardItem()">添加卡号</NButton>
</td>
</tr>
</tbody>
</NTable>
</NFormItem>
<NFormItem v-if="isdisplayacquiringName" label="综合收单商户名" path="acquiringName">
<NInput v-model:value="model.acquiringName" placeholder="请输入综合收单商户名" />
</NFormItem>
<NFormItem v-if="isdisplayacquiringId" label="综合收单商户号" path="acquiringId">
<NInput v-model:value="model.acquiringId" placeholder="请输入综合收单商户号" />
</NFormItem>
<NFormItem v-if="isdisplayinternetChannel" label="网上支付开通渠道" path="internetChannel">
<NCheckboxGroup v-model:value="model.internetChannel">
<NSpace>
<NCheckbox value="微信">微信</NCheckbox>
<NCheckbox value="支付宝">支付宝</NCheckbox>
<NCheckbox value="京东">京东</NCheckbox>
<NCheckbox value="美团">美团</NCheckbox>
<NCheckbox value="抖音">抖音</NCheckbox>
<NCheckbox value="拼多多">拼多多</NCheckbox>
<NCheckbox value="其他">其他</NCheckbox>
</NSpace>
</NCheckboxGroup>
</NFormItem>
<NFormItem v-if="isdisplaytrafficList" label="交警处罚决定书">
<NTable :bordered="true" :single-line="false">
<thead>
<tr>
<th>决定书编号</th>
<th>处罚金额</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, index) in model.trafficList || []" :key="index">
<td>
<NInputNumber
v-model:value="item.trafficNo"
placeholder="请输入决定书编号"
:show-button="false"
:controls="false"
style="width: 100%"
/>
</td>
<td>
<NInputNumber v-model:value="item.trafficAmt" placeholder="请输入处罚金额" :min="0" style="width: 100%" />
</td>
<td>
<NButton text type="error" @click="removeTrafficItem(index)">删除</NButton>
</td>
</tr>
<tr>
<td colspan="3" style="text-align: center">
<NButton text type="primary" block @click="addTrafficItem()">添加决定书</NButton>
</td>
</tr>
</tbody>
</NTable>
</NFormItem>
<NFormItem v-if="isdisplayworkplace" label="职工所属单位" path="workplace">
<NInput v-model:value="model.workplace" placeholder="请输入职工所属单位" />
</NFormItem>
<NFormItem v-if="isdisplaysurplusAccountName" label="公积金缴纳账户名称" path="surplusAccountName">
<NInput v-model:value="model.surplusAccountName" placeholder="请输入公积金缴纳账户名称" />
</NFormItem>
<NFormItem v-if="isdisplayheatingNo" label="户号" path="heatingNo">
<NInput v-model:value="model.heatingNo" placeholder="请输入户号" />
</NFormItem>
</div>
<div v-if="false" class="form-section">
<NDivider class="section-divider">核对信息</NDivider>
<NFormItem label="核对状态" path="checkFlag">