城市合伙人县区不做限制

This commit is contained in:
2026-07-22 23:06:51 +08:00
parent 8c4419e04e
commit fb530e2ff5
7 changed files with 47 additions and 37 deletions
+2 -5
View File
@@ -61,7 +61,7 @@ describe('validatePartnerCityBinding', () => {
expect(result.ok).toBe(false);
});
it('rejects overlapping district codes', () => {
it('allows overlapping district codes as labels', () => {
const result = validatePartnerCityBinding(
[
{
@@ -74,10 +74,7 @@ describe('validatePartnerCityBinding', () => {
],
{ partnerAccountId: '11', scopeType: 'DISTRICT', districtCodes: ['410105'] },
);
expect(result.ok).toBe(false);
expect(result.message).toContain('区域重合');
expect(result.message).toContain('甲公司');
expect(result.occupiedCodes).toEqual(['410105']);
expect(result.ok).toBe(true);
});
it('allows valid district binding', () => {
+1 -22
View File
@@ -22,7 +22,6 @@ export interface PartnerCityResolveRef {
export interface PartnerCityValidationResult {
ok: boolean;
message?: string;
occupiedCodes?: string[];
}
function normalizeDistrictCodes(codes?: string[] | null): string[] {
@@ -101,27 +100,7 @@ export function validatePartnerCityBinding(
return { ok: false, message: '区域合伙人须至少选择一个区县' };
}
const occupiedBy = new Map<string, string>();
for (const row of others) {
if (row.scopeType !== 'DISTRICT') continue;
const owner = row.companyName?.trim() || '其他区域合伙人';
for (const code of normalizeDistrictCodes(row.districtCodes)) {
if (!occupiedBy.has(code)) occupiedBy.set(code, owner);
}
}
const overlaps = districts.filter((code) => occupiedBy.has(code));
if (overlaps.length) {
const detail = overlaps
.map((code) => `${code}${occupiedBy.get(code)}`)
.join('、');
return {
ok: false,
message: `区域重合:以下区县已被占用,请改选其他区县 — ${detail}`,
occupiedCodes: overlaps,
};
}
// 区县仅为标识,允许多个区域合伙人选择相同区县
return { ok: true };
}