Browse Source

添加动态表单编写代码,未完成

Bitliker 7 years ago
parent
commit
dc75409a8d
18 changed files with 3135 additions and 15 deletions
  1. 5 5
      app_core/common/src/main/java/com/core/utils/CommonUtil.java
  2. 1 1
      app_core/common/src/main/res/values/dimens.xml
  3. 1 1
      app_modular/apputils/build.gradle
  4. 54 0
      app_modular/apputils/src/main/java/com/modular/apputils/activity/BillInputActivity.java
  5. 342 0
      app_modular/apputils/src/main/java/com/modular/apputils/adapter/BillAdapter.java
  6. 354 0
      app_modular/apputils/src/main/java/com/modular/apputils/model/BillGroupModel.java
  7. 166 0
      app_modular/apputils/src/main/java/com/modular/apputils/presenter/BillPresenter.java
  8. 11 0
      app_modular/apputils/src/main/java/com/modular/apputils/presenter/imp/IBill.java
  9. 109 0
      app_modular/apputils/src/main/java/com/modular/apputils/utils/BillTypeChangeUtils.java
  10. 1776 1
      app_modular/apputils/src/main/java/com/modular/apputils/utils/TestDataUtils.java
  11. 11 0
      app_modular/apputils/src/main/res/layout/activity_bill_input.xml
  12. 20 0
      app_modular/apputils/src/main/res/layout/item_bill_add.xml
  13. 60 0
      app_modular/apputils/src/main/res/layout/item_bill_input_select.xml
  14. 35 0
      app_modular/apputils/src/main/res/layout/item_bill_title.xml
  15. 2 0
      app_modular/appworks/src/main/AndroidManifest.xml
  16. 67 0
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/CustomerVisitActivity.java
  17. 15 7
      app_modular/appworks/src/main/java/com/uas/appworks/activity/ScheduleActivity.java
  18. 106 0
      app_modular/appworks/src/main/res/layout/activity_customer_visit.xml

+ 5 - 5
app_core/common/src/main/java/com/core/utils/CommonUtil.java

@@ -102,9 +102,9 @@ public class CommonUtil {
             ct=MyApplication.getInstance();
         }
         String baseUrl = getSharedPreferences(ct, "erp_baseurl");
-//        if (BaseConfig.isDebug()){
-//            baseUrl="http://192.168.253.243:8080/ERP/";
-//        }
+        if (BaseConfig.isDebug()){
+            baseUrl="http://192.168.253.243:8080/ERP/";
+        }
         return baseUrl;
     }
     
@@ -219,8 +219,8 @@ public class CommonUtil {
     }
     //日程管理网址
     public static String getSchedulerBaseUrl() {
-//        return "http://192.168.253.230:8080/schedule/";
-        return "https://mobile.ubtob.com:8443/schedule/";
+        return "http://192.168.253.230:8080/schedule/";
+//        return "https://mobile.ubtob.com:8443/schedule/";
     }
 
     /**

+ 1 - 1
app_core/common/src/main/res/values/dimens.xml

@@ -22,7 +22,7 @@
     <dimen name="oa_statistics_date_minheight">30dp</dimen>
     <!-- end oa 考勤统计页面-->
     <dimen name="next_width">10.0dip</dimen>
-    <dimen name="line">2px</dimen>
+    <dimen name="line">3px</dimen>
     <dimen name="line_big">7.0dip</dimen>
     <dimen name="line_min">2.0dip</dimen>
     <dimen name="next_height">15.0dip</dimen>

+ 1 - 1
app_modular/apputils/build.gradle

@@ -23,5 +23,5 @@ dependencies {
     compile project(':common')
     compile project(':network')
     compile project(':imageload')
-
+    compile 'com.android.support.constraint:constraint-layout:1.0.2'
 }

+ 54 - 0
app_modular/apputils/src/main/java/com/modular/apputils/activity/BillInputActivity.java

@@ -0,0 +1,54 @@
+package com.modular.apputils.activity;
+
+import android.os.Bundle;
+import android.support.v7.widget.LinearLayoutManager;
+import android.support.v7.widget.RecyclerView;
+
+import com.core.base.BaseActivity;
+import com.modular.apputils.R;
+import com.modular.apputils.adapter.BillAdapter;
+import com.modular.apputils.model.BillGroupModel;
+import com.modular.apputils.presenter.BillPresenter;
+import com.modular.apputils.presenter.imp.IBill;
+
+import java.util.List;
+
+
+/**
+ * 动态表单单据录入界面
+ */
+public class BillInputActivity extends BaseActivity implements IBill {
+    private RecyclerView mRecyclerView;
+    private BillPresenter mBillPresenter;
+    private BillAdapter mBillAdapter;
+
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+            setContentView(R.layout.activity_bill_input);
+        initView();
+
+        mBillPresenter = new BillPresenter(this);
+        mBillPresenter.start();
+    }
+
+
+
+
+    private void initView() {
+        mRecyclerView = (RecyclerView) findViewById(R.id.mRecyclerView);
+        mRecyclerView.setLayoutManager(new LinearLayoutManager(ct));
+    }
+
+    @Override
+    public void setAdapter(List<BillGroupModel> groupModels) {
+        if (mBillAdapter == null) {
+            mBillAdapter = new BillAdapter(ct, groupModels);
+            mRecyclerView.setAdapter(mBillAdapter);
+        } else {
+            mBillAdapter.setBillGroupModels(groupModels);
+            mBillAdapter.notifyDataSetChanged();
+        }
+    }
+}

+ 342 - 0
app_modular/apputils/src/main/java/com/modular/apputils/adapter/BillAdapter.java

