diff --git a/src/forge/sponsor/Sponsor.js b/src/forge/sponsor/Sponsor.js index 627f076e5..9720d93c3 100644 --- a/src/forge/sponsor/Sponsor.js +++ b/src/forge/sponsor/Sponsor.js @@ -1,6 +1,6 @@ import React, { Component } from "react"; import { Link } from "react-router-dom"; -import { Avatar, Tag, Button, Spin, Input, Form, message} from "antd"; +import { Avatar, Tag, Button, Spin, Input, Form, message, Divider} from "antd"; import { Route, Switch } from "react-router-dom"; import { withRouter } from "react-router"; @@ -104,11 +104,10 @@ class Sponsor extends Component { componentDidMount = () => { this.fetchUser(); - this.fetchSponsors(); this.fetchData(); }; - fetchUser = async () => { + fetchUser = () => { this.setState({ isSpin: true, }); @@ -116,16 +115,15 @@ class Sponsor extends Component { const { username } = this.props.match.params; let url = `/users/${username || (current_user && current_user.login)}.json`; - await axios + axios .get(url) .then((result) => { // TODO: 在这里添加了对用户自我介绍的处理,前后端交互实现后需要删掉 // result.data.description = tempDesc; - console.log(result.data); this.setState({ user: result.data, isSpin: false, - }); + }, () => {this.fetchSponsors()}); // console.log(result.data); }) .catch((error) => { @@ -137,9 +135,32 @@ class Sponsor extends Component { }; fetchSponsors = () => { - this.setState({ - sponsors: tempSponsors, - }); + // console.log("fetch sponsors"); + const user_id = this.state.user.user_id; + + let url = `/sponsorships/sponsored.json`; + + axios.get(url, {params: {id: user_id}}) + .then((result) => { + // console.log(result); + this.setState({ + sponsors: result.data.sponsorships, + isSpin: false, + }) + }) + .catch((error) => { + console.log(error); + this.setState({ + isSpin: false, + }); + }); + // this.setState({ + // sponsors: tempData, + // displayList: tempData, + // }) + // this.setState({ + // sponsors: tempSponsors, + // }); } fetchData = () => { @@ -152,7 +173,7 @@ class Sponsor extends Component { // console.log(tempData) this.setState({ tiers: result.data - }) + }); }) .catch((error) => { console.log(error); @@ -205,7 +226,6 @@ class Sponsor extends Component { const user = this.state.user; return (
- 自我介绍: {user && user.description? (

{user.description}

):(

暂无自我介绍

)}
@@ -216,11 +236,10 @@ class Sponsor extends Component { const user = this.state.user; return (
- - 自我介绍: - this.editDescription()}> - - {user && user.description? (

{user.description}

):(

暂无自我介绍

)} +
+ this.editDescription()}> +
+ {user && user.description? (
{user.description}
):(
暂无自我介绍
)}
); } @@ -229,7 +248,6 @@ class Sponsor extends Component { const user = this.state.user; return (
- 自我介绍: this.formRef = form} @@ -256,6 +274,7 @@ class Sponsor extends Component { const { current_user} = this.props; const { user, isSpin, tiers} = this.state; const sponsorList = this.sponsorList(); + console.log(tiers); var content = ""; if (current_user && user && user.login !== current_user.login){ @@ -273,39 +292,43 @@ class Sponsor extends Component {
-
-
-
成为{user && user.username}的赞助者吧
- - {user && user.user_identity && ( -
- {user && user.user_identity} -
- )} +
+
成为{user && user.username}的赞助者吧
+
+ {user && user.user_identity && ( +
+ {user && user.user_identity} +
+ )}
-
+ + {content} + +
+ 赞助者: + {sponsorList} +
+
-
+ {/*
{content}
赞助者: {sponsorList} -
+
*/}
-
- - -
+ +
diff --git a/src/forge/sponsor/SponsorConfirmation.js b/src/forge/sponsor/SponsorConfirmation.js index 0e22a282d..8d97c51a9 100644 --- a/src/forge/sponsor/SponsorConfirmation.js +++ b/src/forge/sponsor/SponsorConfirmation.js @@ -43,8 +43,15 @@ class extends Component{ this.fetchUser(); this.fetchTierInformation(); this.fetchBalance(); + // this.fetchData(); }; + //组件刚刚挂载时,TPMINDEXHOC还没从后端获取current_user,需要在获取后,再使用current_user的内容 + componentWillReceiveProps = () => { + if (this.props.current_user) + this.fetchBalance(); + } + fetchUser = () => { this.setState({ isSpin: true, @@ -70,16 +77,42 @@ class extends Component{ }; fetchTierInformation = () => { - //TODO: 和后端交互 - this.setState({ - tier: tempData - }) + const { current_user } = this.props; + const { username, tier_id } = this.props.match.params; + let url = `/sponsor_tiers/${tier_id}.json`; + axios + .get(url) + .then((result) => { + this.setState({ + tier: result.data, + }) + }) + .catch((error) => { + console.log(error); + this.setState({ + isSpin: false, + }); + }); } fetchBalance = () => { - this.setState({ - balance: tempBalance - }) + const { current_user } = this.props; + let url = `/wallets/balance.json`; + if (current_user){ + axios + .get(url, {params: {id: current_user.user_id}}) + .then((result) => { + this.setState({ + balance: result.data.balance, + }) + }) + .catch((error) => { + console.log(error); + this.setState({ + isSpin: false, + }); + }); + } } reSelect = () => { @@ -99,8 +132,24 @@ class extends Component{ submit = () => { const value = this.props.form.getFieldsValue(); - console.log(value); - message.success("赞助成功!"); + const {tier, user} = this.state; + const {current_user} = this.props; + // console.log(value); + let url = `/sponsorships.json`; + axios.post(url, { + amount: tier.tier, + visible: value.visible, + single: value.single, + developer_id: user.user_id, + }) + .then((result) => { + console.log(result); + if (result && result.data.status == 1) + message.success(result.data.message); + }) + .catch((error) => { + console.log(error); + }) } render(){ @@ -110,8 +159,8 @@ class extends Component{ const {getFieldDecorator} = form; const current_username = current_user && current_user.username; - const alert_text = this.state.single? `您选择了单次付费,本次扣除${tier && tier.amount}硬币` - :`您选择了按月付费,每月20日将扣除${tier && tier.amount}硬币`; + const alert_text = this.state.single? `您选择了单次付费,本次扣除${tier && tier.tier}硬币` + :`您选择了按月付费,每月20日将扣除${tier && tier.tier}硬币`; // console.log("user", user) // console.log("current user", current_user); @@ -145,7 +194,7 @@ class extends Component{

所选赞助等级

-

{tier && tier.amount}硬币

+

{tier && tier.tier}硬币

{tier && tier.description}

@@ -167,7 +216,7 @@ class extends Component{ )} -

本次支付金额{tier && tier.amount}硬币

+

本次支付金额{tier && tier.tier}硬币

{this.state.single? "单次付费": "即日起-次月20日"}

@@ -188,19 +237,19 @@ class extends Component{ 赞助关系可见性 - {getFieldDecorator(`private`,{ + {getFieldDecorator(`visible`,{ rules: [{ required: true }], - initialValue: false + initialValue: 1 })( - 所有人可见 - 私密 + 所有人可见 + 私密 )} - +
diff --git a/src/forge/sponsor/sponsor.css b/src/forge/sponsor/sponsor.css index 1ca79791a..0433c4a1b 100644 --- a/src/forge/sponsor/sponsor.css +++ b/src/forge/sponsor/sponsor.css @@ -35,4 +35,36 @@ .sponsor-inline{ display: inline-block; +} + +.tier-Item:last-child{ + border-bottom: none !important; + } + +.tier-Item{ + border-bottom:1px solid rgba(238,238,238,1); + padding:9px 12px; +} + + +.right{ + float: right +} + +.btn-border-5{ + border-radius: 5px; +} + +.description-edit{ + min-height:28px; + border:true; +} + +.tier-title{ + font-size: 16px; + font-weight: 600; +} + +.mr10{ + margin-right: 10px; } \ No newline at end of file diff --git a/src/forge/sponsor/sponsor_tier_item.js b/src/forge/sponsor/sponsor_tier_item.js index 96e767233..e5b4c1aba 100644 --- a/src/forge/sponsor/sponsor_tier_item.js +++ b/src/forge/sponsor/sponsor_tier_item.js @@ -20,6 +20,7 @@ import "../users/new_user.css"; import "../css/index.scss"; import '../users/Index.scss'; import "./sponsor.css"; +import "../Main/list.css"; import Item from "antd/lib/list/Item"; const FormItem = Form.Item; @@ -52,7 +53,10 @@ class extends Component{ {getFieldDecorator(`description`,{ rules: [{ message: '必填字段!', - required: true + required: true, + }, { + max: 255, + message: "长度不能超过255个字符" }], initialValue: initValue2 ? initValue2 : undefined })( @@ -167,9 +171,17 @@ class SponsorTierItem extends Component{ } } - confirmEdit = (item, key, e) => { + confirmEdit = async (item, key, e) => { let url; + try { + const values = await this.formRef.props.form.validateFields(); + console.log('Success:', values); + } catch (errorInfo) { + message.warn('提交失败,数据不合法'); + return false; + } let values = this.formRef.getItemsValue(); + console.log(this.formRef); const {current_user} = this.props; if (this.state.new_tier == key){ console.log("new tier"); @@ -278,7 +290,7 @@ class SponsorTierItem extends Component{ } toConformation = (item, key, e) => { - const {user} = this.state + const {user} = this.props; this.setState({ route_type: undefined }) @@ -287,14 +299,14 @@ class SponsorTierItem extends Component{ visitorTemplate = (item, key) => { return ( -