Commit a82ec764 authored by baixian's avatar baixian

ERP新版youhua

parent a048648b
...@@ -251,4 +251,8 @@ export default { ...@@ -251,4 +251,8 @@ export default {
livesUrl: `${dakaapi}member/live/url`, livesUrl: `${dakaapi}member/live/url`,
livesEnd: `${dakaapi}member/live/end`, livesEnd: `${dakaapi}member/live/end`,
}, },
clockmember: {
list: `${dakaapi}member/subject_students`,
deleteSubjectStudent: `${dakaapi}member/subject_student/kick_out`,
},
}; };
import { routerRedux } from 'dva/router';
import { message } from 'antd';
import { delay } from 'redux-saga';
import moment from 'moment';
import {
LocalStorage,
SessionStorage,
isExpired,
getRandomFilename,
} from '../utils/index';
import errorcode from '../common/errorcode';
import * as uploader from '../services/uploader';
import * as memberListAjax from '../services/clockmember';
import * as commonAjax from '../services/common';
export default {
namespace: 'clockmember',
state: {
clockList: [],
clockListTotal: 0,
clockListParams: {
page: 1,
perPage: 10,
subject_type: 1,
subject_id: 0,
},
},
subscriptions: {
setup({ dispatch, history }) { // eslint-disable-line
},
},
effects: {
* queryList({ payload }, { call, put, select }) {
const { params } = payload;
const { sid } = yield select(state => state.webapp);
const { clockListParams, clockListTotal } = yield select(state => state.clockmember);
const loading = message.loading('数据加载中...', 0.5);
const newParams = Object.assign(clockListParams, params, {
school_id: sid,
});
let newTotal = clockListTotal;
const data = yield call(memberListAjax.memberList, {
...newParams,
});
setTimeout(loading);
if (data.code == 200) {
if (data.data.total != undefined) {
newTotal = data.data.total;
}
yield put({
type: 'updateState',
payload: {
clockList: data.data && data.data.list,
clockListTotal: newTotal,
clockListParams: { ...newParams },
},
});
} else {
yield put({
type: 'webapp/errorrequestresolve',
payload: {
data,
},
});
}
},
* handleTickOut({ payload }, { call, put, select }) {
const { record } = payload;
const data = yield call(memberListAjax.deleteSubjectStudent, {
id: record.id,
});
if (data.code == 200) {
yield put({
type: 'queryList',
payload: {
params: {
page: 1,
perPage: 10,
},
},
});
} else {
yield put({
type: 'webapp/errorrequestresolve',
payload: {
data,
},
});
}
},
* goBack({ payload }, { call, put, select }) {
yield put(routerRedux.goBack());
},
* reset({ payload }, { call, put, select }) {
yield put({
type: 'queryList',
payload: {
params: {
page: 1,
perPage: 10,
},
},
});
},
* createLive({ payload }, { put, select }) {
yield put(routerRedux.push({
pathname: '/sjd/addLive',
}));
},
* goEdit({ payload }, { put, select }) {
const { id } = payload;
yield put(routerRedux.push({
pathname: `/sjd/editLive/${id}`,
}));
},
* pageInit({ payload }, { call, put, select }) {
yield put({
type: 'updateState',
payload: {
clockList: [],
clockListTotal: 0,
clockListParams: {
page: 1,
perPage: 10,
subject_type: 1,
subject_id: 0,
},
},
});
},
},
reducers: {
save(state, action) {
return { ...state, ...action.payload };
},
updateState(state, action) {
return { ...state, ...action.payload };
},
},
};
import { routerRedux } from 'dva/router';
import { message } from 'antd';
import {
LocalStorage,
SessionStorage,
isExpired,
} from '../utils/index';
import errorcode from '../common/errorcode';
import * as courseAjax from '../services/course';
import * as commonAjax from '../services/common';
export default {
namespace: 'common',
state: {
previewQrcode: '',
previewQrcodeShow: false,
downloadTitle: '',
},
subscriptions: {
setup({ dispatch, history }) { // eslint-disable-line
},
},
effects: {
* getCode({ payload }, { call, put, select }) {
const { record } = payload;
const loading = message.loading('小程序码生成中,请稍等...', 0);
let params;
switch (record.subject_type) {
case 1:
params = {
scene: `t=${record.id}&s=${record.school_id}&w=0`,
page: 'src/pages/themeindex/landpage',
width: 430,
};
break;
case 2:
params = {
scene: `t=${record.id}&s=${record.school_id}&w=0`,
page: 'src/pages/calendarthemeindex/landpage',
width: 430,
};
break;
case 3:
params = {
scene: `t=${record.id}&s=${record.school_id}&w=0`,
page: 'src/pages/sharemoretheme/index',
width: 430,
};
break;
default:
params = {};
break;
}
const data = yield call(commonAjax.generateQrcode, params);
setTimeout(loading);
if (data.code === 200) {
message.success('小程序码生成成功', 1);
yield put({
type: 'updateState',
payload: {
previewQrcode: data.data.url,
previewQrcodeShow: true,
downloadTitle: record.title,
},
});
} else {
message.error('小程序码生成失败', 1);
}
},
* pageInit({ payload }, { call, put, select }) {
yield put({
type: 'updateState',
payload: {
previewQrcode: '',
previewQrcodeShow: false,
downloadTitle: '',
},
});
},
},
reducers: {
save(state, action) {
return { ...state, ...action.payload };
},
updateState(state, action) {
return { ...state, ...action.payload };
},
},
};
...@@ -508,7 +508,7 @@ export default { ...@@ -508,7 +508,7 @@ export default {
}, },
}); });
yield put({ yield put({
type: 'newthemelist/getCode', type: 'common/getCode',
payload: { payload: {
record: { record: {
school_id: data.data.school_id, school_id: data.data.school_id,
......
...@@ -59,6 +59,8 @@ import officialtheme from './officialtheme'; ...@@ -59,6 +59,8 @@ import officialtheme from './officialtheme';
import liveclass from './liveclass'; import liveclass from './liveclass';
import createmarke from './createmarke'; import createmarke from './createmarke';
import newthemelist from './newthemelist'; import newthemelist from './newthemelist';
import clockmember from './clockmember';
import common from './common';
export default { export default {
loginModel, loginModel,
indexstaicModel, indexstaicModel,
...@@ -112,4 +114,6 @@ export default { ...@@ -112,4 +114,6 @@ export default {
liveclass, liveclass,
createmarke, createmarke,
newthemelist, newthemelist,
clockmember,
common,
}; };
...@@ -213,15 +213,10 @@ export default { ...@@ -213,15 +213,10 @@ export default {
}, },
}); });
}, },
* createLive({ payload }, { put, select }) { * goClockMember({ payload }, { put, select }) {
yield put(routerRedux.push({ const { record } = payload;
pathname: '/sjd/addLive',
}));
},
* goEdit({ payload }, { put, select }) {
const { id } = payload;
yield put(routerRedux.push({ yield put(routerRedux.push({
pathname: `/sjd/editLive/${id}`, pathname: `/sjd/member/${record.subject_type}/${record.id}`,
})); }));
}, },
* pageInit({ payload }, { call, put, select }) { * pageInit({ payload }, { call, put, select }) {
......
...@@ -6,19 +6,16 @@ import * as thememgtajax from '../services/thememgt'; ...@@ -6,19 +6,16 @@ import * as thememgtajax from '../services/thememgt';
import errorcode from '../common/errorcode'; import errorcode from '../common/errorcode';
import * as themeAjax from '../services/createtheme'; import * as themeAjax from '../services/createtheme';
import * as commonAjax from '../services/common'; import * as commonAjax from '../services/common';
import * as themeListAjax from '../services/newthemelist';
export default { export default {
namespace: 'thememgt', namespace: 'thememgt',
state: { state: {
classId: 0, classId: 0,
themeListSearchQuery: { themeListSearchQuery: {
sort_type: 1, sort_type: 1,
class_id: 0,
type: '', type: '',
page: 1, page: 1,
perPage: 10, perPage: 10,
school_id: 0,
start_time: '',
end_time: '',
subject_type: '', subject_type: '',
}, },
subjectType: '', subjectType: '',
...@@ -35,53 +32,38 @@ export default { ...@@ -35,53 +32,38 @@ export default {
effects: { effects: {
* querythemelist({ payload }, { call, put, select }) { * querythemelist({ payload }, { call, put, select }) {
const { params } = payload;
const { sid } = yield select(state => state.webapp); const { sid } = yield select(state => state.webapp);
const { themeListSearchQuery, themeTotal } = yield select(state => state.thememgt); const { themeListSearchQuery, themeTotal } = yield select(state => state.thememgt);
let newThemeTotal = themeTotal; const loading = message.loading('数据加载中...', 0.5);
const { params, classId } = payload; const newParams = Object.assign(themeListSearchQuery, params, {
if (classId) { school_id: sid,
yield put({ });
type: 'updateState', let newTotal = themeTotal;
payload: { const data = yield call(themeListAjax.clockList, {
classId, ...newParams,
}, });
}); setTimeout(loading);
} if (data.code == 200) {
if (!sid) { if (data.data.total != undefined) {
return; newTotal = data.data.total;
}
const newThemeListSearchQuery = Object.assign(themeListSearchQuery, params, { school_id: sid });
const loadmessage = message.loading('数据加载中...', 0);
const themeListData = yield call(thememgtajax.themeList, newThemeListSearchQuery);
setTimeout(loadmessage);
if (themeListData.code == 200) {
if (themeListData.data && themeListData.data.total != undefined) {
newThemeTotal = themeListData.data.total;
} }
yield put({ yield put({
type: 'updateState', type: 'updateState',
payload: { payload: {
sid, sid,
themeTotal: newThemeTotal, themeTotal: newTotal,
themeList: (themeListData.data && themeListData.data.list) || [], themeList: (data.data && data.data.list) || [],
themeListSearchQuery: newThemeListSearchQuery, themeListSearchQuery: newParams,
}, },
}); });
} else { } else {
yield put({
type: 'updateState',
payload: {
logining: false,
themeListSearchQuery: newThemeListSearchQuery,
},
});
yield put({ yield put({
type: 'webapp/errorrequestresolve', type: 'webapp/errorrequestresolve',
payload: { payload: {
data: themeListData, data,
}, },
}); });
// message.error(themeListData.msg, 1);
} }
}, },
* goclockmgt({ payload }, { call, put, select }) { * goclockmgt({ payload }, { call, put, select }) {
...@@ -94,52 +76,6 @@ export default { ...@@ -94,52 +76,6 @@ export default {
pathname: `/sjd/clockmgt/${payload.subject_type}/${classId}/${payload.subject_id}`, pathname: `/sjd/clockmgt/${payload.subject_type}/${classId}/${payload.subject_id}`,
})); }));
}, },
* getCode({ payload }, { call, put, select }) {
const { record } = payload;
const loading = message.loading('小程序码生成中,请稍等...', 0);
let params;
switch (record.subject_type) {
case 1:
params = {
scene: `i=${record.class_id}&t=${record.id}&w=${record.school_id}`,
page: 'src/pages/themeindex/index',
width: 430,
};
break;
case 2:
params = {
scene: `i=${record.class_id}&t=${record.id}&w=${record.school_id}`,
page: 'src/pages/calendarthemeindex/index',
width: 430,
};
break;
case 3:
params = {
scene: `i=${record.class_id}&t=${record.id}`,
page: 'src/pages/sharemoretheme/index',
width: 430,
};
break;
default:
params = {};
break;
}
const data = yield call(commonAjax.generateQrcode, params);
setTimeout(loading);
if (data.code === 200) {
message.success('小程序码生成成功', 1);
yield put({
type: 'updateState',
payload: {
previewQrcode: data.data.url,
previewQrcodeShow: true,
downloadTitle: record.title,
},
});
} else {
message.error('小程序码生成失败', 1);
}
},
* subjecttypechange({ payload }, { call, put, select }) { * subjecttypechange({ payload }, { call, put, select }) {
const { subjectType } = payload; const { subjectType } = payload;
yield put({ yield put({
...@@ -176,55 +112,16 @@ export default { ...@@ -176,55 +112,16 @@ export default {
}, },
}); });
}, },
* search({ payload }, { call, put, select }) { * reset({ payload }, { call, put, select }) {
const {
themeListSearchQuery,
startTime,
endTime,
subjectType,
} = yield select(state => state.thememgt);
themeListSearchQuery.start_time = (startTime && `${startTime.format('YYYY-MM-DD')}`) || '';
themeListSearchQuery.end_time = (endTime && `${endTime.format('YYYY-MM-DD')}`) || '';
themeListSearchQuery.subject_type = subjectType;
yield put({
type: 'updateState',
payload: {
themeListSearchQuery: { ...themeListSearchQuery },
},
});
yield put({
type: 'querythemelist',
payload: {
params: {
page: 1,
},
},
});
},
* resetsearch({ payload }, { call, put, select }) {
const {
themeListSearchQuery,
startTime,
endTime,
subjectType,
} = yield select(state => state.thememgt);
themeListSearchQuery.start_time = '';
themeListSearchQuery.end_time = '';
themeListSearchQuery.subject_type = '';
yield put({
type: 'updateState',
payload: {
themeListSearchQuery: { ...themeListSearchQuery },
startTime: '',
endTime: '',
subjectType: '',
},
});
yield put({ yield put({
type: 'querythemelist', type: 'querythemelist',
payload: { payload: {
params: { params: {
sort_type: 1,
type: '',
page: 1, page: 1,
perPage: 10,
subject_type: '',
}, },
}, },
}); });
...@@ -295,13 +192,9 @@ export default { ...@@ -295,13 +192,9 @@ export default {
classId: 0, classId: 0,
themeListSearchQuery: { themeListSearchQuery: {
sort_type: 1, sort_type: 1,
class_id: 0,
type: '', type: '',
page: 1, page: 1,
perPage: 10, perPage: 10,
school_id: 0,
start_time: '',
end_time: '',
subject_type: '', subject_type: '',
}, },
subjectType: '', subjectType: '',
......
...@@ -567,7 +567,7 @@ export default { ...@@ -567,7 +567,7 @@ export default {
}, },
{ {
path: pathname, path: pathname,
name: '主题管理', name: '打卡管理',
}, },
], ],
}, },
...@@ -1031,6 +1031,33 @@ export default { ...@@ -1031,6 +1031,33 @@ export default {
}); });
} }
dispatch({ type: 'menumatch', payload: { pathname } }); dispatch({ type: 'menumatch', payload: { pathname } });
const clockMemberActive = pathToRegexp('/sjd/member/:type/:id').exec(pathname);
if (clockMemberActive) {
dispatch({
type: 'clockmember/queryList',
payload: {
params: {
subject_type: clockMemberActive[1],
subject_id: clockMemberActive[2],
},
},
});
dispatch({
type: 'updateState',
payload: {
breadcrumbList: [
{
path: 'sjd/clockList',
name: '打卡列表',
},
{
path: pathname,
name: '学员管理',
},
],
},
});
}
if (pathname === '/sjd/integralmanage') { if (pathname === '/sjd/integralmanage') {
dispatch({ dispatch({
type: 'integral/integralModelList', type: 'integral/integralModelList',
......
...@@ -671,12 +671,10 @@ class ClassMgtForm extends React.Component { ...@@ -671,12 +671,10 @@ class ClassMgtForm extends React.Component {
} }
<span className="hreflink" onClick={() => this.goClassDetail(record, 2)}>学员管理</span> <span className="hreflink" onClick={() => this.goClassDetail(record, 2)}>学员管理</span>
<span className={pageStyle.divideline}>|</span> <span className={pageStyle.divideline}>|</span>
{/* {hasBtnPower('sjd/classmgt', 'thememgt') && */} <span>
{/* <BtnPermission btnId="30002"> */} <span className="hreflink" onClick={() => this.goThemeMgt(record)}>打卡管理</span>
{/* <span className="hreflink" onClick={() => this.goThemeMgt(record)}>打卡管理</span> */} <span className={pageStyle.divideline}>|</span>
{/* <span className={pageStyle.divideline}>|</span> */} </span>
{/* </BtnPermission> */}
{/* } */}
{ hasBtnPower('sjd/classmgt', 'callStudent') && { hasBtnPower('sjd/classmgt', 'callStudent') &&
<span> <span>
<span className="hreflink" onClick={() => this.goClassDetail(record, 3)}>点名</span> <span className="hreflink" onClick={() => this.goClassDetail(record, 3)}>点名</span>
......
import { connect } from 'dva';
import React from 'react';
import {
Icon,
Button,
Row,
Col,
Input,
Select,
Checkbox,
Table,
Modal,
Form,
Alert,
Badge,
message,
Pagination,
Tooltip, DatePicker,
Divider,
Avatar,
} from 'antd';
import moment from 'moment';
import { routerRedux } from 'dva/router';
import pageStyle from './index.less';
import { pageIn, hasBtnPower, btnPermission, translateType, imagify } from '../../utils/index';
import BtnPermission from '../../components/BtnPermission';
import QrcodeShow from '../../components/qrcodeShow';
const { Option } = Select;
const { TextArea } = Input;
const { Search } = Input;
const { RangePicker } = DatePicker;
class LiveClass extends React.Component {
constructor(props) {
super(props);
this.state = {
};
}
componentDidMount() { // 挂载
pageIn('学生管理');
}
componentWillUnmount() { // 卸载
}
handleTickOut = (record) => {
const { dispatch } = this.props;
Modal.confirm({
title: '提示',
content: '该学生将从此打卡活动活动中踢出,此次打卡记录也将会清除。',
okText: '确定',
cancelText: '取消',
icon: <Icon type="info-circle" theme="filled" style={{ color: '#1890ff', fontSize: 30 }} />,
onOk() {
dispatch({
type: 'clockmember/handleTickOut',
payload: {
record,
},
});
},
});
}
render() {
const {
userPermission,
clockListParams,
clockListTotal,
clockList,
} = this.props;
const columns = [
{
title: '姓名',
dataIndex: 'title',
key: 'title',
render: (text, record) => {
return (
<div>
<Avatar style={{ marginRight: 10 }} size={44} src={imagify(record.avatar ? record.avatar : record.school_student.avatar)} />
<span>{record.school_student && record.school_student.nickname ? record.school_student.nickname : record.name}</span>
</div>
);
},
},
{
title: '加入时间',
dataIndex: 'created_at',
key: 'created_at',
},
{
title: '手机号',
dataIndex: 'mobile',
key: 'mobile',
render: (text, record) => {
return (
<div>
<span>{text || '-'}</span>
</div>
);
},
},
{
title: '操作',
dataIndex: 'c',
key: 'c',
render: (text, record) => {
return (
<div className={pageStyle.tableoperatebox}>
<span className="hreflink" onClick={() => this.handleTickOut(record)}>踢出本次打卡</span>
</div>
);
},
},
];
return (
<div className={pageStyle.container}>
<div className={pageStyle.tablebox}>
<Table
rowKey="id"
dataSource={clockList}
columns={columns}
scroll={{ x: 'max-content' }}
pagination={false}
bordered
footer={null}
/>
<div className={pageStyle.tablefooterbox}>
<span className={pageStyle.tablefooterstatic}>{clockListTotal}条数据</span>
<Pagination
showSizeChanger
showQuickJumper
onShowSizeChange={this.sizeChange}
total={Number(clockListTotal)}
onChange={this.changePagination}
current={Number(clockListParams.page) || 1}
pageSize={clockListParams.perPage}
/>
</div>
</div>
</div>
);
}
}
LiveClass.propTypes = {
};
const LiveClassForm = Form.create()(LiveClass);
function mapStateToProps(state) {
const {
clockListParams,
clockListTotal,
clockList,
} = state.clockmember;
const {
guideStep,
guideShow,
} = state.userguide;
const {
userPermission,
schoolUserInfo,
} = state.webapp;
return {
userPermission,
guideStep,
guideShow,
schoolUserInfo,
clockListParams,
clockListTotal,
clockList,
};
}
export default connect(mapStateToProps)(LiveClassForm);
@import '../../less/variables.less';
.container {
background-color: #fff;
border-radius: 2px;
padding: 20px;
}
.headerbox{
background-color: #fff;
.headerbtn {
color: #2194FF;
font-size: 14px;
cursor: pointer;
}
padding-bottom: 18px;
}
.searchrow {
.formitem {
display: flex;
align-items: center;
.formitemlabel {
color: #000000;
font-size: 14px;
line-height: 1;
min-width: 70px;
white-space: nowrap;
}
}
}
.selectitem {
display: block;
}
.searchbtnbox {
height: 54px;
display: flex;
align-items: flex-end;
}
.resetbtn {
margin-right: 16px;
}
.tablebox {
background: #fff;
:global {
.ant-table-fixed {
border-bottom: 1px solid #E8E8E8 !important;
}
.ant-table tbody tr:nth-child(2n) {
background-color: #FBFBFB;
}
.ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 11px 10px;
}
.ant-table-bordered .ant-table-tbody tr td {
border-bottom: none;
border-right: none!important;
}
.ant-table-bordered .ant-table-thead tr th {
border-bottom: none;
border-right: none!important;
}
.ant-table-bordered .ant-table-thead tr th:last-child {
border-right: 1px solid #e8e8e8!important;
}
.ant-table-bordered .ant-table-tbody tr td:last-child {
border-right: 1px solid #e8e8e8!important;
}
.ant-table-bordered .ant-table-tbody tr:last-child {
border-bottom: 1px solid #e8e8e8!important;
}
}
}
.divideline {
color: #E9E9E9;
padding: 0 8px;
}
.alink {
color: #1890FF;
}
.classNamebox {
max-width: 250px;
word-break: break-all;
color: #1890FF;
cursor: pointer;
}
.tableoperatebox {
min-width: 160px;
line-height: 30px;
}
.endsearchcol {
margin-bottom: 18px;
}
.endclassfooter {
display: flex;
align-items: center;
justify-content: space-between;
}
.classroomitem {
margin-bottom: 5px;
.classroom {
color:rgba(0,0,0,0.85);
}
.aLink {
color: #1890FF;
padding-left: 21px;
}
}
.rightList {
display: flex;
align-items: center;
height: 32px;
.resetIcon {
width: 14px;
height: 14px;
cursor: pointer;
margin-right: 15px;
}
.expend {
font-size:13px;
font-family:PingFangSC-Regular,PingFang SC;
font-weight:400;
color:rgba(102,102,102,1);
display: inline-block;
cursor: pointer;
}
}
.tablefooterbox {
color: rgba(0,0,0,0.6);
font-size: 16px;
line-height: 50px;
display: flex;
background-color: #fff;
align-items: center;
justify-content: space-between;
padding-left: 14px;
padding-right: 14px;
margin-top: 10px;
.tablefooterstatic {
color:rgba(0,0,0,0.65);
font-size: 14px;
}
}
.shiftbox {
display: flex;
align-items: center;
border-bottom: 1px solid #e8e8e8;
.tabitem {
color: #000000;
font-size: 16px;
line-height: 1;
padding: 10px 11px 10px;
border-bottom: 3px solid transparent;
margin: 0 20px;
cursor: pointer;
&:first-child {
margin-left: 0;
}
&.active {
border-color: #1890FF;
color: #1890FF;
font-weight: 700;
}
&:hover {
border-color: #1890FF;
color: #1890FF;
font-weight: 700;
}
}
}
.formList {
margin: 10px 0;
}
...@@ -180,7 +180,7 @@ class LiveClass extends React.Component { ...@@ -180,7 +180,7 @@ class LiveClass extends React.Component {
lookClockMgt = (record) => { lookClockMgt = (record) => {
const { dispatch } = this.props; const { dispatch } = this.props;
dispatch({ dispatch({
type: 'newthemelist/getCode', type: 'common/getCode',
payload: { payload: {
record, record,
}, },
...@@ -189,7 +189,7 @@ class LiveClass extends React.Component { ...@@ -189,7 +189,7 @@ class LiveClass extends React.Component {
closeQrcodeShow = () => { closeQrcodeShow = () => {
const { dispatch } = this.props; const { dispatch } = this.props;
dispatch({ dispatch({
type: 'newthemelist/updateState', type: 'common/updateState',
payload: { payload: {
previewQrcodeShow: false, previewQrcodeShow: false,
}, },
...@@ -241,6 +241,15 @@ class LiveClass extends React.Component { ...@@ -241,6 +241,15 @@ class LiveClass extends React.Component {
}, },
}); });
} }
goClockMember = (record) => {
const { dispatch } = this.props;
dispatch({
type: 'newthemelist/goClockMember',
payload: {
record,
},
});
}
render() { render() {
const { const {
userPermission, userPermission,
...@@ -331,6 +340,10 @@ class LiveClass extends React.Component { ...@@ -331,6 +340,10 @@ class LiveClass extends React.Component {
{ {
record.status == 1 && <span className="hreflink" onClick={() => this.savePublish(record)}>发布<Divider type="vertical" /></span> record.status == 1 && <span className="hreflink" onClick={() => this.savePublish(record)}>发布<Divider type="vertical" /></span>
} }
{/* { */}
{/* record.subject_type != 3 && */}
{/* <span className="hreflink" onClick={() => this.goClockMember(record)}>学生管理<Divider type="vertical" /></span> */}
{/* } */}
<span className="hreflink" onClick={() => this.lookClockMgt(record)}>扫码查看</span> <span className="hreflink" onClick={() => this.lookClockMgt(record)}>扫码查看</span>
<Divider type="vertical" /> <Divider type="vertical" />
<span className="hreflink" onClick={() => this.goClockMgt(record)}>点评</span> <span className="hreflink" onClick={() => this.goClockMgt(record)}>点评</span>
...@@ -431,14 +444,16 @@ function mapStateToProps(state) { ...@@ -431,14 +444,16 @@ function mapStateToProps(state) {
clockListParams, clockListParams,
clockListTotal, clockListTotal,
clockList, clockList,
previewQrcodeShow,
previewQrcode,
downloadTitle,
} = state.newthemelist; } = state.newthemelist;
const { const {
guideStep, guideStep,
guideShow, guideShow,
} = state.userguide; } = state.userguide;
const {
previewQrcodeShow,
previewQrcode,
downloadTitle,
} = state.common;
const { const {
userPermission, userPermission,
schoolUserInfo, schoolUserInfo,
......
This diff is collapsed.
.classmgtcontainer { @import '../../less/variables.less';
.container {
background-color: #fff; background-color: #fff;
padding: 25px 0 29px 0; border-radius: 2px;
padding: 20px;
} }
.activeamount{ .headerbox{
background-color: #cccccc; background-color: #fff;
color: #666666; .headerbtn {
text-align: center; color: #2194FF;
line-height: 50px; font-size: 14px;
font-size: 20px; cursor: pointer;
}
padding-bottom: 18px;
}
.searchrow {
margin-bottom: 20px;
.formitem {
display: flex;
align-items: center;
.formitemlabel {
color: #000000;
font-size: 14px;
line-height: 1;
min-width: 70px;
white-space: nowrap;
}
}
}
.selectitem {
display: block;
} }
.tablecell { .searchbtnbox {
text-align: center; height: 54px;
display: flex;
align-items: flex-end;
} }
.searchbox { .resetbtn {
padding-left: 12px; margin-right: 16px;
} }
:global { .tablebox {
.thememgtcontainer { background: #fff;
.ant-form-item { :global {
margin-bottom: 0; .ant-table-fixed {
border-bottom: 1px solid #E8E8E8 !important;
}
.ant-table tbody tr:nth-child(2n) {
background-color: #FBFBFB;
}
.ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 11px 10px;
}
.ant-table-bordered .ant-table-tbody tr td {
border-bottom: none;
border-right: none!important;
}
.ant-table-bordered .ant-table-thead tr th {
border-bottom: none;
border-right: none!important;
}
.ant-table-bordered .ant-table-thead tr th:last-child {
border-right: 1px solid #e8e8e8!important;
}
.ant-table-bordered .ant-table-tbody tr td:last-child {
border-right: 1px solid #e8e8e8!important;
}
.ant-table-bordered .ant-table-tbody tr:last-child {
border-bottom: 1px solid #e8e8e8!important;
} }
} }
} }
\ No newline at end of file .divideline {
color: #E9E9E9;
padding: 0 8px;
}
.alink {
color: #1890FF;
}
.classNamebox {
max-width: 250px;
word-break: break-all;
color: #1890FF;
cursor: pointer;
}
.tableoperatebox {
min-width: 160px;
line-height: 30px;
}
.endsearchcol {
margin-bottom: 18px;
}
.endclassfooter {
display: flex;
align-items: center;
justify-content: space-between;
}
.classroomitem {
margin-bottom: 5px;
.classroom {
color:rgba(0,0,0,0.85);
}
.aLink {
color: #1890FF;
padding-left: 21px;
}
}
.rightList {
display: flex;
align-items: center;
height: 32px;
.resetIcon {
width: 14px;
height: 14px;
cursor: pointer;
margin-right: 15px;
}
.expend {
font-size:13px;
font-family:PingFangSC-Regular,PingFang SC;
font-weight:400;
color:rgba(102,102,102,1);
display: inline-block;
cursor: pointer;
}
}
.tablefooterbox {
color: rgba(0,0,0,0.6);
font-size: 16px;
line-height: 50px;
display: flex;
background-color: #fff;
align-items: center;
justify-content: space-between;
padding-left: 14px;
padding-right: 14px;
margin-top: 10px;
.tablefooterstatic {
color:rgba(0,0,0,0.65);
font-size: 14px;
}
}
.shiftbox {
display: flex;
align-items: center;
border-bottom: 1px solid #e8e8e8;
.tabitem {
color: #000000;
font-size: 16px;
line-height: 1;
padding: 10px 11px 10px;
border-bottom: 3px solid transparent;
margin: 0 20px;
cursor: pointer;
&:first-child {
margin-left: 0;
}
&.active {
border-color: #1890FF;
color: #1890FF;
font-weight: 700;
}
&:hover {
border-color: #1890FF;
color: #1890FF;
font-weight: 700;
}
}
}
.formList {
margin: 10px 0;
}
...@@ -296,6 +296,11 @@ const ClockList = props => ( ...@@ -296,6 +296,11 @@ const ClockList = props => (
{ ClockList => (<ClockList {...props} />) } { ClockList => (<ClockList {...props} />) }
</Bundle> </Bundle>
); );
const ClockMember = props => (
<Bundle load={() => import(/* webpackChunkName:"ClockMember" */'./pages/clockmember/index')}>
{ ClockMember => (<ClockMember {...props} />) }
</Bundle>
);
function RouterConfig({ history }) { function RouterConfig({ history }) {
return ( return (
<ConfigProvider locale={zhCN}> <ConfigProvider locale={zhCN}>
...@@ -355,6 +360,7 @@ function RouterConfig({ history }) { ...@@ -355,6 +360,7 @@ function RouterConfig({ history }) {
<Route path="/sjd/addLive" exact component={AddLive} /> <Route path="/sjd/addLive" exact component={AddLive} />
<Route path="/sjd/editLive/:id" exact component={AddLive} /> <Route path="/sjd/editLive/:id" exact component={AddLive} />
<Route path="/sjd/clockList" exact component={ClockList} /> <Route path="/sjd/clockList" exact component={ClockList} />
<Route path="/sjd/member/:type/:id" exact component={ClockMember} />
<Route component={Errorpage} /> <Route component={Errorpage} />
</Switch> </Switch>
</SjdIndex> </SjdIndex>
......
import qs from 'qs';
import request from '../utils/request';
import api from '../common/api';
export function memberList(params) {
const data = qs.stringify(params);
return request({
url: `${api.clockmember.list}?${data}`,
method: 'GET',
});
}
export function deleteSubjectStudent(params) {
const data = qs.stringify(params);
return request({
url: `${api.clockmember.deleteSubjectStudent}/${params.id}`,
method: 'POST',
data,
});
}
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