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,29 +225,6 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -225,29 +225,6 @@ 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({
//獲取預約單
repository.requestOrderList(restaurantId.toString(), fragmentStatus[1], fragmentType[0], "1", orderNo, phone, 1).apply {
if (isSuccess()) {
val data = getData()
if (data != null) {
val dataList = data.data
//這裡判斷數量大於1,默認有一條配置數據,忽略掉
if (dataList != null && dataList.size > 1) {
//確認訂單之前得先獲取訂單詳情
val orderInfo = repository.getOrderInfo(dataList[0].Id.toString())
if (orderInfo.data != null && orderInfo.data!!.isNotEmpty()) {
val orderDetail = orderInfo.data!![0]
if (verificationAmount(orderDetail)) return@launch
updateOrderAndPrint(restaurantId, orderDetail, 8, false) {
refreshState.postValue(0)
}
}
}
}
}
}
}, {})
} }
} }
} }
...@@ -261,6 +238,27 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() { ...@@ -261,6 +238,27 @@ class PageViewModel(private val repository: WeatherRepository) : ViewModel() {
} }
} }
//獲取預約單
repository.requestOrderList(restaurantId.toString(), fragmentStatus[1], fragmentType[0], "1", orderNo, phone, 1).apply {
if (isSuccess()) {
val data = getData()
if (data != null) {
val dataList = data.data
//這裡判斷數量大於1,默認有一條配置數據,忽略掉
if (dataList != null && dataList.size > 1) {
//確認訂單之前得先獲取訂單詳情
val orderInfo = repository.getOrderInfo(dataList[0].Id.toString())
if (orderInfo.data != null && orderInfo.data!!.isNotEmpty()) {
val orderDetail = orderInfo.data!![0]
if (verificationAmount(orderDetail)) return@launch
updateOrderAndPrint(restaurantId, orderDetail, 8, false) {
refreshState.postValue(0)
}
}
}
}
}
}
}, { }, {
//報錯處理 //報錯處理
}) })
......
...@@ -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,17 +708,11 @@ class OrderDetailsActivity : BaseActivity<IPresenter>() { ...@@ -708,17 +708,11 @@ 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) { showLoading()
R.id.tv_dialog_confirm -> { cancelLogistics(restaurantId, orderId, reasonId, reasonDesc) {
dialog.dismiss() cancelDialogForLoading()
showLoading() ToastUtils.show(this@OrderDetailsActivity, it)
cancelLogistics(restaurantId, orderId, reasonId, reasonDesc) { finish()
cancelDialogForLoading()
ToastUtils.show(this@OrderDetailsActivity, it)
finish()
}
}
R.id.tv_dialog_cancel -> dialog.dismiss()
} }
} }
} }
......
...@@ -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());
shoppingCartBean.setSupplierId(entry.getKey()); if (entry.getKey() != null) {
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();
......
...@@ -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) {
} else if (position == 1) { //再來一單
//部分收貨 mPresenter.buyAgainByFoodIds(orderDetailsFoodAdapter.getData());
mPresenter.addWarehouse(PurchaseOrderDetailsBean.PART_RECEIVED, edRemark.getText() + "", totalAmount, orderDetailsFoodAdapter.getData()); } else if (position == 1) {
setFragmentResult(RESULT_OK, null); //刪除訂單
} else if (position == 2) { AppDialog.getInstance().showWaringDialog(mContext, "是否刪除訂單", (view1, dialog) -> mPresenter.deleteOrder());
//收貨 } else if (position == 2) {
mPresenter.addWarehouse(PurchaseOrderDetailsBean.COMPLETE_RECEIVED, edRemark.getText() + "", totalAmount, orderDetailsFoodAdapter.getData()); //部分收貨
setFragmentResult(RESULT_OK, null); addWarehouse(PurchaseOrderDetailsBean.PART_RECEIVED);
} } else if (position == 3) {
//收貨
addWarehouse(PurchaseOrderDetailsBean.COMPLETE_RECEIVED);
} }
}; };
...@@ -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(); if (keep <= 0) {
int sourceLength = source.length(); return "";
int keep = maxLength - beforeLength; } else if (keep >= end - start) {
if (keep <= 0) { return null; // keep original
return ""; } else {
} else if (keep >= sourceLength) { keep += start;
return null; // keep original if (Character.isHighSurrogate(source.charAt(keep - 1))) {
} else { --keep;
keep += start; if (keep == start) {
if (Character.isHighSurrogate(source.charAt(keep - 1))) { return "";
--keep;
if (keep == sourceLength) {
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