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