Commit d2045d42 authored by 周宏民's avatar 周宏民

pref: 钦州集成登录取配置

parent 56611069
Pipeline #93662 waiting for manual action with stages
{ {
"业务应用": [ "业务应用": [
{ {
"name": "综合业务大屏", "name": "综合业务大屏"
"label": "",
"url": "",
"client": ""
}, },
{ {
"name": "OA办公系统", "name": "OA办公系统"
"label": "",
"url": "",
"client": ""
}, },
{ {
"name": "营业收费系统", "name": "营业收费系统"
"label": "",
"url": "http://221.7.220.45:7700/jpcd-bcs-server/sysUser/ssoGCK",
"paramName": "ticket",
"client": ""
} }
], ],
"综合监控管理平台": { "综合监控管理平台": {
"name": "综合监控管理平台", "name": "综合监控管理平台"
"label": "",
"url": "",
"client": ""
}, },
"应用系统": [ "应用系统": [
{ {
"name": "管网GIS系统", "name": "管网GIS系统"
"label": "",
"url": "",
"client": ""
}, },
{ {
"name": "水厂监控系统", "name": "水厂监控系统"
"label": "",
"url": "",
"client": ""
}, },
{ {
"name": "污水厂监控系统", "name": "污水厂监控系统"
"label": "",
"url": "",
"client": ""
}, },
{ {
"name": "管网采集系统", "name": "管网采集系统"
"label": "",
"url": "",
"client": ""
}, },
{ {
"name": "二供监控系统", "name": "二供监控系统"
"label": "",
"url": "",
"client": ""
}, },
{ {
"name": "污水站监控系统", "name": "污水站监控系统"
"label": "",
"url": "",
"client": ""
} }
], ],
"基础平台": [ "基础平台": [
{ {
"name": "物联接入平台", "name": "物联接入平台"
"label": "",
"url": "",
"client": ""
}, },
{ {
"name": "视频接入平台", "name": "视频接入平台"
"label": "",
"url": "",
"client": ""
}, },
{ {
"name": "报警管理平台", "name": "报警管理平台"
"label": "",
"url": "",
"client": ""
}, },
{ {
"name": "运维管理平台", "name": "运维管理平台"
"label": "",
"url": "http://111.59.43.216:8100/civmanage/",
"client": ""
} }
], ]
"标题": "钦州开投水务综合管理平台"
} }
\ No newline at end of file
...@@ -3,6 +3,8 @@ import { FullscreenExitOutlined, FullscreenOutlined } from '@ant-design/icons'; ...@@ -3,6 +3,8 @@ import { FullscreenExitOutlined, FullscreenOutlined } from '@ant-design/icons';
import { message, Button } from 'antd'; import { message, Button } from 'antd';
import classNames from 'classnames'; import classNames from 'classnames';
import { debounce } from 'lodash'; import { debounce } from 'lodash';
import { getImageUrl } from '@/utils/utils';
import React, { useRef, useEffect, useState, useMemo } from 'react'; import React, { useRef, useEffect, useState, useMemo } from 'react';
import backImg from '@/assets/images/demonstration/返回.png'; import backImg from '@/assets/images/demonstration/返回.png';
import arrowLeftImg from '@/assets/images/demonstration/左箭头.png'; import arrowLeftImg from '@/assets/images/demonstration/左箭头.png';
...@@ -15,7 +17,7 @@ import axios from 'axios'; ...@@ -15,7 +17,7 @@ import axios from 'axios';
import { useHistory, useAliveController } from '@wisdom-utils/runtime'; import { useHistory, useAliveController } from '@wisdom-utils/runtime';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import { store } from '@wisdom-utils/utils'; import { store } from '@wisdom-utils/utils';
import LoginAction from '@/pages/bootpage/demonstration/components/login'; import LoginAction from '@/pages/user/login/login';
import { defaultApp } from '@/micro'; import { defaultApp } from '@/micro';
import useFullScreen from '../../demonstration/components/useFullScreen'; import useFullScreen from '../../demonstration/components/useFullScreen';
...@@ -25,9 +27,16 @@ import Iframe from '../../demonstration/components/Iframe'; ...@@ -25,9 +27,16 @@ import Iframe from '../../demonstration/components/Iframe';
const boxWidth = 1920; const boxWidth = 1920;
const boxHeight = 930; const boxHeight = 930;
const IntegrationQinzhou = props => { const IntegrationQinzhou = props => {
const { integratedConfig } = props;
const [ref, isFullscreen, handleFullScreen, handleExitFullScreen] = useFullScreen(false); const [ref, isFullscreen, handleFullScreen, handleExitFullScreen] = useFullScreen(false);
const clientRef = useRef(props.global.client);
const integrationClient = integratedConfig?.client || window?.globalConfig?.client || 'city'; // 集成登录client
const [integrationData, setIntegrationData] = useState({}); // 所有子站
const loadingTime = integratedConfig?.loadingTime || 5;
const history = useHistory(); const history = useHistory();
let integrationClient = window?.globalConfig?.client || 'city'; // 集成登录client
const { clear } = useAliveController(); const { clear } = useAliveController();
const timer2 = useRef(null); const timer2 = useRef(null);
...@@ -50,7 +59,6 @@ const IntegrationQinzhou = props => { ...@@ -50,7 +59,6 @@ const IntegrationQinzhou = props => {
const [jumpLoading, setJumpLoading] = useState(false); const [jumpLoading, setJumpLoading] = useState(false);
const [progressValue2, setProgressValue2] = useState(0); const [progressValue2, setProgressValue2] = useState(0);
const [showBackBtn, setShowBackBtn] = useState(true); // 是否显示iframe 返回按钮,三维平台用 const [showBackBtn, setShowBackBtn] = useState(true); // 是否显示iframe 返回按钮,三维平台用
const [mClient, setMClient] = useState('');
const [loginAction, setAction] = useState(() => new LoginAction(props)); const [loginAction, setAction] = useState(() => new LoginAction(props));
const configName = '集成配置文件'; const configName = '集成配置文件';
...@@ -81,26 +89,34 @@ const IntegrationQinzhou = props => { ...@@ -81,26 +89,34 @@ const IntegrationQinzhou = props => {
timer2.current = null; timer2.current = null;
}; };
const getData = async () => { const getData = async () => {
const token = props.global?.token || Cookies.get('token');
const client = integratedConfig?.client || sessionStorage.getItem('client') || props?.global?.client || '';
localStorage.setItem('integrationClient', client);
// appService
// .GetConfigJson({
// config: configName,
// })
// .then(res => {
// if (res.code === 0 && res.data) {
// const data = JSON.parse(res.data) || defaultConfig;
// setConfigData(data);
// }
// });
appService appService
.GetConfigJson({ .GetIntegrationConfig({
config: configName, type: '集成登录',
}) userId: window.globalConfig.userInfo?.OID ?? null,
.then(res => { isEnable: true,
if (res.code === 0 && res.data) { client,
const data = JSON.parse(res.data) || defaultConfig;
setConfigData(data);
}
});
appService
.GetIntegratedloginSetting({
ignoreSite: true,
}) })
.then(res => { .then(res1 => {
const { code, data } = res; const list = res1.data || [];
if (data.client) { list.length && localStorage.setItem('integrationData', JSON.stringify(list));
integrationClient = data.client; const obj = {};
localStorage.setItem('integrationClient', data.client); list.forEach(i => {
} obj[i.appKey] = i;
});
setIntegrationData(obj);
}); });
}; };
const onResize = () => { const onResize = () => {
...@@ -127,57 +143,7 @@ const IntegrationQinzhou = props => { ...@@ -127,57 +143,7 @@ const IntegrationQinzhou = props => {
}); });
} }
}; };
const handError = err => {
if (err) {
message.error(err);
}
setLinkUrl('');
setJumpLoading(false);
jumpProgressEnd();
};
const onMessageBack = data => {
if (!data?.type) return;
console.log('onMessageBack ~ data:', data);
switch (data?.type) {
// 页面加载完成
// 登录成功
case 'runAfterFirstMounted':
case 'loginSuccess':
jumpProgressEnd();
setTimeout(() => {
setJumpLoading(false);
}, 100);
break;
case 'loginError':
message.warning('登录失败,请联系管理人员');
handError();
break;
case '无法连接':
message.warning('该站点无法连接,请联系管理人员');
setTimeout(() => {
handError();
}, 100);
break;
case 'showBack':
setShowBackBtn(true);
break;
case 'hideBack':
setShowBackBtn(false);
break;
default:
break;
}
};
const iframeItem = useMemo(() => {
if (!linkUrl) return null;
return (
<>
<div className={classNames(!jumpLoading ? styles.scaleInCenter : styles.hide, 'animate__animated')}>
<Iframe linkUrl={linkUrl} onMessageBack={onMessageBack} />
</div>
</>
);
}, [linkUrl, jumpLoading]);
const startTiming = (time = 2) => { const startTiming = (time = 2) => {
if (timer3.current) { if (timer3.current) {
clearInterval(timer3.current); clearInterval(timer3.current);
...@@ -197,18 +163,15 @@ const IntegrationQinzhou = props => { ...@@ -197,18 +163,15 @@ const IntegrationQinzhou = props => {
const res = await appService.getTicketByToken({ token: window.globalConfig?.token }); const res = await appService.getTicketByToken({ token: window.globalConfig?.token });
if (res.code === 0) { if (res.code === 0) {
// 营收是api-bcs,直饮水是api-ddw // 营收是api-bcs,直饮水是api-ddw
const apiPath = `${item.url}?sysFlag=0&${item.paramName}=${res.data}`; // /api-ddw/sysUser/ssoGCK
setLinkUrl(apiPath); // res.data = 'e44a2883a2ac4c4b8c8f1186cf27ca1dcc406c1dda1247cabe04bff3c06d28e7'; // 测试token
const res2 = await axios({ const apiPath = `${item.url + (item.url.indexOf('?') > 0 ? '&' : '?') + item.paramValue}=${res.data}`;
url: apiPath, if (item?.openOpt === '当前页打开') {
method: 'get', props.history.push('/thirdParty', { linkUrl: apiPath });
dataType: 'json', } else {
});
if (res2?.data?.resultcode !== 'no') {
setLinkUrl('');
setJumpLoading(false); setJumpLoading(false);
jumpProgressEnd(); jumpProgressEnd();
message.warning('没权限,请联系管理员'); window.open(apiPath, '_blank');
} }
} else { } else {
res.msg && message.error(res.msg); res.msg && message.error(res.msg);
...@@ -220,97 +183,80 @@ const IntegrationQinzhou = props => { ...@@ -220,97 +183,80 @@ const IntegrationQinzhou = props => {
jumpProgressEnd(); jumpProgressEnd();
} }
}; };
const onLink = (item, loginA) => { const toClient = async (item, loginA) => {
const { url, client } = item; const token = props.global?.token || Cookies.get('token');
if (!url && !client) return message.warning('未配置功能路径'); const cli = item.client;
if (url) { const res = await getWebSiteConfig({
if (item.paramName) { identity: token,
toRevenue(item); client: cli,
return; });
} if (!res?.data?.[0]?.widgets?.length) {
setJumpLoading(true); message.error({
jumpProgressStart(); duration: 3,
setLinkUrl(url); content: '您没有该板块权限,请联系管理员',
let time = 15;
if (!url.includes('user/noscret')) {
time = 4;
}
startTiming(time);
}
if (client) {
if (window.qiankunIsCache) {
store.set('event:dropCache');
}
Cookies.set('client', client, {
expires: 86400000 / (24 * 60 * 60 * 1000),
path: '/',
}); });
sessionStorage.setItem('client', client); return;
const currentProduct = `__global__recent_productIndex__micro_${window.location.hostname}_${window.globalConfig }
?.client ?? 'city'}`; if (window.qiankunIsCache) {
sessionStorage.removeItem(currentProduct); store.set('event:dropCache');
const currentProductNew = `__global__recent_productIndex__micro_${window.location.hostname}_${client || 'city'}`; }
sessionStorage.setItem(currentProductNew, 0);
setMClient(client);
const config = props.global;
window.qiankunStarted = false;
if (client) {
config.client = client;
}
const token = props.global?.token || Cookies.get('token'); Cookies.set('client', cli, {
expires: 86400000 / (24 * 60 * 60 * 1000),
path: '/',
});
sessionStorage.setItem('client', cli);
const currentProduct = `__global__recent_productIndex__micro_${window.location.hostname}_${window.globalConfig
?.client ?? 'city'}`;
sessionStorage.removeItem(currentProduct);
const currentProductNew = `__global__recent_productIndex__micro_${window.location.hostname}_${cli || 'city'}`;
sessionStorage.setItem(currentProductNew, 0);
if (!token) { clientRef.current = cli;
history.push(`/user/login?client=${integrationClient}`, { reload: true }); const config = props.global;
clear(); config.uiwidgets = [];
props.logout(); config.widgets = [];
} else { config.allWidgets = [];
setJumpLoading(true); window.qiankunStarted = false;
jumpProgressStart(); if (cli) {
startTiming(15); config.client = cli;
window.jumpLoadingProgress = 99; }
getWebSiteConfig({ setJumpLoading(true);
identity: token, jumpProgressStart();
client, startTiming(loadingTime);
}) window.jumpLoadingProgress = 99;
.then(res => { loginA && loginA.getUserInfoAndConfig('', true);
const data = res.data?.[0] || {}; };
config.uiwidgets = data.uiwidgets || []; const onLink = (item, loginA) => {
config.widgets = data.widgets || []; if (!item) return;
config.allWidgets = data.widgets || []; const token = props.global?.token || Cookies.get('token');
const homeType = config.productType || 'civweb4'; if (!token) {
let homepage = params.getParams('homepage') ? params.getParams('homepage') : ''; history.push(`/user/login?client=${integrationClient}`, { reload: true });
clear();
props.logout();
return;
}
const { url, client } = item;
if (!homepage) { if (item.subType === '内链' && client) {
homepage = toClient(item, loginA);
homeType && data.homepage ? `${homeType}/${params.getParams('homepage') || data.homepage}` : ''; } else {
} if (!url) return;
config.homepage = homepage; if (item.subType === '外链') {
config.hideFeedback = if (item.paramValue === 'ticket') {
data.afterSales && typeof data.afterSales === 'string' toRevenue(item); // 去营收
? data.afterSales.split(',').includes(`${props.global?.userInfo?.OID}`) return;
: false; }
config.IsOpenTransitionPage = data.IsOpenTransitionPage || false; }
config.openAnnouncement = data.openAnnouncement; const link = `${item.url + (item.url.indexOf('?') > 0 ? '&' : '?') + item.paramName}=${
config.announcementContent = data.announcementContent; window.globalConfig?.token
if (!config.widgets.length) { }`;
message.error({ if (item?.openOpt === '当前页打开') {
duration: 3, props.history.push('/thirdParty', { linkUrl: link });
content: '您没有该板块权限', } else {
}); setJumpLoading(false);
setJumpLoading(false); jumpProgressEnd();
jumpProgressEnd(); window.open(link, '_blank');
window.jumpLoadingProgress = 0;
return;
}
loginAction.updateConfig && loginAction.updateConfig(config);
loginAction && loginAction.getIndustry(true, token);
})
.catch(err => {
setJumpLoading(false);
jumpProgressEnd();
window.jumpLoadingProgress = 0;
});
} }
} }
}; };
...@@ -334,8 +280,7 @@ const IntegrationQinzhou = props => { ...@@ -334,8 +280,7 @@ const IntegrationQinzhou = props => {
jumpProgressEnd(); jumpProgressEnd();
window.jumpLoadingProgress = 0; window.jumpLoadingProgress = 0;
props.updateCurrentIndex && props.updateCurrentIndex(0); props.updateCurrentIndex && props.updateCurrentIndex(0);
props.history.push(`/?client=${clientRef.current || props.global.client}`);
props.history.push(`/?client=${mClient || props.global.client}`);
defaultApp(); defaultApp();
}; };
...@@ -351,7 +296,7 @@ const IntegrationQinzhou = props => { ...@@ -351,7 +296,7 @@ const IntegrationQinzhou = props => {
loginAction && loginAction.events && loginAction.events.removeListener('loginSuccess', handleToggleIndustry); loginAction && loginAction.events && loginAction.events.removeListener('loginSuccess', handleToggleIndustry);
loginAction && loginAction.events && loginAction.events.removeListener('loginError', handleError); loginAction && loginAction.events && loginAction.events.removeListener('loginError', handleError);
}; };
}, [loginAction.events, props, mClient]); }, [loginAction.events, props]);
return ( return (
<div className={classNames(styles.integrationQinzhou, 'integrationQinzhou')} ref={ref}> <div className={classNames(styles.integrationQinzhou, 'integrationQinzhou')} ref={ref}>
{jumpLoading ? ( {jumpLoading ? (
...@@ -380,7 +325,7 @@ const IntegrationQinzhou = props => { ...@@ -380,7 +325,7 @@ const IntegrationQinzhou = props => {
<div className={styles.integrationQinzhou_title}> <div className={styles.integrationQinzhou_title}>
<div className={styles.integrationQinzhou_title_left} /> <div className={styles.integrationQinzhou_title_left} />
<div className={styles.integrationQinzhou_title_text}> <div className={styles.integrationQinzhou_title_text}>
<span>{configData?.['标题'] || '智慧水务综合监控平台'}</span> <span>{integratedConfig?.title || props.global.title || '智慧水务综合监控平台'}</span>
</div> </div>
<div className={styles.integrationQinzhou_title_right} /> <div className={styles.integrationQinzhou_title_right} />
</div> </div>
...@@ -397,16 +342,24 @@ const IntegrationQinzhou = props => { ...@@ -397,16 +342,24 @@ const IntegrationQinzhou = props => {
key={item.name} key={item.name}
className={classNames( className={classNames(
styles.integration_row_col, styles.integration_row_col,
item.url || item.client ? styles.integration_row_col_link : styles.integration_row_col_no, integrationData[item.name] ? styles.integration_row_col_link : styles.integration_row_col_no,
)} )}
type="业务应用" type="业务应用"
onClick={() => onLink(item)} onClick={() => onLink(integrationData[item.name], loginAction)}
> >
<div className={styles.integration_row_col_content} name={item.name}> <div className={styles.integration_row_col_content} name={item.name}>
<div
className={styles.integration_row_col_img}
style={{
background: integrationData[item.name]?.icon
? `url(${getImageUrl(integrationData[item.name].icon)}) center/100% 100% no-repeat`
: '',
}}
/>
<div className={styles.integration_row_col_text} type="业务应用"> <div className={styles.integration_row_col_text} type="业务应用">
{item.label || item.name} {integrationData[item.name]?.name || item.name}
</div> </div>
<div className={styles.integration_row_col_sub}>{item.english || ''}</div> <div className={styles.integration_row_col_sub}>{integrationData[item.name]?.subTitle || ''}</div>
</div> </div>
</div> </div>
))} ))}
...@@ -422,16 +375,22 @@ const IntegrationQinzhou = props => { ...@@ -422,16 +375,22 @@ const IntegrationQinzhou = props => {
<div <div
className={classNames( className={classNames(
styles.integration_row_col, styles.integration_row_col,
configData['综合监控管理平台'].url || configData['综合监控管理平台'].client integrationData['综合监控管理平台'] ? styles.integration_row_col_link : styles.integration_row_col_no,
? styles.integration_row_col_link
: styles.integration_row_col_no,
)} )}
type="综合监控管理平台" type="综合监控管理平台"
onClick={() => onLink(configData['综合监控管理平台'])} onClick={() => onLink(integrationData['综合监控管理平台'], loginAction)}
> >
<div className={styles.integration_row_col_content} name="综合监控管理平台"> <div className={styles.integration_row_col_content} name="综合监控管理平台">
<div
className={styles.integration_row_col_img}
style={{
background: integrationData['综合监控管理平台']?.icon
? `url(${getImageUrl(integrationData['综合监控管理平台'].icon)}) center/100% 100% no-repeat`
: '',
}}
/>
<div className={styles.integration_row_col_text} type="业务应用"> <div className={styles.integration_row_col_text} type="业务应用">
{configData['综合监控管理平台'].label || configData['综合监控管理平台'].name} {integrationData['综合监控管理平台']?.name || configData['综合监控管理平台'].name}
</div> </div>
</div> </div>
</div> </div>
...@@ -444,10 +403,10 @@ const IntegrationQinzhou = props => { ...@@ -444,10 +403,10 @@ const IntegrationQinzhou = props => {
key={item.name} key={item.name}
className={classNames( className={classNames(
styles.integration_row_col, styles.integration_row_col,
item.url || item.client ? styles.integration_row_col_link : styles.integration_row_col_no, integrationData[item.name] ? styles.integration_row_col_link : styles.integration_row_col_no,
)} )}
type="应用系统" type="应用系统"
onClick={() => onLink(item)} onClick={() => onLink(integrationData[item.name], loginAction)}
> >
<div <div
className={classNames( className={classNames(
...@@ -456,7 +415,17 @@ const IntegrationQinzhou = props => { ...@@ -456,7 +415,17 @@ const IntegrationQinzhou = props => {
)} )}
/> />
<div className={styles.integration_row_col_content} name={item.name}> <div className={styles.integration_row_col_content} name={item.name}>
<div className={styles.integration_row_col_text}>{item.label || item.name}</div> <div
className={styles.integration_row_col_img}
style={{
background: integrationData[item.name]?.icon
? `url(${getImageUrl(integrationData[item.name].icon)}) center/100% 100% no-repeat`
: '',
}}
/>
<div className={styles.integration_row_col_text}>
{integrationData[item.name]?.name || item.name}
</div>
</div> </div>
</div> </div>
))} ))}
...@@ -475,10 +444,10 @@ const IntegrationQinzhou = props => { ...@@ -475,10 +444,10 @@ const IntegrationQinzhou = props => {
key={item.name} key={item.name}
className={classNames( className={classNames(
styles.integration_row_col, styles.integration_row_col,
item.url || item.client ? styles.integration_row_col_link : styles.integration_row_col_no, integrationData[item.name] ? styles.integration_row_col_link : styles.integration_row_col_no,
)} )}
type={item.name} type={item.name}
onClick={() => onLink(item)} onClick={() => onLink(integrationData[item.name], loginAction)}
> >
<div <div
className={classNames( className={classNames(
...@@ -487,8 +456,22 @@ const IntegrationQinzhou = props => { ...@@ -487,8 +456,22 @@ const IntegrationQinzhou = props => {
)} )}
/> />
<div className={styles.integration_row_col_content} name={item.name}> <div className={styles.integration_row_col_content} name={item.name}>
<div className={styles.integration_row_col_text}>{item.label || item.name}</div> <div
<div className={styles.integration_row_col_sub}>{item.english || ''}</div> className={styles.integration_row_col_img}
style={{
background: integrationData[item.name]?.icon
? `url(${getImageUrl(integrationData[item.name].icon)}) center/100% 100% no-repeat`
: '',
}}
/>
<div>
<div className={styles.integration_row_col_text}>
{integrationData[item.name]?.name || item.name}
</div>
<div className={styles.integration_row_col_sub}>
{integrationData[item.name]?.subTitle || ''}
</div>
</div>
</div> </div>
</div> </div>
))} ))}
...@@ -510,7 +493,6 @@ const IntegrationQinzhou = props => { ...@@ -510,7 +493,6 @@ const IntegrationQinzhou = props => {
</div> </div>
</div> </div>
) : null} ) : null}
{iframeItem}
</div> </div>
); );
}; };
......
...@@ -142,7 +142,7 @@ ...@@ -142,7 +142,7 @@
} }
.integration_row_col_no { .integration_row_col_no {
filter: grayscale(80%) brightness(105%); filter: grayscale(100%) brightness(90%);
cursor: not-allowed; cursor: not-allowed;
} }
...@@ -234,31 +234,52 @@ ...@@ -234,31 +234,52 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; // justify-content: center;
justify-content: center; align-items: center;
padding-left: 181px; padding-left: 62px;
line-height: 1; line-height: 1;
} }
.integration_row_col_content[name='综合业务大屏'] { .integration_row_col_content[name='综合业务大屏'] {
background: url('@{imgSrc}/综合业务大屏.png') 59px 33px no-repeat, background: url('@{imgSrc}/业务应用bg.png') center center no-repeat;
url('@{imgSrc}/业务应用bg.png') center center no-repeat; background-size: 100% 100%;
background-size: 48px 48px, 100% 100%;
.integration_row_col_img {
width: 48px;
height: 48px;
background: url('@{imgSrc}/综合业务大屏.png') center center no-repeat;
background-size: 100% 100%;
margin-right: 65px;
}
} }
.integration_row_col_content[name='OA办公系统'] { .integration_row_col_content[name='OA办公系统'] {
background: url('@{imgSrc}/OA办公系统.png') 62px 31px no-repeat, background: url('@{imgSrc}/业务应用bg.png') center center no-repeat;
url('@{imgSrc}/业务应用bg.png') center center no-repeat; background-size: 100% 100%;
background-size: 48px 48px, 100% 100%;
.integration_row_col_img {
width: 48px;
height: 48px;
background: url('@{imgSrc}/OA办公系统.png') center center no-repeat;
background-size: 100% 100%;
margin-right: 65px;
}
} }
.integration_row_col_content[name='营业收费系统'] { .integration_row_col_content[name='营业收费系统'] {
background: url('@{imgSrc}/营业收费系统.png') 64px 30px no-repeat, background: url('@{imgSrc}/业务应用bg.png') center center no-repeat;
url('@{imgSrc}/业务应用bg.png') center center no-repeat; background-size: 100% 100%;
background-size: 48px 48px, 100% 100%;
.integration_row_col_img {
width: 48px;
height: 48px;
background: url('@{imgSrc}/营业收费系统.png') center center no-repeat;
background-size: 100% 100%;
margin-right: 65px;
}
} }
...@@ -309,7 +330,9 @@ ...@@ -309,7 +330,9 @@
margin-bottom: 12px; margin-bottom: 12px;
.integration_row_col_content { .integration_row_col_content {
line-height: 93px; display: flex;
align-items: center;
padding-left: 63px;
} }
} }
...@@ -320,50 +343,102 @@ ...@@ -320,50 +343,102 @@
margin-bottom: 12px; margin-bottom: 12px;
.integration_row_col_content[name='综合监控管理平台'] { .integration_row_col_content[name='综合监控管理平台'] {
background: url('@{imgSrc}/综合监控管理平台.png') 488px 24px no-repeat, background: url('@{imgSrc}/综合监控管理平台bg.png') center center no-repeat;
url('@{imgSrc}/综合监控管理平台bg.png') center center no-repeat; background-size: 100% 100%;
background-size: 48px 48px, 100% 100%; padding-left: 488px;
padding-left: 590px;
line-height: 93px; line-height: 93px;
display: flex;
align-items: center;
padding-bottom: 5px;
.integration_row_col_img {
width: 48px;
height: 48px;
background: url('@{imgSrc}/综合监控管理平台.png') center center no-repeat;
background-size: 100% 100%;
margin-right: 65px;
}
} }
} }
.integration_row_list[type='应用系统'] { .integration_row_list[type='应用系统'] {
.integration_row_col_content[name='管网GIS系统'] { .integration_row_col_content[name='管网GIS系统'] {
background: url('@{imgSrc}/管网GIS系统.png') 62px 22px no-repeat, background: url('@{imgSrc}/管网GIS系统bg.png') center center no-repeat;
url('@{imgSrc}/管网GIS系统bg.png') center center no-repeat; background-size: 100% 100%;
background-size: 48px 48px, 100% 100%;
.integration_row_col_img {
width: 48px;
height: 48px;
background: url('@{imgSrc}/管网GIS系统.png') center center no-repeat;
background-size: 100% 100%;
margin-right: 65px;
}
} }
.integration_row_col_content[name='水厂监控系统'] { .integration_row_col_content[name='水厂监控系统'] {
background: url('@{imgSrc}/水厂监控系统.png') 62px 22px no-repeat, background: url('@{imgSrc}/管网GIS系统bg.png') center center no-repeat;
url('@{imgSrc}/管网GIS系统bg.png') center center no-repeat; background-size: 100% 100%;
background-size: 48px 48px, 100% 100%;
.integration_row_col_img {
width: 48px;
height: 48px;
background: url('@{imgSrc}/水厂监控系统.png') center center no-repeat;
background-size: 100% 100%;
margin-right: 65px;
}
} }
.integration_row_col_content[name='污水厂监控系统'] { .integration_row_col_content[name='污水厂监控系统'] {
background: url('@{imgSrc}/污水厂监控系统.png') 63px 22px no-repeat, background: url('@{imgSrc}/管网GIS系统bg.png') center center no-repeat;
url('@{imgSrc}/管网GIS系统bg.png') center center no-repeat; background-size: 100% 100%;
background-size: 48px 48px, 100% 100%;
.integration_row_col_img {
width: 48px;
height: 48px;
background: url('@{imgSrc}/污水厂监控系统.png') center center no-repeat;
background-size: 100% 100%;
margin-right: 65px;
}
} }
.integration_row_col_content[name='管网采集系统'] { .integration_row_col_content[name='管网采集系统'] {
background: url('@{imgSrc}/管网采集系统.png') 63px 22px no-repeat, background: url('@{imgSrc}/管网GIS系统bg.png') center center no-repeat;
url('@{imgSrc}/管网GIS系统bg.png') center center no-repeat; background-size: 100% 100%;
background-size: 48px 48px, 100% 100%;
.integration_row_col_img {
width: 48px;
height: 48px;
background: url('@{imgSrc}/管网采集系统.png') center center no-repeat;
background-size: 100% 100%;
margin-right: 65px;
}
} }
.integration_row_col_content[name='二供监控系统'] { .integration_row_col_content[name='二供监控系统'] {
background: url('@{imgSrc}/二供监控系统.png') 63px 22px no-repeat, background: url('@{imgSrc}/管网GIS系统bg.png') center center no-repeat;
url('@{imgSrc}/管网GIS系统bg.png') center center no-repeat; background-size: 100% 100%;
background-size: 48px 48px, 100% 100%;
.integration_row_col_img {
width: 48px;
height: 48px;
background: url('@{imgSrc}/二供监控系统.png') center center no-repeat;
background-size: 100% 100%;
margin-right: 65px;
}
} }
.integration_row_col_content[name='污水站监控系统'] { .integration_row_col_content[name='污水站监控系统'] {
background: url('@{imgSrc}/污水站监控系统.png') 63px 22px no-repeat, background: url('@{imgSrc}/管网GIS系统bg.png') center center no-repeat;
url('@{imgSrc}/管网GIS系统bg.png') center center no-repeat; background-size: 100% 100%;
background-size: 48px 48px, 100% 100%;
.integration_row_col_img {
width: 48px;
height: 48px;
background: url('@{imgSrc}/污水站监控系统.png') center center no-repeat;
background-size: 100% 100%;
margin-right: 65px;
}
} }
} }
...@@ -406,9 +481,8 @@ ...@@ -406,9 +481,8 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
flex-direction: column; align-items: center;
justify-content: center; padding-left: 33px;
padding-left: 136px;
} }
...@@ -419,27 +493,55 @@ ...@@ -419,27 +493,55 @@
} }
.integration_row_col_content[name='物联接入平台'] { .integration_row_col_content[name='物联接入平台'] {
background: url('@{imgSrc}/物联接入平台.png') 33px 28px no-repeat, background: url('@{imgSrc}/基础平台bg.png') center center no-repeat;
url('@{imgSrc}/基础平台bg.png') center center no-repeat; background-size: 100% 100%;
background-size: 48px 48px, 100% 100%;
.integration_row_col_img {
width: 48px;
height: 48px;
background: url('@{imgSrc}/物联接入平台.png') center center no-repeat;
background-size: 100% 100%;
margin-right: 60px;
}
} }
.integration_row_col_content[name='视频接入平台'] { .integration_row_col_content[name='视频接入平台'] {
background: url('@{imgSrc}/视频接入平台.png') 31px 29px no-repeat, background: url('@{imgSrc}/基础平台bg.png') center center no-repeat;
url('@{imgSrc}/基础平台bg.png') center center no-repeat; background-size: 100% 100%;
background-size: 48px 48px, 100% 100%;
.integration_row_col_img {
width: 48px;
height: 48px;
background: url('@{imgSrc}/视频接入平台.png') center center no-repeat;
background-size: 100% 100%;
margin-right: 60px;
}
} }
.integration_row_col_content[name='报警管理平台'] { .integration_row_col_content[name='报警管理平台'] {
background: url('@{imgSrc}/报警管理平台.png') 33px 29px no-repeat, background: url('@{imgSrc}/基础平台bg.png') center center no-repeat;
url('@{imgSrc}/基础平台bg.png') center center no-repeat; background-size: 100% 100%;
background-size: 48px 48px, 100% 100%;
.integration_row_col_img {
width: 48px;
height: 48px;
background: url('@{imgSrc}/报警管理平台.png') center center no-repeat;
background-size: 100% 100%;
margin-right: 60px;
}
} }
.integration_row_col_content[name='运维管理平台'] { .integration_row_col_content[name='运维管理平台'] {
background: url('@{imgSrc}/运维管理平台.png') 33px 30px no-repeat, background: url('@{imgSrc}/基础平台bg.png') center center no-repeat;
url('@{imgSrc}/基础平台bg.png') center center no-repeat; background-size: 100% 100%;
background-size: 48px 48px, 100% 100%;
.integration_row_col_img {
width: 48px;
height: 48px;
background: url('@{imgSrc}/运维管理平台.png') center center no-repeat;
background-size: 100% 100%;
margin-right: 60px;
}
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment