fix: 修复匹配详情提示及公积金可选路径问题
修复匹配详情中“用户自填未经核验”等来源说明,清理未参与项的橙色注意提示,修正贷款统计口径文案;补充公积金完整可选路径提取逻辑,确保明确无额外时长要求的公积金分支可正确识别并通过。
This commit is contained in:
+31
-7
@@ -9,7 +9,7 @@ export type AssessmentForm = {
|
||||
name: string, idCard: string, phone: string, city: string, maritalStatus: string,
|
||||
occupation: string, company: string, monthlyIncome: string, socialSecurity: string,
|
||||
housingFund: string, socialSecurityBase: string, housingFundBase: string, house: string, car: string, savings: string, creditCard: string,
|
||||
creditLoanCount: string, totalDebtBalance: string, monthlyLoanPayment: string,
|
||||
creditLoanCount: string, loanCountScope: string, totalDebtBalance: string, monthlyLoanPayment: string,
|
||||
creditCardCount: string, creditCardTotalLimit: string, creditCardUsedLimit: string,
|
||||
otherAssets: string, enterpriseName: string, businessCode: string, annualRevenue: string, operatingYears: string, operatingMonths: string
|
||||
}
|
||||
@@ -17,7 +17,7 @@ export type SelectedDocument = { name: string, path: string, documentId: string,
|
||||
export type DataAuthorization = { key: string, name: string, selected: boolean }
|
||||
|
||||
export function emptyAssessmentForm(): AssessmentForm {
|
||||
return { name: '', idCard: '', phone: '', city: '', maritalStatus: '', occupation: '', company: '', monthlyIncome: '', socialSecurity: '', housingFund: '', socialSecurityBase: '', housingFundBase: '', house: '', car: '', savings: '', creditCard: '', otherAssets: '', creditLoanCount: '', totalDebtBalance: '', monthlyLoanPayment: '', creditCardCount: '', creditCardTotalLimit: '', creditCardUsedLimit: '', enterpriseName: '', businessCode: '', annualRevenue: '', operatingYears: '', operatingMonths: '' }
|
||||
return { name: '', idCard: '', phone: '', city: '', maritalStatus: '', occupation: '', company: '', monthlyIncome: '', socialSecurity: '', housingFund: '', socialSecurityBase: '', housingFundBase: '', house: '', car: '', savings: '', creditCard: '', otherAssets: '', creditLoanCount: '', loanCountScope: 'all_loans', totalDebtBalance: '', monthlyLoanPayment: '', creditCardCount: '', creditCardTotalLimit: '', creditCardUsedLimit: '', enterpriseName: '', businessCode: '', annualRevenue: '', operatingYears: '', operatingMonths: '' }
|
||||
}
|
||||
export function draftText(saved: UTSJSONObject, key: string): string {
|
||||
const value = saved[key]
|
||||
@@ -49,7 +49,7 @@ export function formFromInput(saved: UTSJSONObject): AssessmentForm {
|
||||
name: draftText(saved, 'name'), idCard: draftText(saved, 'idCard'), phone: draftText(saved, 'phone'), city: draftText(saved, 'city'), maritalStatus: draftText(saved, 'maritalStatus'),
|
||||
occupation: draftText(saved, 'occupation'), company: draftText(saved, 'company'), monthlyIncome: draftText(saved, 'monthlyIncome'), socialSecurity: draftText(saved, 'socialSecurity'), housingFund: draftText(saved, 'housingFund'), socialSecurityBase: draftText(saved, 'socialSecurityBase'), housingFundBase: draftText(saved, 'housingFundBase'),
|
||||
house: ownershipFromInput(saved, 'house'), car: ownershipFromInput(saved, 'car'), savings: draftText(saved, 'savings'), creditCard: draftText(saved, 'creditCard'), otherAssets: draftText(saved, 'otherAssets'),
|
||||
creditLoanCount: draftText(saved, 'creditLoanCount'), totalDebtBalance: draftText(saved, 'totalDebtBalance'), monthlyLoanPayment: draftText(saved, 'monthlyLoanPayment'),
|
||||
creditLoanCount: draftText(saved, 'creditLoanCount'), loanCountScope: draftText(saved, 'loanCountScope') == 'all_loans' ? 'all_loans' : '', totalDebtBalance: draftText(saved, 'totalDebtBalance'), monthlyLoanPayment: draftText(saved, 'monthlyLoanPayment'),
|
||||
creditCardCount: draftText(saved, 'creditCardCount'), creditCardTotalLimit: draftText(saved, 'creditCardTotalLimit'), creditCardUsedLimit: draftText(saved, 'creditCardUsedLimit'),
|
||||
enterpriseName: draftText(saved, 'enterpriseName'), businessCode: draftText(saved, 'businessCode'), annualRevenue: draftText(saved, 'annualRevenue'), operatingYears: draftText(saved, 'operatingYears'), operatingMonths: draftText(saved, 'operatingMonths')
|
||||
}
|
||||
@@ -74,7 +74,7 @@ export function contributionValidationMessage(form: AssessmentForm): string {
|
||||
}
|
||||
export function assetValidationMessage(form: AssessmentForm): string {
|
||||
const counts = [form.creditLoanCount, form.creditCardCount]
|
||||
const countLabels = ['信用贷款笔数', '银行信用卡张数']
|
||||
const countLabels = ['贷款笔数', '银行信用卡张数']
|
||||
for (let i = 0; i < counts.length; i++) {
|
||||
if (counts[i].length > 0 && !/^[0-9]{1,4}$/.test(counts[i])) return countLabels[i] + '请输入非负整数'
|
||||
}
|
||||
@@ -83,9 +83,31 @@ export function assetValidationMessage(form: AssessmentForm): string {
|
||||
for (let i = 0; i < amounts.length; i++) {
|
||||
if (amounts[i].length > 0 && !wanAmountValid(amounts[i])) return amountLabels[i] + '范围为 0–99999.999999 万元,最多六位小数'
|
||||
}
|
||||
if (form.creditLoanCount.length > 0 && form.loanCountScope != 'all_loans') return '历史贷款笔数仅统计信用贷款,请按全部未结清贷款重新确认'
|
||||
if (form.loanCountScope == 'all_loans' && /^0{1,4}$/.test(form.creditLoanCount)
|
||||
&& [form.totalDebtBalance, form.monthlyLoanPayment].some((value) => value.length > 0 && wanToCents(value) > 0)) return '贷款笔数为 0 时,欠款总余额和贷款月还款金额不能大于 0'
|
||||
if (/^0{1,4}$/.test(form.creditCardCount)
|
||||
&& [form.creditCardTotalLimit, form.creditCardUsedLimit].some((value) => value.length > 0 && wanToCents(value) > 0)) return '信用卡张数为 0 时,总额度和已使用总额度不能大于 0'
|
||||
if (form.creditCardTotalLimit.length > 0 && form.creditCardUsedLimit.length > 0 && wanToCents(form.creditCardUsedLimit) > wanToCents(form.creditCardTotalLimit)) return '信用卡已使用额度不能大于总额度'
|
||||
return ''
|
||||
}
|
||||
// 仅计算空金额是否适用;不补零、不更改任何已填内容,矛盾或无效金额不豁免同组字段。
|
||||
export function assetNotApplicableFields(form: AssessmentForm): string[] {
|
||||
const fields: string[] = []
|
||||
const loanAmounts = [form.totalDebtBalance, form.monthlyLoanPayment]
|
||||
if (form.loanCountScope == 'all_loans' && /^0{1,4}$/.test(form.creditLoanCount)
|
||||
&& loanAmounts.every((value) => value.length == 0 || (wanAmountValid(value) && wanToCents(value) == 0))) {
|
||||
if (form.totalDebtBalance.length == 0) fields.push('totalDebtBalance')
|
||||
if (form.monthlyLoanPayment.length == 0) fields.push('monthlyLoanPayment')
|
||||
}
|
||||
const cardAmounts = [form.creditCardTotalLimit, form.creditCardUsedLimit]
|
||||
if (/^0{1,4}$/.test(form.creditCardCount)
|
||||
&& cardAmounts.every((value) => value.length == 0 || (wanAmountValid(value) && wanToCents(value) == 0))) {
|
||||
if (form.creditCardTotalLimit.length == 0) fields.push('creditCardTotalLimit')
|
||||
if (form.creditCardUsedLimit.length == 0) fields.push('creditCardUsedLimit')
|
||||
}
|
||||
return fields
|
||||
}
|
||||
export function documentsFromInput(saved: UTSJSONObject): SelectedDocument[] {
|
||||
const results: SelectedDocument[] = []
|
||||
const items = saved['documents'] as UTSJSONObject[] | null
|
||||
@@ -106,7 +128,7 @@ export function setAssessmentInput(type: string, step: number, form: AssessmentF
|
||||
type, step, editAssessmentId, baseRevisionId, moneyUnit: 'wan', name: form.name, idCard: form.idCard, phone: form.phone, city: form.city, maritalStatus: form.maritalStatus,
|
||||
occupation: form.occupation, company: form.company, monthlyIncome: form.monthlyIncome, socialSecurity: form.socialSecurity, housingFund: form.housingFund, socialSecurityBase: form.socialSecurityBase, housingFundBase: form.housingFundBase,
|
||||
house: form.house, car: form.car, savings: form.savings, creditCard: form.creditCard, otherAssets: form.otherAssets,
|
||||
creditLoanCount: form.creditLoanCount, totalDebtBalance: form.totalDebtBalance, monthlyLoanPayment: form.monthlyLoanPayment,
|
||||
creditLoanCount: form.creditLoanCount, loanCountScope: form.loanCountScope, totalDebtBalance: form.totalDebtBalance, monthlyLoanPayment: form.monthlyLoanPayment,
|
||||
creditCardCount: form.creditCardCount, creditCardTotalLimit: form.creditCardTotalLimit, creditCardUsedLimit: form.creditCardUsedLimit,
|
||||
enterpriseName: form.enterpriseName, businessCode: form.businessCode, annualRevenue: form.annualRevenue, operatingYears: form.operatingYears, operatingMonths: form.operatingMonths,
|
||||
documents: files, authorizations: grants, documentConsent, dataConsent
|
||||
@@ -123,9 +145,11 @@ export function assessmentProgress(type: string): AssessmentProgress {
|
||||
if (saved == null) return { percent: 0, basicDone: false, incomeDone: false, assetsDone: false, authorizationSelected: false }
|
||||
const basic = type == 'enterprise' ? ['enterpriseName', 'businessCode', 'name', 'phone', 'city'] : ['name', 'idCard', 'phone', 'city', 'maritalStatus']
|
||||
const income = type == 'enterprise' ? ['occupation', 'operatingMonths', 'annualRevenue'] : ['occupation', 'company', 'monthlyIncome', 'socialSecurity', 'housingFund']
|
||||
const assets = ['house', 'car', 'creditLoanCount', 'totalDebtBalance', 'monthlyLoanPayment', 'creditCardCount', 'creditCardTotalLimit', 'creditCardUsedLimit']
|
||||
const form = formFromInput(saved)
|
||||
const notApplicable = assetNotApplicableFields(form)
|
||||
const assets = ['house', 'car', 'creditLoanCount', 'totalDebtBalance', 'monthlyLoanPayment', 'creditCardCount', 'creditCardTotalLimit', 'creditCardUsedLimit'].filter((key) => !notApplicable.includes(key))
|
||||
const keys = basic.concat(income).concat(assets)
|
||||
const filled = keys.filter((key) => draftText(saved, key).trim().length > 0).length
|
||||
const grants = saved['authorizations'] as string[] | null
|
||||
return { percent: Math.round(filled / keys.length * 100), basicDone: basic.every((key) => draftText(saved, key).length > 0), incomeDone: income.every((key) => draftText(saved, key).length > 0), assetsDone: assets.every((key) => draftText(saved, key).trim().length > 0) && assetValidationMessage(formFromInput(saved)).length == 0, authorizationSelected: documentsFromInput(saved).length > 0 || (grants != null && grants.length > 0) }
|
||||
return { percent: Math.round(filled / keys.length * 100), basicDone: basic.every((key) => draftText(saved, key).length > 0), incomeDone: income.every((key) => draftText(saved, key).length > 0), assetsDone: assets.every((key) => draftText(saved, key).trim().length > 0) && assetValidationMessage(form).length == 0, authorizationSelected: documentsFromInput(saved).length > 0 || (grants != null && grants.length > 0) }
|
||||
}
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
// 由 scripts/generate-city-options.py 生成;来源和覆盖口径见 docs/data/city-options.json。
|
||||
export type CityOption = { name: string, code: string }
|
||||
export type CityRegion = { name: string, cities: CityOption[] }
|
||||
export const cityRegions: CityRegion[] = [
|
||||
{"name": "北京市", "cities": [{"name": "北京市", "code": "110100"}]},
|
||||
{"name": "天津市", "cities": [{"name": "天津市", "code": "120100"}]},
|
||||
{"name": "河北省", "cities": [{"name": "石家庄市", "code": "130100"}, {"name": "唐山市", "code": "130200"}, {"name": "秦皇岛市", "code": "130300"}, {"name": "邯郸市", "code": "130400"}, {"name": "邢台市", "code": "130500"}, {"name": "保定市", "code": "130600"}, {"name": "张家口市", "code": "130700"}, {"name": "承德市", "code": "130800"}, {"name": "沧州市", "code": "130900"}, {"name": "廊坊市", "code": "131000"}, {"name": "衡水市", "code": "131100"}]},
|
||||
{"name": "山西省", "cities": [{"name": "太原市", "code": "140100"}, {"name": "大同市", "code": "140200"}, {"name": "阳泉市", "code": "140300"}, {"name": "长治市", "code": "140400"}, {"name": "晋城市", "code": "140500"}, {"name": "朔州市", "code": "140600"}, {"name": "晋中市", "code": "140700"}, {"name": "运城市", "code": "140800"}, {"name": "忻州市", "code": "140900"}, {"name": "临汾市", "code": "141000"}, {"name": "吕梁市", "code": "141100"}]},
|
||||
{"name": "内蒙古自治区", "cities": [{"name": "呼和浩特市", "code": "150100"}, {"name": "包头市", "code": "150200"}, {"name": "乌海市", "code": "150300"}, {"name": "赤峰市", "code": "150400"}, {"name": "通辽市", "code": "150500"}, {"name": "鄂尔多斯市", "code": "150600"}, {"name": "呼伦贝尔市", "code": "150700"}, {"name": "巴彦淖尔市", "code": "150800"}, {"name": "乌兰察布市", "code": "150900"}, {"name": "兴安盟", "code": "152200"}, {"name": "锡林郭勒盟", "code": "152500"}, {"name": "阿拉善盟", "code": "152900"}]},
|
||||
{"name": "辽宁省", "cities": [{"name": "沈阳市", "code": "210100"}, {"name": "大连市", "code": "210200"}, {"name": "鞍山市", "code": "210300"}, {"name": "抚顺市", "code": "210400"}, {"name": "本溪市", "code": "210500"}, {"name": "丹东市", "code": "210600"}, {"name": "锦州市", "code": "210700"}, {"name": "营口市", "code": "210800"}, {"name": "阜新市", "code": "210900"}, {"name": "辽阳市", "code": "211000"}, {"name": "盘锦市", "code": "211100"}, {"name": "铁岭市", "code": "211200"}, {"name": "朝阳市", "code": "211300"}, {"name": "葫芦岛市", "code": "211400"}]},
|
||||
{"name": "吉林省", "cities": [{"name": "长春市", "code": "220100"}, {"name": "吉林市", "code": "220200"}, {"name": "四平市", "code": "220300"}, {"name": "辽源市", "code": "220400"}, {"name": "通化市", "code": "220500"}, {"name": "白山市", "code": "220600"}, {"name": "松原市", "code": "220700"}, {"name": "白城市", "code": "220800"}, {"name": "延边朝鲜族自治州", "code": "222400"}]},
|
||||
{"name": "黑龙江省", "cities": [{"name": "哈尔滨市", "code": "230100"}, {"name": "齐齐哈尔市", "code": "230200"}, {"name": "鸡西市", "code": "230300"}, {"name": "鹤岗市", "code": "230400"}, {"name": "双鸭山市", "code": "230500"}, {"name": "大庆市", "code": "230600"}, {"name": "伊春市", "code": "230700"}, {"name": "佳木斯市", "code": "230800"}, {"name": "七台河市", "code": "230900"}, {"name": "牡丹江市", "code": "231000"}, {"name": "黑河市", "code": "231100"}, {"name": "绥化市", "code": "231200"}, {"name": "大兴安岭地区", "code": "232700"}]},
|
||||
{"name": "上海市", "cities": [{"name": "上海市", "code": "310100"}]},
|
||||
{"name": "江苏省", "cities": [{"name": "南京市", "code": "320100"}, {"name": "无锡市", "code": "320200"}, {"name": "徐州市", "code": "320300"}, {"name": "常州市", "code": "320400"}, {"name": "苏州市", "code": "320500"}, {"name": "南通市", "code": "320600"}, {"name": "连云港市", "code": "320700"}, {"name": "淮安市", "code": "320800"}, {"name": "盐城市", "code": "320900"}, {"name": "扬州市", "code": "321000"}, {"name": "镇江市", "code": "321100"}, {"name": "泰州市", "code": "321200"}, {"name": "宿迁市", "code": "321300"}]},
|
||||
{"name": "浙江省", "cities": [{"name": "杭州市", "code": "330100"}, {"name": "宁波市", "code": "330200"}, {"name": "温州市", "code": "330300"}, {"name": "嘉兴市", "code": "330400"}, {"name": "湖州市", "code": "330500"}, {"name": "绍兴市", "code": "330600"}, {"name": "金华市", "code": "330700"}, {"name": "衢州市", "code": "330800"}, {"name": "舟山市", "code": "330900"}, {"name": "台州市", "code": "331000"}, {"name": "丽水市", "code": "331100"}]},
|
||||
{"name": "安徽省", "cities": [{"name": "合肥市", "code": "340100"}, {"name": "芜湖市", "code": "340200"}, {"name": "蚌埠市", "code": "340300"}, {"name": "淮南市", "code": "340400"}, {"name": "马鞍山市", "code": "340500"}, {"name": "淮北市", "code": "340600"}, {"name": "铜陵市", "code": "340700"}, {"name": "安庆市", "code": "340800"}, {"name": "黄山市", "code": "341000"}, {"name": "滁州市", "code": "341100"}, {"name": "阜阳市", "code": "341200"}, {"name": "宿州市", "code": "341300"}, {"name": "六安市", "code": "341500"}, {"name": "亳州市", "code": "341600"}, {"name": "池州市", "code": "341700"}, {"name": "宣城市", "code": "341800"}]},
|
||||
{"name": "福建省", "cities": [{"name": "福州市", "code": "350100"}, {"name": "厦门市", "code": "350200"}, {"name": "莆田市", "code": "350300"}, {"name": "三明市", "code": "350400"}, {"name": "泉州市", "code": "350500"}, {"name": "漳州市", "code": "350600"}, {"name": "南平市", "code": "350700"}, {"name": "龙岩市", "code": "350800"}, {"name": "宁德市", "code": "350900"}]},
|
||||
{"name": "江西省", "cities": [{"name": "南昌市", "code": "360100"}, {"name": "景德镇市", "code": "360200"}, {"name": "萍乡市", "code": "360300"}, {"name": "九江市", "code": "360400"}, {"name": "新余市", "code": "360500"}, {"name": "鹰潭市", "code": "360600"}, {"name": "赣州市", "code": "360700"}, {"name": "吉安市", "code": "360800"}, {"name": "宜春市", "code": "360900"}, {"name": "抚州市", "code": "361000"}, {"name": "上饶市", "code": "361100"}]},
|
||||
{"name": "山东省", "cities": [{"name": "济南市", "code": "370100"}, {"name": "青岛市", "code": "370200"}, {"name": "淄博市", "code": "370300"}, {"name": "枣庄市", "code": "370400"}, {"name": "东营市", "code": "370500"}, {"name": "烟台市", "code": "370600"}, {"name": "潍坊市", "code": "370700"}, {"name": "济宁市", "code": "370800"}, {"name": "泰安市", "code": "370900"}, {"name": "威海市", "code": "371000"}, {"name": "日照市", "code": "371100"}, {"name": "临沂市", "code": "371300"}, {"name": "德州市", "code": "371400"}, {"name": "聊城市", "code": "371500"}, {"name": "滨州市", "code": "371600"}, {"name": "菏泽市", "code": "371700"}]},
|
||||
{"name": "河南省", "cities": [{"name": "郑州市", "code": "410100"}, {"name": "开封市", "code": "410200"}, {"name": "洛阳市", "code": "410300"}, {"name": "平顶山市", "code": "410400"}, {"name": "安阳市", "code": "410500"}, {"name": "鹤壁市", "code": "410600"}, {"name": "新乡市", "code": "410700"}, {"name": "焦作市", "code": "410800"}, {"name": "濮阳市", "code": "410900"}, {"name": "许昌市", "code": "411000"}, {"name": "漯河市", "code": "411100"}, {"name": "三门峡市", "code": "411200"}, {"name": "南阳市", "code": "411300"}, {"name": "商丘市", "code": "411400"}, {"name": "信阳市", "code": "411500"}, {"name": "周口市", "code": "411600"}, {"name": "驻马店市", "code": "411700"}, {"name": "济源市", "code": "419001"}]},
|
||||
{"name": "湖北省", "cities": [{"name": "武汉市", "code": "420100"}, {"name": "黄石市", "code": "420200"}, {"name": "十堰市", "code": "420300"}, {"name": "宜昌市", "code": "420500"}, {"name": "襄阳市", "code": "420600"}, {"name": "鄂州市", "code": "420700"}, {"name": "荆门市", "code": "420800"}, {"name": "孝感市", "code": "420900"}, {"name": "荆州市", "code": "421000"}, {"name": "黄冈市", "code": "421100"}, {"name": "咸宁市", "code": "421200"}, {"name": "随州市", "code": "421300"}, {"name": "恩施土家族苗族自治州", "code": "422800"}, {"name": "仙桃市", "code": "429004"}, {"name": "潜江市", "code": "429005"}, {"name": "天门市", "code": "429006"}, {"name": "神农架林区", "code": "429021"}]},
|
||||
{"name": "湖南省", "cities": [{"name": "长沙市", "code": "430100"}, {"name": "株洲市", "code": "430200"}, {"name": "湘潭市", "code": "430300"}, {"name": "衡阳市", "code": "430400"}, {"name": "邵阳市", "code": "430500"}, {"name": "岳阳市", "code": "430600"}, {"name": "常德市", "code": "430700"}, {"name": "张家界市", "code": "430800"}, {"name": "益阳市", "code": "430900"}, {"name": "郴州市", "code": "431000"}, {"name": "永州市", "code": "431100"}, {"name": "怀化市", "code": "431200"}, {"name": "娄底市", "code": "431300"}, {"name": "湘西土家族苗族自治州", "code": "433100"}]},
|
||||
{"name": "广东省", "cities": [{"name": "广州市", "code": "440100"}, {"name": "韶关市", "code": "440200"}, {"name": "深圳市", "code": "440300"}, {"name": "珠海市", "code": "440400"}, {"name": "汕头市", "code": "440500"}, {"name": "佛山市", "code": "440600"}, {"name": "江门市", "code": "440700"}, {"name": "湛江市", "code": "440800"}, {"name": "茂名市", "code": "440900"}, {"name": "肇庆市", "code": "441200"}, {"name": "惠州市", "code": "441300"}, {"name": "梅州市", "code": "441400"}, {"name": "汕尾市", "code": "441500"}, {"name": "河源市", "code": "441600"}, {"name": "阳江市", "code": "441700"}, {"name": "清远市", "code": "441800"}, {"name": "东莞市", "code": "441900"}, {"name": "中山市", "code": "442000"}, {"name": "潮州市", "code": "445100"}, {"name": "揭阳市", "code": "445200"}, {"name": "云浮市", "code": "445300"}]},
|
||||
{"name": "广西壮族自治区", "cities": [{"name": "南宁市", "code": "450100"}, {"name": "柳州市", "code": "450200"}, {"name": "桂林市", "code": "450300"}, {"name": "梧州市", "code": "450400"}, {"name": "北海市", "code": "450500"}, {"name": "防城港市", "code": "450600"}, {"name": "钦州市", "code": "450700"}, {"name": "贵港市", "code": "450800"}, {"name": "玉林市", "code": "450900"}, {"name": "百色市", "code": "451000"}, {"name": "贺州市", "code": "451100"}, {"name": "河池市", "code": "451200"}, {"name": "来宾市", "code": "451300"}, {"name": "崇左市", "code": "451400"}]},
|
||||
{"name": "海南省", "cities": [{"name": "海口市", "code": "460100"}, {"name": "三亚市", "code": "460200"}, {"name": "三沙市", "code": "460300"}, {"name": "儋州市", "code": "460400"}, {"name": "五指山市", "code": "469001"}, {"name": "琼海市", "code": "469002"}, {"name": "文昌市", "code": "469005"}, {"name": "万宁市", "code": "469006"}, {"name": "东方市", "code": "469007"}, {"name": "定安县", "code": "469021"}, {"name": "屯昌县", "code": "469022"}, {"name": "澄迈县", "code": "469023"}, {"name": "临高县", "code": "469024"}, {"name": "白沙黎族自治县", "code": "469025"}, {"name": "昌江黎族自治县", "code": "469026"}, {"name": "乐东黎族自治县", "code": "469027"}, {"name": "陵水黎族自治县", "code": "469028"}, {"name": "保亭黎族苗族自治县", "code": "469029"}, {"name": "琼中黎族苗族自治县", "code": "469030"}]},
|
||||
{"name": "重庆市", "cities": [{"name": "重庆市", "code": "500100"}]},
|
||||
{"name": "四川省", "cities": [{"name": "成都市", "code": "510100"}, {"name": "自贡市", "code": "510300"}, {"name": "攀枝花市", "code": "510400"}, {"name": "泸州市", "code": "510500"}, {"name": "德阳市", "code": "510600"}, {"name": "绵阳市", "code": "510700"}, {"name": "广元市", "code": "510800"}, {"name": "遂宁市", "code": "510900"}, {"name": "内江市", "code": "511000"}, {"name": "乐山市", "code": "511100"}, {"name": "南充市", "code": "511300"}, {"name": "眉山市", "code": "511400"}, {"name": "宜宾市", "code": "511500"}, {"name": "广安市", "code": "511600"}, {"name": "达州市", "code": "511700"}, {"name": "雅安市", "code": "511800"}, {"name": "巴中市", "code": "511900"}, {"name": "资阳市", "code": "512000"}, {"name": "阿坝藏族羌族自治州", "code": "513200"}, {"name": "甘孜藏族自治州", "code": "513300"}, {"name": "凉山彝族自治州", "code": "513400"}]},
|
||||
{"name": "贵州省", "cities": [{"name": "贵阳市", "code": "520100"}, {"name": "六盘水市", "code": "520200"}, {"name": "遵义市", "code": "520300"}, {"name": "安顺市", "code": "520400"}, {"name": "毕节市", "code": "520500"}, {"name": "铜仁市", "code": "520600"}, {"name": "黔西南布依族苗族自治州", "code": "522300"}, {"name": "黔东南苗族侗族自治州", "code": "522600"}, {"name": "黔南布依族苗族自治州", "code": "522700"}]},
|
||||
{"name": "云南省", "cities": [{"name": "昆明市", "code": "530100"}, {"name": "曲靖市", "code": "530300"}, {"name": "玉溪市", "code": "530400"}, {"name": "保山市", "code": "530500"}, {"name": "昭通市", "code": "530600"}, {"name": "丽江市", "code": "530700"}, {"name": "普洱市", "code": "530800"}, {"name": "临沧市", "code": "530900"}, {"name": "楚雄彝族自治州", "code": "532300"}, {"name": "红河哈尼族彝族自治州", "code": "532500"}, {"name": "文山壮族苗族自治州", "code": "532600"}, {"name": "西双版纳傣族自治州", "code": "532800"}, {"name": "大理白族自治州", "code": "532900"}, {"name": "德宏傣族景颇族自治州", "code": "533100"}, {"name": "怒江傈僳族自治州", "code": "533300"}, {"name": "迪庆藏族自治州", "code": "533400"}]},
|
||||
{"name": "西藏自治区", "cities": [{"name": "拉萨市", "code": "540100"}, {"name": "日喀则市", "code": "540200"}, {"name": "昌都市", "code": "540300"}, {"name": "林芝市", "code": "540400"}, {"name": "山南市", "code": "540500"}, {"name": "那曲市", "code": "540600"}, {"name": "阿里地区", "code": "542500"}]},
|
||||
{"name": "陕西省", "cities": [{"name": "西安市", "code": "610100"}, {"name": "铜川市", "code": "610200"}, {"name": "宝鸡市", "code": "610300"}, {"name": "咸阳市", "code": "610400"}, {"name": "渭南市", "code": "610500"}, {"name": "延安市", "code": "610600"}, {"name": "汉中市", "code": "610700"}, {"name": "榆林市", "code": "610800"}, {"name": "安康市", "code": "610900"}, {"name": "商洛市", "code": "611000"}]},
|
||||
{"name": "甘肃省", "cities": [{"name": "兰州市", "code": "620100"}, {"name": "嘉峪关市", "code": "620200"}, {"name": "金昌市", "code": "620300"}, {"name": "白银市", "code": "620400"}, {"name": "天水市", "code": "620500"}, {"name": "武威市", "code": "620600"}, {"name": "张掖市", "code": "620700"}, {"name": "平凉市", "code": "620800"}, {"name": "酒泉市", "code": "620900"}, {"name": "庆阳市", "code": "621000"}, {"name": "定西市", "code": "621100"}, {"name": "陇南市", "code": "621200"}, {"name": "临夏回族自治州", "code": "622900"}, {"name": "甘南藏族自治州", "code": "623000"}]},
|
||||
{"name": "青海省", "cities": [{"name": "西宁市", "code": "630100"}, {"name": "海东市", "code": "630200"}, {"name": "海北藏族自治州", "code": "632200"}, {"name": "黄南藏族自治州", "code": "632300"}, {"name": "海南藏族自治州", "code": "632500"}, {"name": "果洛藏族自治州", "code": "632600"}, {"name": "玉树藏族自治州", "code": "632700"}, {"name": "海西蒙古族藏族自治州", "code": "632800"}]},
|
||||
{"name": "宁夏回族自治区", "cities": [{"name": "银川市", "code": "640100"}, {"name": "石嘴山市", "code": "640200"}, {"name": "吴忠市", "code": "640300"}, {"name": "固原市", "code": "640400"}, {"name": "中卫市", "code": "640500"}]},
|
||||
{"name": "新疆维吾尔自治区", "cities": [{"name": "乌鲁木齐市", "code": "650100"}, {"name": "克拉玛依市", "code": "650200"}, {"name": "吐鲁番市", "code": "650400"}, {"name": "哈密市", "code": "650500"}, {"name": "昌吉回族自治州", "code": "652300"}, {"name": "博尔塔拉蒙古自治州", "code": "652700"}, {"name": "巴音郭楞蒙古自治州", "code": "652800"}, {"name": "阿克苏地区", "code": "652900"}, {"name": "克孜勒苏柯尔克孜自治州", "code": "653000"}, {"name": "喀什地区", "code": "653100"}, {"name": "和田地区", "code": "653200"}, {"name": "伊犁哈萨克自治州", "code": "654000"}, {"name": "塔城地区", "code": "654200"}, {"name": "阿勒泰地区", "code": "654300"}, {"name": "石河子市", "code": "659001"}, {"name": "阿拉尔市", "code": "659002"}, {"name": "图木舒克市", "code": "659003"}, {"name": "五家渠市", "code": "659004"}, {"name": "北屯市", "code": "659005"}, {"name": "铁门关市", "code": "659006"}, {"name": "双河市", "code": "659007"}, {"name": "可克达拉市", "code": "659008"}, {"name": "昆玉市", "code": "659009"}, {"name": "胡杨河市", "code": "659010"}, {"name": "新星市", "code": "659011"}, {"name": "白杨市", "code": "659012"}]},
|
||||
{"name": "台湾省", "cities": [{"name": "台北市", "code": ""}, {"name": "新北市", "code": ""}, {"name": "桃园市", "code": ""}, {"name": "台中市", "code": ""}, {"name": "台南市", "code": ""}, {"name": "高雄市", "code": ""}, {"name": "基隆市", "code": ""}, {"name": "新竹市", "code": ""}, {"name": "嘉义市", "code": ""}, {"name": "新竹县", "code": ""}, {"name": "苗栗县", "code": ""}, {"name": "彰化县", "code": ""}, {"name": "南投县", "code": ""}, {"name": "云林县", "code": ""}, {"name": "嘉义县", "code": ""}, {"name": "屏东县", "code": ""}, {"name": "宜兰县", "code": ""}, {"name": "花莲县", "code": ""}, {"name": "台东县", "code": ""}, {"name": "澎湖县", "code": ""}, {"name": "金门县", "code": ""}, {"name": "连江县", "code": ""}]},
|
||||
{"name": "香港特别行政区", "cities": [{"name": "香港特别行政区", "code": ""}]},
|
||||
{"name": "澳门特别行政区", "cities": [{"name": "澳门特别行政区", "code": ""}]}
|
||||
]
|
||||
export const provinceOptions: CityOption[] = [{"name": "北京市", "code": "110000"}, {"name": "天津市", "code": "120000"}, {"name": "河北省", "code": "130000"}, {"name": "山西省", "code": "140000"}, {"name": "内蒙古自治区", "code": "150000"}, {"name": "辽宁省", "code": "210000"}, {"name": "吉林省", "code": "220000"}, {"name": "黑龙江省", "code": "230000"}, {"name": "上海市", "code": "310000"}, {"name": "江苏省", "code": "320000"}, {"name": "浙江省", "code": "330000"}, {"name": "安徽省", "code": "340000"}, {"name": "福建省", "code": "350000"}, {"name": "江西省", "code": "360000"}, {"name": "山东省", "code": "370000"}, {"name": "河南省", "code": "410000"}, {"name": "湖北省", "code": "420000"}, {"name": "湖南省", "code": "430000"}, {"name": "广东省", "code": "440000"}, {"name": "广西壮族自治区", "code": "450000"}, {"name": "海南省", "code": "460000"}, {"name": "重庆市", "code": "500000"}, {"name": "四川省", "code": "510000"}, {"name": "贵州省", "code": "520000"}, {"name": "云南省", "code": "530000"}, {"name": "西藏自治区", "code": "540000"}, {"name": "陕西省", "code": "610000"}, {"name": "甘肃省", "code": "620000"}, {"name": "青海省", "code": "630000"}, {"name": "宁夏回族自治区", "code": "640000"}, {"name": "新疆维吾尔自治区", "code": "650000"}, {"name": "台湾省", "code": "710000"}, {"name": "香港特别行政区", "code": "810000"}, {"name": "澳门特别行政区", "code": "820000"}]
|
||||
|
||||
export const citySelection = (name: string): number[] => {
|
||||
for (let province = 0; province < cityRegions.length; province++) {
|
||||
const cities = cityRegions[province].cities
|
||||
for (let city = 0; city < cities.length; city++) {
|
||||
if (cities[city].name == name) return [province, city]
|
||||
}
|
||||
}
|
||||
return [-1, -1]
|
||||
}
|
||||
|
||||
export const cityCodeForName = (name: string): string | null => {
|
||||
const selected = citySelection(name)
|
||||
if (selected[0] < 0) return null
|
||||
const code = cityRegions[selected[0]].cities[selected[1]].code
|
||||
return code.length > 0 ? code : null
|
||||
}
|
||||
|
||||
export const cityDisplayName = (name: string): string => {
|
||||
const selected = citySelection(name)
|
||||
if (selected[0] < 0) return name
|
||||
const province = cityRegions[selected[0]].name
|
||||
return province == name ? name : province + ' / ' + name
|
||||
}
|
||||
|
||||
export const provinceCodeForName = (name: string): string | null => {
|
||||
const index = provinceOptions.findIndex((item: CityOption): boolean => item.name == name)
|
||||
return index < 0 ? null : provinceOptions[index].code
|
||||
}
|
||||
|
||||
// 仅供历史城市资料回填为省份;未知名称不猜测。
|
||||
export const provinceForCity = (name: string): string => {
|
||||
if (provinceCodeForName(name) != null) return name
|
||||
const selected = citySelection(name)
|
||||
return selected[0] < 0 ? '' : cityRegions[selected[0]].name
|
||||
}
|
||||
@@ -23,7 +23,7 @@ export function matchReturnPath(page: string, assessmentId: string, rawIds: stri
|
||||
let ids: string[] = []
|
||||
try { ids = parseCompareIds(rawIds) } catch (err) { return '' }
|
||||
if (assessmentId.length == 0 && (revisionId.length > 0 || ids.length > 0)) return ''
|
||||
if (page == 'matches' && !['eligible','ineligible','unknown'].includes(group)) return ''
|
||||
if (page == 'matches' && !['all','eligible','ineligible','unknown'].includes(group)) return ''
|
||||
if (page == 'product' && (!validRecordId(productId) || !['explanation','details','conditions'].includes(tab) || (assessmentId.length == 0 && tab == 'explanation') || !['','matches','product','compare','report','next-step','archive'].includes(from))) return ''
|
||||
const query = assessmentId.length > 0 ? compareQuery(assessmentId, ids, revisionId) : '?'
|
||||
if (page == 'matches') return '/packages/finance/matches/matches' + query + '&group=' + group
|
||||
|
||||
Reference in New Issue
Block a user