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