Commit 279b9923 authored by 邓晓峰's avatar 邓晓峰

feat: add avatar upload

parent 2c711627
This diff was suppressed by a .gitattributes entry.
...@@ -65,4 +65,70 @@ module.exports = { ...@@ -65,4 +65,70 @@ module.exports = {
}, },
}, },
}, },
prod: {
'/CityInterface': {
// target: 'http://192.168.10.151:8055',
target: 'https://panda-water.cn',
// target: 'http://192.168.19.102:8055',
// target: 'https://panda-water.com',
// target: 'http://192.168.10.150:8050',
// target: 'http://192.168.19.103:8112',
// target: 'http://192.168.12.8:8098',
// target: 'http://192.168.10.20:8888',
changeOrigin: true,
headers: {
'Access-Control-Allow-Origin': '*',
},
pathRewrite: {
'/CityInterface': '/CityInterface',
},
},
'/cityinterface': {
// target: 'http://192.168.10.151:8055',
// target: 'http://192.168.10.150:8050',
target: 'https://panda-water.cn',
// target: 'http://192.168.19.102:8055',
// target: 'https://panda-water.com',
// target: 'http://192.168.12.8:8098',
// target: 'http://192.168.10.20:8888',
changeOrigin: true,
headers: {
'Access-Control-Allow-Origin': '*',
},
pathRewrite: {
'/cityinterface': '/cityinterface',
},
},
'/cityjson': {
target: 'https://pv.sohu.com',
// target: 'http://192.168.19.102:8055',
// target: 'https://panda-water.com',
// target: 'http://192.168.12.8:8098',
// target: 'http://192.168.10.20:8888',
changeOrigin: true,
headers: {
'Access-Control-Allow-Origin': '*',
},
pathRewrite: {
'/cityjson': '/cityjson',
},
},
'/Publish': {
// target: 'http://192.168.12.8:8098',
// target: 'http://192.168.10.20:8888',
// target: 'http://192.168.10.151:8055',
target: 'https://panda-water.cn',
// target: 'http://192.168.19.102:8055',
// target: 'https://panda-water.com',
// target: 'http://192.168.10.150:8050',
changeOrigin: true,
headers: {
'Access-Control-Allow-Origin': '*',
},
pathRewrite: {
'/Publish': '/Publish',
},
},
},
}; };
...@@ -7171,9 +7171,9 @@ ...@@ -7171,9 +7171,9 @@
} }
}, },
"@wisdom-utils/utils": { "@wisdom-utils/utils": {
"version": "0.0.23", "version": "0.0.25",
"resolved": "https://g.civnet.cn:4873/@wisdom-utils%2futils/-/utils-0.0.23.tgz", "resolved": "https://g.civnet.cn:4873/@wisdom-utils%2futils/-/utils-0.0.25.tgz",
"integrity": "sha512-NhRZIySKvS8ooVuuFsPtYJi+hsmu3r5UAT1rFyPZYxjmegva/taSK4viRQs1BarUpBIMwF0vIZakkhoXRlbz/w==", "integrity": "sha512-TIr8ik6laFs+L40vqKEEELj86l9qawiRjB3TNvdBNkez7geIp2LhIljo/uMJp7DegImxTZRSZJ3cULcLZtelBQ==",
"requires": { "requires": {
"axios": "^0.21.1", "axios": "^0.21.1",
"cookie": "^0.4.1", "cookie": "^0.4.1",
...@@ -18689,9 +18689,9 @@ ...@@ -18689,9 +18689,9 @@
"dev": true "dev": true
}, },
"kit_global_config": { "kit_global_config": {
"version": "1.0.19", "version": "1.0.20",
"resolved": "https://g.civnet.cn:4873/kit_global_config/-/kit_global_config-1.0.19.tgz", "resolved": "https://g.civnet.cn:4873/kit_global_config/-/kit_global_config-1.0.20.tgz",
"integrity": "sha512-6BtvJHZV3B7DWPmiKkZXpvtel5BLgn8XC4ruBVTvZpHIUammkJLubYyNk7oA00TXZITJ1SD9AkuZNvNC2lOayg==", "integrity": "sha512-A0WcLLgEPRsclPUj7iRE4ZVh5QhchZL7vioYaULagDDNfwZs/NVU5a58wOunO2mBGDpgvhjfyVkqWFuxyhPeYA==",
"requires": { "requires": {
"@babel/runtime": "^7.10.5", "@babel/runtime": "^7.10.5",
"js-base64": "^3.5.2", "js-base64": "^3.5.2",
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
"@babel/polyfill": "7.4.3", "@babel/polyfill": "7.4.3",
"@babel/runtime": "^7.10.5", "@babel/runtime": "^7.10.5",
"@wisdom-utils/components": "0.0.6", "@wisdom-utils/components": "0.0.6",
"@wisdom-utils/utils": "0.0.23", "@wisdom-utils/utils": "0.0.25",
"animate.css": "^4.1.1", "animate.css": "^4.1.1",
"chalk": "2.4.2", "chalk": "2.4.2",
"compression": "1.7.4", "compression": "1.7.4",
...@@ -102,7 +102,7 @@ ...@@ -102,7 +102,7 @@
"ip": "1.1.5", "ip": "1.1.5",
"js-base64": "^3.5.2", "js-base64": "^3.5.2",
"js-cookie": "^2.2.1", "js-cookie": "^2.2.1",
"kit_global_config": "^1.0.19", "kit_global_config": "^1.0.20",
"kit_logger": "^1.0.2", "kit_logger": "^1.0.2",
"kit_utils": "^1.3.6", "kit_utils": "^1.3.6",
"lodash": "4.17.11", "lodash": "4.17.11",
......
...@@ -13,6 +13,9 @@ module.exports = (app, options) => { ...@@ -13,6 +13,9 @@ module.exports = (app, options) => {
if (isProd) { if (isProd) {
const addProdMiddlewares = require('./addProdMiddlewares'); const addProdMiddlewares = require('./addProdMiddlewares');
Object.keys(proxyConfig.dev).forEach(item => {
app.use(createProxyMiddleware(item, proxyConfig.prod[item]));
});
addProdMiddlewares(app, options); addProdMiddlewares(app, options);
} else { } else {
const webpackConfig = require('../../internals/webpack/webpack.dev.babel'); const webpackConfig = require('../../internals/webpack/webpack.dev.babel');
......
...@@ -11,8 +11,10 @@ export const API = { ...@@ -11,8 +11,10 @@ export const API = {
GET_USER_INFO: '/CityInterface/rest/services.svc/getUserInfo', GET_USER_INFO: '/CityInterface/rest/services.svc/getUserInfo',
GET_OA: '/CityInterface/rest/services/OA.svc/getLoginInfo', GET_OA: '/CityInterface/rest/services/OA.svc/getLoginInfo',
GET_LOGS: '/CityInterface/rest/services/portal.svc/OMMonitor/SaveLoginInfo', GET_LOGS: '/CityInterface/rest/services/portal.svc/OMMonitor/SaveLoginInfo',
//https://pv.sohu.com GET_CITY:
GET_CITY: '/cityjson?ie=utf-8', process.env.NODE_ENV !== 'production'
? '/cityjson?ie=utf-8'
: 'https://pv.sohu.com',
GET_ALL_GROUPS_INFO_FORUSER: GET_ALL_GROUPS_INFO_FORUSER:
'CityInterface/rest/Services/Portal.svc/AuthorityManage/GetAllGroupsInfoForUser', 'CityInterface/rest/Services/Portal.svc/AuthorityManage/GetAllGroupsInfoForUser',
GET_WEATHER: '/CityInterface/rest/services/CountyProduct.svc/GetWeather', GET_WEATHER: '/CityInterface/rest/services/CountyProduct.svc/GetWeather',
...@@ -21,7 +23,9 @@ export const API = { ...@@ -21,7 +23,9 @@ export const API = {
CHANGE_PASSWORD: 'cityinterface/rest/services.svc/changepassword', CHANGE_PASSWORD: 'cityinterface/rest/services.svc/changepassword',
IOT_CHANGE_PASSWORD: IOT_CHANGE_PASSWORD:
'CityInterface/rest/services/OMS.svc/U_UpdatePasswordQuickGCK', 'CityInterface/rest/services/OMS.svc/U_UpdatePasswordQuickGCK',
FILE_DOWNLOAD: '"/cityinterface/rest/services/filedownload.svc/download', FILE_DOWNLOAD: '/cityinterface/rest/services/filedownload.svc/download',
GET_VERSION: '/CityInterface/rest/services/OMs.svc/U_GetVersion',
UPDATE_AVATAR: '/CityInterface/rest/services/OMs.svc/U_EditUser',
}; };
const services = service({ const services = service({
...@@ -115,6 +119,16 @@ const services = service({ ...@@ -115,6 +119,16 @@ const services = service({
method: constants.REQUEST_METHOD_GET, method: constants.REQUEST_METHOD_GET,
type: constants.REQUEST_HTTP, type: constants.REQUEST_HTTP,
}, },
getVersion: {
url: API.GET_VERSION,
method: constants.REQUEST_METHOD_GET,
type: constants.REQUEST_HTTP,
},
updateAvatar: {
url: API.UPDATE_AVATAR,
method: constants.REQUEST_METHOD_GET,
type: constants.REQUEST_HTTP,
},
}); });
export const searchAutoCity = keywords => { export const searchAutoCity = keywords => {
...@@ -137,4 +151,5 @@ export const searchAutoCity = keywords => { ...@@ -137,4 +151,5 @@ export const searchAutoCity = keywords => {
); );
return jsonp(url, params, options); return jsonp(url, params, options);
}; };
export default services; export default services;
...@@ -80,32 +80,40 @@ const initGlobalConfig = () => { ...@@ -80,32 +80,40 @@ const initGlobalConfig = () => {
const data = res; const data = res;
store.dispatch(actionCreators.getConfig(Object.assign({}, data))); store.dispatch(actionCreators.getConfig(Object.assign({}, data)));
// eslint-disable-next-line no-shadow // eslint-disable-next-line no-shadow
services try {
.getWateWayConfig() services
// eslint-disable-next-line no-shadow .getWateWayConfig()
.then(res => { // eslint-disable-next-line no-shadow
const hasGateWay = .then(res => {
res && res.data && isString(res.data) const hasGateWay =
? JSON.parse(res.data) res && res.data && isString(res.data)
: res.data; ? JSON.parse(res.data)
// eslint-disable-next-line no-debugger : res.data;
if (res.code === 0) { // eslint-disable-next-line no-debugger
if (res.code === 0) {
store.dispatch(
actionCreators.getConfig(
Object.assign({}, data, {
hasGateWay,
apiGatewayDomain: `${
window.location.origin
}/Publish/GateWay`,
}),
),
);
}
})
.catch(error => {
store.dispatch(actionCreators.getConfigError(error));
store.dispatch( store.dispatch(
actionCreators.getConfig( actionCreators.getConfig(Object.assign({}, data)),
Object.assign({}, data, {
hasGateWay,
apiGatewayDomain: `${
window.location.origin
}/Publish/GateWay`,
}),
),
); );
} });
}) } catch (e) {
.catch(error => { console.log(e);
store.dispatch(actionCreators.getConfigError(error)); // eslint-disable-next-line no-empty
store.dispatch(actionCreators.getConfig(Object.assign({}, data))); } finally {
}); }
} }
}) })
// eslint-disable-next-line no-shadow // eslint-disable-next-line no-shadow
......
import React from 'react'; import React from 'react';
import { request } from '@wisdom-utils/utils';
import { Avatar, Form, Input, message, Modal, Popover, Spin } from 'antd'; import {
Avatar,
Form,
Input,
message,
Modal,
Popover,
Spin,
Upload,
} from 'antd';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import { withRouter } from 'react-router-dom'; import { withRouter } from 'react-router-dom';
import styles from './index.less'; import styles from './index.less';
import services from '../../api/service/base'; import services from '../../api/service/base';
const formItemLayout = { const formItemLayout = {
labelCol: { labelCol: {
xs: { span: 4 }, xs: { span: 4 },
sm: { span: 4 }, sm: { span: 4 },
}, },
}; };
const UPLOAD_FILE_URL = "/cityinterface/rest/services/filedownload.svc/uploadfile/个人信息/{path}/{filename}";
/* eslint-disable */ /* eslint-disable */
const getIOT = () => const getIOT = () =>
window.globalConfig.loginTemplate === 'Dark - IOTMultiLogin.html'; window.globalConfig.loginTemplate === 'Dark - IOTMultiLogin.html';
class AvatarDropdown extends React.Component { class AvatarDropdown extends React.Component {
/* eslint-disable no-unused-vars */ /* eslint-disable no-unused-vars */
constructor(props) {
super(props);
let {
currentUser = {
avatar: this.transformAvatarImage(),
name:
(props.global &&
props.global.userInfo &&
props.global.userInfo.fullName) ||
'Serati Ma',
},
} = this.props;
this.state = {
currentUser: currentUser,
visible: false,
popVisible: false,
path: null,
version: null,
action: UPLOAD_FILE_URL
}
}
loginout = event => { loginout = event => {
// eslint-disable-next-line no-undef // eslint-disable-next-line no-undef
createStoreage.remove('PANDA_STORE'); createStoreage.remove('PANDA_STORE');
...@@ -59,10 +90,6 @@ class AvatarDropdown extends React.Component { ...@@ -59,10 +90,6 @@ class AvatarDropdown extends React.Component {
return ret.join(','); return ret.join(',');
}; };
state = {
visible: false,
popVisible: false,
};
showModal = event => { showModal = event => {
event.stopPropagation(); event.stopPropagation();
...@@ -140,7 +167,81 @@ class AvatarDropdown extends React.Component { ...@@ -140,7 +167,81 @@ class AvatarDropdown extends React.Component {
return image; return image;
} }
beforeUpload(file) {
const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
if (!isJpgOrPng) {
message.error('You can only upload JPG/PNG file!');
}
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isLt2M) {
message.error('Image must smaller than 2MB!');
}
const path = (new Date()).getTime();
this.setState({
path: path,
action: this.state.action.replace('{path}', path).replace('{filename}', file.name)
})
return isJpgOrPng && isLt2M;
}
handleChange(data) {
console.log(data)
}
componentDidMount() {
services.getVersion().then(res => {
if(res.success) {
this.setState({
version: res.message
})
}
}).catch(error => {
message.error("获取版本号错误,请联系相关开发人员")
})
}
customRequest = ({
action,
data,
file,
filename,
headers,
onError,
onProgress,
onSuccess,
withCredentials,}) => {
const formData = new FormData();
if(data) {
Object.keys(data).forEach(key => {
formData.append(key, data[key]);
})
}
formData.append("filedata", file);
request.post(action, formData, {
withCredentials,
headers: {
...headers,
Accept: '*/*',
'civ-site': ''
},
ignoreSite: true,
onUploadProgress: ({ total, loaded }) => {
onProgress({ percent: Math.round((loaded / total) * 100).toFixed(2) }, file);
},
})
.then(res => {
onSuccess(res, file);
})
.catch(onError);
return {
abort() {
console.log('upload progress is aborted.');
}
}
}
render() { render() {
const self = this;
const { props } = this; const { props } = this;
const { userInfo } = props.global; const { userInfo } = props.global;
const site = const site =
...@@ -151,24 +252,67 @@ class AvatarDropdown extends React.Component { ...@@ -151,24 +252,67 @@ class AvatarDropdown extends React.Component {
props.global.client !== 'oms' props.global.client !== 'oms'
? userInfo.site ? userInfo.site
: ''; : '';
const {
currentUser = {
avatar: this.transformAvatarImage(), const uploadProps = {
name: action: this.state.action,
(props.global && onStart(file) {
props.global.userInfo && console.log('onStart', file, file.name);
props.global.userInfo.fullName) ||
'Serati Ma',
}, },
} = this.props; onSuccess(res, file) {
debugger
if(res.success) {
const avatarPath = "/个人信息/" + self.state.path + '/' + file.name;
const params = {
userID: props.global.get("userInfo.OID"),
loginName: props.global.get("userInfo.loginName"),
userName: props.global.get("userInfo.fullName"),
_version: self.state.version,
mark: props.global.get("userInfo.Mark"),
phone: props.global.get("userInfo.Phone"),
email: props.global.get("userInfo.Email"),
userImage: decodeURIComponent(avatarPath),
WXid: props.global.get("userInfo.WXid")
}
services.updateAvatar(params).then(res => {
if(res.success) {
message.success("头像修改成功");
self.setState({
currentUser: {
name: self.state.currentUser.name,
avatar: `/cityinterface/rest/services/filedownload.svc/download${avatarPath}`,
action: UPLOAD_FILE_URL
}
})
}
}).catch(e => {
message.error("头像修改失败")
})
} else {
message.error(res.message);
}
},
onError(err) {
console.log('onError', err);
},
onProgress({ percent }, file) {
console.log('onProgress', `${percent}%`, file.name);
},
customRequest: this.customRequest.bind(this),
beforeUpload: this.beforeUpload.bind(this),
onChange: this.handleChange.bind(this)
}
const currentUser = this.state.currentUser;
const menuHeaderDropdown = ( const menuHeaderDropdown = (
<div className={styles.userInfo}> <div className={styles.userInfo}>
<div className={styles.header}> <div className={styles.header}>
<div <Upload className="avatar-uploader" {...uploadProps}>
className={styles.avatar} <div
style={{ backgroundImage: `url(${currentUser.avatar})` }} className={styles.avatar}
/> style={{ backgroundImage: `url(${currentUser.avatar})` }}
/>
</Upload>
<div className={styles.name}>{userInfo.fullName}</div> <div className={styles.name}>{userInfo.fullName}</div>
</div> </div>
<div className={styles.body}> <div className={styles.body}>
......
...@@ -171,7 +171,8 @@ class NoticeIconView extends Component { ...@@ -171,7 +171,8 @@ class NoticeIconView extends Component {
}); });
}; };
handlerMointer = (item, detail) => { handlerMointer = (event, item, detail) => {
event.stopPropagation();
this.notifier.confirmRead(false, [item.id]); this.notifier.confirmRead(false, [item.id]);
if (detail) { if (detail) {
const widgetID = 'widget_city_综合运营_管网监控_实时监控_报警监控'; const widgetID = 'widget_city_综合运营_管网监控_实时监控_报警监控';
...@@ -237,8 +238,12 @@ class NoticeIconView extends Component { ...@@ -237,8 +238,12 @@ class NoticeIconView extends Component {
<div className={styles.content}> <div className={styles.content}>
<div className={styles['content-top']}> <div className={styles['content-top']}>
<a <a
onClick={() => onClick={event =>
this.handlerMointer(this.state.alarmMessage.message, true) this.handlerMointer(
event,
this.state.alarmMessage.message,
true,
)
} }
> >
{this.state.alarmMessage && {this.state.alarmMessage &&
...@@ -247,8 +252,9 @@ class NoticeIconView extends Component { ...@@ -247,8 +252,9 @@ class NoticeIconView extends Component {
</a> </a>
<span <span
title="点击标为已读" title="点击标为已读"
onClick={() => onClick={event =>
this.handlerMointer( this.handlerMointer(
event,
this.state.alarmMessage.message, this.state.alarmMessage.message,
false, false,
) )
......
...@@ -151,6 +151,7 @@ const GlobalHeaderRight = props => { ...@@ -151,6 +151,7 @@ const GlobalHeaderRight = props => {
) : null; ) : null;
}; };
const handleOrder = event => { const handleOrder = event => {
event.stopPropagation(); event.stopPropagation();
const widgetConfig = getConfig( const widgetConfig = getConfig(
......
...@@ -149,7 +149,7 @@ class NoticeList extends React.Component { ...@@ -149,7 +149,7 @@ class NoticeList extends React.Component {
) : this.hasMore() ? ( ) : this.hasMore() ? (
<span>下拉加载更多</span> <span>下拉加载更多</span>
) : ( ) : (
<span>已经没有更多消息了</span> <span style={{fontSize: '12px', color: 'rgba(0, 0, 0, 0.6)'}}>已经没有更多消息了</span>
)} )}
</div> </div>
</div> </div>
......
...@@ -28,6 +28,7 @@ export class AlarmContent { ...@@ -28,6 +28,7 @@ export class AlarmContent {
const Alarm = ({ message, confirmRead, config }) => { const Alarm = ({ message, confirmRead, config }) => {
const alarmContent = (config.mqtt_mess.MessageLevel === "2.0" && isJSON(message.infoContent)) ? JSON.parse(message.infoContent): message.infoContent; const alarmContent = (config.mqtt_mess.MessageLevel === "2.0" && isJSON(message.infoContent)) ? JSON.parse(message.infoContent): message.infoContent;
const goPath = item => { const goPath = item => {
debugger
confirmRead(false, [message.id]); confirmRead(false, [message.id]);
const widgetID = 'widget_city_综合运营_管网监控_实时监控_报警监控'; const widgetID = 'widget_city_综合运营_管网监控_实时监控_报警监控';
const webPath = 'product/scada/AlertMonitoring/AlertMonitoring'; const webPath = 'product/scada/AlertMonitoring/AlertMonitoring';
...@@ -77,7 +78,7 @@ const Alarm = ({ message, confirmRead, config }) => { ...@@ -77,7 +78,7 @@ const Alarm = ({ message, confirmRead, config }) => {
{`${(alarmValue && Array.isArray(alarmValue) && alarmValue.length > 0 && {`${(alarmValue && Array.isArray(alarmValue) && alarmValue.length > 0 &&
alarmValue[1] !== 'undefined' && alarmValue[1] !== 'undefined' &&
alarmValue[1]) || alarmValue[1]) ||
''} / ${alarmContent.alarmThreshold.split(' ').join('')}`} ''} / ${alarmContent && alarmContent.alarmThreshold && alarmContent.alarmThreshold.split(' ').join('')}`}
</p> </p>
<p className={commonStyles.messageTime}>{message.time}</p> <p className={commonStyles.messageTime}>{message.time}</p>
</div> </div>
......
...@@ -63,7 +63,8 @@ const Case = ({ message, confirmRead }) => { ...@@ -63,7 +63,8 @@ const Case = ({ message, confirmRead }) => {
<img <img
className={commonStyles.confirm} className={commonStyles.confirm}
title="点击标为已读" title="点击标为已读"
onClick={() => { onClick={e => {
e.stopPropagation();
confirmRead(false, [message.id]); confirmRead(false, [message.id]);
}} }}
src="https://panda-water.cn/Web4/assets/images/message/%E5%8B%BE%E6%B5%85.png" src="https://panda-water.cn/Web4/assets/images/message/%E5%8B%BE%E6%B5%85.png"
......
...@@ -41,7 +41,8 @@ const Notice = ({ message, confirmRead, config, handlerSysDetail }) => { ...@@ -41,7 +41,8 @@ const Notice = ({ message, confirmRead, config, handlerSysDetail }) => {
<img <img
className={commonStyles.confirm} className={commonStyles.confirm}
title="点击标为已读" title="点击标为已读"
onClick={() => { onClick={e => {
e.stopPropagation();
confirmRead(false, [message.id]); confirmRead(false, [message.id]);
}} }}
src="https://panda-water.cn/Web4/assets/images/message/%E5%8B%BE%E6%B5%85.png" src="https://panda-water.cn/Web4/assets/images/message/%E5%8B%BE%E6%B5%85.png"
......
...@@ -32,7 +32,8 @@ const Unknown = ({ message, confirmRead }) => { ...@@ -32,7 +32,8 @@ const Unknown = ({ message, confirmRead }) => {
<img <img
className={commonStyles.confirm} className={commonStyles.confirm}
title="点击标为已读" title="点击标为已读"
onClick={() => { onClick={e => {
e.stopPropagation();
confirmRead(false, [message.id]); confirmRead(false, [message.id]);
}} }}
src="https://panda-water.cn/Web4/assets/images/message/%E5%8B%BE%E6%B5%85.png" src="https://panda-water.cn/Web4/assets/images/message/%E5%8B%BE%E6%B5%85.png"
......
...@@ -73,6 +73,7 @@ const NoticeIcon = props => { ...@@ -73,6 +73,7 @@ const NoticeIcon = props => {
onClick={() => { onClick={() => {
confirmRead(true); confirmRead(true);
}} }}
style={{ color: panes.length === 0 && 'rgba(0, 0, 0, 0.5)' }}
> >
全部标记已读 全部标记已读
</span> </span>
......
...@@ -50,6 +50,7 @@ ...@@ -50,6 +50,7 @@
padding: 8px; padding: 8px;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center;
.title { .title {
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
......
...@@ -205,6 +205,13 @@ body { ...@@ -205,6 +205,13 @@ body {
} }
} }
} }
& /deep/ .@{ant-prefix}-message-notice-content {
.@{ant-prefix}-message-custom-content {
display: flex;
align-items: center;
}
}
} }
.panda-pro-components-global-header-index-userWrapper { .panda-pro-components-global-header-index-userWrapper {
......
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