add change inDutyCnt button and service
parent
787b37fc42
commit
599166e603
|
|
@ -78,9 +78,9 @@ export default {
|
|||
success: true,
|
||||
data: {
|
||||
token: 'token_test',
|
||||
isInDuty: false,
|
||||
offDutyReason: '废弃元器件创意设计大赛',
|
||||
dutyRecoverTime: '下周一',
|
||||
isInDuty: true,
|
||||
inDutyCnt: 6,
|
||||
currentDuty: '3',
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -62,6 +62,11 @@ class Card extends Component {
|
|||
}
|
||||
|
||||
export class MemberDutyInfo extends Component {
|
||||
state: {
|
||||
isLoading: false;
|
||||
isDisable: false;
|
||||
};
|
||||
|
||||
props = {
|
||||
data: new MemberDutyData(),
|
||||
};
|
||||
|
|
@ -88,12 +93,19 @@ export class MemberDutyInfo extends Component {
|
|||
return (
|
||||
<View>
|
||||
<Card isInDuty={data.isInDuty} />
|
||||
<AtTimeline
|
||||
items={[
|
||||
{ title: id.currentDutyText(data.currentDuty || 'off') },
|
||||
{ title: id.inDutyCnt(data.inDutyCnt as number) },
|
||||
]}
|
||||
/>
|
||||
<View
|
||||
style={{
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
}}
|
||||
>
|
||||
<AtTimeline
|
||||
items={[
|
||||
{ title: id.currentDutyText(data.currentDuty || 'off') },
|
||||
{ title: id.inDutyCnt(data.inDutyCnt as number) },
|
||||
]}
|
||||
/>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import { View } from '@tarojs/components';
|
||||
import { Component, ReactNode } from 'react';
|
||||
import { AtAccordion, AtButton, AtCard, AtList } from 'taro-ui';
|
||||
import { AtAccordion, AtButton, AtCard, AtInputNumber, AtList } from 'taro-ui';
|
||||
import Taro from '@tarojs/taro';
|
||||
import pt from '@/plain-text';
|
||||
import { getUncompletedTicketList } from '@/service/uncompletedTicket';
|
||||
|
|
@ -10,11 +10,14 @@ import { RequestState } from '@/service';
|
|||
import moment from 'moment';
|
||||
import { getMemberDutyInfo } from '@/service/memberDutyInfo';
|
||||
import PageFooter from '@/components/PageFooter/PageFooter';
|
||||
import { changeDutyCnt } from '@/service/changeDutyCount';
|
||||
import './member.scss';
|
||||
import { MemberDutyData, MemberDutyInfo } from './MemberDutyInfo';
|
||||
import { MemberStepInfo, MemberTipsInfo } from './MemberStepTipsInfo';
|
||||
import MemberTitleCard from './MemberTitleCard';
|
||||
|
||||
const submitInterval = 5000;
|
||||
|
||||
class CardContent {
|
||||
title: string;
|
||||
note: string;
|
||||
|
|
@ -64,15 +67,18 @@ interface MemberPageState {
|
|||
fixList: Array<TicketListItem>;
|
||||
rs: RequestState;
|
||||
dutyData: MemberDutyData;
|
||||
inDutyCnt: number;
|
||||
dutyInfoCard: CardContent;
|
||||
stepInfoCard: CardContent;
|
||||
tipsInfoCard: CardContent;
|
||||
//rs: RequestState;
|
||||
isLoading: boolean;
|
||||
isDisable: boolean;
|
||||
}
|
||||
|
||||
export default class MemberPage extends Component<{}, MemberPageState> {
|
||||
state = {
|
||||
dutyData: new MemberDutyData(),
|
||||
inDutyCnt: 0,
|
||||
dutyInfoCard: {
|
||||
title: pt.get().mainPage.cardTitle.dutyInfo,
|
||||
note: pt.get().mainPage.cardTips.dutyInfo,
|
||||
|
|
@ -91,9 +97,10 @@ export default class MemberPage extends Component<{}, MemberPageState> {
|
|||
extra: pt.get().mainPage.extraInfo.dutyInfo,
|
||||
content: () => <MemberTipsInfo />,
|
||||
},
|
||||
// rs: new RequestState(),
|
||||
fixList: [new TicketListItem(0, '', '', 1, moment())],
|
||||
rs: new RequestState(),
|
||||
isLoading: false,
|
||||
isDisable: false,
|
||||
};
|
||||
|
||||
componentDidMount(): void {
|
||||
|
|
@ -112,6 +119,25 @@ export default class MemberPage extends Component<{}, MemberPageState> {
|
|||
}
|
||||
// 以上是TabBar相关
|
||||
|
||||
handleCnt(inDutyCnt: number) {
|
||||
this.setState({
|
||||
inDutyCnt: inDutyCnt,
|
||||
});
|
||||
return inDutyCnt;
|
||||
}
|
||||
|
||||
onChangeCnt() {
|
||||
this.setState({
|
||||
isDisable: true,
|
||||
});
|
||||
changeDutyCnt(this);
|
||||
setTimeout(() => {
|
||||
this.setState({
|
||||
isDisable: false,
|
||||
});
|
||||
}, submitInterval);
|
||||
}
|
||||
|
||||
render(): ReactNode {
|
||||
const memberPage = pt.get().memberPage;
|
||||
if (this.state.rs.loading) {
|
||||
|
|
@ -128,6 +154,56 @@ export default class MemberPage extends Component<{}, MemberPageState> {
|
|||
<View style={{ marginTop: '60rpx' }}>
|
||||
{memberPageCard(this.state.dutyInfoCard)}
|
||||
{memberPageCard(this.state.tipsInfoCard)}
|
||||
{this.state.dutyData.isInDuty ? (
|
||||
<ExpandItem
|
||||
title={memberPage.expandTitle.admin}
|
||||
content={
|
||||
<View
|
||||
style={{
|
||||
display: 'flex',
|
||||
alignItems: 'center',
|
||||
marginBottom: '40rpx',
|
||||
}}
|
||||
>
|
||||
<View
|
||||
className='.at-article__h3'
|
||||
style={{
|
||||
marginTop: '40rpx',
|
||||
}}
|
||||
>
|
||||
{pt.get().memberPage.dutyCount.text}
|
||||
</View>
|
||||
<View
|
||||
style={{
|
||||
marginTop: '40rpx',
|
||||
}}
|
||||
>
|
||||
<AtInputNumber
|
||||
type='number'
|
||||
min={0}
|
||||
max={10}
|
||||
step={1}
|
||||
value={this.state.inDutyCnt}
|
||||
onChange={this.handleCnt.bind(this)}
|
||||
/>
|
||||
</View>
|
||||
<View style={{ marginLeft: 'auto', marginTop: '40rpx' }}>
|
||||
<AtButton
|
||||
type='secondary'
|
||||
size='small'
|
||||
loading={this.state.isLoading}
|
||||
disabled={this.state.isDisable}
|
||||
onClick={this.onChangeCnt.bind(this)}
|
||||
>
|
||||
{pt.get().memberPage.dutyCount.button}
|
||||
</AtButton>
|
||||
</View>
|
||||
</View>
|
||||
}
|
||||
/>
|
||||
) : (
|
||||
<View></View>
|
||||
)}
|
||||
<ExpandItem
|
||||
title={memberPage.expandTitle.stepInfo}
|
||||
content={memberPageCard(this.state.stepInfoCard)}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
export interface MemberPageText {
|
||||
mainTitleLine: string;
|
||||
subTitleLine: string;
|
||||
dutyCount: {
|
||||
button: string;
|
||||
text: string;
|
||||
};
|
||||
stuidText: {
|
||||
title: string;
|
||||
placeholder: string;
|
||||
|
|
@ -27,6 +31,7 @@ export interface MemberPageText {
|
|||
expandTitle: {
|
||||
stepInfo: string;
|
||||
tipsInfo: string;
|
||||
admin: string;
|
||||
};
|
||||
stepList: Array<{ title: string }>;
|
||||
tipsList: Array<{ title: string }>;
|
||||
|
|
@ -35,6 +40,10 @@ export interface MemberPageText {
|
|||
export const memberPageZhCn: MemberPageText = {
|
||||
mainTitleLine: '您好,这里是E志者协会',
|
||||
subTitleLine: '祝你满绩每一天',
|
||||
dutyCount: {
|
||||
button: '更新值班人数',
|
||||
text: '当前值班人数:',
|
||||
},
|
||||
stuidText: {
|
||||
title: '学号',
|
||||
placeholder: '与统一身份认证学号一致',
|
||||
|
|
@ -74,6 +83,7 @@ export const memberPageZhCn: MemberPageText = {
|
|||
expandTitle: {
|
||||
stepInfo: '查看维修步骤',
|
||||
tipsInfo: '查看注意事项',
|
||||
admin: '组长管理入口',
|
||||
},
|
||||
stepList: [
|
||||
{ title: '机主线上填写工单,审核接取维修后加入 Oreo' },
|
||||
|
|
@ -92,6 +102,10 @@ export const memberPageZhCn: MemberPageText = {
|
|||
export const memberPageEnUs: MemberPageText = {
|
||||
mainTitleLine: 'Hi! This is EVA.',
|
||||
subTitleLine: 'Have a great day!',
|
||||
dutyCount: {
|
||||
button: 'Update Duty Count',
|
||||
text: 'The duty count: ',
|
||||
},
|
||||
stuidText: {
|
||||
title: 'Student ID',
|
||||
placeholder: 'Consistent with EVA Auth',
|
||||
|
|
@ -131,6 +145,7 @@ export const memberPageEnUs: MemberPageText = {
|
|||
expandTitle: {
|
||||
stepInfo: 'Check for maintenance steps',
|
||||
tipsInfo: 'Check for tips',
|
||||
admin: 'Entry for admin',
|
||||
},
|
||||
stepList: [
|
||||
{ title: 'The owner fills out ticket online. Add it to Oreo after audit.' },
|
||||
|
|
|
|||
|
|
@ -0,0 +1,38 @@
|
|||
import MemberPage from '@/pages/member/member';
|
||||
import Taro from '@tarojs/taro';
|
||||
import pt from '@/plain-text';
|
||||
import { getUrl } from '.';
|
||||
|
||||
export function changeDutyCnt(that: MemberPage) {
|
||||
that.setState({
|
||||
isLoading: true,
|
||||
});
|
||||
Taro.request({
|
||||
url: getUrl('/tickets/addtooreo'),
|
||||
method: 'POST',
|
||||
data: {
|
||||
token: 'token_test',
|
||||
dutyCnt: that.state.inDutyCnt,
|
||||
},
|
||||
})
|
||||
.then((res) => {
|
||||
console.log(res.data);
|
||||
that.setState({
|
||||
isLoading: false,
|
||||
});
|
||||
Taro.atMessage({
|
||||
message: pt.get().button.submitText.success,
|
||||
type: 'success',
|
||||
});
|
||||
})
|
||||
.catch((err) => {
|
||||
console.log(err);
|
||||
that.setState({
|
||||
isLoading: false,
|
||||
});
|
||||
Taro.atMessage({
|
||||
message: pt.get().button.submitText.error + err.toString(),
|
||||
type: 'error',
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
@ -19,6 +19,7 @@ export function getMemberDutyInfo(that: MemberPage) {
|
|||
inDutyCnt: data.inDutyCnt,
|
||||
currentDuty: data.currentDuty,
|
||||
},
|
||||
inDutyCnt: data.inDutyCnt,
|
||||
});
|
||||
} else {
|
||||
that.setState({
|
||||
|
|
|
|||
Loading…
Reference in New Issue