Commit 9acd0561 authored by zhang_z's avatar zhang_z

Merge branch 'master' of 192.168.254.154:w525721508/TangKuPos

# Conflicts:
#	app/src/main/java/com/xingdata/zzdpos/ui/main/fragment/CasherFragment.java
parent dc07d8fc
......@@ -11,6 +11,7 @@
<w>huangxin</w>
<w>inputer</w>
<w>kongming</w>
<w>kongrong</w>
<w>kongrun</w>
<w>likui</w>
<w>liubei</w>
......@@ -19,6 +20,7 @@
<w>nong</w>
<w>patt</w>
<w>shixiu</w>
<w>skus</w>
<w>sunquan</w>
<w>xishi</w>
<w>yanqing</w>
......
......@@ -17,9 +17,11 @@ public abstract class BaseSelectedAdapter<T, B extends ViewDataBinding> extends
private OnItemClickListener mOnItemClickListener;
private boolean isEnabled = true;
private boolean isAutoClickItem;
public BaseSelectedAdapter(int layoutResId, @Nullable List<T> data) {
super(layoutResId, data);
isAutoClickItem = true;
super.setOnItemClickListener((adapter, view, position) -> {
if (!isEnabled) return;
notifyItemChanged(mSelectedPosition);
......@@ -28,9 +30,24 @@ public abstract class BaseSelectedAdapter<T, B extends ViewDataBinding> extends
});
}
public BaseSelectedAdapter(int layoutResId, @Nullable List<T> data, boolean isAutoClickItem) {
super(layoutResId, data);
this.isAutoClickItem = isAutoClickItem;
super.setOnItemClickListener((adapter, view, position) -> {
if (!isEnabled) return;
notifyItemChanged(mSelectedPosition);
notifyItemChanged(position);
mSelectedPosition = position;
if (!this.isAutoClickItem) {
mOnItemClickListener.onItemClick(this, view, mSelectedPosition);
}
});
}
@Override
protected void convert(BaseViewHolder helper, T item) {
if (mOnItemClickListener != null && mSelectedPosition == helper.getAdapterPosition())
if (mOnItemClickListener != null && mSelectedPosition == helper.getAdapterPosition() && isAutoClickItem)
mOnItemClickListener.onItemClick(this, helper.itemView, mSelectedPosition);
this.convert(helper, (B) helper.mViewBinding, item);
}
......@@ -49,13 +66,6 @@ public abstract class BaseSelectedAdapter<T, B extends ViewDataBinding> extends
this.mOnItemClickListener = listener;
}
public T getSelectedItemObject() {
if (mSelectedPosition > 0) {
return getData().get(mSelectedPosition);
} else {
return null;
}
}
public int getSelectedPosition() {
return mSelectedPosition;
......
......@@ -6,8 +6,10 @@ import com.xingdata.zzdpos.base.BaseModel;
import com.xingdata.zzdpos.model.HandoverInfo;
import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.model.Pay;
import com.xingdata.zzdpos.model.Sskugrp;
import com.xingdata.zzdpos.ui.main.MainPresenter;
import com.xingdata.zzdpos.ui.settle.SettlePresenter;
import com.xingdata.zzdpos.ui.store.StorePresenter;
import java.util.ArrayList;
import java.util.List;
......@@ -48,6 +50,15 @@ public class DBFactory {
public static class Store {
/**
* 查询商品分组
*
* @return 商品分组
*/
public static Observable<List<Sskugrp>> querySkugrp() {
return Observable.just(DB.getInstance().get(StorePresenter.class).where(Sskugrp.class).findAll())
.flatMap(sskugrps -> Observable.just(getList(sskugrps)));
}
}
public static class Settle {
......
......@@ -26,7 +26,7 @@ public class PayAdapter extends BaseAdapter<Pay, ItemPayBinding> {
break;
case C.PAY_CHANNEL.WECHAT:
resLogo = R.mipmap.pay_wechat;
resBackground = R.color.green_kongrun;
resBackground = R.color.green_kongrong;
break;
case C.PAY_CHANNEL.ALI:
resLogo = R.mipmap.pay_alipay;
......
package com.xingdata.zzdpos.ui.store;
import android.view.inputmethod.EditorInfo;
import com.blankj.utilcode.util.KeyboardUtils;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseActivity;
import com.xingdata.zzdpos.base.BaseSheetDialog;
import com.xingdata.zzdpos.databinding.ActivityStoreBinding;
import com.xingdata.zzdpos.databinding.DialogPromptBinding;
public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBinding> implements StoreContract.View {
......@@ -15,28 +16,15 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
@Override
public void initView() {
mViewBinding.tvSettle.setOnClickListener(view -> {
mViewBinding.setMsDisAmt(mViewBinding.getMsDisAmt() > 0 ? 0 : 10000);
});
mViewBinding.ivCart.setOnClickListener(view -> {
new FullSheetDialogFragment().show(getSupportFragmentManager(), "dialog");
mViewBinding.ivCart.setOnClickListener(view -> mPresenter.clickCartLogo());
mViewBinding.tvSettle.setOnClickListener(view -> mPresenter.clickSettle());
mViewBinding.etSearch.setOnEditorActionListener((textView, i, keyEvent) -> {
if (i == EditorInfo.IME_ACTION_SEARCH) {
KeyboardUtils.hideSoftInput(textView);
mPresenter.searchSku(textView.getText().toString());
}
return false;
});
}
public static class FullSheetDialogFragment extends BaseSheetDialog<StorePresenter, DialogPromptBinding> {
@Override
public int getLayoutId() {
return R.layout.dialog_prompt;
}
@Override
public void initView() {
mViewBinding.btnCustom.setOnClickListener(view -> {
mPresenter.clickSettle();
});
}
}
}
package com.xingdata.zzdpos.ui.store;
import com.xingdata.zzdpos.base.BasePresenter;
import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.base.BaseView;
import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.model.Saledetail;
import com.xingdata.zzdpos.model.Sskugrp;
import java.util.List;
interface StoreContract {
interface View extends BaseView {
/**
* 加载商品
*
* @param skus 商品列表
* @param isRefresh 是否刷新列表
* @param <Sku> 商品类型
*/
<Sku extends BaseSku> void loadSkus(List<Sku> skus, boolean isRefresh);
/**
* 加载商品分组
*
* @param sskugrps 商品分组列表
*/
void loadSkugrps(List<Sskugrp> sskugrps);
/**
* 加载营销方案
*
* @param mss 营销方案列表
*/
void loadMss(List<Ms> mss);
/**
* 加载搜索结果
*
* @param skus 商品列表
* @param isRefresh 是否刷新列表
* @param <Sku> 商品类型
*/
<Sku extends BaseSku> void loadSearchResult(List<Sku> skus, boolean isRefresh);
}
abstract class Presenter extends BasePresenter<View> {
/**
* 点击结算按钮
* 总体 - 点击结算按钮
*/
public abstract void clickSettle();
/**
* 点击搜索
* 总体 - 点击购物车logo
*/
public abstract void clickSearch(String keyword);
public abstract void clickCartLogo();
/**
* 点击购物车logo
* 商店页面 - 初始化
*/
public abstract void clickCartLogo();
public abstract void initStore();
/**
* 商店页面 - 刷新商品
*/
public abstract void refreshSku();
/**
* 商店页面 - 加载更多商品
*/
public abstract void loadMoreSku();
/**
* 商店页面 - 点击搜索
*/
public abstract void searchSku(String keyword);
/**
* 商店页面 - 切换分组
*
* @param sskugrp 分组
*/
public abstract void clickSkugrp(Sskugrp sskugrp);
/**
* 商店页面 - 点击添加商品
*
* @param sku 商品
* @param <Sku> 商品类型
*/
public abstract <Sku extends BaseSku> void clickAddSku(Sku sku);
/**
* 商店页面 - 点击删除商品
*
* @param sku 商品
* @param <Sku> 商品类型
*/
public abstract <Sku extends BaseSku> void clickRemoveSku(Sku sku);
/**
* 购物车页面 - 点击添加购物信息
*
* @param saledetail 购物信息
*/
public abstract void clickAddSaledetail(Saledetail saledetail);
/**
* 购物车页面 - 点击删除购物信息
*
* @param saledetail 购物信息
*/
public abstract void clickRemoveSaledetail(Saledetail saledetail);
}
}
package com.xingdata.zzdpos.ui.store;
import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.db.DBFactory;
import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.model.Saledetail;
import com.xingdata.zzdpos.model.Sskugrp;
import java.util.List;
public class StorePresenter extends StoreContract.Presenter {
/**
* 当前购物车信息
*/
......@@ -17,25 +19,80 @@ public class StorePresenter extends StoreContract.Presenter {
*/
private List<Ms> mMss;
@Override
private int mStorePageNum;
private Long mSkuGrpId;
private int mSearchPageNum;
private String mKeyword;
@Override
public void onAttached() {
this.initRealm();
}
@Override
public void clickSettle() {
//TODO 带上mSaleorder跳转到Settle界面
}
@Override
public void clickSearch(String keyword) {
//TODO 搜索出结果后显示SearchFragment
public void clickCartLogo() {
}
@Override
public void clickCartLogo() {
//TODO 显示购物车
public void initStore() {
}
@Override
public void refreshSku() {
}
@Override
public void loadMoreSku() {
}
@Override
public void searchSku(String keyword) {
}
@Override
public void clickSkugrp(Sskugrp sskugrp) {
}
@Override
public <Sku extends BaseSku> void clickAddSku(Sku sku) {
}
@Override
public <Sku extends BaseSku> void clickRemoveSku(Sku sku) {
}
@Override
public void clickAddSaledetail(Saledetail saledetail) {
}
@Override
public void clickRemoveSaledetail(Saledetail saledetail) {
}
private void getSkugrp() {
mCompositeDisposable.add(
DBFactory.Store.querySkugrp().subscribe(
sskugrps -> {
Sskugrp sskugrp = new Sskugrp();
sskugrp.setSkuGrpId(-1L);
sskugrp.setSkuGrpName("组合商品");
sskugrp.setSelected(false);
sskugrps.add(0, sskugrp);
sskugrp = new Sskugrp();
sskugrp.setSkuGrpId(0L);
sskugrp.setSkuGrpName("全部分组");
sskugrp.setSelected(true);
sskugrps.add(0, sskugrp);
mView.loadSkugrps(sskugrps);
})
);
}
}
package com.xingdata.zzdpos.ui.store.adapter;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseAdapter;
import com.xingdata.zzdpos.databinding.ItemStoreMsBinding;
import com.xingdata.zzdpos.model.Ms;
import java.util.ArrayList;
public class MsAdapter extends BaseAdapter<Ms, ItemStoreMsBinding> {
public MsAdapter() {
super(R.layout.item_store_ms, new ArrayList<>());
}
@Override
protected void convert(ItemStoreMsBinding mViewBinding, Ms item) {
}
}
package com.xingdata.zzdpos.ui.store.adapter;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseAdapter;
import com.xingdata.zzdpos.base.BaseSku;
import com.xingdata.zzdpos.databinding.ItemStoreSkuBinding;
import java.util.ArrayList;
public class SkuAdapter<T extends BaseSku> extends BaseAdapter<T, ItemStoreSkuBinding> {
public SkuAdapter() {
super(R.layout.item_store_sku, new ArrayList<>());
}
@Override
protected void convert(ItemStoreSkuBinding mViewBinding, T item) {
}
}
package com.xingdata.zzdpos.ui.store.adapter;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseSelectedAdapter;
import com.xingdata.zzdpos.base.BaseViewHolder;
import com.xingdata.zzdpos.databinding.ItemStoreSkugrpBinding;
import com.xingdata.zzdpos.model.Sskugrp;
import java.util.ArrayList;
public class SkugrpAdapter extends BaseSelectedAdapter<Sskugrp, ItemStoreSkugrpBinding> {
public SkugrpAdapter() {
super(R.layout.item_store_skugrp, new ArrayList<>(), false);
}
@Override
protected void convert(BaseViewHolder helper, ItemStoreSkugrpBinding mViewBinding, Sskugrp item) {
}
}
package com.xingdata.zzdpos.ui.store.dialog;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseSheetDialog;
import com.xingdata.zzdpos.databinding.DialogStoreCartBinding;
import com.xingdata.zzdpos.ui.store.StorePresenter;
public class CartDialog extends BaseSheetDialog<StorePresenter, DialogStoreCartBinding> {
@Override
public int getLayoutId() {
return R.layout.dialog_store_cart;
}
@Override
public void initView() {
}
}
package com.xingdata.zzdpos.ui.store.dialog;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseSheetDialog;
import com.xingdata.zzdpos.databinding.DialogStoreMsBinding;
import com.xingdata.zzdpos.ui.store.StorePresenter;
public class MsDialog extends BaseSheetDialog<StorePresenter, DialogStoreMsBinding> {
@Override
public int getLayoutId() {
return R.layout.dialog_store_ms;
}
@Override
public void initView() {
}
}
......@@ -4,9 +4,14 @@ import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentStoreBinding;
import com.xingdata.zzdpos.ui.store.StorePresenter;
import com.xingdata.zzdpos.ui.store.adapter.SkuAdapter;
import com.xingdata.zzdpos.ui.store.adapter.SkugrpAdapter;
public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBinding> {
private SkuAdapter mSkuAdapter;
private SkugrpAdapter mSkugrpAdapter;
@Override
public int getLayoutId() {
return R.layout.fragment_store_search;
......@@ -15,6 +20,7 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin
@Override
public void initView() {
mPresenter.initStore();
}
......
......@@ -66,7 +66,8 @@
android:layout_height="match_parent"
android:layout_marginEnd="@dimen/all_spacing"
android:layout_weight="1"
android:inputType="number"
android:hint="@string/store_search_hint"
android:inputType="text"
android:labelFor="@+id/et_search"
android:textColor="@color/black_likui"
android:textColorHint="@color/gray_huanggai"
......@@ -95,7 +96,6 @@
android:id="@+id/f_store"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@color/red_xishi"
app:layout_constraintBottom_toTopOf="@id/fl_cart"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
......@@ -117,34 +117,23 @@
app:layout_constraintRight_toRightOf="parent" />
<FrameLayout
<LinearLayout
android:id="@+id/fl_ms"
android:layout_width="0dp"
android:layout_height="28dp"
android:layout_height="@dimen/all_margin_big"
android:layout_marginBottom="@dimen/all_line_width"
android:alpha="0.87"
android:background="@color/cyan_sunquan"
android:gravity="center_vertical"
android:gravity="center"
android:orientation="horizontal"
android:visibility="@{msDisAmt>0?View.VISIBLE:View.GONE}"
app:layout_constraintBottom_toTopOf="@id/fl_cart"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/all_spacing"
android:visibility="@{msDisAmt>0?View.VISIBLE:View.GONE}"
app:layout_constraintBottom_toTopOf="@id/fl_ms"
app:layout_constraintLeft_toRightOf="@id/fl_logo"
app:layout_constraintTop_toBottomOf="@id/fl_ms">
app:layout_constraintRight_toRightOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/all_line_width"
android:paddingBottom="@dimen/all_spacing"
android:paddingTop="@dimen/all_spacing"
android:text="@string/store_ms_dis"
android:textColor="@color/black_zhangfei"
android:textSize="@dimen/all_text_size" />
......@@ -152,7 +141,6 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/all_line_width"
android:text="@{ConvertUtil.fenToYuan(msDisAmt)}"
android:textColor="@color/red_guanyu"
android:textSize="@dimen/all_text_size" />
......@@ -160,13 +148,9 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/all_line_width"
android:paddingBottom="@dimen/all_spacing"
android:paddingTop="@dimen/all_spacing"
android:text="@string/unit_rmb_yuan"
android:textColor="@color/black_zhangfei"
android:textSize="@dimen/all_text_size" />
</LinearLayout>
......
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/transparent_border"
android:gravity="center"
android:orientation="vertical">
</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">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/transparent_border"
android:gravity="center"
android:orientation="vertical">
</LinearLayout>
</layout>
\ No newline at end of file
......@@ -2,11 +2,61 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.design.widget.CoordinatorLayout
<data>
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray_zhouyu"
android:orientation="vertical">
</android.support.design.widget.CoordinatorLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/white_caocao">
<View
android:layout_width="match_parent"
android:layout_height="@dimen/all_line_width"
android:layout_gravity="bottom"
android:background="@color/gray_huanggai" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/all_line_width"
android:layout_marginTop="@dimen/all_margin"
android:background="@color/gray_huanggai" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<android.support.v7.widget.RecyclerView
android:id="@+id/rl_skugrp"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/green_kongrong">
</android.support.v7.widget.RecyclerView>
<android.support.v7.widget.RecyclerView
android:id="@+id/rl_sku"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:background="@color/blue_mawu">
</android.support.v7.widget.RecyclerView>
</LinearLayout>
</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"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white_caocao"
android:foreground="?android:attr/selectableItemBackground">
</android.support.constraint.ConstraintLayout>
</layout>
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white_caocao"
android:foreground="?android:attr/selectableItemBackground">
</android.support.constraint.ConstraintLayout>
</layout>
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="selected"
type="boolean" />
</data>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="vertical">
<FrameLayout
android:layout_width="120dp"
android:layout_height="?attr/actionBarSize"
android:background="@color/white_caocao"
android:foreground="?android:attr/selectableItemBackground">
<View
android:layout_width="@dimen/all_spacing"
android:layout_height="@dimen/all_sub_title_size"
android:layout_gravity="center_vertical"
android:background="@color/red_guanyu" />
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="全部商品"
android:textStyle="bold"
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_sub_title_size" />
</FrameLayout>
<FrameLayout
android:layout_width="120dp"
android:layout_height="?attr/actionBarSize"
android:background="@color/gray_zhouyu"
android:foreground="?android:attr/selectableItemBackground">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:textStyle="normal"
android:text="全部商品"
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_text_size" />
</FrameLayout>
</LinearLayout>
</layout>
......@@ -80,7 +80,6 @@
<color name="line1">#e6e6e6</color>
<color name="grey1">#E2E2E2</color>
<!-- 界面背景色 -->
<color name="lyt_main_bg">#efeff4</color>
......@@ -140,7 +139,7 @@
<color name="blue_mawu">#3f75a2</color>
<color name="green_chengyaojin">#088b38</color>
<color name="green_kongrun">#35ba6a</color>
<color name="green_kongrong">#35ba6a</color>
<color name="orange_shixiu">#e88108</color>
......
......@@ -184,9 +184,7 @@
<string name="store_group">商品分组 </string>
<string name="store_sssku">标准商品 </string>
<string name="store_ussku">组合商品 </string>
<string name="store_search">商品查询</string>
<string name="store_search_beside">邻库查询</string>
<string name="store_search_hint">商品名称/商品条码/商品助记码</string>
<string name="store_empty_hint">没有搜到此商品\n请重新搜索,或前往商品维护进行添加~</string>
<string name="store_scan_empty_hint">没有找到此商品</string>
......@@ -538,6 +536,7 @@
<string name="store_btn_settle">选好了</string>
<string name="store_ms_dis">已减</string>
<string name="store_scan">扫描</string>
<string name="store_search_hint">请输入商品名称/助记码/条码</string>
<!--帮助POS-->
<string name="help_hint">帮助</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 to comment