Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-app-operator-master
Project
Project
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
lanbaoming
jiedao-app-operator-master
Commits
f0a1362c
Commit
f0a1362c
authored
Jun 28, 2022
by
ylpmty
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
商品列表多选,商品选择组件增加数据回显
parent
3952fdcb
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
258 additions
and
228 deletions
+258
-228
index.vue
src/components/ProductsSelector/index.vue
+145
-124
index.vue
src/views/ecw/product/index.vue
+100
-80
edit.vue
src/views/ecw/productAttr/edit.vue
+13
-24
No files found.
src/components/ProductsSelector/index.vue
View file @
f0a1362c
<
template
>
<el-row
class=
""
:gutter=
"10"
>
<el-col
:span=
"10"
>
<el-card>
<div
slot=
"header"
class=
"header"
>
<el-select
v-model=
"queryParams.typeId"
placeholder=
"选择类型"
style=
"width:120px"
clearable
>
<el-option
v-for=
"item in typeList"
:key=
"item.id"
:label=
"item.titleZh"
:value=
"item.id"
/>
</el-select>
<el-select
v-model=
"queryParams.attrId"
placeholder=
"选择属性"
style=
"width:120px"
clearable
>
<el-option
v-for=
"item in attrList"
:key=
"item.id"
:label=
"item.attrName"
:value=
"item.id"
/>
</el-select>
<el-input
v-model=
"queryParams.titleZh"
placeholder=
"产品关键字"
style=
"width:120px"
clearable
/>
<el-button
type=
"primary"
@
click=
"reLoad"
>
搜搜
</el-button>
</div>
<div
class=
"list"
>
<div
class=
"item"
v-for=
"item in list"
:key=
"item.id"
>
<el-checkbox
@
change=
"toggleCheck(item, $event)"
:value=
"ids.indexOf(item.id) > -1"
/>
{{
item
.
titleZh
}}
<div>
{{
item
.
titleEn
}}
</div>
</div>
</div>
</el-card>
</el-col>
<el-col
:span=
"10"
>
<el-card>
<div
slot=
"header"
class=
"header"
>
已选产品
</div>
<div
class=
"list"
>
<div
class=
"item"
v-for=
"(choosed) in choosedList"
:key=
"choosed.id"
:data-data=
"JSON.stringify(choosed)"
>
<el-link
class=
"el-icon-delete"
@
click=
"remove(choosed)"
/>
{{
choosed
.
titleZh
}}
<div>
{{
choosed
.
titleEn
}}
</div>
</div>
</div>
</el-card>
</el-col>
</el-row>
<el-row
class=
""
:gutter=
"10"
>
<el-col
:span=
"10"
>
<el-card>
<div
slot=
"header"
class=
"header"
>
<el-select
v-model=
"queryParams.typeId"
placeholder=
"选择类型"
style=
"width:120px"
clearable
>
<el-option
v-for=
"item in typeList"
:key=
"item.id"
:label=
"item.titleZh"
:value=
"item.id"
/>
</el-select>
<el-select
v-model=
"queryParams.attrId"
placeholder=
"选择属性"
style=
"width:120px"
clearable
>
<el-option
v-for=
"item in attrList"
:key=
"item.id"
:label=
"item.attrName"
:value=
"item.id"
/>
</el-select>
<el-input
v-model=
"queryParams.titleZh"
placeholder=
"产品关键字"
style=
"width:120px"
clearable
/>
<el-button
type=
"primary"
@
click=
"reLoad"
>
搜搜
</el-button>
</div>
<div
class=
"list"
>
<div
class=
"item"
v-for=
"item in list"
:key=
"item.id"
>
<el-checkbox
@
change=
"toggleCheck(item, $event)"
:value=
"ids.indexOf(item.id) > -1"
/>
{{
item
.
titleZh
}}
<div>
{{
item
.
titleEn
}}
</div>
</div>
</div>
</el-card>
</el-col>
<el-col
:span=
"10"
>
<el-card>
<div
slot=
"header"
class=
"header"
>
已选产品
</div>
<div
class=
"list"
>
<div
class=
"item"
v-for=
"(choosed) in choosedList"
:key=
"choosed.id"
:data-data=
"JSON.stringify(choosed)"
>
<el-link
class=
"el-icon-delete"
@
click=
"remove(choosed)"
/>
{{
choosed
.
titleZh
}}
<div>
{{
choosed
.
titleEn
}}
</div>
</div>
</div>
</el-card>
</el-col>
</el-row>
</
template
>
<
script
>
import
{
getProductPage
}
from
'
@/api/ecw/product
'
import
{
getProductTypeList
}
from
'
@/api/ecw/productType
'
import
{
getProductAttrList
}
from
'
@/api/ecw/productAttr
'
import
{
getProductPage
}
from
'
@/api/ecw/product
'
import
{
getProductTypeList
}
from
'
@/api/ecw/productType
'
import
{
getProductAttrList
}
from
'
@/api/ecw/productAttr
'
export
default
{
data
(){
return
{
list
:[],
page
:
1
,
pages
:
1
,
queryParams
:{
page
:
1
,
attrId
:
null
,
titleZh
:
null
,
typeId
:
null
},
choosedList
:[],
typeList
:[],
attrList
:[]
}
props
:
{
defaultIds
:
{
type
:
Array
,
default
:
[]
}
},
data
()
{
return
{
list
:
[],
page
:
1
,
pages
:
1
,
queryParams
:
{
page
:
1
,
attrId
:
null
,
titleZh
:
null
,
typeId
:
null
},
choosedList
:
[],
typeList
:
[],
attrList
:
[]
}
},
computed
:
{
ids
:
{
get
()
{
let
arr
=
[]
this
.
choosedList
.
forEach
(
item
=>
{
arr
.
push
(
item
.
id
)
})
return
arr
},
set
(
v
)
{
}
}
},
watch
:
{
ids
(
val
)
{
this
.
$emit
(
'
input
'
,
val
)
}
},
created
()
{
getProductTypeList
().
then
(
res
=>
this
.
typeList
=
res
.
data
)
getProductAttrList
().
then
(
res
=>
this
.
attrList
=
res
.
data
)
this
.
reLoad
()
this
.
ids
=
this
.
defaultIds
//数据回显
},
methods
:
{
reLoad
()
{
this
.
queryParams
.
page
=
1
this
.
list
=
[]
this
.
getList
()
},
computed
:{
ids
(){
let
arr
=
[]
this
.
choosedList
.
forEach
(
item
=>
{
arr
.
push
(
item
.
id
)
loadNextPage
()
{
if
(
this
.
page
>=
this
.
pages
)
{
return
this
.
$message
.
error
(
'
已加载全部
'
)
}
this
.
queryParams
.
page
++
this
.
getList
()
},
getList
()
{
getProductPage
(
this
.
queryParams
).
then
(
res
=>
{
this
.
list
=
res
.
data
.
list
//.concat(res.data.list || [])
this
.
page
=
res
.
data
.
page
this
.
pages
=
res
.
data
.
pages
this
.
choosedList
=
[]
//搜搜重置,数据回显
if
(
this
.
defaultIds
.
length
>
0
)
{
this
.
defaultIds
.
map
(
item
=>
{
this
.
list
.
map
(
items
=>
{
if
(
items
.
id
==
item
)
{
this
.
choosedList
.
push
(
items
)
}
})
return
arr
})
}
})
},
watch
:{
ids
(
val
){
this
.
$emit
(
'
input
'
,
val
)
}
toggleCheck
(
item
,
checked
)
{
if
(
checked
)
{
this
.
choose
(
item
)
}
else
{
this
.
remove
(
item
)
}
},
created
(){
getProductTypeList
().
then
(
res
=>
this
.
typeList
=
res
.
data
)
getProductAttrList
().
then
(
res
=>
this
.
attrList
=
res
.
data
)
this
.
reLoad
()
choose
(
item
)
{
this
.
choosedList
.
push
(
item
)
},
methods
:{
reLoad
(){
this
.
queryParams
.
page
=
1
this
.
list
=
[]
this
.
getList
()
},
loadNextPage
(){
if
(
this
.
page
>=
this
.
pages
){
return
this
.
$message
.
error
(
'
已加载全部
'
)
}
this
.
queryParams
.
page
++
this
.
getList
()
},
getList
(){
getProductPage
(
this
.
queryParams
).
then
(
res
=>
{
this
.
list
=
res
.
data
.
list
//.concat(res.data.list || [])
this
.
page
=
res
.
data
.
page
this
.
pages
=
res
.
data
.
pages
})
},
toggleCheck
(
item
,
checked
){
if
(
checked
){
this
.
choose
(
item
)
}
else
{
this
.
remove
(
item
)
}
},
choose
(
item
){
this
.
choosedList
.
push
(
item
)
},
remove
(
item
){
this
.
choosedList
.
forEach
((
choosed
,
index
)
=>
{
if
(
choosed
.
id
==
item
.
id
)
this
.
choosedList
.
splice
(
index
,
1
)
})
}
remove
(
item
)
{
this
.
choosedList
.
forEach
((
choosed
,
index
)
=>
{
if
(
choosed
.
id
==
item
.
id
)
this
.
choosedList
.
splice
(
index
,
1
)
})
}
}
}
</
script
>
<
style
scoped
lang=
"scss"
>
.header
{
>
div
{
margin-right
:
5px
;
}
.header
{
>
div
{
margin-right
:
5px
;
}
}
.list
{
height
:
200px
;
border
:
1px
solid
#ccc
;
overflow-y
:
auto
;
overflow-x
:
hidden
;
padding
:
0
10px
;
display
:
flex
;
flex-wrap
:
wrap
;
.item
{
width
:
50%
;
line-height
:
20px
;
height
:
50px
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
.list
{
height
:
200px
;
border
:
1px
solid
#ccc
;
overflow-y
:
auto
;
overflow-x
:
hidden
;
padding
:
0
10px
;
display
:
flex
;
flex-wrap
:
wrap
;
.item
{
width
:
50%
;
line-height
:
20px
;
height
:
50px
;
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
}
</
style
>
\ No newline at end of file
src/views/ecw/product/index.vue
View file @
f0a1362c
This diff is collapsed.
Click to expand it.
src/views/ecw/productAttr/edit.vue
View file @
f0a1362c
...
...
@@ -2,8 +2,8 @@
<div
class=
"app-container"
>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"120px"
>
<el-form-item
label=
"适用商品"
prop=
"idList"
v-if=
"form.type != 1"
>
<products-selector
v-model=
"form.idList"
/>
<el-form-item
label=
"适用商品"
prop=
"idList"
>
<products-selector
:defaultIds=
"form.idList"
v-model=
"form.idList"
/>
</el-form-item>
<el-form-item
label=
"货柜位置"
prop=
"containerLocation"
>
...
...
@@ -36,10 +36,10 @@
<el-checkbox
style=
"width: 100px"
v-model=
"checked[6]"
>
需要修改
</el-checkbox>
<dict-selector
v-if=
"checked[6]"
form-type=
"checkbox"
:type=
"DICT_TYPE.ECW_ORDER_ATTR"
v-model=
"form.attrId"
multiple
/>
</el-form-item>
<
!-- <el-form-item label="商品材质" prop="
">
<
el-form-item
label=
"商品材质"
prop=
"materialType
"
>
<el-checkbox
style=
"width: 100px"
v-model=
"checked[7]"
>
需要修改
</el-checkbox>
<dict-selector v-if="checked[7]" form-type="checkbox" :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" v-model="form.
status
" multiple />
</el-form-item>
-->
<dict-selector
v-if=
"checked[7]"
form-type=
"checkbox"
:type=
"DICT_TYPE.ECW_PRODUCT_MATERIAL"
v-model=
"form.
materialType
"
multiple
/>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"submitForm"
>
确 定
</el-button>
...
...
@@ -75,11 +75,12 @@ export default {
"
needBook
"
:
undefined
,
"
packaging
"
:
undefined
,
"
requirements
"
:
undefined
,
"
square
"
:
undefined
"
square
"
:
undefined
,
"
materialType
"
:
undefined
},
// 表单校验
rules
:
{},
checked
:
[
false
,
false
,
false
,
false
,
false
,
false
,
false
]
checked
:
[
false
,
false
,
false
,
false
,
false
,
false
,
false
,
false
]
};
},
computed
:
{
...
...
@@ -88,7 +89,7 @@ export default {
watch
:
{
'
form.idList
'
(
val
)
{
if
(
val
.
length
>
0
)
{
this
.
form
.
isAllProduct
=
undefined
this
.
form
.
isAllProduct
=
0
}
else
{
this
.
form
.
isAllProduct
=
1
}
...
...
@@ -96,6 +97,7 @@ export default {
},
created
()
{
this
.
reset
()
this
.
form
.
idList
=
this
.
$route
.
query
&&
this
.
$route
.
query
.
ids
?
[...
this
.
$route
.
query
.
ids
].
map
(
item
=>
{
return
Number
(
item
)
})
:
[]
},
methods
:
{
/** 表单重置 */
...
...
@@ -109,7 +111,8 @@ export default {
"
needBook
"
:
undefined
,
"
packaging
"
:
undefined
,
"
requirements
"
:
undefined
,
"
square
"
:
undefined
"
square
"
:
undefined
,
"
materialType
"
:
undefined
};
this
.
resetForm
(
"
form
"
);
},
...
...
@@ -129,18 +132,4 @@ export default {
},
},
};
</
script
>
<
style
scoped
lang=
"scss"
>
.fee-item
{
padding
:
5px
0
;
>
div
{
margin-right
:
5px
;
}
}
.coupon-list
{
max-height
:
200px
;
border
:
1px
solid
#ccc
;
padding
:
10px
;
overflow-y
:
auto
;
}
</
style
>
\ No newline at end of file
</
script
>
\ No newline at end of file
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