|
@@ -6,6 +6,7 @@ import android.content.DialogInterface;
|
|
|
import android.content.Intent;
|
|
|
import android.graphics.drawable.BitmapDrawable;
|
|
|
import android.os.Bundle;
|
|
|
+import android.support.v4.app.Fragment;
|
|
|
import android.support.v4.app.FragmentManager;
|
|
|
import android.support.v7.app.AlertDialog;
|
|
|
import android.support.v7.widget.LinearLayoutManager;
|
|
@@ -30,25 +31,30 @@ import android.widget.TextView;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.android.volley.AuthFailureError;
|
|
|
+import com.android.volley.DefaultRetryPolicy;
|
|
|
import com.android.volley.Request;
|
|
|
+import com.android.volley.Response;
|
|
|
+import com.android.volley.VolleyError;
|
|
|
+import com.android.volley.toolbox.StringRequest;
|
|
|
import com.chad.library.adapter.base.BaseQuickAdapter;
|
|
|
-import com.google.gson.Gson;
|
|
|
import com.uas.uas_mes_standard.R;
|
|
|
import com.uas.uas_mes_standard.activity.FunctionActivity;
|
|
|
import com.uas.uas_mes_standard.adapter.JLTSearchWhcodeAdapter;
|
|
|
import com.uas.uas_mes_standard.adapter.NewJLTStorageInTodoAdapter;
|
|
|
import com.uas.uas_mes_standard.adapter.SecondaryListAdapter;
|
|
|
+import com.uas.uas_mes_standard.application.PdaApplication;
|
|
|
import com.uas.uas_mes_standard.bean.HaveBeenTakenBean;
|
|
|
import com.uas.uas_mes_standard.bean.JLTBarcodeParseBean;
|
|
|
import com.uas.uas_mes_standard.bean.JLTBrandEntity;
|
|
|
import com.uas.uas_mes_standard.bean.JLTMpqEntity;
|
|
|
import com.uas.uas_mes_standard.bean.JLTPkgEntity;
|
|
|
import com.uas.uas_mes_standard.bean.JLTStorageModelBean;
|
|
|
-import com.uas.uas_mes_standard.bean.JltSaveBarCodeBean;
|
|
|
import com.uas.uas_mes_standard.bean.WhcodeBean;
|
|
|
import com.uas.uas_mes_standard.global.GloableParams;
|
|
|
import com.uas.uas_mes_standard.listener.MyEditorActionListener;
|
|
|
import com.uas.uas_mes_standard.tools.SharedPreUtil;
|
|
|
+import com.uas.uas_mes_standard.tools.VolleyUtil;
|
|
|
import com.uas.uas_mes_standard.util.CommonUtil;
|
|
|
import com.uas.uas_mes_standard.util.Constants;
|
|
|
import com.uas.uas_mes_standard.util.DateFormatUtil;
|
|
@@ -65,10 +71,12 @@ import com.uuzuche.lib_zxing.activity.CodeUtils;
|
|
|
|
|
|
import org.greenrobot.eventbus.EventBus;
|
|
|
import org.greenrobot.eventbus.Subscribe;
|
|
|
+import org.json.JSONException;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* Created by RaoMeng on 2019/2/25
|
|
@@ -87,7 +95,7 @@ public class JLTStorageInBarcodeFragment extends BaseFragment implements View.On
|
|
|
private ClearableEditText mDateEditText, mModelEditText, mQuantityEditText,
|
|
|
mLotEditText, mPoEditText, mEnclosureEditText, mMpqEditText, mBrandEditText, mBarcodeEditText;
|
|
|
private CheckBox mPoCheckBox;
|
|
|
- private String mBoxNum, mPiInoutno, mPiid, mPiClass, mRealBoxNum, mDatecodebyparse;
|
|
|
+ private String mBoxNum, mPiInoutno, mPiid, mPiClass, mRealBoxNum, mDatecodebyparse,pd_whcode;
|
|
|
private JLTBarcodeParseBean mBarcodeParseBean;
|
|
|
private RecyclerView mEnclosureRecyclerView;
|
|
|
private Dialog mEnclosureDialog;
|
|
@@ -110,7 +118,15 @@ public class JLTStorageInBarcodeFragment extends BaseFragment implements View.On
|
|
|
private RadioButton mInfoRadioButton;
|
|
|
private RadioButton mSignRadioButton;
|
|
|
private LinearLayout jlt_line_edit;
|
|
|
- private ClearableEditText clear_edit_lotno;
|
|
|
+ private ClearableEditText jlt_edit_lotno;
|
|
|
+ private ClearableEditText jlt_edit_dataecode;
|
|
|
+ private ClearableEditText jlt_edit_dc;
|
|
|
+ private ClearableEditText jlt_edit_qty;
|
|
|
+ private String prodcode;
|
|
|
+ private Fragment mFragment;
|
|
|
+ private StringRequest mStringRequest;
|
|
|
+ private TextView mResultTextView;
|
|
|
+ private String jlt_storage_in_barcode_etstrim;
|
|
|
|
|
|
public void setOnFinishListener(OnFinishListener onFinishListener) {
|
|
|
mOnFinishListener = onFinishListener;
|
|
@@ -144,6 +160,7 @@ public class JLTStorageInBarcodeFragment extends BaseFragment implements View.On
|
|
|
mSaveButton = root.findViewById(R.id.jlt_storage_in_barcode_save_btn);
|
|
|
mNextButton = root.findViewById(R.id.jlt_storage_in_barcode_next_btn);
|
|
|
mPoCheckBox = root.findViewById(R.id.jlt_storage_in_barcode_po_cb);
|
|
|
+ mResultTextView = root.findViewById(R.id.material_in_collect_result_tv);
|
|
|
// mModelEditText.requestFocus();
|
|
|
mBarcodeEditText.requestFocus();
|
|
|
mEnclosureEditText = root.findViewById(R.id.jlt_storage_in_barcode_enclosure_et);
|
|
@@ -161,7 +178,10 @@ public class JLTStorageInBarcodeFragment extends BaseFragment implements View.On
|
|
|
|
|
|
//输入框
|
|
|
//LotNo
|
|
|
- clear_edit_lotno = root.findViewById(R.id.clear_edit_lotno);
|
|
|
+ jlt_edit_lotno = root.findViewById(R.id.jlt_edit_lotno);
|
|
|
+ jlt_edit_dataecode = root.findViewById(R.id.jlt_edit_dataecode);
|
|
|
+ jlt_edit_dc = root.findViewById(R.id.jlt_edit_DC);
|
|
|
+ jlt_edit_qty = root.findViewById(R.id.jlt_edit_QTY);
|
|
|
|
|
|
mBarcodeParseBean = new JLTBarcodeParseBean();
|
|
|
mBarcodeParseBean.setCHECKPO("N");
|
|
@@ -359,6 +379,7 @@ public class JLTStorageInBarcodeFragment extends BaseFragment implements View.On
|
|
|
mPiid = bundle.getString("pi_id");
|
|
|
mPiClass = bundle.getString("pi_class");
|
|
|
mPiInoutno = bundle.getString("pi_inoutno");
|
|
|
+ pd_whcode = bundle.getString("pd_whcode");
|
|
|
}
|
|
|
|
|
|
mBoxTextView.setText(mPiInoutno);
|
|
@@ -681,7 +702,9 @@ public class JLTStorageInBarcodeFragment extends BaseFragment implements View.On
|
|
|
CommonUtil.scanBarcode(mActivity, JLTStorageInBarcodeFragment.this, SCAN_MODEL_CODE);
|
|
|
break;
|
|
|
case R.id.jlt_storage_in_barcode_save_btn:
|
|
|
- saveBarcode(false, true);
|
|
|
+// saveBarcode(false, true);
|
|
|
+
|
|
|
+ Savebtn_barcode();
|
|
|
if (!TextUtils.isEmpty(mPiid)) {
|
|
|
getNeedList();
|
|
|
}
|
|
@@ -701,7 +724,130 @@ public class JLTStorageInBarcodeFragment extends BaseFragment implements View.On
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+ public void Savebtn_barcode(){
|
|
|
+ progressDialog.show();
|
|
|
+
|
|
|
+
|
|
|
+ String mBarcodeEditTexts = mBarcodeEditText.getText().toString().trim();
|
|
|
+ String jlt_storage_in_barcode_ets = jlt_storage_in_barcode_et.getText().toString().trim();
|
|
|
+ String mLotEditTexts = mLotEditText.getText().toString().trim();//仓位
|
|
|
+ String jlt_edit_lotnos = jlt_edit_lotno.getText().toString().trim();
|
|
|
+ String jlt_edit_dataecodes = jlt_edit_dataecode.getText().toString().trim();
|
|
|
+ String jlt_edit_dcs = jlt_edit_dc.getText().toString().trim();
|
|
|
+ String jlt_edit_qtys = jlt_edit_qty.getText().toString().trim();
|
|
|
+ if (mLotEditTexts.isEmpty()){
|
|
|
+ CommonUtil.toastNoRepeat(mActivity, "仓位不可为空");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (mBarcodeEditTexts.isEmpty()){
|
|
|
+ CommonUtil.toastNoRepeat(mActivity, "条码号不可为空");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ JSONObject obj = new JSONObject();
|
|
|
+ obj.put("LOCATION", mLotEditTexts);
|
|
|
+ obj.put("PRODCODE", prodcode);
|
|
|
+ obj.put("PI_IDS", mPiid);
|
|
|
+ if (jlt_check_ok.isChecked()==true){
|
|
|
+ if (jlt_storage_in_barcode_ets.isEmpty()){
|
|
|
+ CommonUtil.toastNoRepeat(mActivity, "条码号不可为空");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }else if(jlt_check_ok.isChecked()==false){
|
|
|
+ jlt_storage_in_barcode_et.setText(mBarcodeEditTexts);
|
|
|
+ jlt_storage_in_barcode_ets = jlt_storage_in_barcode_et.getText().toString().trim();
|
|
|
+ }
|
|
|
+
|
|
|
+ obj.put("BARCODE", jlt_storage_in_barcode_ets);
|
|
|
+ obj.put("LOTNO", jlt_edit_lotnos);
|
|
|
+ obj.put("DC", jlt_edit_dcs);
|
|
|
+ obj.put("RE_MADEDATE",jlt_edit_dataecodes);
|
|
|
+ obj.put("CONTENT", mBarcodeEditTexts);
|
|
|
+ obj.put("QTY", jlt_edit_qtys);
|
|
|
+ String stores = obj.toString();
|
|
|
+
|
|
|
+ VolleyRequest.getInstance().stringRequest(new HttpParams.Builder()
|
|
|
+ .url(GloableParams.ADDRESS_PDAIO_PUT_SAVEBARCODE2CONFIRM)
|
|
|
+ .method(Request.Method.POST)
|
|
|
+ .tag(TAG + "savebarcode")
|
|
|
+ .addParam("store", stores)
|
|
|
+ .build(), new HttpCallback() {
|
|
|
+ @Override
|
|
|
+ public void onSuccess(int flag, Object o) throws Exception {
|
|
|
+ progressDialog.dismiss();
|
|
|
+ try {
|
|
|
+ String result = o.toString();
|
|
|
+ Log.e("result",result);
|
|
|
+ JSONObject resultObject = JSON.parseObject(result);
|
|
|
+ JSONObject dataObject = resultObject.getJSONObject("data");
|
|
|
+ boolean isCheck = FastjsonUtil.getBoolean(dataObject, "isCheck");
|
|
|
+ if (!isCheck) {
|
|
|
+ new AlertDialog.Builder(mActivity)
|
|
|
+ .setTitle("提示")
|
|
|
+ .setMessage("PO:" + mBarcodeParseBean.getORDERCODE() + "不在当前入库单据范围内,是否继续保存?")
|
|
|
+ .setNegativeButton("取消", null)
|
|
|
+ .setPositiveButton("确定", new DialogInterface.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(DialogInterface dialog, int which) {
|
|
|
+ mPoCheckBox.setChecked(false);
|
|
|
+ saveBarcode(true, false);
|
|
|
+ }
|
|
|
+ }).create().show();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ CommonUtil.toastNoRepeat(mActivity, "归属入库单:"
|
|
|
+ + FastjsonUtil.getText(dataObject, "INOUTNO")
|
|
|
+ + "成功");
|
|
|
+
|
|
|
+ boolean isFinish = FastjsonUtil.getBoolean(dataObject, "ISFINISH");
|
|
|
+ if (isFinish) {
|
|
|
+ CommonUtil.toastNoRepeat(mActivity, "该入库单最后一行已完成采集!");
|
|
|
+ mBarcodeEditText.setText("");
|
|
|
+ mBarcodeEditText.requestFocus();
|
|
|
+// resetState();
|
|
|
+// getActivity().getSupportFragmentManager().popBackStackImmediate();
|
|
|
+// if (mOnFinishListener != null) {
|
|
|
+// mOnFinishListener.onFinish();
|
|
|
+// }
|
|
|
+ } else {
|
|
|
+ if (true) {
|
|
|
+ getActivity().getSupportFragmentManager().popBackStack();
|
|
|
+ } else {
|
|
|
+ mBarcodeEditText.setText("");
|
|
|
+ mBarcodeEditText.requestFocus();
|
|
|
+// resetState();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ mBarcodeEditText.setText("");
|
|
|
+ jlt_storage_in_barcode_et.setText("");
|
|
|
+ jlt_edit_lotno.setText("");
|
|
|
+ jlt_edit_dataecode.setText("");
|
|
|
+ jlt_edit_dc.setText("");
|
|
|
+ jlt_edit_qty.setText("");
|
|
|
+// resetState();
|
|
|
+ mBarcodeEditText.requestFocus();
|
|
|
+ if (!TextUtils.isEmpty(mPiid)) {
|
|
|
+ getNeedList();
|
|
|
+ Log.e("刷新","舒心入库俩啊");
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onFail(int flag, String failStr) throws Exception {
|
|
|
+ progressDialog.dismiss();
|
|
|
+ CommonUtil.toastNoRepeat(mActivity, failStr);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
private void saveBarcode(boolean exist, boolean checkDate) {
|
|
|
if (TextUtils.isEmpty(mBarcodeParseBean.getPN()) ||
|
|
|
TextUtils.isEmpty(mBarcodeParseBean.getBRAND()) ||
|
|
@@ -776,7 +922,7 @@ public class JLTStorageInBarcodeFragment extends BaseFragment implements View.On
|
|
|
confirmRequest(exist);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+ //扫描 条码号
|
|
|
private void confirmRequest(boolean exist) {
|
|
|
String mModelEditTexttrim = this.mModelEditText.getText().toString().trim();
|
|
|
String mLotEditTexttrim = mLotEditText.getText().toString().trim();
|
|
@@ -810,17 +956,20 @@ public class JLTStorageInBarcodeFragment extends BaseFragment implements View.On
|
|
|
progressDialog.dismiss();
|
|
|
// try {
|
|
|
String result = o.toString();
|
|
|
+ Log.e("result",result);
|
|
|
JSONObject resultObject = JSON.parseObject(result);
|
|
|
JSONObject dataObject = resultObject.getJSONObject("data");
|
|
|
- Gson gson = new Gson();
|
|
|
- String s = gson.toJson(o.toString());
|
|
|
if (dataObject != null) {
|
|
|
- JltSaveBarCodeBean jltSaveBarCodeBean = gson.fromJson(s, JltSaveBarCodeBean.class);
|
|
|
- JltSaveBarCodeBean.DataBean data = jltSaveBarCodeBean.getData();
|
|
|
- String qty = data.getQty();
|
|
|
- clear_edit_lotno.setText(qty);
|
|
|
- Log.e("qtyText",qty);
|
|
|
+ String lotno = FastjsonUtil.getText(dataObject, "LOTNO");
|
|
|
+ String datecode = FastjsonUtil.getText(dataObject, "DATECODE");
|
|
|
+ String dc = FastjsonUtil.getText(dataObject, "DC");
|
|
|
+ String qty = FastjsonUtil.getText(dataObject, "QTY");
|
|
|
+ prodcode = FastjsonUtil.getText(dataObject, "PRODCODE");
|
|
|
|
|
|
+ jlt_edit_lotno.setText(lotno);
|
|
|
+ jlt_edit_dataecode.setText(datecode);
|
|
|
+ jlt_edit_dc.setText(dc);
|
|
|
+ jlt_edit_qty.setText(qty);
|
|
|
|
|
|
}
|
|
|
// boolean isCheck = FastjsonUtil.getBoolean(dataObject, "isCheck");
|
|
@@ -910,11 +1059,11 @@ public class JLTStorageInBarcodeFragment extends BaseFragment implements View.On
|
|
|
if (requestCode == REQUEST_DATE) {
|
|
|
try {
|
|
|
Date date = (Date) data.getSerializableExtra("extra_date");
|
|
|
- String formatDate = DateFormat.format("yyyyMMdd", date).toString();
|
|
|
- mDateEditText.setText(formatDate);
|
|
|
+ String formatDate = DateFormat.format("yyyy-MM-dd", date).toString();
|
|
|
+ jlt_edit_dataecode.setText(formatDate);
|
|
|
mDatecodebyparse = formatDate;
|
|
|
} catch (Exception e) {
|
|
|
- mDateEditText.setText("");
|
|
|
+ jlt_edit_dataecode.setText("");
|
|
|
}
|
|
|
}
|
|
|
if (requestCode == SCAN_BARCODE_CODE && data != null) {
|
|
@@ -951,6 +1100,11 @@ public class JLTStorageInBarcodeFragment extends BaseFragment implements View.On
|
|
|
Button doneListInBtn = (Button) mMenuView.findViewById(R.id.pop_jlt_storage_in_box_menu_2);
|
|
|
Button revokeCollectBtn = (Button) mMenuView.findViewById(R.id.pop_jlt_storage_in_box_menu_3);
|
|
|
Button postBtn = (Button) mMenuView.findViewById(R.id.pop_jlt_storage_in_box_menu_4);
|
|
|
+
|
|
|
+ Button pop_material_in_menu_1 = (Button) mMenuView.findViewById(R.id.pop_material_in_menu_1);
|
|
|
+ Button pop_material_in_menu_5 = (Button) mMenuView.findViewById(R.id.pop_material_in_menu_5);
|
|
|
+ Button pop_material_in_menu_2 = (Button) mMenuView.findViewById(R.id.pop_material_in_menu_2);
|
|
|
+
|
|
|
postBtn.setVisibility(View.GONE);
|
|
|
todoListBtn.setVisibility(View.GONE);
|
|
|
revokeCollectBtn.setText("确认入库");
|
|
@@ -1025,6 +1179,42 @@ public class JLTStorageInBarcodeFragment extends BaseFragment implements View.On
|
|
|
}).create().show();
|
|
|
}
|
|
|
});
|
|
|
+ //确认入库
|
|
|
+ pop_material_in_menu_1.setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View v) {
|
|
|
+ closeMenuPopupWindow();
|
|
|
+ confirmIn();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ //已采集列表
|
|
|
+ pop_material_in_menu_5.setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View v) {
|
|
|
+ closeMenuPopupWindow();
|
|
|
+ FragmentUtils.switchFragment(JLTStorageInBarcodeFragment.this, StorageInCollectListFragment.newInstance(mPiid, pd_whcode));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ //撤销入库
|
|
|
+ pop_material_in_menu_2.setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View v) {
|
|
|
+ closeMenuPopupWindow();
|
|
|
+ mBarcodeEditText.setOnFocusChangeListener(null);
|
|
|
+ jlt_storage_in_barcode_et.setOnFocusChangeListener(null);
|
|
|
+ ((FunctionActivity) getActivity()).setMoreBtnVisible(false);
|
|
|
+// ((FunctionActivity) getActivity()).setScanIvVisible(false);
|
|
|
+ Bundle bundle = new Bundle();
|
|
|
+ bundle.putString("pi_id", mPiid);
|
|
|
+ bundle.putString("pi_inoutno", mPiInoutno);
|
|
|
+ bundle.putString("pd_whcode", pd_whcode);
|
|
|
+ bundle.putString("whichpage", "materialin");
|
|
|
+ mFragment = new MaterialOutRevocationStockFragment();
|
|
|
+ mFragment.setArguments(bundle);
|
|
|
+ FragmentUtils.switchFragment(JLTStorageInBarcodeFragment.this, mFragment);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
|
|
|
if (mMenuPopupWindow == null) {
|
|
|
mMenuPopupWindow = new PopupWindow(mMenuView, LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, true);
|
|
@@ -1039,7 +1229,44 @@ public class JLTStorageInBarcodeFragment extends BaseFragment implements View.On
|
|
|
CommonUtil.setBackgroundAlpha(mActivity, 0.5f);
|
|
|
mMenuPopupWindow.showAsDropDown(mMoreButton);
|
|
|
}
|
|
|
+ private void confirmIn() {
|
|
|
+ progressDialog.show();
|
|
|
+ String url = GloableParams.ADDRESS_INMATERIAL_CONFIRM_IN + "?pi_id=" + mPiid + "&whcode=" + pd_whcode;
|
|
|
+
|
|
|
+ PdaApplication.mRequestQueue.cancelAll(TAG + "confirmin");
|
|
|
|
|
|
+ mStringRequest = new StringRequest(Request.Method.GET, url,
|
|
|
+ new Response.Listener<String>() {
|
|
|
+ @Override
|
|
|
+ public void onResponse(String s) {
|
|
|
+ progressDialog.dismiss();
|
|
|
+// mResultTextView.setVisibility(View.VISIBLE);
|
|
|
+ try {
|
|
|
+ org.json.JSONObject resultObject = new org.json.JSONObject(s);
|
|
|
+// mResultTextView.setText(resultObject.optString("data"));
|
|
|
+ } catch (JSONException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ new Response.ErrorListener() {
|
|
|
+ @Override
|
|
|
+ public void onErrorResponse(VolleyError volleyError) {
|
|
|
+ progressDialog.dismiss();
|
|
|
+ mResultTextView.setVisibility(View.VISIBLE);
|
|
|
+ String errorToast = CommonUtil.showErrorToast(volleyError, true);
|
|
|
+ mResultTextView.setText(errorToast);
|
|
|
+ }
|
|
|
+ }) {
|
|
|
+ @Override
|
|
|
+ public Map<String, String> getHeaders() throws AuthFailureError {
|
|
|
+ return VolleyUtil.getVolleyUtil().setCookies();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ mStringRequest.setRetryPolicy(new DefaultRetryPolicy(10 * 1000, 0, 1f));
|
|
|
+ mStringRequest.setTag(TAG + "confirmin");
|
|
|
+ PdaApplication.mRequestQueue.add(mStringRequest);
|
|
|
+ }
|
|
|
/**
|
|
|
* 确认入库
|
|
|
*
|