@@ -0,0 +1,342 @@
+package com.modular.apputils.adapter;
+
+import android.content.Context;
+import android.support.annotation.LayoutRes;
+import android.support.annotation.NonNull;
+import android.support.v4.app.FragmentActivity;
+import android.support.v7.widget.RecyclerView;
+import android.text.Editable;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.EditText;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+
+import com.common.LogUtil;
+import com.core.utils.ToastUtil;
+import com.core.widget.listener.EditChangeListener;
+import com.modular.apputils.R;
+import com.modular.apputils.model.BillGroupModel;
+import com.modular.apputils.utils.BillTypeChangeUtils;
+import com.modular.apputils.widget.VeriftyDialog;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 录入单据列表item 共2种类型
+ * 0.标题
+ * 1.请选择
+ */
+public class BillAdapter extends RecyclerView.Adapter<BillAdapter.BaseViewHolder> {
+
+    private Context ct;
+    private List<BillGroupModel> mBillGroupModels;
+    private List<BillGroupModel.BillModel> mShowBillModels;
+
+
+    public BillAdapter(Context ct, List<BillGroupModel> mBillGroupModels) {
+        this.ct = ct;
+        this.mBillGroupModels = mBillGroupModels;
+        changeBillModel();
+    }
+
+    public void setBillGroupModels(List<BillGroupModel> mBillGroupModels) {
+        this.mBillGroupModels = mBillGroupModels;
+        changeBillModel();
+    }
+
+    private void changeBillModel() {
+        mShowBillModels = new ArrayList<>();
+        for (int i = 0; i < mBillGroupModels.size(); i++) {
+            BillGroupModel e = mBillGroupModels.get(i);
+            if (e != null && e.getShowBillFields() != null && !e.getShowBillFields().isEmpty()) {
+                if (!TextUtils.isEmpty(e.getGroup())) {
+                    BillGroupModel.BillModel mTitleBillModel = new BillGroupModel.BillModel();
+                    mTitleBillModel.setGroupIndex(i);
+                    mTitleBillModel.setType(BillGroupModel.Constants.TYPE_TITLE);
+                    mTitleBillModel.setCaption(e.getGroup());
+                    mTitleBillModel.setAllowBlank(e.isDeleteAble() ? "T" : "F");
+                    mShowBillModels.add(mTitleBillModel);
+                }
+                mShowBillModels.addAll(e.getShowBillFields());
+                if (!e.isForm() && e.isLastInType()) {
+                    mShowBillModels.add(getAddModel(i));
+                }
+            }
+        }
+    }
+
+    private BillGroupModel.BillModel getAddModel(int index) {
+        BillGroupModel.BillModel mTitleBillModel = new BillGroupModel.BillModel();
+        mTitleBillModel.setGroupIndex(index);
+        mTitleBillModel.setType(BillGroupModel.Constants.TYPE_ADD);
+        mTitleBillModel.setCaption("添加单据");
+        return mTitleBillModel;
+    }
+
+    public List<BillGroupModel> getBillGroupModels() {
+        return mBillGroupModels;
+    }
+
+    @Override
+    public int getItemViewType(int position) {
+        if (mShowBillModels != null && mShowBillModels.size() > position) {
+            return BillTypeChangeUtils.getItemViewType(mShowBillModels.get(position).getType());
+        }
+        return super.getItemViewType(position);
+    }
+
+    @NonNull
+    @Override
+    public BaseViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        BaseViewHolder viewHolder = null;
+        switch (viewType) {
+            case 0:
+                viewHolder = new TitleViewHolder(parent, R.layout.item_bill_title);
+                break;
+            case 1:
+                viewHolder = new InputViewHolder(parent, R.layout.item_bill_input_select);
+                break;
+            case 110:
+                viewHolder = new AddViewHolder(parent, R.layout.item_bill_add);
+                break;
+            default:
+                viewHolder = new BaseViewHolder(parent, R.layout.item_bill_title) {
+
+                    @Override
+                    void initView(View view) {
+
+                    }
+                };
+        }
+        return viewHolder;
+    }
+
+
+    @Override
+    public int getItemCount() {
+        return mShowBillModels == null ? 0 : mShowBillModels.size();
+    }
+
+
+    private LayoutInflater mLayoutInflater;
+
+    public LayoutInflater getLayoutInflater() {
+        if (mLayoutInflater == null) {
+            mLayoutInflater = LayoutInflater.from(ct);
+        }
+        return mLayoutInflater;
+    }
+
+    abstract class BaseViewHolder extends RecyclerView.ViewHolder {
+
+        public BaseViewHolder(ViewGroup parent, @LayoutRes int layoutId) {
+            this(getLayoutInflater().inflate(layoutId, parent, false));
+        }
+
+        abstract void initView(View view);
+
+        public BaseViewHolder(View itemView) {
+            super(itemView);
+            initView(itemView);
+        }
+    }
+
+    class AddViewHolder extends BaseViewHolder {
+        private TextView addTv;
+
+        public AddViewHolder(ViewGroup parent, int layoutId) {
+            super(parent, layoutId);
+        }
+
+        @Override
+        void initView(View view) {
+            addTv = (TextView) view.findViewById(R.id.addTv);
+        }
+    }
+
+    class InputViewHolder extends BaseViewHolder {
+        private TextView captionTv;
+        private TextView muchInputTv;
+        private ImageView selectIv;
+        private EditText valuesEd;
+
+        public InputViewHolder(ViewGroup parent, int layoutId) {
+            super(parent, layoutId);
+        }
+
+        @Override
+        void initView(View itemView) {
+            captionTv = (TextView) itemView.findViewById(R.id.captionTv);
+            muchInputTv = (TextView) itemView.findViewById(R.id.muchInputTv);
+            selectIv = (ImageView) itemView.findViewById(R.id.selectIv);
+            valuesEd = (EditText) itemView.findViewById(R.id.valuesEd);
+        }
+
+
+    }
+
+    class TitleViewHolder extends BaseViewHolder {
+        private TextView tvTitle;
+        private TextView deleteTv;
+
+        public TitleViewHolder(ViewGroup parent, int layoutId) {
+            super(parent, layoutId);
+        }
+
+        @Override
+        void initView(View view) {
+            tvTitle = (TextView) view.findViewById(R.id.tv_title);
+            deleteTv = (TextView) view.findViewById(R.id.deleteTv);
+        }
+
+    }
+
+
+    @Override
+    public void onBindViewHolder(@NonNull BaseViewHolder holder, int position) {
+        BillGroupModel.BillModel model = null;
+        if (mShowBillModels != null && mShowBillModels.size() > position) {
+            model = mShowBillModels.get(position);
+        }
+        try {
+            if (holder instanceof InputViewHolder) {
+                bindInputView((InputViewHolder) holder, model, position);
+            } else if (holder instanceof TitleViewHolder) {
+                bindTitleView((TitleViewHolder) holder, model, position);
+            } else if (holder instanceof AddViewHolder) {
+                bindAddView((AddViewHolder) holder, model, position);
+            }
+        } catch (Exception e) {
+            LogUtil.i("gong", position + "  e=" + e.getMessage());
+        }
+
+    }
+
+    private void bindAddView(AddViewHolder mAddViewHolder, BillGroupModel.BillModel model, int position) throws Exception {
+        if (model != null) {
+            mAddViewHolder.addTv.setTag(model.getGroupIndex());
+            mAddViewHolder.addTv.setOnClickListener(mOnClickListener);
+        }
+    }
+
+    private void bindInputView(InputViewHolder mInputViewHolder, BillGroupModel.BillModel model, int position) throws Exception {
+        if (model != null) {
+            mInputViewHolder.valuesEd.setText("");
+            mInputViewHolder.captionTv.setText(model.getCaption());
+            mInputViewHolder.muchInputTv.setVisibility(model.getAllowBlank().equals("T") ? View.GONE : View.VISIBLE);
+            mInputViewHolder.valuesEd.setText(model.getValue());
+            if (BillTypeChangeUtils.isSelect(model.getType())) {
+                //选择类型
+                mInputViewHolder.valuesEd.setHint("请选择");
+                mInputViewHolder.valuesEd.setFocusable(false);
+                mInputViewHolder.valuesEd.setClickable(true);
+                mInputViewHolder.selectIv.setVisibility(View.VISIBLE);
+                mInputViewHolder.valuesEd.setTag(model);
+                mInputViewHolder.valuesEd.setOnClickListener(mOnClickListener);
+            } else {
+                //输入类型
+                mInputViewHolder.valuesEd.setHint("请输入");
+                mInputViewHolder.selectIv.setVisibility(View.GONE);
+                mInputViewHolder.valuesEd.setFocusable(true);
+                mInputViewHolder.valuesEd.setClickable(false);
+                mInputViewHolder.valuesEd.setFocusableInTouchMode(true);
+                mInputViewHolder.valuesEd.addTextChangedListener(new TextChangListener(mInputViewHolder.valuesEd, position));
+            }
+
+        }
+    }
+
+    private void bindTitleView(TitleViewHolder mTitleViewHolder, BillGroupModel.BillModel model, int position) throws Exception {
+        if (model != null) {
+            if (model.getAllowBlank().equals("T")) {
+                mTitleViewHolder.deleteTv.setVisibility(View.VISIBLE);
+                mTitleViewHolder.deleteTv.setTag(model.getGroupIndex());
+                mTitleViewHolder.deleteTv.setOnClickListener(mOnClickListener);
+            } else {
+                mTitleViewHolder.deleteTv.setVisibility(View.GONE);
+                mTitleViewHolder.deleteTv.setOnClickListener(null);
+            }
+            mTitleViewHolder.tvTitle.setText(model.getCaption());
+        }
+    }
+
+    private View.OnClickListener mOnClickListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View view) {
+            if (view.getId() == R.id.deleteTv) {
+                if (view.getTag() != null && view.getTag() instanceof Integer) {
+                    showDeleteGroup((Integer) view.getTag());
+                }
+            } else if (view.getId() == R.id.valuesEd) {
+                if (view.getTag() != null && view.getTag() instanceof BillGroupModel.BillModel) {
+                    ToastUtil.showToast(ct, "去做该做的事情,进行选择等操作");
+                }
+            } else if (view.getId() == R.id.addTv) {
+                if (view.getTag() != null && view.getTag() instanceof Integer) {
+                    int groupIndex = (int) view.getTag();
+                    BillGroupModel mBillGroupModel = mBillGroupModels.get(groupIndex);
+                    mBillGroupModel.setLastInType(false);
+                    BillGroupModel newBillGroupModel = new BillGroupModel();
+                    newBillGroupModel.setForm(mBillGroupModel.isForm());
+                    newBillGroupModel.setGroup(mBillGroupModel.getGroup());
+                    newBillGroupModel.setDeleteAble(true);
+                    newBillGroupModel.setLastInType(true);
+                    for (BillGroupModel.BillModel e : mBillGroupModel.getShowBillFields()) {
+                        newBillGroupModel.addShow(new BillGroupModel.BillModel(e));
+                    }
+                    mBillGroupModels.add(groupIndex + 1, newBillGroupModel);
+                    setBillGroupModels(mBillGroupModels);
+                    notifyDataSetChanged();
+
+                }
+            }
+        }
+    };
+
+
+    private class TextChangListener extends EditChangeListener {
+        EditText ed;
+        private int position;
+
+        public TextChangListener(EditText ed, int position) {
+            this.ed = ed;
+            this.position = position;
+        }
+
+        @Override
+        public void afterTextChanged(Editable s) {
+            if (this.position >= 0 && mShowBillModels != null && mShowBillModels.size() > this.position && ed != null) {
+                String valueEt = ed.getText().toString();
+                mShowBillModels.get(this.position).setValue(valueEt == null ? "" : valueEt);
+            }
+        }
+    }
+
+
+    private void showDeleteGroup(final int groupIndex) {
+        new VeriftyDialog.Builder(ct)
+                .setTitle(ct.getString(R.string.app_name))
+                .setContent("是否确认删除该单据?")
+                .build(new VeriftyDialog.OnDialogClickListener() {
+                    @Override
+                    public void result(boolean clickSure) {
+                        if (clickSure) {
+                            if (mBillGroupModels != null && mBillGroupModels.size() > groupIndex && groupIndex >= 0) {
+                                if (groupIndex - 1 > 0 && !mBillGroupModels.get(groupIndex - 1).isForm()) {
+                                    mBillGroupModels.get(groupIndex - 1).setLastInType(true);
+                                }
+                                mBillGroupModels.remove(groupIndex);
+                                setBillGroupModels(mBillGroupModels);
+                                notifyDataSetChanged();
+                            }
+                        }
+                    }
+                });
+
+    }
+}

+ 354 - 0
app_modular/apputils/src/main/java/com/modular/apputils/model/BillGroupModel.java

