diff --git a/mock/api.ts b/mock/api.ts
index 98e0133..f4209c5 100644
--- a/mock/api.ts
+++ b/mock/api.ts
@@ -78,9 +78,9 @@ export default {
success: true,
data: {
token: 'token_test',
- isInDuty: false,
- offDutyReason: '废弃元器件创意设计大赛',
- dutyRecoverTime: '下周一',
+ isInDuty: true,
+ inDutyCnt: 6,
+ currentDuty: '3',
},
},
};
diff --git a/src/pages/member/MemberDutyInfo.tsx b/src/pages/member/MemberDutyInfo.tsx
index e846738..14b6a44 100644
--- a/src/pages/member/MemberDutyInfo.tsx
+++ b/src/pages/member/MemberDutyInfo.tsx
@@ -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 (
-
+
+
+
);
}
diff --git a/src/pages/member/member.tsx b/src/pages/member/member.tsx
index d0c8993..bb2a19b 100644
--- a/src/pages/member/member.tsx
+++ b/src/pages/member/member.tsx
@@ -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;
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: () => ,
},
- // 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> {
{memberPageCard(this.state.dutyInfoCard)}
{memberPageCard(this.state.tipsInfoCard)}
+ {this.state.dutyData.isInDuty ? (
+
+
+ {pt.get().memberPage.dutyCount.text}
+
+
+
+
+
+
+ {pt.get().memberPage.dutyCount.button}
+
+
+
+ }
+ />
+ ) : (
+
+ )}
;
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.' },
diff --git a/src/service/changeDutyCount.ts b/src/service/changeDutyCount.ts
new file mode 100644
index 0000000..18fe5eb
--- /dev/null
+++ b/src/service/changeDutyCount.ts
@@ -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',
+ });
+ });
+}
diff --git a/src/service/memberDutyInfo.ts b/src/service/memberDutyInfo.ts
index fcf633f..b08351d 100644
--- a/src/service/memberDutyInfo.ts
+++ b/src/service/memberDutyInfo.ts
@@ -19,6 +19,7 @@ export function getMemberDutyInfo(that: MemberPage) {
inDutyCnt: data.inDutyCnt,
currentDuty: data.currentDuty,
},
+ inDutyCnt: data.inDutyCnt,
});
} else {
that.setState({