update
This commit is contained in:
parent
7f0e90bd01
commit
85b417e367
@ -68,6 +68,11 @@ export default [
|
||||
name: '租金测算',
|
||||
component: "@/pages/RentCalculation/index",
|
||||
},
|
||||
{
|
||||
path: '/rentComparison/index',
|
||||
name: '租金对比',
|
||||
component: "@/pages/rentComparison/index",
|
||||
},
|
||||
|
||||
|
||||
]
|
||||
|
||||
BIN
src/assets/operation.png
Normal file
BIN
src/assets/operation.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
@ -293,6 +293,12 @@ const UserModel: UserModelType = {
|
||||
name: '租金测算',
|
||||
component: "@/pages/RentCalculation/index",
|
||||
},
|
||||
{
|
||||
path: '/rentComparison/index',
|
||||
redirect: '',
|
||||
name: '租金对比',
|
||||
component: "@/pages/rentComparison/index",
|
||||
},
|
||||
]
|
||||
}
|
||||
|
||||
@ -374,6 +380,7 @@ const UserModel: UserModelType = {
|
||||
"/operationReport/securityIssueList",
|
||||
"/operationReport/rectificationStatus",
|
||||
"/RentCalculation/index",
|
||||
"/rentComparison/index",
|
||||
// '/examine/index',
|
||||
// '/examine/modal',
|
||||
// '/examine/question',
|
||||
|
||||
@ -314,8 +314,6 @@ const DigitalElectronics: React.FC<{ currentUser: any }> = (props) => {
|
||||
|
||||
// 撤回发票
|
||||
const handleRevokeBill = async (detail: any) => {
|
||||
console.log('detaildetaildetaildetail', detail);
|
||||
|
||||
let obj: any = {
|
||||
sellerTaxpayerId: publicParams.sellerTaxpayerId,//销方税号
|
||||
orgCode: "",// 组织编号
|
||||
@ -343,7 +341,6 @@ const DigitalElectronics: React.FC<{ currentUser: any }> = (props) => {
|
||||
|
||||
let responseOld = await handleGetForwardJDPJInterface(newTokenReq2)
|
||||
responseOld = JSON.parse(responseOld as any)
|
||||
console.log('responseOldresponseOld', responseOld);
|
||||
|
||||
if (responseOld && (responseOld.success || responseOld.errorCode == 10905)) {
|
||||
return {
|
||||
@ -570,8 +567,6 @@ const DigitalElectronics: React.FC<{ currentUser: any }> = (props) => {
|
||||
SortStr: "BILLDETAIL_ID"
|
||||
})
|
||||
|
||||
console.log('billDetailbillDetail', billDetail);
|
||||
|
||||
let billDetailReq: any = []
|
||||
if (billDetail && billDetail.length > 0) {
|
||||
billDetail.forEach((item: any) => {
|
||||
@ -688,7 +683,6 @@ const DigitalElectronics: React.FC<{ currentUser: any }> = (props) => {
|
||||
PageSize: 999999,
|
||||
SortStr: "BILLDETAIL_ID"
|
||||
})
|
||||
console.log('billDetailbillDetail', billDetail);
|
||||
|
||||
let billDetailReq: any = []
|
||||
if (billDetail && billDetail.length > 0) {
|
||||
@ -767,7 +761,6 @@ const DigitalElectronics: React.FC<{ currentUser: any }> = (props) => {
|
||||
let response: any = await handleGetForwardJDPJInterface(newreq)
|
||||
|
||||
let result: any = JSON.parse(response)
|
||||
console.log('resultresultresult', result);
|
||||
return result
|
||||
}
|
||||
// 退回开票
|
||||
|
||||
@ -34,7 +34,6 @@ const InvoiceSearch: React.FC = () => {
|
||||
// 查看详情
|
||||
const handleViewDetail = (record: any) => {
|
||||
message.info('查看详情功能待开发');
|
||||
console.log('详情数据:', record);
|
||||
};
|
||||
|
||||
// 表格列定义
|
||||
@ -212,7 +211,6 @@ const InvoiceSearch: React.FC = () => {
|
||||
|
||||
// 撤回
|
||||
const handleRevoke = async (params: any) => {
|
||||
console.log('paramsparamsparams', params);
|
||||
const queryData = {
|
||||
sellerTaxpayerId: "91530112MA7MQ2JR9U",
|
||||
serialNos: params.billNo || "",
|
||||
@ -243,8 +241,6 @@ const InvoiceSearch: React.FC = () => {
|
||||
// 红冲
|
||||
const handleRedReversal = async (params: any) => {
|
||||
// 整单红冲 不需要调用红冲接口 申请里面放蓝票信息 就是红冲
|
||||
console.log('paramsparams', params);
|
||||
|
||||
let obj: any = {
|
||||
billNo: "SRM_202509011370",
|
||||
billDate: "2025-09-01",
|
||||
@ -291,7 +287,6 @@ const InvoiceSearch: React.FC = () => {
|
||||
}
|
||||
]
|
||||
}
|
||||
console.log('objobjobj', obj);
|
||||
|
||||
// 构造原始数据
|
||||
const originalData = [obj]; // 将record作为data数组的一项
|
||||
@ -307,7 +302,6 @@ const InvoiceSearch: React.FC = () => {
|
||||
};
|
||||
const response = await handleGetKaiPiao(invoiceData, accessToken);
|
||||
|
||||
console.log('responseresponseresponse', response);
|
||||
|
||||
// const queryData = {
|
||||
// billNo: params?.billNo || "",
|
||||
@ -316,7 +310,6 @@ const InvoiceSearch: React.FC = () => {
|
||||
// sellerTaxpayerId: "91530112MA7MQ2JR9U",
|
||||
// redReason: "111",
|
||||
// };
|
||||
// console.log('queryDataqueryDataqueryData', queryData);
|
||||
|
||||
// // 将data字段进行base64加密
|
||||
// const dataString = JSON.stringify(queryData);
|
||||
@ -329,11 +322,9 @@ const InvoiceSearch: React.FC = () => {
|
||||
// }
|
||||
// // 他这个接口 就一个地址 改不一样的参数就能调不一样的接口
|
||||
// const data = await handleGetInvoiceSearch(req, accessToken)
|
||||
// console.log('datadatadatadata', data);
|
||||
|
||||
// if (data && data.success) {
|
||||
// let res = JSON.parse(decodeURIComponent(escape(atob(data.data))))
|
||||
// console.log('resresresresres', res);
|
||||
// if (res && res.length > 0) {
|
||||
// let result = res[0]
|
||||
// message.success(result.message)
|
||||
@ -347,7 +338,6 @@ const InvoiceSearch: React.FC = () => {
|
||||
// 请求表格数据
|
||||
const request = async (params: any) => {
|
||||
try {
|
||||
console.log('查询参数:', params);
|
||||
let req: any = {
|
||||
appId: "FPY001",
|
||||
appSecret: "FPY001fpy@2023***",
|
||||
@ -356,7 +346,6 @@ const InvoiceSearch: React.FC = () => {
|
||||
language: ""
|
||||
}
|
||||
const token = await handleGetAppToken(req)
|
||||
console.log('tokentokentoken', token);
|
||||
|
||||
let appToken: any = token.data.app_token
|
||||
|
||||
@ -369,7 +358,6 @@ const InvoiceSearch: React.FC = () => {
|
||||
}
|
||||
|
||||
const accessToken: any = await handleGetSDToken(tokenReq)
|
||||
console.log('accessTokenaccessTokenaccessToken', accessToken);
|
||||
setAppToken(appToken)
|
||||
setAccessToken(accessToken.data.access_token)
|
||||
|
||||
@ -391,17 +379,14 @@ const InvoiceSearch: React.FC = () => {
|
||||
data: encryptedData
|
||||
};
|
||||
|
||||
console.log('最终请求参数:', requestParams);
|
||||
|
||||
// 调用查询接口 (这里需要传入正确的code参数)
|
||||
const response = await handleGetInvoiceSearch(requestParams, accessToken.data.access_token);
|
||||
console.log('responseresponseresponseresponse', response);
|
||||
|
||||
|
||||
if (response && response.success) {
|
||||
|
||||
let res = JSON.parse(decodeURIComponent(escape(atob(response.data))))
|
||||
console.log('最终请求结果:', res);
|
||||
let result = res[0].invoiceList
|
||||
|
||||
return { data: result || [], success: true };
|
||||
|
||||
@ -33,16 +33,11 @@ const InvoicingIndex: React.FC<{ currentUser: any }> = (props) => {
|
||||
// 开始刷脸认证的流程
|
||||
const handleGetFacialAuthentication = async () => {
|
||||
let url = window.location.search.split('?')[1]
|
||||
console.log('url', url);
|
||||
|
||||
const params = new URLSearchParams(url);
|
||||
console.log('params', params);
|
||||
let resultObj: any = {};
|
||||
for (const [key, value] of params.entries()) {
|
||||
resultObj[key] = value;
|
||||
}
|
||||
console.log('resultObj', resultObj);
|
||||
|
||||
let code = "menuCloud"
|
||||
|
||||
if (resultObj.UserIdEncrypted) {
|
||||
@ -59,9 +54,7 @@ const InvoicingIndex: React.FC<{ currentUser: any }> = (props) => {
|
||||
// code: code
|
||||
// }
|
||||
// const data = await handleGetBWTokenFun(req)
|
||||
// console.log('data', data);
|
||||
// let token = data.data.data.token
|
||||
// console.log('token', token);
|
||||
|
||||
let codeReq: any = {
|
||||
qrCodeType: 0,
|
||||
@ -69,8 +62,6 @@ const InvoicingIndex: React.FC<{ currentUser: any }> = (props) => {
|
||||
}
|
||||
// 刷脸二维码的值
|
||||
const qrCodeData = await handleGetCertifyQrcode('menuCloud', codeReq)
|
||||
console.log('qrCodeData', qrCodeData);
|
||||
console.log('321', qrCodeData.data.response.qrCode);
|
||||
let length = qrCodeData.data.response.qrCode.split(',') && qrCodeData.data.response.qrCode.split(',').length > 0 ? qrCodeData.data.response.qrCode.split(',').length : 0
|
||||
|
||||
let img = qrCodeData.data.response.qrCode.split(',')[length - 1]
|
||||
@ -93,7 +84,6 @@ const InvoicingIndex: React.FC<{ currentUser: any }> = (props) => {
|
||||
certifyQueryType: 1
|
||||
})
|
||||
let res: any = resultData.data.response
|
||||
console.log('res', res);
|
||||
if (res.certificationStatus == '1') {
|
||||
if (timerRef.current) {
|
||||
clearInterval(timerRef.current)
|
||||
@ -298,8 +288,6 @@ const InvoicingIndex: React.FC<{ currentUser: any }> = (props) => {
|
||||
render: (_, record) => {
|
||||
return <Space>
|
||||
<a onClick={() => {
|
||||
console.log('record', record);
|
||||
|
||||
handleInvoicing(record)
|
||||
}}>
|
||||
开票
|
||||
@ -325,16 +313,12 @@ const InvoicingIndex: React.FC<{ currentUser: any }> = (props) => {
|
||||
pushPhone: obj.pushPhone, // 交付手机
|
||||
pushEmail: obj.pushEmail // 交付邮箱
|
||||
}
|
||||
console.log('req', req);
|
||||
// return
|
||||
const data = await handleGetDeliver('menuCloud', req)
|
||||
console.log('data', data);
|
||||
}
|
||||
|
||||
// 作废
|
||||
const handleCancelInvoicing = async (obj: any) => {
|
||||
console.log('obj', obj);
|
||||
|
||||
const req: any = {
|
||||
taxNo: BWDetailObj.taxNo,
|
||||
serialNo: obj.serialNo,
|
||||
@ -350,7 +334,6 @@ const InvoicingIndex: React.FC<{ currentUser: any }> = (props) => {
|
||||
const handleGetUserInfo = async (UserIdEncrypted: string) => {
|
||||
const req: any = { UserIdEncrypted: UserIdEncrypted }
|
||||
const data = await handleGetUserInfoById(req)
|
||||
console.log('handleGetUserInfo', data);
|
||||
let userDetail: any = data.Result_Data
|
||||
setUserInfo(userDetail)
|
||||
}
|
||||
@ -375,7 +358,6 @@ const InvoicingIndex: React.FC<{ currentUser: any }> = (props) => {
|
||||
headerTitle={<span style={{ color: "#1890ff", fontSize: 14, fontWeight: 600 }}>发票列表</span>}
|
||||
search={{ span: 6 }}
|
||||
request={async (params: any) => {
|
||||
console.log('params', params);
|
||||
// startOf('M').
|
||||
let [state, end] = [moment().format('YYYY-MM-DD 00:00:00'), moment().format('YYYY-MM-DD 23:59:59')]
|
||||
const req: any = {
|
||||
@ -387,9 +369,7 @@ const InvoicingIndex: React.FC<{ currentUser: any }> = (props) => {
|
||||
endDate: end || ''
|
||||
}
|
||||
const data = await handleGetInvoicePageTable('menuCloud', req)
|
||||
console.log('data3232', data);
|
||||
let tableData: any = data.data.response
|
||||
console.log('tableData3232', tableData);
|
||||
|
||||
if (tableData.list && tableData.list.length > 0) {
|
||||
return {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -31,7 +31,305 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.rentCalculateModalContent::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.analysisModalBox {
|
||||
.analysisModalContentBox {
|
||||
width: 100%;
|
||||
max-height: 700px;
|
||||
overflow-y: auto;
|
||||
|
||||
.serverPart {
|
||||
display: flex;
|
||||
//align-items: center;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
height: 70px;
|
||||
border-bottom: 2px solid #EBEDF5;
|
||||
margin-bottom: 16px;
|
||||
|
||||
.serverPartBox {
|
||||
width: 80px;
|
||||
height: 60px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
margin-right: 12px;
|
||||
|
||||
.serverPartBoxBg {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.nameBox {
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
top: 14px;
|
||||
left: 10px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.titleName {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
color: #2858CC;
|
||||
line-height: 20px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.labelName {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 500;
|
||||
font-size: 12px;
|
||||
color: #2858CC;
|
||||
line-height: 12px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
}
|
||||
|
||||
.statusBox {
|
||||
padding: 1px 4px;
|
||||
box-sizing: border-box;
|
||||
color: #fff;
|
||||
font-size: 10px;
|
||||
background: #2ABAC6;
|
||||
border-radius: 0px 8px 0px 8px;
|
||||
z-index: 2;
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.serverPartDetail {
|
||||
height: 60px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
|
||||
.serverPartDetailTop {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.serverPartName {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 600;
|
||||
font-size: 20px;
|
||||
color: #333333;
|
||||
line-height: 28px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.serverPartType {
|
||||
margin-left: 8px;
|
||||
background: linear-gradient(134deg, #FFEED1 0%, #FFE1CD 100%);
|
||||
border-radius: 2px;
|
||||
box-sizing: border-box;
|
||||
color: #FFA509;
|
||||
padding: 0 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.serverPartDetailBottom {
|
||||
display: flex;
|
||||
margin-top: 12px;
|
||||
|
||||
.businessBox {
|
||||
margin-right: 8px;
|
||||
background: #E7F0FF;
|
||||
box-sizing: border-box;
|
||||
padding: 2px 8px;
|
||||
border-radius: 2px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.businessIcon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.businessText {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
color: #1E58BE;
|
||||
line-height: 22px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
margin-right: 4px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.businessValue {
|
||||
font-family: DINAlternate, DINAlternate;
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
color: #1E58BE;
|
||||
line-height: 22px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bigTitlte {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 600;
|
||||
font-size: 20px;
|
||||
color: #333333;
|
||||
line-height: 28px;
|
||||
text-align: left;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.brandBox {
|
||||
display: flex;
|
||||
width: 250px;
|
||||
flex-direction: column;
|
||||
|
||||
.brandIcon {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
}
|
||||
|
||||
.brandName {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
color: #2858CC;
|
||||
line-height: 20px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
width: 170px;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.operateLeft {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 6px;
|
||||
|
||||
.operateIcon {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
.titleName {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
color: #183362;
|
||||
line-height: 24px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.paragraph {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-size: 14px !important;
|
||||
line-height: 28px !important;
|
||||
|
||||
.keynote {
|
||||
font-weight: 600;
|
||||
color: #1890ff;
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
}
|
||||
|
||||
.beforeBluePoint {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.beforeBluePoint::before {
|
||||
content: '';
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
background-color: #1890ff;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left: 1rem;
|
||||
}
|
||||
|
||||
.titleName {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
color: #333333;
|
||||
line-height: 20px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.numberValue {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
color: #243F6E;
|
||||
line-height: 28px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.compare {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
color: #FE7628;
|
||||
line-height: 28px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.unit {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
color: #788395;
|
||||
line-height: 22px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
}
|
||||
|
||||
.proposal {
|
||||
text-indent: 2rem;
|
||||
font-size: 14px !important;
|
||||
line-height: 28px !important;
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
|
||||
.keynote {
|
||||
font-weight: 600;
|
||||
color: #1890ff;
|
||||
}
|
||||
|
||||
.proposalTitle {
|
||||
font-weight: 600;
|
||||
color: #FE7628;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@ -12,6 +12,7 @@ const authority: PageAuthority = {
|
||||
'/operationReport/securityIssueList': ['/operationReport/securityIssueList'],
|
||||
'/operationReport/rectificationStatus': ['/operationReport/rectificationStatus'],
|
||||
'/RentCalculation/index': ['/RentCalculation/index'],
|
||||
'/rentComparison/index': ['/rentComparison/index'],
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -136,8 +136,6 @@ const OperationReport = ({ PATROLID }: DetailProps) => {
|
||||
const handleAddUpdate = async (obj: any) => {
|
||||
// 用参数去判断 两个嵌套的子集 是否已经有数据了 没有的话 就提示
|
||||
let list: any = []
|
||||
console.log('inspectionItemsTableDatainspectionItemsTableData', inspectionItemsTableData);
|
||||
console.log('inspectionItemObjinspectionItemObjinspectionItemObj', inspectionItemObj);
|
||||
if (inspectionItemsTableData && inspectionItemsTableData.length > 0) {
|
||||
list = JSON.parse(JSON.stringify(inspectionItemsTableData))
|
||||
list.forEach((item: any) => {
|
||||
@ -162,9 +160,6 @@ const OperationReport = ({ PATROLID }: DetailProps) => {
|
||||
PATROL_TYPE: pageDataType || 1000,
|
||||
PATROLDETAILList: list
|
||||
}
|
||||
console.log('reqreqreq', req);
|
||||
|
||||
|
||||
|
||||
if (req.PATROLDETAILList && req.PATROLDETAILList.length > 0) {
|
||||
// 只要有一个子集就是 true
|
||||
@ -188,7 +183,6 @@ const OperationReport = ({ PATROLID }: DetailProps) => {
|
||||
value: encryptAES(JSON.stringify(req))
|
||||
}
|
||||
const data = await handleSynchroPATROL(newReq)
|
||||
console.log('datadadsad', data);
|
||||
if (data.Result_Code === 100) {
|
||||
message.success('同步成功!')
|
||||
|
||||
@ -205,7 +199,6 @@ const OperationReport = ({ PATROLID }: DetailProps) => {
|
||||
SPRegionType_ID: id
|
||||
}
|
||||
const data = await handleGetServerpartTree(req)
|
||||
console.log('dsadasda', data);
|
||||
if (data && data.length > 0) {
|
||||
let list = data[0].children
|
||||
setServerPartList(list)
|
||||
@ -271,7 +264,6 @@ const OperationReport = ({ PATROLID }: DetailProps) => {
|
||||
|
||||
// 拿到整改情况的录入数据
|
||||
const handleGetRectificationStatusData = async (formData: any) => {
|
||||
console.log('formDataformData', formData);
|
||||
const req: any = {
|
||||
...formData,
|
||||
PATROL_ID: PATROLID,
|
||||
@ -301,14 +293,12 @@ const OperationReport = ({ PATROLID }: DetailProps) => {
|
||||
SERVERPARTId: id
|
||||
}
|
||||
const data = await handleGetServerpartInfo(req)
|
||||
console.log('datadatadata', data);
|
||||
let list: any = []
|
||||
if (data.RegionInfo && data.RegionInfo.length > 0) {
|
||||
data.RegionInfo.forEach((item: any) => {
|
||||
list.push({ label: item.SERVERPART_REGIONNAME, value: item.SERVERPART_REGION })
|
||||
})
|
||||
}
|
||||
console.log('listlistlist', list);
|
||||
|
||||
setSERVERPARTREGION(list)
|
||||
}
|
||||
@ -329,8 +319,6 @@ const OperationReport = ({ PATROLID }: DetailProps) => {
|
||||
}
|
||||
|
||||
setSaveLoading(true)
|
||||
console.log('resres', res);
|
||||
|
||||
handleAddUpdate(res)
|
||||
})
|
||||
}}>保存</Button>
|
||||
@ -347,7 +335,6 @@ const OperationReport = ({ PATROLID }: DetailProps) => {
|
||||
// 地址栏传参 UserIdEncrypted 为当前登录用户的加密id
|
||||
const search = window.location.search;
|
||||
const addressParams = Object.fromEntries(new URLSearchParams(search).entries());
|
||||
console.log('addressParamsaddressParams', addressParams);
|
||||
const req: any = {
|
||||
UserIdEncrypted: addressParams.UserIdEncrypted
|
||||
}
|
||||
@ -357,7 +344,6 @@ const OperationReport = ({ PATROLID }: DetailProps) => {
|
||||
if (addressParams.dataType) {
|
||||
setPageDataType(Number(addressParams.dataType))
|
||||
}
|
||||
console.log('PATROLIDPATROLIDPATROLIDPATROLID', PATROLID);
|
||||
|
||||
if (PATROLID) {
|
||||
const req: any = {
|
||||
@ -372,15 +358,12 @@ const OperationReport = ({ PATROLID }: DetailProps) => {
|
||||
value: encryptAES(JSON.stringify(req))
|
||||
}
|
||||
const data = await handleGetPATROLList(newReq)
|
||||
console.log('datadatadata3213', data);
|
||||
|
||||
if (data && data.length > 0) {
|
||||
let detail: any = data[0]
|
||||
console.log('detaildetail', detail);
|
||||
|
||||
setCurrentRecord(detail)
|
||||
if (detail.PATROLDETAILList && detail.PATROLDETAILList.length > 0) {
|
||||
console.log('sdada', detail.PATROLDETAILList);
|
||||
let list: any = detail.PATROLDETAILList
|
||||
setInspectionItemsTableData(list)
|
||||
|
||||
@ -443,7 +426,6 @@ const OperationReport = ({ PATROLID }: DetailProps) => {
|
||||
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) => {
|
||||
@ -458,7 +440,6 @@ const OperationReport = ({ PATROLID }: DetailProps) => {
|
||||
(option?.label ?? '').toLowerCase().includes(input.toLowerCase()),
|
||||
optionFilterProp: 'label',
|
||||
onChange: (value: any, option: any) => {
|
||||
console.log('valuevalue', value);
|
||||
handleGetServerPartList(value)
|
||||
if (value) {
|
||||
formRef.current?.setFieldsValue({ SPREGIONTYPE_NAME: option.label })
|
||||
@ -492,7 +473,6 @@ const OperationReport = ({ PATROLID }: DetailProps) => {
|
||||
options={serverPartList}
|
||||
fieldProps={{
|
||||
onChange: (e: any, option: any) => {
|
||||
console.log('e', e);
|
||||
handleGetSERVERPARTREGION(e)
|
||||
if (e) {
|
||||
formRef.current?.setFieldsValue({ SERVERPART_NAME: option.label })
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
import requestCode from "@/utils/requestCode"
|
||||
import requestOld from "@/utils/requestOld"
|
||||
|
||||
// 获取日常巡检表列表
|
||||
@ -159,6 +160,48 @@ export async function handlGetRENTCALCULATIONList(params: any) {
|
||||
}
|
||||
|
||||
|
||||
// 拿到服务区合同列表
|
||||
export async function handlGetREGISTERCOMPACTList(params: any) {
|
||||
const data = await requestOld(`/Compact/GetREGISTERCOMPACTList`, {
|
||||
method: 'POST',
|
||||
data: params
|
||||
})
|
||||
|
||||
if (data.Result_Code !== 100) {
|
||||
return data
|
||||
}
|
||||
|
||||
return data.Result_Data.List
|
||||
}
|
||||
|
||||
// 根据合同获取提成比例列表 的列表
|
||||
export async function handlGetPERCENTAGEOFCOMMISSIONList(params: any) {
|
||||
const data = await requestOld(`/Compact/GetPERCENTAGEOFCOMMISSIONList`, {
|
||||
method: 'POST',
|
||||
data: params
|
||||
})
|
||||
|
||||
if (data.Result_Code !== 100) {
|
||||
return data
|
||||
}
|
||||
|
||||
return data.Result_Data.List
|
||||
}
|
||||
|
||||
// 获取营收和车流的 用来租金测算的基础数据
|
||||
export async function handlGetMonthAnalysis(params: any) {
|
||||
const data = await requestCode(`/BigData/GetMonthAnalysis`, {
|
||||
method: 'GET',
|
||||
params
|
||||
})
|
||||
|
||||
if (data.Result_Code !== 100) {
|
||||
return data
|
||||
}
|
||||
|
||||
return data.Result_Data.List
|
||||
}
|
||||
|
||||
// 租金测算的列表接口
|
||||
export async function handlGetDeleteRENTCALCULATION(params: any) {
|
||||
const data = await requestOld(`/Analysis/DeleteRENTCALCULATION`, {
|
||||
|
||||
@ -60,6 +60,7 @@ const InvoiceDetail = ({ showDetail, setShowDetail, parentRow, setParentRow }: P
|
||||
align: 'left',
|
||||
width: 200,
|
||||
dataIndex: "TABLE_NAME",
|
||||
ellipsis: true,
|
||||
render: (_, record) => {
|
||||
return isEdit ? <Input defaultValue={record.TABLE_NAME} onBlur={(e: any) => {
|
||||
console.log('eee', e);
|
||||
@ -76,9 +77,10 @@ const InvoiceDetail = ({ showDetail, setShowDetail, parentRow, setParentRow }: P
|
||||
},
|
||||
{
|
||||
title: <div style={{ textAlign: 'center' }}>商品条码</div>,
|
||||
align: 'center',
|
||||
width: 120,
|
||||
dataIndex: "ITEM_ID"
|
||||
align: 'left',
|
||||
width: 150,
|
||||
dataIndex: "ITEM_ID",
|
||||
ellipsis: true
|
||||
},
|
||||
{
|
||||
title: <div style={{ textAlign: 'center' }}>规格型号</div>,
|
||||
|
||||
583
src/pages/rentComparison/index.tsx
Normal file
583
src/pages/rentComparison/index.tsx
Normal file
@ -0,0 +1,583 @@
|
||||
import LeftSelectTree from "@/components/leftSelectTree/leftSelectTree";
|
||||
import { encryptAES } from "@/utils/handleAes";
|
||||
import { useRef, useState } from "react";
|
||||
import { connect } from "umi";
|
||||
import { handlGetMonthAnalysis, handlGetPERCENTAGEOFCOMMISSIONList, handlGetREGISTERCOMPACTList, handlGetRENTCALCULATIONList, handlGetSPCONTRIBUTIONList } from "../operationReport/service";
|
||||
import { handleGetPassportInfoById } from "../DigitalElectronics/service";
|
||||
import { ActionType, FormInstance, ProTable } from "@ant-design/pro-components";
|
||||
import moment from "moment";
|
||||
import { Modal, Tooltip } from "antd";
|
||||
import './style.less'
|
||||
import operation from '../../assets/operation.png'
|
||||
|
||||
const rentComparison: React.FC<{ currentUser: any }> = (props) => {
|
||||
const actionRef = useRef<ActionType>();
|
||||
const formRef = useRef<FormInstance>();
|
||||
// 树相关的属性和方法
|
||||
const [selectedId, setSelectedId] = useState<string>()
|
||||
const [collapsible, setCollapsible] = useState<boolean>(false)
|
||||
// 当前的用户信息
|
||||
const [userInfoDetail, setUserInfoDetail] = useState<any>()
|
||||
// 详情悬浮框
|
||||
const [detailModal, setDetailModal] = useState<boolean>(false)
|
||||
// 当前行数据
|
||||
const [currentRow, setCurrentRow] = useState<any>()
|
||||
// 表格的默认搜索条件
|
||||
const [searchParams, setSearchParams] = useState<any>()
|
||||
// 悬浮框里面 需要显示的内容的总体对象
|
||||
const [currentObj, setCurrentObj] = useState<any>()
|
||||
// 对比的 排名前五的数据
|
||||
const [top5Data, setTop5Data] = useState<any>()
|
||||
// 悬浮框在请求数据的时候的加载效果
|
||||
const [modalLoading, setModalLoading] = useState<boolean>(false)
|
||||
|
||||
const SERVERPART_TYPEObj: any = {
|
||||
1000: "立标杆",
|
||||
2000: "提能级",
|
||||
3000: "稳营收",
|
||||
4000: "保功能",
|
||||
}
|
||||
|
||||
|
||||
const columns: any = [
|
||||
{
|
||||
title: "统计日期",
|
||||
dataIndex: "staticDate",
|
||||
hideInTable: true,
|
||||
valueType: "dateRange",
|
||||
initialValue: [moment().startOf('M'), moment()],
|
||||
search: {
|
||||
transform: (value: any) => {
|
||||
return {
|
||||
COMPACT_STARTDATE_End: moment().startOf('y').format('YYYY-MM-DD'),
|
||||
COMPACT_ENDDATE_Start: moment().format('YYYY-MM-DD')
|
||||
};
|
||||
},
|
||||
},
|
||||
fieldProps: {
|
||||
picker: "day",
|
||||
format: 'YYYY-MM-DD',
|
||||
}
|
||||
},
|
||||
{
|
||||
title: "服务区名称",
|
||||
dataIndex: "SERVERPART_NAME",
|
||||
width: 150,
|
||||
hideInSearch: true,
|
||||
ellipsis: true,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: "合同名称",
|
||||
dataIndex: "COMPACT_NAME",
|
||||
width: 300,
|
||||
hideInSearch: true,
|
||||
ellipsis: true,
|
||||
align: 'center',
|
||||
render: (_, record) => {
|
||||
return record?.COMPACT_NAME ?
|
||||
<a onClick={() => {
|
||||
setModalLoading(true)
|
||||
setCurrentRow(record)
|
||||
setDetailModal(true)
|
||||
}}>{record?.COMPACT_NAME || ""}</a> : ""
|
||||
}
|
||||
},
|
||||
{
|
||||
title: "合同格式",
|
||||
dataIndex: "ISFORMAT",
|
||||
width: 150,
|
||||
hideInSearch: true,
|
||||
ellipsis: true,
|
||||
valueType: 'select',
|
||||
valueEnum: {
|
||||
1000: "联合经营",
|
||||
2000: "委托运营管理",
|
||||
3000: "固定租金",
|
||||
4000: "业主自营",
|
||||
},
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: <div style={{ textAlign: 'center' }}>合同金额(万元)</div>,
|
||||
dataIndex: "COMPACT_AMOUNT",
|
||||
width: 150,
|
||||
hideInSearch: true,
|
||||
ellipsis: true,
|
||||
align: 'right',
|
||||
valueType: 'digit'
|
||||
},
|
||||
{
|
||||
title: <div style={{ textAlign: 'center' }}>履约保证金(万元)</div>,
|
||||
dataIndex: "SECURITYDEPOSIT",
|
||||
width: 150,
|
||||
hideInSearch: true,
|
||||
ellipsis: true,
|
||||
align: 'right',
|
||||
valueType: 'digit'
|
||||
},
|
||||
{
|
||||
title: <div style={{ textAlign: 'center' }}>合同期限(天)</div>,
|
||||
dataIndex: "DURATIONDAY",
|
||||
width: 150,
|
||||
hideInSearch: true,
|
||||
ellipsis: true,
|
||||
align: 'right',
|
||||
valueType: 'digit'
|
||||
},
|
||||
{
|
||||
title: "开始时间",
|
||||
dataIndex: "COMPACT_STARTDATE",
|
||||
width: 150,
|
||||
hideInSearch: true,
|
||||
ellipsis: true,
|
||||
align: 'center',
|
||||
render: (_, record) => {
|
||||
return record?.COMPACT_STARTDATE ? moment(record?.COMPACT_STARTDATE).format('YYYY-MM-DD') : ""
|
||||
}
|
||||
},
|
||||
{
|
||||
title: "结束时间",
|
||||
dataIndex: "COMPACT_ENDDATE",
|
||||
width: 150,
|
||||
hideInSearch: true,
|
||||
ellipsis: true,
|
||||
align: 'center',
|
||||
render: (_, record) => {
|
||||
return record?.COMPACT_ENDDATE ? moment(record?.COMPACT_ENDDATE).format('YYYY-MM-DD') : ""
|
||||
}
|
||||
},
|
||||
{
|
||||
title: "甲方",
|
||||
dataIndex: "FIRSTPART_NAME",
|
||||
width: 250,
|
||||
hideInSearch: true,
|
||||
ellipsis: true,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: "乙方",
|
||||
dataIndex: "SECONDPART_NAME",
|
||||
width: 250,
|
||||
hideInSearch: true,
|
||||
ellipsis: true,
|
||||
align: 'center'
|
||||
}
|
||||
]
|
||||
|
||||
// 租金对比
|
||||
const handleGetRentComparison = async () => {
|
||||
console.log('dsakdas', currentRow);
|
||||
// 先拿到当前合同的提成比例
|
||||
const req: any = {
|
||||
searchParameter: {
|
||||
REGISTERCOMPACT_IDS: currentRow?.REGISTERCOMPACT_ID,
|
||||
STARTDATE_End: searchParams?.COMPACT_ENDDATE_Start || "",
|
||||
ENDDATE_Start: searchParams?.COMPACT_STARTDATE_End || "",
|
||||
},
|
||||
PageIndex: 1,
|
||||
PageSize: 999999,
|
||||
}
|
||||
console.log('reqreqreqreq', req);
|
||||
let newReq: any = {
|
||||
name: "",
|
||||
value: encryptAES(JSON.stringify(req))
|
||||
}
|
||||
const data = await handlGetPERCENTAGEOFCOMMISSIONList(newReq)
|
||||
console.log('dakdjsakldjsa', data);
|
||||
// 可能会查出来多条 我们取最新的 就是后面的那条
|
||||
// 提成比例的数据 这是取出当期的
|
||||
let commissionObj: any = {}
|
||||
if (data && data.length > 0) {
|
||||
commissionObj = data[data.length - 1]
|
||||
}
|
||||
|
||||
// 现在取出上一期的
|
||||
let previousReq: any = {
|
||||
searchParameter: {
|
||||
REGISTERCOMPACT_IDS: currentRow?.REGISTERCOMPACT_ID,
|
||||
STARTDATE_End: moment(searchParams?.COMPACT_ENDDATE_Start).subtract(1, 'y').format('YYYY-MM-DD'),
|
||||
ENDDATE_Start: moment(searchParams?.COMPACT_STARTDATE_End).subtract(1, 'y').format('YYYY-MM-DD'),
|
||||
},
|
||||
PageIndex: 1,
|
||||
PageSize: 999999,
|
||||
}
|
||||
let newPreviousReq: any = {
|
||||
name: "",
|
||||
value: encryptAES(JSON.stringify(previousReq))
|
||||
}
|
||||
|
||||
const previousData = await handlGetPERCENTAGEOFCOMMISSIONList(newPreviousReq)
|
||||
console.log('previousDatapreviousDatapreviousData', previousData);
|
||||
// 拿到上一期的数据
|
||||
let commissionObjPrevious: any = {}
|
||||
if (previousData && previousData.length > 0) {
|
||||
commissionObjPrevious = previousData[previousData.length - 1]
|
||||
}
|
||||
console.log('commissionObjPreviouscommissionObjPreviouscommissionObjPrevious', commissionObjPrevious);
|
||||
|
||||
// 拿到营收数据
|
||||
// 这里的时间 先写死 25年1月到8月
|
||||
const revenueReq: any = {
|
||||
StatisticsDate: "2025/12/31",
|
||||
StartDate: "2025/01/01",
|
||||
EndDate: "2025/08/31",
|
||||
Serverpart_ID: currentRow?.SERVERPART_ID
|
||||
}
|
||||
|
||||
|
||||
const revenueData: any = await handlGetMonthAnalysis(revenueReq)
|
||||
console.log('revenueDatarevenueDatarevenueData', revenueData);
|
||||
// 这是一个月一个月给的营收数据的数组 我们算全年的 就 取平均 然后 *12
|
||||
let yearRevenueSum: number = 0
|
||||
if (revenueData && revenueData.length > 0) {
|
||||
// 取营收的平均值 车流当前显示的内容 不需要车流数据了
|
||||
let revenueSum: number = 0
|
||||
let revenueAvg: number = 0
|
||||
revenueData.forEach((item: any) => {
|
||||
revenueSum += item.RevenueAmount
|
||||
})
|
||||
revenueAvg = Number((revenueSum / revenueData.length).toFixed(2))
|
||||
yearRevenueSum = revenueAvg * 12
|
||||
}
|
||||
|
||||
// 全年营收
|
||||
console.log('yearRevenueSumyearRevenueSumyearRevenueSumyearRevenueSum', yearRevenueSum);
|
||||
// 提成比例的数据对象
|
||||
console.log('commissionObjcommissionObj', commissionObj);
|
||||
let nowProfit: number = Number(((Number(yearRevenueSum) * Number(commissionObj.GUARANTEERATIO / 100)) / 10000).toFixed(2))
|
||||
let res: any = {
|
||||
...currentRow,
|
||||
noRate: commissionObj.GUARANTEERATIO ? false : true,
|
||||
max: commissionObj?.EXCESSRATIO || commissionObj?.GUARANTEERATIO || "",
|
||||
min: commissionObj?.GUARANTEERATIO || "",
|
||||
MINTURNOVERMin: commissionObj?.MINTURNOVER || "",
|
||||
MINTURNOVERMax: commissionObj?.MINTURNOVER || "",
|
||||
avg: commissionObj?.GUARANTEERATIO || "",
|
||||
MINTURNOVERAvg: commissionObj?.MINTURNOVER || "",
|
||||
MINTURNOVER: commissionObj?.MINTURNOVER || "",
|
||||
GUARANTEERATIO: commissionObj?.GUARANTEERATIO || "",
|
||||
profit: Number((yearRevenueSum / 10000).toFixed(2)),
|
||||
avgThanNowRate: commissionObjPrevious.GUARANTEERATIO > commissionObj.GUARANTEERATIO,
|
||||
oldRate: commissionObjPrevious.GUARANTEERATIO,
|
||||
reduce: commissionObjPrevious.GUARANTEERATIO - commissionObj.GUARANTEERATIO,
|
||||
nowRate: commissionObj.GUARANTEERATIO,
|
||||
BUSINESS_TYPEMINTURNOVER: commissionObjPrevious.MINTURNOVER,
|
||||
nowGUARANTEERATIO: commissionObjPrevious.GUARANTEERATIO,
|
||||
differenceGUARANTEERATIO: commissionObj.GUARANTEERATIO - commissionObjPrevious.GUARANTEERATIO,
|
||||
|
||||
MINTURNOVERAvgThanAvg: commissionObjPrevious.MINTURNOVER > commissionObj.MINTURNOVER,
|
||||
addMINTURNOVER: nowProfit - commissionObj.MINTURNOVER,
|
||||
addMINTURNOVERRate: commissionObjPrevious.MINTURNOVER ? (nowProfit / commissionObjPrevious.MINTURNOVER * 100).toFixed(2) : "",
|
||||
nowProfit: nowProfit,
|
||||
currentThanRecently: commissionObj.MINTURNOVER > commissionObjPrevious.MINTURNOVER,
|
||||
recentREVENUE_AMOUNT: Number((yearRevenueSum).toFixed(2)),
|
||||
nowMINTURNOVER: commissionObj.MINTURNOVER
|
||||
}
|
||||
|
||||
// 这里再添加判断 之前是有业态 所以知道行业提成比例 现在也没有业态 那么就拿我们之前租金测算出来的 第三次比例 当作 他的比例去计算
|
||||
if (res.noRate) {
|
||||
let contributionReq: any = {
|
||||
searchParameter: {
|
||||
SERVERPART_IDS: currentRow?.SERVERPART_ID
|
||||
},
|
||||
PageIndex: 1,
|
||||
PageSize: 999999,
|
||||
}
|
||||
|
||||
let newContributionReq: any = {
|
||||
name: "",
|
||||
value: encryptAES(JSON.stringify(contributionReq))
|
||||
}
|
||||
const contributionData = await handlGetSPCONTRIBUTIONList(newContributionReq)
|
||||
console.log('contributionDatacontributionDatacontributionData', contributionData);
|
||||
// 拿到分类定级
|
||||
if (contributionData && contributionData.length > 0) {
|
||||
let SERVERPART_TYPEStr: string = contributionData[0].SERVERPART_TYPE
|
||||
|
||||
|
||||
const req: any = {
|
||||
searchParameter: {
|
||||
SERVERPART_IDS: currentRow?.SERVERPART_ID,
|
||||
SERVERPART_TYPES: SERVERPART_TYPEStr,
|
||||
RENTCALCULATION_STATE: 1
|
||||
},
|
||||
PageIndex: 1,
|
||||
PageSize: 999999,
|
||||
SortStr: "OPERATE_DATE desc"
|
||||
}
|
||||
let newReq: any = {
|
||||
name: "",
|
||||
value: encryptAES(JSON.stringify(req))
|
||||
}
|
||||
const data = await handlGetRENTCALCULATIONList(newReq)
|
||||
console.log('dskadjaskldjaslkdjsal', data);
|
||||
if (data && data.length > 0) {
|
||||
// 建议提成比例
|
||||
let newGUARANTEERATIO: number = Number(data[0].THIRD_PURCHASER_RATE)
|
||||
let nowProfit: number = Number(((Number(yearRevenueSum) * Number(newGUARANTEERATIO / 100)) / 10000).toFixed(2))
|
||||
|
||||
res = {
|
||||
...res,
|
||||
avgThanNowRate: false,
|
||||
nowRate: newGUARANTEERATIO,
|
||||
oldRate: newGUARANTEERATIO,
|
||||
MINTURNOVERAvgThanAvg: nowProfit < commissionObj?.MINTURNOVER,
|
||||
nowProfit: nowProfit,
|
||||
addMINTURNOVER: nowProfit - commissionObj.MINTURNOVER,
|
||||
addMINTURNOVERRate: commissionObjPrevious.MINTURNOVER ? (nowProfit / commissionObjPrevious.MINTURNOVER * 100).toFixed(2) : "",
|
||||
currentThanRecently: commissionObj.MINTURNOVER > commissionObjPrevious.MINTURNOVER,
|
||||
recentREVENUE_AMOUNT: Number((yearRevenueSum).toFixed(2)),
|
||||
nowMINTURNOVER: commissionObj.MINTURNOVER
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
console.log('dklashdoashldjashkl', res);
|
||||
|
||||
setCurrentObj(res)
|
||||
|
||||
setModalLoading(false)
|
||||
}
|
||||
|
||||
const truncateDecimal = (num: number) => {
|
||||
if (!num && num !== 0) {
|
||||
return 0
|
||||
}
|
||||
// 先用 toFixed 保留两位小数以消除精度问题
|
||||
const fixedNum = parseFloat(num.toFixed(10));
|
||||
// 将数字转换为字符串
|
||||
let strNum = fixedNum.toString();
|
||||
|
||||
// 找到小数点的位置
|
||||
const dotIndex = strNum.indexOf('.');
|
||||
|
||||
// 如果有小数点且小数点后有至少两位,则截取
|
||||
if (dotIndex !== -1) {
|
||||
strNum = strNum.substring(0, dotIndex + 3);
|
||||
}
|
||||
|
||||
// 转换回数字类型
|
||||
return parseFloat(strNum);
|
||||
}
|
||||
|
||||
return (
|
||||
<div style={{ height: 'calc(100vh - 100px)', backgroundColor: '#fff', display: 'flex' }}>
|
||||
<LeftSelectTree setSelectedId={setSelectedId} setCollapsible={setCollapsible} collapsible={collapsible} />
|
||||
<div style={{
|
||||
width: !collapsible ? 'calc(100% - 300px)' : 'calc(100% - 60px)',
|
||||
paddingTop: 0,
|
||||
paddingBottom: 0,
|
||||
paddingRight: 0
|
||||
}}>
|
||||
<ProTable
|
||||
actionRef={actionRef}
|
||||
formRef={formRef}
|
||||
columns={columns}
|
||||
bordered
|
||||
scroll={{ x: '100%', y: 'calc(100vh - 450px)' }}
|
||||
headerTitle={'合同备案列表'}
|
||||
search={{ span: 6, }}
|
||||
request={async (params) => {
|
||||
// 地址栏传参 UserIdEncrypted 为当前登录用户的加密id
|
||||
const search = window.location.search;
|
||||
const addressParams = Object.fromEntries(new URLSearchParams(search).entries());
|
||||
const reqtoken: any = {
|
||||
UserIdEncrypted: addressParams.UserIdEncrypted
|
||||
}
|
||||
const userInfo = await handleGetPassportInfoById(reqtoken)
|
||||
setUserInfoDetail(userInfo)
|
||||
if (!selectedId) {
|
||||
return { data: [], success: true }
|
||||
}
|
||||
|
||||
const req: any = {
|
||||
searchParameter: {
|
||||
COMPACT_TYPE: 530001,
|
||||
COMPACT_DETAILS: 1000,
|
||||
SERVERPART_IDS: selectedId,
|
||||
COMPACT_STARTDATE_End: params?.COMPACT_STARTDATE_End || "",
|
||||
COMPACT_ENDDATE_Start: params?.COMPACT_ENDDATE_Start || "",
|
||||
},
|
||||
PageIndex: 1,
|
||||
PageSize: 999999,
|
||||
SortStr: "MODIFYDATE desc"
|
||||
}
|
||||
let newReq: any = {
|
||||
name: "",
|
||||
value: encryptAES(JSON.stringify(req))
|
||||
}
|
||||
setSearchParams(params)
|
||||
const data = await handlGetREGISTERCOMPACTList(newReq)
|
||||
console.log('datadatadatadata', data);
|
||||
|
||||
if (data && data.length > 0) {
|
||||
return { data, success: true }
|
||||
}
|
||||
return { data: [], success: true }
|
||||
}}
|
||||
toolbar={{
|
||||
actions: [
|
||||
|
||||
]
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
||||
<Modal
|
||||
title={'租金对比'}
|
||||
destroyOnClose
|
||||
width={1200}
|
||||
open={detailModal}
|
||||
className="rentComparisonModalBox"
|
||||
onCancel={() => {
|
||||
setCurrentRow(undefined)
|
||||
setDetailModal(false)
|
||||
}}
|
||||
footer={false}
|
||||
afterOpenChange={(open: boolean) => {
|
||||
if (open) {
|
||||
// 获取租金对比的数据 并计算数据
|
||||
handleGetRentComparison()
|
||||
}
|
||||
}}
|
||||
loading={modalLoading}
|
||||
>
|
||||
<div className="analysisModalContentBox">
|
||||
<div className={'serverPart'}>
|
||||
<div className={'serverPartDetail'}>
|
||||
<div className={'serverPartDetailTop'}>
|
||||
<span className={'serverPartName'}>{currentObj?.SERVERPART_NAME}</span>
|
||||
<div className={'serverPartType'}>{SERVERPART_TYPEObj[currentObj?.SERVERPART_TYPE]}</div>
|
||||
</div>
|
||||
<div className="bigTitlte">{`${currentObj?.COMPACT_NAME || ''}`}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className={'operateLeft'}>
|
||||
<img className={'operateIcon'} src={operation} />
|
||||
<span className={'titleName'}>招商分析</span>
|
||||
</div>
|
||||
<div style={{ fontWeight: 600, color: '#FE7628' }}>通过查询云南彩云驿所有经营项目数据:</div>
|
||||
|
||||
<div className="paragraph" style={{ textIndent: '2rem' }}>
|
||||
大模型调用租金收益和服务区整体营收,2项核心数据指标,对各候选项目的潜在收益及服务区适应性进行综合衡量,优化即将到期得
|
||||
<span className="keynote">{currentObj?.SERVERPART_NAME}</span>
|
||||
的
|
||||
<span className="keynote">{currentObj?.COMPACT_NAME}</span>
|
||||
具体分析如下:
|
||||
</div>
|
||||
|
||||
<div className="proposal" style={{ marginTop: '12px' }}>
|
||||
<div style={{ marginTop: '12px' }}>
|
||||
当前在营项目的提成比例为:{
|
||||
currentObj?.noRate ? '固定租金' :
|
||||
<span>{currentObj?.min === currentObj?.max ?
|
||||
<span>
|
||||
<span className="keynote">{currentObj?.max}%</span>
|
||||
</span> :
|
||||
<span>
|
||||
<span className="keynote">{currentObj?.min}%</span>—
|
||||
<span className="keynote">{currentObj?.max}%</span>
|
||||
</span>}</span>
|
||||
},保底租金为:{
|
||||
currentObj?.MINTURNOVERMin === currentObj?.MINTURNOVERMax ?
|
||||
<span className="keynote">{currentObj?.MINTURNOVERMin}</span> :
|
||||
<span>
|
||||
<span className="keynote">{currentObj?.MINTURNOVERMin}</span>万元—
|
||||
<span className="keynote">{currentObj?.MINTURNOVERMax}</span>
|
||||
</span>
|
||||
}万元,平均提成比例:{currentObj?.noRate ? '固定租金' : <span className="keynote">{currentObj?.avg}%</span>},平均保底租金为:<span className="keynote">{currentObj?.MINTURNOVERAvg}万元</span>,
|
||||
</div>
|
||||
<div>
|
||||
<span className="keynote">{`${currentObj?.COMPACT_NAME}`}</span>目前保底租金为<span className="keynote">{currentObj?.MINTURNOVER || ''}</span>万/年,
|
||||
{
|
||||
currentObj?.noRate ?
|
||||
'' :
|
||||
<span>提成比例<span className="keynote">{currentObj?.GUARANTEERATIO || '-'}%,</span></span>
|
||||
}
|
||||
<Tooltip title={currentObj?.indexRevenue || ''}>
|
||||
累计盈利:<span className="keynote">{currentObj?.profit || ''}</span>万元
|
||||
</Tooltip>
|
||||
</div>
|
||||
|
||||
|
||||
<div style={{ marginTop: '12px' }}><span className="proposalTitle">租金提成建议</span>:</div>
|
||||
<div style={{ fontWeight: 600 }}>提成比例{
|
||||
currentObj?.avgThanNowRate ?
|
||||
<span>
|
||||
<Tooltip title={`${currentObj?.oldRate}%${currentObj?.reduce ? `-${currentObj.reduce}%` : ''}`}>
|
||||
<span className="keynote" style={{ color: 'red' }}>{currentObj?.nowRate || ''}%</span>
|
||||
</Tooltip>
|
||||
—
|
||||
<span className="keynote" style={{ color: 'red' }}>{currentObj?.avg || ''}%</span>
|
||||
{
|
||||
currentObj?.BUSINESS_TYPE === 2000 ?
|
||||
<span>(原合同固定租金:<span className="keynote">{currentObj?.BUSINESS_TYPEMINTURNOVER || ''}</span>万/年)</span> :
|
||||
<span>(原合同提成比例<span className="keynote">{currentObj?.nowGUARANTEERATIO || ''}%</span>
|
||||
{
|
||||
currentObj?.differenceGUARANTEERATIO ?
|
||||
<span>,{currentObj?.differenceGUARANTEERATIO > 0 ? '优于' : currentObj?.differenceGUARANTEERATIO < 0 ? '下浮' : ''}<span className="keynote">{currentObj?.differenceGUARANTEERATIO || ''}%</span></span> : ''
|
||||
}
|
||||
)
|
||||
</span>
|
||||
}
|
||||
</span> :
|
||||
<span>
|
||||
<Tooltip title={`${currentObj?.oldRate}%${currentObj?.reduce ? `-${currentObj.reduce}%` : ''}`}>
|
||||
<span className="keynote" style={{ color: 'red' }}>{currentObj?.nowRate || ''}%</span>
|
||||
</Tooltip>
|
||||
{
|
||||
currentObj?.noRate ?
|
||||
<span>(原合同固定租金:<span className="keynote">{currentObj?.BUSINESS_TYPEMINTURNOVER || ''}</span>万/年)</span> :
|
||||
<span>(原合同提成比例<span className="keynote">{currentObj?.nowGUARANTEERATIO || ''}%</span>
|
||||
{
|
||||
currentObj?.differenceGUARANTEERATIO ?
|
||||
<span>,{currentObj?.differenceGUARANTEERATIO > 0 ? '优于' : currentObj?.differenceGUARANTEERATIO < 0 ? '下浮' : ''}
|
||||
<span className="keynote">{currentObj?.differenceGUARANTEERATIO || ''}%</span>
|
||||
</span> : ''
|
||||
}
|
||||
)</span>
|
||||
}
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
<div style={{ fontWeight: 600 }}>保底租金
|
||||
{
|
||||
currentObj?.MINTURNOVERAvgThanAvg ?
|
||||
<span>
|
||||
{/* title={`${currentObj?.currentThanRecently ? '当前' : '上个'}合同年的对客销售总额${truncateDecimal(currentObj?.recentREVENUE_AMOUNT / 10000)}万元×${currentObj?.nowRate || ''}% = ${currentObj?.nowProfit}万元,保底租金${currentObj?.addMINTURNOVER>0?'优于':currentObj?.addMINTURNOVER<0?'下浮':''}${currentObj?.addMINTURNOVER}万/年。`} */}
|
||||
<Tooltip title={currentObj?.BUSINESS_TYPE === 2000 ? `` : `比原来${currentObj?.addMINTURNOVER > 0 ? '优于' : currentObj?.addMINTURNOVER < 0 ? '下浮' : ''}${currentObj?.addMINTURNOVER}万元,${currentObj?.addMINTURNOVERRate > 0 ? '提升' : currentObj?.addMINTURNOVERRate < 0 ? '降低' : ''}${Math.abs(currentObj?.addMINTURNOVERRate)}%`}>
|
||||
<span className="keynote" style={{ color: 'red' }}>{currentObj?.nowProfit}</span>万元
|
||||
</Tooltip>
|
||||
—
|
||||
<span className="keynote" style={{ color: 'red' }}>{currentObj?.MINTURNOVERAvg}万元</span>
|
||||
({currentObj?.currentThanRecently ? '当前' : '上个'}合同年的对客销售总额<span className="keynote">{((currentObj?.recentREVENUE_AMOUNT / 10000).toFixed(2))}</span>万元×<span className="keynote">{currentObj?.nowRate || ''}%</span> = <span className="keynote">{currentObj?.nowProfit}</span>万元,原合同保底租金<span className="keynote">{currentObj?.BUSINESS_TYPE === 2000 ? currentObj?.BUSINESS_TYPEMINTURNOVER : currentObj?.nowMINTURNOVER}</span>万元,{currentObj?.addMINTURNOVER > 0 ? '优于' : currentObj?.addMINTURNOVER < 0 ? '下浮' : ''}<span className="keynote">{currentObj?.addMINTURNOVER}</span>万/年)
|
||||
</span>
|
||||
:
|
||||
<span>
|
||||
<Tooltip title={currentObj?.BUSINESS_TYPE === 2000 ? `` : `比原来${currentObj?.addMINTURNOVER > 0 ? '优于' : currentObj?.addMINTURNOVER < 0 ? '下浮' : ''}${currentObj?.addMINTURNOVER}万元,${currentObj?.addMINTURNOVERRate > 0 ? '提升' : currentObj?.addMINTURNOVERRate < 0 ? '降低' : ''}${Math.abs(currentObj?.addMINTURNOVERRate)}%`}>
|
||||
<span className="keynote" style={{ color: 'red' }}>{currentObj?.nowProfit}</span>万元
|
||||
</Tooltip>
|
||||
({currentObj?.currentThanRecently ? '当前' : '上个'}合同年的对客销售总额<span className="keynote">{((currentObj?.recentREVENUE_AMOUNT / 10000).toFixed(2))}</span>万元×<span className="keynote">{currentObj?.nowRate || ''}%</span> = <span className="keynote">{currentObj?.nowProfit}</span>万元,原合同保底租金<span className="keynote">{currentObj?.BUSINESS_TYPE === 2000 ? currentObj?.BUSINESS_TYPEMINTURNOVER : currentObj?.nowMINTURNOVER}</span>万元,{currentObj?.addMINTURNOVER > 0 ? '优于' : currentObj?.addMINTURNOVER < 0 ? '下浮' : ''}<span className="keynote">{currentObj?.addMINTURNOVER}</span>万/年)
|
||||
</span>
|
||||
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</Modal>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default connect(({ user }: ConnectState) => ({
|
||||
currentUser: user.data
|
||||
}))(rentComparison);
|
||||
297
src/pages/rentComparison/style.less
Normal file
297
src/pages/rentComparison/style.less
Normal file
@ -0,0 +1,297 @@
|
||||
.rentComparisonModalBox {
|
||||
.analysisModalContentBox {
|
||||
width: 100%;
|
||||
max-height: 700px;
|
||||
overflow-y: auto;
|
||||
|
||||
.serverPart {
|
||||
display: flex;
|
||||
//align-items: center;
|
||||
justify-content: space-between;
|
||||
width: 100%;
|
||||
height: 70px;
|
||||
border-bottom: 2px solid #EBEDF5;
|
||||
margin-bottom: 16px;
|
||||
|
||||
.serverPartBox {
|
||||
width: 80px;
|
||||
height: 60px;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
margin-right: 12px;
|
||||
|
||||
.serverPartBoxBg {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.nameBox {
|
||||
position: absolute;
|
||||
z-index: 2;
|
||||
top: 14px;
|
||||
left: 10px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
.titleName {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
color: #2858CC;
|
||||
line-height: 20px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.labelName {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 500;
|
||||
font-size: 12px;
|
||||
color: #2858CC;
|
||||
line-height: 12px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
}
|
||||
|
||||
.statusBox {
|
||||
padding: 1px 4px;
|
||||
box-sizing: border-box;
|
||||
color: #fff;
|
||||
font-size: 10px;
|
||||
background: #2ABAC6;
|
||||
border-radius: 0px 8px 0px 8px;
|
||||
z-index: 2;
|
||||
display: inline-block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.serverPartDetail {
|
||||
height: 60px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
|
||||
.serverPartDetailTop {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.serverPartName {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 600;
|
||||
font-size: 20px;
|
||||
color: #333333;
|
||||
line-height: 28px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.serverPartType {
|
||||
margin-left: 8px;
|
||||
background: linear-gradient(134deg, #FFEED1 0%, #FFE1CD 100%);
|
||||
border-radius: 2px;
|
||||
box-sizing: border-box;
|
||||
color: #FFA509;
|
||||
padding: 0 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.serverPartDetailBottom {
|
||||
display: flex;
|
||||
margin-top: 12px;
|
||||
|
||||
.businessBox {
|
||||
margin-right: 8px;
|
||||
background: #E7F0FF;
|
||||
box-sizing: border-box;
|
||||
padding: 2px 8px;
|
||||
border-radius: 2px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.businessIcon {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.businessText {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
color: #1E58BE;
|
||||
line-height: 22px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
margin-right: 4px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.businessValue {
|
||||
font-family: DINAlternate, DINAlternate;
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
color: #1E58BE;
|
||||
line-height: 22px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.bigTitlte {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 600;
|
||||
font-size: 20px;
|
||||
color: #333333;
|
||||
line-height: 28px;
|
||||
text-align: left;
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
.brandBox {
|
||||
display: flex;
|
||||
width: 250px;
|
||||
flex-direction: column;
|
||||
|
||||
.brandIcon {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
}
|
||||
|
||||
.brandName {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
color: #2858CC;
|
||||
line-height: 20px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
width: 170px;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.operateLeft {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 6px;
|
||||
|
||||
.operateIcon {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
margin-right: 6px;
|
||||
}
|
||||
|
||||
.titleName {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
color: #183362;
|
||||
line-height: 24px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.paragraph {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-size: 14px !important;
|
||||
line-height: 28px !important;
|
||||
|
||||
.keynote {
|
||||
font-weight: 600;
|
||||
color: #1890ff;
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
}
|
||||
|
||||
.beforeBluePoint {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.beforeBluePoint::before {
|
||||
content: '';
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
border-radius: 50%;
|
||||
background-color: #1890ff;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
left: 1rem;
|
||||
}
|
||||
|
||||
.titleName {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
color: #333333;
|
||||
line-height: 20px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.numberValue {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
color: #243F6E;
|
||||
line-height: 28px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.compare {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: bold;
|
||||
font-size: 14px;
|
||||
color: #FE7628;
|
||||
line-height: 28px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.unit {
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-weight: 400;
|
||||
font-size: 14px;
|
||||
color: #788395;
|
||||
line-height: 22px;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
}
|
||||
|
||||
.proposal {
|
||||
text-indent: 2rem;
|
||||
font-size: 14px !important;
|
||||
line-height: 28px !important;
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
|
||||
.keynote {
|
||||
font-weight: 600;
|
||||
color: #1890ff;
|
||||
}
|
||||
|
||||
.proposalTitle {
|
||||
font-weight: 600;
|
||||
color: #FE7628;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@ -109,7 +109,6 @@ const ServerpartAssets = () => {
|
||||
: '' :
|
||||
record?.level === 4 ? record?.PROPERTYASSETS_CODE ?
|
||||
<a onClick={() => {
|
||||
console.log('record', record);
|
||||
setCurrentRow(record)
|
||||
setAssetsDrawer(true)
|
||||
}}>
|
||||
@ -156,7 +155,6 @@ const ServerpartAssets = () => {
|
||||
valueType: 'treeSelect',
|
||||
request: async () => {
|
||||
const list = await getFieldEnumTree({ FieldExplainField: 'PROPERTYASSETS_TYPE', notformate: true })
|
||||
console.log('list2222', list);
|
||||
let obj: any = []
|
||||
if (list && list.length > 0) {
|
||||
list.forEach((item: any) => {
|
||||
@ -231,14 +229,12 @@ const ServerpartAssets = () => {
|
||||
record?.PROPERTYASSETS_CODE ?
|
||||
<>
|
||||
<a onClick={() => {
|
||||
console.log('record', record);
|
||||
setCurrentRow(record)
|
||||
setAssetsDrawer(true)
|
||||
}}>编辑</a>
|
||||
<Popconfirm
|
||||
title="确认删除该资产?"
|
||||
onConfirm={async () => {
|
||||
console.log('record', record);
|
||||
const req: any = {
|
||||
Id: record?.PROPERTYASSETS_ID,
|
||||
OperateId: currentUser?.ID,
|
||||
@ -261,7 +257,6 @@ const ServerpartAssets = () => {
|
||||
{
|
||||
record?.SHOPNAME ?
|
||||
<a onClick={() => {
|
||||
console.log('record', record);
|
||||
setCurrentRow(record)
|
||||
setAssetsDrawer(true)
|
||||
}}>编辑</a> : ''
|
||||
@ -329,7 +324,6 @@ const ServerpartAssets = () => {
|
||||
// 历史表格的提交
|
||||
const handleSubHistoryTableData = async () => {
|
||||
let list: any = historyTableRef.current?.selectModalRowList
|
||||
console.log('list', list);
|
||||
let reqList: any = []
|
||||
list.forEach((item: any) => {
|
||||
reqList.push({
|
||||
@ -360,7 +354,6 @@ const ServerpartAssets = () => {
|
||||
UserIdEncrypted: id
|
||||
}
|
||||
const data = await handleGetPassportInfoById(req)
|
||||
console.log('datae2e12e1', data);
|
||||
setCurrentUser(data)
|
||||
return data
|
||||
}
|
||||
@ -380,7 +373,6 @@ const ServerpartAssets = () => {
|
||||
useEffect(() => {
|
||||
const search = window.location.search;
|
||||
const addressParams = Object.fromEntries(new URLSearchParams(search).entries());
|
||||
console.log('addressParamsaddressParamsaddressParams', addressParams);
|
||||
handleGetUserInfo(addressParams.UserIdEncrypted)
|
||||
handleGetServerList()
|
||||
}, [])
|
||||
@ -472,7 +464,6 @@ const ServerpartAssets = () => {
|
||||
}
|
||||
setSearchParams(params)
|
||||
const data = await handleGetPROPERTYASSETSTreeList(req)
|
||||
console.log('data', data);
|
||||
if (data && data.length > 0) {
|
||||
// 每层都加上level 第一层显示片区 第二层显示服务区 第三层显示方位 第四层显示资产编码
|
||||
data.forEach((item: any, index: number) => {
|
||||
@ -589,12 +580,9 @@ const ServerpartAssets = () => {
|
||||
title={'请选择门店进行关联'}
|
||||
onOk={() => {
|
||||
let shopIdList: any = relatedShopRef.current?.selectModalRowList
|
||||
console.log('shopIdList', shopIdList);
|
||||
let shopId: any = {}
|
||||
if (shopIdList && shopIdList.length > 0) {
|
||||
shopId = shopIdList[0]
|
||||
console.log('shopId', shopId);
|
||||
|
||||
}
|
||||
// 选中的整行对象 因为要回显关联的门店
|
||||
setSelectShopId(shopId)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user