@@ -0,0 +1,354 @@
+package com.modular.apputils.model;
+
+import android.text.TextUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 动态表单录入组对象
+ * 单据由几个组组成  1.主表可以存在多个组  2.一个明细表由一个组组成
+ * 注:由于类中类太多了,后续根据需求进行优化
+ */
+public class BillGroupModel {
+
+    private boolean isDeleteAble;//是否可以删除
+    private boolean isForm;//是否为主表
+    private boolean lastInType;//是否当前单据明细的最后一个
+    private int groupIndex;//组id
+    private String group;//组名
+
+    private int keyValues;//提交时候主表或明细表id
+    private String keyField;//提交时候主表或明细表id字段名称
+
+    private String statusValues;//状态
+    private String statusField;//状态字段名称
+
+    private String caller;//caller
+
+    private List<BillModel> hideBillFields;//当前组隐藏的字段列表
+    private List<BillModel> showBillFields;//当前组显示的字段列表
+
+
+    public void addHide(BillModel e) {
+        if (hideBillFields == null) {
+            hideBillFields = new ArrayList<>();
+        }
+        hideBillFields.add(e);
+
+    }
+
+    public void addShow(BillModel e) {
+        if (showBillFields == null) {
+            showBillFields = new ArrayList<>();
+        }
+        showBillFields.add(e);
+    }
+
+    public boolean isDeleteAble() {
+        return isDeleteAble;
+    }
+
+    public void setDeleteAble(boolean deleteAble) {
+        isDeleteAble = deleteAble;
+    }
+
+    public boolean isForm() {
+        return isForm;
+    }
+
+    public String getCaller() {
+        return caller;
+    }
+
+    public void setCaller(String caller) {
+        this.caller = caller;
+    }
+
+    public void setForm(boolean form) {
+        isForm = form;
+    }
+
+    public int getGroupIndex() {
+        return groupIndex;
+    }
+
+    public void setGroupIndex(int groupIndex) {
+        this.groupIndex = groupIndex;
+    }
+
+    public boolean isLastInType() {
+        return lastInType;
+    }
+
+    public void setLastInType(boolean lastInType) {
+        this.lastInType = lastInType;
+    }
+
+    public String getGroup() {
+        return group;
+    }
+
+    public void setGroup(String group) {
+        this.group = group;
+    }
+
+    public int getKeyValues() {
+        return keyValues;
+    }
+
+    public void setKeyValues(int keyValues) {
+        this.keyValues = keyValues;
+    }
+
+    public String getKeyField() {
+        return keyField;
+    }
+
+    public void setKeyField(String keyField) {
+        this.keyField = keyField;
+    }
+
+    public String getStatusValues() {
+        return statusValues;
+    }
+
+    public void setStatusValues(String statusValues) {
+        this.statusValues = statusValues;
+    }
+
+    public String getStatusField() {
+        return statusField;
+    }
+
+    public void setStatusField(String statusField) {
+        this.statusField = statusField;
+    }
+
+    public List<BillModel> getHideBillFields() {
+        return hideBillFields;
+    }
+
+    public void setHideBillFields(List<BillModel> hideBillFields) {
+        this.hideBillFields = hideBillFields;
+    }
+
+    public List<BillModel> getShowBillFields() {
+        return showBillFields;
+    }
+
+    public void setShowBillFields(List<BillModel> showBillFields) {
+        this.showBillFields = showBillFields;
+    }
+
+
+    public static class BillTitleModel {
+        private int groupIndex;//组索引
+        private boolean isDelete;
+        private String showName;
+
+        public BillTitleModel(int groupIndex) {
+            this.groupIndex = groupIndex;
+        }
+
+        public int getGroupIndex() {
+            return groupIndex;
+        }
+
+        public void setGroupIndex(int groupIndex) {
+            this.groupIndex = groupIndex;
+        }
+
+        public boolean isDelete() {
+            return isDelete;
+        }
+
+        public void setDelete(boolean delete) {
+            isDelete = delete;
+        }
+
+        public String getShowName() {
+            return showName;
+        }
+
+        public void setShowName(String showName) {
+            this.showName = showName;
+        }
+    }
+
+    /**
+     * 字段详情
+     */
+    public static class BillModel {
+        private int id;//id
+        private int groupIndex;//所在组索引
+        private int length;//字符长度
+        private int appwidth;//宽度
+        private int isdefault;//是否显示
+        private String dbfind;//是否是dbfind字段判定
+        private String caption;//字段名称
+        private String type;//类型(标题类型为Constants.TYPE_TITLE,不触发点击事件等 )
+        private String logicType;//logic类型
+        private String readOnly;//是否只读
+        private String field;//字段
+        private String value;//值
+        private String defValue;//默认值
+        private String allowBlank;//是否允许为空(注:当作为标题的时候T:表示可以删除 F:表示不可删除)
+        private List<LocalData> localDatas;//获取到的本地选择数据
+
+        public BillModel() {
+        }
+
+        public BillModel(BillModel e) {
+            this.id = e.id;
+            this.groupIndex = e.groupIndex+1;
+            this.length = e.length;
+            this.appwidth = e.appwidth;//宽度
+            this.isdefault = e.isdefault;//是否
+            this.dbfind = e.dbfind;//是否
+            this.caption = e.caption;//字
+            this.type = e.type;//类型(标
+            this.logicType = e.logicType;
+            this.readOnly = e.readOnly;//
+            this.field = e.field;//字段
+            this.value = "";//值
+            this.defValue = e.defValue;//
+            this.allowBlank = e.allowBlank;
+        }
+
+
+        public int getGroupIndex() {
+            return groupIndex;
+        }
+
+        public void setGroupIndex(int groupIndex) {
+            this.groupIndex = groupIndex;
+        }
+
+        public int getId() {
+            return id;
+        }
+
+        public void setId(int id) {
+            this.id = id;
+        }
+
+        public int getLength() {
+            return length;
+        }
+
+        public void setLength(int length) {
+            this.length = length;
+        }
+
+        public int getAppwidth() {
+            return appwidth;
+        }
+
+        public void setAppwidth(int appwidth) {
+            this.appwidth = appwidth;
+        }
+
+        public int getIsdefault() {
+            return isdefault;
+        }
+
+        public void setIsdefault(int isdefault) {
+            this.isdefault = isdefault;
+        }
+
+        public String getDbfind() {
+            return dbfind;
+        }
+
+        public void setDbfind(String dbfind) {
+            this.dbfind = dbfind;
+        }
+
+        public String getCaption() {
+            return caption == null ? "" : caption;
+        }
+
+        public void setCaption(String caption) {
+            this.caption = caption;
+        }
+
+        public String getType() {
+            return type == null ? "" : type;
+        }
+
+        public void setType(String type) {
+            this.type = type;
+        }
+
+        public String getLogicType() {
+            return logicType;
+        }
+
+        public void setLogicType(String logicType) {
+            this.logicType = logicType;
+        }
+
+        public String getReadOnly() {
+            return readOnly;
+        }
+
+        public void setReadOnly(String readOnly) {
+            this.readOnly = readOnly;
+        }
+
+        public String getField() {
+            return field;
+        }
+
+        public void setField(String field) {
+            this.field = field;
+        }
+
+        public String getValue() {
+            return value == null ? (defValue == null ? "" : defValue) : value;
+        }
+
+        public void setValue(String value) {
+            this.value = value;
+        }
+
+        public String getDefValue() {
+            return defValue;
+        }
+
+        public void setDefValue(String defValue) {
+            this.defValue = defValue;
+        }
+
+        public String getAllowBlank() {
+            return allowBlank == null ? "" : allowBlank;
+        }
+
+        public void setAllowBlank(String allowBlank) {
+            this.allowBlank = allowBlank;
+        }
+
+        public List<LocalData> getLocalDatas() {
+            return localDatas;
+        }
+
+        public void setLocalDatas(List<LocalData> localDatas) {
+            this.localDatas = localDatas;
+        }
+    }
+
+    /**
+     * 当C类型时候,本地选择数据
+     */
+    public static class LocalData {
+        public String value = "";//显示的值
+        public String display = "";//上传的值
+    }
+
+
+    public interface Constants {
+        String TYPE_TITLE = "LOCAL_TITLE";
+        String TYPE_ADD = "LOCAL_ADD";
+    }
+}

+ 166 - 0
app_modular/apputils/src/main/java/com/modular/apputils/presenter/BillPresenter.java

