Commit 6e0f38b1 authored by 杜欣's avatar 杜欣

Merge branch 'test' into featrue/duxin

parents fb47c408 2af42286
...@@ -18,7 +18,7 @@ abstract class ClueRouter implements RouterBaser { ...@@ -18,7 +18,7 @@ abstract class ClueRouter implements RouterBaser {
Widget getLevelTwoPage(Map<String, dynamic> params); Widget getLevelTwoPage(Map<String, dynamic> params);
Widget getPlanPage(); Widget getPlanPage( Map<String, dynamic> params);
Widget getPlanCompareDetailPage(Map<String, dynamic> params); Widget getPlanCompareDetailPage(Map<String, dynamic> params);
......
...@@ -35,8 +35,8 @@ class ClueRouterImpl implements ClueRouter { ...@@ -35,8 +35,8 @@ class ClueRouterImpl implements ClueRouter {
} }
@override @override
Widget getPlanPage() { Widget getPlanPage(Map<String, dynamic> params) {
return PlanPage(); return PlanPage(params);
} }
@override @override
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
* @Last Modified time: 2020-07-04 14:41:41 * @Last Modified time: 2020-07-04 14:41:41
*/ */
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_common/commonModel/live/BaseModel.dart'; import 'package:flutter_common/commonModel/live/BaseModel.dart';
import 'package:flutter_common/commonModel/live/LiveData.dart'; import 'package:flutter_common/commonModel/live/LiveData.dart';
import 'package:gm_flutter/ClueModel/server/api/ClueApi.serv.dart'; import 'package:gm_flutter/ClueModel/server/api/ClueApi.serv.dart';
...@@ -18,7 +19,8 @@ class DiscussLowPriceModel extends BaseModel { ...@@ -18,7 +19,8 @@ class DiscussLowPriceModel extends BaseModel {
LiveData<Pair<int, DiscussLowPriceModelBean>> popViewLive = LiveData(); LiveData<Pair<int, DiscussLowPriceModelBean>> popViewLive = LiveData();
RxDispose rxDispose = RxDispose(); RxDispose rxDispose = RxDispose();
fetchPopviewData(String planId, String hospitalId, String doctorId) { fetchPopviewData(
String planId, String hospitalId, String doctorId, VoidCallback fail) {
ClueApiImpl.getInstance() ClueApiImpl.getInstance()
.getPopviewData( .getPopviewData(
DioUtil.getInstance().getDio(), planId, hospitalId, doctorId) DioUtil.getInstance().getDio(), planId, hospitalId, doctorId)
...@@ -31,13 +33,15 @@ class DiscussLowPriceModel extends BaseModel { ...@@ -31,13 +33,15 @@ class DiscussLowPriceModel extends BaseModel {
} }
} else { } else {
NativeToast.showNativeToast(event.message); NativeToast.showNativeToast(event.message);
popViewLive.notifyView(Pair(FAIL, null)); // popViewLive.notifyView(Pair(FAIL, null));
fail();
} }
}) })
.addToDispose(rxDispose) .addToDispose(rxDispose)
.onError((err) { .onError((err) {
popViewLive.notifyView(Pair(FAIL, null)); // popViewLive.notifyView(Pair(FAIL, null));
NativeToast.showNativeToast(err.message); NativeToast.showNativeToast(err.message);
fail();
}); });
} }
......
...@@ -15,14 +15,20 @@ import 'package:gm_flutter/commonModel/base/BaseUtil.dart'; ...@@ -15,14 +15,20 @@ import 'package:gm_flutter/commonModel/base/BaseUtil.dart';
import 'package:gm_flutter/main.mark.dart'; import 'package:gm_flutter/main.mark.dart';
class DiscussLowPricePopView { class DiscussLowPricePopView {
static void showPopView(BuildContext content) { static void showPopView(BuildContext content, String pageName, String planId,
String hospitalId, String doctorId) {
BaseCenterPicker() BaseCenterPicker()
..setPicker(_PopView()) ..setPicker(_PopView(pageName, planId, hospitalId, doctorId))
..show(content); ..show(content);
} }
} }
class _PopView implements ICenterPicker { class _PopView implements ICenterPicker {
String planId;
String hospitalId;
String doctorId;
String pageName;
_PopView(this.pageName, this.planId, this.hospitalId, this.doctorId);
VoidCallback dismissCallback; VoidCallback dismissCallback;
double contentWidth; double contentWidth;
DiscussLowPriceModel _model = new DiscussLowPriceModel(); DiscussLowPriceModel _model = new DiscussLowPriceModel();
...@@ -40,7 +46,9 @@ class _PopView implements ICenterPicker { ...@@ -40,7 +46,9 @@ class _PopView implements ICenterPicker {
if (data.data.second == null || data.data.first == FAIL) { if (data.data.second == null || data.data.first == FAIL) {
return errorItem(contentWidth, 308.5, () {}); return errorItem(contentWidth, 308.5, () {});
} }
RouterCenterImpl().findMainRouter().buriedEvent("popup_view", {}); RouterCenterImpl()
.findMainRouter()
.buriedEvent("popup_view", phobosData());
return Opacity( return Opacity(
opacity: alp / 255.0, opacity: alp / 255.0,
child: Container( child: Container(
...@@ -60,9 +68,6 @@ class _PopView implements ICenterPicker { ...@@ -60,9 +68,6 @@ class _PopView implements ICenterPicker {
height: 13.5, height: 13.5,
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
RouterCenterImpl()
.findMainRouter()
.buriedEvent("popup_view", {});
dismissCallback(); dismissCallback();
}, },
child: Image.asset( child: Image.asset(
...@@ -156,10 +161,12 @@ class _PopView implements ICenterPicker { ...@@ -156,10 +161,12 @@ class _PopView implements ICenterPicker {
// ), // ),
child: Image.asset( child: Image.asset(
"assets/discuss_loe_price_auth.png", "assets/discuss_loe_price_auth.png",
fit: BoxFit.cover,
), ),
).gestureDetector(() { ).gestureDetector(() {
// 一键授权 // 一键授权
_model.givePhoneAuth(111, () { _model.givePhoneAuth(
_model.popViewLive.data.second.leadPhoneRequestId, () {
dismissCallback(); dismissCallback();
}); });
}), }),
...@@ -170,6 +177,19 @@ class _PopView implements ICenterPicker { ...@@ -170,6 +177,19 @@ class _PopView implements ICenterPicker {
]); ]);
} }
Map<String, dynamic> phobosData() {
Map<String, dynamic> params = Map();
params['page_name'] = this.pageName;
if (this.hospitalId.length > 0) {
params['popup_name'] = 'interested_hospital';
} else if (this.doctorId.length > 0) {
params['popup_name'] = 'interested_doctor';
} else {
params['popup_name'] = 'interested_plan';
}
return params;
}
@override @override
void dispose() { void dispose() {
_model.dispose(); _model.dispose();
...@@ -178,6 +198,8 @@ class _PopView implements ICenterPicker { ...@@ -178,6 +198,8 @@ class _PopView implements ICenterPicker {
@override @override
void initState(VoidCallback dismissCall, BuildContext context) { void initState(VoidCallback dismissCall, BuildContext context) {
this.dismissCallback = dismissCall; this.dismissCallback = dismissCall;
_model.fetchPopviewData('1', '2', '3'); _model.fetchPopviewData(this.planId, this.hospitalId, this.doctorId, () {
dismissCallback();
});
} }
} }
...@@ -20,7 +20,7 @@ class PlanCompareDetailModel extends BaseModel { ...@@ -20,7 +20,7 @@ class PlanCompareDetailModel extends BaseModel {
RxDispose rxDispose = RxDispose(); RxDispose rxDispose = RxDispose();
void init(List<int> planIds) { void init(String planIds) {
ClueApiImpl.getInstance() ClueApiImpl.getInstance()
.getPlanCompareDetail(DioUtil.getInstance().getDio(), planIds) .getPlanCompareDetail(DioUtil.getInstance().getDio(), planIds)
.listen((event) { .listen((event) {
......
...@@ -12,12 +12,14 @@ import 'package:gm_flutter/ClueModel/view/FiveStarView.dart'; ...@@ -12,12 +12,14 @@ import 'package:gm_flutter/ClueModel/view/FiveStarView.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart'; import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
import 'package:gm_flutter/commonModel/base/BaseState.dart'; import 'package:gm_flutter/commonModel/base/BaseState.dart';
import 'package:gm_flutter/commonModel/bean/Pair.dart'; import 'package:gm_flutter/commonModel/bean/Pair.dart';
import 'dart:convert';
class PlanCompareDetailPage extends StatefulWidget { class PlanCompareDetailPage extends StatefulWidget {
List<int> _planIds; String _planIds;
PlanCompareDetailPage(Map<String, dynamic> params) { PlanCompareDetailPage(Map<String, dynamic> params) {
this._planIds = params["planIds"]; String planIds = json.encode(params["planIds"]);
this._planIds = planIds;
} }
@override @override
...@@ -86,7 +88,7 @@ class PlanCompareDetailPageState extends BaseState<PlanCompareDetailPage> { ...@@ -86,7 +88,7 @@ class PlanCompareDetailPageState extends BaseState<PlanCompareDetailPage> {
if (data.data.first == FAIL) { if (data.data.first == FAIL) {
return errorItem(MediaQuery.of(context).size.width, return errorItem(MediaQuery.of(context).size.width,
MediaQuery.of(context).size.height, () { MediaQuery.of(context).size.height, () {
_model.init([1, 2]); _model.init(widget._planIds);
}); });
} }
return ListView.builder( return ListView.builder(
...@@ -440,4 +442,3 @@ class PlanCompareDetailPageState extends BaseState<PlanCompareDetailPage> { ...@@ -440,4 +442,3 @@ class PlanCompareDetailPageState extends BaseState<PlanCompareDetailPage> {
), ),
])); ]));
} }
}
...@@ -122,15 +122,13 @@ class _PlansCompareFeedState extends BaseState<PlansCompareFeedPage> ...@@ -122,15 +122,13 @@ class _PlansCompareFeedState extends BaseState<PlansCompareFeedPage>
onClickCompare() { onClickCompare() {
if (_compareColor == Color(0xFFCCCCCC)) return; if (_compareColor == Color(0xFFCCCCCC)) return;
setState(() { RouterCenterImpl().findMainRouter().jumpPage(
RouterCenterImpl().findMainRouter().jumpPage( context,
context, widget._planType == 1
widget._planType == 1 ? "level_one_plan_compare_detail"
? "level_one_plan_compare_detail" : "level_two_plan_compare_deatil",
: "level_two_plan_compare_deatil", {"planIds": _setCompare.toList()},
{"planIds": _setCompare.toList()}, false);
false);
});
} }
@override @override
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gm_flutter/ClueModel/server/entity/ProjectDetailsItem.dart'; import 'package:gm_flutter/ClueModel/server/entity/ProjectDetailsItem.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
class ProjectDetailsItemView extends StatelessWidget { class ProjectDetailsItemView extends StatelessWidget {
Groups listData; Groups listData;
...@@ -65,4 +64,20 @@ class ProjectDetailsItemView extends StatelessWidget { ...@@ -65,4 +64,20 @@ class ProjectDetailsItemView extends StatelessWidget {
), ),
); );
} }
baseText(String text, double fontSize, Color color, {bool bold = false}) {
return Text(
text,
textScaleFactor: 1.0,
style: TextStyle(
decoration: TextDecoration.none,
fontSize: fontSize,
color: color,
fontStyle: FontStyle.normal,
fontWeight: bold ? FontWeight.w500 : FontWeight.w400),
textAlign: TextAlign.left,
maxLines: 2,
overflow: TextOverflow.ellipsis,
);
}
} }
...@@ -9,6 +9,7 @@ import 'package:gm_flutter/ClueModel/server/entity/LevelOneFeedList.dart'; ...@@ -9,6 +9,7 @@ import 'package:gm_flutter/ClueModel/server/entity/LevelOneFeedList.dart';
import 'package:gm_flutter/ClueModel/view/FiveStarView.dart'; import 'package:gm_flutter/ClueModel/view/FiveStarView.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart'; import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
import 'package:gm_flutter/commonModel/base/BaseUtil.dart'; import 'package:gm_flutter/commonModel/base/BaseUtil.dart';
import 'package:gm_flutter/main.mark.dart';
class LevelOneItem extends StatelessWidget { class LevelOneItem extends StatelessWidget {
final Cards cards; final Cards cards;
...@@ -54,6 +55,12 @@ class LevelOneItem extends StatelessWidget { ...@@ -54,6 +55,12 @@ class LevelOneItem extends StatelessWidget {
throw new Exception(); throw new Exception();
} }
return GestureDetector( return GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () {
RouterCenterImpl()
.findMainRouter()
.jumpPage(context, cards.doctor.messageUrl, {}, true);
},
child: Container( child: Container(
margin: EdgeInsets.only(left: 15, right: 15), margin: EdgeInsets.only(left: 15, right: 15),
height: 127, height: 127,
...@@ -67,10 +74,16 @@ class LevelOneItem extends StatelessWidget { ...@@ -67,10 +74,16 @@ class LevelOneItem extends StatelessWidget {
child: ClipOval( child: ClipOval(
child: CachedNetworkImage( child: CachedNetworkImage(
imageUrl: cards.doctor.portrait, imageUrl: cards.doctor.portrait,
fit: BoxFit.cover,
), ),
), ),
), ),
), ),
Positioned(
left: 57,
top: 44,
child: FiveStarView(int.parse(cards.doctor.star), 5),
),
Positioned( Positioned(
left: 57, left: 57,
top: 18, top: 18,
...@@ -82,7 +95,7 @@ class LevelOneItem extends StatelessWidget { ...@@ -82,7 +95,7 @@ class LevelOneItem extends StatelessWidget {
bold: true), bold: true),
Container( Container(
margin: EdgeInsets.only(left: 4), margin: EdgeInsets.only(left: 4),
child: baseText(cards.doctor.name, 15, Color(0xff333333), child: baseText(cards.doctor.title, 15, Color(0xff333333),
bold: true), bold: true),
) )
], ],
...@@ -111,11 +124,11 @@ class LevelOneItem extends StatelessWidget { ...@@ -111,11 +124,11 @@ class LevelOneItem extends StatelessWidget {
right: 137, right: 137,
child: askWidget(), child: askWidget(),
), ),
Positioned( // Positioned(
left: 4.5, // left: 4.5,
bottom: 25, // bottom: 25,
child: compareWidget(), // child: compareWidget(),
), // ),
Positioned( Positioned(
left: 0, left: 0,
bottom: 0, bottom: 0,
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
**/ **/
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gm_flutter/ClueModel/page/DiscussLowPrice/DiscussLowPricePopView.dart';
import 'package:gm_flutter/ClueModel/page/levelOne/LevelOneListModel.dart'; import 'package:gm_flutter/ClueModel/page/levelOne/LevelOneListModel.dart';
import 'package:gm_flutter/ClueModel/server/entity/LevelOneFeedList.dart'; import 'package:gm_flutter/ClueModel/server/entity/LevelOneFeedList.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart'; import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
...@@ -55,8 +56,11 @@ class LevelOneListState extends State<LevelOneList> ...@@ -55,8 +56,11 @@ class LevelOneListState extends State<LevelOneList>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
super.build(context); super.build(context);
return baseStateView(MediaQuery.of(context).size.width, return baseStateView(
MediaQuery.of(context).size.height, _model.stateLive, pages(), () { MediaQuery.of(context).size.width,
MediaQuery.of(context).size.height ,
_model.stateLive,
pages(), () {
_model.refreshView(true); _model.refreshView(true);
}, paddingTop: widget.topHeight); }, paddingTop: widget.topHeight);
} }
...@@ -89,9 +93,20 @@ class LevelOneListState extends State<LevelOneList> ...@@ -89,9 +93,20 @@ class LevelOneListState extends State<LevelOneList>
color: Color(0xffF7F6FA), color: Color(0xffF7F6FA),
); );
} }
return LevelOneItem(_model.data[index] return LevelOneItem(
,lowPrice: (){ _model.data[index],
},); lowPrice: () {
DiscussLowPricePopView.showPopView(
context,
"${widget.planId}",
_model.data[index].cardType == "hospital"
? _model.data[index].hospital
: "",
_model.data[index].cardType == "doctor"
? _model.data[index].doctor
: "");
},
);
}, },
childCount: _model.data.length + 1, childCount: _model.data.length + 1,
), ),
......
...@@ -7,6 +7,7 @@ import 'package:flutter_common/commonModel/live/BaseModel.dart'; ...@@ -7,6 +7,7 @@ import 'package:flutter_common/commonModel/live/BaseModel.dart';
import 'package:flutter_common/commonModel/live/LiveData.dart'; import 'package:flutter_common/commonModel/live/LiveData.dart';
import 'package:flutter_common/commonModel/toast/NativeToast.dart'; import 'package:flutter_common/commonModel/toast/NativeToast.dart';
import 'package:gm_flutter/ClueModel/server/api/ClueApi.serv.dart'; import 'package:gm_flutter/ClueModel/server/api/ClueApi.serv.dart';
import 'package:gm_flutter/ClueModel/server/api/ClueTApi.serv.dart';
import 'package:gm_flutter/ClueModel/server/entity/LevelOneFeedList.dart'; import 'package:gm_flutter/ClueModel/server/entity/LevelOneFeedList.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanOverViewBean.dart'; import 'package:gm_flutter/ClueModel/server/entity/PlanOverViewBean.dart';
import 'package:gm_flutter/commonModel/GMBase.dart'; import 'package:gm_flutter/commonModel/GMBase.dart';
...@@ -27,7 +28,7 @@ class LevelOneModel extends BaseModel { ...@@ -27,7 +28,7 @@ class LevelOneModel extends BaseModel {
String imageUrl = ""; String imageUrl = "";
void init(VoidCallback callback) { void init(VoidCallback callback) {
ClueApiImpl.getInstance() ClueTApiImpl.getInstance()
.getPlanOverView(DioUtil.getInstance().getDio(), plan_id) .getPlanOverView(DioUtil.getInstance().getDio(), plan_id)
.listen((event) { .listen((event) {
if (event.error == 0) { if (event.error == 0) {
......
...@@ -47,8 +47,11 @@ class LevelOneState extends BaseState<LevelOnePage> ...@@ -47,8 +47,11 @@ class LevelOneState extends BaseState<LevelOnePage>
int index = 0; int index = 0;
double stateBarHeight = 0;
@override @override
void initState() { void initState() {
DioUtil.getInstance().setProxy("172.30.8.245");
super.initState(); super.initState();
_model.plan_id = widget.planId; _model.plan_id = widget.planId;
_model.init(() { _model.init(() {
...@@ -83,6 +86,8 @@ class LevelOneState extends BaseState<LevelOnePage> ...@@ -83,6 +86,8 @@ class LevelOneState extends BaseState<LevelOnePage>
@override @override
Widget buildItem(BuildContext context) { Widget buildItem(BuildContext context) {
stateBarHeight = MediaQueryData.fromWindow(window).padding.top;
oneList.clear(); oneList.clear();
oneList.add(good()); oneList.add(good());
oneList.add(rect()); oneList.add(rect());
...@@ -164,12 +169,11 @@ class LevelOneState extends BaseState<LevelOnePage> ...@@ -164,12 +169,11 @@ class LevelOneState extends BaseState<LevelOnePage>
Widget newHome() { Widget newHome() {
List<Widget> list = []; List<Widget> list = [];
var d = MediaQueryData.fromWindow(window).padding.top;
for (int i = 0; i < _model.tabsList.length; i++) { for (int i = 0; i < _model.tabsList.length; i++) {
list.add(extend.NestedScrollViewInnerScrollPositionKeyWidget( list.add(extend.NestedScrollViewInnerScrollPositionKeyWidget(
Key("Tab${i}"), Key("Tab${i}"),
LevelOneList( LevelOneList(widget.planId, _model.tabsList[i].tabType,
widget.planId, _model.tabsList[i].tabType, kToolbarHeight + d))); kToolbarHeight + stateBarHeight)));
} }
final double statusBarHeight = MediaQuery.of(context).padding.top; final double statusBarHeight = MediaQuery.of(context).padding.top;
final double pinnedHeaderHeight = statusBarHeight + kToolbarHeight; final double pinnedHeaderHeight = statusBarHeight + kToolbarHeight;
...@@ -183,8 +187,7 @@ class LevelOneState extends BaseState<LevelOnePage> ...@@ -183,8 +187,7 @@ class LevelOneState extends BaseState<LevelOnePage>
SliverOverlapAbsorber( SliverOverlapAbsorber(
handle: extend.NestedScrollView.sliverOverlapAbsorberHandleFor( handle: extend.NestedScrollView.sliverOverlapAbsorberHandleFor(
context), context),
sliver: baseSliverAppBar( sliver: baseSliverAppBar(_model.imageUrl)),
_model.imageUrl)),
SliverList( SliverList(
delegate: SliverChildBuilderDelegate((BuildContext c, int i) { delegate: SliverChildBuilderDelegate((BuildContext c, int i) {
if (i == 0) { if (i == 0) {
...@@ -358,14 +361,9 @@ class LevelOneState extends BaseState<LevelOnePage> ...@@ -358,14 +361,9 @@ class LevelOneState extends BaseState<LevelOnePage>
), ),
GestureDetector( GestureDetector(
onTap: () { onTap: () {
//TODO
Map<String, dynamic> map = {};
map["page_name"] = "plan_home";
map["referrer_link"] = [];
RouterCenterImpl() RouterCenterImpl()
.findMainRouter() .findMainRouter()
.buriedEvent("on_click_navbar_search", map); .jumpPage(context, "", {}, false);
}, },
behavior: HitTestBehavior.opaque, behavior: HitTestBehavior.opaque,
child: baseText("了解更多", 12, Color(0xff3FB5AF)), child: baseText("了解更多", 12, Color(0xff3FB5AF)),
......
...@@ -7,6 +7,7 @@ import 'package:flutter_common/commonModel/live/BaseModel.dart'; ...@@ -7,6 +7,7 @@ import 'package:flutter_common/commonModel/live/BaseModel.dart';
import 'package:flutter_common/commonModel/live/LiveData.dart'; import 'package:flutter_common/commonModel/live/LiveData.dart';
import 'package:flutter_common/commonModel/toast/NativeToast.dart'; import 'package:flutter_common/commonModel/toast/NativeToast.dart';
import 'package:gm_flutter/ClueModel/server/api/ClueApi.serv.dart'; import 'package:gm_flutter/ClueModel/server/api/ClueApi.serv.dart';
import 'package:gm_flutter/ClueModel/server/api/ClueTApi.serv.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanOverViewBean.dart'; import 'package:gm_flutter/ClueModel/server/entity/PlanOverViewBean.dart';
import 'package:gm_flutter/commonModel/GMBase.dart'; import 'package:gm_flutter/commonModel/GMBase.dart';
import 'package:gm_flutter/commonModel/bean/Pair.dart'; import 'package:gm_flutter/commonModel/bean/Pair.dart';
...@@ -24,7 +25,7 @@ class LevelOneModel extends BaseModel { ...@@ -24,7 +25,7 @@ class LevelOneModel extends BaseModel {
PlanOverData planoverItem; PlanOverData planoverItem;
void init(VoidCallback callback) { void init(VoidCallback callback) {
ClueApiImpl.getInstance() ClueTApiImpl.getInstance()
.getPlanOverView(DioUtil.getInstance().getDio(), plan_id) .getPlanOverView(DioUtil.getInstance().getDio(), plan_id)
.listen((event) { .listen((event) {
if (event.error == 0) { if (event.error == 0) {
......
...@@ -34,6 +34,8 @@ import 'PlanModel.dart'; ...@@ -34,6 +34,8 @@ import 'PlanModel.dart';
import 'ProjectView.dart'; import 'ProjectView.dart';
class PlanPage extends StatefulWidget { class PlanPage extends StatefulWidget {
PlanPage(Map<String, dynamic> params) {}
@override @override
State<StatefulWidget> createState() => PlanState(); State<StatefulWidget> createState() => PlanState();
} }
......
...@@ -26,6 +26,7 @@ class TopPage extends StatefulWidget { ...@@ -26,6 +26,7 @@ class TopPage extends StatefulWidget {
String rank_type; String rank_type;
TopPage(Map<String, dynamic> map) { TopPage(Map<String, dynamic> map) {
print("LSY ${map.toString()}");
this.rank_type = map["rank_type"]; this.rank_type = map["rank_type"];
} }
......
...@@ -32,8 +32,8 @@ abstract class ClueApi { ...@@ -32,8 +32,8 @@ abstract class ClueApi {
LevelOneFeedList getLevelOneList(@Query("plan_id") int plan_id, LevelOneFeedList getLevelOneList(@Query("plan_id") int plan_id,
@Query("tab_type") String tab_type, @Query("page") int page); @Query("tab_type") String tab_type, @Query("page") int page);
@Get("api/janus/plans/compare") @Get("api/janus/plans/plan_compare")
PlanCompareDetail getPlanCompareDetail(@Query("plan_ids") List<int> planIds); PlanCompareDetail getPlanCompareDetail(@Query("plan_ids") String planIds);
@Get("api/janus/plans/options") @Get("api/janus/plans/options")
PlanBean getPlan(); PlanBean getPlan();
...@@ -55,11 +55,11 @@ abstract class ClueApi { ...@@ -55,11 +55,11 @@ abstract class ClueApi {
@Post("api/janus/plans/plan_consult") @Post("api/janus/plans/plan_consult")
PlanConsultBean sendMessage(@Query("doctor_ids") List<int> doctor_ids, PlanConsultBean sendMessage(@Query("doctor_ids") List<int> doctor_ids,
@Query("question") String question, @Query("plan_id") int plan_id); @Query("question") String question, @Query("plan_id") int plan_id);
@Get("api/janus/plans/rank") @Get("api/janus/plans/rank")
PlanBarBean getPlanBar(@Query("rank_type") String rank_type); PlanBarBean getPlanBar(@Query("rank_type") String rank_type);
@Get("api/janus/plans/plan_phone_authorize") @Post("api/janus/plans/plan_phone_authorize")
DiscussLowPriceModelBean getPopviewData( DiscussLowPriceModelBean getPopviewData(
@Query("plan_id") String planId, @Query("plan_id") String planId,
@Query("hospital_id") String hospitalId, @Query("hospital_id") String hospitalId,
...@@ -70,6 +70,6 @@ abstract class ClueApi { ...@@ -70,6 +70,6 @@ abstract class ClueApi {
DiscussLowPriceAuthBean givePhoneAuth( DiscussLowPriceAuthBean givePhoneAuth(
@Query("lead_phone_request_id") int leadPhoneRequestId); @Query("lead_phone_request_id") int leadPhoneRequestId);
@Get("api/janus/plans/plan_overview") // @Get("api/janus/plans/plan_overview")
PlanOverViewBean getPlanOverView(@Query("plan_id") int plan_id); // PlanOverViewBean getPlanOverView(@Query("plan_id") int plan_id);
} }
...@@ -25,7 +25,6 @@ import 'package:gm_flutter/ClueModel/server/entity/PlanConsultBean.dart'; ...@@ -25,7 +25,6 @@ import 'package:gm_flutter/ClueModel/server/entity/PlanConsultBean.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanBarBean.dart'; import 'package:gm_flutter/ClueModel/server/entity/PlanBarBean.dart';
import 'package:gm_flutter/ClueModel/server/entity/DiscussLowPriceModelBean.dart'; import 'package:gm_flutter/ClueModel/server/entity/DiscussLowPriceModelBean.dart';
import 'package:gm_flutter/ClueModel/server/entity/DiscussLowPriceAuthBean.dart'; import 'package:gm_flutter/ClueModel/server/entity/DiscussLowPriceAuthBean.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanOverViewBean.dart';
const bool inProduction = const bool.fromEnvironment("dart.vm.product"); const bool inProduction = const bool.fromEnvironment("dart.vm.product");
...@@ -90,8 +89,8 @@ class ClueApiImpl { ...@@ -90,8 +89,8 @@ class ClueApiImpl {
}); });
} }
Stream<PlanCompareDetail> getPlanCompareDetail(Dio _dio, List<int> planIds) { Stream<PlanCompareDetail> getPlanCompareDetail(Dio _dio, String planIds) {
return Stream.fromFuture(get(_dio, 'api/janus/plans/compare', data: { return Stream.fromFuture(get(_dio, 'api/janus/plans/plan_compare', data: {
'plan_ids': planIds, 'plan_ids': planIds,
})).flatMap((value) { })).flatMap((value) {
if (value != null && if (value != null &&
...@@ -193,7 +192,7 @@ class ClueApiImpl { ...@@ -193,7 +192,7 @@ class ClueApiImpl {
Stream<DiscussLowPriceModelBean> getPopviewData( Stream<DiscussLowPriceModelBean> getPopviewData(
Dio _dio, String planId, String hospitalId, String doctorId) { Dio _dio, String planId, String hospitalId, String doctorId) {
return Stream.fromFuture( return Stream.fromFuture(
get(_dio, 'api/janus/plans/plan_phone_authorize', data: { post(_dio, 'api/janus/plans/plan_phone_authorize', data: {
'plan_id': planId, 'plan_id': planId,
'hospital_id': hospitalId, 'hospital_id': hospitalId,
'doctor_id': doctorId, 'doctor_id': doctorId,
...@@ -224,20 +223,6 @@ class ClueApiImpl { ...@@ -224,20 +223,6 @@ class ClueApiImpl {
}); });
} }
Stream<PlanOverViewBean> getPlanOverView(Dio _dio, int plan_id) {
return Stream.fromFuture(get(_dio, 'api/janus/plans/plan_overview', data: {
'plan_id': plan_id,
})).flatMap((value) {
if (value != null &&
(value.statusCode >= 200 && value.statusCode < 300)) {
return Stream.fromFuture(
compute(parsePlanOverViewBean, value.toString()));
} else {
throw Exception("--未知网络错误--");
}
});
}
///==================base method================== ///==================base method==================
Future<Response> get(Dio _dio, url, {data, options, cancelToken}) async { Future<Response> get(Dio _dio, url, {data, options, cancelToken}) async {
...@@ -418,7 +403,3 @@ DiscussLowPriceModelBean parseDiscussLowPriceModelBean(String value) { ...@@ -418,7 +403,3 @@ DiscussLowPriceModelBean parseDiscussLowPriceModelBean(String value) {
DiscussLowPriceAuthBean parseDiscussLowPriceAuthBean(String value) { DiscussLowPriceAuthBean parseDiscussLowPriceAuthBean(String value) {
return DiscussLowPriceAuthBean.fromJson(json.decode(value)); return DiscussLowPriceAuthBean.fromJson(json.decode(value));
} }
PlanOverViewBean parsePlanOverViewBean(String value) {
return PlanOverViewBean.fromJson(json.decode(value));
}
/*
* @author lsy
* @date 2020/7/7
**/
import 'package:flutter_common/Annotations/anno/Get.dart';
import 'package:flutter_common/Annotations/anno/Query.dart';
import 'package:flutter_common/Annotations/anno/ServiceCenter.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanOverviewBean.dart';
@ServiceCenter()
abstract class ClueTApi{
@Get("api/janus/plans/plan_overview")
PlanOverViewBean getPlanOverView(@Query("plan_id") int plan_id);
}
\ No newline at end of file
// GENERATED CODE - DO NOT MODIFY BY HAND
// **************************************************************************
// ServiceGenerator
// **************************************************************************
import 'dart:convert';
import 'dart:io';
import 'package:rxdart/rxdart.dart';
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanOverViewBean.dart';
const bool inProduction = const bool.fromEnvironment("dart.vm.product");
class ClueTApiImpl {
static JsonEncoder encoder = JsonEncoder.withIndent(' ');
static ClueTApiImpl _instance;
ClueTApiImpl._() {}
static ClueTApiImpl getInstance() {
if (_instance == null) {
_instance = ClueTApiImpl._();
}
return _instance;
}
Stream<PlanOverViewBean> getPlanOverView(Dio _dio, int plan_id) {
return Stream.fromFuture(get(_dio, 'api/janus/plans/plan_overview', data: {
'plan_id': plan_id,
})).flatMap((value) {
if (value != null &&
(value.statusCode >= 200 && value.statusCode < 300)) {
return Stream.fromFuture(
compute(parsePlanOverViewBean, value.toString()));
} else {
throw Exception("--未知网络错误--");
}
});
}
///==================base method==================
Future<Response> get(Dio _dio, url, {data, options, cancelToken}) async {
Response response;
try {
response = await _dio.get(url,
queryParameters: data, options: options, cancelToken: cancelToken);
_printHttpLog(response);
} on DioError catch (e) {
print('get error---------$e ${formatError(e)}');
throw e;
}
return response;
}
Future<Response> post(Dio _dio, url, {data, options, cancelToken}) async {
Response response;
try {
response = await _dio.post(url,
data: FormData.fromMap(data),
options: options,
cancelToken: cancelToken);
_printHttpLog(response);
} on DioError catch (e) {
print('get error---------$e ${formatError(e)}');
throw e;
}
return response;
}
Future<Response> put(Dio _dio, url, {data, options, cancelToken}) async {
Response response;
try {
response = await _dio.put(url,
data: FormData.fromMap(data),
options: options,
cancelToken: cancelToken);
_printHttpLog(response);
} on DioError catch (e) {
print('get error---------$e ${formatError(e)}');
throw e;
}
return response;
}
Future<Response> delete(Dio _dio, url, {data, options, cancelToken}) async {
Response response;
try {
response = await _dio.delete(url,
data: FormData.fromMap(data),
options: options,
cancelToken: cancelToken);
_printHttpLog(response);
} on DioError catch (e) {
print('get error---------$e ${formatError(e)}');
throw e;
}
return response;
}
Future<Response> upload(Dio _dio, url, String key, String path,
{Map<String, dynamic> data, options, cancelToken}) async {
Response response;
print("UPLOAD===> URL:$url {$key : $path } data:$data");
MultipartFile file = await MultipartFile.fromFile(path,
filename: path.substring(path.lastIndexOf("/") + 1, path.length));
if (data == null) {
data = new Map<String, dynamic>();
}
data.putIfAbsent(key, () => file);
try {
response = await _dio.post(url,
data: FormData.fromMap(data),
options: options,
cancelToken: cancelToken);
_printHttpLog(response);
} on DioError catch (e) {
print('get error---------$e ${formatError(e)}');
throw e;
}
return response;
}
void _printHttpLog(Response response) {
if (!inProduction) {
try {
printRespond(response);
} catch (ex) {
print("Http Log" + " error......");
}
}
}
static void printRespond(Response response) {
Map httpLogMap = Map();
httpLogMap.putIfAbsent("requestMethod", () => "${response.request.method}");
httpLogMap.putIfAbsent("requestUrl", () => "${response.request.uri}");
httpLogMap.putIfAbsent("requestHeaders", () => response.request.headers);
httpLogMap.putIfAbsent(
"requestQueryParameters", () => response.request.queryParameters);
if (response.request.data is FormData) {
httpLogMap.putIfAbsent("requestDataFields",
() => ((response.request.data as FormData).fields.toString()));
}
httpLogMap.putIfAbsent(
"respondData", () => json.decode(response.toString()));
printJson(httpLogMap);
}
static void printJson(Object object) {
try {
var encoderString = encoder.convert(object);
debugPrint(encoderString);
} catch (e) {
print(e);
}
}
String formatError(DioError e) {
String reason = "";
if (e.type == DioErrorType.CONNECT_TIMEOUT) {
reason = "连接超时 ${e.message}";
} else if (e.type == DioErrorType.SEND_TIMEOUT) {
reason = "请求超时 ${e.message}";
} else if (e.type == DioErrorType.RECEIVE_TIMEOUT) {
reason = "响应超时 ${e.message}";
} else if (e.type == DioErrorType.RESPONSE) {
reason = "出现异常 ${e.message}";
} else if (e.type == DioErrorType.CANCEL) {
reason = "请求取消 ${e.message}";
} else {
reason = "未知错误 ${e.message}";
}
return reason;
}
}
PlanOverViewBean parsePlanOverViewBean(String value) {
return PlanOverViewBean.fromJson(json.decode(value));
}
...@@ -554,7 +554,7 @@ class TagsNewEra { ...@@ -554,7 +554,7 @@ class TagsNewEra {
} }
class User { class User {
Null city; String city;
int userId; int userId;
int topicNumPosted; int topicNumPosted;
int voteNumGained; int voteNumGained;
......
...@@ -21,8 +21,8 @@ class PlanBean { ...@@ -21,8 +21,8 @@ class PlanBean {
PlanBean.fromJson(Map<String, dynamic> json) { PlanBean.fromJson(Map<String, dynamic> json) {
error = json['error']; error = json['error'];
message = json['message']; message = json['message'];
extra = json['extra']; extra = json['extra']??"";
errorExtra = json['error_extra']; errorExtra = json['error_extra']??"";
userType = json['user_type'] != null userType = json['user_type'] != null
? new UserType.fromJson(json['user_type']) ? new UserType.fromJson(json['user_type'])
: null; : null;
......
...@@ -4,10 +4,6 @@ ...@@ -4,10 +4,6 @@
* @Last Modified by: zx * @Last Modified by: zx
* @Last Modified time: 2020-07-01 20:31:42 * @Last Modified time: 2020-07-01 20:31:42
*/ */
import 'dart:convert';
class PlanCompareDetail { class PlanCompareDetail {
int error; int error;
String message; String message;
......
...@@ -21,7 +21,7 @@ class FiveStarView extends StatelessWidget { ...@@ -21,7 +21,7 @@ class FiveStarView extends StatelessWidget {
width: 13, width: 13,
child: Image.asset(starAssets ?? "assets/sel_star.png"), child: Image.asset(starAssets ?? "assets/sel_star.png"),
)); ));
if (i != 0 && i != allStarCount - 1) { if ( i != allStarCount - 1) {
list.add(Container( list.add(Container(
height: 1, height: 1,
width: 2, width: 2,
...@@ -33,7 +33,7 @@ class FiveStarView extends StatelessWidget { ...@@ -33,7 +33,7 @@ class FiveStarView extends StatelessWidget {
width: 13, width: 13,
child: Image.asset("assets/normal_star.png"), child: Image.asset("assets/normal_star.png"),
)); ));
if (i != 0 && i != allStarCount - 1) { if ( i != allStarCount - 1) {
list.add(Container( list.add(Container(
height: 1, height: 1,
width: 2, width: 2,
......
...@@ -27,8 +27,6 @@ class JumpManager { ...@@ -27,8 +27,6 @@ class JumpManager {
String pageNameWrap = String pageNameWrap =
nativePage ? "gm://${pageName}" : "flutter://${pageName}"; nativePage ? "gm://${pageName}" : "flutter://${pageName}";
if (!MainManager.getInstance().isInit) { if (!MainManager.getInstance().isInit) {
CacheManager.getInstance().get(MEMORY_CACHE).save(COOKIE,
"_gtid=3123e178b91a11eaa2d87e40d376ac134112; sessionid=pq9wf8equ4h26ia3yspzmquqn2rjs6mx; _gm_token=4091a81593419225");
JumpUtil.jumpToPageRight(context, initMap(params)[pageNameWrap]); JumpUtil.jumpToPageRight(context, initMap(params)[pageNameWrap]);
} else { } else {
FlutterBoost.singleton.open(pageNameWrap, urlParams: params); FlutterBoost.singleton.open(pageNameWrap, urlParams: params);
...@@ -47,7 +45,7 @@ class JumpManager { ...@@ -47,7 +45,7 @@ class JumpManager {
RouterCenterImpl().findClueRouter().getPlansCompareFeed(params), RouterCenterImpl().findClueRouter().getPlansCompareFeed(params),
"flutter://level_two_plan_compare": "flutter://level_two_plan_compare":
RouterCenterImpl().findClueRouter().getPlansCompareFeed(params), RouterCenterImpl().findClueRouter().getPlansCompareFeed(params),
"flutter://plan_home": RouterCenterImpl().findClueRouter().getPlanPage(), "flutter://plan_home": RouterCenterImpl().findClueRouter().getPlanPage(params),
"flutter://favor_plan": "flutter://favor_plan":
RouterCenterImpl().findClueRouter().getTopPage(params), RouterCenterImpl().findClueRouter().getTopPage(params),
"flutter://hot_plan": "flutter://hot_plan":
......
...@@ -6,8 +6,10 @@ import 'package:flutter/cupertino.dart'; ...@@ -6,8 +6,10 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_common/commonModel/util/JumpUtil.dart'; import 'package:flutter_common/commonModel/util/JumpUtil.dart';
import 'package:gm_flutter/MainRouter/page/proxy/NetProxyPage.dart'; import 'package:gm_flutter/MainRouter/page/proxy/NetProxyPage.dart';
import 'package:gm_flutter/commonModel/App.dart';
import 'package:gm_flutter/commonModel/base/BaseComponent.dart'; import 'package:gm_flutter/commonModel/base/BaseComponent.dart';
import 'package:gm_flutter/commonModel/base/BaseState.dart'; import 'package:gm_flutter/commonModel/base/BaseState.dart';
import 'package:gm_flutter/commonModel/cache/CacheManager.dart';
import 'package:gm_flutter/main.mark.dart'; import 'package:gm_flutter/main.mark.dart';
import 'package:gm_flutter/ClueModel/page/DiscussLowPrice/DiscussLowPricePopView.dart'; import 'package:gm_flutter/ClueModel/page/DiscussLowPrice/DiscussLowPricePopView.dart';
import 'TP.dart'; import 'TP.dart';
...@@ -25,6 +27,7 @@ class TestState extends BaseState<TestPage> { ...@@ -25,6 +27,7 @@ class TestState extends BaseState<TestPage> {
list.add(listItem("设置代理页面", () { list.add(listItem("设置代理页面", () {
JumpUtil.jumpToPageRight(context, NetProxyPage()); JumpUtil.jumpToPageRight(context, NetProxyPage());
})); }));
list.add(listItem("一级列表页", () { list.add(listItem("一级列表页", () {
RouterCenterImpl() RouterCenterImpl()
.findMainRouter() .findMainRouter()
...@@ -35,23 +38,26 @@ class TestState extends BaseState<TestPage> { ...@@ -35,23 +38,26 @@ class TestState extends BaseState<TestPage> {
.findMainRouter() .findMainRouter()
.jumpPage(context, "level_two_plan_deatil", {"planId": 192}, false); .jumpPage(context, "level_two_plan_deatil", {"planId": 192}, false);
})); }));
list.add(listItem("方案页面", () { list.add(listItem("项目首页", () {
RouterCenterImpl() RouterCenterImpl()
.findMainRouter() .findMainRouter()
.jumpPage(context, "plan_home", {"planId": 137}, false); .jumpPage(context, "plan_home", {}, false);
})); }));
list.add(listItem("对比详情页", () { list.add(listItem("方案页面", () {
RouterCenterImpl() RouterCenterImpl()
.findMainRouter() .findMainRouter()
.jumpPage(context, "level_one_plan_compare_detail", {"planId": 137}, false); .jumpPage(context, "plan_home", {"planId": 137}, false);
})); }));
list.add(listItem("项目说明", () { list.add(listItem("对比详情页", () {
JumpUtil.jumpToPageRight( RouterCenterImpl().findMainRouter().jumpPage(
context, context,
RouterCenterImpl() "level_one_plan_compare_detail",
.findClueRouter() {
.getProjectDetailsPage({"planId": 1})); "planIds": [137, 139]
},
false);
})); }));
list.add(listItem("方案对比", () { list.add(listItem("方案对比", () {
JumpUtil.jumpToPageRight( JumpUtil.jumpToPageRight(
context, context,
...@@ -64,13 +70,15 @@ class TestState extends BaseState<TestPage> { ...@@ -64,13 +70,15 @@ class TestState extends BaseState<TestPage> {
RouterCenterImpl().findClueRouter().getTopPage({"rank_type": "0"})); RouterCenterImpl().findClueRouter().getTopPage({"rank_type": "0"}));
})); }));
list.add(listItem("弹窗", () { list.add(listItem("弹窗", () {
DiscussLowPricePopView.showPopView(context); DiscussLowPricePopView.showPopView(context, "hahaha", "1", "", "112");
})); }));
return list; return list;
} }
@override @override
Widget buildItem(BuildContext context) { Widget buildItem(BuildContext context) {
CacheManager.getInstance().get(MEMORY_CACHE).save(COOKIE,
"_gm_token=1da6071594101423; csrftoken=rUrkkYYMOVZfIIQnU2IH09QIGmsfe8tE; sessionid=uz7f70uap76r6og48znci5l2hbr9vm5c; _gtid=5af9a5deba8511ea8d4082a085c393c93393");
return Scaffold( return Scaffold(
appBar: baseAppBar( appBar: baseAppBar(
title: "测试页面", title: "测试页面",
......
...@@ -59,7 +59,7 @@ class MyApp extends State<MyAppWidget> { ...@@ -59,7 +59,7 @@ class MyApp extends State<MyAppWidget> {
super.initState(); super.initState();
FlutterBoost.singleton.registerPageBuilders({ FlutterBoost.singleton.registerPageBuilders({
'plan_home': (pageName, params, _) => 'plan_home': (pageName, params, _) =>
RouterCenterImpl().findClueRouter().getPlanPage(), RouterCenterImpl().findClueRouter().getPlanPage(params),
'level_one_plan_detail': (pageName, params, _) => 'level_one_plan_detail': (pageName, params, _) =>
RouterCenterImpl().findClueRouter().getLevelOnePage(params), RouterCenterImpl().findClueRouter().getLevelOnePage(params),
'level_two_plan_deatil': (pageName, params, _) => 'level_two_plan_deatil': (pageName, params, _) =>
......
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