1.修改合同问题

2.项目建档
3.增加进行中的项目
This commit is contained in:
32503
2025-07-02 09:56:11 +08:00
parent 9eb6d1cd10
commit 6e1b1c8653
17 changed files with 1687 additions and 619 deletions

View File

@ -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>