Commit 7f03904c by guomingpang

style:style update1

parent b19e7da0
......@@ -44,8 +44,8 @@ class CollegeInfoPage extends React.Component {
});
});
};
onChangeFiledValue = (filed, value) => {
console.log(filed, value)
this.setState({
[filed]: value,
});
......
......@@ -3,6 +3,9 @@
display: flex;
justify-content: space-between;
align-items: center;
.wechat-audit:hover{
cursor: pointer;
}
.icon-font-weixin{
color: #5DD333;
margin-right:4px ;
......
......@@ -8,13 +8,14 @@
*/
import React, { useEffect, useState } from "react";
import { withRouter } from "react-router-dom";
import { Route, withRouter } from 'react-router-dom';
import _ from "underscore";
import { PageControl } from "@/components";
import { Input, DatePicker, Select, Button, message } from "antd";
import StoreService from "@/domains/store-domain/storeService";
import User from "@/common/js/user";
import ChooseMembersModal from "./modal/ChooseMembersModal";
import WechatUserAudit from './WechatUserAudit/WechatUserAudit'
import LimitTip from "./LimitTip"
import { XMTable } from '@/components';
......@@ -30,7 +31,8 @@ declare var window: any;
function UserManagePage() {
function UserManagePage(props:any) {
const { match } = props;
const [userList, setUserList] = useState([]);
const [model, setModel] = useState<React.ReactNode>(null);
const [query, setQuery] = useState({
......@@ -139,7 +141,11 @@ function UserManagePage() {
<div className=" page user-manage-page">
<div className="content-header">
<div>学员管理</div>
<div ><span className='icon iconfont icon-font-weixin'>&#xe8e0;</span><span className='content-header-right'>学员审核列表</span></div>
<div className='wechat-audit' onClick={()=>{
window.RCHistory.push({
pathname: `${match.url}/wechat-user-audit`,
});
}} ><span className='icon iconfont icon-font-weixin'>&#xe8e0;</span><span className='content-header-right'>学员审核列表</span></div>
</div>
<div className="box">
<div className="box-header">
......@@ -246,6 +252,12 @@ function UserManagePage() {
</div>
</div>
{model}
<Route
path={`${match.url}/wechat-user-audit`}
render={() => {
return <WechatUserAudit/>;
}}
/>
</div>
);
}
......
import React, { useState, useEffect } from 'react';
import Breadcrumbs from '@/components/Breadcrumbs';
import WechatUserAuditFilter from './WechatUserAuditFilter';
import WechatUserAuditOpt from './WechatUserAuditOpt'
import WechatUserAuditList from './WechatUserAuditList';
import PlanService from '@/domains/plan-domain/planService';
import User from '@/common/js/user';
import './WechatUserAudit.less';
const WechatUserAudit = function () {
const [listData, setListData] = useState([]);
const [totalCount, setTotalCount] = useState(0);
const [query, setQuery] = useState({
current: 1,
size: 10,
type: 'b'
});
useEffect(() => {
//列表获取
function handleFetchPlanList(_query) {
const params = {
...query,
..._query,
storeUserId: User.getStoreUserId(),
};
PlanService.getTrainingPlanPage(params).then((res) => {
const {
result: { records = [], total },
} = res;
setListData(records);
setTotalCount(total);
});
}
handleFetchPlanList();
}, [query]);
//搜索条件改变
function queryChange(_query) {
const params = {
...query,
..._query,
};
setQuery(params);
}
return (
<div className='page wechat-user-audit'>
<Breadcrumbs navList='学员审核列表' />
<div className='box'>
<WechatUserAuditFilter onChange={queryChange} />
<WechatUserAuditOpt onChange = {queryChange} defaultType={query.type}/>
<WechatUserAuditList listData={listData} query={query} totalCount={totalCount} onChange={queryChange} />
</div>
</div>
);
};
export default WechatUserAudit;
.wechat-user-audit{
}
\ No newline at end of file
/*
* @Author: 庞国铭
* @Description: 学员审核列表 筛选
*/
import React, { useState } from 'react';
import { Row, Input, Tooltip } from 'antd';
import RangePicker from '@/modules/common/DateRangePicker';
import moment from 'moment';
import './WechatUserAuditFilter.less';
const { Search } = Input;
const defaultQuery = {
userName: null,
startTime: null,
endTime: null,
};
const WechatUserAuditFilter = function (props) {
const { onChange = () => {} } = props;
const [query, setQuery] = useState(defaultQuery);
// 改变搜索条件
function handleChangeQuery(field, value) {
let _query = {
...query,
[field]: value,
current: 1,
};
onChange(_query);
}
//日期选择
function handleChangeDates(dates) {
let _query = {
...query,
current: 1,
};
if (_.isEmpty(dates)) {
delete _query.startTime;
delete _query.endTime;
} else {
_query.startTime = dates[0]?.startOf('day').valueOf();
_query.endTime = dates[1]?.endOf('day').valueOf();
}
setQuery(_query);
onChange(_query);
}
//重置
function handleReset() {
setQuery({
...defaultQuery,
current: 1,
});
onChange(query);
}
return (
<div className='wechat-user-audit-filter'>
<Row type='flex' justify='space-between' align='top'>
<div className='search-condition'>
<div className='search-condition__item'>
<span className='search-name'>直播名称:</span>
<Search
value={query.courseName}
placeholder='搜索直播名称'
onChange={(e) => {
handleChangeQuery('courseName', e.target.value);
}}
onSearch={() => {
onChange(query.current);
}}
style={{ width: 'calc(100% - 81px)' }}
className='search-input'
enterButton={<span className='icon iconfont'>&#xe832;</span>}
/>
</div>
<div className='search-condition__item'>
<span className='search-date'>上课日期:</span>
<RangePicker
id='course_date_picker'
allowClear={false}
value={query.startTime ? [moment(query.startTime), moment(query.endTime)] : null}
format={'YYYY-MM-DD'}
onChange={(dates) => {
handleChangeDates(dates);
}}
style={{ width: 'calc(100% - 81px)' }}
/>
</div>
</div>
<div className='reset-fold-area'>
<Tooltip title='清空筛选'>
<span className='resetBtn iconfont icon' onClick={handleReset}>
&#xe61b;
</span>
</Tooltip>
</div>
</Row>
</div>
);
};
export default WechatUserAuditFilter;
.wechat-user-audit-filter{
position: relative;
.ant-input-search-button{
border-left:none;
}
.search-condition {
width: calc(100% - 80px);
display: flex;
align-items: center;
flex-wrap: wrap;
&__item {
width: 30%;
margin-right: 3%;
margin-bottom: 12px;
.search-name{
width: 81px;
vertical-align: middle;
display:inline-block;
height:32px;
line-height:32px;
}
}
}
.reset-fold-area {
position: absolute;
right: 12px;
}
.resetBtn {
color: #999999;
font-size: 18px;
margin-right: 8px;
}
.fold-btn {
font-size: 14px;
color: #666666;
line-height: 20px;
.fold-icon {
font-size: 12px;
margin-left:4px;
}
}
}
.data-icon {
cursor: pointer;
}
import React from 'react';
import { PageControl, XMTable } from '@/components';
// import User from '@/common/js/user';
import './WechatUserAuditList.less'
function WechatUserAuditList(props) {
const {listData , totalCount, query,onChange=()=>{}} =props
function parseColumns() {
const columns = [
{
title: '微信名称',
key: 'planName',
dataIndex: 'planName',
width: '14%',
fixed: 'left',
render: (val, record) => {
return (
<div className='wechat-user-audit-name'>{val}</div>
)
},
},
{
title: '真实姓名',
key: 'createName',
dataIndex: 'createName',
width: '10%',
render: (val) => {
return <div className='create-name'>{val}</div>;
},
},
{
title: '申请时间',
width: '12.5%',
key: 'created',
dataIndex: 'created',
render: (val) => {
return <span style={{ whiteSpace: 'nowrap' }}>{window.formatDate('YYYY-MM-DD H:i', val)}</span>;
},
},
{
title: '审批状态',
width: '10%',
key: 'updated',
dataIndex: 'updated',
render: (val) => {
return <span style={{ whiteSpace: 'nowrap' }}>{window.formatDate('YYYY-MM-DD H:i', val)}</span>;
},
},
{
title: '审核人',
width: '10%',
key: 'cultureCustomerNum',
dataIndex: 'cultureCustomerNum',
render: (val) => {
return <div className='join-number'>{val}</div>;
},
},
{
title: '操作',
key: 'operate',
dataIndex: 'operate',
fixed: 'right',
width: '14.5%',
render: (val, record) => {
return (
<div className='operate'>
<div className='operate__item' onClick={() => toLearningDataPage(record)}>
通过
</div>
<span className='operate__item split'> | </span>
<div className='operate__item' onClick={() => toLearningDataPage(record)}>
拒绝
</div>
</div>
);
},
},
];
return columns;
}
function toLearningDataPage(record){
console.log(record)
}
function onShowSizeChange(current, size) {
if (current === size) {
return;
}
let _query = query;
_query.size = size;
onChange(_query);
}
return (
<div className='wechat-user-audit-list'>
<XMTable
rowKey={(record) => record.id}
showSorterTooltip={false}
dataSource={listData}
columns={parseColumns()}
pagination={false}
bordered
size='middle'
scroll={{ x: 1400 }}
className='wechat-user-audit-list-table'
renderEmpty={{
description: <span style={{ display: 'block', paddingBottom: 24 }}>暂无数据</span>,
}}
/>
<div className='box-footer'>
<PageControl
current={query.current - 1}
pageSize={query.size}
total={totalCount}
toPage={(page) => {
const _query = { ...query, current: page + 1 };
onChange(_query);
}}
onShowSizeChange={onShowSizeChange}
/>
</div>
</div>
);
}
export default WechatUserAuditList
.wechat-user-audit-list {
margin-top: 12px;
.course-number {
margin-right: 45px;
}
.wechat-user-audit-list-table {
thead.ant-table-thead {
tr {
th {
padding: 10px 12px;
}
}
}
tbody {
tr {
td.ant-table-cell {
padding: 16px 12px;
color: #333;
}
&:nth-child(even) {
background: transparent;
td {
background: #fff;
}
}
&:nth-child(odd) {
background: #fafafa;
td {
background: #fafafa;
}
}
&:hover {
td {
background: #f3f6fa;
}
}
}
}
}
.operate-text {
color: #2966ff;
cursor: pointer;
}
.operate {
display: flex;
&__item {
color: #2966ff;
cursor: pointer;
&.split {
margin: 0 8px;
color: #bfbfbf;
}
}
}
.join-number {
text-align: right;
margin-right: 12px;
}
.more-operate {
line-height: 20px;
}
}
\ No newline at end of file
import React from 'react';
import { Row, Radio } from 'antd';
const WechatUserAuditOpt = function (props) {
const { onChange = () => {}, defaultType = 'a' } = props;
return (
<div className='wechat-user-audit-filter'>
<Row type='flex' justify='end' align='top'>
<Radio.Group onChange={(e)=>onChange({type:e.target.value})} defaultValue={defaultType}>
<Radio.Button value='a'>全部</Radio.Button>
<Radio.Button value='b'>待审核</Radio.Button>
<Radio.Button value='c'>已通过</Radio.Button>
<Radio.Button value='d'>已拒绝</Radio.Button>
</Radio.Group>
</Row>
</div>
);
};
export default WechatUserAuditOpt;
......@@ -6,6 +6,7 @@ import BaseService from "@/domains/basic-domain/baseService";
import User from "@/common/js/user";
import Breadcrumbs from "@/components/Breadcrumbs";
import ImgClipModal from '@/components/ImgClipModal'
import {debounce} from 'underscore'
import './CreateCollege.less';
export default class CreateCollege extends React.Component {
......@@ -93,6 +94,12 @@ export default class CreateCollege extends React.Component {
}
}
onChangeFiledValue = (filed, value) => {
this.setState({
[filed]: value,
});
};
render() {
const {
......@@ -150,13 +157,12 @@ export default class CreateCollege extends React.Component {
}}
></Input>
</Form.Item>
<Form.Item label='学员审核' name='auditSwitch' rules={[{ required: true }]}>
<Form.Item label={<div className='label-box'>学员审核 <span className='icon iconfont icon-tip'>&#xe61d;</span></div>} name='auditSwitch' rules={[{ required: true }]}>
<div className='switch-box'>
<Switch checked={auditSwitch } onChange={(e) => this.onChangeFiledValue('auditSwitch', e)}/>
<Switch checked={auditSwitch } size='small' onChange={(e) => this.onChangeFiledValue('auditSwitch', e)}/>
<Choose>
<When condition={auditSwitch}>
<div className='switch-desc'>已开启,成为学院学员需要审核</div>
<div className='switch-prew-link'>功能预览</div>
</When>
<Otherwise>
<div className='switch-desc'>已关闭,成为学院学员不需要审核</div>
......@@ -168,7 +174,7 @@ export default class CreateCollege extends React.Component {
<Button
className="button"
type="primary"
onClick={_.debounce(() => this.submit(), 3000, {
onClick={debounce(() => this.submit(), 3000, {
leading: true,
trailing: false
})}
......
......@@ -5,7 +5,7 @@
.create-box {
padding-top: 108px;
margin: 0 auto;
width: 400px;
width: 380px;
.image-box {
position: relative;
display: block;
......@@ -45,6 +45,14 @@
}
}
}
.label-box{
display: flex;
align-content: center;
.icon{
color:#BFBFBF;
margin: 0 2px;
}
}
.switch-box{
display: flex;
align-items: center;
......@@ -65,10 +73,10 @@
margin-bottom: 24px;
}
.input {
width: 350px;
width: 380px;
}
.button {
width: 350px;
width: 380px;
margin-top: 36px;
height: 32px !important;
}
......
import React, { useState, useRef, useEffect, useContext } from 'react'
import React, { useState, useRef, useEffect } from 'react'
import Breadcrumbs from "@/components/Breadcrumbs";
import { Form, Alert, Input, Button, InputNumber, DatePicker, Switch, Radio, message, Modal, Tooltip } from 'antd';
import { Route, withRouter } from 'react-router-dom';
import { Form, Input, Button, InputNumber, DatePicker, Switch, Radio, message, Modal, Tooltip } from 'antd';
import { withRouter } from 'react-router-dom';
import User from "@/common/js/user";
import moment from 'moment'
import Service from "@/common/js/service";
......
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