This commit is contained in:
ylj20011123 2025-12-05 19:39:56 +08:00
parent 27712ec067
commit b51847f568
2 changed files with 273 additions and 123 deletions

View File

@ -1,16 +1,18 @@
import LeftSelectTree from "@/components/leftSelectTree/leftSelectTree";
import { ActionType, FormInstance, ProForm, ProFormDatePicker, ProFormDigit, ProFormSelect, ProFormText, ProTable } from "@ant-design/pro-components";
import { Button, Col, Divider, Modal, Row } from "antd";
import { Button, Col, Divider, message, Modal, Row } from "antd";
import { useRef, useState } from "react";
import { connect } from "umi";
import './style.less'
import { handleGetServerpartTree, handleGetSERVERPARTTYPEList } from "../operationReport/service";
import { handleGetServerpartTree, handleGetSERVERPARTTYPEList, handlGetSPCONTRIBUTIONList } from "../operationReport/service";
import { handleGetServerpartInfo } from "../serverpartAssets/service";
import { encryptAES } from "@/utils/handleAes";
const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
const actionRef = useRef<ActionType>();
const formRef = useRef<FormInstance>();
const selectFormRef = useRef<FormInstance>();
const modalRef = useRef<FormInstance>();
// 树相关的属性和方法
const [selectedId, setSelectedId] = useState<string>()
@ -25,6 +27,9 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
const [serverPartList, setServerPartList] = useState<any>()
// 当前服务区下的方位
const [SERVERPARTREGION, setSERVERPARTREGION] = useState<any>()
// 选择模式里面的 表单数据
const [selectFormData, setSelectFormData] = useState<any>()
const operatingModels = [
'委托运营',
@ -194,6 +199,27 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
}
console.log('listlistlist', list);
const newReq: any = {
SearchParameter: {
SERVERPART_IDS: id
},
PageIndex: 1,
PageSize: 999999,
}
let newreq: any = {
name: "",
value: encryptAES(JSON.stringify(newReq))
}
const newData = await handlGetSPCONTRIBUTIONList(newreq)
console.log('newDatanewDatanewData', newData);
if (newData && newData.length > 0) {
let res: any = newData[0].SERVERPART_TYPE
selectFormRef.current?.setFieldsValue({ rating: res })
}
setSERVERPARTREGION(list)
}
@ -245,15 +271,23 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
<Modal
title={'请选择运营模式'}
destroyOnClose
width={800}
width={1200}
open={showSelectOperatingModel}
className={'operatingModelModal'}
onCancel={() => {
setShowSelectOperatingModel(false)
}}
footer={false}
okText={'下一步'}
onOk={async () => {
setShowSelectOperatingModel(false);
// setShowSelectOperatingModel(false);
selectFormRef.current?.validateFields().then((res: any) => {
if (selectedOperatingModel) {
setSelectFormData(res)
setRentCalculateModal(true)
} else {
message.success('请选择运营模式')
}
})
}}
>
<div className="operatingModelModalBox">
@ -263,46 +297,22 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
className={`operatingModelModalItemBox ${selectedOperatingModel === model ? 'selected' : ''}`}
onClick={() => {
setSelectedOperatingModel(model)
setShowSelectOperatingModel(false);
setRentCalculateModal(true)
// setShowSelectOperatingModel(false);
// setRentCalculateModal(true)
}}
>
{model}
</div>
))}
</div>
</Modal>
{/* 打开实际填写测算的 悬浮框 */}
<Modal
title={'租金测算'}
destroyOnClose
width={1200}
open={rentCalculateModal}
onCancel={() => {
setSelectedOperatingModel(null)
setRentCalculateModal(false)
}}
onOk={async () => {
modalRef.current?.validateFields().then((res: any) => {
setSelectedOperatingModel(null)
setRentCalculateModal(false)
// 保存同步租金测算的方法
handleAddUpdate(res)
})
}}
>
<div className="rentCalculateModalContent" style={{ height: '700px', overflowY: 'auto', overflowX: 'hidden', boxSizing: 'border-box', width: '100%' }}>
<ProForm
formRef={modalRef}
formRef={selectFormRef}
submitter={false}
layout={'horizontal'}
labelCol={{ style: { width: 120 } }}
labelCol={{ style: { width: 80 } }}
style={{ width: '100%', marginTop: '30px' }}
>
<Row gutter={16}>
<Divider orientation="left"></Divider>
<Row gutter={8}>
<Col span={8}>
<ProFormSelect
label={'片区'}
@ -335,7 +345,6 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
(option?.label ?? '').toLowerCase().includes(input.toLowerCase()),
optionFilterProp: 'label',
onChange: (value: any, option: any) => {
console.log('valuevalue', value);
handleGetServerPartList(value)
if (value) {
modalRef.current?.setFieldsValue({ belongArea: option.label })
@ -359,7 +368,6 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
options={serverPartList}
fieldProps={{
onChange: (e: any, option: any) => {
console.log('e', e);
handleGetSERVERPARTREGION(e)
if (e) {
modalRef.current?.setFieldsValue({ SAName: option.label })
@ -377,11 +385,190 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
name={'SAName'}
/>
</Col>
<Col span={8}>
<ProFormSelect
label={'方位'}
name={'SERVERPART_REGION'}
options={SERVERPARTREGION}
/>
</Col>
<Col span={8}>
<ProFormSelect
label={'是否首次'}
name={'isFirst'}
rules={[
{
required: true,
message: '请选择是否为首次'
}
]}
options={[
{ label: "首次", value: 1 },
{ label: "非首次", value: 2 }
]}
/>
</Col>
<Col span={8} style={{ display: 'none' }}>
<ProFormSelect
label={'分类定级'}
name={'rating'}
options={[
{ label: "立标杆", value: 1000 },
{ label: "提能级", value: 2000 },
{ label: "稳营收", value: 3000 },
{ label: "保功能", value: 4000 },
]}
// fieldProps={{
// onChange: (e: any) => {
// if (e) {
// console.log('eeeeee', e);
// let fromRes: any = modalRef.current?.getFieldValue('floorPrice')
// if (fromRes) {
// let rate: number = 1.05
// if (e === 1000 || e === 2000) {
// rate = 1.15
// } else if (e === 3000) {
// rate = 1.1
// } else if (e === 4000) {
// rate = 1.05
// }
// let sum: number = fromRes * 1.15 * rate
// modalRef.current?.setFieldsValue({ floorPriceMore: sum.toFixed(2) })
// // 到这里是拿到新的 保底收益递增
// let newNumber: number = Number(sum.toFixed(2))
// // 先拿到判断是不是首次项目
// let formDataIsFirst: number = modalRef.current?.getFieldValue('isFirst')
// // 是首次 就不去改变 保底营业额的值 不是才计算
// if (formDataIsFirst === 1) {
// // 1 代表首次
// // 首次则 首次招标营业额 为 最高值收益(floorPriceMore) / 35%
// modalRef.current?.setFieldsValue({ firstMinimumRevenue: (Number(newNumber) / 0.35).toFixed(2) })
// // 那么二次保底营业额的值就是 第一次的值
// let firstMinimumRevenueNumber: number = Number((Number(sum.toFixed(2)) / 0.35).toFixed(2))
// modalRef.current?.setFieldsValue({ secondMinimumRevenue: (firstMinimumRevenueNumber).toFixed(2) })
// // 那么第三次保底营业额的值 就是 第二次的值 *90%
// let secondMinimumRevenue: number = Number((firstMinimumRevenueNumber).toFixed(2))
// modalRef.current?.setFieldsValue({ thriceMinimumRevenue: (secondMinimumRevenue * 0.9).toFixed(2) })
// } else if (formDataIsFirst === 2) {
// // 2 代表非首次
// // 不是首次进来 那么就不管首次保底营业额了 只要看第二次 有没有值即可 有值算第三次 没值就不算
// let secondMinimumRevenueNumber: number = modalRef.current?.getFieldValue('secondMinimumRevenue')
// if (secondMinimumRevenueNumber) {
// modalRef.current?.setFieldsValue({ thriceMinimumRevenue: (secondMinimumRevenueNumber * 0.9).toFixed(2) })
// }
// }
// }
// }
// }
// }}
/>
</Col>
</Row>
</ProForm>
</div>
</Modal>
{/* 打开实际填写测算的 悬浮框 */}
<Modal
title={'租金测算'}
destroyOnClose
width={1200}
open={rentCalculateModal}
onCancel={() => {
setSelectedOperatingModel(null)
setRentCalculateModal(false)
}}
onOk={async () => {
modalRef.current?.validateFields().then((res: any) => {
setSelectedOperatingModel(null)
setRentCalculateModal(false)
// 保存同步租金测算的方法
handleAddUpdate(res)
})
}}
>
<div className="rentCalculateModalContent" style={{ height: '700px', overflowY: 'auto', overflowX: 'hidden', boxSizing: 'border-box', width: '100%' }}>
<ProForm
formRef={modalRef}
submitter={false}
layout={'horizontal'}
labelCol={{ style: { width: 120 } }}
request={async () => {
let formData: any = selectFormRef.current?.getFieldsValue({})
console.log('formDataformDataformData', formData);
if (formData) {
return {
...formData
}
} else {
return {}
}
}}
>
<Row gutter={16}>
<Divider orientation="left"></Divider>
<Col span={8}>
<ProFormSelect
label={'片区'}
name={'belongAreaCode'}
readonly
request={async () => {
const req: any = {
SearchParameter: {
SERVERPARTSTATICTYPE_ID: 1000,
TYPE_STATE: 1,
PROVINCE_CODE: 530000
},
PageIndex: 1,
PageSize: 100,
SortStr: "TYPE_INDEX,SERVERPARTTYPE_ID"
}
const data = await handleGetSERVERPARTTYPEList(req)
console.log('datadatadatadata', data);
let list: any = []
if (data && data.length > 0) {
data.forEach((item: any) => {
list.push({ label: item.TYPE_NAME, value: item.SERVERPARTTYPE_ID })
})
}
return list
}}
/>
</Col>
<Col span={8} style={{ display: 'none' }}>
<ProFormText
label={'片区名称'}
name={'belongArea'}
readonly
/>
</Col>
<Col span={8}>
<ProFormSelect
label={'服务区'}
name={'SACode'}
options={serverPartList}
readonly
/>
</Col>
<Col span={8} style={{ display: 'none' }}>
<ProFormText
label={'服务区名称'}
name={'SAName'}
readonly
/>
</Col>
<Col span={8}>
<ProFormSelect
label={'服务区方位'}
name={'SERVERPART_REGION'}
options={SERVERPARTREGION}
readonly
/>
</Col>
<Col span={8}>
@ -398,7 +585,7 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
}}
/>
</Col>
<Col span={8}>
{/* <Col span={8}>
<ProFormSelect
label={'是否首次'}
name={'isFirst'}
@ -424,7 +611,7 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
}
}}
/>
</Col>
</Col> */}
<Col span={8}>
<ProFormText
label={'所属高速'}
@ -438,64 +625,6 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
options={[]}
/>
</Col>
<Col span={8}>
<ProFormSelect
label={'分类定级'}
name={'rating'}
options={[
{ label: "立标杆", value: 1000 },
{ label: "提能级", value: 2000 },
{ label: "稳营收", value: 3000 },
{ label: "保功能", value: 4000 },
]}
fieldProps={{
onChange: (e: any) => {
if (e) {
console.log('eeeeee', e);
let fromRes: any = modalRef.current?.getFieldValue('floorPrice')
if (fromRes) {
let rate: number = 1.05
if (e === 1000 || e === 2000) {
rate = 1.15
} else if (e === 3000) {
rate = 1.1
} else if (e === 4000) {
rate = 1.05
}
let sum: number = fromRes * 1.15 * rate
modalRef.current?.setFieldsValue({ floorPriceMore: sum.toFixed(2) })
// 到这里是拿到新的 保底收益递增
let newNumber: number = Number(sum.toFixed(2))
// 先拿到判断是不是首次项目
let formDataIsFirst: number = modalRef.current?.getFieldValue('isFirst')
// 是首次 就不去改变 保底营业额的值 不是才计算
if (formDataIsFirst === 1) {
// 1 代表首次
// 首次则 首次招标营业额 为 最高值收益(floorPriceMore) / 35%
modalRef.current?.setFieldsValue({ firstMinimumRevenue: (Number(newNumber) / 0.35).toFixed(2) })
// 那么二次保底营业额的值就是 第一次的值
let firstMinimumRevenueNumber: number = Number((Number(sum.toFixed(2)) / 0.35).toFixed(2))
modalRef.current?.setFieldsValue({ secondMinimumRevenue: (firstMinimumRevenueNumber).toFixed(2) })
// 那么第三次保底营业额的值 就是 第二次的值 *90%
let secondMinimumRevenue: number = Number((firstMinimumRevenueNumber).toFixed(2))
modalRef.current?.setFieldsValue({ thriceMinimumRevenue: (secondMinimumRevenue * 0.9).toFixed(2) })
} else if (formDataIsFirst === 2) {
// 2 代表非首次
// 不是首次进来 那么就不管首次保底营业额了 只要看第二次 有没有值即可 有值算第三次 没值就不算
let secondMinimumRevenueNumber: number = modalRef.current?.getFieldValue('secondMinimumRevenue')
if (secondMinimumRevenueNumber) {
modalRef.current?.setFieldsValue({ thriceMinimumRevenue: (secondMinimumRevenueNumber * 0.9).toFixed(2) })
}
}
}
}
}
}}
/>
</Col>
<Col span={8}>
<ProFormSelect
label={'评审方式'}
@ -529,12 +658,6 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
selectedOperatingModel === '委托运营' ?
<>
<Divider orientation="left"></Divider>
<Col span={8}>
<ProFormText
label={'经营面积(m²)'}
name={''}
/>
</Col>
<Col span={8}>
<ProFormDatePicker
label={'合同到期时间'}
@ -582,8 +705,8 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
fieldProps={{
onChange: (e: any) => {
if (e) {
let fromRes: any = modalRef.current?.getFieldValue('rating')
console.log('fromResfromRes', fromRes);
let fromRes: any = Number(selectFormData?.rating)
if (fromRes) {
let rate: number = 1.05
if (fromRes === 1000 || fromRes === 2000) {
rate = 1.15
@ -592,16 +715,25 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
} else if (fromRes === 4000) {
rate = 1.05
}
let sum: number = e * 1.15 * rate
// 先拿到判断是不是首次项目
let formDataIsFirst: number = modalRef.current?.getFieldValue('isFirst')
// 是首次 就不去改变 保底营业额的值 不是才计算
if (formDataIsFirst === 1) {
} else if (formDataIsFirst === 2) {
modalRef.current?.setFieldsValue({ firstMinimumRevenue: (Number(sum.toFixed(2)) / 0.35).toFixed(2) })
}
modalRef.current?.setFieldsValue({ floorPriceMore: sum.toFixed(2) })
// 是首次 那么就要把 1 2 3 次都算出来 不是首次的话 就算 2 3 即可
if (selectFormData?.isFirst === 1) {
// 是首次的话
modalRef.current?.setFieldsValue({ firstMinimumRevenue: (Number(sum.toFixed(2)) / 0.35).toFixed(2) })
// 首次的钱 赋值一下
let firstMinimumRevenueNumber: number = Number((Number(sum.toFixed(2)) / 0.35).toFixed(2))
// 第二次就是第一次的值
modalRef.current?.setFieldsValue({ secondMinimumRevenue: (Number(firstMinimumRevenueNumber)).toFixed(2) })
// 给第二次的钱 赋值一下
let secondMinimumRevenueNumber: number = Number((Number(firstMinimumRevenueNumber)).toFixed(2))
// 第三次的钱是第二次的90%
modalRef.current?.setFieldsValue({ thriceMinimumRevenue: (Number(secondMinimumRevenueNumber) * 0.9).toFixed(2) })
} else if (selectFormData?.isFirst === 2) {
// 非首次 这边怎么样都没关系了 等用户自己输入第一次的值之后 再给他补齐 2 3 次
}
}
}
}
}}
@ -650,7 +782,10 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
onChange: (e: any) => {
if (e) {
let sum: number = e * 0.9
modalRef.current?.setFieldsValue({ secondMinimumRevenue: sum.toFixed(2), thriceMinimumRevenue: (Number(sum.toFixed(2)) * 0.9).toFixed(2) })
modalRef.current?.setFieldsValue({
secondMinimumRevenue: e,
thriceMinimumRevenue: sum.toFixed(2)
})
}
}
}}
@ -660,7 +795,7 @@ const RentCalculation: React.FC<{ currentUser: any }> = (props) => {
<ProFormDigit
label={'收益提点比例(%'}
name={'firstReminder'}
initialValue={38}
initialValue={selectFormData?.isFirst === 1 ? 38 : 32}
/>
</Col>
<Divider orientation="left"></Divider>

View File

@ -112,3 +112,18 @@ export async function handlGetPatrolSecurityList(params: any) {
return data.Result_Data.List
}
// 拿到当前服务区的 分类定级
export async function handlGetSPCONTRIBUTIONList(params: any) {
const data = await requestOld(`/Analysis/GetSPCONTRIBUTIONList`, {
method: 'POST',
data: params
})
if (data.Result_Code !== 100) {
return data
}
return data.Result_Data.List
}