Commit 81a9cb7f authored by 林生雨's avatar 林生雨

Merge branch 'test' of git.wanmeizhensuo.com:linshengyu/gm_flutter into test

parents b68c8c46 5e5d3b5b
...@@ -26,6 +26,7 @@ class LevelOneModel extends BaseModel { ...@@ -26,6 +26,7 @@ class LevelOneModel extends BaseModel {
int plan_id = 0; int plan_id = 0;
PlanOverData planoverItem; PlanOverData planoverItem;
String imageUrl = ""; String imageUrl = "";
String name = "";
void init(VoidCallback callback) { void init(VoidCallback callback) {
ClueTApiImpl.getInstance() ClueTApiImpl.getInstance()
...@@ -33,6 +34,7 @@ class LevelOneModel extends BaseModel { ...@@ -33,6 +34,7 @@ class LevelOneModel extends BaseModel {
.listen((event) { .listen((event) {
if (event.error == 0) { if (event.error == 0) {
planoverItem = event.data; planoverItem = event.data;
name = event.data.name;
imageUrl = event.data.banner.imageUrl; imageUrl = event.data.banner.imageUrl;
tabsList = event.data.tabs; tabsList = event.data.tabs;
stateLive.notifyView(ENDLOADING); stateLive.notifyView(ENDLOADING);
......
...@@ -53,6 +53,7 @@ class LevelTwoState extends BaseState<LevelTwoPage> ...@@ -53,6 +53,7 @@ class LevelTwoState extends BaseState<LevelTwoPage>
@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(() {
...@@ -166,11 +167,12 @@ class LevelTwoState extends BaseState<LevelTwoPage> ...@@ -166,11 +167,12 @@ class LevelTwoState extends BaseState<LevelTwoPage>
child: newHome(), child: newHome(),
)), )),
Positioned( Positioned(
top: 57, top: 44,
left: 60,
child: Container( child: Container(
alignment: Alignment.center, alignment: Alignment.center,
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width - 100,
child: baseText("文案", 18, Color(0xff333333)), child: baseText(_model.name, 18, Color(0xff333333)),
), ),
), ),
baseSliverBack(() { baseSliverBack(() {
...@@ -202,7 +204,7 @@ class LevelTwoState extends BaseState<LevelTwoPage> ...@@ -202,7 +204,7 @@ class LevelTwoState extends BaseState<LevelTwoPage>
handle: extend.NestedScrollView.sliverOverlapAbsorberHandleFor( handle: extend.NestedScrollView.sliverOverlapAbsorberHandleFor(
context), context),
sliver: baseSliverAppBar(_model.imageUrl, sliver: baseSliverAppBar(_model.imageUrl,
height: pinnedHeaderHeight, needpic: false)), height: 0, needpic: false)),
SliverList( SliverList(
delegate: SliverChildBuilderDelegate((BuildContext c, int i) { delegate: SliverChildBuilderDelegate((BuildContext c, int i) {
if (i == 0) { if (i == 0) {
...@@ -256,7 +258,7 @@ class LevelTwoState extends BaseState<LevelTwoPage> ...@@ -256,7 +258,7 @@ class LevelTwoState extends BaseState<LevelTwoPage>
); );
} }
return Padding( return Padding(
padding: EdgeInsets.only(left: 15.0, right: 15.0, top: 8.0, bottom: 20), padding: EdgeInsets.only(left: 15.0, right: 15.0, bottom: 20),
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
...@@ -438,7 +440,7 @@ class LevelTwoState extends BaseState<LevelTwoPage> ...@@ -438,7 +440,7 @@ class LevelTwoState extends BaseState<LevelTwoPage>
behavior: HitTestBehavior.opaque, behavior: HitTestBehavior.opaque,
onTap: () { onTap: () {
BaseBottomPicker() BaseBottomPicker()
..setPicker(MechanismBox(12)) ..setPicker(MechanismBox(widget.planId))
..show(context); ..show(context);
}, },
child: Container( child: Container(
......
...@@ -8,6 +8,7 @@ import 'package:gm_flutter/ClueModel/view/FiveStarView.dart'; ...@@ -8,6 +8,7 @@ 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/ClueModel/page/mechanismBox/MechanismModel.dart'; import 'package:gm_flutter/ClueModel/page/mechanismBox/MechanismModel.dart';
import 'package:gm_flutter/commonModel/bean/Pair.dart'; import 'package:gm_flutter/commonModel/bean/Pair.dart';
import 'package:gm_flutter/commonModel/net/DioUtil.dart';
import 'package:gm_flutter/main.mark.dart'; import 'package:gm_flutter/main.mark.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart';
...@@ -15,13 +16,15 @@ class MechanismBox implements IBottomPicker { ...@@ -15,13 +16,15 @@ class MechanismBox implements IBottomPicker {
VoidCallback dismissCall; VoidCallback dismissCall;
TextEditingController textController = TextEditingController(); TextEditingController textController = TextEditingController();
MechanismModel _model = new MechanismModel(); MechanismModel _model = new MechanismModel();
List doctor_ids = new List(); List<String> doctor_ids = new List();
LevelOneListModel _levelModel = LevelOneListModel(); LevelOneListModel _levelModel = LevelOneListModel();
RefreshController refreshController = RefreshController(); RefreshController refreshController = RefreshController();
Function(String str) refresh; Function(String str) refresh;
DateTime _dateTime = DateTime.now();
@required @required
final int plan_id; final int plan_id;
...@@ -29,21 +32,9 @@ class MechanismBox implements IBottomPicker { ...@@ -29,21 +32,9 @@ class MechanismBox implements IBottomPicker {
@override @override
initState(dismissCall, BuildContext context) { initState(dismissCall, BuildContext context) {
Map<String, dynamic> map = {
"business_id": "level_two_plan_compare_deatil",
"page_name": "",
"referrer": "",
"referrer_id": "",
"referrer_link": [],
"referrer_tab_name": "",
"in": "",
"out": "",
"is_push": 1,
"fake": 1,
"is_first": 1
};
RouterCenterImpl().findMainRouter().buriedEvent("page_view", map);
this.dismissCall = dismissCall; this.dismissCall = dismissCall;
_levelModel.plan_id = plan_id;
_levelModel.tab_type = "hospital";
_model.getQuestions(plan_id); _model.getQuestions(plan_id);
_levelModel.refreshView(true); _levelModel.refreshView(true);
refresh = (str) { refresh = (str) {
...@@ -75,7 +66,7 @@ class MechanismBox implements IBottomPicker { ...@@ -75,7 +66,7 @@ class MechanismBox implements IBottomPicker {
if (data.data == LOADING) { if (data.data == LOADING) {
return loadingItem(); return loadingItem();
} }
return setupHome(mq, keyHeight); return setupHome(mq, keyHeight, context);
}, },
)), )),
); );
...@@ -83,18 +74,55 @@ class MechanismBox implements IBottomPicker { ...@@ -83,18 +74,55 @@ class MechanismBox implements IBottomPicker {
@override @override
void dispose() { void dispose() {
Map<String, dynamic> map = {
"business_id": "level_two_plan_compare_deatil",
"page_name": "",
"referrer": "",
"referrer_id": "",
"referrer_link": [],
"referrer_tab_name": "",
"in": _dateTime,
"out": DateTime.now(),
"is_push": 1,
"fake": 1,
"is_first": 1
};
RouterCenterImpl().findMainRouter().buriedEvent("page_view", map);
textController.dispose(); textController.dispose();
refreshController.dispose(); refreshController.dispose();
_levelModel.dispose(); _levelModel.dispose();
_model.dispose(); _model.dispose();
} }
setupHome(mq, keyHeight) { setupHome(mq, keyHeight, BuildContext context) {
return Column( return Column(
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: <Widget>[ children: <Widget>[
title(mq), title(mq),
mechanismList(mq, keyHeight), StreamBuilder(
stream: _levelModel.stateLive.stream,
initialData: _levelModel.stateLive.data ?? LOADING,
builder: (c, data) {
if (data.data == LOADING) {
return Container(
width: MediaQuery.of(context).size.width,
height: mq.size.height - 140 - 96 - 50 - keyHeight,
child: loadingItem(),
);
}
if (data.data == FAIL) {
return errorItem(MediaQuery.of(context).size.width,
mq.size.height - 140 - 96 - 50 - keyHeight, () {
_levelModel.refreshView(true);
});
}
if (data.data == EMPTY) {
return emptyItem(MediaQuery.of(context).size.width,
mq.size.height - 140 - 96 - 50 - keyHeight);
}
return mechanismList(mq, keyHeight);
},
),
bottomMessage() bottomMessage()
], ],
); );
...@@ -147,13 +175,8 @@ class MechanismBox implements IBottomPicker { ...@@ -147,13 +175,8 @@ class MechanismBox implements IBottomPicker {
padding: EdgeInsets.only(left: 15, right: 15), padding: EdgeInsets.only(left: 15, right: 15),
child: baseRefreshView(refreshController, () {}, null, null, child: baseRefreshView(refreshController, () {}, null, null,
customScrollView: CustomScrollView( customScrollView: CustomScrollView(
// physics: NeverScrollableScrollPhysics(),
physics: ClampingScrollPhysics(), physics: ClampingScrollPhysics(),
// shrinkWrap: true,
slivers: <Widget>[ slivers: <Widget>[
// SliverOverlapInjector(
// handle: NestedScrollView.sliverOverlapAbsorberHandleFor(context),
// ),
StreamBuilder<List<Cards>>( StreamBuilder<List<Cards>>(
stream: _levelModel.cardsLive.stream, stream: _levelModel.cardsLive.stream,
initialData: _levelModel.cardsLive.data ?? [], initialData: _levelModel.cardsLive.data ?? [],
...@@ -173,9 +196,8 @@ class MechanismBox implements IBottomPicker { ...@@ -173,9 +196,8 @@ class MechanismBox implements IBottomPicker {
); );
} }
if (_levelModel.data[index].cardType == 'hospital') { if (_levelModel.data[index].cardType == 'hospital') {
Hospital hospital = return HospitalItem(
_levelModel.data[index].hospital; _levelModel.data[index].hospital);
return HospitalItem(hospital);
} else { } else {
return Container(); return Container();
} }
...@@ -194,7 +216,9 @@ class MechanismBox implements IBottomPicker { ...@@ -194,7 +216,9 @@ class MechanismBox implements IBottomPicker {
// 机构卡片 // 机构卡片
Widget HospitalItem(Hospital hospital) { Widget HospitalItem(Hospital hospital) {
return GestureDetector( return GestureDetector(
behavior: HitTestBehavior.opaque,
onTap: () { onTap: () {
print(hospital.toJson());
if (doctor_ids.indexOf(hospital.hosiptalId) != -1) { if (doctor_ids.indexOf(hospital.hosiptalId) != -1) {
doctor_ids.remove(hospital.hosiptalId); doctor_ids.remove(hospital.hosiptalId);
} else { } else {
...@@ -204,7 +228,10 @@ class MechanismBox implements IBottomPicker { ...@@ -204,7 +228,10 @@ class MechanismBox implements IBottomPicker {
_levelModel.cardsLive.notifyView(_levelModel.cardsLive.data); _levelModel.cardsLive.notifyView(_levelModel.cardsLive.data);
}, },
child: Container( child: Container(
height: 94.5, height: 91.5,
decoration: BoxDecoration(
border: Border(
bottom: BorderSide(width: 1, color: Color(0xffE5E5E5)))),
child: Stack( child: Stack(
children: <Widget>[ children: <Widget>[
Positioned( Positioned(
...@@ -224,22 +251,18 @@ class MechanismBox implements IBottomPicker { ...@@ -224,22 +251,18 @@ class MechanismBox implements IBottomPicker {
width: 45, width: 45,
height: 45, height: 45,
child: ClipOval( child: ClipOval(
child: CachedNetworkImage( child: CachedNetworkImage(imageUrl: hospital.portrait),
// imageUrl: cards.hospital.portrait,
imageUrl: hospital.portrait),
), ),
), ),
), ),
Positioned( Positioned(
left: 89, left: 89,
top: 17.5, top: 15,
// child: baseText(cards.hospital.name, 15, Color(0xff333333),
// bold: true),
child: child:
baseText(hospital.name, 15, Color(0xff333333), bold: true), baseText(hospital.name, 15, Color(0xff333333), bold: true),
), ),
Positioned( Positioned(
top: 42.5, top: 38,
right: 0, right: 0,
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.end,
...@@ -254,8 +277,10 @@ class MechanismBox implements IBottomPicker { ...@@ -254,8 +277,10 @@ class MechanismBox implements IBottomPicker {
Positioned( Positioned(
bottom: 21, bottom: 21,
left: 89, left: 89,
// child: baseText(cards.hospital.address, 12, Color(0xff666666)), child: Container(
child: baseText(hospital.address, 12, Color(0xff666666)), width: 230,
child: baseText(hospital.address, 12, Color(0xff666666)),
),
), ),
Positioned( Positioned(
left: 89, left: 89,
...@@ -353,8 +378,13 @@ class MechanismBox implements IBottomPicker { ...@@ -353,8 +378,13 @@ class MechanismBox implements IBottomPicker {
if (doctor_ids.length > 3 || doctor_ids.length < 1) { if (doctor_ids.length > 3 || doctor_ids.length < 1) {
NativeToast.showNativeToast('请选择1-3个机构咨询'); NativeToast.showNativeToast('请选择1-3个机构咨询');
} else { } else {
if (txt != '') { if (txt.isNotEmpty) {
_model.sendMessage(doctor_ids, txt, plan_id, (i) { print(doctor_ids.join(','));
_model.sendMessage(
doctor_ids.join(','), txt, plan_id, (i) {
print(doctor_ids);
print(txt);
print(plan_id);
if (i == 0) { if (i == 0) {
dismissCall(); dismissCall();
textController.text = ''; textController.text = '';
......
...@@ -42,12 +42,13 @@ class MechanismModel extends BaseModel { ...@@ -42,12 +42,13 @@ class MechanismModel extends BaseModel {
}); });
} }
sendMessage(List<int> doctor_ids, String question, int plan_id, sendMessage(String doctor_ids, String question, int plan_id,
Function(int state) func) { Function(int state) func) {
ClueApiImpl.getInstance() ClueApiImpl.getInstance()
.sendMessage( .sendMessage(
DioUtil.getInstance().getDio(), doctor_ids, question, plan_id) DioUtil.getInstance().getDio(), doctor_ids, question, plan_id)
.listen((event) { .listen((event) {
print(event.toJson());
if (event.error == 0) { if (event.error == 0) {
func(0); func(0);
messageLive.notifyView(event.data.success); messageLive.notifyView(event.data.success);
......
...@@ -11,7 +11,6 @@ import 'package:gm_flutter/ClueModel/server/entity/LevelOneFeedList.dart'; ...@@ -11,7 +11,6 @@ import 'package:gm_flutter/ClueModel/server/entity/LevelOneFeedList.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/PlanCompareDetail.dart'; import 'package:gm_flutter/ClueModel/server/entity/PlanCompareDetail.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanConsultBean.dart'; import 'package:gm_flutter/ClueModel/server/entity/PlanConsultBean.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanOverViewBean.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlansCompareFeed.dart'; import 'package:gm_flutter/ClueModel/server/entity/PlansCompareFeed.dart';
import 'package:gm_flutter/ClueModel/server/entity/ProjectDetailsItem.dart'; import 'package:gm_flutter/ClueModel/server/entity/ProjectDetailsItem.dart';
import 'package:gm_flutter/ClueModel/server/entity/PlanBean.dart'; import 'package:gm_flutter/ClueModel/server/entity/PlanBean.dart';
......
...@@ -160,7 +160,7 @@ class ClueApiImpl { ...@@ -160,7 +160,7 @@ class ClueApiImpl {
} }
Stream<PlanConsultBean> sendMessage( Stream<PlanConsultBean> sendMessage(
Dio _dio, List<int> doctor_ids, String question, int plan_id) { Dio _dio, String doctor_ids, String question, int plan_id) {
return Stream.fromFuture(post(_dio, 'api/janus/plans/plan_consult', data: { return Stream.fromFuture(post(_dio, 'api/janus/plans/plan_consult', data: {
'doctor_ids': doctor_ids, 'doctor_ids': doctor_ids,
'question': question, 'question': question,
......
...@@ -217,7 +217,7 @@ class Hospital { ...@@ -217,7 +217,7 @@ class Hospital {
Hospital.fromJson(Map<String, dynamic> json) { Hospital.fromJson(Map<String, dynamic> json) {
portrait = json['portrait']; portrait = json['portrait'];
hosiptalId = json['hosiptal_id']; hosiptalId = json['hospital_id'];
name = json['name']; name = json['name'];
minPrice = json['min_price']; minPrice = json['min_price'];
maxPrice = json['max_price']; maxPrice = json['max_price'];
...@@ -230,7 +230,7 @@ class Hospital { ...@@ -230,7 +230,7 @@ class Hospital {
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = new Map<String, dynamic>();
data['portrait'] = this.portrait; data['portrait'] = this.portrait;
data['hosiptal_id'] = this.hosiptalId; data['hospital_id'] = this.hosiptalId;
data['name'] = this.name; data['name'] = this.name;
data['min_price'] = this.minPrice; data['min_price'] = this.minPrice;
data['max_price'] = this.maxPrice; data['max_price'] = this.maxPrice;
......
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