Commit 5163e82b authored by Maofei94's avatar Maofei94

Merge branch 'master' of g.civnet.cn:test/maintenance

parents cc82a60f b27be4ff
...@@ -27,7 +27,12 @@ ...@@ -27,7 +27,12 @@
cursor: pointer; cursor: pointer;
border-bottom: 1px solid #2f54eb; border-bottom: 1px solid #2f54eb;
} }
.search{
width: 50%;
}
.hide{
display: none !important;
}
.svgBg{ .svgBg{
background: #aaa; background: #aaa;
background-image: linear-gradient(white 0px, transparent 0), linear-gradient(hsla(0,0%,100%,.3) 1px, transparent 0), linear-gradient(90deg, hsla(0,0%,100%,.3) 1px, transparent 0); background-image: linear-gradient(white 0px, transparent 0), linear-gradient(hsla(0,0%,100%,.3) 1px, transparent 0), linear-gradient(90deg, hsla(0,0%,100%,.3) 1px, transparent 0);
...@@ -66,6 +71,7 @@ ...@@ -66,6 +71,7 @@
&:hover>span{ &:hover>span{
color: #2f54eb; color: #2f54eb;
} }
img { img {
margin: auto; margin: auto;
width: 100%; width: 100%;
...@@ -76,7 +82,7 @@ ...@@ -76,7 +82,7 @@
background-color: rgba(238,238,238,1); background-color: rgba(238,238,238,1);
} }
&:hover, &:hover,
&.seleted { &>.seleted {
.iconBtn { .iconBtn {
visibility: visible; visibility: visible;
} }
......
import React from 'react'; import React from 'react';
import { Upload, Modal, message, Tabs, Result } from 'antd'; import { Upload, Modal, message, Tabs, Result, Input } from 'antd';
import { PlusOutlined, CheckCircleFilled } from '@ant-design/icons'; import { PlusOutlined, CheckCircleFilled } from '@ant-design/icons';
import ImgCrop from 'antd-img-crop'; import ImgCrop from 'antd-img-crop';
import classnames from 'classnames'; import classnames from 'classnames';
...@@ -46,6 +46,7 @@ interface PicturesWallType { ...@@ -46,6 +46,7 @@ interface PicturesWallType {
type?: 'CityTemp'|'icon'|'androidMenu'|'menuNew', type?: 'CityTemp'|'icon'|'androidMenu'|'menuNew',
value?: string | string[], value?: string | string[],
uploadContext: any, uploadContext: any,
search: string,
} }
class PicturesWall extends React.Component<PicturesWallType> { class PicturesWall extends React.Component<PicturesWallType> {
...@@ -57,6 +58,7 @@ class PicturesWall extends React.Component<PicturesWallType> { ...@@ -57,6 +58,7 @@ class PicturesWall extends React.Component<PicturesWallType> {
imgBed: this.props.uploadContext?.imgBed || [], imgBed: this.props.uploadContext?.imgBed || [],
curSelectedImg: '', curSelectedImg: '',
prevProps:{}, prevProps:{},
search: '',
fileList: this.props.value ? Array.isArray(this.props.value) ? this.props.value.map((v) => ({ fileList: this.props.value ? Array.isArray(this.props.value) ? this.props.value.map((v) => ({
url: v, url: v,
uid: uuid(8, 16), uid: uuid(8, 16),
...@@ -331,25 +333,35 @@ class PicturesWall extends React.Component<PicturesWallType> { ...@@ -331,25 +333,35 @@ class PicturesWall extends React.Component<PicturesWallType> {
{imgBed.map((item, i) => { {imgBed.map((item, i) => {
return ( return (
<TabPane tab={tabNames[item.moduleName]} key={item.moduleName}> <TabPane tab={tabNames[item.moduleName]} key={item.moduleName}>
<Input
placeholder="搜索图库"
className={styles.search}
size="middle"
value={this.state.search}
onChange={e => this.setState({search: e.target.value})}
allowClear/>
<div className={styles.imgBox}> <div className={styles.imgBox}>
{item.child?.map(m => m.fileUrls).flat(Infinity).map((item: string, i: number) => { {item.child?.map(m => m.fileUrls).flat(Infinity).map((item: string, i: number) => {
const fileName = this.getFileName(item)
return ( return (
<div <div
className={styles.imgItem} className={classnames({
[styles.imgItem]:true,
[styles.hide]: !fileName.includes(this.state.search)
})}
key={i} key={i}
onClick={() => this.handleImgSelected(item)}> onClick={() => this.handleImgSelected(item)}>
<div <div
className={classnames( className={classnames(
curSelectedImg === item ? styles.seleted : '', curSelectedImg === item ? styles.seleted : '',
)} )}
> >
<img className={classnames({[styles.svgGray]: /\.svg$/.test(item)})} src={this.getImageUrl(item)} title={item} alt="熊猫运维中台系统" /> <img className={classnames({[styles.svgGray]: /\.svg$/.test(item)})} src={this.getImageUrl(item)} title={item} alt="熊猫运维中台系统" />
<span className={styles.iconBtn}> <span className={styles.iconBtn}>
<CheckCircleFilled /> <CheckCircleFilled />
</span> </span>
</div> </div>
<span>{this.getFileName(item)}</span> <span>{fileName}</span>
</div> </div>
); );
})} })}
......
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { import {
Table, Table,
Tooltip,
Spin, Spin,
Modal, Modal,
Form, Form,
...@@ -11,7 +12,8 @@ import { ...@@ -11,7 +12,8 @@ import {
notification, notification,
message, message,
} from 'antd'; } from 'antd';
import { get } from '@/services/index'; import { get } from '@/services';
import { EditTwoTone, DeleteOutlined } from '@ant-design/icons';
import styles from './AppDic.less'; import styles from './AppDic.less';
const AppDic = () => { const AppDic = () => {
...@@ -53,12 +55,11 @@ const AppDic = () => { ...@@ -53,12 +55,11 @@ const AppDic = () => {
{ {
title: '操作', title: '操作',
key: 'action', key: 'action',
width: 200, width: 100,
render: record => ( render: record => (
<Space> <Space>
<Button <Tooltip title="编辑">
type="primary" <EditTwoTone
size="small"
onClick={() => { onClick={() => {
setSelect(record); setSelect(record);
setEditVisible(true); setEditVisible(true);
...@@ -69,24 +70,25 @@ const AppDic = () => { ...@@ -69,24 +70,25 @@ const AppDic = () => {
description: record.Description, description: record.Description,
}); });
}} }}
> style={{ fontSize: '16px' }}
修改 />
</Button> </Tooltip>
<Popconfirm <Popconfirm
title="是否删除该数据?" title="是否删除该数据?"
okText="确认" okText="确认"
cancelText="取消" cancelText="取消"
onConfirm={submitDelete} onConfirm={submitDelete}
> >
<Button <DeleteOutlined
size="small"
danger
onClick={() => { onClick={() => {
setSelect(record); setSelect(record);
}} }}
> style={{
删除 fontSize: '16px',
</Button> margin: '0px 10px',
color: '#e86060',
}}
/>
</Popconfirm> </Popconfirm>
</Space> </Space>
), ),
......
...@@ -15,7 +15,7 @@ import { ...@@ -15,7 +15,7 @@ import {
Col, Col,
} from 'antd'; } from 'antd';
import { EditTwoTone, DeleteOutlined } from '@ant-design/icons'; import { EditTwoTone, DeleteOutlined } from '@ant-design/icons';
import { get } from '@/services/index'; import { get } from '@/services';
import styles from './WebDic.less'; import styles from './WebDic.less';
const WebDic = () => { const WebDic = () => {
......
...@@ -257,7 +257,7 @@ const UserManage = () => { ...@@ -257,7 +257,7 @@ const UserManage = () => {
<Tooltip title="冻结用户"> <Tooltip title="冻结用户">
<StopOutlined <StopOutlined
onClick={() => freezeUser(record)} onClick={() => freezeUser(record)}
style={{ fontSize: '16px', color: '#1890FF' }} style={{ fontSize: '16px', color: '#e86060' }}
/> />
</Tooltip> </Tooltip>
</> </>
...@@ -267,15 +267,15 @@ const UserManage = () => { ...@@ -267,15 +267,15 @@ const UserManage = () => {
<Tooltip title="解冻用户"> <Tooltip title="解冻用户">
<StopOutlined <StopOutlined
onClick={() => freezeUser(record)} onClick={() => freezeUser(record)}
style={{ fontSize: '16px' }} style={{ fontSize: '16px', color: '#1890FF' }}
/> />
</Tooltip> </Tooltip>
</> </>
)} )}
<Tooltip title="删除用户"> <Tooltip title="删除用户">
<DeleteTwoTone <DeleteOutlined
onClick={() => deleteUser(record)} onClick={() => deleteUser(record)}
style={{ fontSize: '16px' }} style={{ fontSize: '16px', color: '#e86060' }}
/> />
</Tooltip> </Tooltip>
</Space> </Space>
...@@ -285,8 +285,6 @@ const UserManage = () => { ...@@ -285,8 +285,6 @@ const UserManage = () => {
const [selectionType] = useState('checkbox'); const [selectionType] = useState('checkbox');
const rowSelection = { const rowSelection = {
onChange: (selectedRowKeys, selectedRows) => { onChange: (selectedRowKeys, selectedRows) => {
console.log(selectedRowKeys.toString());
console.log(selectedRows.map(item => item.OUID).toString());
setUserIDs(selectedRowKeys.toString()); // 数组转字符串,逗号连接 setUserIDs(selectedRowKeys.toString()); // 数组转字符串,逗号连接
setOrgIDs(selectedRows.map(item => item.OUID).toString()); setOrgIDs(selectedRows.map(item => item.OUID).toString());
// 选中行数大于0时设置批量操作可行 // 选中行数大于0时设置批量操作可行
...@@ -1414,14 +1412,22 @@ const UserManage = () => { ...@@ -1414,14 +1412,22 @@ const UserManage = () => {
label="新密码" label="新密码"
rules={[{ required: true, message: '不能为空' }]} rules={[{ required: true, message: '不能为空' }]}
> >
<Input placeholder="请输入新密码" /> <Input
placeholder="请输入新密码"
type="password"
autoComplete="off"
/>
</Form.Item> </Form.Item>
<Form.Item <Form.Item
name="passwordConfirm" name="passwordConfirm"
label="确认密码" label="确认密码"
rules={[{ required: true, message: '不能为空' }]} rules={[{ required: true, message: '不能为空' }]}
> >
<Input placeholder="再次确认新密码" /> <Input
placeholder="再次确认新密码"
type="password"
autoComplete="off"
/>
</Form.Item> </Form.Item>
</Form> </Form>
</Modal> </Modal>
......
...@@ -9,7 +9,7 @@ import { ...@@ -9,7 +9,7 @@ import {
deleteWebsite, deleteWebsite,
getAllConfigName, getAllConfigName,
} from '@/services/webConfig/api'; } from '@/services/webConfig/api';
import { ExclamationCircleOutlined } from '@ant-design/icons'; import { EditTwoTone, ExclamationCircleOutlined } from '@ant-design/icons';
import Modal from 'antd/lib/modal/Modal'; import Modal from 'antd/lib/modal/Modal';
import ProCard from '@ant-design/pro-card'; import ProCard from '@ant-design/pro-card';
import styles from './index.less'; import styles from './index.less';
...@@ -243,7 +243,7 @@ const WebConfigPage = props => { ...@@ -243,7 +243,7 @@ const WebConfigPage = props => {
setIsEdit(true); setIsEdit(true);
}} }}
> >
查看/编辑网站配置 <EditTwoTone /> 查看/编辑网站配置
</span> </span>
<MenuConfig <MenuConfig
menu={tabPaneItem?.children.find( menu={tabPaneItem?.children.find(
......
...@@ -9,9 +9,12 @@ ...@@ -9,9 +9,12 @@
user-select: none; user-select: none;
position: relative; position: relative;
top: -10px; top: -10px;
}
.link:hover{
color: #1890ff; color: #1890ff;
.anticon{
top: -3px;
margin-right: 2px;
position: relative;
}
} }
.ant-tabs-content-holder>.ant-tabs-content.ant-tabs-content-top{ .ant-tabs-content-holder>.ant-tabs-content.ant-tabs-content-top{
position: absolute; position: absolute;
......
...@@ -7,6 +7,7 @@ import { ...@@ -7,6 +7,7 @@ import {
SolutionOutlined, SolutionOutlined,
// AndroidOutlined, // AndroidOutlined,
// CommentOutlined, // CommentOutlined,
TableOutlined,
CopyOutlined, CopyOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import UserLayout from '../layouts/UserLayout'; import UserLayout from '../layouts/UserLayout';
...@@ -21,7 +22,7 @@ import CurrentSolution from '@/pages/database/CurrentSolution'; ...@@ -21,7 +22,7 @@ import CurrentSolution from '@/pages/database/CurrentSolution';
import UserManage from '../pages/userCenter/UserManage'; import UserManage from '../pages/userCenter/UserManage';
import RoleManage from '@/pages/userCenter/roleManage/RoleManage'; import RoleManage from '@/pages/userCenter/roleManage/RoleManage';
import SiteManage from '../pages/userCenter/siteManage/SiteManage'; import SiteManage from '../pages/userCenter/siteManage/SiteManage';
import Dictionary from '../pages/platformCenter/dictionary'; import Dictionary from '../pages/dataCenter/dictionary';
import ServiceLog from '../pages/log/serviceLog'; import ServiceLog from '../pages/log/serviceLog';
import LoginLog from '../pages/log/loginLog'; import LoginLog from '../pages/log/loginLog';
import OmsLog from '../pages/log/omsLog'; import OmsLog from '../pages/log/omsLog';
...@@ -207,13 +208,14 @@ export default { ...@@ -207,13 +208,14 @@ export default {
'/web4/?widget=product/oms/MqttConfig/MqttConfig.js|hideMap=true', '/web4/?widget=product/oms/MqttConfig/MqttConfig.js|hideMap=true',
component: BaseFrameContainer, component: BaseFrameContainer,
}, },
],
},
{ {
path: '/platformCenter/dictionary', path: '/dataCenter/dictionary',
name: '数据中心', name: '数据中心',
icon: <TableOutlined style={iconStyle} />,
component: Dictionary, component: Dictionary,
}, },
],
},
{ {
path: '/productCenter', path: '/productCenter',
component: BlankLayout, component: BlankLayout,
......
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