1.修改合同问题
2.项目建档 3.增加进行中的项目
This commit is contained in:
@ -25,124 +25,70 @@ interface Province {
|
||||
// 模拟省市区数据
|
||||
const provinceData: Province[] = [
|
||||
{
|
||||
value: 'beijing',
|
||||
value: '11',
|
||||
label: '北京市',
|
||||
cities: [
|
||||
{
|
||||
value: 'dongcheng',
|
||||
label: '东城区',
|
||||
value: '01',
|
||||
label: '市辖区',
|
||||
districts: [
|
||||
{ value: 'chaoyangmen', label: '朝阳门街道' },
|
||||
{ value: 'jianguomennei', label: '建国门内街道' },
|
||||
{ value: 'donghuamen', label: '东华门街道' },
|
||||
],
|
||||
},
|
||||
{
|
||||
value: 'xicheng',
|
||||
label: '西城区',
|
||||
districts: [
|
||||
{ value: 'xichang', label: '西长安街街道' },
|
||||
{ value: 'xinjieku', label: '新街口街道' },
|
||||
{ value: 'yuetan', label: '月坛街道' },
|
||||
],
|
||||
},
|
||||
{
|
||||
value: 'chaoyang',
|
||||
label: '朝阳区',
|
||||
districts: [
|
||||
{ value: 'jianwai', label: '建外街道' },
|
||||
{ value: 'chaowai', label: '朝外街道' },
|
||||
{ value: 'hujialou', label: '呼家楼街道' },
|
||||
],
|
||||
},
|
||||
],
|
||||
{ value: '01', label: '东城区' },
|
||||
{ value: '02', label: '西城区' },
|
||||
{ value: '05', label: '朝阳区' },
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
value: 'shanghai',
|
||||
value: '31',
|
||||
label: '上海市',
|
||||
cities: [
|
||||
{
|
||||
value: 'huangpu',
|
||||
label: '黄浦区',
|
||||
value: '10',
|
||||
label: '市辖区',
|
||||
districts: [
|
||||
{ value: 'nanking', label: '南京东路街道' },
|
||||
{ value: 'waitan', label: '外滩街道' },
|
||||
{ value: 'yuyuan', label: '豫园街道' },
|
||||
{ value: '02', label: '安次区' },
|
||||
{ value: '03', label: '广阳区' },
|
||||
{ value: '22', label: '固安县' },
|
||||
],
|
||||
},
|
||||
{
|
||||
value: 'xuhui',
|
||||
label: '徐汇区',
|
||||
districts: [
|
||||
{ value: 'xujiahui', label: '徐家汇街道' },
|
||||
{ value: 'tianlin', label: '田林街道' },
|
||||
{ value: 'kangjianlou', label: '康健楼街道' },
|
||||
],
|
||||
},
|
||||
{
|
||||
value: 'changning',
|
||||
label: '长宁区',
|
||||
districts: [
|
||||
{ value: 'huayang', label: '华阳路街道' },
|
||||
{ value: 'jiangsu', label: '江苏路街道' },
|
||||
{ value: 'xinhua', label: '新华路街道' },
|
||||
],
|
||||
},
|
||||
}
|
||||
],
|
||||
},
|
||||
{
|
||||
value: 'guangdong',
|
||||
value: '44',
|
||||
label: '广东省',
|
||||
cities: [
|
||||
{
|
||||
value: 'guangzhou',
|
||||
value: '10',
|
||||
label: '广州市',
|
||||
districts: [
|
||||
{ value: 'yuexiu', label: '越秀区' },
|
||||
{ value: 'liwan', label: '荔湾区' },
|
||||
{ value: 'haizhu', label: '海珠区' },
|
||||
],
|
||||
},
|
||||
{
|
||||
value: 'shenzhen',
|
||||
label: '深圳市',
|
||||
districts: [
|
||||
{ value: 'futian', label: '福田区' },
|
||||
{ value: 'luohu', label: '罗湖区' },
|
||||
{ value: 'nanshan', label: '南山区' },
|
||||
],
|
||||
},
|
||||
{
|
||||
value: 'zhuhai',
|
||||
label: '珠海市',
|
||||
districts: [
|
||||
{ value: 'xiangzhou', label: '香洲区' },
|
||||
{ value: 'doumen', label: '斗门区' },
|
||||
{ value: 'jinwan', label: '金湾区' },
|
||||
{ value: '03', label: '荔湾区' },
|
||||
{ value: '04', label: '越秀区' },
|
||||
{ value: '05', label: '海珠区' },
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
value: 'jiangsu',
|
||||
value: '32',
|
||||
label: '江苏省',
|
||||
cities: [
|
||||
{
|
||||
value: 'nanjing',
|
||||
value: '01',
|
||||
label: '南京市',
|
||||
districts: [
|
||||
{ value: 'xuanwu', label: '玄武区' },
|
||||
{ value: 'qinhuai', label: '秦淮区' },
|
||||
{ value: 'jianye', label: '建邺区' },
|
||||
{ value: '02', label: '玄武区' },
|
||||
{ value: '04', label: '秦淮区' },
|
||||
{ value: '05', label: '建邺区' },
|
||||
],
|
||||
},
|
||||
{
|
||||
value: 'suzhou',
|
||||
value: '05',
|
||||
label: '苏州市',
|
||||
districts: [
|
||||
{ value: 'gusu', label: '姑苏区' },
|
||||
{ value: 'wuzhong', label: '吴中区' },
|
||||
{ value: 'xiangcheng', label: '相城区' },
|
||||
{ value: '08', label: '姑苏区' },
|
||||
{ value: '06', label: '吴中区' },
|
||||
{ value: '07', label: '相城区' },
|
||||
],
|
||||
},
|
||||
],
|
||||
@ -171,7 +117,6 @@ export interface CitySelectProps {
|
||||
const CitySelect: React.FC<CitySelectProps> = ({
|
||||
value = {},
|
||||
onChange,
|
||||
form,
|
||||
placeholder = {
|
||||
province: '请选择省份',
|
||||
city: '请选择城市',
|
||||
@ -180,108 +125,59 @@ const CitySelect: React.FC<CitySelectProps> = ({
|
||||
disabled = false,
|
||||
size = 'middle',
|
||||
}) => {
|
||||
const [cities, setCities] = useState<City[]>([]);
|
||||
const [districts, setDistricts] = useState<District[]>([]);
|
||||
const [selectedProvince, setSelectedProvince] = useState<string | undefined>(value.province);
|
||||
const [selectedCity, setSelectedCity] = useState<string | undefined>(value.city);
|
||||
const [selectedDistrict, setSelectedDistrict] = useState<string | undefined>(value.district);
|
||||
|
||||
|
||||
let cityData = provinceData?.find( item => {
|
||||
return item.value === value?.province
|
||||
})?.cities || [];
|
||||
|
||||
let districtData = cityData?.find( item => {
|
||||
return item.value === value?.city
|
||||
})?.districts || [];
|
||||
|
||||
// 处理省份选择变化
|
||||
const handleProvinceChange = (provinceValue?: string) => {
|
||||
setSelectedProvince(provinceValue);
|
||||
setSelectedCity(undefined);
|
||||
setSelectedDistrict(undefined);
|
||||
setDistricts([]);
|
||||
|
||||
if (provinceValue) {
|
||||
const province = provinceData.find(p => p.value === provinceValue);
|
||||
setCities(province?.cities || []);
|
||||
} else {
|
||||
setCities([]);
|
||||
}
|
||||
|
||||
// 清空城市和区域的表单字段
|
||||
if (form) {
|
||||
form.setFieldsValue({
|
||||
city: undefined,
|
||||
district: undefined,
|
||||
});
|
||||
}
|
||||
|
||||
// 触发变化回调
|
||||
const newValue: CitySelectValue = {
|
||||
province: provinceValue,
|
||||
city: undefined,
|
||||
district: undefined,
|
||||
};
|
||||
|
||||
onChange?.(newValue);
|
||||
};
|
||||
|
||||
// 处理城市选择变化
|
||||
const handleCityChange = (cityValue?: string) => {
|
||||
setSelectedCity(cityValue);
|
||||
setSelectedDistrict(undefined);
|
||||
|
||||
if (cityValue && selectedProvince) {
|
||||
const province = provinceData.find(p => p.value === selectedProvince);
|
||||
const city = province?.cities.find(c => c.value === cityValue);
|
||||
setDistricts(city?.districts || []);
|
||||
} else {
|
||||
setDistricts([]);
|
||||
}
|
||||
|
||||
// 清空区域的表单字段
|
||||
if (form) {
|
||||
form.setFieldsValue({
|
||||
district: undefined,
|
||||
});
|
||||
}
|
||||
|
||||
// 触发变化回调
|
||||
const newValue: CitySelectValue = {
|
||||
province: selectedProvince,
|
||||
province: value?.province,
|
||||
city: cityValue,
|
||||
district: undefined,
|
||||
};
|
||||
// @ts-ignore
|
||||
districtData = cityData.find( item => {
|
||||
return item.value === cityValue
|
||||
}).districts
|
||||
onChange?.(newValue);
|
||||
};
|
||||
|
||||
// 处理区域选择变化
|
||||
const handleDistrictChange = (districtValue?: string) => {
|
||||
setSelectedDistrict(districtValue);
|
||||
|
||||
// 触发变化回调
|
||||
const newValue: CitySelectValue = {
|
||||
province: selectedProvince,
|
||||
city: selectedCity,
|
||||
province: value?.province,
|
||||
city: value?.city,
|
||||
district: districtValue,
|
||||
};
|
||||
onChange?.(newValue);
|
||||
};
|
||||
|
||||
// 监听外部值变化
|
||||
useEffect(() => {
|
||||
if (value.province !== selectedProvince) {
|
||||
setSelectedProvince(value.province);
|
||||
handleProvinceChange(value.province);
|
||||
}
|
||||
if (value.city !== selectedCity) {
|
||||
setSelectedCity(value.city);
|
||||
handleCityChange(value.city);
|
||||
}
|
||||
if (value.district !== selectedDistrict) {
|
||||
setSelectedDistrict(value.district);
|
||||
}
|
||||
}, [value]);
|
||||
|
||||
return (
|
||||
<Row gutter={8}>
|
||||
<Col span={8}>
|
||||
<Select
|
||||
placeholder={placeholder.province}
|
||||
value={selectedProvince}
|
||||
value={value.province}
|
||||
onChange={handleProvinceChange}
|
||||
disabled={disabled}
|
||||
size={size}
|
||||
@ -298,14 +194,14 @@ const CitySelect: React.FC<CitySelectProps> = ({
|
||||
<Col span={8}>
|
||||
<Select
|
||||
placeholder={placeholder.city}
|
||||
value={selectedCity}
|
||||
value={value.city}
|
||||
onChange={handleCityChange}
|
||||
disabled={disabled || !selectedProvince}
|
||||
disabled={disabled || !value?.province}
|
||||
size={size}
|
||||
style={{ width: '100%' }}
|
||||
allowClear
|
||||
>
|
||||
{cities.map(city => (
|
||||
{cityData.map(city => (
|
||||
<Option key={city.value} value={city.value}>
|
||||
{city.label}
|
||||
</Option>
|
||||
@ -315,14 +211,14 @@ const CitySelect: React.FC<CitySelectProps> = ({
|
||||
<Col span={8}>
|
||||
<Select
|
||||
placeholder={placeholder.district}
|
||||
value={selectedDistrict}
|
||||
value={value.district}
|
||||
onChange={handleDistrictChange}
|
||||
disabled={disabled || !selectedCity}
|
||||
disabled={disabled || !value?.city}
|
||||
size={size}
|
||||
style={{ width: '100%' }}
|
||||
allowClear
|
||||
>
|
||||
{districts.map(district => (
|
||||
{districtData.map(district => (
|
||||
<Option key={district.value} value={district.value}>
|
||||
{district.label}
|
||||
</Option>
|
||||
|
Reference in New Issue
Block a user