Commit 011e8c43 authored by 陈前's avatar 陈前

Merge remote-tracking branch 'origin/master'

parents b13f5d8e 57fab647
...@@ -101,8 +101,7 @@ public abstract class BaseDialog<P extends BasePresenter, B extends ViewDataBind ...@@ -101,8 +101,7 @@ public abstract class BaseDialog<P extends BasePresenter, B extends ViewDataBind
mBaseBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_base, container, false); mBaseBinding = DataBindingUtil.inflate(inflater, R.layout.dialog_base, container, false);
mBaseBinding.vsCenter.getViewStub().setLayoutResource(getLayoutId()); mBaseBinding.vsCenter.getViewStub().setLayoutResource(getLayoutId());
mBaseBinding.vsCenter.getViewStub().setOnInflateListener((viewStub, view) -> mViewBinding mBaseBinding.vsCenter.getViewStub().setOnInflateListener((viewStub, view) -> mViewBinding = DataBindingUtil.bind(view));
= DataBindingUtil.bind(view));
mBaseBinding.vsCenter.getViewStub().inflate(); mBaseBinding.vsCenter.getViewStub().inflate();
if (!isShowTitle() || getTitle() < 0) mBaseBinding.tvTitle.setVisibility(View.GONE); if (!isShowTitle() || getTitle() < 0) mBaseBinding.tvTitle.setVisibility(View.GONE);
......
...@@ -7,6 +7,7 @@ import com.xingdata.zzdpos.App; ...@@ -7,6 +7,7 @@ import com.xingdata.zzdpos.App;
import com.xingdata.zzdpos.C; import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.base.BaseModel; import com.xingdata.zzdpos.base.BaseModel;
import com.xingdata.zzdpos.model.HandoverInfo; import com.xingdata.zzdpos.model.HandoverInfo;
import com.xingdata.zzdpos.model.Level;
import com.xingdata.zzdpos.model.Ms; import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.model.Pay; import com.xingdata.zzdpos.model.Pay;
import com.xingdata.zzdpos.model.Sskugrp; import com.xingdata.zzdpos.model.Sskugrp;
...@@ -207,6 +208,14 @@ public class DBFactory { ...@@ -207,6 +208,14 @@ public class DBFactory {
} }
} }
public static class Marketing {
public static class Ms {
public static Observable<List<Level>> queryLevel() {
return Observable.just(DB.getInstance().get(MainPresenter.class).where(Level.class).findAll())
.flatMap(levels -> Observable.just(getList(levels)));
}
}
}
public static <E extends RealmModel> List<E> getLimitList(RealmResults<E> data, int offset, int limit) { public static <E extends RealmModel> List<E> getLimitList(RealmResults<E> data, int offset, int limit) {
List<E> obtainList = new ArrayList<>(); List<E> obtainList = new ArrayList<>();
......
...@@ -10,6 +10,10 @@ import com.xingdata.zzdpos.ui.dialog.LoadingDialog; ...@@ -10,6 +10,10 @@ import com.xingdata.zzdpos.ui.dialog.LoadingDialog;
import com.xingdata.zzdpos.ui.marketing.ms.fragment.AddFragment; import com.xingdata.zzdpos.ui.marketing.ms.fragment.AddFragment;
import com.xingdata.zzdpos.ui.marketing.ms.fragment.EditorFragment; import com.xingdata.zzdpos.ui.marketing.ms.fragment.EditorFragment;
import com.xingdata.zzdpos.ui.marketing.ms.fragment.ManagerFragment; import com.xingdata.zzdpos.ui.marketing.ms.fragment.ManagerFragment;
import com.xingdata.zzdpos.ui.marketing.ms.model.Area;
import com.xingdata.zzdpos.ui.marketing.ms.model.Group;
import com.xingdata.zzdpos.ui.marketing.ms.model.Type;
import com.xingdata.zzdpos.ui.marketing.ms.model.User;
import java.util.List; import java.util.List;
...@@ -54,6 +58,26 @@ public class MsActivity extends BaseActivity<MsPresenter, ActivityMsBinding> imp ...@@ -54,6 +58,26 @@ public class MsActivity extends BaseActivity<MsPresenter, ActivityMsBinding> imp
start(mEditorFragment); start(mEditorFragment);
} }
@Override
public void loadTypes(List<Type> types) {
mAddFragment.loadTypes(types);
}
@Override
public void loadAreas(List<Area> areas) {
mEditorFragment.loadArea(areas);
}
@Override
public void loadGroups(List<Group> groups) {
mEditorFragment.loadGroup(groups);
}
@Override
public void loadUsers(List<User> users) {
mEditorFragment.loadUser(users);
}
@Override @Override
public void showLoadingDialog() { public void showLoadingDialog() {
mLoadingDialog.show(this); mLoadingDialog.show(this);
......
...@@ -3,6 +3,10 @@ package com.xingdata.zzdpos.ui.marketing.ms; ...@@ -3,6 +3,10 @@ package com.xingdata.zzdpos.ui.marketing.ms;
import com.xingdata.zzdpos.base.BasePresenter; import com.xingdata.zzdpos.base.BasePresenter;
import com.xingdata.zzdpos.base.BaseView; import com.xingdata.zzdpos.base.BaseView;
import com.xingdata.zzdpos.model.Ms; import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.ui.marketing.ms.model.Area;
import com.xingdata.zzdpos.ui.marketing.ms.model.Group;
import com.xingdata.zzdpos.ui.marketing.ms.model.Type;
import com.xingdata.zzdpos.ui.marketing.ms.model.User;
import java.util.List; import java.util.List;
...@@ -27,7 +31,6 @@ interface MsContract { ...@@ -27,7 +31,6 @@ interface MsContract {
*/ */
void showEditorFragment(Ms ms); void showEditorFragment(Ms ms);
/** /**
* 显示编辑页面 * 显示编辑页面
* *
...@@ -35,6 +38,34 @@ interface MsContract { ...@@ -35,6 +38,34 @@ interface MsContract {
*/ */
void showEditorFragment(int msType); void showEditorFragment(int msType);
/**
* 加载营销类型
*
* @param types 营销类型列表
*/
void loadTypes(List<Type> types);
/**
* 加载营销范围
*
* @param areas 营销范围列表
*/
void loadAreas(List<Area> areas);
/**
* 加载营销主体
*
* @param groups 营销主体列表
*/
void loadGroups(List<Group> groups);
/**
* 加载营销对象
*
* @param users 营销对象列表
*/
void loadUsers(List<User> users);
/** /**
* 显示读取对话框 * 显示读取对话框
*/ */
...@@ -68,10 +99,20 @@ interface MsContract { ...@@ -68,10 +99,20 @@ interface MsContract {
*/ */
public abstract void clickMsItem(Ms ms); public abstract void clickMsItem(Ms ms);
/**
* 添加页面 - 初始化
*/
public abstract void initAdd();
/** /**
* 添加页面 - 点击类型的item * 添加页面 - 点击类型的item
*/ */
public abstract void clickTypeItem(int msType); public abstract void clickTypeItem(Type type);
/**
* 编辑页面 - 初始化
*/
public abstract void initEditor();
} }
......
package com.xingdata.zzdpos.ui.marketing.ms; package com.xingdata.zzdpos.ui.marketing.ms;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.api.ApiFactory; import com.xingdata.zzdpos.api.ApiFactory;
import com.xingdata.zzdpos.db.DBFactory;
import com.xingdata.zzdpos.model.Ms; import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.ui.marketing.ms.model.Area;
import com.xingdata.zzdpos.ui.marketing.ms.model.Group;
import com.xingdata.zzdpos.ui.marketing.ms.model.Type;
import com.xingdata.zzdpos.ui.marketing.ms.model.User;
import java.util.ArrayList;
import java.util.List;
public class MsPresenter extends MsContract.Presenter { public class MsPresenter extends MsContract.Presenter {
...@@ -38,8 +47,46 @@ public class MsPresenter extends MsContract.Presenter { ...@@ -38,8 +47,46 @@ public class MsPresenter extends MsContract.Presenter {
} }
@Override @Override
public void clickTypeItem(int msType) { public void initAdd() {
mView.showEditorFragment(msType); List<Type> types = new ArrayList<>();
types.add(new Type(C.MS_TYPE.DIS));
types.add(new Type(C.MS_TYPE.PROMOTION));
types.add(new Type(C.MS_TYPE.MONEY_OFF));
types.add(new Type(C.MS_TYPE.GIFT));
mView.loadTypes(types);
}
@Override
public void clickTypeItem(Type type) {
mView.showEditorFragment(type.getId());
}
@Override
public void initEditor() {
List<Group> groups = new ArrayList<>();
groups.add(new Group(C.MS_GROUP.ALL, "全场"));
groups.add(new Group(C.MS_GROUP.CATE, "指定品类"));
groups.add(new Group(C.MS_GROUP.SKU, "指定商品"));
List<Area> areas = new ArrayList<>();
areas.add(new Area(0, "所有门店"));
areas.add(new Area(1, "本店"));
List<User> users = new ArrayList<>();
users.add(new User(0, "所有顾客", 0));
users.add(new User(0, "所有会员", 0));
DBFactory.Marketing.Ms.queryLevel()
.doFinally(() -> {
mView.loadUsers(users);
mView.loadGroups(groups);
mView.loadAreas(areas);
})
.subscribe(levels -> {
for (int i = 0; i < levels.size(); i++) {
users.add(new User(1, levels.get(i).getVipLevelName(), levels.get(i).getVipLevel()));
}
});
} }
/** /**
......
...@@ -30,5 +30,8 @@ public class BeanAdapter<T extends BaseBean> extends BaseSelectedAdapter<T, Item ...@@ -30,5 +30,8 @@ public class BeanAdapter<T extends BaseBean> extends BaseSelectedAdapter<T, Item
return strs; return strs;
} }
public <B extends BaseBean> void setItemId(B b) {
}
} }
package com.xingdata.zzdpos.ui.marketing.ms.adapter; package com.xingdata.zzdpos.ui.marketing.ms.adapter;
import android.support.annotation.Nullable;
import com.xingdata.zzdpos.C; import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R; import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseAdapter; import com.xingdata.zzdpos.base.BaseAdapter;
import com.xingdata.zzdpos.databinding.ItemMsTypeBinding; import com.xingdata.zzdpos.databinding.ItemMsTypeBinding;
import com.xingdata.zzdpos.ui.marketing.ms.model.Type;
import java.util.List; import java.util.ArrayList;
public class TypeAdapter extends BaseAdapter<Integer, ItemMsTypeBinding> { public class TypeAdapter extends BaseAdapter<Type, ItemMsTypeBinding> {
public TypeAdapter(@Nullable List<Integer> data) { public TypeAdapter() {
super(R.layout.item_ms_type, data); super(R.layout.item_ms_type, new ArrayList<>());
} }
@Override @Override
protected void convert(ItemMsTypeBinding mViewBinding, Integer item) { protected void convert(ItemMsTypeBinding mViewBinding, Type item) {
int resPic = -1, resStr = -1; int resPic = -1, resStr = -1;
switch (item) { switch (item.getId()) {
case C.MS_TYPE.DIS: case C.MS_TYPE.DIS:
resPic = R.mipmap.icon_discount02; resPic = R.mipmap.icon_discount02;
resStr = R.string.ms_type_dis; resStr = R.string.ms_type_dis;
......
...@@ -2,19 +2,20 @@ package com.xingdata.zzdpos.ui.marketing.ms.fragment; ...@@ -2,19 +2,20 @@ package com.xingdata.zzdpos.ui.marketing.ms.fragment;
import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.GridLayoutManager;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R; import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.base.BaseFragment; import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.databinding.FragmentMsAddBinding; import com.xingdata.zzdpos.databinding.FragmentMsAddBinding;
import com.xingdata.zzdpos.ui.marketing.ms.MsPresenter; import com.xingdata.zzdpos.ui.marketing.ms.MsPresenter;
import com.xingdata.zzdpos.ui.marketing.ms.adapter.TypeAdapter; import com.xingdata.zzdpos.ui.marketing.ms.adapter.TypeAdapter;
import com.xingdata.zzdpos.ui.marketing.ms.model.Type;
import com.xingdata.zzdpos.util.MyMenuItemDecoration; import com.xingdata.zzdpos.util.MyMenuItemDecoration;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class AddFragment extends BaseFragment<MsPresenter, FragmentMsAddBinding> { public class AddFragment extends BaseFragment<MsPresenter, FragmentMsAddBinding> {
private TypeAdapter mTypeAdapter;
@Override @Override
public int getLayoutId() { public int getLayoutId() {
return R.layout.fragment_ms_add; return R.layout.fragment_ms_add;
...@@ -23,7 +24,7 @@ public class AddFragment extends BaseFragment<MsPresenter, FragmentMsAddBinding> ...@@ -23,7 +24,7 @@ public class AddFragment extends BaseFragment<MsPresenter, FragmentMsAddBinding>
@Override @Override
public void initView() { public void initView() {
// init type // init type
TypeAdapter mTypeAdapter = new TypeAdapter(getTypeList()); mTypeAdapter = new TypeAdapter();
mViewBinding.rlType.setAdapter(mTypeAdapter); mViewBinding.rlType.setAdapter(mTypeAdapter);
mViewBinding.rlType.setLayoutManager(new GridLayoutManager(mContext, 2)); mViewBinding.rlType.setLayoutManager(new GridLayoutManager(mContext, 2));
mViewBinding.rlType.addItemDecoration(new MyMenuItemDecoration(mContext, 2, getResources().getColor(R.color.gray_kongming))); mViewBinding.rlType.addItemDecoration(new MyMenuItemDecoration(mContext, 2, getResources().getColor(R.color.gray_kongming)));
...@@ -33,17 +34,18 @@ public class AddFragment extends BaseFragment<MsPresenter, FragmentMsAddBinding> ...@@ -33,17 +34,18 @@ public class AddFragment extends BaseFragment<MsPresenter, FragmentMsAddBinding>
this.pop(); this.pop();
mPresenter.clickTypeItem(mTypeAdapter.getData().get(position)); mPresenter.clickTypeItem(mTypeAdapter.getData().get(position));
}); });
// init data
mPresenter.initAdd();
} }
/** /**
* 获取类型列表 * 加载营销类型
*
* @param types 营销类型列表
*/ */
private List<Integer> getTypeList() { public void loadTypes(List<Type> types) {
List<Integer> msList = new ArrayList<>(); mTypeAdapter.setNewData(types);
msList.add(C.MS_TYPE.DIS);
msList.add(C.MS_TYPE.PROMOTION);
msList.add(C.MS_TYPE.MONEY_OFF);
msList.add(C.MS_TYPE.GIFT);
return msList;
} }
} }
package com.xingdata.zzdpos.ui.marketing.ms.model; package com.xingdata.zzdpos.ui.marketing.ms.model;
public class Type extends BaseBean { public class Type extends BaseBean {
public Type(int id, String name) { public Type(int id) {
setId(id); setId(id);
setName(name);
} }
} }
package com.xingdata.zzdpos.ui.marketing.ms.model; package com.xingdata.zzdpos.ui.marketing.ms.model;
public class User extends BaseBean { public class User extends BaseBean {
public User(int id, String name) { public User(int id, String name, int levelId) {
setId(id); setId(id);
setName(name); setName(name);
setLevelId(levelId);
}
private int levelId;
public int getLevelId() {
return levelId;
}
public void setLevelId(int levelId) {
this.levelId = levelId;
} }
} }
package com.xingdata.zzdpos.ui.marketing.ms.view;
import android.databinding.ViewDataBinding;
import com.xingdata.zzdpos.base.BaseFragment;
import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.ui.marketing.ms.MsPresenter;
public abstract class BaseGroupView<B extends ViewDataBinding> extends BaseFragment<MsPresenter, B> {
public Ms mMs;
@Override
public void initView() {
if (mMs != null) setViewByMs();
}
protected abstract void setViewByMs();
/**
* 设置营销计划
*
* @param ms 营销计划实体
* @return this
*/
public BaseGroupView setMs(Ms ms) {
this.mMs = ms;
return this;
}
/**
* 获取当前页面的属性赋给营销计划实体
*
* @param ms 要编辑的营销计划
* @return 是否成功赋值
*/
public abstract boolean processMs(Ms ms);
@Override
public void onDestroyView() {
if (mMs != null) processMs(mMs);
super.onDestroyView();
}
}
package com.xingdata.zzdpos.ui.marketing.ms.view;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.databinding.ViewGroupAllBinding;
import com.xingdata.zzdpos.model.Ms;
/**
* 全场页面
*/
public class GroupAllView extends BaseGroupView<ViewGroupAllBinding> {
@Override
public int getLayoutId() {
return R.layout.view_group_all;
}
@Override
protected void setViewByMs() {
}
@Override
public boolean processMs(Ms ms) {
ms.setMsTouchTag2((byte) C.MS_GROUP.ALL);
return true;
}
}
package com.xingdata.zzdpos.ui.marketing.ms.view;
import android.view.View;
import android.widget.AdapterView;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.api.ApiFactory;
import com.xingdata.zzdpos.databinding.ViewGroupCateBinding;
import com.xingdata.zzdpos.model.Category;
import com.xingdata.zzdpos.model.Ms;
import java.util.ArrayList;
import java.util.List;
/**
* 指定品类页面
*/
public class GroupCateView extends BaseGroupView<ViewGroupCateBinding> {
private int mClaPosition = 0, mGrpPosition = 0, mCatePosition = 0;
private List<Category> mClas, mGrps, mCates;
private AdapterView.OnItemSelectedListener mOnItemSelectedListener;
private long cateId;
public GroupCateView() {
mOnItemSelectedListener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
switch (adapterView.getId()) {
case R.id.ns_type_1:
mClaPosition = i;
mGrpPosition = 0;
mCatePosition = 0;
mViewBinding.nsType3.setVisibility(View.GONE);
loadGrp(mClas.get(i));
cateId = mClas.get(i).getSpuCateId();
break;
case R.id.ns_type_2:
mGrpPosition = i;
mCatePosition = 0;
if (mGrps.get(i).getSpuCateId() > 0) {
loadCate(mGrps.get(i));
cateId = mGrps.get(i).getSpuCateId();
mViewBinding.nsType3.setVisibility(View.VISIBLE);
} else {
cateId = mClas.get(mClaPosition).getSpuCateId();
mViewBinding.nsType3.setVisibility(View.GONE);
}
break;
case R.id.ns_type_3:
mCatePosition = i;
if (mCates.get(i).getSpuCateId() < 0) {
cateId = mGrps.get(mGrpPosition).getSpuCateId();
} else {
cateId = mCates.get(i).getSpuCateId();
}
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
};
}
@Override
public int getLayoutId() {
return R.layout.view_group_cate;
}
@Override
public void initView() {
super.initView();
loadCla();
mViewBinding.nsType1.setOnItemSelectedListener(mOnItemSelectedListener);
mViewBinding.nsType2.setOnItemSelectedListener(mOnItemSelectedListener);
mViewBinding.nsType3.setOnItemSelectedListener(mOnItemSelectedListener);
}
@Override
protected void setViewByMs() {
}
@Override
public boolean processMs(Ms ms) {
ms.setMsTouchTag2((byte) C.MS_GROUP.CATE);
ms.setSpuCateId((int) cateId);
return true;
}
/**
* 加载大类
*/
private void loadCla() {
ApiFactory.Shop.queryAll().subscribe(
categories -> {
mClas = categories;
List<String> strClas = new ArrayList<>();
for (int i = 0; i < categories.size(); i++) {
if (mMs != null && mMs.getSpuCateId() != null && mMs.getSpuCateId() / 10000 == categories.get(i).getSpuCateId() / 10000)
mClaPosition = i;
strClas.add(categories.get(i).getSpuClaName());
}
mViewBinding.nsType1.attachDataSource(strClas);
mViewBinding.nsType1.setSelectedIndex(mClaPosition);
cateId = mClas.get(0).getSpuCateId();
loadGrp(mClas.get(mClaPosition));
},
throwable -> {
});
}
/**
* 设置大类信息,加载中类
*
* @param cateCla 大类信息
*/
private void loadGrp(Category cateCla) {
ApiFactory.Shop.queryAll(cateCla).subscribe(
categories -> {
Category category = new Category();
category.setSpuGrpName("全部");
category.setSpuCateId(cateCla.getSpuCateId());
categories.add(0, category);
mGrps = categories;
List<String> strGrps = new ArrayList<>();
for (int j = 0; j < categories.size(); j++) {
if (mMs != null && mMs.getSpuCateId() != null && mMs.getSpuCateId() / 100 == categories.get(j).getSpuCateId() / 100)
mGrpPosition = j;
strGrps.add(categories.get(j).getSpuGrpName());
}
mViewBinding.nsType2.attachDataSource(strGrps);
mViewBinding.nsType2.setSelectedIndex(mGrpPosition);
if (mGrpPosition != 0) {
loadCate(mGrps.get(mGrpPosition));
mViewBinding.nsType3.setVisibility(View.VISIBLE);
}
},
throwable -> {
});
}
/**
* 设置中类信息,加载小类
*
* @param cateGrp 中类信息
*/
private void loadCate(Category cateGrp) {
ApiFactory.Shop.queryAll(cateGrp).subscribe(
categories -> {
Category category = new Category();
category.setSpuCateName("全部");
category.setSpuCateId(cateGrp.getSpuCateId());
categories.add(0, category);
mCates = categories;
List<String> strCates = new ArrayList<>();
for (int j = 0; j < categories.size(); j++) {
if (mMs != null && mMs.getSpuCateId() != null && mMs.getSpuCateId().longValue() == categories.get(j).getSpuCateId())
mCatePosition = j;
strCates.add(categories.get(j).getSpuCateName());
}
mViewBinding.nsType3.attachDataSource(strCates);
mViewBinding.nsType3.setSelectedIndex(mCatePosition);
},
throwable -> {
});
}
}
package com.xingdata.zzdpos.ui.marketing.ms.view;
import android.annotation.SuppressLint;
import android.view.View;
import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R;
import com.xingdata.zzdpos.databinding.ViewGroupSkuBinding;
import com.xingdata.zzdpos.model.Ms;
import com.xingdata.zzdpos.model.Sssku;
import com.xingdata.zzdpos.util.ConvertUtil;
/**
* 指定商品页面
*/
public class GroupSkuView extends BaseGroupView<ViewGroupSkuBinding> {
private Sssku mSssku;
@Override
public int getLayoutId() {
return R.layout.view_group_sku;
}
@Override
public void initView() {
super.initView();
mViewBinding.btnSearch.setOnClickListener(view -> {
//TODO
// mPresenter.clickGroupSkuSearchButton(mViewBinding.etKeyword.getText().toString());
});
mViewBinding.etKeyword.requestFocus();
}
@SuppressLint("SetTextI18n")
@Override
protected void setViewByMs() {
if (mMs.getMsTouchTag2() == null || mMs.getMsTouchTag2() != C.MS_GROUP.SKU) return;
mViewBinding.llProduct.setVisibility(View.VISIBLE);
mViewBinding.etKeyword.setText(ConvertUtil.longToString(mMs.getSkuBarCode()));
mViewBinding.tvProductName.setText(getString(R.string.ms_editor_group_sku_name) + mMs.getSkuName());
mViewBinding.tvProductPrice.setText(getString(R.string.ms_editor_group_sku_price) + ConvertUtil.fenToYuan(mMs.getSkuPrice1(), true));
}
@Override
public boolean processMs(Ms ms) {
ms.setMsTouchTag2((byte) C.MS_GROUP.SKU);
if (mSssku == null && ms.getSkuId() == null) return false;
if (mSssku != null) ms.setSkuId(mSssku.getSkuId());
return true;
}
@SuppressLint("SetTextI18n")
public void loadSssku(Sssku sssku) {
this.mSssku = sssku;
if (sssku != null) {
mViewBinding.etKeyword.setText(ConvertUtil.longToString(sssku.getSpuBarcode()));
mViewBinding.tvProductName.setText(getString(R.string.ms_editor_group_sku_name) + sssku.getSpuName());
mViewBinding.tvProductPrice.setText(getString(R.string.ms_editor_group_sku_price) + ConvertUtil.fenToYuan(sssku.getSkuRetailPrice1(), true));
mViewBinding.llProduct.setVisibility(View.VISIBLE);
} else {
mViewBinding.llProduct.setVisibility(View.GONE);
}
}
}
package com.xingdata.zzdpos.ui.settle.fragment; package com.xingdata.zzdpos.ui.settle.fragment;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomSheetBehavior; import android.support.design.widget.BottomSheetBehavior;
import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
...@@ -58,6 +59,17 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle ...@@ -58,6 +59,17 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
mViewBinding.cbPoint.setButtonDrawable(b ? R.mipmap.but_elect01 : R.mipmap.but_elect02); mViewBinding.cbPoint.setButtonDrawable(b ? R.mipmap.but_elect01 : R.mipmap.but_elect02);
mPresenter.changePointState(b); mPresenter.changePointState(b);
}); });
BottomSheetBehavior.from(mViewBinding.llSheet).setBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() {
@Override
public void onStateChanged(@NonNull View bottomSheet, int newState) {
}
@Override
public void onSlide(@NonNull View bottomSheet, float slideOffset) {
mViewBinding.tvSettle.setAlpha(1 - slideOffset);
}
});
// init // init
mPresenter.initSettle(); mPresenter.initSettle();
......
...@@ -163,7 +163,7 @@ interface StoreContract { ...@@ -163,7 +163,7 @@ interface StoreContract {
* @param sku 商品 * @param sku 商品
* @param <Sku> 商品类型 * @param <Sku> 商品类型
*/ */
public abstract <Sku extends BaseSku> void clickAddSku(Sku sku); public abstract <Sku extends BaseSku> void clickAddSku(Sku sku, int value);
/** /**
* 商店页面 - 点击删除商品 * 商店页面 - 点击删除商品
...@@ -171,7 +171,7 @@ interface StoreContract { ...@@ -171,7 +171,7 @@ interface StoreContract {
* @param sku 商品 * @param sku 商品
* @param <Sku> 商品类型 * @param <Sku> 商品类型
*/ */
public abstract <Sku extends BaseSku> void clickRemoveSku(Sku sku); public abstract <Sku extends BaseSku> void clickRemoveSku(Sku sku, int value);
/** /**
* 购物车页面 - 购物车发生变化 * 购物车页面 - 购物车发生变化
......
...@@ -126,9 +126,9 @@ public class StorePresenter extends StoreContract.Presenter { ...@@ -126,9 +126,9 @@ public class StorePresenter extends StoreContract.Presenter {
} }
@Override @Override
public <Sku extends BaseSku> void clickAddSku(Sku sku) { public <Sku extends BaseSku> void clickAddSku(Sku sku, int value) {
//更新购物车信息 //更新购物车信息
updateCart(sku, 1); updateCart(sku, value);
//发送购物车信息(不需要刷新页面) //发送购物车信息(不需要刷新页面)
mView.loadSaledetails(mSaledetails, false); mView.loadSaledetails(mSaledetails, false);
//购物车发生变化 //购物车发生变化
...@@ -136,15 +136,16 @@ public class StorePresenter extends StoreContract.Presenter { ...@@ -136,15 +136,16 @@ public class StorePresenter extends StoreContract.Presenter {
} }
@Override @Override
public <Sku extends BaseSku> void clickRemoveSku(Sku sku) { public <Sku extends BaseSku> void clickRemoveSku(Sku sku, int value) {
//更新购物车信息 //更新购物车信息
updateCart(sku, -1); updateCart(sku, value);
//发送购物车信息(不需要刷新页面) //发送购物车信息(不需要刷新页面)
mView.loadSaledetails(mSaledetails, false); mView.loadSaledetails(mSaledetails, false);
//购物车发生变化 //购物车发生变化
this.cartChanged(); this.cartChanged();
} }
@Override @Override
public void cartChanged() { public void cartChanged() {
//设置订单信息 //设置订单信息
......
package com.xingdata.zzdpos.ui.store.adapter; package com.xingdata.zzdpos.ui.store.adapter;
import android.support.annotation.Nullable;
import android.view.View; import android.view.View;
import com.xingdata.zzdpos.R; import com.xingdata.zzdpos.R;
...@@ -39,24 +38,22 @@ public class SkuAdapter<T extends BaseSku> extends BaseAdapter<T, ItemStoreSkuBi ...@@ -39,24 +38,22 @@ public class SkuAdapter<T extends BaseSku> extends BaseAdapter<T, ItemStoreSkuBi
mViewBinding.tvName.setText(item.getSpuName()); mViewBinding.tvName.setText(item.getSpuName());
mViewBinding.tvAmt.setText(ConvertUtil.fenToYuan(item.getSkuRetailPrice1())); mViewBinding.tvAmt.setText(ConvertUtil.fenToYuan(item.getSkuRetailPrice1()));
mViewBinding.ivIncrease.setOnClickListener(view -> { mViewBinding.ivIncrease.setOnClickListener(view -> {
if (mViewBinding.getCount() >= 99) return; if (mViewBinding.getCount() >= 99) return;
mViewBinding.setCount(mViewBinding.getCount() + 1); mViewBinding.setCount(mViewBinding.getCount() + 1);
setViewByCount(mViewBinding); setViewByCount(mViewBinding);
if (mOnCountChangeListener != null) { if (mOnCountChangeListener != null) {
mOnCountChangeListener.onCountChange(item, 1); mOnCountChangeListener.onCountChange(mViewBinding.ivPic, item, 1);
} }
}); });
mViewBinding.ivReduce.setOnClickListener(view -> { mViewBinding.ivReduce.setOnClickListener(view -> {
mViewBinding.setCount(mViewBinding.getCount() - 1); mViewBinding.setCount(mViewBinding.getCount() - 1);
setViewByCount(mViewBinding); setViewByCount(mViewBinding);
if (mOnCountChangeListener != null) { if (mOnCountChangeListener != null) {
mOnCountChangeListener.onCountChange(item, -1); mOnCountChangeListener.onCountChange(mViewBinding.ivPic, item, -1);
} }
}); });
mViewBinding.setCount(0); mViewBinding.setCount(0);
for (int i = 0; i < mSaledetails.size(); i++) { for (int i = 0; i < mSaledetails.size(); i++) {
if (mSaledetails.get(i).getSkuId().longValue() == item.getSkuId()) { if (mSaledetails.get(i).getSkuId().longValue() == item.getSkuId()) {
...@@ -77,12 +74,6 @@ public class SkuAdapter<T extends BaseSku> extends BaseAdapter<T, ItemStoreSkuBi ...@@ -77,12 +74,6 @@ public class SkuAdapter<T extends BaseSku> extends BaseAdapter<T, ItemStoreSkuBi
mViewBinding.ivReduce.setVisibility(View.GONE); mViewBinding.ivReduce.setVisibility(View.GONE);
mViewBinding.tvCount.setVisibility(View.GONE); mViewBinding.tvCount.setVisibility(View.GONE);
} }
}
@Override
public void setOnItemClickListener(@Nullable OnItemClickListener listener) {
super.setOnItemClickListener(listener);
} }
} }
...@@ -35,9 +35,9 @@ public class SearchFragment extends BaseFragment<StorePresenter, FragmentStoreSe ...@@ -35,9 +35,9 @@ public class SearchFragment extends BaseFragment<StorePresenter, FragmentStoreSe
// set sku listener // set sku listener
mSkuAdapter.setOnLoadMoreListener(this::loadMoreSku, mViewBinding.rlSku); mSkuAdapter.setOnLoadMoreListener(this::loadMoreSku, mViewBinding.rlSku);
mSkuAdapter.setOnCountChangeListener((sku, value) -> { mSkuAdapter.setOnCountChangeListener((view, sku, value) -> {
if (value > 0) mPresenter.clickAddSku(sku); if (value > 0) mPresenter.clickAddSku(sku, value);
else mPresenter.clickRemoveSku(sku); else mPresenter.clickRemoveSku(sku, value);
}); });
// set empty // set empty
......
package com.xingdata.zzdpos.ui.store.fragment; package com.xingdata.zzdpos.ui.store.fragment;
import android.animation.Animator;
import android.animation.ValueAnimator;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.graphics.Path;
import android.graphics.PathMeasure;
import android.support.constraint.ConstraintLayout;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import android.view.View; import android.view.View;
import android.view.animation.LinearInterpolator;
import android.widget.ImageView;
import com.blankj.utilcode.util.ScreenUtils;
import com.blankj.utilcode.util.StringUtils; import com.blankj.utilcode.util.StringUtils;
import com.xingdata.zzdpos.C; import com.xingdata.zzdpos.C;
import com.xingdata.zzdpos.R; import com.xingdata.zzdpos.R;
...@@ -26,10 +34,12 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin ...@@ -26,10 +34,12 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin
private SkugrpAdapter mSkugrpAdapter; private SkugrpAdapter mSkugrpAdapter;
private SkuAdapter mSkuAdapter; private SkuAdapter mSkuAdapter;
public interface OnCountChangeListener { public interface OnCountChangeListener {
void onCountChange(BaseSku sku, int value); void onCountChange(View view, BaseSku sku, int value);
} }
@Override @Override
public int getLayoutId() { public int getLayoutId() {
return R.layout.fragment_store; return R.layout.fragment_store;
...@@ -50,11 +60,11 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin ...@@ -50,11 +60,11 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin
// set sku listener // set sku listener
mViewBinding.srlSku.setOnRefreshListener(this::refreshSku); mViewBinding.srlSku.setOnRefreshListener(this::refreshSku);
mSkuAdapter.setOnLoadMoreListener(this::loadMoreSku, mViewBinding.rlSku); mSkuAdapter.setOnLoadMoreListener(this::loadMoreSku, mViewBinding.rlSku);
mSkuAdapter.setOnCountChangeListener((sku, value) -> { mSkuAdapter.setOnCountChangeListener((view, sku, value) -> {
if (value > 0) mPresenter.clickAddSku(sku); if (value > 0) this.clickAdd(view, sku, value);
else mPresenter.clickRemoveSku(sku); else mPresenter.clickRemoveSku(sku, value);
});
});
// set grp listener // set grp listener
mSkugrpAdapter.setOnItemClickListener((adapter, view, position) -> mPresenter.clickSkugrp(mSkugrpAdapter.getData().get(position))); mSkugrpAdapter.setOnItemClickListener((adapter, view, position) -> mPresenter.clickSkugrp(mSkugrpAdapter.getData().get(position)));
...@@ -71,6 +81,7 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin ...@@ -71,6 +81,7 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin
mPresenter.initStore(); mPresenter.initStore();
} }
/** /**
* 刷新商品 * 刷新商品
*/ */
...@@ -218,4 +229,97 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin ...@@ -218,4 +229,97 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin
} }
/**
* 点击添加按钮
*
* @param view 按钮
* @param sku 商品信息
* @param value 数量
*/
private void clickAdd(View view, BaseSku sku, int value) {
// 路径测量
PathMeasure mPathMeasure;
// 贝塞尔曲线中间过程点坐标
float[] mCurrentPosition = new float[2];
final ImageView icon = new ImageView(mContext);
icon.setImageDrawable(((ImageView) view).getDrawable());
ConstraintLayout.LayoutParams params = new ConstraintLayout.LayoutParams(view.getWidth(), view.getHeight());
mViewBinding.clStore.addView(icon, params);
int[] parentLocation = new int[2];
mViewBinding.clStore.getLocationInWindow(parentLocation);
int startLoc[] = new int[2];
view.getLocationInWindow(startLoc);
// 得到购物车图片的坐标(用于计算动画结束后的坐标)
int endLoc[] = new int[]{0, ScreenUtils.getScreenHeight()};
float startX = startLoc[0] - parentLocation[0];
float startY = startLoc[1] - parentLocation[1];
// 商品掉落后的终点坐标:购物车起始点-父布局起始点+购物车图片的1/5
float toX = endLoc[0] - parentLocation[0];
float toY = endLoc[1] - parentLocation[1];
// 开始绘制贝塞尔曲线
Path path = new Path();
// 移动到起始点(贝塞尔曲线的起点)
path.moveTo(startX, startY);
// 使用二阶贝塞尔曲线:注意第一个起始坐标越大,贝塞尔曲线的横向距离就会越大,一般按照下面的式子取即可
path.quadTo((startX + toX) / 2, startY, toX, toY);
// mPathMeasure用来计算贝塞尔曲线的曲线长度和贝塞尔曲线中间插值的坐标,如果是true,path会形成一个闭环
mPathMeasure = new PathMeasure(path, false);
// 属性动画实现(从0到贝塞尔曲线的长度之间进行插值计算,获取中间过程的距离值)
ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, mPathMeasure.getLength());
valueAnimator.setDuration(500);
// 匀速线性插值器
valueAnimator.setInterpolator(new LinearInterpolator());
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
// 当插值计算进行时,获取中间的每个值,
// 这里这个值是中间过程中的曲线长度(下面根据这个值来得出中间点的坐标值)
float value = (Float) animation.getAnimatedValue();
// 获取当前点坐标封装到mCurrentPosition
// boolean getPosTan(float distance, float[] pos, float[] tan) :
// 传入一个距离distance(0<=distance<=getLength()),然后会计算当前距离的坐标点和切线,pos会自动填充上坐标,这个方法很重要。
// mCurrentPosition此时就是中间距离点的坐标值
mPathMeasure.getPosTan(value, mCurrentPosition, null);
// 移动的商品图片(动画图片)的坐标设置为该中间点的坐标
icon.setTranslationX(mCurrentPosition[0]);
icon.setTranslationY(mCurrentPosition[1]);
}
});
// 开始执行动画
valueAnimator.start();
// 动画结束后的处理
valueAnimator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
mPresenter.clickAddSku(sku, value);
// 把执行动画的商品图片从父布局中移除
mViewBinding.clStore.removeView(icon);
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
}
} }
...@@ -15,14 +15,6 @@ ...@@ -15,14 +15,6 @@
name="dateEnd" name="dateEnd"
type="String" /> type="String" />
<variable
name="timeStart"
type="String" />
<variable
name="timeEnd"
type="String" />
<variable <variable
name="user" name="user"
type="String" /> type="String" />
...@@ -192,6 +184,12 @@ ...@@ -192,6 +184,12 @@
android:textSize="@dimen/all_text_size" /> android:textSize="@dimen/all_text_size" />
</LinearLayout> </LinearLayout>
<ViewStub
android:id="@+id/vs_time_detail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout="@layout/view_time_detail" />
<View <View
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/all_line_width" android:layout_height="@dimen/all_line_width"
...@@ -328,6 +326,18 @@ ...@@ -328,6 +326,18 @@
android:layout_marginBottom="@dimen/all_margin" android:layout_marginBottom="@dimen/all_margin"
android:background="@color/gray_huanggai" /> android:background="@color/gray_huanggai" />
<Button
android:id="@+id/btn_confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/all_margin"
android:layout_marginEnd="@dimen/all_margin"
android:layout_marginStart="@dimen/all_margin"
android:background="@drawable/shape_red_r1"
android:foreground="?android:attr/selectableItemBackground"
android:text="@string/all_confirm"
android:textColor="@color/white_caocao"
android:textSize="@dimen/all_text_size" />
</LinearLayout> </LinearLayout>
</android.support.v4.widget.NestedScrollView> </android.support.v4.widget.NestedScrollView>
</layout> </layout>
\ No newline at end of file
...@@ -157,12 +157,16 @@ ...@@ -157,12 +157,16 @@
<Button <Button
android:id="@+id/btn_confirm" android:id="@+id/btn_confirm"
style="@style/button_positive"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/all_margin"
android:layout_marginEnd="@dimen/all_margin" android:layout_marginEnd="@dimen/all_margin"
android:layout_marginStart="@dimen/all_margin" android:layout_marginStart="@dimen/all_margin"
android:background="@drawable/shape_red_r1"
android:foreground="?android:attr/selectableItemBackground" android:foreground="?android:attr/selectableItemBackground"
android:text="@{payResult?@string/settle_complete:@string/settle_retry}" /> android:text="@{payResult?@string/settle_complete:@string/settle_retry}"
android:textColor="@color/white_caocao"
android:textSize="@dimen/all_text_size" />
</LinearLayout> </LinearLayout>
</layout> </layout>
\ No newline at end of file
...@@ -82,30 +82,38 @@ ...@@ -82,30 +82,38 @@
android:layout_marginTop="@dimen/all_margin" android:layout_marginTop="@dimen/all_margin"
android:background="@color/gray_huanggai" /> android:background="@color/gray_huanggai" />
<LinearLayout <android.support.constraint.ConstraintLayout
android:id="@+id/cl_store"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
android:orientation="horizontal">
<android.support.v7.widget.RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/rl_skugrp" android:id="@+id/rl_skugrp"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="0dp"
android:layout_weight="1" /> app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_weight="1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/srl_sku"
app:layout_constraintTop_toTopOf="parent" />
<android.support.v4.widget.SwipeRefreshLayout <android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/srl_sku" android:id="@+id/srl_sku"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="0dp"
android:layout_weight="3" android:background="@color/white_caocao"
android:background="@color/white_caocao"> app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_weight="3"
app:layout_constraintLeft_toRightOf="@id/rl_skugrp"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent">
<android.support.v7.widget.RecyclerView <android.support.v7.widget.RecyclerView
android:id="@+id/rl_sku" android:id="@+id/rl_sku"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
</android.support.v4.widget.SwipeRefreshLayout> </android.support.v4.widget.SwipeRefreshLayout>
</LinearLayout> </android.support.constraint.ConstraintLayout>
</LinearLayout> </LinearLayout>
</layout> </layout>
\ No newline at end of file
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
<variable <variable
name="count" name="count"
type="int" /> type="int" />
</data> </data>
<android.support.constraint.ConstraintLayout <android.support.constraint.ConstraintLayout
......
<?xml version="1.0" encoding="utf-8"?>
<layout>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent">
<TextView
android:layout_width="wrap_content"
android:layout_height="@dimen/editor_item_height"
android:gravity="center"
android:text="@{@string/ms_editor_buy + @string/ms_editor_group_all_hint}"
android:textColor="@color/black"
android:textSize="@dimen/big_text_size" />
</android.support.constraint.ConstraintLayout>
</layout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/transparent"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="@dimen/editor_item_height"
android:gravity="center"
android:text="@string/ms_editor_buy"
android:textColor="@color/black"
android:textSize="@dimen/big_text_size" />
<org.angmarch.views.NiceSpinner
android:id="@+id/ns_type_1"
style="@style/editor_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/all_spacing"
android:minWidth="@dimen/et_min_width_short"
app:backgroundSelector="@drawable/selector_white_background_stroke_2" />
<org.angmarch.views.NiceSpinner
android:id="@+id/ns_type_2"
style="@style/editor_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/all_spacing"
android:minWidth="@dimen/et_min_width_short"
app:backgroundSelector="@drawable/selector_white_background_stroke_2" />
<org.angmarch.views.NiceSpinner
android:id="@+id/ns_type_3"
style="@style/editor_edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/all_spacing"
android:minWidth="@dimen/et_min_width_short"
android:visibility="gone"
app:backgroundSelector="@drawable/selector_white_background_stroke_2" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/all_spacing"
android:gravity="center"
android:text="@string/ms_editor_group_skugrp_hint"
android:textColor="@color/black"
android:textSize="@dimen/big_text_size" />
</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">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginEnd="@dimen/all_margin"
android:layout_marginStart="@dimen/all_margin"
android:layout_marginTop="@dimen/all_margin">
<EditText
android:id="@+id/et_search"
style="@style/searchBarEditor"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginEnd="@dimen/all_spacing"
android:layout_weight="1"
android:hint="@string/ms_editor_type_gift_search_hint"
android:inputType="text"
android:labelFor="@+id/et_search"
android:textColor="@color/black_likui"
android:textColorHint="@color/gray_huanggai"
android:textSize="@dimen/all_text_size" />
<ImageButton
android:id="@+id/btn_scan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@color/transparent"
android:contentDescription="@string/store_scan"
android:foreground="?android:attr/actionBarItemBackground"
android:src="@mipmap/but_sweep_yard" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/all_line_width"
android:layout_marginEnd="@dimen/all_margin"
android:layout_marginStart="@dimen/all_margin"
android:layout_marginTop="@dimen/all_margin"
android:background="@color/gray_kongming" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.facebook.drawee.view.SimpleDraweeView
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="@dimen/all_margin" />
<LinearLayout
android:id="@+id/ll_product"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/all_spacing"
android:orientation="vertical"
android:padding="@dimen/all_margin">
<TextView
android:id="@+id/tv_product_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/ms_editor_group_sku_name" />
<TextView
android:id="@+id/tv_product_price"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/all_margin"
android:text="@string/ms_editor_group_sku_price" />
</LinearLayout>
</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">
<data>
<variable
name="timeStart"
type="String" />
<variable
name="timeEnd"
type="String" />
</data>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<View
android:layout_width="match_parent"
android:layout_height="@dimen/all_line_width"
android:layout_marginEnd="@dimen/all_margin"
android:layout_marginStart="@dimen/all_margin"
android:background="@color/gray_kongming" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/white_caocao"
android:gravity="center_vertical"
android:paddingEnd="@dimen/all_margin"
android:paddingStart="@dimen/all_margin">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:text="@string/ms_editor_time"
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_text_size" />
<TextView
android:id="@+id/tv_time_start"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginStart="@dimen/all_margin"
android:layout_weight="1"
android:foreground="?android:attr/selectableItemBackground"
android:gravity="center"
android:text="@{timeStart}"
android:textColor="@color/black_likui"
android:textSize="@dimen/all_text_size" />
<View
android:layout_width="@dimen/view_line_L1"
android:layout_height="match_parent"
android:layout_margin="@dimen/all_margin"
android:background="@color/golden_yuji" />
<TextView
android:id="@+id/tv_time_end"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:foreground="?android:attr/selectableItemBackground"
android:gravity="center"
android:text="@{timeEnd}"
android:textColor="@color/black_likui"
android:textSize="@dimen/all_text_size" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/all_line_width"
android:layout_marginEnd="@dimen/all_margin"
android:layout_marginStart="@dimen/all_margin"
android:background="@color/gray_kongming" />
<TextView
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/white_caocao"
android:gravity="center_vertical"
android:paddingEnd="@dimen/all_margin"
android:paddingStart="@dimen/all_margin"
android:text="@string/ms_editor_week"
android:textColor="@color/black_baozheng"
android:textSize="@dimen/all_text_size" />
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white_caocao"
android:paddingEnd="@dimen/all_margin"
android:paddingStart="@dimen/all_margin">
<CheckBox
android:id="@+id/cb_mon"
android:layout_width="wrap_content"
android:layout_height="?attr/actionBarSize"
android:text="@string/week_mon"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toLeftOf="@id/cb_tue"
app:layout_constraintTop_toTopOf="parent" />
<CheckBox
android:id="@+id/cb_tue"
android:layout_width="wrap_content"
android:layout_height="?attr/actionBarSize"
android:text="@string/week_tue"
app:layout_constraintLeft_toRightOf="@id/cb_mon"
app:layout_constraintRight_toLeftOf="@id/cb_wed"
app:layout_constraintTop_toTopOf="@id/cb_mon" />
<CheckBox
android:id="@+id/cb_wed"
android:layout_width="wrap_content"
android:layout_height="?attr/actionBarSize"
android:text="@string/week_wed"
app:layout_constraintLeft_toRightOf="@id/cb_tue"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="@id/cb_mon" />
<CheckBox
android:id="@+id/cb_thu"
android:layout_width="wrap_content"
android:layout_height="?attr/actionBarSize"
android:text="@string/week_thu"
app:layout_constraintLeft_toLeftOf="@id/cb_mon"
app:layout_constraintTop_toBottomOf="@id/cb_mon" />
<CheckBox
android:id="@+id/cb_fri"
android:layout_width="wrap_content"
android:layout_height="?attr/actionBarSize"
android:text="@string/week_fri"
app:layout_constraintLeft_toLeftOf="@id/cb_tue"
app:layout_constraintTop_toTopOf="@id/cb_thu" />
<CheckBox
android:id="@+id/cb_sat"
android:layout_width="wrap_content"
android:layout_height="?attr/actionBarSize"
android:text="@string/week_sat"
app:layout_constraintLeft_toLeftOf="@id/cb_wed"
app:layout_constraintTop_toTopOf="@id/cb_thu" />
<CheckBox
android:id="@+id/cb_sun"
android:layout_width="wrap_content"
android:layout_height="?attr/actionBarSize"
android:text="@string/week_sun"
app:layout_constraintTop_toBottomOf="@id/cb_thu" />
</android.support.constraint.ConstraintLayout>
</LinearLayout>
</layout>
\ No newline at end of file
...@@ -205,4 +205,8 @@ ...@@ -205,4 +205,8 @@
<dimen name="store_cart_count">20dp</dimen> <dimen name="store_cart_count">20dp</dimen>
<!--新标准-->
<dimen name="headline">20dp</dimen>
</resources> </resources>
...@@ -333,8 +333,8 @@ ...@@ -333,8 +333,8 @@
<string name="ms_editor_date">起止时间:</string> <string name="ms_editor_date">起止时间:</string>
<string name="ms_editor_date_start">开始时间</string> <string name="ms_editor_date_start">开始时间</string>
<string name="ms_editor_date_end">结束时间</string> <string name="ms_editor_date_end">结束时间</string>
<string name="ms_editor_time">限定时段:</string> <string name="ms_editor_time">限定时段</string>
<string name="ms_editor_week">限定星期:</string> <string name="ms_editor_week">限定星期</string>
<string name="ms_editor_subtitle_ms">活动信息</string> <string name="ms_editor_subtitle_ms">活动信息</string>
<string name="ms_editor_type">营销方式:</string> <string name="ms_editor_type">营销方式:</string>
<string name="ms_editor_group">营销主体</string> <string name="ms_editor_group">营销主体</string>
...@@ -365,6 +365,10 @@ ...@@ -365,6 +365,10 @@
<string name="ms_editor_type_gift_hint">条码:请扫码或输入条码</string> <string name="ms_editor_type_gift_hint">条码:请扫码或输入条码</string>
<string name="ms_editor_type_gift_name">品名:</string> <string name="ms_editor_type_gift_name">品名:</string>
<string name="ms_editor_type_gift_price">售价:</string> <string name="ms_editor_type_gift_price">售价:</string>
<string name="ms_editor_type_gift_search_hint">请扫内包装商品条码</string>
<string name="ms_editor_date_format">%s年%s月%s日</string>
<string name="ms_editor_time_format">%s:%s</string>
<!--商品管理--> <!--商品管理-->
<string name="sssku_title">商品维护</string> <string name="sssku_title">商品维护</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