Commit 0338f017 by 罗翻

增加备件列表,物流信息等页面

parent 3a16a783
Showing with 1668 additions and 106 deletions
......@@ -2,13 +2,13 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.dayu.bigfish">
//网络权限
<!--网络权限-->
<uses-permission android:name="android.permission.INTERNET" />
//检测联网方式,区分用户设备使用的是2G、3G或是WiFi
<!--//检测联网方式,区分用户设备使用的是2G、3G或是WiFi-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
//获取用户设备的mac地址,在平板设备上,无法通过imei标示设备,我们会将mac地址作为用户的唯一标识
<!--//获取用户设备的mac地址,在平板设备上,无法通过imei标示设备,我们会将mac地址作为用户的唯一标识-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
//获取用户设备的IMEI,通过IMEI和mac来唯一的标识用户
<!--//获取用户设备的IMEI,通过IMEI和mac来唯一的标识用户-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
......@@ -190,6 +190,12 @@
<activity
android:name=".ui.KaAddressActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.ReturnPartActivity"
android:screenOrientation="portrait" />
<activity
android:name=".ui.LogisticsInfoActivity"
android:screenOrientation="portrait" />
<service android:name=".api.DownloadService" />
......
......@@ -139,12 +139,53 @@ public class Constants {
/**
* 获取厂商收货地址.
*/
public final static String KA_ADDRESS = " /api-message/" + "hXMessage/count/hxAccount/{hxAccount}";
public final static String KA_ADDRESS = "/api-message/" + "hXMessage/count/hxAccount/{hxAccount}";
/**
* 申请备件.
*/
public final static String APPLY_ONE_PART = "/api-ka-order/" + "kaOrderSpareParts/saveSpApplyParts";
/**
* 取消申请备件.
*/
public final static String CANCLE_APPLY_PART = "/api-ka-order/" + "kaOrderSpareParts/spCancelApplyParts";
/**
* sp主动寄回备件.
*/
public final static String RETURN_PART_SELF = "/api-ka-order/" + "kaOrderSpareParts/spExpressBack";
/**
* sp按ka要求寄回备件.
*/
public final static String RETURN_PART_BY_KA = "/api-ka-order/" + "kaOrderSpareParts/spExpressBackByka";
/**
* 收到备件.
*/
public final static String RECEIVE_PART = "/api-ka-order/" + "kaOrderSpareParts/spReceivedParts";
/**
* 获取备件列表.
*/
public final static String QUERY_PART_LIST = "/api-ka-order/" + "kaOrderSpareParts/queryOrderPartList";
/**
* 拒绝申请备件.
*/
public final static String REFUSE_ONE_PART = "/api-ka-order/" + "kaOrderSpareParts/refuse";
/**
* 查询物流信息.
*/
public final static String QUERY_LOGISTICS_INFO = "/api-base/" + "logisticsTraceInfo/queryLogisticsTraceInfo";
/***********************其他配置**********************************/
public final static int PAGESIZE = 10;
public final static String BUNDLE = "bundle";
public final static String ID = "id";
//订单详情
public final static String ORDER_DETAIL = "order_detail";
//数据返回失败标识
......@@ -185,19 +226,41 @@ public class Constants {
public final static String ENGINEERINFO = "engineer_info";
public final static String TYPE = "type";
public final static String DESCRIBE ="describe";
/**
* 意见反馈.
*/
public final static String FEED_BACK = "feed_back";
public final static int FEED_BACK = 0;
/**
* 申请备件.
* 主动申请备件.
*/
public final static String APPLY_PART = "apply_part";
public final static int APPLY_PART = 1;
/**
* 拒绝申请.
*/
public final static String REFUSE_PART = "refuse_part";
public final static int REFUSE_PART = 2;
/**
* (备件)申请中
*/
public final static int APPLY = 1;
/**
* (备件)已拒绝
*/
public final static int REFUSE = 2;
/**
* (备件)运输中
*/
public final static int TRANSPORTATION = 3;
/**
* (备件)已收货
*/
public final static int RECEIVED = 4;
/**
* (备件)已取消
*/
public final static int CANCEL = 5;
public static final String PART_ID = "part_id";
}
......@@ -10,9 +10,11 @@ import com.dayu.bigfish.bean.AlipayInfo;
import com.dayu.bigfish.bean.EngineerInfo;
import com.dayu.bigfish.bean.ErrorOrder;
import com.dayu.bigfish.bean.KaAddress;
import com.dayu.bigfish.bean.LogsticsInfo;
import com.dayu.bigfish.bean.NewMessage;
import com.dayu.bigfish.bean.Order;
import com.dayu.bigfish.bean.OrderDetail;
import com.dayu.bigfish.bean.OrderPart;
import com.dayu.bigfish.bean.OrderRecord;
import com.dayu.bigfish.bean.ServerInstruction;
import com.dayu.bigfish.bean.Tab;
......@@ -374,6 +376,89 @@ public interface APIService {
@GET(Constants.KA_ADDRESS)
Observable<BaseResponse<KaAddress>> getKaAddress(@Path("companyId") int companyId);
/**
* 申请备件.
*
* @param spOrderId
* @param spComment
* @param createBy
* @return
*/
@POST(Constants.APPLY_ONE_PART)
Observable<BaseResponse<Boolean>> applyPart(@Query("spOrderId") long spOrderId,
@Query("spComment") String spComment,
@Query("createBy") String createBy,
@Query("accountId") long accountId);
/**
* 取消申请备件.
*
* @param partsId
* @param modifyBy
* @return
*/
@PUT(Constants.CANCLE_APPLY_PART)
Observable<BaseResponse<Boolean>> cancleApply(@Query("partsId") int partsId,
@Query("modifyBy") String modifyBy);
/**
* sp主动寄回备件.
*
* @param body
* @return
*/
@POST(Constants.RETURN_PART_SELF)
Observable<BaseResponse<Boolean>> returnPartSelf(@Body RequestBody body);
/**
* sp按ka要求寄回备件.
*
* @param body
* @return
*/
@POST(Constants.RETURN_PART_BY_KA)
Observable<BaseResponse<Boolean>> returnPartByKA(@Body RequestBody body);
/**
* 收到备件.
*
* @param partsId
* @param modifyBy
* @return
*/
@POST(Constants.RECEIVE_PART)
Observable<BaseResponse<Boolean>> receivePart(@Query("partsId") String partsId,
@Query("modifyBy") String modifyBy);
/**
* 拒绝申请备件.
*
* @param kaOrderSparePartsId
* @param reason
* @return
*/
@POST(Constants.REFUSE_ONE_PART)
Observable<BaseResponse<Boolean>> refusePart(@Query("kaOrderSparePartsId") String kaOrderSparePartsId,
@Query("reason") String reason);
/**
* 获取备件列表.
*
* @param spOrderId
* @param sources
* @return
*/
@GET(Constants.QUERY_PART_LIST)
Observable<BaseResponse<List<OrderPart>>> queryPart(@Query("spOrderId") long spOrderId, @Query("sources") int sources);
/**
* 查询物流信息.
*
* @return
*/
@GET(Constants.QUERY_LOGISTICS_INFO)
Observable<BaseResponse<LogsticsInfo>> queryLogistics(@Query("com") String com, @Query("num") String num);
@Streaming
@GET
Observable<ResponseBody> download(@Url String url);
......
......@@ -73,6 +73,11 @@ public abstract class BaseActivity<P extends BasePresenter, B extends ViewDataBi
mActivity.finish();
}
public void dumpBack(int requestCode ,Intent intent) {
mActivity.setResult(requestCode,intent);
mActivity.finish();
}
public void startActivity(Class cls) {
mActivity.startActivity(new Intent(mActivity, cls));
}
......@@ -89,6 +94,14 @@ public abstract class BaseActivity<P extends BasePresenter, B extends ViewDataBi
mActivity.startActivity(intent);
}
public void startActivityForReult(Class<?> clz, Bundle bundle, int requestCode) {
Intent intent = new Intent(mActivity, clz);
if (bundle != null) {
intent.putExtra(Constants.BUNDLE, bundle);
}
mActivity.startActivityForResult(intent, requestCode);
}
public void startActivityForReult(Class<?> clz, int requestCode) {
mActivity.startActivityForResult(new Intent(mActivity, clz), requestCode);
}
......
......@@ -50,6 +50,11 @@ public abstract class BaseFragment<P extends BasePresenter, B extends ViewDataBi
mActivity.finish();
}
public void dumpBack(int requestCode ,Intent intent) {
mActivity.setResult(requestCode,intent);
mActivity.finish();
}
public void showToast(int resId) {
ToastUtils.showShortToast(resId);
}
......@@ -90,6 +95,14 @@ public abstract class BaseFragment<P extends BasePresenter, B extends ViewDataBi
mActivity.startActivityForResult(new Intent(mActivity, clz), requestCode);
}
public void startActivityForReult(Class<?> clz, Bundle bundle, int requestCode) {
Intent intent = new Intent(mActivity, clz);
if (bundle != null) {
intent.putExtra(Constants.BUNDLE, bundle);
}
mActivity.startActivityForResult(intent, requestCode);
}
public void startActvityAndFinish(Class<?> clz) {
mActivity.startActivity(new Intent(mActivity, clz));
mActivity.finish();
......@@ -105,7 +118,7 @@ public abstract class BaseFragment<P extends BasePresenter, B extends ViewDataBi
}
public Bundle getBundle() {
return mActivity.getIntent().getBundleExtra(Constants.BUNDLE);
return getArguments();
}
public void showLoginDialog() {
......
......@@ -20,11 +20,18 @@ public abstract class BaseListPresenter<V> extends BasePresenter<V> {
public void loadMore() {
}
/**
* 如果有头布局,子类重写此方法.
*
* @return 头布局数据源.
*/
public ObservableField<Object> getHeaderDatas() {
return null;
}
/**
* 获取recy数据源.
*
* @return
* @return recy数据源.
*/
public abstract ObservableField<Object> getSourceDatas();
......
......@@ -114,7 +114,6 @@ public abstract class BasePresenter<V> {
APIException.ResponeThrowable exception = APIException.APIException(e);
int code = exception.code;
String message = exception.message;
showLoginDialog();
if (code == APIException.FORBIDDEN) {
showLoginDialog();
return exception;
......
......@@ -20,6 +20,8 @@ public interface BaseView {
void dumpBack();
void dumpBack(int requestCode, Intent intent);
void startActivity(Class cls);
void startActivityForIntent(Intent intent);
......@@ -30,6 +32,8 @@ public interface BaseView {
void startActivityForReult(Class<?> clz, int requestCode);
void startActivityForReult(Class<?> clz, Bundle bundle, int requestCode);
void startActivityAndFinish(Class<?> clz, Bundle bundle);
Bundle getBundle();
......
......@@ -33,7 +33,7 @@ public class CoreAdapter<M, B> extends RecyclerView.Adapter<BaseViewHolder> {
private int mPage = 1;
public boolean isLoadFial = false;
private OnItemClickListener mOnItemClickListener;
private BaseListPresenter mPresenter;
protected BaseListPresenter mPresenter;
protected OnChildClickListener mOnChildClickListener;
private List<M> mOldDatas = new ArrayList<>();
......@@ -63,14 +63,17 @@ public class CoreAdapter<M, B> extends RecyclerView.Adapter<BaseViewHolder> {
holder.mBind.setVariable(BR.presenter, mPresenter);
}
holder.mBind.setVariable(BR.item, item);
holder.mBind.setVariable(BR.position, position);
holder.mBind.executePendingBindings();
if (item != null && !(item instanceof Boolean)) {
onBind((B) holder.mBind, (M) item, position);
holder.mBind.getRoot().setOnClickListener(v -> {
if (mOnItemClickListener != null) {
mOnItemClickListener.OnItemClick(item, holder.mBind);
}
});
if (position >= mHeadTypeDatas.size() && position < (mHeadTypeDatas.size() + mFootTypeDatas.size() + mItemList.size())) {
if (item != null && !(item instanceof Boolean)) {
onBind((B) holder.mBind, (M) item, position);
holder.mBind.getRoot().setOnClickListener(v -> {
if (mOnItemClickListener != null) {
mOnItemClickListener.OnItemClick(item, holder.mBind);
}
});
}
}
}
......@@ -84,6 +87,11 @@ public class CoreAdapter<M, B> extends RecyclerView.Adapter<BaseViewHolder> {
}
public void addHeadViewType(@LayoutRes int i, Object data) {
for (Item a : mHeadTypeDatas) {
if (a.type == i) {
return;
}
}
mHeadTypeDatas.add(new Item(i, data));
}
......
package com.dayu.bigfish.bean;
import java.util.List;
/**
* Created by luofan on 2018/1/22.
*/
public class LogsticsInfo {
private Integer id;
private String logisticsCode;
private String shipperCode;
private String shipperName;
private int state;
private List<Logistics> logistics;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLogisticsCode() {
return logisticsCode;
}
public void setLogisticsCode(String logisticsCode) {
this.logisticsCode = logisticsCode;
}
public String getShipperCode() {
return shipperCode;
}
public void setShipperCode(String shipperCode) {
this.shipperCode = shipperCode;
}
public String getShipperName() {
return shipperName;
}
public void setShipperName(String shipperName) {
this.shipperName = shipperName;
}
public int getState() {
return state;
}
public void setState(int state) {
this.state = state;
}
public List<Logistics> getLogistics() {
return logistics;
}
public void setLogistics(List<Logistics> logistics) {
this.logistics = logistics;
}
public class Logistics {
private Integer id;
private String logisticsCode;
private String acceptStation;
private String acceptTime;
private String remark;
private String status;
private int state;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLogisticsCode() {
return logisticsCode;
}
public void setLogisticsCode(String logisticsCode) {
this.logisticsCode = logisticsCode;
}
public String getAcceptStation() {
return acceptStation;
}
public void setAcceptStation(String acceptStation) {
this.acceptStation = acceptStation;
}
public String getAcceptTime() {
return acceptTime;
}
public void setAcceptTime(String acceptTime) {
this.acceptTime = acceptTime;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
}
......@@ -7,7 +7,7 @@ import java.util.List;
* Created by luofan on 2017/11/14.
*/
public class OrderDetail implements Serializable{
public class OrderDetail implements Serializable {
private int id;
private String orderNum;
private int source;
......@@ -68,6 +68,7 @@ public class OrderDetail implements Serializable{
private String spuName;
private String spuId;
private Integer anyContacts;
private Integer kaCompanyId;
private List<accessories> accessories;
public int getId() {
......@@ -558,7 +559,15 @@ public class OrderDetail implements Serializable{
this.accessories = accessories;
}
public static class RecordBean {
public Integer getKaCompanyId() {
return kaCompanyId;
}
public void setKaCompanyId(Integer kaCompanyId) {
this.kaCompanyId = kaCompanyId;
}
public static class RecordBean implements Serializable {
/**
* id : 174
* orderId : 48
......
package com.dayu.bigfish.bean;
/**
* Created by luofan on 2018/1/20.
*/
public class OrderPart {
private Integer id;
private String partName;
/**
* 配件申请人.
*/
private String applicant;
/**
* 申请人联系方式
*/
private String applicantMobile;
/**
* 发货人.
*/
private String consignor;
/**
* 发货人联系方式.
*/
private String consignorMoblie;
private String courierServicesCompany;
/**
* 物流公司编码.
*/
private String shipperCode;
private String courierNumber;
private String spComment;
private String creatBy;
private String createTime;
private String kaRemarks;
/**
* 0默认值1旧件需要寄回2旧件不需要寄回
*/
private Integer received;
private int status;
/**
* 物流发送方 1表示ka_to_sp 2表示sp_to_ka
*/
private Integer sources;
public String getPartName() {
return partName;
}
public void setPartName(String partName) {
this.partName = partName;
}
public String getCourierNumber() {
return courierNumber;
}
public void setCourierNumber(String courierNumber) {
this.courierNumber = courierNumber;
}
public String getSpComment() {
return spComment;
}
public void setSpComment(String spComment) {
this.spComment = spComment;
}
public String getCreatBy() {
return creatBy;
}
public void setCreatBy(String creatBy) {
this.creatBy = creatBy;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
public String getKaRemarks() {
return kaRemarks;
}
public void setKaRemarks(String kaRemarks) {
this.kaRemarks = kaRemarks;
}
public Integer getReceived() {
return received;
}
public void setReceived(Integer received) {
this.received = received;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getApplicant() {
return applicant;
}
public void setApplicant(String applicant) {
this.applicant = applicant;
}
public String getCourierServicesCompany() {
return courierServicesCompany;
}
public void setCourierServicesCompany(String courierServicesCompany) {
this.courierServicesCompany = courierServicesCompany;
}
public String getShipperCode() {
return shipperCode;
}
public void setShipperCode(String shipperCode) {
this.shipperCode = shipperCode;
}
public Integer getSource() {
return sources;
}
public void setSource(Integer source) {
this.sources = source;
}
public String getApplicantMobile() {
return applicantMobile;
}
public void setApplicantMobile(String applicantMobile) {
this.applicantMobile = applicantMobile;
}
public String getConsignor() {
return consignor;
}
public void setConsignor(String consignor) {
this.consignor = consignor;
}
public String getConsignorMoblie() {
return consignorMoblie;
}
public void setConsignorMoblie(String consignorMoblie) {
this.consignorMoblie = consignorMoblie;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
}
......@@ -12,7 +12,7 @@ import com.dayu.bigfish.BR;
* on 2017/8/28.
*/
public class UserInfo extends BaseObservable{
public class UserInfo extends BaseObservable {
/**
* 工程师账户id
*/
......@@ -33,6 +33,7 @@ public class UserInfo extends BaseObservable{
private String hxAccount;
private String hxPwd;
private String token;
private String accountName;
private int status;
public String getHxAccount() {
......@@ -101,4 +102,12 @@ public class UserInfo extends BaseObservable{
this.status = status;
}
public String getAccountName() {
return accountName;
}
public void setAccountName(String accountName) {
this.accountName = accountName;
}
}
package com.dayu.bigfish.bean.event;
/**
* 刷新带服务列表
* on 2017/10/11.
*/
public class RefreshApplyPart {
private int type;
public RefreshApplyPart(int type) {
this.type = type;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
}
......@@ -17,12 +17,6 @@ public interface FeedBackContract {
public abstract void commite();
public abstract String getType();
public abstract String getTitle();
public abstract String getHint();
/**
* 提交反馈意见.
*/
......
......@@ -8,11 +8,13 @@ import com.app.annotation.apt.InstanceFactory;
import com.apt.ApiFactory;
import com.dayu.bigfish.Constants;
import com.dayu.bigfish.R;
import com.dayu.bigfish.bean.event.RefreshApplyPart;
import com.dayu.bigfish.utils.ToastUtils;
import com.dayu.bigfish.utils.UIUtils;
import com.dayu.bigfish.utils.UtilsUserAccountMatcher;
import com.dayu.bigfish.utils.managers.UserManager;
import org.greenrobot.eventbus.EventBus;
import org.json.JSONObject;
import java.util.HashMap;
......@@ -29,28 +31,32 @@ public class FeedBackPresenter extends FeedBackContract.Presenter {
private String mUserName;
private String mUserMobile;
public ObservableField<String> mComment = new ObservableField<>();
private String mType;
private String mHint;
private String mTitle;
public ObservableField<String> mTitle = new ObservableField<>();
public ObservableField<String> mHint = new ObservableField<>();
private int mType;
private int mOrderId;
private int mAccountId;
@Override
public void onAttached() {
mUserName = UserManager.getInstance().getUserName();
mUserName = UserManager.getInstance().getUser().getAccountName();
mUserMobile = UserManager.getInstance().getUserPhone();
mAccountId = Integer.parseInt(UserManager.getInstance().getUser().getAccountId());
Bundle bundle = mView.getBundle();
mType = bundle.getString(Constants.TYPE);
mType = bundle.getInt(Constants.TYPE, 0);
mOrderId = bundle.getInt(Constants.ORDER_ID, 0);
switch (mType) {
case Constants.FEED_BACK:
mHint = UIUtils.getString(R.string.tv_idea_text_hint);
mTitle = UIUtils.getString(R.string.tv_idea);
mHint.set(UIUtils.getString(R.string.tv_idea_text_hint));
mTitle.set(UIUtils.getString(R.string.tv_idea));
break;
case Constants.APPLY_PART:
mHint = UIUtils.getString(R.string.tv_apply_reson_hint);
mTitle = UIUtils.getString(R.string.tv_apply_order_title);
mHint.set(UIUtils.getString(R.string.tv_apply_reson_hint));
mTitle.set(UIUtils.getString(R.string.tv_apply_order_title));
break;
case Constants.REFUSE_PART:
mHint = UIUtils.getString(R.string.tv_refuse_hint);
mTitle = UIUtils.getString(R.string.tv_refuse_order_title);
mHint.set(UIUtils.getString(R.string.tv_refuse_hint));
mTitle.set(UIUtils.getString(R.string.tv_refuse_order_title));
break;
default:
break;
......@@ -84,21 +90,6 @@ public class FeedBackPresenter extends FeedBackContract.Presenter {
}
@Override
public String getType() {
return mType;
}
@Override
public String getTitle() {
return mTitle;
}
@Override
public String getHint() {
return mHint;
}
@Override
public void comFirmSuggist() {
HashMap<String, Object> params = new HashMap<>();
params.put("comment", mComment.get());
......@@ -119,7 +110,11 @@ public class FeedBackPresenter extends FeedBackContract.Presenter {
@Override
public void applyPart() {
ApiFactory.applyPart(mOrderId, mComment.get(), mUserName, mAccountId).subscribe(baseObserver((Consumer<Boolean>)
aBoolean -> {
mView.dumpBack(Constants.APPLY_PART, null);
EventBus.getDefault().post(new RefreshApplyPart(1));
}));
}
@Override
......
package com.dayu.bigfish.presenter.kaaddress;
import android.databinding.ObservableField;
import android.os.Bundle;
import com.app.annotation.apt.InstanceFactory;
import com.apt.ApiFactory;
import com.dayu.bigfish.Constants;
import com.dayu.bigfish.bean.KaAddress;
import io.reactivex.functions.Consumer;
......@@ -14,16 +16,19 @@ import io.reactivex.functions.Consumer;
@InstanceFactory
public class KaAddressPresenter extends KaAddressContract.Presenter {
public ObservableField<KaAddress> data = new ObservableField<>();
private int mId;
@Override
public void onAttached() {
Bundle bundle = mView.getBundle();
mId = bundle.getInt(Constants.ID, 0);
getKaAddress();
}
@Override
public void getKaAddress() {
ApiFactory.getKaAddress(1).subscribe(baseObserver((Consumer<KaAddress>)
ApiFactory.getKaAddress(mId).subscribe(baseObserver((Consumer<KaAddress>)
kaAddress -> data.set(kaAddress)));
}
}
package com.dayu.bigfish.presenter.logisticsinfo;
import com.dayu.bigfish.base.BaseListPresenter;
import com.dayu.bigfish.base.BaseView;
/**
* Created by luo on 2016/8/4.
*/
public interface LogisticsInfoContract {
interface View extends BaseView {
}
abstract class Presenter extends BaseListPresenter<View> {
/**
* 查询物流信息.
*/
public abstract void queryLogisticsInfo();
}
}
package com.dayu.bigfish.presenter.logisticsinfo;
import android.databinding.ObservableField;
import com.app.annotation.apt.InstanceFactory;
import com.apt.ApiFactory;
import com.dayu.bigfish.Constants;
import com.dayu.bigfish.bean.LogsticsInfo;
import io.reactivex.functions.Consumer;
/**
* Created by luofan on 2017/11/8.
*/
@InstanceFactory
public class LogisticsInfoPresenter extends LogisticsInfoContract.Presenter {
private ObservableField<Object> datas = new ObservableField<>();
private ObservableField<Object> headData = new ObservableField<>();
private String mLogisticsId;
@Override
public void onAttached() {
// Bundle bundle = mView.getBundle();
// mLogisticsId = bundle.getString(Constants.PART_ID);
mView.showDialog();
queryLogisticsInfo();
}
@Override
public ObservableField<Object> getSourceDatas() {
return datas;
}
@Override
public ObservableField<Object> getHeaderDatas() {
return headData;
}
@Override
public void refresh() {
super.refresh();
queryLogisticsInfo();
}
@Override
public void queryLogisticsInfo() {
ApiFactory.queryLogistics("shunfeng", "767281300879").subscribe(baseObserver((Consumer<LogsticsInfo>)
logsticsInfo -> {
datas.set(logsticsInfo.getLogistics());
headData.set(logsticsInfo);
},
responeThrowable -> datas.set(Constants.FAILED)));
}
}
......@@ -25,5 +25,7 @@ public interface OrderDetailContract {
abstract class Presenter extends BasePresenter<View> {
public abstract void getOrderDetailInfo(int orderId);
public abstract int getOrderId();
}
}
......@@ -14,12 +14,14 @@ import io.reactivex.functions.Consumer;
*/
@InstanceFactory
public class OrderDetailPresenter extends OrderDetailContract.Presenter {
private int mOrderId;
@Override
public void onAttached() {
Bundle bundle = mView.getBundle();
int orderId = bundle.getInt(Constants.ORDER_ID, 0);
mOrderId = bundle.getInt(Constants.ORDER_ID, 0);
mView.showDialog();
getOrderDetailInfo(orderId);
getOrderDetailInfo(mOrderId);
}
......@@ -29,4 +31,9 @@ public class OrderDetailPresenter extends OrderDetailContract.Presenter {
detail -> mView.init(detail), responeThrowable -> mView.init(null)));
}
@Override
public int getOrderId() {
return mOrderId;
}
}
......@@ -4,6 +4,8 @@ package com.dayu.bigfish.presenter.orderpart;
import com.dayu.bigfish.base.BaseListPresenter;
import com.dayu.bigfish.base.BaseView;
import io.reactivex.Observable;
/**
* Created by luo on 2016/8/4.
*/
......@@ -13,6 +15,31 @@ public interface OrderPartContract {
}
abstract class Presenter extends BaseListPresenter<View> {
public abstract void queryPartList();
/**
* 跳转到申请备件或寄回备件页面.
*/
public abstract void dumpToapplyPart();
/**
* 跳转到寄回备件页面.
*/
public abstract void dumpToReturnPart(int type,Integer partId);
/**
* 查询物流信息.
*/
public abstract void queryLogistics();
/**
* 取消申请.
*/
public abstract Observable<Boolean> cancleApply(int partId);
/**
* 收到备件.
*/
public abstract void receivePart();
}
}
package com.dayu.bigfish.presenter.orderpart;
import android.databinding.ObservableField;
import android.os.Bundle;
import com.app.annotation.apt.InstanceFactory;
import com.apt.ApiFactory;
import com.dayu.bigfish.Constants;
import com.dayu.bigfish.R;
import com.dayu.bigfish.bean.OrderDetail;
import com.dayu.bigfish.bean.OrderPart;
import com.dayu.bigfish.ui.FeedBackActivity;
import com.dayu.bigfish.ui.LogisticsInfoActivity;
import com.dayu.bigfish.ui.ReturnPartActivity;
import com.dayu.bigfish.utils.UIUtils;
import com.dayu.bigfish.utils.managers.UserManager;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.functions.Consumer;
/**
* Created by luofan on 2017/11/8.
......@@ -10,14 +26,29 @@ import com.app.annotation.apt.InstanceFactory;
@InstanceFactory
public class OrderPartPresenter extends OrderPartContract.Presenter {
public ObservableField datas = new ObservableField();
public ObservableField<String> title = new ObservableField<>(UIUtils.getString(R.string.apply_one_order_part));
private int mOrderId;
private String mUserName;
private Integer mCompanyId;
private int mType;
@Override
public void onAttached() {
Bundle bundle = mView.getBundle();
OrderDetail detail = (OrderDetail) bundle.getSerializable(Constants.ORDER_DETAIL);
mType = bundle.getInt(Constants.TYPE);
mOrderId = detail.getId();
mCompanyId = detail.getKaCompanyId();
mUserName = UserManager.getInstance().getUser().getAccountName();
if (mType == 2) {
title.set(UIUtils.getString(R.string.return_one_order_part));
}
}
@Override
public void refresh() {
queryPartList();
}
......@@ -25,4 +56,49 @@ public class OrderPartPresenter extends OrderPartContract.Presenter {
public ObservableField<Object> getSourceDatas() {
return datas;
}
@Override
public void queryPartList() {
ApiFactory.queryPart(mOrderId, mType).subscribe(baseObserver((Consumer<List<OrderPart>>) orderPart -> {
datas.set(orderPart);
}, responeThrowable -> datas.set(Constants.FAILED)));
}
@Override
public void dumpToapplyPart() {
if (mType == 1) {
Bundle bundle = new Bundle();
bundle.putInt(Constants.ORDER_ID, mOrderId);
bundle.putInt(Constants.TYPE, Constants.APPLY_PART);
mView.startActivity(FeedBackActivity.class, bundle);
} else if (mType == 2) {
dumpToReturnPart(0, null);
}
}
@Override
public void dumpToReturnPart(int type, Integer partId) {
Bundle bundle = new Bundle();
bundle.putInt(Constants.ORDER_ID, mOrderId);
bundle.putInt(Constants.PART_ID, partId);
if (mCompanyId != null) {
bundle.putInt(Constants.ID, mCompanyId);
}
bundle.putInt(Constants.TYPE, type);
mView.startActivity(ReturnPartActivity.class, bundle);
}
@Override
public void queryLogistics() {
mView.startActivity(LogisticsInfoActivity.class);
}
public Observable<Boolean> cancleApply(int partId) {
return ApiFactory.cancleApply(partId, mUserName);
}
@Override
public void receivePart() {
}
}
package com.dayu.bigfish.presenter.returnpart;
import com.dayu.bigfish.base.BasePresenter;
import com.dayu.bigfish.base.BaseView;
/**
* Created by luo on 2016/8/4.
*/
public interface ReturnPartContract {
interface View extends BaseView {
}
abstract class Presenter extends BasePresenter<View> {
/**
* 寄回备件.
*/
public abstract void retrunPart();
/**
* 跳转到厂商收货信息.
*/
public abstract void dumpToKaInfo();
}
}
package com.dayu.bigfish.presenter.returnpart;
import android.databinding.ObservableField;
import android.os.Bundle;
import com.app.annotation.apt.InstanceFactory;
import com.apt.ApiFactory;
import com.dayu.bigfish.Constants;
import com.dayu.bigfish.bean.UserInfo;
import com.dayu.bigfish.ui.KaAddressActivity;
import com.dayu.bigfish.utils.managers.UserManager;
import org.json.JSONException;
import org.json.JSONObject;
import io.reactivex.functions.Consumer;
import okhttp3.MediaType;
import okhttp3.RequestBody;
/**
* Created by luofan on 2017/11/8.
*/
@InstanceFactory
public class ReturnPartPresenter extends ReturnPartContract.Presenter {
public ObservableField<String> kaComent = new ObservableField<>();
public ObservableField<String> spComent = new ObservableField<>();
public ObservableField<String> courierCompany = new ObservableField<>();
public ObservableField<String> courierNum = new ObservableField<>();
private int mKaId;
private int mOrderId;
private int mType;
private String mKaComent;
private UserInfo mInfo;
private int mPartId;
@Override
public void onAttached() {
Bundle bundle = mView.getBundle();
mKaId = bundle.getInt(Constants.ID);
mOrderId = bundle.getInt(Constants.ORDER_ID);
mType = bundle.getInt(Constants.TYPE);
mKaComent = bundle.getString(Constants.DESCRIBE);
mPartId = bundle.getInt(Constants.PART_ID);
kaComent.set(mKaComent);
mInfo = UserManager.getInstance().getUser();
}
@Override
public void retrunPart() {
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("courierNumber", courierNum.get());
jsonObject.put("spComment", spComent.get());
jsonObject.put("courierServicesCompany", courierCompany.get());
jsonObject.put("shipperCode", "");
jsonObject.put("kaRemarks", kaComent);
jsonObject.put("operater", mInfo.getAccountName());
jsonObject.put("operaterId", mInfo.getAccountId());
jsonObject.put("partsId", mPartId);
jsonObject.put("spOrderId", mOrderId);
} catch (JSONException e) {
e.printStackTrace();
}
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), jsonObject.toString());
if (mType == 1) {
ApiFactory.returnPartByKA(requestBody).subscribe(baseObserver((Consumer<Boolean>) aBoolean -> {
}));
} else if (mType == 0) {
ApiFactory.returnPartSelf(requestBody).subscribe(baseObserver((Consumer<Boolean>) aBoolean -> {
}));
}
}
@Override
public void dumpToKaInfo() {
Bundle bundle = new Bundle();
bundle.putInt(Constants.ID, mKaId);
mView.startActivity(KaAddressActivity.class, bundle);
}
}
......@@ -140,7 +140,7 @@ public class SettingPresenter extends SettingContract.Presenter {
@Override
public void dumpToFeed() {
Bundle bundle = new Bundle();
bundle.putString(Constants.TYPE, Constants.FEED_BACK);
bundle.putInt(Constants.TYPE, Constants.FEED_BACK);
mView.startActivity(FeedBackActivity.class, bundle);
MobclickAgent.onEvent(MyApplication.getContext(), "feed_back");
}
......
package com.dayu.bigfish.ui;
import com.dayu.bigfish.R;
import com.dayu.bigfish.base.BaseActivity;
import com.dayu.bigfish.databinding.ActivityLogisticsInfoBinding;
import com.dayu.bigfish.presenter.logisticsinfo.LogisticsInfoContract;
import com.dayu.bigfish.presenter.logisticsinfo.LogisticsInfoPresenter;
import com.dayu.bigfish.ui.adapter.LogisticsAdapter;
/**
* Created by luofan on 2018/1/23.
*/
public class LogisticsInfoActivity extends BaseActivity<LogisticsInfoPresenter, ActivityLogisticsInfoBinding> implements LogisticsInfoContract.View {
@Override
public int getLayoutId() {
return R.layout.activity_logistics_info;
}
@Override
public void initView() {
LogisticsAdapter adapter = new LogisticsAdapter(false);
mBind.lvPart.setAdapter(adapter);
// mPresenter.headData.addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
// @Override
// public void onPropertyChanged(Observable observable, int i) {
// mBind.lvPart.setHeadData(mPresenter.headData.get());
// }
// });
}
}
......@@ -245,19 +245,6 @@ public class MainActivity extends BaseActivity<MainPresenter, ActivityMainBindin
overridePendingTransition(R.anim.slide_bottom_in, 0);
}
@Override
public void onAttachFragment(Fragment fragment) {
super.onAttachFragment(fragment);
if (fragment instanceof HomeFirstTabFragment) {
firstFragment = (HomeFirstTabFragment) fragment;
} else if (fragment instanceof HomeOrderFragment) {
secondFragment = (HomeOrderFragment) fragment;
} else if (fragment instanceof HomeMessageFragment) {
thirdFragment = (HomeMessageFragment) fragment;
} else if (fragment instanceof HomePersonFragment) {
fourFragment = (HomePersonFragment) fragment;
}
}
@Override
protected void onNewIntent(Intent intent) {
......
......@@ -46,7 +46,7 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailPresenter, Act
mFragments = new ArrayList<>();
orderDatailsFragment = OrderDetaillsFragment.newInstance(detail);
orderDatailsServeFragment = OrderDetailsServeFragment.newInstance(detail);
mOrderPartFragment = OrderPartFragment.newInstance();
mOrderPartFragment = OrderPartFragment.newInstance(detail);
mFragments.add(orderDatailsFragment);
mFragments.add(orderDatailsServeFragment);
mFragments.add(mOrderPartFragment);
......
package com.dayu.bigfish.ui;
import com.dayu.bigfish.R;
import com.dayu.bigfish.base.BaseActivity;
import com.dayu.bigfish.databinding.ActivityReturnPartBinding;
import com.dayu.bigfish.presenter.returnpart.ReturnPartContract;
import com.dayu.bigfish.presenter.returnpart.ReturnPartPresenter;
/**
* Created by luofan on 2018/1/20.
*/
public class ReturnPartActivity extends BaseActivity<ReturnPartPresenter,ActivityReturnPartBinding> implements ReturnPartContract.View{
@Override
public int getLayoutId() {
return R.layout.activity_return_part;
}
@Override
public void initView() {
}
}
package com.dayu.bigfish.ui.adapter;
import com.dayu.bigfish.R;
import com.dayu.bigfish.base.CoreAdapter;
import com.dayu.bigfish.bean.LogsticsInfo;
import com.dayu.bigfish.databinding.ItemLogisticsLayoutBinding;
import com.dayu.bigfish.utils.UIUtils;
/**
* Created by luofan on 2018/1/23.
*/
public class LogisticsAdapter extends CoreAdapter<LogsticsInfo.Logistics, ItemLogisticsLayoutBinding> {
public LogisticsAdapter(boolean needFoot) {
super(needFoot);
}
@Override
protected void onBind(ItemLogisticsLayoutBinding holder, LogsticsInfo.Logistics item, int position) {
super.onBind(holder, item, position);
if (position == 1) {
holder.ivCircle.setImageResource(R.mipmap.icon_circle_blue);
holder.logisticsAddress.setTextColor(UIUtils.getColor(R.color.default_text_color));
holder.tvTime.setTextColor(UIUtils.getColor(R.color.default_text_color));
} else {
holder.ivCircle.setImageResource(R.mipmap.icon_circle_gray);
holder.logisticsAddress.setTextColor(UIUtils.getColor(R.color.text_color));
holder.tvTime.setTextColor(UIUtils.getColor(R.color.text_color));
}
}
}
package com.dayu.bigfish.ui.adapter;
import android.graphics.Color;
import android.view.View;
import com.dayu.bigfish.Constants;
import com.dayu.bigfish.R;
import com.dayu.bigfish.base.CoreAdapter;
import com.dayu.bigfish.bean.OrderPart;
import com.dayu.bigfish.databinding.ItemApplyPartLayoutBinding;
import com.dayu.bigfish.presenter.orderpart.OrderPartPresenter;
import com.dayu.bigfish.ui.views.CustomDialog;
import com.dayu.bigfish.utils.UIUtils;
import io.reactivex.functions.Consumer;
/**
* Created by luofan on 2018/1/22.
*/
public class OrderPartAdapter extends CoreAdapter<OrderPart, ItemApplyPartLayoutBinding> {
private OrderPartPresenter presenter;
public OrderPartAdapter(boolean needFoot) {
super(needFoot);
}
@Override
protected void onBind(ItemApplyPartLayoutBinding holder, OrderPart item, int position) {
presenter = (OrderPartPresenter) mPresenter;
switch (item.getStatus()) {
case Constants.APPLY:
if (item.getSource() != null && item.getSource() == 1) {
holder.tvPartState.setText(UIUtils.getString(R.string.part_apply));
holder.logisticsInfo.setText(UIUtils.getString(R.string.cancle_apply));
holder.logisticsInfo.setOnClickListener(v ->
presenter.queryLogistics()
// showCancleDialog(item.getId(), holder)
);
holder.logisticsInfo.setVisibility(View.VISIBLE);
holder.receivePart.setVisibility(View.GONE);
} else if (item.getSource() != null && item.getSource() == 2) {
holder.tvPartState.setText(UIUtils.getString(R.string.return_order_part));
holder.logisticsInfo.setText(UIUtils.getString(R.string.cannot_return));
holder.logisticsInfo.setOnClickListener(v -> presenter.dumpToReturnPart(1,item.getId()));
holder.receivePart.setText(UIUtils.getString(R.string.return_order_part));
holder.receivePart.setOnClickListener(v -> presenter.dumpToapplyPart());
holder.logisticsInfo.setVisibility(View.VISIBLE);
holder.receivePart.setVisibility(View.VISIBLE);
}
break;
case Constants.REFUSE:
holder.tvPartState.setText(UIUtils.getString(R.string.part_refuse));
holder.logisticsInfo.setVisibility(View.GONE);
holder.receivePart.setVisibility(View.GONE);
break;
case Constants.TRANSPORTATION:
holder.tvPartState.setText(UIUtils.getString(R.string.part_transfortion));
holder.logisticsInfo.setText(UIUtils.getString(R.string.logistics_info));
holder.receivePart.setText(UIUtils.getString(R.string.receive_part));
holder.logisticsInfo.setVisibility(View.VISIBLE);
holder.receivePart.setVisibility(View.VISIBLE);
holder.logisticsInfo.setOnClickListener(v -> presenter.queryLogistics());
holder.receivePart.setOnClickListener(v -> presenter.receivePart());
break;
case Constants.RECEIVED:
holder.tvPartState.setText(UIUtils.getString(R.string.part_received));
holder.logisticsInfo.setText(UIUtils.getString(R.string.logistics_info));
holder.logisticsInfo.setVisibility(View.VISIBLE);
holder.logisticsInfo.setOnClickListener(v -> presenter.queryLogistics());
break;
case Constants.CANCEL:
holder.tvPartState.setText(UIUtils.getString(R.string.cancle_order));
holder.logisticsInfo.setVisibility(View.GONE);
holder.receivePart.setVisibility(View.GONE);
holder.lineTwo.setVisibility(View.GONE);
break;
default:
break;
}
holder.tvApplyInstruction.setText(item.getSpComment());
holder.tvApplyName.setText(item.getApplicant());
holder.tvApplyMobile.setText(item.getApplicantMobile());
holder.tvApplyTime.setText(item.getCreateTime());
if (Constants.APPLY == item.getStatus() || Constants.REFUSE == item.getStatus()) {
holder.llSendInfo.setVisibility(View.GONE);
holder.lineOne.setVisibility(View.GONE);
} else {
holder.llSendInfo.setVisibility(View.VISIBLE);
holder.lineOne.setVisibility(View.VISIBLE);
}
holder.kaInstruction.setText(item.getKaRemarks());
holder.sender.setText(item.getConsignor());
holder.senderMobile.setText(item.getCourierNumber());
if (item.getReceived() != null && item.getReceived() == 1) {
holder.needReturn.setText(UIUtils.getString(R.string.need));
} else if (item.getReceived() != null && item.getReceived() == 2) {
holder.needReturn.setText(UIUtils.getString(R.string.not_need));
}
holder.couriesCompay.setText(item.getCourierServicesCompany());
holder.partNum.setText(item.getCourierNumber());
}
public void showCancleDialog(int id, ItemApplyPartLayoutBinding holder) {
CustomDialog mDialog = new CustomDialog(mContext, R.style.CustomDialog, UIUtils.getString(R.string.part_cancle_reason)
, (dialog, confirm) -> {
if (confirm) {
presenter.cancleApply(id).subscribe(
presenter.baseObserver((Consumer<Boolean>) aBoolean -> {
holder.tvPartState.setText(UIUtils.getString(R.string.cancle_order));
holder.logisticsInfo.setVisibility(View.GONE);
holder.receivePart.setVisibility(View.GONE);
}));
}
dialog.dismiss();
});
mDialog.setTitle(UIUtils.getString(R.string.cancle_apply))
.setPositiveButton(UIUtils.getString(R.string.comfirm))
.setPositiveButtonColor(Color.RED)
.setNegativeButton(UIUtils.getString(R.string.think_again));
mDialog.show();
}
}
package com.dayu.bigfish.ui.fragment;
import android.os.Bundle;
import com.dayu.bigfish.Constants;
import com.dayu.bigfish.R;
import com.dayu.bigfish.base.BaseFragment;
import com.dayu.bigfish.bean.OrderDetail;
import com.dayu.bigfish.bean.event.RefreshApplyPart;
import com.dayu.bigfish.databinding.FragmentOrderApplicationPartBinding;
import com.dayu.bigfish.presenter.orderpart.OrderPartContract;
import com.dayu.bigfish.presenter.orderpart.OrderPartPresenter;
import com.dayu.bigfish.ui.adapter.OrderPartAdapter;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
/**
* Created by luofan on 2018/1/18.
*/
public class ApplicationOrderPartFragment extends BaseFragment<OrderPartPresenter, FragmentOrderApplicationPartBinding>
implements OrderPartContract.View {
public static ApplicationOrderPartFragment newInstance(OrderDetail detail, int type) {
Bundle args = new Bundle();
args.putSerializable(Constants.ORDER_DETAIL, detail);
args.putInt(Constants.TYPE, type);
ApplicationOrderPartFragment fragment = new ApplicationOrderPartFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void initView() {
EventBus.getDefault().register(this);
OrderPartAdapter adapter = new OrderPartAdapter(false);
mBind.lvPart.setAdapter(adapter);
}
@Override
protected void lazyLoad() {
super.lazyLoad();
mPresenter.queryPartList();
}
@Override
public int getLayoutId() {
return R.layout.fragment_order_application_part;
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void RefreshApplyPart(RefreshApplyPart event) {
mPresenter.queryPartList();
}
}
......@@ -3,8 +3,10 @@ package com.dayu.bigfish.ui.fragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import com.dayu.bigfish.Constants;
import com.dayu.bigfish.R;
import com.dayu.bigfish.base.DataBindingFragment;
import com.dayu.bigfish.bean.OrderDetail;
import com.dayu.bigfish.databinding.FragmentOrderPartBinding;
import com.dayu.bigfish.ui.adapter.FragmentBaseAdapter;
import com.dayu.bigfish.utils.TabLayoutUtils;
......@@ -18,8 +20,9 @@ import java.util.List;
public class OrderPartFragment extends DataBindingFragment<FragmentOrderPartBinding> {
public static OrderPartFragment newInstance() {
public static OrderPartFragment newInstance(OrderDetail detail) {
Bundle args = new Bundle();
args.putSerializable(Constants.ORDER_DETAIL, detail);
OrderPartFragment fragment = new OrderPartFragment();
fragment.setArguments(args);
return fragment;
......@@ -27,12 +30,13 @@ public class OrderPartFragment extends DataBindingFragment<FragmentOrderPartBind
@Override
public void initView() {
OrderDetail detail = (OrderDetail) getArguments().getSerializable(Constants.ORDER_DETAIL);
List<String> titles = new ArrayList<>();
List<Fragment> fragments = new ArrayList<>();
titles.add(getString(R.string.application_order_part));
titles.add(getString(R.string.return_order_part));
fragments.add(ApplicationOrderPart.newInstance());
fragments.add(ApplicationOrderPart.newInstance());
fragments.add(ApplicationOrderPartFragment.newInstance(detail, 1));
fragments.add(ApplicationOrderPartFragment.newInstance(detail, 2));
FragmentBaseAdapter fragmentAdapter = FragmentBaseAdapter.newInstance(getChildFragmentManager(), fragments, titles);
mBind.vpMessage.setAdapter(fragmentAdapter);
mBind.vpMessage.setOffscreenPageLimit(2);
......
......@@ -2,31 +2,46 @@ package com.dayu.bigfish.ui.fragment;
import android.os.Bundle;
import com.dayu.bigfish.Constants;
import com.dayu.bigfish.R;
import com.dayu.bigfish.base.BaseFragment;
import com.dayu.bigfish.bean.OrderDetail;
import com.dayu.bigfish.databinding.FragmentOrderApplicationPartBinding;
import com.dayu.bigfish.presenter.orderpart.OrderPartContract;
import com.dayu.bigfish.presenter.orderpart.OrderPartPresenter;
import com.dayu.bigfish.ui.adapter.OrderPartAdapter;
/**
* Created by luofan on 2018/1/18.
*/
public class ApplicationOrderPart extends BaseFragment<OrderPartPresenter, FragmentOrderApplicationPartBinding> {
public class ReturnOrderPartFragment extends BaseFragment<OrderPartPresenter, FragmentOrderApplicationPartBinding>
implements OrderPartContract.View {
public static ApplicationOrderPart newInstance() {
public static ReturnOrderPartFragment newInstance(OrderDetail detail) {
Bundle args = new Bundle();
ApplicationOrderPart fragment = new ApplicationOrderPart();
args.putSerializable(Constants.ORDER_DETAIL,detail);
ReturnOrderPartFragment fragment = new ReturnOrderPartFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void initView() {
mBind.applyPart.setText(getString(R.string.return_one_order_part));
OrderPartAdapter adapter = new OrderPartAdapter(false);
mBind.lvPart.setAdapter(adapter);
}
@Override
protected void lazyLoad() {
super.lazyLoad();
mPresenter.queryPartList();
}
@Override
public int getLayoutId() {
return R.layout.fragment_order_application_part;
}
}
......@@ -25,6 +25,7 @@ public class CustomDialog extends Dialog implements View.OnClickListener {
private String positiveName;
private String negativeName;
private String title;
private int positiveColor;
private boolean flag;
private View line;
......@@ -61,6 +62,11 @@ public class CustomDialog extends Dialog implements View.OnClickListener {
return this;
}
public CustomDialog setPositiveButtonColor(int colorId) {
this.positiveColor = colorId;
return this;
}
public CustomDialog setNegativeButton(String name) {
this.negativeName = name;
return this;
......@@ -94,6 +100,10 @@ public class CustomDialog extends Dialog implements View.OnClickListener {
submitTxt.setText(positiveName);
}
if (positiveColor != 0) {
submitTxt.setTextColor(positiveColor);
}
if (!TextUtils.isEmpty(negativeName)) {
cancelTxt.setText(negativeName);
}
......
package com.dayu.bigfish.ui.views;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.DashPathEffect;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PathEffect;
import android.util.AttributeSet;
import android.view.View;
import com.dayu.bigfish.R;
/**
* Created by luofan on 2018/1/23.
*/
public class DottdeLineView extends View {
public Context ctx;
public DottdeLineView(Context context, AttributeSet attrs) {
super(context, attrs);
ctx=context;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setColor(getResources().getColor(R.color.cl_line));
paint.setStrokeWidth(dip2px(ctx,2));
Path path = new Path();
path.moveTo(0, 0);
path.lineTo(0, 3000);
PathEffect effects = new DashPathEffect(new float[]{8, 10, 8, 10}, 0);
paint.setPathEffect(effects);
canvas.drawPath(path, paint);
}
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
}
......@@ -110,7 +110,7 @@ public class LRecyclerView<M, B> extends FrameLayout {
swipeRefresh.setEnabled(isRefreshable);
if (needCoreAdapter) {
if (itemType != 0) {
mCoreAdapter = new CoreAdapter(isNeedFoot);
mCoreAdapter = new CoreAdapter<>(isNeedFoot);
setViewType(itemType);
recyclerview.setAdapter(mCoreAdapter);
} else {
......@@ -122,9 +122,7 @@ public class LRecyclerView<M, B> extends FrameLayout {
mLayoutManager.setReverseLayout(true);//列表翻转
recyclerview.setLayoutManager(mLayoutManager);
}
swipeRefresh.setOnRefreshListener(() -> {
Refresh();
});
swipeRefresh.setOnRefreshListener(this::Refresh);
ll_faileView.setOnClickListener(view -> {
ProgressUtil.startLoad(mCoreAdapter.getContext());
Refresh();
......
......@@ -114,6 +114,15 @@ public class BindingUtils {
}
}
});
if (presenter.getHeaderDatas() != null) {
presenter.getHeaderDatas().addOnPropertyChangedCallback(new Observable.OnPropertyChangedCallback() {
@Override
public void onPropertyChanged(Observable observable, int i) {
Object object = presenter.getHeaderDatas().get();
view.setHeadData(object);
}
});
}
}
/**
......
......@@ -15,8 +15,7 @@
<RelativeLayout
android:id="@+id/title_back"
style="@style/title"
android:onClick="@{()->presenter.dumpBack()}">
style="@style/title">
<TextView
android:id="@+id/tv_title"
......@@ -25,6 +24,7 @@
<ImageView
android:id="@+id/receiving_back"
style="@style/title_image_back"
android:onClick="@{()->presenter.dumpBack()}"
/>
</RelativeLayout>
......
......@@ -23,7 +23,7 @@
<TextView
android:id="@+id/text_idea"
style="@style/text_title"
android:text="@string/tv_idea" />
android:text="@={presenter.mTitle}" />
<ImageView
android:id="@+id/title_back"
......@@ -49,7 +49,7 @@
android:layout_gravity="center"
android:background="@color/white"
android:gravity="top"
android:hint="@string/tv_idea_text_hint"
android:hint="@{presenter.mHint}"
android:paddingLeft="@dimen/dp_13"
android:paddingTop="@dimen/dp_17"
android:text="@={presenter.mComment}"
......
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="presenter"
type="com.dayu.bigfish.presenter.logisticsinfo.LogisticsInfoPresenter" />
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/title_back"
style="@style/title">
<TextView
android:id="@+id/tv_title"
style="@style/text_title"
android:text="@string/logistics_info" />
<ImageView
android:id="@+id/receiving_back"
style="@style/title_image_back"
android:onClick="@{()->presenter.dumpBack()}"
/>
</RelativeLayout>
<ImageView style="@style/card_line" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.dayu.bigfish.ui.views.DottdeLineView
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_marginLeft="34.5dp"
android:layout_marginTop="80dp"
android:layerType="software" />
<com.dayu.bigfish.ui.views.LRecyclerView
android:id="@+id/lv_part"
setPresenter="@{presenter}"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/transparent"
app:headType="@layout/item_logistics_info_header"
app:itemType="@layout/item_logistics_layout"
app:needCoreAdapter="true" />
</RelativeLayout>
</LinearLayout>
</layout>
\ No newline at end of file
......@@ -49,12 +49,6 @@
android:text="@string/order_part" />
</LinearLayout>
<ImageView
android:layout_width="match_parent"
android:layout_height="@dimen/dp_6"
android:layout_alignParentBottom="true"
android:src="@drawable/line_shape" />
<FrameLayout
android:id="@+id/fl_container"
android:layout_width="match_parent"
......
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="presenter"
type="com.dayu.bigfish.presenter.returnpart.ReturnPartPresenter" />
<import type="android.text.TextUtils" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/title_back"
style="@style/title"
android:onClick="@{()->presenter.dumpBack()}">
<TextView
android:id="@+id/tv_title"
style="@style/text_title"
android:text="@string/return_order_part" />
<ImageView
android:id="@+id/receiving_back"
style="@style/title_image_back" />
<TextView
android:id="@+id/tv_right_title"
style="@style/title_right_text"
android:text="@string/submit"
android:textColor="@color/cl_home_button"
android:textSize="15sp" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="76dp"
android:background="@color/cl_white"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp_15"
android:paddingRight="38dp"
android:paddingTop="@dimen/dp_20"
android:text="@string/ka_beizhu"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
<TextView
android:id="@+id/ka_beizhu"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingRight="@dimen/dp_15"
android:paddingTop="@dimen/dp_20"
android:text="@{TextUtils.isEmpty(presenter.kaComent)?@string/no_data:presenter.kaComent}"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="@dimen/dp_15"
android:background="@color/cl_line" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="76dp"
android:layout_marginBottom="@dimen/dp_10"
android:background="@color/cl_white"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp_15"
android:paddingRight="38dp"
android:paddingTop="@dimen/dp_20"
android:text="@string/sp_beizhu"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
<TextView
android:id="@+id/sp_beizhu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:hint="请说明寄回内容,数量和寄回原因"
android:paddingRight="@dimen/dp_15"
android:paddingTop="@dimen/dp_20"
android:text="@={presenter.spComent}"
android:textColor="@color/default_editext_color"
android:textSize="15sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="55dp"
android:background="@color/cl_white"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp_15"
android:paddingRight="38dp"
android:text="@string/couries_company"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
<TextView
android:id="@+id/couries_compay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:hint="@string/couries_company_hint"
android:paddingRight="@dimen/dp_15"
android:text="@={presenter.courierCompany}"
android:textColor="@color/default_editext_color"
android:textSize="15sp" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="@dimen/dp_15"
android:background="#FFE5E5E5" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="55dp"
android:background="@color/cl_white"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/dp_15"
android:paddingRight="38dp"
android:text="快递单号"
android:textColor="@color/default_text_color"
android:textSize="15sp" />
<TextView
android:id="@+id/logistics_num"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:hint="@string/couries_num_hint"
android:paddingRight="@dimen/dp_15"
android:text="@={presenter.courierNum}"
android:textColor="@color/default_editext_color"
android:textSize="15sp" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:drawableLeft="@mipmap/icon_ka_address"
android:drawablePadding="4dp"
android:onClick="@{()->presenter.dumpToKaInfo()}"
android:paddingRight="@dimen/dp_15"
android:paddingTop="@dimen/dp_20"
android:text="厂商收货信息"
android:textColor="#FF3FAAFC"
android:textSize="14sp" />
</LinearLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="presenter"
type="com.dayu.bigfish.presenter.orderpart.OrderPartPresenter" />
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.dayu.bigfish.ui.views.LRecyclerView
android:id="@+id/lv_part"
setPresenter="@{presenter}"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@color/cl_bg"
app:itemType="@layout/item_apply_part_layout" />
<TextView
android:id="@+id/apply_part"
android:layout_width="match_parent"
android:layout_height="49dp"
android:layout_gravity="center"
android:background="@color/cl_home_button"
android:gravity="center"
android:text="@string/apply_one_order_part"
android:text="@{presenter.title}"
android:textColor="@color/white"
android:textSize="16sp" />
android:textSize="@dimen/sp_16"
android:onClick="@{()->presenter.dumpToapplyPart()}"
android:background="@color/cl_home_button"
/>
</LinearLayout>
</layout>
\ No newline at end of file
......@@ -4,6 +4,7 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/cl_bg"
android:orientation="vertical">
<android.support.design.widget.TabLayout
......
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<variable
name="item"
type="com.dayu.bigfish.bean.LogsticsInfo" />
</data>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_15"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/couries_company_name"
android:textSize="@dimen/sp_14" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{item.shipperName}"></TextView>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_12"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tv_part_num"
android:textSize="@dimen/sp_14" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{item.logisticsCode}"></TextView>
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginBottom="30dp"
android:layout_marginTop="15dp"
android:background="@color/cl_line" />
</LinearLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<data>
<variable
name="item"
type="com.dayu.bigfish.bean.LogsticsInfo.Logistics" />
<variable
name="presenter"
type="com.dayu.bigfish.presenter.logisticsinfo.LogisticsInfoPresenter" />
<variable
name="position"
type="Integer" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="40dp"
android:layout_marginLeft="27dp"
android:layout_marginRight="27dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/iv_circle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/dp_12"
android:layout_marginTop="3dp"
android:src="@mipmap/icon_circle_blue" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/logistics_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="@{item.acceptStation}"
android:textColor="@color/default_text_color"
android:textSize="14sp" />
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@{item.acceptTime}"
android:textColor="@color/default_text_color"
android:textSize="@dimen/sp_12" />
</LinearLayout>
</LinearLayout>
</layout>
\ No newline at end of file
......@@ -28,6 +28,8 @@
<color name="text_color">#8a8a8a</color>
<color name="default_text_color">#FF2D2D2D</color>
<color name="default_editext_color">#FF959595</color>
<color name="cl_line">#FFE5E5E5</color>
<color name="cl_bg">#FFF5F5F5</color>
......
......@@ -141,7 +141,7 @@
<string name="home_receive_order">接单</string>
<string name="message">消息</string>
<string name="personal">我的</string>
<string name="on_develop">此功能正在紧张的开发中...</string>
<string name="on_develop">此功能正在紧张的开发中</string>
<string name="coming_soon">敬请期待!</string>
......@@ -223,6 +223,34 @@
<string name="ka_receive_address">收货地址</string>
<string name="tv_refuse_order_title">拒绝申请</string>
<string name="tv_apply_order_title">申请备件</string>
<string name="tv_apply_instruction">申请说明:</string>
<string name="tv_apply_name">申请人:&#160;&#160;&#160;&#160;</string>
<string name="tv_apply_mobile">联系方式:</string>
<string name="tv_apply_time">申请时间:</string>
<string name="tv_ka_instruction">厂商说明:</string>
<string name="tv_ka_name">发货人:&#160;&#160;&#160;&#160;</string>
<string name="tv_need_return">需要寄回:</string>
<string name="tv_part_num">快递单号:</string>
<string name="ka_beizhu">厂商备注</string>
<string name="sp_beizhu">服务商备注</string>
<string name="couries_company">快递公司</string>
<string name="couries_company_name">快递公司:</string>
<string name="couries_num">快递单号</string>
<string name="ka_info">厂商收货信息</string>
<string name="sp_beizhu_hint">请说明寄回内容,数量和寄回原因</string>
<string name="couries_company_hint">请选择快递公司</string>
<string name="couries_num_hint">请输入单号</string>
<string name="part_apply">申请中</string>
<string name="part_refuse">已拒绝</string>
<string name="part_transfortion">运输中</string>
<string name="part_received">已收货</string>
<string name="need">需要</string>
<string name="not_need">不需要</string>
<string name="cancle_apply">取消申请</string>
<string name="logistics_info">物流信息</string>
<string name="receive_part">收到备件</string>
<string name="cannot_return">无法寄回?</string>
<string name="part_cancle_reason">取消之后不可复原,请谨慎操作</string>
<!--消息-->
......@@ -242,10 +270,10 @@
<string name="go_set_up">前往设置</string>
<string name="money"></string>
<string name="zero_money">0 元</string>
<string name="input_feedback">请输入反馈意见...</string>
<string name="input_feedback">请输入反馈意见</string>
<string name="input_content">请输入内容</string>
<string name="commite_success">提交成功</string>
<string name="on_download">正在下载中,请稍后...</string>
<string name="on_download">正在下载中,请稍后</string>
<string name="download_faile">下载失败</string>
<string name="have_new_version">有新版本</string>
<string name="next_again">下次再说</string>
......@@ -253,7 +281,7 @@
<string name="start_download">开始下载</string>
<string name="new_version">版本更新</string>
<string name="sure_clear_data">确定要删除所有缓存数据吗?</string>
<string name="on_clear">正在清理...</string>
<string name="on_clear">正在清理</string>
<string name="clear_success">清理完成</string>
<string name="newversion_code">新版本号为:</string>
<string name="is_newversion">当前为最新版本,无需更新</string>
......@@ -263,7 +291,7 @@
<string name="input_subcribe_time">请输入预约时间</string>
<string name="input_subcribe_info">请输入预约信息</string>
<string name="input_day_time">请输入日期和时间</string>
<string name="on_commite_data">正在提交数据...</string>
<string name="on_commite_data">正在提交数据</string>
<string name="no_emoij">禁止输入表情</string>
<string name="receive_list">待接单列表</string>
<string name="submit">提交</string>
......
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 sign in to comment