@@ -0,0 +1,166 @@
+package com.modular.apputils.presenter;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.common.LogUtil;
+import com.common.data.JSONUtil;
+import com.modular.apputils.model.BillGroupModel;
+import com.modular.apputils.presenter.imp.IBill;
+import com.modular.apputils.utils.TestDataUtils;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class BillPresenter {
+    private IBill iBill;
+
+
+    public BillPresenter(IBill iBill) {
+        this.iBill = iBill;
+    }
+
+    public void start() {
+        handlerBill(JSON.parseObject(TestDataUtils.getBillLocalData()));
+    }
+
+    //处理表单返回配置
+    private void handlerBill(JSONObject object) {
+        List<BillGroupModel> showBillModels = new ArrayList<>();
+        JSONObject config = JSONUtil.getJSONObject(object, "config");
+        JSONObject data = JSONUtil.getJSONObject(object, "data");
+        JSONArray formdetail = JSONUtil.getJSONArray(data, "formdetail");
+        Map<String, BillGroupModel> formdeMap = handlerFormdetail(formdetail);
+        if (formdeMap != null && !formdeMap.isEmpty()) {
+            for (Map.Entry<String, BillGroupModel> entry : formdeMap.entrySet()) {
+                showBillModels.add(entry.getValue());
+            }
+        }
+        JSONArray gridetail = JSONUtil.getJSONArray(data, "gridetail");
+        BillGroupModel mGridetailModel = handlerGridetail(showBillModels.size(), gridetail);
+        if (mGridetailModel != null) {
+            showBillModels.add(mGridetailModel);
+        }
+        //TODO showBillModels tode
+        LogUtil.i("gong", JSON.toJSONString(showBillModels));
+        iBill.setAdapter(showBillModels);
+    }
+
+    /**
+     * 获取主表数据包含分组
+     *
+     * @param formdetail
+     * @return
+     */
+    private Map<String, BillGroupModel> handlerFormdetail(JSONArray formdetail) {
+        if (formdetail != null && !formdetail.isEmpty()) {
+            JSONObject object = null;
+            Map<String, BillGroupModel> modelMap = new HashMap<>();
+            for (int i = 0; i < formdetail.size(); i++) {
+                object= formdetail.getJSONObject(i);
+                BillGroupModel.BillModel mBillModel = getBillModelByObject(object);
+                String group = JSONUtil.getText(object, "fd_group");//是否允许为空(注:当作为标题的时候T:表示可以删除 F:表示不可删除)
+                //判断组别
+                if (modelMap.containsKey(group)) {
+                    BillGroupModel mapBillGroupModel = modelMap.get(group);
+                    if (mapBillGroupModel == null) {
+                        mapBillGroupModel = new BillGroupModel();
+                        mapBillGroupModel.setForm(false);
+                        mapBillGroupModel.setGroup(group);
+                        mapBillGroupModel.setGroupIndex(modelMap.size());
+                        modelMap.put(group, mapBillGroupModel);
+                    }
+                    mBillModel.setGroupIndex(mapBillGroupModel.getGroupIndex());
+                    if (isShow(mBillModel)) {
+                        mapBillGroupModel.addShow(mBillModel);
+                    } else {
+                        mapBillGroupModel.addHide(mBillModel);
+                    }
+                } else {
+                    BillGroupModel mapBillGroupModel = new BillGroupModel();
+                    mapBillGroupModel.setGroup(group);
+                    mapBillGroupModel.setForm(false);
+                    mapBillGroupModel.setGroupIndex(modelMap.size());
+                    modelMap.put(group, mapBillGroupModel);
+                    mBillModel.setGroupIndex(mapBillGroupModel.getGroupIndex());
+                    if (isShow(mBillModel)) {
+                        mapBillGroupModel.addShow(mBillModel);
+                    } else {
+                        mapBillGroupModel.addHide(mBillModel);
+                    }
+                }
+            }
+            return modelMap;
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * 获取从表配置
+     *
+     * @param index
+     * @param formdetail
+     * @return
+     */
+    private BillGroupModel handlerGridetail(int index, JSONArray formdetail) {
+        if (formdetail != null && !formdetail.isEmpty()) {
+            BillGroupModel mBillGroupModel = new BillGroupModel();
+            mBillGroupModel.setGroupIndex(index);
+            mBillGroupModel.setGroup("明细表");
+            mBillGroupModel.setLastInType(true);
+            mBillGroupModel.setForm(false);
+            List<BillGroupModel.BillModel> hideBillFields = new ArrayList<>();//当前组隐藏的字段列表
+            List<BillGroupModel.BillModel> showBillFields = new ArrayList<>();//当前组显示的字段列表
+            for (int i = 0; i < formdetail.size(); i++) {
+                BillGroupModel.BillModel mBillModel = getBillModelByObject(formdetail.getJSONObject(i));
+                if (isShow(mBillModel)) {
+                    showBillFields.add(mBillModel);
+                } else {
+                    hideBillFields.add(mBillModel);
+                }
+            }
+            mBillGroupModel.setHideBillFields(hideBillFields);
+            mBillGroupModel.setShowBillFields(showBillFields);
+            return mBillGroupModel;
+        } else {
+            return null;
+        }
+    }
+
+    private BillGroupModel.BillModel getBillModelByObject(JSONObject object) {
+        BillGroupModel.BillModel mBillModel = new BillGroupModel.BillModel();
+        String caption = JSONUtil.getText(object, "fd_caption", "dg_caption");//字段名称
+        int id = JSONUtil.getInt(object, "fd_id", "gd_id");//id
+        int length = JSONUtil.getInt(object, "fd_maxlength", "dg_maxlength");//字符长度
+        int appwidth = JSONUtil.getInt(object, "fd_appwidth", "dg_appwidth");//宽度
+        int isdefault = JSONUtil.getInt(object, "mfd_isdefault", "mdg_isdefault");//是否显示
+        String dbfind = JSONUtil.getText(object, "fd_dbfind");//是否是dbfind字段判定
+        String type = JSONUtil.getText(object, "fd_type", "dg_type");//类型(标题类型为Constants.TYPE_TITLE,不触发点击事件等 )
+        String logicType = JSONUtil.getText(object, "fd_logictype", "dg_logictype");//logic类型
+        String readOnly = JSONUtil.getText(object, "fd_readonly");//是否只读
+        String field = JSONUtil.getText(object, "fd_field", "dg_field");//字段
+        String defValue = JSONUtil.getText(object, "fd_defaultvalue");//默认值
+        String allowBlank = JSONUtil.getText(object, "fd_allowblank");//是否允许为空(注:当作为标题的时候T:表示可以删除 F:表示不可删除)
+        mBillModel.setCaption(caption);
+        mBillModel.setId(id);
+        mBillModel.setLength(length);
+        mBillModel.setAppwidth(appwidth);
+        mBillModel.setIsdefault(isdefault);
+        mBillModel.setDbfind(dbfind);
+        mBillModel.setType(type);
+        mBillModel.setLogicType(logicType);
+        mBillModel.setReadOnly(readOnly);
+        mBillModel.setField(field);
+        mBillModel.setDefValue(defValue);
+        mBillModel.setAllowBlank(allowBlank);
+        return mBillModel;
+    }
+
+    private boolean isShow(BillGroupModel.BillModel mBillModel) {
+        return mBillModel.getIsdefault() == -1 && !mBillModel.getType().equals("H");
+    }
+
+}

+ 11 - 0
app_modular/apputils/src/main/java/com/modular/apputils/presenter/imp/IBill.java

@@ -0,0 +1,11 @@
+package com.modular.apputils.presenter.imp;
+
+
+import com.modular.apputils.model.BillGroupModel;
+
+import java.util.List;
+
+public interface IBill {
+    void setAdapter(List<BillGroupModel> groupModels);
+
+}

+ 109 - 0
app_modular/apputils/src/main/java/com/modular/apputils/utils/BillTypeChangeUtils.java

@@ -0,0 +1,109 @@
+package com.modular.apputils.utils;
+
+import android.text.TextUtils;
+
+import com.modular.apputils.model.BillGroupModel;
+
+
+public class BillTypeChangeUtils {
+
+
+    /**
+     * 获取item的显示类型
+     *
+     * @param dfType
+     * @return -1,异常显示
+     * 0.标题
+     * 1.选择
+     * 2.输入
+     */
+    public static int getItemViewType(String dfType) {
+        if (TextUtils.isEmpty(dfType)) return -1;
+        switch (dfType.toUpperCase()) {
+            case BillGroupModel.Constants.TYPE_TITLE:
+                return 0;
+            case BillGroupModel.Constants.TYPE_ADD:
+                return 110;
+            case "C":
+            case "SF":
+            case "DF":
+            case "S":
+            case "SS":
+                return 1;
+            default:
+                return 1;
+        }
+    }
+
+
+    public static boolean isSelect(String dfType) {
+        if (TextUtils.isEmpty(dfType)) return false;
+        switch (dfType.toUpperCase()) {
+            case "D":
+            case "C":
+            case "MF":
+            case "SF":
+            case "DF":
+                return true;
+        }
+        return false;
+    }
+
+
+    /**
+     * 将uas的类型转为adapter type可以使用的int
+     *
+     * @param dfType
+     * @return
+     */
+    public static int getType(String dfType) {
+        if (TextUtils.isEmpty(dfType)) return -1;
+        switch (dfType.toUpperCase()) {
+            case "SF":
+                return 1;
+            case "DF":
+                return 2;
+            default:
+                return getTypeVague(dfType);
+        }
+    }
+
+    /**
+     * 将uas的类型转为adapter type可以使用的int,使用模糊匹配
+     *
+     * @param dfType
+     * @return
+     */
+    public static int getTypeVague(String dfType) {
+        if (TextUtils.isEmpty(dfType)) return -1;
+        String dfTypeUpperCase = dfType.toUpperCase();
+        if (isContains(dfTypeUpperCase, "")) {
+            return 1000;
+        } else {
+            return -1;
+        }
+    }
+
+    public static boolean isContains(String key, String... str) {
+        if (str != null && str.length > 0) {
+            for (String s : str) {
+                if (key.contains(s))
+                    return true;
+            }
+        }
+        return false;
+    }
+
+    public static String getDbType(int type) {
+        switch (type) {
+            case 1:
+                return "SF";
+            case 2:
+                return "DF";
+            default:
+                return "";
+        }
+    }
+
+
+}

+ 1776 - 1
app_modular/apputils/src/main/java/com/modular/apputils/utils/TestDataUtils.java

@@ -10,5 +10,1780 @@ public class TestDataUtils {
         return CommonUtil.getAssetsJson(MyApplication.getInstance(), "oa_test_data.json");
     }
 
-
+    public final static String getBillLocalData(){
+        return "{\n" +
+                "\t\"sessionId\": \"0AB31468C9BE7501DBFD6F2CCB0F28A4\",\n" +
+                "\t\"data\": {\n" +
+                "\t\t\"formdetail\": [{\n" +
+                "\t\t\t\"fd_caption\": \"交易币别\",\n" +
+                "\t\t\t\"fd_dbfind\": \"T\",\n" +
+                "\t\t\t\"fd_maxlength\": 50,\n" +
+                "\t\t\t\"fd_logictype\": \"sa_rate\",\n" +
+                "\t\t\t\"fd_type\": \"SF\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"F\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_currency\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"商务信息\",\n" +
+                "\t\t\t\"fd_detno\": 7,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401870\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"汇率\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 22,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SF\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_rate\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"商务信息\",\n" +
+                "\t\t\t\"fd_detno\": 8,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401897\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"收款条件\",\n" +
+                "\t\t\t\"fd_dbfind\": \"PT\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": \"sa_payments\",\n" +
+                "\t\t\t\"fd_type\": \"PT\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"F\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_paymentscode\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"商务信息\",\n" +
+                "\t\t\t\"fd_detno\": 10,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401752\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"收款条件\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 10,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"PT\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"F\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_payments\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"商务信息\",\n" +
+                "\t\t\t\"fd_detno\": 11,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401753\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"应收客户\",\n" +
+                "\t\t\t\"fd_dbfind\": \"T\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": \"sa_apcustname\",\n" +
+                "\t\t\t\"fd_type\": \"SF\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"F\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_apcustcode\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"商务信息\",\n" +
+                "\t\t\t\"fd_detno\": 12,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401867\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"应收客户名称\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SF\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_apcustname\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"商务信息\",\n" +
+                "\t\t\t\"fd_detno\": 13,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401766\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"收货客户\",\n" +
+                "\t\t\t\"fd_dbfind\": \"T\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": \"sa_shcustname\",\n" +
+                "\t\t\t\"fd_type\": \"SF\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"F\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_shcustcode\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"商务信息\",\n" +
+                "\t\t\t\"fd_detno\": 14,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401754\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"收货客户名称\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SF\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"F\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_shcustname\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"商务信息\",\n" +
+                "\t\t\t\"fd_detno\": 15,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401764\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"收货地址\",\n" +
+                "\t\t\t\"fd_dbfind\": \"T\",\n" +
+                "\t\t\t\"fd_maxlength\": 500,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SF\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_toplace\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"商务信息\",\n" +
+                "\t\t\t\"fd_detno\": 16,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401765\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"运输方式\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 50,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [{\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"供应商送货\",\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"供应商送货\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": 1\n" +
+                "\t\t\t},\n" +
+                "\t\t\t{\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"海运\",\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"海运\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": 2\n" +
+                "\t\t\t},\n" +
+                "\t\t\t{\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"陆运\",\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"陆运\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": 3\n" +
+                "\t\t\t},\n" +
+                "\t\t\t{\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"客户自提\",\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"客户自提\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": 4\n" +
+                "\t\t\t},\n" +
+                "\t\t\t{\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"快递\",\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"快递\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": 5\n" +
+                "\t\t\t},\n" +
+                "\t\t\t{\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"空运\",\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"空运\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": 6\n" +
+                "\t\t\t}],\n" +
+                "\t\t\t\"fd_type\": \"C\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_transport\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"商务信息\",\n" +
+                "\t\t\t\"fd_detno\": 18,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401890\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"出货方式\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [{\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"整机\",\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"整机\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": 1\n" +
+                "\t\t\t},\n" +
+                "\t\t\t{\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"CKD\",\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"CKD\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": 2\n" +
+                "\t\t\t},\n" +
+                "\t\t\t{\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"整机+SKD\",\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"整机+SKD\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": 3\n" +
+                "\t\t\t},\n" +
+                "\t\t\t{\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"SKD+CKD\",\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"SKD+CKD\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": 4\n" +
+                "\t\t\t},\n" +
+                "\t\t\t{\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"SKD\",\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"SKD\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": 5\n" +
+                "\t\t\t}],\n" +
+                "\t\t\t\"fd_type\": \"C\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_chfs\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"商务信息\",\n" +
+                "\t\t\t\"fd_detno\": 24,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401768\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"销售订单号\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_code\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 1,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401887\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"日期\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 50,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"D\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"F\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_date\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"2018-09-10\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 2,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401749\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"订单类型\",\n" +
+                "\t\t\t\"fd_dbfind\": \"T\",\n" +
+                "\t\t\t\"fd_maxlength\": 50,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SF\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"F\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_kind\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 3,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401750\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"单据状态\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 30,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": \"Highlight:{blue=在录入,red=已审核}\",\n" +
+                "\t\t\t\"fd_field\": \"sa_status\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"在录入\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 4,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401892\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"客户\",\n" +
+                "\t\t\t\"fd_dbfind\": \"T\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": \"sa_custname\",\n" +
+                "\t\t\t\"fd_type\": \"SF\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"F\",\n" +
+                "\t\t\t\"fd_render\": \"link:jsps/scm/sale/customerBase.jsp?formCondition=cu_codeIS{sa_custcode}\",\n" +
+                "\t\t\t\"fd_field\": \"sa_custcode\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 5,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401889\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"客户名称\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 200,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SF\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_custname\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 6,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401866\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"部门编号\",\n" +
+                "\t\t\t\"fd_dbfind\": \"T\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": \"sa_departmentname\",\n" +
+                "\t\t\t\"fd_type\": \"SF\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"F\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_departmentcode\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 20,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401769\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"部门名称\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SF\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_departmentname\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 21,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401755\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"业务员号\",\n" +
+                "\t\t\t\"fd_dbfind\": \"T\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": \"sa_seller\",\n" +
+                "\t\t\t\"fd_type\": \"SF\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"F\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_sellercode\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 22,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401885\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"业务员\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SF\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_seller\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 23,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401751\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"客户PO号\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_pocode\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 23.5,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401888\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"备注\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 1000,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"MS\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_remark\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 40,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401895\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"客户ID\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 10,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"H\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"F\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_custid\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 51,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401759\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"单据状态编码\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 30,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"H\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_statuscode\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"ENTERING\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 52,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401760\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"ID\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 10,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"H\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_id\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 53,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401761\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"来源ID\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 10,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"H\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_sourceid\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 54,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401762\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"录入人ID\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 10,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"H\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"F\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_recorderid\",\n" +
+                "\t\t\t\"fd_defaultvalue\": 1025328,\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 55,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401893\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"收款方式\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 10,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"H\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_paymentsid\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 56,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401869\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"抛转状态\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"H\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_sync\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 57,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401861\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"关联商机ID\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"H\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_bcid\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 59,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401868\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"复审状态\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_recheckstatus\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 230,\n" +
+                "\t\t\t\"fd_appwidth\": 0,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 418999\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"复审状态码\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_recheckstatuscode\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"基本信息\",\n" +
+                "\t\t\t\"fd_detno\": 231,\n" +
+                "\t\t\t\"fd_appwidth\": 0,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 419000\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"下单类型_标识B2C订单\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 20,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [{\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"商城订单\",\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"B2C\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": 0\n" +
+                "\t\t\t}],\n" +
+                "\t\t\t\"fd_type\": \"C\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_ordertype\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"提示信息\",\n" +
+                "\t\t\t\"fd_detno\": 301,\n" +
+                "\t\t\t\"fd_appwidth\": 0,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 420983\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"运费\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 22,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"N\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": \"floatNumber:8\",\n" +
+                "\t\t\t\"fd_field\": \"sa_fare\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"提示信息\",\n" +
+                "\t\t\t\"fd_detno\": 442,\n" +
+                "\t\t\t\"fd_appwidth\": 0,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 420979\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"预收金额\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"N\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_prepayamount\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 25,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401860\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"来源单号\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_sourcecode\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 26,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401862\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"来源类型\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_sourcetype\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 27,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401863\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"通知单状态\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 50,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_turnstatus\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 30,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401896\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"发货状态\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 50,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_sendstatus\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 31,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401758\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"打印状态\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 12,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_printstatus\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"未打印\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 32,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401891\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"打印次数\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"N\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": \"floatNumber:6\",\n" +
+                "\t\t\t\"fd_field\": \"sa_count\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 33,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401864\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"录入人\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 50,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_recorder\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"龚鹏明\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 34,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401748\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"录入日期\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 10,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"D\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_recorddate\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"2018-09-10 09:33:38\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 35,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401757\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"最后更新人\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 50,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_updateman\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 36,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401859\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"最后更新日\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 10,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"D\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_updatedate\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 37,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401894\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"审核人\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 50,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": \"link:jsps/scm/sale/customerBase.jsp?formCondition=cu_codeIS{sa_custcode}\",\n" +
+                "\t\t\t\"fd_field\": \"sa_auditman\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 38,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401770\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"审核日期\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"D\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_auditdate\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 39,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": -1,\n" +
+                "\t\t\t\"fd_id\": 401858\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"自动取单价\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 4,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"H\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"F\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_getprice\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"0\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 50,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401756\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"是否负利润\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 10,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_minus\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 124,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401899\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"商城采购单号\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 50,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"fd_type\": \"SS\",\n" +
+                "\t\t\t\"fd_readonly\": \"T\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_b2cpucode\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 125,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 401898\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"fd_caption\": \"类型\",\n" +
+                "\t\t\t\"fd_dbfind\": \"F\",\n" +
+                "\t\t\t\"fd_maxlength\": 100,\n" +
+                "\t\t\t\"fd_logictype\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [{\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"试产\",\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"试产\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": 0\n" +
+                "\t\t\t},\n" +
+                "\t\t\t{\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"量产\",\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"量产\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": 1\n" +
+                "\t\t\t}],\n" +
+                "\t\t\t\"fd_type\": \"C\",\n" +
+                "\t\t\t\"fd_readonly\": \"F\",\n" +
+                "\t\t\t\"fd_allowblank\": \"T\",\n" +
+                "\t\t\t\"fd_render\": null,\n" +
+                "\t\t\t\"fd_field\": \"sa_type\",\n" +
+                "\t\t\t\"fd_defaultvalue\": \"\",\n" +
+                "\t\t\t\"fd_group\": \"管理信息\",\n" +
+                "\t\t\t\"fd_detno\": 150,\n" +
+                "\t\t\t\"fd_appwidth\": 2,\n" +
+                "\t\t\t\"mfd_isdefault\": 0,\n" +
+                "\t\t\t\"fd_id\": 408584\n" +
+                "\t\t}],\n" +
+                "\t\t\"gridetail\": [{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 60,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250424,\n" +
+                "\t\t\t\"dg_caption\": \"序号\",\n" +
+                "\t\t\t\"dg_field\": \"sd_detno\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 1,\n" +
+                "\t\t\t\"dg_logictype\": \"detno\"\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": \"link:jsps/scm/product/product.jsp?formConditionISpr_code={sd_prodcode}\",\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 140,\n" +
+                "\t\t\t\"mdg_isdefault\": -1,\n" +
+                "\t\t\t\"gd_id\": 250420,\n" +
+                "\t\t\t\"dg_caption\": \"物料编号\",\n" +
+                "\t\t\t\"dg_field\": \"sd_prodcode\",\n" +
+                "\t\t\t\"dg_maxlength\": 100,\n" +
+                "\t\t\t\"dg_type\": \"DF\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": \"Product|pr_code\",\n" +
+                "\t\t\t\"dg_sequence\": 2,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250518,\n" +
+                "\t\t\t\"dg_caption\": \"平台批号\",\n" +
+                "\t\t\t\"dg_field\": \"sd_b2cbarcode\",\n" +
+                "\t\t\t\"dg_maxlength\": 50,\n" +
+                "\t\t\t\"dg_type\": \"S\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 9.2,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": \"scm_sale_sdqty\",\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": -1,\n" +
+                "\t\t\t\"gd_id\": 250430,\n" +
+                "\t\t\t\"dg_caption\": \"数量\",\n" +
+                "\t\t\t\"dg_field\": \"sd_qty\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 12,\n" +
+                "\t\t\t\"dg_logictype\": \"necessaryField\"\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": \"rowClass\",\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250482,\n" +
+                "\t\t\t\"dg_caption\": \"定价\",\n" +
+                "\t\t\t\"dg_field\": \"sd_purcprice\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 13,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 120,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 259586,\n" +
+                "\t\t\t\"dg_caption\": \"上次销售单价\",\n" +
+                "\t\t\t\"dg_field\": \"sd_lastprice\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 14,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 90,\n" +
+                "\t\t\t\"mdg_isdefault\": -1,\n" +
+                "\t\t\t\"gd_id\": 250414,\n" +
+                "\t\t\t\"dg_caption\": \"单价\",\n" +
+                "\t\t\t\"dg_field\": \"sd_price\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 14,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": \"sd_price\",\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 265746,\n" +
+                "\t\t\t\"dg_caption\": \"原单价\",\n" +
+                "\t\t\t\"dg_field\": \"sd_cbm\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 0,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 14.1,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250508,\n" +
+                "\t\t\t\"dg_caption\": \"折扣率\",\n" +
+                "\t\t\t\"dg_field\": \"sd_discount\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 15,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 90,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250416,\n" +
+                "\t\t\t\"dg_caption\": \"总额\",\n" +
+                "\t\t\t\"dg_field\": \"sd_total\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"nfloatcolumn6\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 15,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 273206,\n" +
+                "\t\t\t\"dg_caption\": \"新金额\",\n" +
+                "\t\t\t\"dg_field\": \"sd_total_user\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"nfloatcolumn6\",\n" +
+                "\t\t\t\"dg_appwidth\": 0,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 15.1,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": -1,\n" +
+                "\t\t\t\"gd_id\": 250474,\n" +
+                "\t\t\t\"dg_caption\": \"税率%\",\n" +
+                "\t\t\t\"dg_field\": \"sd_taxrate\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 16,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 90,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250438,\n" +
+                "\t\t\t\"dg_caption\": \"不含税单价\",\n" +
+                "\t\t\t\"dg_field\": \"sd_costprice\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 17,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 90,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250434,\n" +
+                "\t\t\t\"dg_caption\": \"不含税金额\",\n" +
+                "\t\t\t\"dg_field\": \"sd_taxtotal\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 18,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250506,\n" +
+                "\t\t\t\"dg_caption\": \"成本单价\",\n" +
+                "\t\t\t\"dg_field\": \"sd_costingprice\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 19,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": \"defaultValue:-1\",\n" +
+                "\t\t\t\"COMBOSTORE\": [{\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"-1\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": \"0\",\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"是\"\n" +
+                "\t\t\t},\n" +
+                "\t\t\t{\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"0\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": \"1\",\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"否\"\n" +
+                "\t\t\t}],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250484,\n" +
+                "\t\t\t\"dg_caption\": \"是否特价\",\n" +
+                "\t\t\t\"dg_field\": \"sd_isspecial\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"C\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 20,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": \"rowClass\",\n" +
+                "\t\t\t\"COMBOSTORE\": [{\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"-1\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": \"0\",\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"是\"\n" +
+                "\t\t\t},\n" +
+                "\t\t\t{\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"0\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": \"1\",\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"否\"\n" +
+                "\t\t\t}],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250452,\n" +
+                "\t\t\t\"dg_caption\": \"是否保税\",\n" +
+                "\t\t\t\"dg_field\": \"sd_bonded\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"C\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 21,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 110,\n" +
+                "\t\t\t\"mdg_isdefault\": -1,\n" +
+                "\t\t\t\"gd_id\": 250410,\n" +
+                "\t\t\t\"dg_caption\": \"交货日期\",\n" +
+                "\t\t\t\"dg_field\": \"sd_delivery\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"D\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 22,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 110,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250526,\n" +
+                "\t\t\t\"dg_caption\": \"PMC回复日期\",\n" +
+                "\t\t\t\"dg_field\": \"sd_pmcdate\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"D\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 23,\n" +
+                "\t\t\t\"dg_logictype\": \"unauto\"\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 120,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250460,\n" +
+                "\t\t\t\"dg_caption\": \"PMC备注\",\n" +
+                "\t\t\t\"dg_field\": \"sd_pmcremark\",\n" +
+                "\t\t\t\"dg_maxlength\": 100,\n" +
+                "\t\t\t\"dg_type\": \"S\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 24,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": \"link:jsps/scm/product/productBase.jsp?formConditionISpr_code={sd_custprodcode}\",\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 100,\n" +
+                "\t\t\t\"mdg_isdefault\": -1,\n" +
+                "\t\t\t\"gd_id\": 250454,\n" +
+                "\t\t\t\"dg_caption\": \"客户物料编号\",\n" +
+                "\t\t\t\"dg_field\": \"sd_custprodcode\",\n" +
+                "\t\t\t\"dg_maxlength\": 30,\n" +
+                "\t\t\t\"dg_type\": \"S\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": \"ProductCustomer|pc_custprodcode\",\n" +
+                "\t\t\t\"dg_sequence\": 26,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 100,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250520,\n" +
+                "\t\t\t\"dg_caption\": \"客户物料名称\",\n" +
+                "\t\t\t\"dg_field\": \"sd_custproddetail\",\n" +
+                "\t\t\t\"dg_maxlength\": 100,\n" +
+                "\t\t\t\"dg_type\": \"S\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 26.1,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 100,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250486,\n" +
+                "\t\t\t\"dg_caption\": \"客户型号\",\n" +
+                "\t\t\t\"dg_field\": \"sd_prodcustcode\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"S\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 27,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [{\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"-1\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": \"0\",\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"是\"\n" +
+                "\t\t\t},\n" +
+                "\t\t\t{\n" +
+                "\t\t\t\t\"DLC_DISPLAY\": \"0\",\n" +
+                "\t\t\t\t\"DLC_DETNO\": \"1\",\n" +
+                "\t\t\t\t\"DLC_VALUE\": \"否\"\n" +
+                "\t\t\t}],\n" +
+                "\t\t\t\"dg_width\": 100,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250494,\n" +
+                "\t\t\t\"dg_caption\": \"是否超预测数\",\n" +
+                "\t\t\t\"dg_field\": \"sd_noforecast\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"C\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 29,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 120,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250476,\n" +
+                "\t\t\t\"dg_caption\": \"预测单号\",\n" +
+                "\t\t\t\"dg_field\": \"sd_forecastcode\",\n" +
+                "\t\t\t\"dg_maxlength\": 100,\n" +
+                "\t\t\t\"dg_type\": \"DF\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": \"SaleForecastDetail!BySale|sf_code\",\n" +
+                "\t\t\t\"dg_sequence\": 30,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250478,\n" +
+                "\t\t\t\"dg_caption\": \"预测序号\",\n" +
+                "\t\t\t\"dg_field\": \"sd_forecastdetno\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 31,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250470,\n" +
+                "\t\t\t\"dg_caption\": \"提前期\",\n" +
+                "\t\t\t\"dg_field\": \"sd_leadtime\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 35,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250472,\n" +
+                "\t\t\t\"dg_caption\": \"报关价\",\n" +
+                "\t\t\t\"dg_field\": \"sd_bgprice\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 36,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 120,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250412,\n" +
+                "\t\t\t\"dg_caption\": \"描述\",\n" +
+                "\t\t\t\"dg_field\": \"sd_description\",\n" +
+                "\t\t\t\"dg_maxlength\": 120,\n" +
+                "\t\t\t\"dg_type\": \"S\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 37,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 200,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250450,\n" +
+                "\t\t\t\"dg_caption\": \"备注1\",\n" +
+                "\t\t\t\"dg_field\": \"sd_remark\",\n" +
+                "\t\t\t\"dg_maxlength\": 200,\n" +
+                "\t\t\t\"dg_type\": \"MS\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 38,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 150,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250462,\n" +
+                "\t\t\t\"dg_caption\": \"备注2\",\n" +
+                "\t\t\t\"dg_field\": \"sd_remark2\",\n" +
+                "\t\t\t\"dg_maxlength\": 200,\n" +
+                "\t\t\t\"dg_type\": \"MS\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 39,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 100,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250458,\n" +
+                "\t\t\t\"dg_caption\": \"BOM ID\",\n" +
+                "\t\t\t\"dg_field\": \"sd_bomid\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 40,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250466,\n" +
+                "\t\t\t\"dg_caption\": \"状态\",\n" +
+                "\t\t\t\"dg_field\": \"sd_status\",\n" +
+                "\t\t\t\"dg_maxlength\": 30,\n" +
+                "\t\t\t\"dg_type\": \"S\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 43,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 120,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250480,\n" +
+                "\t\t\t\"dg_caption\": \"结案冻结原因\",\n" +
+                "\t\t\t\"dg_field\": \"sd_barcode\",\n" +
+                "\t\t\t\"dg_maxlength\": 20,\n" +
+                "\t\t\t\"dg_type\": \"S\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 44,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 100,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250496,\n" +
+                "\t\t\t\"dg_caption\": \"已转制造数量\",\n" +
+                "\t\t\t\"dg_field\": \"sd_tomakeqty\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 45,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 110,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250406,\n" +
+                "\t\t\t\"dg_caption\": \"组装开工日期\",\n" +
+                "\t\t\t\"dg_field\": \"sd_packagedate\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"D\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 46,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 100,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250502,\n" +
+                "\t\t\t\"dg_caption\": \"供应商比例(%)\",\n" +
+                "\t\t\t\"dg_field\": \"sd_vendorrate\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 47,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 0,\n" +
+                "\t\t\t\"mdg_isdefault\": -1,\n" +
+                "\t\t\t\"gd_id\": 250428,\n" +
+                "\t\t\t\"dg_caption\": \"ID\",\n" +
+                "\t\t\t\"dg_field\": \"sd_id\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 48,\n" +
+                "\t\t\t\"dg_logictype\": \"keyField\"\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 0,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250426,\n" +
+                "\t\t\t\"dg_caption\": \"SAID\",\n" +
+                "\t\t\t\"dg_field\": \"sd_said\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 49,\n" +
+                "\t\t\t\"dg_logictype\": \"mainField\"\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 0,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250422,\n" +
+                "\t\t\t\"dg_caption\": \"物料id\",\n" +
+                "\t\t\t\"dg_field\": \"sd_prodid\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 50,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 0,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250500,\n" +
+                "\t\t\t\"dg_caption\": \"商机id\",\n" +
+                "\t\t\t\"dg_field\": \"sd_bcid\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 51,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 100,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250468,\n" +
+                "\t\t\t\"dg_caption\": \"备品数量\",\n" +
+                "\t\t\t\"dg_field\": \"sd_readyqty\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 52,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 0,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250464,\n" +
+                "\t\t\t\"dg_caption\": \"来源明细ID\",\n" +
+                "\t\t\t\"dg_field\": \"sd_sourceid\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 53,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 0,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250488,\n" +
+                "\t\t\t\"dg_caption\": \"预测明细ID\",\n" +
+                "\t\t\t\"dg_field\": \"sd_saleforecastdetailid\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 54,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 0,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250432,\n" +
+                "\t\t\t\"dg_caption\": \"SACODE\",\n" +
+                "\t\t\t\"dg_field\": \"sd_code\",\n" +
+                "\t\t\t\"dg_maxlength\": 100,\n" +
+                "\t\t\t\"dg_type\": \"S\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 55,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 0,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250418,\n" +
+                "\t\t\t\"dg_caption\": \"状态编码\",\n" +
+                "\t\t\t\"dg_field\": \"sd_statuscode\",\n" +
+                "\t\t\t\"dg_maxlength\": 30,\n" +
+                "\t\t\t\"dg_type\": \"S\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 56,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 0,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250504,\n" +
+                "\t\t\t\"dg_caption\": \"发货日期\",\n" +
+                "\t\t\t\"dg_field\": \"sd_senddate\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"D\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 57,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 100,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250510,\n" +
+                "\t\t\t\"dg_caption\": \"毛利率%\",\n" +
+                "\t\t\t\"dg_field\": \"sd_bodycost\",\n" +
+                "\t\t\t\"dg_maxlength\": 12,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 67,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250512,\n" +
+                "\t\t\t\"dg_caption\": \"是否负利润\",\n" +
+                "\t\t\t\"dg_field\": \"sd_minus\",\n" +
+                "\t\t\t\"dg_maxlength\": 10,\n" +
+                "\t\t\t\"dg_type\": \"S\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 143,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 250514,\n" +
+                "\t\t\t\"dg_caption\": \"BOM成本价\",\n" +
+                "\t\t\t\"dg_field\": \"sd_bomprice\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"N\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 221,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 110,\n" +
+                "\t\t\t\"mdg_isdefault\": -1,\n" +
+                "\t\t\t\"gd_id\": 250528,\n" +
+                "\t\t\t\"dg_caption\": \"结案日期\",\n" +
+                "\t\t\t\"dg_field\": \"sd_enddate\",\n" +
+                "\t\t\t\"dg_maxlength\": 0,\n" +
+                "\t\t\t\"dg_type\": \"D\",\n" +
+                "\t\t\t\"dg_appwidth\": 2,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 301,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t},\n" +
+                "\t\t{\n" +
+                "\t\t\t\"dg_renderer\": null,\n" +
+                "\t\t\t\"COMBOSTORE\": [],\n" +
+                "\t\t\t\"dg_width\": 80,\n" +
+                "\t\t\t\"mdg_isdefault\": 0,\n" +
+                "\t\t\t\"gd_id\": 279686,\n" +
+                "\t\t\t\"dg_caption\": \"所属工厂\",\n" +
+                "\t\t\t\"dg_field\": \"sd_factory\",\n" +
+                "\t\t\t\"dg_maxlength\": 50,\n" +
+                "\t\t\t\"dg_type\": \"S\",\n" +
+                "\t\t\t\"dg_appwidth\": 0,\n" +
+                "\t\t\t\"dg_findfunctionname\": null,\n" +
+                "\t\t\t\"dg_sequence\": 376,\n" +
+                "\t\t\t\"dg_logictype\": null\n" +
+                "\t\t}]\n" +
+                "\t},\n" +
+                "\t\"config\": {\n" +
+                "\t\t\"fo_keyfield\": \"sa_id\",\n" +
+                "\t\t\"fo_statusfield\": \"sa_status\",\n" +
+                "\t\t\"fo_detailkeyfield\": \"sd_id\",\n" +
+                "\t\t\"fo_statuscodefield\": \"sa_statuscode\",\n" +
+                "\t\t\"fo_detailmainkeyfield\": \"sd_said\"\n" +
+                "\t},\n" +
+                "\t\"success\": true\n" +
+                "}";
+    }
 }

+ 11 - 0
app_modular/apputils/src/main/res/layout/activity_bill_input.xml

@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/mRecyclerView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"/>
+</RelativeLayout>

+ 20 - 0
app_modular/apputils/src/main/res/layout/item_bill_add.xml

@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="horizontal"
+    android:weightSum="2">
+
+    <TextView
+        android:id="@+id/addTv"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:layout_weight="1"
+        android:drawablePadding="5dp"
+        android:padding="10dp"
+        android:textColor="@color/titleBlue"
+        android:text="+添加明细"
+        android:textSize="@dimen/text_main" />
+
+</RelativeLayout>

+ 60 - 0
app_modular/apputils/src/main/res/layout/item_bill_input_select.xml

@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@color/white"
+    android:maxHeight="180dp"
+    android:minHeight="50dp"
+    android:padding="@dimen/padding">
+
+
+    <TextView
+        android:id="@+id/captionTv"
+        android:layout_width="60dp"
+        android:layout_height="wrap_content"
+        android:text="商机阶段"
+        android:textColor="@color/text_hine"
+        android:textSize="@dimen/text_hine"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+
+    <TextView
+        android:id="@+id/muchInputTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="3dp"
+        android:layout_marginTop="8dp"
+        android:text="*"
+        android:textColor="@color/red"
+        android:visibility="visible"
+        app:layout_constraintLeft_toRightOf="@id/captionTv" />
+
+    <ImageView
+        android:id="@+id/selectIv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:src="@drawable/oa_next"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+    <EditText
+        android:id="@+id/valuesEd"
+        android:layout_width="0dp"
+        android:layout_height="0dp"
+        android:layout_marginLeft="@dimen/padding"
+        android:background="@null"
+        android:gravity="right|center"
+        android:hint="请输入"
+        android:textColor="@color/text_main"
+        android:textSize="@dimen/text_hine"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toRightOf="@id/muchInputTv"
+        app:layout_constraintRight_toLeftOf="@id/selectIv"
+        app:layout_constraintTop_toTopOf="parent" />
+</android.support.constraint.ConstraintLayout>

+ 35 - 0
app_modular/apputils/src/main/res/layout/item_bill_title.xml

@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:layout_marginTop="10dp"
+    android:background="@color/white"
+    android:orientation="horizontal"
+    android:weightSum="2">
+
+    <TextView
+        android:id="@+id/tv_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="left"
+        android:layout_weight="1"
+        android:drawablePadding="5dp"
+        android:padding="10dp"
+        android:textColor="@color/titleBlue"
+        android:text="基本信息"
+        android:textSize="@dimen/text_main" />
+
+    <TextView
+        android:id="@+id/deleteTv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_gravity="right"
+        android:layout_margin="1dp"
+        android:layout_weight="1"
+        android:gravity="center"
+        android:padding="10dp"
+        android:text="删除"
+        android:textColor="@color/titleBlue"
+        android:textSize="15sp" />
+</RelativeLayout>

+ 2 - 0
app_modular/appworks/src/main/AndroidManifest.xml

@@ -494,6 +494,8 @@
             </intent-filter>
         </activity>
         <activity android:name=".activity.TimeHelperSettingActivity" />
+        <activity android:name=".CRM.erp.activity.CustomerVisitActivity"
+            android:label="@string/crm_customer_visit"/>
     </application>
 
 </manifest>

+ 67 - 0
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/CustomerVisitActivity.java

@@ -0,0 +1,67 @@
+package com.uas.appworks.CRM.erp.activity;
+
+import android.os.Bundle;
+import android.support.v7.widget.RecyclerView;
+import android.widget.RadioButton;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.core.base.BaseActivity;
+import com.core.utils.CommonUtil;
+import com.modular.apputils.activity.BaseNetActivity;
+import com.modular.apputils.widget.DivideRadioGroup;
+import com.modular.apputils.widget.compactcalender.CompactCalendarView;
+import com.uas.appworks.R;
+
+/**
+ * CRM 3.0 客户拜访界面
+ */
+public class CustomerVisitActivity extends BaseNetActivity {
+    private DivideRadioGroup visitTypeRg;
+    private RadioButton myVisitRb;
+    private RadioButton otherVisitRb;
+    private RelativeLayout calenderRl;
+    private TextView monthTv;
+    private TextView newDayTv;
+    private CompactCalendarView compactcalendarView;
+    private RecyclerView mRecyclerView;
+
+
+    @Override
+    protected int getLayoutId() {
+        return R.layout.activity_customer_visit;
+    }
+
+    @Override
+    protected void init() throws Exception {
+        initView();
+
+    }
+
+    @Override
+    protected String getBaseUrl() {
+        return CommonUtil.getAppBaseUrl(this);
+    }
+
+    private void initView() {
+        visitTypeRg = (DivideRadioGroup) findViewById(R.id.visitTypeRg);
+        myVisitRb = (RadioButton) findViewById(R.id.myVisitRb);
+        otherVisitRb = (RadioButton) findViewById(R.id.otherVisitRb);
+        calenderRl = (RelativeLayout) findViewById(R.id.calenderRl);
+        monthTv = (TextView) findViewById(R.id.monthTv);
+        newDayTv = (TextView) findViewById(R.id.newDayTv);
+        compactcalendarView = (CompactCalendarView) findViewById(R.id.compactcalendar_view);
+        mRecyclerView = (RecyclerView) findViewById(R.id.mRecyclerView);
+
+        visitTypeRg.setOnCheckedChangeListener(new DivideRadioGroup.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(DivideRadioGroup group, int checkedId) {
+                if (checkedId == R.id.myVisitRb) {
+
+                } else if (R.id.otherVisitRb == checkedId) {
+
+                }
+            }
+        });
+    }
+}

+ 15 - 7
app_modular/appworks/src/main/java/com/uas/appworks/activity/ScheduleActivity.java

@@ -154,6 +154,10 @@ public class ScheduleActivity extends BaseNetActivity {
         requestHttp(new Parameter.Builder()
                         .addParams("imid", MyApplication.getInstance().getLoginUserId())
                         .addParams("month", month)
+                        .addParams("uasUrl", CommonUtil.getAppBaseUrl(ct))
+                        .addParams("emcode", CommonUtil.getEmcode())
+                        .addParams("master", CommonUtil.getMaster())
+                        .addParams("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"))
                         .url("schedule/getByMonthSchedule")
                         .record(LOAD_MONTH)
                 , mOnSmartHttpListener);
@@ -163,6 +167,10 @@ public class ScheduleActivity extends BaseNetActivity {
         requestHttp(new Parameter.Builder()
                         .addParams("imid", MyApplication.getInstance().getLoginUserId())
                         .addParams("day", dateStr)
+                        .addParams("uasUrl", CommonUtil.getAppBaseUrl(ct))
+                        .addParams("emcode", CommonUtil.getEmcode())
+                        .addParams("master", CommonUtil.getMaster())
+                        .addParams("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"))
                         .url("schedule/getByDaySchedule")
                         .record(LOAD_DAY)
                 , mOnSmartHttpListener);
@@ -350,8 +358,8 @@ public class ScheduleActivity extends BaseNetActivity {
             if ("个人预约".equals(mSchedule.getType())) {
                 Bundle bundle = new Bundle();
                 BookingModel model = getBookingModelByString(mSchedule.getDetails());
-                if (model==null){
-                    ToastUtil.showToast(ct,R.string.error_message);
+                if (model == null) {
+                    ToastUtil.showToast(ct, R.string.error_message);
                     return;
                 }
                 bundle.putParcelable("model", model);
@@ -360,8 +368,8 @@ public class ScheduleActivity extends BaseNetActivity {
             } else if ("商务预约".equals(mSchedule.getType())) {
                 Bundle bundle = new Bundle();
                 BookingModel model = getBookingModelByString(mSchedule.getDetails());
-                if (model==null){
-                    ToastUtil.showToast(ct,R.string.error_message);
+                if (model == null) {
+                    ToastUtil.showToast(ct, R.string.error_message);
                     return;
                 }
                 bundle.putParcelable("model", model);
@@ -376,8 +384,8 @@ public class ScheduleActivity extends BaseNetActivity {
 
         private BookingModel getBookingModelByString(String json) throws Exception {
             JSONArray array = JSON.parseArray(json);
-            if (!ListUtils.isEmpty(array)){
-                JSONObject object =array.getJSONObject(0);
+            if (!ListUtils.isEmpty(array)) {
+                JSONObject object = array.getJSONObject(0);
                 BookingModel model = new BookingModel();
                 model.setAb_id(JSONUtil.getText(object, "ab_id"));
                 model.setAb_bman(JSONUtil.getText(object, "ab_bman"));
@@ -398,7 +406,7 @@ public class ScheduleActivity extends BaseNetActivity {
                 model.setAd_reason(JSONUtil.getText(object, "ab_reason"));
                 return model;
             }
-           return null;
+            return null;
         }
 
         @Override

+ 106 - 0
app_modular/appworks/src/main/res/layout/activity_customer_visit.xml

@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <com.modular.apputils.widget.DivideRadioGroup
+        android:id="@+id/visitTypeRg"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/white"
+        android:orientation="horizontal"
+        app:layout_constraintTop_toTopOf="parent">
+
+        <RadioButton
+            android:id="@+id/myVisitRb"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:button="@null"
+            android:checked="true"
+            android:gravity="center"
+            android:padding="@dimen/padding"
+            android:text="我的拜访"
+            android:textColor="@color/color_public_inquiry_quote"
+            android:textSize="15sp" />
+
+        <View
+            android:layout_width="@dimen/line"
+            android:layout_height="match_parent"
+            android:background="@color/linen" />
+
+        <RadioButton
+            android:id="@+id/otherVisitRb"
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:button="@null"
+            android:gravity="center"
+            android:padding="@dimen/padding"
+            android:text="我的拜访"
+            android:textColor="@color/color_public_inquiry_quote"
+            android:textSize="15sp" />
+
+    </com.modular.apputils.widget.DivideRadioGroup>
+
+    <RelativeLayout
+        android:id="@+id/calenderRl"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:background="@color/white"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/visitTypeRg">
+
+        <TextView
+            android:id="@+id/monthTv"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerHorizontal="true"
+            android:padding="@dimen/padding"
+            android:text="2018-09"
+            android:textColor="#FF000000"
+            android:textSize="15sp" />
+
+        <TextView
+            android:id="@+id/newDayTv"
+            android:layout_width="25sp"
+            android:layout_height="25sp"
+            android:layout_centerVertical="true"
+            android:layout_marginLeft="30dp"
+            android:background="@drawable/bg_circular_bule"
+            android:gravity="center"
+            android:text="今"
+            android:textColor="@color/white"
+            android:textSize="12sp" />
+    </RelativeLayout>
+
+    <com.modular.apputils.widget.compactcalender.CompactCalendarView xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/compactcalendar_view"
+        android:layout_width="match_parent"
+        android:layout_height="250dp"
+        app:compactCalendarBackgroundColor="@color/white"
+        app:compactCalendarCurrentDayBackgroundColor="@color/b2b_quote_tab_selected"
+        app:compactCalendarCurrentDayIndicatorStyle="fill_large_indicator"
+        app:compactCalendarCurrentDayTextColor="@color/white"
+        app:compactCalendarCurrentSelectedDayBackgroundColor="#ffe95451"
+        app:compactCalendarEventIndicatorStyle="small_indicator"
+        app:compactCalendarOtherMonthDaysTextColor="#534c4c"
+        app:compactCalendarShouldSelectFirstDayOfMonthOnScroll="true"
+        app:compactCalendarTargetHeight="250dp"
+        app:compactCalendarTextColor="#181818"
+        app:compactCalendarTextSize="15dp"
+        app:layout_constraintTop_toBottomOf="@id/calenderRl" />
+
+    <android.support.v7.widget.RecyclerView
+        android:id="@+id/mRecyclerView"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/padding"
+        android:background="@color/white"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintLeft_toLeftOf="parent"
+        app:layout_constraintRight_toRightOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/compactcalendar_view" />
+</android.support.constraint.ConstraintLayout>