Commit a2715edb by Wyh

1、彈窗關閉優化 2、預約單無法自動接單問題 3、供應鏈刪除單位、加運費、焦點遺失問題

parent 94e2feb7
...@@ -496,7 +496,6 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre ...@@ -496,7 +496,6 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
//提示補單 //提示補單
new AppDialog().showWaringDialog(this, "是否暫停接單?", (view, dialog) -> { new AppDialog().showWaringDialog(this, "是否暫停接單?", (view, dialog) -> {
mPresenter.updateRestOpenStatus(state, restaurantId); mPresenter.updateRestOpenStatus(state, restaurantId);
dialog.dismiss();
}); });
} }
restaurantPopup.dismiss(); restaurantPopup.dismiss();
...@@ -508,7 +507,6 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre ...@@ -508,7 +507,6 @@ public class ColdChainMainActivity extends BaseFragmentActivity<ColdChainMainPre
} else { } else {
//提示補單 //提示補單
new AppDialog().showWaringDialog(this, "不滿足送貨條件,是否需要補單?", (view, dialog) -> { new AppDialog().showWaringDialog(this, "不滿足送貨條件,是否需要補單?", (view, dialog) -> {
dialog.dismiss();
jumpSupplementOrder(bean); jumpSupplementOrder(bean);
}); });
} }
......
...@@ -321,7 +321,6 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im ...@@ -321,7 +321,6 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im
} else if (btnBeans.get(position).getType() == BtnBuilder.CancelBtn) { } else if (btnBeans.get(position).getType() == BtnBuilder.CancelBtn) {
//取消訂單 //取消訂單
new AppDialog().showWaringDialog(this, "確認取消訂單?", (v, dialog) -> { new AppDialog().showWaringDialog(this, "確認取消訂單?", (v, dialog) -> {
dialog.dismiss();
if (bean.isDelete() == 0) { if (bean.isDelete() == 0) {
mPresenter.cancelOrderAndLogistics(orderId); mPresenter.cancelOrderAndLogistics(orderId);
} else { } else {
...@@ -331,7 +330,6 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im ...@@ -331,7 +330,6 @@ public class OrderDetailsActivity extends BaseActivity<OrderDetailsPresenter> im
} else if (btnBeans.get(position).getType() == BtnBuilder.LogisticsBtn) { } else if (btnBeans.get(position).getType() == BtnBuilder.LogisticsBtn) {
//取消物流 //取消物流
new AppDialog().showWaringDialog(this, "確認取消物流?", (v, dialog) -> { new AppDialog().showWaringDialog(this, "確認取消物流?", (v, dialog) -> {
dialog.dismiss();
mPresenter.cancelLogistics(bean.getID(), false); mPresenter.cancelLogistics(bean.getID(), false);
}); });
} else if (btnBeans.get(position).getType() == BtnBuilder.PrintBtn) { } else if (btnBeans.get(position).getType() == BtnBuilder.PrintBtn) {
......
...@@ -225,7 +225,19 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -225,7 +225,19 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
confirmOrder(orderDetail, 2, trafficType, restaurantId, isPrintPrj = true, isPrintBill = true) { confirmOrder(orderDetail, 2, trafficType, restaurantId, isPrintPrj = true, isPrintBill = true) {
//確認之後,刷新列表 //確認之後,刷新列表
refreshState.postValue(0) refreshState.postValue(0)
launch({ }
}
}
} else {
}
} else {
}
} else {
}
}
//獲取預約單 //獲取預約單
repository.requestOrderList(restaurantId.toString(), fragmentStatus[1], fragmentType[0], "1", orderNo, phone, 1).apply { repository.requestOrderList(restaurantId.toString(), fragmentStatus[1], fragmentType[0], "1", orderNo, phone, 1).apply {
if (isSuccess()) { if (isSuccess()) {
...@@ -247,20 +259,6 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -247,20 +259,6 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
} }
} }
} }
}, {})
}
}
}
} else {
}
} else {
}
} else {
}
}
}, { }, {
//報錯處理 //報錯處理
}) })
......
...@@ -195,7 +195,6 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements ...@@ -195,7 +195,6 @@ public class PrjQueryActivity extends BaseActivity<PrjQueryPresenter> implements
if (prjData.get(position).getPrinterType() == 3) { if (prjData.get(position).getPrinterType() == 3) {
//已打印的,提示是否重新打印 //已打印的,提示是否重新打印
new AppDialog().showWaringDialog(mContext, "食品已打印,確認重印?", (view1, dialog) -> { new AppDialog().showWaringDialog(mContext, "食品已打印,確認重印?", (view1, dialog) -> {
dialog.dismiss();
organizeData(position, prjData); organizeData(position, prjData);
}); });
} else { } else {
......
...@@ -708,9 +708,6 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -708,9 +708,6 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
*/ */
private fun PageViewModel.confirmCancelLogistics(orderId: String, reasonId: String, reasonDesc: String) { private fun PageViewModel.confirmCancelLogistics(orderId: String, reasonId: String, reasonDesc: String) {
AppDialog().showWaringDialog(this@OrderDetailsActivity, "是否確認取消第三方派送?") { v, dialog -> AppDialog().showWaringDialog(this@OrderDetailsActivity, "是否確認取消第三方派送?") { v, dialog ->
when (v.id) {
R.id.tv_dialog_confirm -> {
dialog.dismiss()
showLoading() showLoading()
cancelLogistics(restaurantId, orderId, reasonId, reasonDesc) { cancelLogistics(restaurantId, orderId, reasonId, reasonDesc) {
cancelDialogForLoading() cancelDialogForLoading()
...@@ -718,9 +715,6 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -718,9 +715,6 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() {
finish() finish()
} }
} }
R.id.tv_dialog_cancel -> dialog.dismiss()
}
}
} }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
......
...@@ -265,7 +265,6 @@ public class IpPrintListActivityFragment extends BaseFragment<IpPrintListActivit ...@@ -265,7 +265,6 @@ public class IpPrintListActivityFragment extends BaseFragment<IpPrintListActivit
mPresenter.deletePrinter(devicess.get(position).getId() + ""); mPresenter.deletePrinter(devicess.get(position).getId() + "");
devicess.remove(position); devicess.remove(position);
printListAdapter.notifyItemRemoved(position); printListAdapter.notifyItemRemoved(position);
dialog.dismiss();
if (devicess == null || devicess.size() == 0) { if (devicess == null || devicess.size() == 0) {
mTvAddPrint.setVisibility(View.VISIBLE); mTvAddPrint.setVisibility(View.VISIBLE);
} else { } else {
......
...@@ -187,7 +187,6 @@ public class LocalPrintFragment extends BaseFragment<LocalPrintPresenter> implem ...@@ -187,7 +187,6 @@ public class LocalPrintFragment extends BaseFragment<LocalPrintPresenter> implem
printCurrencyBeans.remove(finalI1); printCurrencyBeans.remove(finalI1);
loadView(printCurrencyBeans); loadView(printCurrencyBeans);
} }
dialog.dismiss();
}); });
}); });
......
...@@ -56,6 +56,7 @@ public class ConfirmOrderBean { ...@@ -56,6 +56,7 @@ public class ConfirmOrderBean {
purchaseOrder.setRestaurantId(RestaurantInfoManager.newInstance().getRestaurantId()); purchaseOrder.setRestaurantId(RestaurantInfoManager.newInstance().getRestaurantId());
purchaseOrder.setRemarks(shoppingCartBean.getRemarks()); purchaseOrder.setRemarks(shoppingCartBean.getRemarks());
purchaseOrder.setInitialShippingTime(shoppingCartBean.getInitialShippingTime()); purchaseOrder.setInitialShippingTime(shoppingCartBean.getInitialShippingTime());
purchaseOrder.setShipping(shoppingCartBean.getShipping());
purchaseOrder.setTotalAmount(totalAmount); purchaseOrder.setTotalAmount(totalAmount);
purchaseOrder.setActualPayment(MoneyUtil.sum(totalAmount, shoppingCartBean.getShipping())); purchaseOrder.setActualPayment(MoneyUtil.sum(totalAmount, shoppingCartBean.getShipping()));
return purchaseOrder; return purchaseOrder;
......
...@@ -31,6 +31,8 @@ public interface OrderDetailsContract { ...@@ -31,6 +31,8 @@ public interface OrderDetailsContract {
void loadOrderDetails(PurchaseOrderDetailsBean orderDetailsBean); void loadOrderDetails(PurchaseOrderDetailsBean orderDetailsBean);
void uploadPicSuccess(String imgUrl); void uploadPicSuccess(String imgUrl);
void buyAgain();
} }
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存 //Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
...@@ -46,5 +48,11 @@ public interface OrderDetailsContract { ...@@ -46,5 +48,11 @@ public interface OrderDetailsContract {
Observable<BaseResult> deleteOrder(int orderId); Observable<BaseResult> deleteOrder(int orderId);
/**
* 再來一單
* @param map
* @return
*/
Observable<BaseResult> buyAgainByFoodIds(Map<String, Object> map);
} }
} }
...@@ -72,4 +72,9 @@ public class OrderDetailsModel extends BaseModel implements OrderDetailsContract ...@@ -72,4 +72,9 @@ public class OrderDetailsModel extends BaseModel implements OrderDetailsContract
public Observable<BaseResult> deleteOrder(int orderId) { public Observable<BaseResult> deleteOrder(int orderId) {
return mRepositoryManager.obtainRetrofitService(SupplierServer.class).deleteOrder(orderId); return mRepositoryManager.obtainRetrofitService(SupplierServer.class).deleteOrder(orderId);
} }
@Override
public Observable<BaseResult> buyAgainByFoodIds(Map<String, Object> map) {
return mRepositoryManager.obtainRetrofitService(SupplierServer.class).buyAgainByFoodIds(map);
}
} }
\ No newline at end of file
...@@ -19,6 +19,7 @@ import com.gingersoft.gsa.cloud.ui.adapter.bean.InfoMultiBean; ...@@ -19,6 +19,7 @@ import com.gingersoft.gsa.cloud.ui.adapter.bean.InfoMultiBean;
import com.gingersoft.gsa.cloud.ui.adapter.bean.MultiInputBean; import com.gingersoft.gsa.cloud.ui.adapter.bean.MultiInputBean;
import com.gingersoft.gsa.cloud.ui.adapter.bean.MultiSelectBean; import com.gingersoft.gsa.cloud.ui.adapter.bean.MultiSelectBean;
import com.gingersoft.gsa.cloud.ui.adapter.bean.UploadPicMultiBean; import com.gingersoft.gsa.cloud.ui.adapter.bean.UploadPicMultiBean;
import com.gingersoft.gsa.cloud.ui.adapter.multi.RemarkProvider;
import com.gingersoft.gsa.cloud.ui.bean.SectionCheckItem; import com.gingersoft.gsa.cloud.ui.bean.SectionCheckItem;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.mvp.bean.DeputyUnitBean; import com.gingersoft.supply_chain.mvp.bean.DeputyUnitBean;
...@@ -201,21 +202,21 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient ...@@ -201,21 +202,21 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE)); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE));
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_TITLE, "基本信息")); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_TITLE, "基本信息"));
infoMultiBeans.add(new MultiSelectBean(InfoMultiBean.EDIT_FOOD_ITEM_SELECT, "所屬供應商", true, "請輸入/選擇供應商", SELECT_SUPPLIER_RESULTCODE, true, new InputFilter[]{InputFilterUtils.getLengthFilter(context, 16), InputFilterUtils.getChAndEnAndNumInputFilter(context)}, SupplierListFragment.class)); infoMultiBeans.add(new MultiSelectBean(InfoMultiBean.EDIT_FOOD_ITEM_SELECT, "所屬供應商", true, "請輸入/選擇供應商", SELECT_SUPPLIER_RESULTCODE, true, new InputFilter[]{InputFilterUtils.getLengthFilter(context, 16), InputFilterUtils.getChAndEnAndNumInputFilter(context)}, SupplierListFragment.class));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "食材名稱", true, "請輸入名稱")); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "食材名稱", true, "請輸入名稱", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 16), InputFilterUtils.getChAndEnAndNumInputFilter(context)}));
infoMultiBeans.add(new MultiSelectBean(InfoMultiBean.EDIT_FOOD_ITEM_SELECT, "食材類別", true, "請選擇食材類別", SELECT_FOOD_CATEGORY_REQUEST_CODE, CategorySelectFragment.class)); infoMultiBeans.add(new MultiSelectBean(InfoMultiBean.EDIT_FOOD_ITEM_SELECT, "食材類別", true, "請選擇食材類別", SELECT_FOOD_CATEGORY_REQUEST_CODE, CategorySelectFragment.class));
infoMultiBeans.add(new MultiSelectBean(InfoMultiBean.EDIT_FOOD_ITEM_SELECT, "基本單位", true, "請選擇食材單位", SELECT_PACKAGE_SPECIFICATION_REQUEST_CODE, FoodUnitPageFragment.class)); infoMultiBeans.add(new MultiSelectBean(InfoMultiBean.EDIT_FOOD_ITEM_SELECT, "基本單位", true, "請選擇食材單位", SELECT_PACKAGE_SPECIFICATION_REQUEST_CODE, FoodUnitPageFragment.class));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "包裝說明", false, "請輸入包裝說明", new InputFilter[]{new InputFilter.LengthFilter(10)})); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "包裝說明", false, "請輸入包裝說明", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 10), InputFilterUtils.getTypeFilter(context, InputFilterUtils.chAndEnAndNumAndSlash)}));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "食材編號", false, "請輸入食材編號")); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "食材編號", false, "請輸入食材編號", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 11), InputFilterUtils.getEnAndNumInputFilter(context)}));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "單價($)", false, "請輸入單價,保留2位小數", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 9), new DecimalDigitsInputFilter(context, 2)}, InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL)); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "單價($)", false, "請輸入單價,保留2位小數", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 9), new DecimalDigitsInputFilter(context, 2)}, InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL));
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE)); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE));
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_TITLE, "庫存預警")); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_TITLE, "庫存預警"));
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_MULTIPLE_BOOLEAN, "是否審核", false, "請輸入單位")); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_MULTIPLE_BOOLEAN, "是否審核", false, "請輸入單位"));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "最低庫存", false, "請輸入最低庫存", new InputFilter[]{new InputFilter.LengthFilter(5)}, EditorInfo.TYPE_CLASS_NUMBER)); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "最低庫存", false, "請輸入最低庫存", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 5)}, EditorInfo.TYPE_CLASS_NUMBER));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "保質期(天)", false, "請輸入保質期", new InputFilter[]{new InputFilter.LengthFilter(5)}, EditorInfo.TYPE_CLASS_NUMBER)); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "保質期(天)", false, "請輸入保質期", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 5)}, EditorInfo.TYPE_CLASS_NUMBER));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "保質期預警(天)", false, "請輸入預警天數", new InputFilter[]{new InputFilter.LengthFilter(5)}, EditorInfo.TYPE_CLASS_NUMBER)); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "保質期預警(天)", false, "請輸入預警天數", new InputFilter[]{InputFilterUtils.getLengthFilter(context, 5)}, EditorInfo.TYPE_CLASS_NUMBER));
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE)); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE));
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_TITLE, "備註")); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_TITLE, "備註"));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_MULTIPLE_INPUT_REMARK, "", false, "請輸入備註")); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_MULTIPLE_INPUT_REMARK, "", false, "請輸入備註", new InputFilter[]{InputFilterUtils.getLengthFilter(context, RemarkProvider.REMARK_TEXT_LENGTH), InputFilterUtils.getChAndEnAndNumAndPtInputFilter(context)}));
if (purchaseFoodBean != null) { if (purchaseFoodBean != null) {
//供應商名稱 //供應商名稱
infoMultiBeans.get(supplierIndex).setShowValue(purchaseFoodBean.getSupplierName()); infoMultiBeans.get(supplierIndex).setShowValue(purchaseFoodBean.getSupplierName());
...@@ -318,6 +319,11 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient ...@@ -318,6 +319,11 @@ public class NewFoodIngredientsPresenter extends BasePresenter<NewFoodIngredient
categoryName.append(categoryTrees.getName()) categoryName.append(categoryTrees.getName())
.append(PurchaseFoodBean.CATEGORY_DIVIDER); .append(PurchaseFoodBean.CATEGORY_DIVIDER);
} }
if (purchaseFoodBean != null) {
//食材信息不為空,設置分類id為最後一個分類的id
//例如:選擇了一個三級分類,下標0為父類,1為子類,2位當前分類
purchaseFoodBean.setFoodCategoryId(foodCategoryTrees.get(foodCategoryTrees.size() - 1).getId());
}
categoryName.deleteCharAt(categoryName.lastIndexOf(PurchaseFoodBean.CATEGORY_DIVIDER)); categoryName.deleteCharAt(categoryName.lastIndexOf(PurchaseFoodBean.CATEGORY_DIVIDER));
infoMultiBeans.get(foodIngredientCategoryIndex).setShowValue(categoryName.toString()); infoMultiBeans.get(foodIngredientCategoryIndex).setShowValue(categoryName.toString());
mRootView.refreshAdapterByPosition(foodIngredientCategoryIndex); mRootView.refreshAdapterByPosition(foodIngredientCategoryIndex);
......
...@@ -164,7 +164,7 @@ public class NewSupplierPresenter extends BasePresenter<NewSupplierContract.Mode ...@@ -164,7 +164,7 @@ public class NewSupplierPresenter extends BasePresenter<NewSupplierContract.Mode
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE)); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_LINE));
infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_TITLE, "備註")); infoMultiBeans.add(new InfoMultiBean(InfoMultiBean.ITEM_TYPE_TITLE, "備註"));
MultiInputBean remarkInputBean = new MultiInputBean(InfoMultiBean.ITEM_MULTIPLE_INPUT_REMARK, null, false, "請輸入備註", new InputFilter[]{InputFilterUtils.getMaxLengthFilterDisChAndEn(RemarkProvider.REMARK_TEXT_LENGTH), InputFilterUtils.getChAndEnAndNumInputFilter(mContext)}); MultiInputBean remarkInputBean = new MultiInputBean(InfoMultiBean.ITEM_MULTIPLE_INPUT_REMARK, null, false, "請輸入備註", new InputFilter[]{InputFilterUtils.getLengthFilter(mContext, RemarkProvider.REMARK_TEXT_LENGTH), InputFilterUtils.getChAndEnAndNumAndPtInputFilter(mContext)});
remarkInputBean.setMaxLength(RemarkProvider.REMARK_TEXT_LENGTH); remarkInputBean.setMaxLength(RemarkProvider.REMARK_TEXT_LENGTH);
infoMultiBeans.add(remarkInputBean); infoMultiBeans.add(remarkInputBean);
......
...@@ -10,10 +10,12 @@ import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils; ...@@ -10,10 +10,12 @@ import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.view.BitmapUtil; import com.gingersoft.gsa.cloud.common.utils.view.BitmapUtil;
import com.gingersoft.supply_chain.mvp.bean.DeputyUnitBean; import com.gingersoft.supply_chain.mvp.bean.DeputyUnitBean;
import com.gingersoft.supply_chain.mvp.bean.PurchaseFoodBean;
import com.gingersoft.supply_chain.mvp.bean.PurchaseOrderDetailsBean; import com.gingersoft.supply_chain.mvp.bean.PurchaseOrderDetailsBean;
import com.gingersoft.supply_chain.mvp.bean.OrderWareHouseBean; import com.gingersoft.supply_chain.mvp.bean.OrderWareHouseBean;
import com.gingersoft.supply_chain.mvp.bean.WareHousingUnitBean; import com.gingersoft.supply_chain.mvp.bean.WareHousingUnitBean;
import com.gingersoft.supply_chain.mvp.content.Constant; import com.gingersoft.supply_chain.mvp.content.Constant;
import com.gingersoft.supply_chain.mvp.content.SupplyShoppingCart;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
import com.jess.arms.di.scope.FragmentScope; import com.jess.arms.di.scope.FragmentScope;
import com.jess.arms.mvp.BasePresenter; import com.jess.arms.mvp.BasePresenter;
...@@ -273,6 +275,52 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo ...@@ -273,6 +275,52 @@ public class OrderDetailsPresenter extends BasePresenter<OrderDetailsContract.Mo
} }
/** /**
* 再來一單
*/
public void buyAgainByFoodIds(List<PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean> data) {
if (data == null || data.size() <= 0) {
return;
}
Map<String, Object> map = new HashMap<>(3);
Constant.addRestaurantId(map);
Constant.addBrandId(map);
StringBuilder stringBuilder = new StringBuilder();
for (PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean item : data) {
stringBuilder.append(item.getPurchaseFoodId()).append(",");
}
map.put("ids", stringBuilder.substring(0, stringBuilder.length() - 1));
mModel.buyAgainByFoodIds(map)
.subscribeOn(Schedulers.io())
.doOnSubscribe(disposable -> mRootView.showLoading(GET_INFO_LOADING))
.subscribeOn(AndroidSchedulers.mainThread())
.doAfterNext(disposable -> mRootView.hideLoading())
.observeOn(AndroidSchedulers.mainThread())
.compose(RxLifecycleUtils.bindToLifecycle(mRootView))
.subscribe(new ErrorHandleSubscriber<BaseResult>(mErrorHandler) {
@Override
public void onNext(BaseResult baseResult) {
if (baseResult.isSuccess()) {
List<PurchaseFoodBean> purchaseFoodBeans = GsonUtils.GsonToList(baseResult.getData(), PurchaseFoodBean.class);
for (PurchaseFoodBean purchaseFoodBean : purchaseFoodBeans) {
for (PurchaseOrderDetailsBean.PurchaseOrderDetailsInfoVosBean item : data) {
if (purchaseFoodBean.getId() == item.getPurchaseFoodId()) {
purchaseFoodBean.setFoodQuantity(item.getFoodQuantity());
break;
}
}
}
SupplyShoppingCart.getInstance().clear();
SupplyShoppingCart.getInstance().getCartFoods().addAll(purchaseFoodBeans);
mRootView.buyAgain();
} else {
mRootView.showMessage(GET_INFO_ERROR);
}
}
});
}
/**
* 生成入庫對象 * 生成入庫對象
*/ */
private OrderWareHouseBean getWareHouseBean(int state, String remark, double totalAmount, List<OrderWareHouseBean.PurchaseWarehousingOrderDetail> purchaseWarehousingOrderDetails) { private OrderWareHouseBean getWareHouseBean(int state, String remark, double totalAmount, List<OrderWareHouseBean.PurchaseWarehousingOrderDetail> purchaseWarehousingOrderDetails) {
......
...@@ -101,7 +101,9 @@ public class ShoppingCatPresenter extends BasePresenter<ShoppingCatContract.Mode ...@@ -101,7 +101,9 @@ public class ShoppingCatPresenter extends BasePresenter<ShoppingCatContract.Mode
PurchaseFoodBean food = foods.get(0); PurchaseFoodBean food = foods.get(0);
shoppingCartBean.setAddress(food.getAddress()); shoppingCartBean.setAddress(food.getAddress());
shoppingCartBean.setMinimumAmount(food.getMinimumAmount()); shoppingCartBean.setMinimumAmount(food.getMinimumAmount());
if (entry.getKey() != null) {
shoppingCartBean.setSupplierId(entry.getKey()); shoppingCartBean.setSupplierId(entry.getKey());
}
shoppingCartBean.setSupplierName(food.getSupplierName()); shoppingCartBean.setSupplierName(food.getSupplierName());
//統計當前供應商所選中食品的總金額 //統計當前供應商所選中食品的總金額
double supplierTotalAmount = 0; double supplierTotalAmount = 0;
......
...@@ -283,6 +283,16 @@ public interface SupplierServer { ...@@ -283,6 +283,16 @@ public interface SupplierServer {
Observable<BaseResult> deleteOrder(@Field("id") int orderId); Observable<BaseResult> deleteOrder(@Field("id") int orderId);
/** /**
* 再來一單,通過食材ids獲取詳細信息
*
* @param map
* @return
*/
@Headers({"Domain-Name: ricepon-purchase"})
@GET("purchaseFood/batch/list" + RetrofitUrlManager.IDENTIFICATION_PATH_SIZE + 2)
Observable<BaseResult> buyAgainByFoodIds(@QueryMap Map<String, Object> map);
/**
* 獲取下單頁面的分類結構 * 獲取下單頁面的分類結構
* *
* @param map * @param map
......
...@@ -2,7 +2,6 @@ package com.gingersoft.supply_chain.mvp.ui.activity; ...@@ -2,7 +2,6 @@ package com.gingersoft.supply_chain.mvp.ui.activity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent; import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.widget.EditText; import android.widget.EditText;
...@@ -10,7 +9,6 @@ import android.widget.EditText; ...@@ -10,7 +9,6 @@ import android.widget.EditText;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.gingersoft.gsa.cloud.ui.adapter.multi.InfoMultiAdapter;
import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog; import com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.di.component.DaggerSupplyChainMainComponent; import com.gingersoft.supply_chain.di.component.DaggerSupplyChainMainComponent;
...@@ -18,14 +16,10 @@ import com.gingersoft.supply_chain.mvp.content.SupplyShoppingCart; ...@@ -18,14 +16,10 @@ import com.gingersoft.supply_chain.mvp.content.SupplyShoppingCart;
import com.gingersoft.supply_chain.mvp.contract.SupplyChainMainContract; import com.gingersoft.supply_chain.mvp.contract.SupplyChainMainContract;
import com.gingersoft.supply_chain.mvp.presenter.SupplyChainMainPresenter; import com.gingersoft.supply_chain.mvp.presenter.SupplyChainMainPresenter;
import com.gingersoft.supply_chain.mvp.ui.fragment.FunctionListFragment; import com.gingersoft.supply_chain.mvp.ui.fragment.FunctionListFragment;
import com.gingersoft.supply_chain.mvp.ui.fragment.food.FoodUnitPageFragment; import com.gingersoft.supply_chain.mvp.utils.HideUtil;
import com.gingersoft.supply_chain.mvp.utils.NotDispatchListener;
import com.jess.arms.base.BaseFragmentActivity; import com.jess.arms.base.BaseFragmentActivity;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import com.jess.arms.utils.DeviceUtils;
import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import static com.jess.arms.utils.Preconditions.checkNotNull; import static com.jess.arms.utils.Preconditions.checkNotNull;
...@@ -51,30 +45,27 @@ public class SupplyChainMainActivity extends BaseFragmentActivity<SupplyChainMai ...@@ -51,30 +45,27 @@ public class SupplyChainMainActivity extends BaseFragmentActivity<SupplyChainMai
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
// HideUtil.init(this);
loadRootFragment(R.id.layout_supply_chain_content, FunctionListFragment.newInstance()); loadRootFragment(R.id.layout_supply_chain_content, FunctionListFragment.newInstance());
} }
@Override // @Override
public boolean dispatchTouchEvent(MotionEvent ev) { // public boolean dispatchTouchEvent(MotionEvent ev) {
if (getTopFragment() instanceof NotDispatchListener) { // if (getTopFragment() instanceof NotDispatchListener) {
return super.dispatchTouchEvent(ev); // return super.dispatchTouchEvent(ev);
} // }
if (ev.getAction() == MotionEvent.ACTION_DOWN) { // if (ev.getAction() == MotionEvent.ACTION_DOWN) {
// 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点) // // 获得当前得到焦点的View,一般情况下就是EditText(特殊情况就是轨迹求或者实体案件会移动焦点)
View v = getCurrentFocus(); // View v = getCurrentFocus();
if(v != null && v.getTag() != null && v.getTag() == InfoMultiAdapter.NOT_HIDE_KEYBOARD){ // if (v != null && v.getTag() != null && v.getTag() == InfoMultiAdapter.NOT_HIDE_KEYBOARD) {
return super.dispatchTouchEvent(ev); // return super.dispatchTouchEvent(ev);
} // }
if (isShouldHideInput(v, ev)) { // if (isShouldHideInput(v, ev)) {
if (v instanceof EditText) { // DeviceUtils.hideSoftKeyboard(mContext, v);
//不然不會觸發焦點監聽事件 // }
v.clearFocus(); // }
} // return super.dispatchTouchEvent(ev);
DeviceUtils.hideSoftKeyboard(mContext, getWindow().getDecorView()); // }
}
}
return super.dispatchTouchEvent(ev);
}
/** /**
* 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时没必要隐藏 * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时没必要隐藏
...@@ -90,8 +81,13 @@ public class SupplyChainMainActivity extends BaseFragmentActivity<SupplyChainMai ...@@ -90,8 +81,13 @@ public class SupplyChainMainActivity extends BaseFragmentActivity<SupplyChainMai
int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left int left = l[0], top = l[1], bottom = top + v.getHeight(), right = left
+ v.getWidth(); + v.getWidth();
// 点击EditText的事件,忽略它。 // 点击EditText的事件,忽略它。
return event.getX() <= left || event.getX() >= right if (event.getX() > left && event.getX() < right
|| event.getY() <= top || event.getY() >= bottom; && event.getY() > top && event.getY() < bottom) {
// 点击的是输入框区域,保留点击EditText的事件
return false;
} else {
return true;
}
} }
// 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditView上,和用户用轨迹球选择其他的焦点 // 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditView上,和用户用轨迹球选择其他的焦点
return false; return false;
......
package com.gingersoft.supply_chain.mvp.ui.adapter; package com.gingersoft.supply_chain.mvp.ui.adapter;
import android.text.Editable; import android.text.Editable;
import android.text.InputFilter;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.view.View; import android.view.View;
import android.widget.EditText; import android.widget.EditText;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder; import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.mvp.bean.BasicUnitBean; import com.gingersoft.supply_chain.mvp.bean.BasicUnitBean;
...@@ -38,6 +40,7 @@ public class DeputyUnitAdapter extends BaseQuickAdapter<DeputyUnitBean, BaseView ...@@ -38,6 +40,7 @@ public class DeputyUnitAdapter extends BaseQuickAdapter<DeputyUnitBean, BaseView
viewHolder.setText(R.id.tv_deputy_unit_title, "副單位" + (viewHolder.getAdapterPosition() + 1)); viewHolder.setText(R.id.tv_deputy_unit_title, "副單位" + (viewHolder.getAdapterPosition() + 1));
viewHolder.setText(R.id.ed_deputy_unit_name, item.getDeputyUnit()); viewHolder.setText(R.id.ed_deputy_unit_name, item.getDeputyUnit());
viewHolder.setText(R.id.ed_deputy_unit_conversion_multiple, item.getConversionMultiple() + ""); viewHolder.setText(R.id.ed_deputy_unit_conversion_multiple, item.getConversionMultiple() + "");
//副單位換算倍數
TextWatcher deputyUnitNameWatcher = new TextWatcher() { TextWatcher deputyUnitNameWatcher = new TextWatcher() {
@Override @Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { public void beforeTextChanged(CharSequence s, int start, int count, int after) {
...@@ -55,6 +58,8 @@ public class DeputyUnitAdapter extends BaseQuickAdapter<DeputyUnitBean, BaseView ...@@ -55,6 +58,8 @@ public class DeputyUnitAdapter extends BaseQuickAdapter<DeputyUnitBean, BaseView
deputyUnitBean.setDeputyUnit(s + ""); deputyUnitBean.setDeputyUnit(s + "");
} }
}; };
//副單位名稱輸入框
edDeputyUnitName.setFilters(new InputFilter[]{InputFilterUtils.getLengthFilter(getContext(), 5), InputFilterUtils.getChAndEnAndNumInputFilter(getContext())});
setFocusChangeListener(edDeputyUnitName, deputyUnitNameWatcher); setFocusChangeListener(edDeputyUnitName, deputyUnitNameWatcher);
TextWatcher conversionMultipleWatcher = new TextWatcher() { TextWatcher conversionMultipleWatcher = new TextWatcher() {
@Override @Override
...@@ -75,6 +80,7 @@ public class DeputyUnitAdapter extends BaseQuickAdapter<DeputyUnitBean, BaseView ...@@ -75,6 +80,7 @@ public class DeputyUnitAdapter extends BaseQuickAdapter<DeputyUnitBean, BaseView
} }
} }
}; };
setFocusChangeListener(edConversionMultiple, conversionMultipleWatcher); setFocusChangeListener(edConversionMultiple, conversionMultipleWatcher);
if (TextUtil.isEmptyOrNullOrUndefined(item.getDeputyUnit())) { if (TextUtil.isEmptyOrNullOrUndefined(item.getDeputyUnit())) {
edDeputyUnitName.requestFocus(); edDeputyUnitName.requestFocus();
......
...@@ -3,7 +3,9 @@ package com.gingersoft.supply_chain.mvp.ui.adapter; ...@@ -3,7 +3,9 @@ package com.gingersoft.supply_chain.mvp.ui.adapter;
import android.animation.AnimatorSet; import android.animation.AnimatorSet;
import android.content.Context; import android.content.Context;
import android.text.Editable; import android.text.Editable;
import android.text.InputFilter;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.EditText; import android.widget.EditText;
...@@ -15,8 +17,10 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -15,8 +17,10 @@ import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.viewholder.BaseViewHolder; import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.common.utils.MoneyUtil; import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.ui.adapter.multi.RemarkProvider;
import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration; import com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecoration;
import com.gingersoft.gsa.cloud.ui.utils.AnimateUtils; import com.gingersoft.gsa.cloud.ui.utils.AnimateUtils;
import com.gingersoft.gsa.cloud.ui.utils.AppDialog; import com.gingersoft.gsa.cloud.ui.utils.AppDialog;
...@@ -41,45 +45,77 @@ import static com.gingersoft.supply_chain.mvp.ui.fragment.food.FoodIngredientsFr ...@@ -41,45 +45,77 @@ import static com.gingersoft.supply_chain.mvp.ui.fragment.food.FoodIngredientsFr
* Time: 18:11 * Time: 18:11
* Use: * Use:
*/ */
public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, BaseViewHolder> { public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, ShoppingCartAdapter.ViewHolder> {
private Context context; private Context context;
private DividerItemDecoration dividerItemDecoration; private DividerItemDecoration dividerItemDecoration;
private String amountUnitStr; private String amountUnitStr;
private String estimateDeliveryTimeStr; private String estimateDeliveryTimeStr;
private ShippingTextWatcher shippingTextWatcher;
public ShoppingCartAdapter(Context context, @Nullable List<ShoppingCartBean> data) { public ShoppingCartAdapter(Context context, @Nullable List<ShoppingCartBean> data) {
super(R.layout.item_shopping_cart, data); super(R.layout.item_shopping_cart, data);
this.context = context; this.context = context;
dividerItemDecoration = new DividerItemDecoration(context, DividerItemDecoration.VERTICAL_LIST); dividerItemDecoration = new DividerItemDecoration(context, DividerItemDecoration.VERTICAL_LIST);
amountUnitStr = context.getString(R.string.amount_string); amountUnitStr = context.getString(R.string.amount_string);
estimateDeliveryTimeStr = context.getString(R.string.estimate_delivery_time); estimateDeliveryTimeStr = context.getString(R.string.estimate_delivery_time);
shippingTextWatcher = new ShippingTextWatcher();
} }
@Override @Override
protected void convert(@NotNull BaseViewHolder viewHolder, ShoppingCartBean shoppingCartBean) { protected void convert(@NotNull ViewHolder viewHolder, ShoppingCartBean shoppingCartBean) {
RecyclerView rvFoods = viewHolder.getView(R.id.rv_shopping_cart_food);
//先判斷是否滿足最低採購金額
TextView tvMinMinimumAmount = viewHolder.getView(R.id.tv_minimumAmount);
viewHolder.setText(R.id.rv_purchase_shopping_estimate_delivery_time, String.format(estimateDeliveryTimeStr, shoppingCartBean.getInitialShippingTime())); viewHolder.setText(R.id.rv_purchase_shopping_estimate_delivery_time, String.format(estimateDeliveryTimeStr, shoppingCartBean.getInitialShippingTime()));
setTvMinimumAmount(shoppingCartBean, tvMinMinimumAmount, viewHolder.getView(R.id.rv_purchase_shopping_minimum_tip)); //最低採購金額
setTvMinimumAmount(viewHolder);
//選中食品的總價 //選中食品的總價
setTotalAmount(viewHolder, shoppingCartBean.getSelectFoodAmount()); setTotalAmount(viewHolder, shoppingCartBean.getSelectFoodAmount());
//實際應付金額
setActualAmount(viewHolder, MoneyUtil.sum(shoppingCartBean.getSelectFoodAmount(), shoppingCartBean.getShipping()));
//運費 //運費
TextInputEditText etShipping = viewHolder.getView(R.id.tv_order_item_freight); TextInputEditText etShipping = viewHolder.getView(R.id.tv_order_item_freight);
etShipping.removeTextChangedListener(shippingTextWatcher); etShipping.removeTextChangedListener(viewHolder.textWatcher);
viewHolder.textWatcher.setViewHolder(viewHolder).setTvActualPayAmount(viewHolder.getView(R.id.tv_order_item_actual_pay_amount));
viewHolder.setText(R.id.tv_order_item_freight, MoneyUtil.formatDouble(shoppingCartBean.getShipping())); viewHolder.setText(R.id.tv_order_item_freight, MoneyUtil.formatDouble(shoppingCartBean.getShipping()));
shippingTextWatcher.setViewHolder(viewHolder); etShipping.addTextChangedListener(viewHolder.textWatcher);
etShipping.addTextChangedListener(shippingTextWatcher);
//實際應付金額
setActualAmount(viewHolder, MoneyUtil.sum(shoppingCartBean.getSelectFoodAmount(), shoppingCartBean.getShipping()));
//選中食品的種類 //選中食品的種類
TextView tvFoodTypeNumber = viewHolder.getView(R.id.tv_order_item_food_type_total); viewHolder.setText(R.id.tv_order_item_food_type_total, String.valueOf(shoppingCartBean.getSelectSpeciesNum()));
tvFoodTypeNumber.setText(String.valueOf(shoppingCartBean.getSelectSpeciesNum()));
//供應商下的食品 //供應商下的食品
initFoods(viewHolder, shoppingCartBean);
//備註
viewHolder.setText(R.id.ed_purchase_shopping_remarks, shoppingCartBean.getRemarks());
EditText mEdRemarks = viewHolder.getView(R.id.ed_purchase_shopping_remarks);
mEdRemarks.setFilters(new InputFilter[]{InputFilterUtils.getLengthFilter(getContext(), RemarkProvider.REMARK_TEXT_LENGTH), InputFilterUtils.getChAndEnAndNumAndPtInputFilter(getContext())});
mEdRemarks.setOnFocusChangeListener((v, hasFocus) -> {
if (!hasFocus) {
//失去焦點時修改備註
ShoppingCartBean currentShoppingBean = getData().get(viewHolder.getAdapterPosition());
currentShoppingBean.setRemarks(mEdRemarks.getText() + "");
}
});
if (shoppingCartBean.isFlashing()) {
//閃爍
viewHolder.setGone(R.id.item_purchase_shopping_parent_layout, false);
AnimatorSet animatorSet = AnimateUtils.flashAnimation(viewHolder.getView(R.id.item_purchase_shopping_parent_layout));
RxJavaUtils.delay(2, aLong -> {
//停止閃爍
animatorSet.end();
shoppingCartBean.setFlashing(false);
viewHolder.setGone(R.id.item_purchase_shopping_parent_layout, true);
});
}
}
public class ViewHolder extends BaseViewHolder {
ShippingTextWatcher textWatcher = new ShippingTextWatcher();
private TextInputEditText etShipping;
public ViewHolder(@NotNull View view) {
super(view);
etShipping = view.findViewById(R.id.tv_order_item_freight);
etShipping.addTextChangedListener(textWatcher);
}
}
private void initFoods(@NotNull BaseViewHolder viewHolder, ShoppingCartBean shoppingCartBean) {
RecyclerView rvFoods = viewHolder.getView(R.id.rv_shopping_cart_food);
rvFoods.removeItemDecoration(dividerItemDecoration); rvFoods.removeItemDecoration(dividerItemDecoration);
FoodListAdapter foodListAdapter = new FoodListAdapter(R.layout.item_shopping_cart_food, context, shoppingCartBean.getFoodList(), ORDER_TYPE); FoodListAdapter foodListAdapter = new FoodListAdapter(R.layout.item_shopping_cart_food, context, shoppingCartBean.getFoodList(), ORDER_TYPE);
rvFoods.addItemDecoration(dividerItemDecoration); rvFoods.addItemDecoration(dividerItemDecoration);
...@@ -88,7 +124,7 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base ...@@ -88,7 +124,7 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base
CheckBox cbAllSelect = viewHolder.getView(R.id.cb_order_item_all_select); CheckBox cbAllSelect = viewHolder.getView(R.id.cb_order_item_all_select);
cbAllSelect.setText(shoppingCartBean.getSupplierName()); cbAllSelect.setText(shoppingCartBean.getSupplierName());
//全選按鈕的事件監聽 //全選按鈕的事件監聽
allSelectListener(foodListAdapter, shoppingCartBean, tvFoodTypeNumber, cbAllSelect, viewHolder); allSelectListener(foodListAdapter, shoppingCartBean, viewHolder.getView(R.id.tv_order_item_food_type_total), cbAllSelect, viewHolder);
cbAllSelect.setChecked(shoppingCartBean.isAllSelect()); cbAllSelect.setChecked(shoppingCartBean.isAllSelect());
//單個食品的數量修改 //單個食品的數量修改
foodListAdapter.setOnNumberChangeListener(((beforeNumber, number, position) -> { foodListAdapter.setOnNumberChangeListener(((beforeNumber, number, position) -> {
...@@ -98,17 +134,15 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base ...@@ -98,17 +134,15 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base
if (number <= 0) { if (number <= 0) {
//如果數量小於等於0,需要詢問是否刪除 //如果數量小於等於0,需要詢問是否刪除
//彈窗顯示 是否刪除 //彈窗顯示 是否刪除
new AppDialog().showWaringDialog(context, "是否刪除食品?", (view, dialog) -> { new AppDialog().showWaringDialog(context, "是否刪除食品?", true, (view, dialog) -> {
dialog.dismiss(); boolean isDeleteSupplier = deleteFood(viewHolder.getAdapterPosition(), viewHolder, viewHolder.getView(R.id.tv_order_item_food_type_total), foodListAdapter, beforeNumber, position, purchaseFoodBean);
boolean isDeleteSupplier = deleteFood(viewHolder.getAdapterPosition(), viewHolder, tvFoodTypeNumber, foodListAdapter, beforeNumber, position, purchaseFoodBean);
//如果這個供應商被刪除了,就不用判斷採購金額了 //如果這個供應商被刪除了,就不用判斷採購金額了
if (!isDeleteSupplier) { if (!isDeleteSupplier) {
//判斷當前總價是否滿足最低採購金額 //判斷當前總價是否滿足最低採購金額
setTvMinimumAmount(getData().get(viewHolder.getAdapterPosition()), tvMinMinimumAmount, viewHolder.getView(R.id.rv_purchase_shopping_minimum_tip)); setTvMinimumAmount(viewHolder);
} }
}, (view, dialog) -> { }, (view, dialog) -> {
//不刪除這個食品 //不刪除這個食品
dialog.dismiss();
if (purchaseFoodBean.getFoodQuantity() <= 0) { if (purchaseFoodBean.getFoodQuantity() <= 0) {
purchaseFoodBean.setFoodQuantity(1); purchaseFoodBean.setFoodQuantity(1);
} }
...@@ -124,7 +158,7 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base ...@@ -124,7 +158,7 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base
addTotalAmount(viewHolder, getData().get(viewHolder.getLayoutPosition()), purchaseFoodBean.getUnitPrice(), number - beforeNumber, 0); addTotalAmount(viewHolder, getData().get(viewHolder.getLayoutPosition()), purchaseFoodBean.getUnitPrice(), number - beforeNumber, 0);
} }
//判斷當前總價是否滿足最低採購金額 //判斷當前總價是否滿足最低採購金額
setTvMinimumAmount(getData().get(viewHolder.getAdapterPosition()), tvMinMinimumAmount, viewHolder.getView(R.id.rv_purchase_shopping_minimum_tip)); setTvMinimumAmount(viewHolder);
} }
})); }));
//食品的刪除按鈕點擊事件 //食品的刪除按鈕點擊事件
...@@ -151,46 +185,34 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base ...@@ -151,46 +185,34 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base
cbAllSelect.setChecked(isAllSelected); cbAllSelect.setChecked(isAllSelected);
cartBean.setAllSelect(isAllSelected); cartBean.setAllSelect(isAllSelected);
//選中時,增加金額,增加種類 //選中時,增加金額,增加種類
addFood(viewHolder, tvFoodTypeNumber, cartBean, purchaseFoodListVosBean.getUnitPrice(), purchaseFoodListVosBean.getFoodQuantity()); addFood(viewHolder, cartBean, purchaseFoodListVosBean.getUnitPrice(), purchaseFoodListVosBean.getFoodQuantity());
} else { } else {
cbAllSelect.setChecked(false); cbAllSelect.setChecked(false);
cartBean.setAllSelect(false); cartBean.setAllSelect(false);
//取消時,減去金額,減去種類 //取消時,減去金額,減去種類
minusFood(viewHolder, tvFoodTypeNumber, cartBean, purchaseFoodListVosBean.getUnitPrice(), purchaseFoodListVosBean.getFoodQuantity()); minusFood(viewHolder, cartBean, purchaseFoodListVosBean.getUnitPrice(), purchaseFoodListVosBean.getFoodQuantity());
} }
//判斷當前總價是否滿足最低採購金額 //判斷當前總價是否滿足最低採購金額
setTvMinimumAmount(getData().get(viewHolder.getAdapterPosition()), tvMinMinimumAmount, viewHolder.getView(R.id.rv_purchase_shopping_minimum_tip)); setTvMinimumAmount(viewHolder);
}); });
rvFoods.setVisibility(View.VISIBLE); rvFoods.setVisibility(View.VISIBLE);
//備註
viewHolder.setText(R.id.ed_purchase_shopping_remarks, shoppingCartBean.getRemarks());
EditText mEdRemarks = viewHolder.getView(R.id.ed_purchase_shopping_remarks);
mEdRemarks.setOnFocusChangeListener((v, hasFocus) -> {
if (!hasFocus) {
//失去焦點時修改備註
ShoppingCartBean currentShoppingBean = getData().get(viewHolder.getAdapterPosition());
currentShoppingBean.setRemarks(mEdRemarks.getText() + "");
}
});
if (shoppingCartBean.isFlashing()) {
//閃爍
viewHolder.setGone(R.id.item_purchase_shopping_parent_layout, false);
AnimatorSet animatorSet = AnimateUtils.flashAnimation(viewHolder.getView(R.id.item_purchase_shopping_parent_layout));
RxJavaUtils.delay(2, aLong -> {
//停止閃爍
animatorSet.end();
shoppingCartBean.setFlashing(false);
viewHolder.setGone(R.id.item_purchase_shopping_parent_layout, true);
});
}
} }
/**
* 運費的輸入監聽
*/
private class ShippingTextWatcher implements TextWatcher { private class ShippingTextWatcher implements TextWatcher {
BaseViewHolder viewHolder; BaseViewHolder viewHolder;
TextView tvActualPayAmount;
public void setViewHolder(BaseViewHolder viewHolder) { public ShippingTextWatcher setViewHolder(BaseViewHolder viewHolder) {
this.viewHolder = viewHolder; this.viewHolder = viewHolder;
return this;
}
public ShippingTextWatcher setTvActualPayAmount(TextView tvActualPayAmount) {
this.tvActualPayAmount = tvActualPayAmount;
return this;
} }
@Override @Override
...@@ -212,15 +234,14 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base ...@@ -212,15 +234,14 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base
if (TextUtil.isNotEmptyOrNullOrUndefined(s)) { if (TextUtil.isNotEmptyOrNullOrUndefined(s)) {
nowShipping = Double.parseDouble(s.toString()); nowShipping = Double.parseDouble(s.toString());
} }
ShoppingCartBean shoppingCartBean = getData().get(viewHolder.getAdapterPosition()); ShoppingCartBean shoppingCartBean = getData().get(viewHolder.getAdapterPosition());
//修改實際應付金額
setActualAmount(viewHolder, MoneyUtil.sum(shoppingCartBean.getSelectFoodAmount(), shoppingCartBean.getShipping()));
//通知activity修改 //通知activity修改
if (onInfoChangeListener != null) {
// getData().get(viewHolder.getAdapterPosition()).setShipping(Integer.parseInt()); onInfoChangeListener.onInfoChange(MoneyUtil.sub(nowShipping, shoppingCartBean.getShipping()), 0);
}
shoppingCartBean.setShipping(nowShipping);
//修改實際應付金額
tvActualPayAmount.setText(String.format(amountUnitStr, MoneyUtil.sum(shoppingCartBean.getSelectFoodAmount(), shoppingCartBean.getShipping())));
} }
} }
} }
...@@ -242,17 +263,22 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base ...@@ -242,17 +263,22 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base
viewHolder.setText(R.id.tv_order_item_actual_pay_amount, String.format(amountUnitStr, totalAmount)); viewHolder.setText(R.id.tv_order_item_actual_pay_amount, String.format(amountUnitStr, totalAmount));
} }
/**
private void setTvMinimumAmount(ShoppingCartBean shoppingCartBean, TextView tvMinMinimumAmount, TextView tipTv) { * 最低採購金額
*
* @param viewHolder
*/
private void setTvMinimumAmount(BaseViewHolder viewHolder) {
ShoppingCartBean shoppingCartBean = getData().get(viewHolder.getAdapterPosition());
if (MoneyUtil.compareTo(shoppingCartBean.getSelectFoodAmount(), shoppingCartBean.getMinimumAmount()) < 0) { if (MoneyUtil.compareTo(shoppingCartBean.getSelectFoodAmount(), shoppingCartBean.getMinimumAmount()) < 0) {
//小於最低採購金額 //小於最低採購金額
tvMinMinimumAmount.setText(String.format(context.getString(R.string.minimumAmount), shoppingCartBean.getMinimumAmount())); viewHolder.setText(R.id.tv_minimumAmount, String.format(context.getString(R.string.minimumAmount), shoppingCartBean.getMinimumAmount()));
tvMinMinimumAmount.setTextColor(ContextCompat.getColor(context, R.color.required_color)); viewHolder.setTextColor(R.id.tv_minimumAmount, ContextCompat.getColor(context, R.color.required_color));
tipTv.setVisibility(View.VISIBLE); viewHolder.setGone(R.id.rv_purchase_shopping_minimum_tip, false);
} else { } else {
tvMinMinimumAmount.setText(shoppingCartBean.getAddress()); viewHolder.setText(R.id.tv_minimumAmount, shoppingCartBean.getAddress());
tvMinMinimumAmount.setTextColor(ContextCompat.getColor(context, R.color.color_3c)); viewHolder.setTextColor(R.id.tv_minimumAmount, ContextCompat.getColor(context, R.color.color_3c));
tipTv.setVisibility(View.GONE); viewHolder.setGone(R.id.rv_purchase_shopping_minimum_tip, true);
} }
} }
...@@ -285,7 +311,7 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base ...@@ -285,7 +311,7 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base
if (purchaseFoodBean.isChecked()) { if (purchaseFoodBean.isChecked()) {
//計算這個供應商 選中食材的價格,減去當前這個食材的價格 //計算這個供應商 選中食材的價格,減去當前這個食材的價格
ShoppingCartBean shoppingCartBean1 = getData().get(supplierPosition); ShoppingCartBean shoppingCartBean1 = getData().get(supplierPosition);
minusFood(viewHolder, tvFoodTypeNumber, shoppingCartBean1, purchaseFoodBean.getUnitPrice(), beforeNumber); minusFood(viewHolder, shoppingCartBean1, purchaseFoodBean.getUnitPrice(), beforeNumber);
} }
} }
return false; return false;
...@@ -294,30 +320,28 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base ...@@ -294,30 +320,28 @@ public class ShoppingCartAdapter extends BaseQuickAdapter<ShoppingCartBean, Base
/** /**
* 取消選中或刪除食品 需要對種類進行操作 * 取消選中或刪除食品 需要對種類進行操作
* *
* @param tvFoodTypeNumber 種類textview
* @param cartBean 當前供應商信息 * @param cartBean 當前供應商信息
* @param unitPrice 食品單價 * @param unitPrice 食品單價
* @param foodQuantity 食品數量 * @param foodQuantity 食品數量
*/ */
private void minusFood(BaseViewHolder viewHolder, TextView tvFoodTypeNumber, ShoppingCartBean cartBean, double unitPrice, int foodQuantity) { private void minusFood(BaseViewHolder viewHolder, ShoppingCartBean cartBean, double unitPrice, int foodQuantity) {
int species = cartBean.getSelectSpeciesNum() - 1; int species = cartBean.getSelectSpeciesNum() - 1;
cartBean.setSelectSpeciesNum(species); cartBean.setSelectSpeciesNum(species);
tvFoodTypeNumber.setText(String.valueOf(species)); viewHolder.setText(R.id.tv_order_item_food_type_total, String.valueOf(species));
minusTotalPrice(viewHolder, cartBean, unitPrice, foodQuantity, -1); minusTotalPrice(viewHolder, cartBean, unitPrice, foodQuantity, -1);
} }
/** /**
* 選中食品 需要對種類進行操作 * 選中食品 需要對種類進行操作
* *
* @param tvFoodTypeNumber 種類textview
* @param cartBean 當前供應商信息 * @param cartBean 當前供應商信息
* @param unitPrice 食品單價 * @param unitPrice 食品單價
* @param foodQuantity 食品數量 * @param foodQuantity 食品數量
*/ */
private void addFood(BaseViewHolder viewHolder, TextView tvFoodTypeNumber, ShoppingCartBean cartBean, double unitPrice, int foodQuantity) { private void addFood(BaseViewHolder viewHolder, ShoppingCartBean cartBean, double unitPrice, int foodQuantity) {
int species = cartBean.getSelectSpeciesNum() + 1; int species = cartBean.getSelectSpeciesNum() + 1;
cartBean.setSelectSpeciesNum(species); cartBean.setSelectSpeciesNum(species);
tvFoodTypeNumber.setText(String.valueOf(species)); viewHolder.setText(R.id.tv_order_item_food_type_total, String.valueOf(species));
addTotalAmount(viewHolder, cartBean, unitPrice, foodQuantity, 1); addTotalAmount(viewHolder, cartBean, unitPrice, foodQuantity, 1);
} }
......
...@@ -154,7 +154,6 @@ public class CategoryFragment extends BaseSupplyChainFragment<CategoryPresenter> ...@@ -154,7 +154,6 @@ public class CategoryFragment extends BaseSupplyChainFragment<CategoryPresenter>
//刪除分類 //刪除分類
AppDialog.getInstance().showWaringDialog(mContext, String.format(getString(R.string.str_delete_category_tip), foodCategoryTrees.getName()), (view, dialog) -> { AppDialog.getInstance().showWaringDialog(mContext, String.format(getString(R.string.str_delete_category_tip), foodCategoryTrees.getName()), (view, dialog) -> {
categoryPopup.dismiss(); categoryPopup.dismiss();
dialog.dismiss();
mPresenter.deleteFoodCategory(foodCategoryTrees, currentLevel, position); mPresenter.deleteFoodCategory(foodCategoryTrees, currentLevel, position);
}); });
}); });
......
...@@ -401,7 +401,6 @@ public class FoodIngredientsFragment extends BaseSupplyChainFragment<FoodIngredi ...@@ -401,7 +401,6 @@ public class FoodIngredientsFragment extends BaseSupplyChainFragment<FoodIngredi
purchaseFoodBean.setFoodCategoryName(getCurrentCategory()); purchaseFoodBean.setFoodCategoryName(getCurrentCategory());
} }
mPresenter.deleteFood(purchaseFoodBean.getId(), purchaseFoodBean.getSupplierId(), purchaseFoodBean.getFoodCategoryId(), position); mPresenter.deleteFood(purchaseFoodBean.getId(), purchaseFoodBean.getSupplierId(), purchaseFoodBean.getFoodCategoryId(), position);
dialog.dismiss();
}); });
} }
}); });
......
package com.gingersoft.supply_chain.mvp.ui.fragment.food; package com.gingersoft.supply_chain.mvp.ui.fragment.food;
import android.os.Bundle; import android.os.Bundle;
import android.text.InputFilter;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
...@@ -16,6 +17,7 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -16,6 +17,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.listener.OnItemChildClickListener; import com.chad.library.adapter.base.listener.OnItemChildClickListener;
import com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.ui.utils.AppDialog; import com.gingersoft.gsa.cloud.ui.utils.AppDialog;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
...@@ -28,8 +30,14 @@ import com.gingersoft.supply_chain.mvp.presenter.FoodUnitPagePresenter; ...@@ -28,8 +30,14 @@ import com.gingersoft.supply_chain.mvp.presenter.FoodUnitPagePresenter;
import com.gingersoft.supply_chain.mvp.ui.adapter.BasicUnitAdapter; import com.gingersoft.supply_chain.mvp.ui.adapter.BasicUnitAdapter;
import com.gingersoft.supply_chain.mvp.ui.adapter.DeputyUnitAdapter; import com.gingersoft.supply_chain.mvp.ui.adapter.DeputyUnitAdapter;
import com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment; import com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment;
import com.gingersoft.supply_chain.mvp.ui.widget.EditTextPopup;
import com.gingersoft.supply_chain.mvp.utils.NotDispatchListener; import com.gingersoft.supply_chain.mvp.utils.NotDispatchListener;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.lxj.xpopup.XPopup;
import com.lxj.xpopup.impl.ConfirmPopupView;
import com.lxj.xpopup.interfaces.OnCancelListener;
import com.lxj.xpopup.interfaces.OnConfirmListener;
import com.lxj.xpopup.interfaces.OnInputConfirmListener;
import com.qmuiteam.qmui.alpha.QMUIAlphaTextView; import com.qmuiteam.qmui.alpha.QMUIAlphaTextView;
import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.QMUITopBar;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog; import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
...@@ -46,7 +54,7 @@ import butterknife.OnClick; ...@@ -46,7 +54,7 @@ import butterknife.OnClick;
/** /**
* ================================================ * ================================================
* Description: 最新版食品單位填寫頁面 * Description: 食品單位填寫頁面
*/ */
public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePresenter> implements FoodUnitPageContract.View, NotDispatchListener { public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePresenter> implements FoodUnitPageContract.View, NotDispatchListener {
...@@ -117,6 +125,7 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr ...@@ -117,6 +125,7 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr
@Override @Override
public void initData(@Nullable Bundle savedInstanceState) { public void initData(@Nullable Bundle savedInstanceState) {
mPresenter.initData(getArguments()); mPresenter.initData(getArguments());
edBasicUnit.setFilters(new InputFilter[]{InputFilterUtils.getLengthFilter(requireContext(), 5), InputFilterUtils.getChAndEnAndNumInputFilter(requireContext())});
edBasicUnit.requestFocus(); edBasicUnit.requestFocus();
} }
...@@ -156,14 +165,12 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr ...@@ -156,14 +165,12 @@ public class FoodUnitPageFragment extends BaseSupplyChainFragment<FoodUnitPagePr
basicUnitAdapter.setOnItemClickListener((adapter, view, position) -> { basicUnitAdapter.setOnItemClickListener((adapter, view, position) -> {
if (position == basicUnitAdapter.getItemCount() - 1) { if (position == basicUnitAdapter.getItemCount() - 1) {
//新增 //新增
AppDialog.getInstance().showEditDialog(mContext, "新增單位", "單位名稱:", "", "", new AppDialog.OnInputConfirmListener() { EditTextPopup popup = new EditTextPopup(requireContext(), new InputFilter[]{InputFilterUtils.getLengthFilter(mContext, 4), InputFilterUtils.getChAndEnAndNumInputFilter(mContext)});
@Override popup.setListener(text -> {
public void onConfirm(String text) {
if (TextUtil.isNotEmptyOrNullOrUndefined(text)) { if (TextUtil.isNotEmptyOrNullOrUndefined(text)) {
mPresenter.addBasicUnit(text, basicUnitAdapter.getData()); mPresenter.addBasicUnit(text, basicUnitAdapter.getData());
} }
} }, null);
});
} else { } else {
//先獲取當前焦點在哪個輸入框上,然後再填充內容 //先獲取當前焦點在哪個輸入框上,然後再填充內容
FragmentActivity activity = getActivity(); FragmentActivity activity = getActivity();
......
...@@ -177,7 +177,6 @@ public class MeasurementUnitFragment extends BaseSupplyChainFragment<Measurement ...@@ -177,7 +177,6 @@ public class MeasurementUnitFragment extends BaseSupplyChainFragment<Measurement
List<MeasurementUnitBean.DataBean.Unit> data = measurementUnitAdapter.getData(); List<MeasurementUnitBean.DataBean.Unit> data = measurementUnitAdapter.getData();
MeasurementUnitBean.DataBean.Unit unit = data.get(position); MeasurementUnitBean.DataBean.Unit unit = data.get(position);
new AppDialog().showWaringDialog(mContext, "是否確認刪除?", (view1, dialog) -> { new AppDialog().showWaringDialog(mContext, "是否確認刪除?", (view1, dialog) -> {
dialog.dismiss();
mPresenter.deleteMeasurementUnit(unit, position); mPresenter.deleteMeasurementUnit(unit, position);
}); });
}); });
......
...@@ -98,7 +98,7 @@ public class NewFoodUnitFragment extends BaseSupplyChainFragment<NewFoodUnitPres ...@@ -98,7 +98,7 @@ public class NewFoodUnitFragment extends BaseSupplyChainFragment<NewFoodUnitPres
infoMultiBeans.add(unitType); infoMultiBeans.add(unitType);
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "計量單位", false, "請輸入計量單位", new InputFilter[]{InputFilterUtils.getLengthFilter(mContext, 4), InputFilterUtils.getChAndEnAndNumInputFilter(mContext)})); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_TYPE_INPUT, "計量單位", false, "請輸入計量單位", new InputFilter[]{InputFilterUtils.getLengthFilter(mContext, 4), InputFilterUtils.getChAndEnAndNumInputFilter(mContext)}));
infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_MULTIPLE_INPUT_REMARK, "備註", false, "請輸入備註", new InputFilter[]{InputFilterUtils.getChAndEnAndNumInputFilter(mContext)})); infoMultiBeans.add(new MultiInputBean(InfoMultiBean.ITEM_MULTIPLE_INPUT_REMARK, "備註", false, "請輸入備註", new InputFilter[]{InputFilterUtils.getChAndEnAndNumAndPtInputFilter(mContext)}));
if(foodUnit != null){ if(foodUnit != null){
units.get(foodUnit.getType()).setChecked(true); units.get(foodUnit.getType()).setChecked(true);
infoMultiBeans.get(1).setShowValue(foodUnit.getUnitContent()); infoMultiBeans.get(1).setShowValue(foodUnit.getUnitContent());
......
package com.gingersoft.supply_chain.mvp.ui.fragment.order; package com.gingersoft.supply_chain.mvp.ui.fragment.order;
import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
...@@ -32,6 +33,7 @@ import com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils; ...@@ -32,6 +33,7 @@ import com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils;
import com.gingersoft.gsa.cloud.common.utils.other.TextUtil; import com.gingersoft.gsa.cloud.common.utils.other.TextUtil;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils; import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.ui.adapter.multi.RemarkProvider;
import com.gingersoft.gsa.cloud.ui.utils.AppDialog; import com.gingersoft.gsa.cloud.ui.utils.AppDialog;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.R2; import com.gingersoft.supply_chain.R2;
...@@ -151,7 +153,7 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr ...@@ -151,7 +153,7 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr
initTopBar(supplyTopBar, "入庫單"); initTopBar(supplyTopBar, "入庫單");
supplyTopBar.addRightImageButton(R.drawable.ic_white_more, R.id.id_more).setOnClickListener(this); supplyTopBar.addRightImageButton(R.drawable.ic_white_more, R.id.id_more).setOnClickListener(this);
supplyTopBar.addRightImageButton(R.drawable.ic_take_pictures, R.id.id_take_pictures).setOnClickListener(this); supplyTopBar.addRightImageButton(R.drawable.ic_take_pictures, R.id.id_take_pictures).setOnClickListener(this);
edRemark.setFilters(new InputFilter[]{InputFilterUtils.getLengthFilter(requireContext(), 50)}); edRemark.setFilters(new InputFilter[]{InputFilterUtils.getLengthFilter(mContext, RemarkProvider.REMARK_TEXT_LENGTH), InputFilterUtils.getChAndEnAndNumAndPtInputFilter(mContext)});
Bundle arguments = getArguments(); Bundle arguments = getArguments();
if (arguments != null) { if (arguments != null) {
int orderId = arguments.getInt(ORDER_DETAILS_ORDER_ID, 0); int orderId = arguments.getInt(ORDER_DETAILS_ORDER_ID, 0);
...@@ -182,50 +184,50 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr ...@@ -182,50 +184,50 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr
//更多:刪除。發送。再次購買 //更多:刪除。發送。再次購買
String[] functions; String[] functions;
if (orderState == PurchaseOrderDetailsBean.COMPLETE_RECEIVED) { if (orderState == PurchaseOrderDetailsBean.COMPLETE_RECEIVED) {
functions = new String[]{"删除"}; functions = new String[]{"再來一單", "删除"};
} else { } else {
functions = new String[]{"删除", "部分收貨", "收貨"}; functions = new String[]{"再來一單", "删除", "部分收貨", "收貨"};
} }
new XPopup.Builder(mContext) new XPopup.Builder(mContext)
.atView(v) .atView(v)
.hasShadowBg(false) .hasShadowBg(false)
.popupPosition(PopupPosition.Left) .popupPosition(PopupPosition.Left)
.asCustom(new PurchaseListMorePopup(mContext) .asCustom(new PurchaseListMorePopup(mContext)
.setStringData(functions, new int[]{R.drawable.ic_purchase_delete, R.drawable.ic_small_partial_receipt, R.drawable.ic_receipt}) .setStringData(functions, new int[]{R.drawable.ic_purchase_buy_again, R.drawable.ic_purchase_delete, R.drawable.ic_small_partial_receipt, R.drawable.ic_receipt})
.setOnSelectListener(mOnSelectListener)) .setOnSelectListener(mOnSelectListener))
.show(); .show();
} else if (viewId == R.id.tv_order_details_partial_receipt) { } else if (viewId == R.id.tv_order_details_partial_receipt) {
//部分收貨 //部分收貨
mPresenter.addWarehouse(PurchaseOrderDetailsBean.PART_RECEIVED, edRemark.getText() + "", totalAmount, orderDetailsFoodAdapter.getData()); addWarehouse(PurchaseOrderDetailsBean.PART_RECEIVED);
// setFragmentResult(RESULT_OK, null);
} else if (viewId == R.id.tv_order_details_receipt) { } else if (viewId == R.id.tv_order_details_receipt) {
//收貨 //收貨
mPresenter.addWarehouse(PurchaseOrderDetailsBean.COMPLETE_RECEIVED, edRemark.getText() + "", totalAmount, orderDetailsFoodAdapter.getData()); addWarehouse(PurchaseOrderDetailsBean.COMPLETE_RECEIVED);
// setFragmentResult(RESULT_OK, null);
} else if (viewId == R.id.layout_remarks) { } else if (viewId == R.id.layout_remarks) {
//備註,顯示備註輸入框 //備註,顯示備註輸入框
layoutEdRemark.setVisibility(layoutEdRemark.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE); layoutEdRemark.setVisibility(layoutEdRemark.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
} }
} }
private OnSelectListener mOnSelectListener = new OnSelectListener() { private void addWarehouse(int state) {
@Override AppDialog.getInstance().showWaringDialog(requireContext(), "是否確認收貨?", (view, dialog) -> {
public void onSelect(int position, String text) { mPresenter.addWarehouse(state, edRemark.getText() + "", totalAmount, orderDetailsFoodAdapter.getData());
if (position == 0) { setFragmentResult(RESULT_OK, null);
//刪除
AppDialog.getInstance().showWaringDialog(mContext, "是否刪除訂單", (view1, dialog) -> {
dialog.dismiss();
mPresenter.deleteOrder();
}); });
}
private OnSelectListener mOnSelectListener = (position, text) -> {
if (position == 0) {
//再來一單
mPresenter.buyAgainByFoodIds(orderDetailsFoodAdapter.getData());
} else if (position == 1) { } else if (position == 1) {
//部分收貨 //刪除訂單
mPresenter.addWarehouse(PurchaseOrderDetailsBean.PART_RECEIVED, edRemark.getText() + "", totalAmount, orderDetailsFoodAdapter.getData()); AppDialog.getInstance().showWaringDialog(mContext, "是否刪除訂單", (view1, dialog) -> mPresenter.deleteOrder());
setFragmentResult(RESULT_OK, null);
} else if (position == 2) { } else if (position == 2) {
//部分收貨
addWarehouse(PurchaseOrderDetailsBean.PART_RECEIVED);
} else if (position == 3) {
//收貨 //收貨
mPresenter.addWarehouse(PurchaseOrderDetailsBean.COMPLETE_RECEIVED, edRemark.getText() + "", totalAmount, orderDetailsFoodAdapter.getData()); addWarehouse(PurchaseOrderDetailsBean.COMPLETE_RECEIVED);
setFragmentResult(RESULT_OK, null);
}
} }
}; };
...@@ -313,6 +315,11 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr ...@@ -313,6 +315,11 @@ public class OrderDetailsFragment extends BaseSupplyChainFragment<OrderDetailsPr
imageAdapter.addData(imgUrl); imageAdapter.addData(imgUrl);
} }
@Override
public void buyAgain() {
startWithPop(ShoppingCatFragment.newInstance());
}
public static class ImageLoader implements XPopupImageLoader { public static class ImageLoader implements XPopupImageLoader {
@Override @Override
public void loadImage(int position, @NonNull Object url, @NonNull ImageView imageView) { public void loadImage(int position, @NonNull Object url, @NonNull ImageView imageView) {
......
...@@ -194,7 +194,6 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr ...@@ -194,7 +194,6 @@ public class PurchaseListFragment extends BaseSupplyChainFragment<PurchaseListPr
if (popupPosition == 0) { if (popupPosition == 0) {
//刪除 //刪除
AppDialog.getInstance().showWaringDialog(mContext, "是否刪除訂單", (view1, dialog) -> { AppDialog.getInstance().showWaringDialog(mContext, "是否刪除訂單", (view1, dialog) -> {
dialog.dismiss();
mPresenter.deleteOrder(position, purchaseOrderAdapter.getData().get(position).getId()); mPresenter.deleteOrder(position, purchaseOrderAdapter.getData().get(position).getId());
}); });
} else if (popupPosition == 1) { } else if (popupPosition == 1) {
......
...@@ -121,7 +121,6 @@ public class ShoppingCatFragment extends BaseSupplyChainFragment<ShoppingCatPres ...@@ -121,7 +121,6 @@ public class ShoppingCatFragment extends BaseSupplyChainFragment<ShoppingCatPres
//完成,篩選出選擇的食品 //完成,篩選出選擇的食品
if (mPresenter.filterData(shoppingCartAdapter.getData())) { if (mPresenter.filterData(shoppingCartAdapter.getData())) {
AppDialog.getInstance().showWaringDialog(requireContext(), "確認創建訂單?", (view, dialog) -> { AppDialog.getInstance().showWaringDialog(requireContext(), "確認創建訂單?", (view, dialog) -> {
dialog.dismiss();
mPresenter.createOrder(shoppingCartAdapter.getData()); mPresenter.createOrder(shoppingCartAdapter.getData());
}); });
} }
......
...@@ -2,8 +2,10 @@ package com.gingersoft.supply_chain.mvp.ui.fragment.supplier; ...@@ -2,8 +2,10 @@ package com.gingersoft.supply_chain.mvp.ui.fragment.supplier;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.EditText;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
...@@ -20,6 +22,7 @@ import com.gingersoft.supply_chain.mvp.contract.NewSupplierContract; ...@@ -20,6 +22,7 @@ import com.gingersoft.supply_chain.mvp.contract.NewSupplierContract;
import com.gingersoft.supply_chain.mvp.presenter.NewSupplierPresenter; import com.gingersoft.supply_chain.mvp.presenter.NewSupplierPresenter;
import com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment; import com.gingersoft.supply_chain.mvp.ui.fragment.BaseSupplyChainFragment;
import com.jess.arms.di.component.AppComponent; import com.jess.arms.di.component.AppComponent;
import com.jess.arms.utils.DeviceUtils;
import com.qmuiteam.qmui.alpha.QMUIAlphaButton; import com.qmuiteam.qmui.alpha.QMUIAlphaButton;
import com.qmuiteam.qmui.widget.QMUITopBar; import com.qmuiteam.qmui.widget.QMUITopBar;
...@@ -31,6 +34,7 @@ import static com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecorat ...@@ -31,6 +34,7 @@ import static com.gingersoft.gsa.cloud.ui.recylcler.decorator.DividerItemDecorat
/** /**
* Description:新增或編輯供應商 * Description:新增或編輯供應商
*
* @author yuhang * @author yuhang
*/ */
public class NewSupplierFragment extends BaseSupplyChainFragment<NewSupplierPresenter> implements NewSupplierContract.View, View.OnClickListener { public class NewSupplierFragment extends BaseSupplyChainFragment<NewSupplierPresenter> implements NewSupplierContract.View, View.OnClickListener {
...@@ -104,7 +108,6 @@ public class NewSupplierFragment extends BaseSupplyChainFragment<NewSupplierPres ...@@ -104,7 +108,6 @@ public class NewSupplierFragment extends BaseSupplyChainFragment<NewSupplierPres
if (viewId == R.id.topbar_right_delete_button) { if (viewId == R.id.topbar_right_delete_button) {
//刪除供應商 //刪除供應商
new AppDialog().showWaringDialog(mContext, "刪除供應商", (view1, dialog) -> { new AppDialog().showWaringDialog(mContext, "刪除供應商", (view1, dialog) -> {
dialog.dismiss();
mPresenter.deleteSupplier(supplierBean.getId()); mPresenter.deleteSupplier(supplierBean.getId());
}); });
} else if (viewId == R.id.btn_save_supplier) { } else if (viewId == R.id.btn_save_supplier) {
......
package com.gingersoft.supply_chain.mvp.ui.fragment.supplier; package com.gingersoft.supply_chain.mvp.ui.fragment.supplier;
import android.os.Bundle; import android.os.Bundle;
import android.text.InputFilter;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
...@@ -16,6 +17,7 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -16,6 +17,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback; import com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback;
import com.gingersoft.gsa.cloud.common.loadsir.ErrorCallback; import com.gingersoft.gsa.cloud.common.loadsir.ErrorCallback;
import com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils;
import com.gingersoft.gsa.cloud.ui.utils.AppDialog; import com.gingersoft.gsa.cloud.ui.utils.AppDialog;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.R2; import com.gingersoft.supply_chain.R2;
...@@ -142,6 +144,7 @@ public class SupplierListFragment extends BaseSupplyChainFragment<SupplierListPr ...@@ -142,6 +144,7 @@ public class SupplierListFragment extends BaseSupplyChainFragment<SupplierListPr
} }
return false; return false;
}); });
edSupplier.setFilters(new InputFilter[]{InputFilterUtils.getLengthFilter(mContext, 16), InputFilterUtils.getChAndEnAndNumInputFilter(mContext)});
} }
private void getSupplierList() { private void getSupplierList() {
...@@ -226,7 +229,6 @@ public class SupplierListFragment extends BaseSupplyChainFragment<SupplierListPr ...@@ -226,7 +229,6 @@ public class SupplierListFragment extends BaseSupplyChainFragment<SupplierListPr
supplierAdapter.setOnItemChildClickListener((adapter, view, position) -> { supplierAdapter.setOnItemChildClickListener((adapter, view, position) -> {
if (view.getId() == R.id.iv_supplier_delete) { if (view.getId() == R.id.iv_supplier_delete) {
new AppDialog().showWaringDialog(mContext, "刪除供應商", (view1, dialog) -> { new AppDialog().showWaringDialog(mContext, "刪除供應商", (view1, dialog) -> {
dialog.dismiss();
List<SupplierInfoBean> data = supplierAdapter.getData(); List<SupplierInfoBean> data = supplierAdapter.getData();
mPresenter.deleteSupplier(data.get(position).getId(), position); mPresenter.deleteSupplier(data.get(position).getId(), position);
}); });
......
package com.gingersoft.supply_chain.mvp.ui.fragment.warehouse; package com.gingersoft.supply_chain.mvp.ui.fragment.warehouse;
import android.os.Bundle; import android.os.Bundle;
import android.text.InputFilter;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -19,6 +20,7 @@ import com.chad.library.adapter.base.listener.OnItemChildClickListener; ...@@ -19,6 +20,7 @@ import com.chad.library.adapter.base.listener.OnItemChildClickListener;
import com.chad.library.adapter.base.listener.OnItemClickListener; import com.chad.library.adapter.base.listener.OnItemClickListener;
import com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback; import com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback;
import com.gingersoft.gsa.cloud.common.loadsir.ErrorCallback; import com.gingersoft.gsa.cloud.common.loadsir.ErrorCallback;
import com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.R2; import com.gingersoft.supply_chain.R2;
import com.gingersoft.supply_chain.di.component.DaggerWareHouseListComponent; import com.gingersoft.supply_chain.di.component.DaggerWareHouseListComponent;
...@@ -120,6 +122,7 @@ public class WareHouseListFragment extends BaseSupplyChainFragment<WareHouseList ...@@ -120,6 +122,7 @@ public class WareHouseListFragment extends BaseSupplyChainFragment<WareHouseList
getWarehousing(); getWarehousing();
}); });
getWarehousing(); getWarehousing();
edWarehouseListSearch.setFilters(new InputFilter[]{InputFilterUtils.getLengthFilter(mContext, 16), InputFilterUtils.getChAndEnAndNumAndPtInputFilter(mContext)});
} }
private void getWarehousing() { private void getWarehousing() {
...@@ -190,7 +193,7 @@ public class WareHouseListFragment extends BaseSupplyChainFragment<WareHouseList ...@@ -190,7 +193,7 @@ public class WareHouseListFragment extends BaseSupplyChainFragment<WareHouseList
rvWarehouseList.setAdapter(warehousingQueryAdapter); rvWarehouseList.setAdapter(warehousingQueryAdapter);
warehousingQueryAdapter.setOnItemChildClickListener((adapter, view, position) -> { warehousingQueryAdapter.setOnItemChildClickListener((adapter, view, position) -> {
if(view.getId() == R.id.tv_warehouse_item_inventory_quantity){ if (view.getId() == R.id.tv_warehouse_item_inventory_quantity) {
//點擊庫存數量,進入庫存盤點 //點擊庫存數量,進入庫存盤點
startForResult(WarehousingInventoryFragment.newInstance(warehousingQueryAdapter.getItem(position)), UPDATE_KEY); startForResult(WarehousingInventoryFragment.newInstance(warehousingQueryAdapter.getItem(position)), UPDATE_KEY);
} }
...@@ -207,7 +210,7 @@ public class WareHouseListFragment extends BaseSupplyChainFragment<WareHouseList ...@@ -207,7 +210,7 @@ public class WareHouseListFragment extends BaseSupplyChainFragment<WareHouseList
@Override @Override
public void onFragmentResult(int requestCode, int resultCode, Bundle data) { public void onFragmentResult(int requestCode, int resultCode, Bundle data) {
super.onFragmentResult(requestCode, resultCode, data); super.onFragmentResult(requestCode, resultCode, data);
if(requestCode == UPDATE_KEY && resultCode == RESULT_OK){ if (requestCode == UPDATE_KEY && resultCode == RESULT_OK) {
getWarehousing(); getWarehousing();
} }
} }
......
package com.gingersoft.supply_chain.mvp.ui.widget;
import android.content.Context;
import android.text.InputFilter;
import androidx.annotation.NonNull;
import com.gingersoft.supply_chain.R;
import com.lxj.xpopup.impl.InputConfirmPopupView;
/**
* @author 宇航.
* User: admin
* Date: 2021/2/4
* Time: 10:20
* Use:
*/
public class EditTextPopup extends InputConfirmPopupView {
private InputFilter[] inputFilters;
/**
* @param context
*/
public EditTextPopup(@NonNull Context context) {
super(context, R.layout.dialog_edit);
}
/**
* @param context
*/
public EditTextPopup(@NonNull Context context, InputFilter[] inputFilters) {
super(context, R.layout.dialog_edit);
this.inputFilters = inputFilters;
}
@Override
protected void onCreate() {
super.onCreate();
getEditText().setFilters(inputFilters);
}
}
...@@ -2,6 +2,7 @@ package com.gingersoft.supply_chain.mvp.ui.widget; ...@@ -2,6 +2,7 @@ package com.gingersoft.supply_chain.mvp.ui.widget;
import android.content.Context; import android.content.Context;
import android.text.Editable; import android.text.Editable;
import android.text.InputFilter;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.view.View; import android.view.View;
import android.widget.EditText; import android.widget.EditText;
...@@ -14,7 +15,9 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -14,7 +15,9 @@ import androidx.recyclerview.widget.RecyclerView;
import com.chad.library.adapter.base.BaseQuickAdapter; import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.listener.OnItemClickListener; import com.chad.library.adapter.base.listener.OnItemClickListener;
import com.chad.library.adapter.base.viewholder.BaseViewHolder; import com.chad.library.adapter.base.viewholder.BaseViewHolder;
import com.gingersoft.gsa.cloud.common.utils.inputFilter.InputFilterUtils;
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils; import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.ui.adapter.multi.RemarkProvider;
import com.gingersoft.supply_chain.R; import com.gingersoft.supply_chain.R;
import com.gingersoft.supply_chain.mvp.bean.ConsumeReasonBean; import com.gingersoft.supply_chain.mvp.bean.ConsumeReasonBean;
import com.lxj.xpopup.impl.ConfirmPopupView; import com.lxj.xpopup.impl.ConfirmPopupView;
...@@ -61,6 +64,7 @@ public class InventoryConsumptionPopup extends ConfirmPopupView { ...@@ -61,6 +64,7 @@ public class InventoryConsumptionPopup extends ConfirmPopupView {
protected void onCreate() { protected void onCreate() {
super.onCreate(); super.onCreate();
edRemarks = findViewById(R.id.ed_inventory_consumption_remark); edRemarks = findViewById(R.id.ed_inventory_consumption_remark);
edRemarks.setFilters(new InputFilter[]{InputFilterUtils.getLengthFilter(getContext(), RemarkProvider.REMARK_TEXT_LENGTH), InputFilterUtils.getChAndEnAndNumAndPtInputFilter(getContext())});
edInput = findViewById(R.id.et_input); edInput = findViewById(R.id.et_input);
rvConsumptionReason = findViewById(R.id.rv_inventory_consumption_reason); rvConsumptionReason = findViewById(R.id.rv_inventory_consumption_reason);
ConsumptionReasonAdapter consumptionReasonAdapter = new ConsumptionReasonAdapter(); ConsumptionReasonAdapter consumptionReasonAdapter = new ConsumptionReasonAdapter();
......
...@@ -21,11 +21,21 @@ public class InputFilterUtils { ...@@ -21,11 +21,21 @@ public class InputFilterUtils {
/** /**
* 只能輸入中英文和數字 * 只能輸入中英文和數字
*/ */
public static final Pattern ChAndEnAndNum = Pattern.compile("[-a-zA-Z0-9\u4E00-\u9FA5]+"); public static final Pattern chAndEnAndNum = Pattern.compile("[a-zA-Z0-9\u4E00-\u9FA5]+");
/** /**
* 只能輸入英文和數字 * 只能輸入英文和數字
*/ */
public static final Pattern EnAndNum = Pattern.compile("[-a-zA-Z0-9]+"); public static final Pattern enAndNum = Pattern.compile("[a-zA-Z0-9]+");
/**
* 只能輸入中英文和數字還有一些標點符號
* Punctuation
*/
public static final Pattern chAndEnAndNumAndPt = Pattern.compile("[-a-zA-Z0-9\u4E00-\u9FA5/,.;,。;!!??]+");
/**
* 只能輸入中英文和數字還有/
* Punctuation
*/
public static final Pattern chAndEnAndNumAndSlash = Pattern.compile("[-a-zA-Z0-9\u4E00-\u9FA5/]+");
/** /**
* emoji过滤器 * emoji过滤器
...@@ -34,8 +44,20 @@ public class InputFilterUtils { ...@@ -34,8 +44,20 @@ public class InputFilterUtils {
"[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]", "[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]",
Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE); Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
public static InputFilter getChAndEnAndNumAndPtInputFilter(Context mContext) {
return InputFilterUtils.getTypeFilter(mContext, "請輸入中英文和數字", chAndEnAndNumAndPt);
}
public static InputFilter getTypeFilter(Context mContext, Pattern p) {
return InputFilterUtils.getTypeFilter(mContext, "不支持輸入此內容", p);
}
public static InputFilter getChAndEnAndNumInputFilter(Context mContext) { public static InputFilter getChAndEnAndNumInputFilter(Context mContext) {
return InputFilterUtils.getTypeFilter(mContext, "請輸入中英文和數字", InputFilterUtils.ChAndEnAndNum); return InputFilterUtils.getTypeFilter(mContext, "請輸入中英文和數字", chAndEnAndNum);
}
public static InputFilter getEnAndNumInputFilter(Context mContext) {
return InputFilterUtils.getTypeFilter(mContext, "請輸入英文和數字", enAndNum);
} }
public static InputFilter getLengthFilter(Context mContext, int maxLength) { public static InputFilter getLengthFilter(Context mContext, int maxLength) {
...@@ -53,7 +75,7 @@ public class InputFilterUtils { ...@@ -53,7 +75,7 @@ public class InputFilterUtils {
* @param p * @param p
* @return * @return
*/ */
public static InputFilter getTypeFilter(Context context, String tipString, Pattern p) { private static InputFilter getTypeFilter(Context context, String tipString, Pattern p) {
return (source, start, end, dest, dstart, dend) -> { return (source, start, end, dest, dstart, dend) -> {
Matcher m = p.matcher(source.toString()); Matcher m = p.matcher(source.toString());
if (!m.matches()) { if (!m.matches()) {
...@@ -67,7 +89,36 @@ public class InputFilterUtils { ...@@ -67,7 +89,36 @@ public class InputFilterUtils {
}; };
} }
public static InputFilter getMaxLengthFilter(Context context, String tipString, int maxLength) { /**
* source 新输入的字符串
* start 新输入的字符串起始下标,一般为0
* end 新输入的字符串终点下标,一般为source长度-1
* dest 输入之前文本框内容
* dstart 原内容起始坐标,一般为0
* dend 原内容终点坐标,一般为dest长度-1
*
* @param p
* @return
*/
public static InputFilter getTypeFilter(Pattern p) {
return (source, start, end, dest, dstart, dend) -> {
Matcher m = p.matcher(source.toString());
if (!m.matches()) {
return "";
}
return null;
};
}
/**
* 輸入最大長度限制
*
* @param context
* @param tipString 超過最大長度限制的提示
* @param maxLength 最大長度
* @return
*/
private static InputFilter getMaxLengthFilter(Context context, String tipString, int maxLength) {
return (source, start, end, dest, dstart, dend) -> { return (source, start, end, dest, dstart, dend) -> {
int keep = maxLength - (dest.length() - (dend - dstart)); int keep = maxLength - (dest.length() - (dend - dstart));
if (keep <= 0) { if (keep <= 0) {
...@@ -93,28 +144,29 @@ public class InputFilterUtils { ...@@ -93,28 +144,29 @@ public class InputFilterUtils {
}; };
} }
public static InputFilter getMaxLengthFilterDisChAndEn(int maxLength) { /**
* 輸入最大長度限制
*
* @param maxLength 最大長度
* @return
*/
private static InputFilter getMaxLengthFilter(int maxLength) {
return (source, start, end, dest, dstart, dend) -> { return (source, start, end, dest, dstart, dend) -> {
if (dest != null) { int keep = maxLength - (dest.length() - (dend - dstart));
int beforeLength = dest.length();
int sourceLength = source.length();
int keep = maxLength - beforeLength;
if (keep <= 0) { if (keep <= 0) {
return ""; return "";
} else if (keep >= sourceLength) { } else if (keep >= end - start) {
return null; // keep original return null; // keep original
} else { } else {
keep += start; keep += start;
if (Character.isHighSurrogate(source.charAt(keep - 1))) { if (Character.isHighSurrogate(source.charAt(keep - 1))) {
--keep; --keep;
if (keep == sourceLength) { if (keep == start) {
return ""; return "";
} }
} }
return source.subSequence(start, keep); return source.subSequence(start, keep);
} }
}
return null;
}; };
} }
} }
......
...@@ -56,7 +56,7 @@ public class InputProvider<T extends InfoMultiBean> extends MyBaseItemProvider<T ...@@ -56,7 +56,7 @@ public class InputProvider<T extends InfoMultiBean> extends MyBaseItemProvider<T
MultiInputBean infoMultiBean = (MultiInputBean) t; MultiInputBean infoMultiBean = (MultiInputBean) t;
viewHolder.removeTextWatcher(); viewHolder.removeTextWatcher();
TextInputEditText editText = baseViewHolder.getView(R.id.ed_multi_value); EditText editText = baseViewHolder.getView(R.id.ed_multi_value);
editText.setError(null); editText.setError(null);
initEditFocusable(infoMultiBean, editText); initEditFocusable(infoMultiBean, editText);
//設置輸入限制 //設置輸入限制
...@@ -77,10 +77,9 @@ public class InputProvider<T extends InfoMultiBean> extends MyBaseItemProvider<T ...@@ -77,10 +77,9 @@ public class InputProvider<T extends InfoMultiBean> extends MyBaseItemProvider<T
} }
} }
}); });
} }
private void initEditFocusable(MultiInputBean infoMultiBean, TextInputEditText editText) { private void initEditFocusable(MultiInputBean infoMultiBean, EditText editText) {
//是否可編輯 //是否可編輯
editText.setFocusable(infoMultiBean.isEdit()); editText.setFocusable(infoMultiBean.isEdit());
if (infoMultiBean.isEdit()) { if (infoMultiBean.isEdit()) {
...@@ -96,7 +95,7 @@ public class InputProvider<T extends InfoMultiBean> extends MyBaseItemProvider<T ...@@ -96,7 +95,7 @@ public class InputProvider<T extends InfoMultiBean> extends MyBaseItemProvider<T
} }
private void setFilters(EditText editText, MultiInputBean multiSelectBean) { private void setFilters(EditText editText, MultiInputBean multiSelectBean) {
//先清空值,再 //先清空值.清空值之前需要去掉輸入監聽
editText.setText(""); editText.setText("");
//輸入攔截器 //輸入攔截器
editText.setFilters(multiSelectBean.getInputFilters()); editText.setFilters(multiSelectBean.getInputFilters());
...@@ -107,7 +106,7 @@ public class InputProvider<T extends InfoMultiBean> extends MyBaseItemProvider<T ...@@ -107,7 +106,7 @@ public class InputProvider<T extends InfoMultiBean> extends MyBaseItemProvider<T
public class InputViewHolder extends BaseViewHolder { public class InputViewHolder extends BaseViewHolder {
public InputTextWatcher inputTextWatcher = new InputTextWatcher(); public InputTextWatcher inputTextWatcher = new InputTextWatcher();
private TextInputEditText editText; private EditText editText;
public InputViewHolder(@NotNull View view) { public InputViewHolder(@NotNull View view) {
super(view); super(view);
......
...@@ -32,15 +32,19 @@ public class AppDialog { ...@@ -32,15 +32,19 @@ public class AppDialog {
} }
public void showWaringDialog(Context context, String title, DialogOnClickListenter sureOnclickListenter) { public void showWaringDialog(Context context, String title, DialogOnClickListenter sureOnclickListener) {
showWaringDialog(context, title, null, null, sureOnclickListenter, null); showWaringDialog(context, title, null, null, sureOnclickListener, null, true);
} }
public void showWaringDialog(Context context, String title, DialogOnClickListenter sureOnclickListenter, DialogOnClickListenter cancelOnclickListenter) { public void showWaringDialog(Context context, String title, boolean isDismiss, DialogOnClickListenter sureOnclickListener) {
showWaringDialog(context, title, null, null, sureOnclickListenter, cancelOnclickListenter); showWaringDialog(context, title, null, null, sureOnclickListener, null, isDismiss);
} }
private void showWaringDialog(Context context, String title, String confimText, String cancelText, DialogOnClickListenter sureOnclickListenter, DialogOnClickListenter cancelOnclickListenter) { public void showWaringDialog(Context context, String title, boolean isDismiss, DialogOnClickListenter sureOnclickListener, DialogOnClickListenter cancelOnclickListener) {
showWaringDialog(context, title, null, null, sureOnclickListener, cancelOnclickListener, isDismiss);
}
private void showWaringDialog(Context context, String title, String confimText, String cancelText, DialogOnClickListenter sureOnclickListener, DialogOnClickListenter cancelOnclickListener, boolean isDismiss) {
new DialogUtils(context, R.layout.other_order_pause_orders) { new DialogUtils(context, R.layout.other_order_pause_orders) {
@Override @Override
public void initLayout(ViewHepler hepler, Dialog dialog) { public void initLayout(ViewHepler hepler, Dialog dialog) {
...@@ -50,14 +54,19 @@ public class AppDialog { ...@@ -50,14 +54,19 @@ public class AppDialog {
if (confimText != null) { if (confimText != null) {
hepler.setText(R.id.tv_dialog_confirm, confimText); hepler.setText(R.id.tv_dialog_confirm, confimText);
} }
if (sureOnclickListenter != null) { if (sureOnclickListener != null) {
hepler.getView(R.id.tv_dialog_confirm).setOnClickListener(v -> sureOnclickListenter.onclick(v, dialog)); hepler.getView(R.id.tv_dialog_confirm).setOnClickListener(v -> {
sureOnclickListener.onclick(v, dialog);
if (isDismiss) {
dialog.dismiss();
}
});
} }
if (cancelText != null) { if (cancelText != null) {
hepler.setText(R.id.tv_dialog_cancel, cancelText); hepler.setText(R.id.tv_dialog_cancel, cancelText);
} }
if (cancelOnclickListenter != null) { if (cancelOnclickListener != null) {
hepler.getView(R.id.tv_dialog_cancel).setOnClickListener(v -> cancelOnclickListenter.onclick(v, dialog)); hepler.getView(R.id.tv_dialog_cancel).setOnClickListener(v -> cancelOnclickListener.onclick(v, dialog));
} else { } else {
hepler.getView(R.id.tv_dialog_cancel).setOnClickListener(v -> dialog.dismiss()); hepler.getView(R.id.tv_dialog_cancel).setOnClickListener(v -> dialog.dismiss());
} }
......
package com.gingersoft.gsa.cloud.ui.view; package com.gingersoft.gsa.cloud.ui.view.edittext;
import android.content.Context; import android.content.Context;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.widget.EditText;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
......
package com.gingersoft.gsa.cloud.ui.view.edittext;
import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.google.android.material.textfield.TextInputEditText;
/**
* @author 宇航.
* User: admin
* Date: 2021/2/4
* Time: 15:04
* Use: 獲取焦點時,內容為0,自動清除,
* 失去焦點時,沒有內容,內容默認為0
*/
public class ClearZeroEditText extends TextInputEditText {
private OnFocusChangeListener l;
public ClearZeroEditText(@NonNull Context context) {
super(context);
}
public ClearZeroEditText(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public ClearZeroEditText(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
private void init() {
setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (l != null) {
l.onFocusChange(v, hasFocus);
}
}
});
}
@Override
public void setOnFocusChangeListener(OnFocusChangeListener l) {
this.l = l;
}
}
package com.gingersoft.gsa.cloud.ui.view; package com.gingersoft.gsa.cloud.ui.view.edittext;
import android.content.Context; import android.content.Context;
import android.text.Editable; import android.text.Editable;
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:gravity="center_vertical" android:layout_height="match_parent"
android:layout_height="match_parent"> android:gravity="center_vertical">
<TextView <TextView
android:id="@+id/multi_required" android:id="@+id/multi_required"
......
...@@ -8,17 +8,14 @@ ...@@ -8,17 +8,14 @@
<include layout="@layout/item_multi_title_layout" /> <include layout="@layout/item_multi_title_layout" />
<com.google.android.material.textfield.TextInputEditText <EditText
android:id="@+id/ed_multi_value" android:id="@+id/ed_multi_value"
style="@style/Multi_Input_editStyle" style="@style/Multi_Input_editStyle"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginLeft="@dimen/dp_5" android:layout_marginLeft="@dimen/dp_5"
android:layout_weight="1" android:layout_weight="1"
android:focusableInTouchMode="true" android:drawablePadding="@dimen/dp_5"
android:focusable="true"
android:background="@null"
android:inputType="none"
tools:hint="請輸入食品組名稱" /> tools:hint="請輸入食品組名稱" />
<ImageView <ImageView
......
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