Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
center-shop
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
EzijingWeb
center-shop
Commits
1eb24e70
提交
1eb24e70
authored
5月 26, 2021
作者:
王鹏飞
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update
上级
d287bf9d
隐藏空白字符变更
内嵌
并排
正在显示
19 个修改的文件
包含
455 行增加
和
243 行删除
+455
-243
goods.js
src/api/goods.js
+25
-7
order.js
src/api/order.js
+6
-13
shop.js
src/api/shop.js
+6
-1
tableList.vue
src/components/base/tableList.vue
+4
-0
upload.vue
src/components/base/upload.vue
+67
-38
message.vue
src/components/goods/message.vue
+32
-0
messageItem.vue
src/components/goods/messageItem.vue
+45
-0
sku.vue
src/components/goods/sku.vue
+1
-19
skuView.vue
src/components/goods/skuView.vue
+1
-2
sidebar.vue
src/components/layout/sidebar.vue
+1
-1
skuGroup.vue
src/components/setting/skuGroup.vue
+15
-3
edit.vue
src/pages/goods/goods/edit.vue
+90
-126
index.vue
src/pages/goods/goods/index.vue
+26
-9
index.vue
src/pages/order/index.vue
+19
-10
contact.vue
src/pages/setting/contact.vue
+36
-9
general.vue
src/pages/setting/general.vue
+60
-0
info.vue
src/pages/setting/info.vue
+10
-4
routes.js
src/router/routes.js
+8
-0
axios.js
src/utils/axios.js
+3
-1
没有找到文件。
src/api/goods.js
浏览文件 @
1eb24e70
...
@@ -12,13 +12,18 @@ export function getGoodsList(data) {
...
@@ -12,13 +12,18 @@ export function getGoodsList(data) {
export
function
addGoods
(
data
)
{
export
function
addGoods
(
data
)
{
return
httpRequest
.
post
(
'/api/shop/commodity/spu/add'
,
data
)
return
httpRequest
.
post
(
'/api/shop/commodity/spu/add'
,
data
)
}
}
/**
/**
* 更新商品
* 更新商品
*/
*/
export
function
updateGoods
(
data
)
{
export
function
updateGoods
(
data
)
{
return
httpRequest
.
post
(
'/api/shop/commodity/spu/modify'
,
data
)
return
httpRequest
.
post
(
'/api/shop/commodity/spu/modify'
,
data
)
}
}
/**
* 删除商品
*/
export
function
deleteGoods
(
data
)
{
return
httpRequest
.
post
(
'/api/shop/commodity/spu/delete'
,
data
)
}
/**
/**
* 获取商品分组
* 获取商品分组
...
@@ -51,6 +56,19 @@ export function deleteGroup(data) {
...
@@ -51,6 +56,19 @@ export function deleteGroup(data) {
export
function
getSkuNameList
(
data
)
{
export
function
getSkuNameList
(
data
)
{
return
httpRequest
.
post
(
'/api/shop/spec/search'
,
data
)
return
httpRequest
.
post
(
'/api/shop/spec/search'
,
data
)
}
}
/**
* 创建商品规格
*/
export
function
addSku
(
data
)
{
return
httpRequest
.
post
(
'/api/shop/spec/add'
,
data
)
}
/**
* 删除商品规格
*/
export
function
deleteSku
(
data
)
{
return
httpRequest
.
post
(
'/api/shop/spec/delete'
,
data
)
}
/**
/**
* 获取商品规格值
* 获取商品规格值
*/
*/
...
@@ -58,14 +76,14 @@ export function getSkuValueList(data) {
...
@@ -58,14 +76,14 @@ export function getSkuValueList(data) {
return
httpRequest
.
post
(
'/api/shop/spec/value/search'
,
data
)
return
httpRequest
.
post
(
'/api/shop/spec/value/search'
,
data
)
}
}
/**
/**
* 创建商品规格
* 创建商品规格
值
*/
*/
export
function
addSku
(
data
)
{
export
function
addSku
Value
(
data
)
{
return
httpRequest
.
post
(
'/api/shop/spec/add'
,
data
)
return
httpRequest
.
post
(
'/api/shop/spec/
value/
add'
,
data
)
}
}
/**
/**
*
创建商品规格
*
删除商品规格值
*/
*/
export
function
add
SkuValue
(
data
)
{
export
function
delete
SkuValue
(
data
)
{
return
httpRequest
.
post
(
'/api/shop/spec/value/
add
'
,
data
)
return
httpRequest
.
post
(
'/api/shop/spec/value/
delete
'
,
data
)
}
}
src/api/order.js
浏览文件 @
1eb24e70
import
httpRequest
from
'@/utils/axios'
import
httpRequest
from
'@/utils/axios'
/**
/**
* 获取
商品
列表
* 获取
订单
列表
*/
*/
export
function
get
Goods
List
(
data
)
{
export
function
get
Order
List
(
data
)
{
return
httpRequest
.
post
(
'/api/shop/
commodity/spu
/search'
,
data
)
return
httpRequest
.
post
(
'/api/shop/
order
/search'
,
data
)
}
}
/**
/**
* 创建
商品
* 创建
订单
*/
*/
export
function
addGoods
(
data
)
{
export
function
addOrder
(
data
)
{
return
httpRequest
.
post
(
'/api/shop/commodity/spu/add'
,
data
)
return
httpRequest
.
post
(
'/api/shop/order/add'
,
data
)
}
/**
* 更新商品
*/
export
function
updateGoods
(
data
)
{
return
httpRequest
.
post
(
'/api/shop/commodity/spu/modify'
,
data
)
}
}
src/api/shop.js
浏览文件 @
1eb24e70
...
@@ -13,7 +13,12 @@ export function getShopList(data) {
...
@@ -13,7 +13,12 @@ export function getShopList(data) {
export
function
addShop
(
data
)
{
export
function
addShop
(
data
)
{
return
httpRequest
.
post
(
'/api/shop/shop/add'
,
data
)
return
httpRequest
.
post
(
'/api/shop/shop/add'
,
data
)
}
}
/**
* 更新店铺
*/
export
function
updateShop
(
data
)
{
return
httpRequest
.
post
(
'/api/shop/shop/modify'
,
data
)
}
/**
/**
* 删除店铺
* 删除店铺
*/
*/
...
...
src/components/base/tableList.vue
浏览文件 @
1eb24e70
...
@@ -140,6 +140,10 @@ export default {
...
@@ -140,6 +140,10 @@ export default {
this
.
page
.
total
=
parseInt
(
pageInfo
.
total_number
||
''
)
this
.
page
.
total
=
parseInt
(
pageInfo
.
total_number
||
''
)
this
.
dataList
=
callback
?
callback
(
data
)
:
data
this
.
dataList
=
callback
?
callback
(
data
)
:
data
})
})
.
catch
(()
=>
{
this
.
page
.
total
=
0
this
.
dataList
=
[]
})
.
finally
(()
=>
{
.
finally
(()
=>
{
this
.
loading
=
false
this
.
loading
=
false
})
})
...
...
src/components/base/upload.vue
浏览文件 @
1eb24e70
<
template
>
<
template
>
<div
class=
"
upload-wrapper
"
>
<div
class=
"
app-upload
"
>
<el-upload
<el-upload
class=
"avatar-uploader"
action=
"https://webapp-pub.oss-cn-beijing.aliyuncs.com"
action=
"https://webapp-pub.oss-cn-beijing.aliyuncs.com"
type=
"drag"
type=
"drag"
:before-upload=
"beforeUpload"
:before-upload=
"beforeUpload"
:on-success=
"handleSuccess"
:on-success=
"handleSuccess"
:on-preview=
"handlePreview"
:data=
"data"
:data=
"data"
:file-list=
"fileList"
v-bind=
"$attrs"
v-bind=
"$attrs"
v-on=
"$listeners"
v-on=
"$listeners"
>
>
<div
v-if=
"value"
class=
"avatar"
><img
:src=
"value"
/></div>
<slot>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
></i>
<i
class=
"el-icon-plus"
></i>
</slot>
</el-upload>
</el-upload>
<el-dialog
:visible
.
sync=
"dialogVisible"
>
<img
width=
"100%"
:src=
"previewFile.url"
/>
</el-dialog>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
...
@@ -21,12 +26,34 @@ import md5 from 'blueimp-md5'
...
@@ -21,12 +26,34 @@ import md5 from 'blueimp-md5'
export
default
{
export
default
{
name
:
'AppUpload'
,
name
:
'AppUpload'
,
props
:
{
props
:
{
value
:
{
type
:
String
},
value
:
{
type
:
[
String
,
Array
]
},
prefix
:
{
type
:
String
,
default
:
'upload/shop-admin/'
}
prefix
:
{
type
:
String
,
default
:
'upload/shop-admin/'
}
},
},
data
()
{
data
()
{
return
{
return
{
data
:
{}
data
:
{},
// 请求参数
fileList
:
[],
// 文件列表
dialogVisible
:
false
,
previewFile
:
{}
}
},
watch
:
{
value
:
{
immediate
:
true
,
handler
(
value
)
{
if
(
!
value
)
{
return
}
let
fileList
=
[]
if
(
Array
.
isArray
(
value
))
{
fileList
=
value
.
map
(
item
=>
{
return
{
name
:
item
.
name
||
item
,
url
:
item
.
url
||
item
}
})
}
else
{
fileList
.
push
({
name
:
'附件'
,
url
:
value
})
}
this
.
fileList
=
[...
fileList
]
}
}
}
},
},
methods
:
{
methods
:
{
...
@@ -38,7 +65,7 @@ export default {
...
@@ -38,7 +65,7 @@ export default {
.
then
(
response
=>
{
.
then
(
response
=>
{
const
{
accessid
,
policy
,
signature
,
host
}
=
response
const
{
accessid
,
policy
,
signature
,
host
}
=
response
this
.
data
=
{
key
,
OSSAccessKeyId
:
accessid
,
policy
,
signature
,
success_action_status
:
'200'
}
this
.
data
=
{
key
,
OSSAccessKeyId
:
accessid
,
policy
,
signature
,
success_action_status
:
'200'
}
file
.
src
=
`
${
host
}
/
${
key
}
`
file
.
url
=
`
${
host
}
/
${
key
}
`
resolve
(
true
)
resolve
(
true
)
})
})
.
catch
(
err
=>
{
.
catch
(
err
=>
{
...
@@ -48,45 +75,47 @@ export default {
...
@@ -48,45 +75,47 @@ export default {
})
})
},
},
handleSuccess
(
response
,
file
)
{
handleSuccess
(
response
,
file
)
{
this
.
$emit
(
'input'
,
file
.
raw
.
src
)
if
(
Array
.
isArray
(
this
.
value
))
{
this
.
fileList
.
push
({
name
:
file
.
name
,
url
:
file
.
raw
.
url
})
this
.
$emit
(
'input'
,
this
.
fileList
)
}
else
{
this
.
fileList
=
[
file
.
raw
.
url
]
this
.
$emit
(
'input'
,
file
.
raw
.
url
)
}
},
// 删除
handleRemove
(
index
)
{
this
.
fileList
.
splice
(
index
,
1
)
this
.
$emit
(
'input'
,
Array
.
isArray
(
this
.
value
)
?
this
.
fileList
:
''
)
},
// 预览
handlePreview
(
file
)
{
this
.
previewFile
=
file
this
.
dialogVisible
=
true
}
}
}
}
}
}
</
script
>
</
script
>
<
style
>
<
style
>
.avatar-uploader
.el-upload
{
.el-upload-list--picture-card
.el-upload-list__item-thumbnail
{
border
:
1px
dashed
#d9d9d9
;
object-fit
:
cover
;
}
.el-upload-list__item
{
transition
:
none
!important
;
}
/* .el-upload--text {
background-color: #fbfdff;
border: 1px dashed #c0ccda;
border-radius: 6px;
border-radius: 6px;
box-sizing: border-box;
width: 148px;
height: 148px;
cursor: pointer;
cursor: pointer;
position
:
relative
;
line-height: 146px;
overflow
:
hidden
;
vertical-align: top;
}
.avatar-uploader
.el-upload
:hover
{
border-color
:
#20a0ff
;
}
}
.el-upload--text i {
.avatar-uploader-icon
{
font-size: 28px;
font-size: 28px;
color: #8c939d;
color: #8c939d;
width
:
178px
;
} */
height
:
178px
;
line-height
:
178px
;
text-align
:
center
;
}
.avatar
{
width
:
178px
;
height
:
178px
;
display
:
block
;
}
.avatar
img
{
max-width
:
100%
;
max-height
:
100%
;
position
:
absolute
;
top
:
50%
;
left
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
}
</
style
>
</
style
>
src/components/goods/message.vue
0 → 100644
浏览文件 @
1eb24e70
<
template
>
<div
class=
"goods-message"
>
<message-item
v-for=
"(item, index) in list"
:data=
"item"
:key=
"index"
@
remove=
"handleRemove(index)"
></message-item>
<el-button
type=
"text"
@
click=
"handleAdd"
>
<i
class=
"el-icon-circle-plus-outline"
></i>
添加字段
</el-button>
</div>
</
template
>
<
script
>
import
MessageItem
from
'./messageItem'
export
default
{
props
:
{
data
:
{
type
:
Array
,
default
:
()
=>
[]
}
},
components
:
{
MessageItem
},
data
()
{
return
{
list
:
[{
filed
:
'手机号'
,
type
:
'text'
,
required
:
true
}]
}
},
methods
:
{
handleAdd
()
{
this
.
list
.
push
({
filed
:
'留言'
+
(
this
.
list
.
length
+
1
),
type
:
'text'
,
required
:
false
})
},
handleRemove
(
index
)
{
this
.
list
.
splice
(
index
,
1
)
}
}
}
</
script
>
<
style
>
</
style
>
src/components/goods/messageItem.vue
0 → 100644
浏览文件 @
1eb24e70
<
template
>
<div
class=
"goods-message-item"
>
<el-input
v-model=
"data.filed"
style=
"width: 200px"
/>
<el-select
v-model=
"data.type"
style=
"width: 120px; margin: 0 20px"
>
<el-option
v-for=
"item in list"
:label=
"item.name"
:value=
"item.type"
:key=
"item.type"
></el-option>
</el-select>
<el-checkbox
v-model=
"data.multiple"
v-if=
"data.type === 'text'"
>
多行
</el-checkbox>
<el-checkbox
v-model=
"data.datetime"
v-if=
"data.type === 'time'"
>
含日期
</el-checkbox>
<el-checkbox
v-model=
"data.required"
>
必填
</el-checkbox>
<el-button
type=
"text"
style=
"margin-left: 20px"
@
click=
"$emit('remove')"
>
删除
</el-button>
</div>
</
template
>
<
script
>
export
default
{
props
:
{
data
:
{
type
:
Object
,
default
:
()
=>
[]
}
},
data
()
{
return
{
list
:
[
{
type
:
'text'
,
name
:
'文本格式'
},
{
type
:
'number'
,
name
:
'数字格式'
},
{
type
:
'email'
,
name
:
'邮件'
},
{
type
:
'date'
,
name
:
'日期'
},
{
type
:
'time'
,
name
:
'时间'
},
{
type
:
'id'
,
name
:
'身份证号'
},
{
type
:
'image'
,
name
:
'图片'
},
{
type
:
'phone'
,
name
:
'手机号'
}
]
}
},
methods
:
{
handleAdd
()
{}
}
}
</
script
>
<
style
lang=
"scss"
>
.goods-message-item
{
display
:
flex
;
align-items
:
center
;
}
.goods-message-item
+
.goods-message-item
{
margin-top
:
10px
;
}
</
style
>
src/components/goods/sku.vue
浏览文件 @
1eb24e70
...
@@ -27,25 +27,7 @@ export default {
...
@@ -27,25 +27,7 @@ export default {
},
},
data
()
{
data
()
{
return
{
return
{
skuNameList
:
[
skuNameList
:
[]
// 规格名称列表
{
spec_id
:
'1'
,
spec_name
:
'颜色'
,
spec_values
:
[
{
spec_value_id
:
'1'
,
spec_value
:
'红'
},
{
spec_value_id
:
'2'
,
spec_value
:
'黄'
},
{
spec_value_id
:
'3'
,
spec_value
:
'蓝'
}
]
},
{
spec_id
:
'2'
,
spec_name
:
'大小'
,
spec_values
:
[
{
spec_value_id
:
'1'
,
spec_value
:
'L'
},
{
spec_value_id
:
'2'
,
spec_value
:
'M'
}
]
}
]
// 规格名称列表
}
}
},
},
computed
:
{
computed
:
{
...
...
src/components/goods/skuView.vue
浏览文件 @
1eb24e70
...
@@ -40,8 +40,8 @@
...
@@ -40,8 +40,8 @@
<span>
批量设置:
</span>
<span>
批量设置:
</span>
<div
class=
"batch-buttons"
v-if=
"!showBatchInput"
>
<div
class=
"batch-buttons"
v-if=
"!showBatchInput"
>
<el-button
type=
"text"
@
click=
"batchUpdate('price')"
>
价格
</el-button>
<el-button
type=
"text"
@
click=
"batchUpdate('price')"
>
价格
</el-button>
<el-button
type=
"text"
@
click=
"batchUpdate('stock')"
>
库存
</el-button>
<el-button
type=
"text"
@
click=
"batchUpdate('mark_price')"
>
划线价
</el-button>
<el-button
type=
"text"
@
click=
"batchUpdate('mark_price')"
>
划线价
</el-button>
<el-button
type=
"text"
@
click=
"batchUpdate('stock')"
>
库存
</el-button>
<el-button
type=
"text"
@
click=
"batchUpdate('prime_price')"
>
成本价
</el-button>
<el-button
type=
"text"
@
click=
"batchUpdate('prime_price')"
>
成本价
</el-button>
</div>
</div>
<div
class=
"batch-input"
v-else
>
<div
class=
"batch-input"
v-else
>
...
@@ -93,7 +93,6 @@ export default {
...
@@ -93,7 +93,6 @@ export default {
skuValueList
:
{
skuValueList
:
{
handler
:
function
(
newValue
)
{
handler
:
function
(
newValue
)
{
newValue
.
forEach
((
item
,
index
)
=>
{
newValue
.
forEach
((
item
,
index
)
=>
{
console
.
log
(
item
)
// 规格
// 规格
const
values
=
item
.
reduce
(
const
values
=
item
.
reduce
(
(
result
,
item
)
=>
{
(
result
,
item
)
=>
{
...
...
src/components/layout/sidebar.vue
浏览文件 @
1eb24e70
...
@@ -50,7 +50,7 @@ export default {
...
@@ -50,7 +50,7 @@ export default {
children
:
[
children
:
[
{
name
:
'店铺信息'
,
path
:
'/setting/info'
},
{
name
:
'店铺信息'
,
path
:
'/setting/info'
},
{
name
:
'联系我们'
,
path
:
'/setting/contact'
},
{
name
:
'联系我们'
,
path
:
'/setting/contact'
},
{
name
:
'通用设置'
,
path
:
'/setting/
base
'
},
{
name
:
'通用设置'
,
path
:
'/setting/
general
'
},
{
name
:
'商品设置'
,
path
:
'/setting/goods'
}
{
name
:
'商品设置'
,
path
:
'/setting/goods'
}
]
]
}
}
...
...
src/components/setting/skuGroup.vue
浏览文件 @
1eb24e70
...
@@ -39,7 +39,7 @@
...
@@ -39,7 +39,7 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
addSkuValue
}
from
'@/api/goods'
import
{
addSkuValue
,
deleteSku
,
deleteSkuValue
}
from
'@/api/goods'
export
default
{
export
default
{
props
:
{
props
:
{
...
@@ -82,9 +82,21 @@ export default {
...
@@ -82,9 +82,21 @@ export default {
})
})
},
},
// 删除规格
// 删除规格
removeSku
(
item
)
{},
removeSku
(
data
)
{
deleteSku
({
shop_id
:
this
.
shopId
,
spec_id
:
data
.
spec_id
}).
then
(
response
=>
{
this
.
$message
({
type
:
'success'
,
message
:
'删除成功'
})
this
.
$emit
(
'update'
)
})
},
// 删除规格值
// 删除规格值
removeSkuValue
(
item
)
{}
removeSkuValue
(
data
)
{
deleteSkuValue
({
shop_id
:
this
.
shopId
,
spec_id
:
this
.
data
.
spec_id
,
spec_value_id
:
data
.
spec_value_id
}).
then
(
response
=>
{
this
.
$message
({
type
:
'success'
,
message
:
'删除成功'
})
this
.
$emit
(
'update'
)
}
)
}
}
}
}
}
</
script
>
</
script
>
...
...
src/pages/goods/goods/edit.vue
浏览文件 @
1eb24e70
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
<el-form
:model=
"ruleForm"
:rules=
"rules"
label-position=
"top"
ref=
"ruleForm"
@
submit
.
native
.
prevent
>
<el-form
:model=
"ruleForm"
:rules=
"rules"
label-position=
"top"
ref=
"ruleForm"
@
submit
.
native
.
prevent
>
<app-card
title=
"商品类型"
>
<app-card
title=
"商品类型"
>
<el-radio-group
v-model=
"ruleForm.category_id"
>
<el-radio-group
v-model=
"ruleForm.category_id"
>
<el-radio
:label=
"item.id"
border
v-for=
"item in
goodsType
"
:key=
"item.id"
>
{{
item
.
name
}}
</el-radio>
<el-radio
:label=
"item.id"
border
v-for=
"item in
categoryList
"
:key=
"item.id"
>
{{
item
.
name
}}
</el-radio>
</el-radio-group>
</el-radio-group>
</app-card>
</app-card>
...
@@ -26,11 +26,13 @@
...
@@ -26,11 +26,13 @@
<p
class=
"form-tips"
>
在商品详情页标题下面展示卖点信息,建议60字以内
</p>
<p
class=
"form-tips"
>
在商品详情页标题下面展示卖点信息,建议60字以内
</p>
</el-form-item>
</el-form-item>
<el-form-item
label=
"商品图片"
prop=
"chart_oss"
>
<el-form-item
label=
"商品图片"
prop=
"chart_oss"
>
<app-upload
v-model=
"ruleForm.chart_oss"
></app-upload>
<app-upload
v-model=
"ruleForm.chart_oss"
multiple
list-type=
"picture-card"
accept=
"image/*"
></app-upload>
<p
class=
"form-tips"
>
建议尺寸:800*800像素,你可以拖拽图片调整顺序,最多上传15张
</p>
<p
class=
"form-tips"
>
建议尺寸:800*800像素,你可以拖拽图片调整顺序,最多上传15张
</p>
</el-form-item>
</el-form-item>
<el-form-item
label=
"主图视频"
prop=
"main_chart_oss"
>
<el-form-item
label=
"主图视频"
prop=
"main_chart_oss"
>
<app-upload
v-model=
"ruleForm.main_chart_oss"
></app-upload>
<app-upload
v-model=
"ruleForm.main_chart_oss"
accept=
"video/*"
>
<el-button
size=
"small"
type=
"primary"
>
点击上传
</el-button>
</app-upload>
<p
class=
"form-tips"
>
<p
class=
"form-tips"
>
添加主图视频可提升成交转化,有利于获取更多新流量;建议视频突出商品核心卖点,时长 9-30 秒,宽高比 16:9
添加主图视频可提升成交转化,有利于获取更多新流量;建议视频突出商品核心卖点,时长 9-30 秒,宽高比 16:9
</p>
</p>
...
@@ -55,20 +57,35 @@
...
@@ -55,20 +57,35 @@
</el-form-item>
</el-form-item>
</app-card>
</app-card>
<app-card
title=
"其他信息"
>
<app-card
title=
"其他信息"
>
<el-form-item
label=
"留言"
prop=
"sales_type"
>
<message></message>
</el-form-item>
<el-form-item
label=
"开售方式"
prop=
"sales_type"
>
<el-form-item
label=
"开售方式"
prop=
"sales_type"
>
<el-radio-group
v-model=
"ruleForm.sales_type"
>
<el-radio-group
v-model=
"ruleForm.sales_type"
>
<el-radio
label=
"1"
>
立即开售
</el-radio>
<el-radio
label=
"1"
>
立即开售
</el-radio>
<el-radio
label=
"2"
>
定时开售
</el-radio>
<el-radio
label=
"3"
>
放入仓库
</el-radio>
<el-radio
label=
"3"
>
放入仓库
</el-radio>
<el-radio
label=
"2"
>
定时开售
</el-radio>
<el-date-picker
v-model=
"ruleForm.sales_time"
type=
"datetime"
size=
"mini"
value-format=
"yyyy-MM-dd HH:mm:ss"
placeholder=
"请选择开售时间"
v-if=
"ruleForm.sales_type === '2'"
/>
</el-radio-group>
</el-radio-group>
<el-input
v-model=
"ruleForm.sales_time"
v-if=
"ruleForm.sales_type === '2'"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"
立即
购买按钮"
prop=
"buy_button_text"
>
<el-form-item
label=
"购买按钮"
prop=
"buy_button_text"
>
<el-radio-group
v-model=
"
ruleForm.buy_button_text
"
>
<el-radio-group
v-model=
"
buyButtonTextRadio"
@
change=
"onBuyButtonTextRadioChange
"
>
<el-radio
label=
"1"
>
默认名称
</el-radio>
<el-radio
label=
"1"
>
默认名称
</el-radio>
<el-radio
label=
"2"
>
自定义名称
</el-radio>
<el-radio
label=
"2"
>
自定义名称
</el-radio>
<el-input
v-model=
"ruleForm.buy_button_text"
v-if=
"buyButtonTextRadio === '2'"
size=
"mini"
class=
"buy-button-input"
/>
</el-radio-group>
</el-radio-group>
<el-input
v-model=
"ruleForm.buy_button_text"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"售后服务"
prop=
"after_sales_mode"
>
<el-form-item
label=
"售后服务"
prop=
"after_sales_mode"
>
<el-radio-group
v-model=
"ruleForm.after_sales_mode"
>
<el-radio-group
v-model=
"ruleForm.after_sales_mode"
>
...
@@ -80,7 +97,7 @@
...
@@ -80,7 +97,7 @@
<div
class=
"form-footer"
>
<div
class=
"form-footer"
>
<div
class=
"inner"
>
<div
class=
"inner"
>
<el-button
type=
"primary"
@
click=
"onSubmit"
>
保存并查看
</el-button>
<el-button
type=
"primary"
@
click=
"onSubmit"
>
保存并查看
</el-button>
<el-button
@
click=
"on
Cancel
"
>
下一步
</el-button>
<el-button
@
click=
"on
Submit
"
>
下一步
</el-button>
</div>
</div>
</div>
</div>
</el-form>
</el-form>
...
@@ -91,49 +108,42 @@
...
@@ -91,49 +108,42 @@
// 组件
// 组件
import
AppCard
from
'@/components/base/card'
import
AppCard
from
'@/components/base/card'
import
AppUpload
from
'@/components/base/upload'
import
AppUpload
from
'@/components/base/upload'
import
sku
from
'@/components/goods/sku'
import
Sku
from
'@/components/goods/sku'
import
skuView
from
'@/components/goods/skuView'
import
SkuView
from
'@/components/goods/skuView'
import
Message
from
'@/components/goods/message'
// 接口
// 接口
import
{
addGoods
,
updateGoods
,
getGoodsList
}
from
'@/api/goods'
import
{
addGoods
,
updateGoods
,
getGoodsList
}
from
'@/api/goods'
export
default
{
export
default
{
components
:
{
AppCard
,
AppUpload
,
sku
,
skuView
},
components
:
{
AppCard
,
AppUpload
,
Sku
,
SkuView
,
Message
},
props
:
{
isEdit
:
{
type
:
Boolean
,
default
:
false
}
},
data
()
{
data
()
{
return
{
return
{
pid
:
''
,
// ID
loading
:
false
,
// 加载中
loading
:
false
,
// 加载中
isEdit
:
false
,
// 是否修改
categoryList
:
[{
id
:
'1'
,
name
:
'虚拟商品'
}],
// 商品类型
goodsType
:
[{
id
:
'1'
,
name
:
'虚拟商品'
}],
// 商品类型
goodsGroup
:
[],
// 商品分组
goodsGroupValue
:
[],
// 商品分组value
disabledInput
:
false
,
ruleForm
:
{
ruleForm
:
{
category_id
:
'1'
,
category_id
:
'1'
,
// 商品类型
spu_name
:
'标题'
,
spu_name
:
''
,
// 商品标题
describe
:
'分享描述'
,
describe
:
''
,
// 分享描述
charact
:
'商品卖点'
,
charact
:
''
,
// 商品卖点
chart_oss
:
'https://webapp-pub.ezijing.com/upload/shop-admin/aafa464602ae315e56534e81b687522b.jpg'
,
chart_oss
:
[],
main_chart_oss
:
'https://webapp-pub.ezijing.com/upload/shop-admin/95500a48092218bb7805eb31701ce209.jpg'
,
main_chart_oss
:
''
,
group_id
:
'6800703015822032896'
,
group_id
:
''
,
// 商品分组
startTime
:
null
,
sales_type
:
'1'
,
// 开售方式 1、立即开售 2、定时开售 3、放入仓库
sales_type
:
'1'
,
buy_button_text
:
'立即购买'
,
// 购买按钮文字
buy_button_text
:
'1'
,
spu_context
:
''
,
// 商品详情
goodStockList
:
[],
// 规格明细
stock_sub_method
:
''
,
// 库存扣减方式
spu_context
:
''
,
after_sales_mode
:
'2'
,
// 售后服务方式 1、支持买家申请退款 2、不支持买家申请退款
skuKeyValueList
:
[],
stock_sub_method
:
'2'
,
after_sales_mode
:
'2'
,
app_button_text
:
''
,
app_button_text
:
''
,
sales_time
:
''
,
sales_time
:
''
,
// 开售时间
buy_limit
:
'1'
buy_limit
:
''
,
// 限购
goodStockList
:
[],
// 规格明细
skuKeyValueList
:
[]
},
},
buyButtonTextRadio
:
'1'
,
rules
:
{
rules
:
{
spu_name
:
[{
required
:
true
,
message
:
'商品名称不可为空'
,
trigger
:
'blur'
}]
spu_name
:
[{
required
:
true
,
message
:
'商品名称不可为空'
,
trigger
:
'blur'
}],
// goodPhotoList: [{ required: true, message: '最少需要添加一张商品图', trigger: 'blur' }],
chart_oss
:
[{
required
:
true
,
message
:
'最少需要添加一张商品图'
,
trigger
:
'blur'
}]
// sellPrice: [{ required: true, message: '请输入价格', trigger: 'blur' }],
// balanceCount: [{ required: true, message: '请输入库存', trigger: 'blur' }],
// startTime: [{ required: true, message: '请选择售卖开始时间', trigger: 'blur' }],
// endTime: [{ required: true, message: '请选择售卖结束时间', trigger: 'blur' }]
}
}
}
}
},
},
...
@@ -143,103 +153,54 @@ export default {
...
@@ -143,103 +153,54 @@ export default {
},
},
groupList
()
{
groupList
()
{
return
this
.
$store
.
state
.
groups
return
this
.
$store
.
state
.
groups
}
},
watch
:
{
// 商品分组value
goodsGroupValue
(
ids
)
{
if
(
this
.
goodsGroup
&&
this
.
goodsGroup
.
length
)
{
this
.
ruleForm
.
goodGroupToList
=
ids
.
map
(
id
=>
{
return
this
.
goodsGroup
.
find
(
item
=>
item
.
id
===
id
)
})
}
},
},
// 商品规格
pid
()
{
'ruleForm.skuKeyValueList'
:
function
(
value
)
{
return
this
.
$route
.
params
.
id
||
this
.
$route
.
query
.
id
if
(
value
&&
value
.
length
)
{
this
.
disabledInput
=
true
}
else
{
this
.
disabledInput
=
false
}
}
}
},
},
methods
:
{
methods
:
{
// 初始化
// 初始化
init
()
{
init
()
{
this
.
pid
=
this
.
$route
.
params
.
id
// 商品渲染
this
.
isEdit
=
!!
this
.
pid
if
(
this
.
pid
)
{
// 获取商品分组
this
.
$store
.
dispatch
(
'getGroups'
)
if
(
this
.
isEdit
)
{
// 修改渲染
this
.
editRender
()
this
.
editRender
()
}
else
{
const
query
=
this
.
$route
.
query
if
(
query
.
params
)
{
try
{
const
params
=
JSON
.
parse
(
decodeURIComponent
(
query
.
params
))
Object
.
assign
(
this
.
ruleForm
,
params
)
if
(
params
.
goodTypeId
===
'21'
)
{
this
.
isTicket
=
true
}
}
catch
(
error
)
{
console
.
log
(
error
)
}
}
this
.
loading
=
false
}
}
// 获取商品分组
this
.
$store
.
dispatch
(
'getGroups'
)
},
},
// 修改渲染
// 修改渲染
editRender
(
data
)
{
editRender
()
{
// 请求接口
this
.
loading
=
true
getGoodsList
({
id
:
this
.
pid
}).
then
(
response
=>
{
getGoodsList
({
shop_id
:
this
.
shopId
,
spu_
id
:
this
.
pid
}).
then
(
response
=>
{
const
data
=
response
.
data
const
[
data
]
=
response
.
data
Object
.
assign
(
this
.
ruleForm
,
data
)
Object
.
assign
(
this
.
ruleForm
,
data
)
// 商品分组
// 图片
this
.
goodsGroupValue
=
data
.
goodGroupToList
.
map
(
item
=>
item
.
id
)
try
{
this
.
ruleForm
.
chart_oss
=
JSON
.
parse
(
data
.
chart_oss
)
// 隐藏加载动画
}
catch
(
error
)
{}
// 购买按钮
this
.
buyButtonTextRadio
=
data
.
buy_button_text
===
'立即购买'
?
'1'
:
'2'
this
.
loading
=
false
this
.
loading
=
false
})
})
},
},
// 确定
// 确定
onSubmit
()
{
onSubmit
()
{
let
isPass
=
true
// 基本信息表单校验
// 基本信息表单校验
this
.
$refs
.
ruleForm
.
validate
(
valid
=>
{
this
.
$refs
.
ruleForm
.
validate
().
then
(
valid
=>
{
if
(
!
valid
)
{
// 规格明细校验
isPass
=
false
// if (this.ruleForm.goodStockList && this.ruleForm.goodStockList.length) {
return
false
// this.$lodash.forEach(this.ruleForm.goodStockList, item => {
}
// if (isNaN(parseFloat(item.sellPrice)) || isNaN(parseFloat(item.balanceCount))) {
})
// this.$message({ message: '请完善规格明细表单', type: 'error' })
// return false
// 规格明细校验
// }
// if (
// })
// isPass &&
// }
// this.ruleForm.skuKeyValueList &&
const
params
=
Object
.
assign
({
shop_id
:
this
.
shopId
},
this
.
ruleForm
)
// this.ruleForm.skuKeyValueList.length &&
params
.
chart_oss
=
JSON
.
stringify
(
params
.
chart_oss
)
// this.ruleForm.goodStockList &&
params
.
spec
=
JSON
.
stringify
(
params
.
goodStockList
)
// this.ruleForm.goodStockList.length
// ) {
// this.$lodash.forEach(this.ruleForm.goodStockList, item => {
// if (isNaN(parseFloat(item.sellPrice)) || isNaN(parseFloat(item.balanceCount))) {
// this.$message({ message: '请完善规格明细表单', type: 'error' })
// isPass = false
// return false
// }
// })
// if (!isPass) {
// return false
// }
// }
const
params
=
Object
.
assign
({
shop_id
:
this
.
shopId
},
this
.
ruleForm
)
params
.
spec
=
JSON
.
stringify
(
params
.
goodStockList
)
if
(
isPass
)
{
this
.
isEdit
?
this
.
onEdit
(
params
)
:
this
.
onAdd
(
params
)
this
.
isEdit
?
this
.
onEdit
(
params
)
:
this
.
onAdd
(
params
)
}
else
{
})
this
.
$message
({
message
:
'请完善表单信息'
,
type
:
'error'
})
}
},
},
// 取消
// 取消
onCancel
()
{
onCancel
()
{
...
@@ -275,12 +236,10 @@ export default {
...
@@ -275,12 +236,10 @@ export default {
this
.
onSuccess
(
response
.
data
)
this
.
onSuccess
(
response
.
data
)
})
})
},
},
imageListUploaded
(
file
)
{
onBuyButtonTextRadioChange
(
value
)
{
this
.
ruleForm
.
goodPhotoList
.
push
(
file
)
if
(
value
===
'1'
)
{
},
this
.
ruleForm
.
buy_button_text
=
'立即购买'
imageListRemove
(
url
)
{
}
const
index
=
this
.
ruleForm
.
goodPhotoList
.
findIndex
(
item
=>
item
.
imageUrl
===
url
)
this
.
ruleForm
.
goodPhotoList
.
splice
(
index
,
1
)
}
}
},
},
beforeMount
()
{
beforeMount
()
{
...
@@ -311,4 +270,9 @@ export default {
...
@@ -311,4 +270,9 @@ export default {
align-items
:
center
;
align-items
:
center
;
}
}
}
}
.buy-button-input
{
display
:
inline-block
;
width
:
220px
;
}
</
style
>
</
style
>
src/pages/goods/goods/index.vue
浏览文件 @
1eb24e70
<
template
>
<
template
>
<app-card>
<app-card>
<!--列表-->
<table-list
v-bind=
"tableOptions"
ref=
"list"
>
<table-list
v-bind=
"tableOptions"
ref=
"list"
>
<el-tabs
v-model=
"activeName"
type=
"card"
@
tab-click=
"handleClick"
>
<el-tabs
v-model=
"activeName"
type=
"card"
@
tab-click=
"handleClick"
>
<el-tab-pane
:label=
"item.label"
:name=
"item.name"
v-for=
"item in tabList"
:key=
"item.name"
></el-tab-pane>
<el-tab-pane
:label=
"item.label"
:name=
"item.name"
v-for=
"item in tabList"
:key=
"item.name"
></el-tab-pane>
...
@@ -12,6 +11,9 @@
...
@@ -12,6 +11,9 @@
</
template
>
</
template
>
<
template
v-slot:table-x=
"{ row }"
>
<
template
v-slot:table-x=
"{ row }"
>
<el-button
type=
"text"
@
click=
"handleUpdate(row)"
>
编辑
</el-button>
<el-button
type=
"text"
@
click=
"handleUpdate(row)"
>
编辑
</el-button>
<!--
<el-popconfirm
confirm-button-text=
"确认"
title=
"确定要删除该商品吗?"
@
confirm=
"handleRemove(row)"
>
<el-button
type=
"text"
slot=
"reference"
>
删除
</el-button>
</el-popconfirm>
-->
<el-button
type=
"text"
@
click=
"handlePromote(row)"
>
推广
</el-button>
<el-button
type=
"text"
@
click=
"handlePromote(row)"
>
推广
</el-button>
<el-button
type=
"text"
@
click=
"handleCopy(row)"
>
复制
</el-button>
<el-button
type=
"text"
@
click=
"handleCopy(row)"
>
复制
</el-button>
</
template
>
</
template
>
...
@@ -24,18 +26,18 @@
...
@@ -24,18 +26,18 @@
import
TableList
from
'@/components/base/tableList'
import
TableList
from
'@/components/base/tableList'
import
AppCard
from
'@/components/base/card'
import
AppCard
from
'@/components/base/card'
// 接口
// 接口
import
{
getGoodsList
}
from
'@/api/goods'
import
{
getGoodsList
,
deleteGoods
}
from
'@/api/goods'
export
default
{
export
default
{
components
:
{
AppCard
,
TableList
},
components
:
{
AppCard
,
TableList
},
data
()
{
data
()
{
return
{
return
{
activeName
:
'
1
'
,
activeName
:
'
0
'
,
tabList
:
[
tabList
:
[
{
label
:
'全部'
,
name
:
'
1
'
},
{
label
:
'全部'
,
name
:
'
0
'
},
{
label
:
'销售中'
,
name
:
'2'
},
{
label
:
'销售中'
,
name
:
'2'
},
{
label
:
'已售罄'
,
name
:
'3'
},
{
label
:
'已售罄'
,
name
:
'3'
},
{
label
:
'仓库中'
,
name
:
'
4
'
}
{
label
:
'仓库中'
,
name
:
'
1
'
}
]
]
}
}
},
},
...
@@ -51,7 +53,8 @@ export default {
...
@@ -51,7 +53,8 @@ export default {
return
{
return
{
remote
:
{
remote
:
{
httpRequest
:
getGoodsList
,
httpRequest
:
getGoodsList
,
params
:
{
shop_id
:
this
.
shopId
,
spu_id
:
''
,
spu_name
:
''
,
group_id
:
''
}
params
:
{
shop_id
:
this
.
shopId
,
spu_id
:
''
,
spu_name
:
''
,
group_id
:
''
},
beforeRequest
:
this
.
beforeRequest
},
},
filters
:
[
filters
:
[
{
{
...
@@ -88,15 +91,29 @@ export default {
...
@@ -88,15 +91,29 @@ export default {
}
}
},
},
methods
:
{
methods
:
{
beforeRequest
(
params
)
{
params
.
status
=
this
.
activeName
===
'0'
?
''
:
this
.
activeName
return
params
},
handleClick
()
{
handleClick
()
{
this
.
$refs
.
list
.
refetch
(
true
)
this
.
$refs
.
list
.
refetch
(
true
)
},
},
// 编辑
// 编辑
handleUpdate
()
{},
handleUpdate
(
data
)
{
this
.
$router
.
push
({
name
:
'goodsEdit'
,
params
:
{
id
:
data
.
spu_id
}
})
},
// 删除
handleRemove
(
row
)
{
deleteGoods
({
shop_id
:
this
.
shopId
,
spu_id
:
row
.
spu_id
}).
then
(
res
=>
{
this
.
$refs
.
list
.
refetch
()
})
},
// 推广
// 推广
handlePromote
()
{},
handlePromote
(
data
)
{},
// 复制
// 复制
handleCopy
()
{}
handleCopy
(
data
)
{
this
.
$router
.
push
({
name
:
'goodsAdd'
,
query
:
{
id
:
data
.
spu_id
}
})
}
},
},
beforeMount
()
{
beforeMount
()
{
// 获取商品分组
// 获取商品分组
...
...
src/pages/order/index.vue
浏览文件 @
1eb24e70
...
@@ -10,6 +10,10 @@
...
@@ -10,6 +10,10 @@
<el-button
type=
"primary"
>
新增订单
</el-button>
<el-button
type=
"primary"
>
新增订单
</el-button>
</router-link>
</router-link>
</
template
>
</
template
>
<
template
v-slot:table-price=
"{ row }"
>
<p>
{{
row
.
product_price
}}
</p>
<p>
{{
row
.
buy_count
}}
</p>
</
template
>
<
template
v-slot:table-x=
"{ row }"
>
<
template
v-slot:table-x=
"{ row }"
>
<el-button
type=
"text"
@
click=
"handleUpdate(row)"
>
编辑
</el-button>
<el-button
type=
"text"
@
click=
"handleUpdate(row)"
>
编辑
</el-button>
<el-button
type=
"text"
@
click=
"handlePromote(row)"
>
推广
</el-button>
<el-button
type=
"text"
@
click=
"handlePromote(row)"
>
推广
</el-button>
...
@@ -24,15 +28,15 @@
...
@@ -24,15 +28,15 @@
import
TableList
from
'@/components/base/tableList'
import
TableList
from
'@/components/base/tableList'
import
AppCard
from
'@/components/base/card'
import
AppCard
from
'@/components/base/card'
// 接口
// 接口
import
{
get
GoodsList
}
from
'@/api/goods
'
import
{
get
OrderList
}
from
'@/api/order
'
export
default
{
export
default
{
components
:
{
AppCard
,
TableList
},
components
:
{
AppCard
,
TableList
},
data
()
{
data
()
{
return
{
return
{
activeName
:
'
1
'
,
activeName
:
'
0
'
,
tabList
:
[
tabList
:
[
{
label
:
'全部'
,
name
:
'
1
'
},
{
label
:
'全部'
,
name
:
'
0
'
},
{
label
:
'代付款'
,
name
:
'2'
},
{
label
:
'代付款'
,
name
:
'2'
},
{
label
:
'待发货'
,
name
:
'3'
},
{
label
:
'待发货'
,
name
:
'3'
},
{
label
:
'已发货'
,
name
:
'4'
},
{
label
:
'已发货'
,
name
:
'4'
},
...
@@ -47,8 +51,9 @@ export default {
...
@@ -47,8 +51,9 @@ export default {
tableOptions
()
{
tableOptions
()
{
return
{
return
{
remote
:
{
remote
:
{
httpRequest
:
getGoodsList
,
httpRequest
:
getOrderList
,
params
:
{
shop_id
:
this
.
$store
.
state
.
shopId
}
params
:
{
shop_id
:
this
.
$store
.
state
.
shopId
},
beforeRequest
:
this
.
beforeRequest
},
},
filters
:
[
filters
:
[
{
{
...
@@ -68,19 +73,23 @@ export default {
...
@@ -68,19 +73,23 @@ export default {
}
}
],
],
columns
:
[
columns
:
[
{
label
:
'商品'
,
prop
:
'name'
},
{
label
:
'商品'
,
prop
:
'
shop_
name'
},
{
label
:
'单价(元)/数量'
,
prop
:
'
sellP
rice'
},
{
label
:
'单价(元)/数量'
,
prop
:
'
product_price'
,
slots
:
'table-p
rice'
},
{
label
:
'售后'
,
prop
:
'sellPrice'
},
{
label
:
'售后'
,
prop
:
'sellPrice'
},
{
label
:
'买家 / 收货人'
,
prop
:
'
balanceCount
'
},
{
label
:
'买家 / 收货人'
,
prop
:
'
shipping_user
'
},
{
label
:
'配送方式'
,
prop
:
'sellCount'
},
{
label
:
'配送方式'
,
prop
:
'sellCount'
},
{
label
:
'实收金额(元)'
,
prop
:
'
createTime
'
},
{
label
:
'实收金额(元)'
,
prop
:
'
payment_money
'
},
{
label
:
'订单状态'
,
prop
:
'
createTime
'
},
{
label
:
'订单状态'
,
prop
:
'
order_status
'
},
{
label
:
'操作'
,
slots
:
'table-x'
}
{
label
:
'操作'
,
slots
:
'table-x'
}
]
]
}
}
}
}
},
},
methods
:
{
methods
:
{
beforeRequest
(
params
)
{
params
.
status
=
this
.
activeName
===
'0'
?
''
:
this
.
activeName
return
params
},
handleClick
()
{
handleClick
()
{
this
.
$refs
.
list
.
refetch
(
true
)
this
.
$refs
.
list
.
refetch
(
true
)
},
},
...
...
src/pages/setting/contact.vue
浏览文件 @
1eb24e70
<
template
>
<
template
>
<app-card>
<app-card>
<el-form
:model=
"ruleForm"
:rules=
"rules"
ref=
"ruleForm"
label-width=
"100px"
style=
"width: 400px"
>
<el-form
:model=
"ruleForm"
:rules=
"rules"
ref=
"ruleForm"
label-width=
"100px"
style=
"width: 400px"
>
<el-form-item
label=
"客户电话"
prop=
"tel"
>
<el-form-item
label=
"客户电话"
prop=
"
shop_
tel"
>
<el-input
v-model=
"ruleForm.tel"
></el-input>
<el-input
v-model=
"ruleForm.
shop_
tel"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"详细地址"
prop=
"address"
>
<el-form-item
label=
"详细地址"
prop=
"
shop_
address"
>
<el-input
v-model=
"ruleForm.address"
>
<el-input
v-model=
"ruleForm.
shop_
address"
>
<template
#
append
>
<template
#
append
>
<el-button>
搜索地图
</el-button>
<el-button>
搜索地图
</el-button>
</
template
>
</
template
>
</el-input>
</el-input>
</el-form-item>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
@
click=
"onSubmit"
>
保存
</el-button>
</el-form-item>
</el-form>
</el-form>
</app-card>
</app-card>
</template>
</template>
<
script
>
<
script
>
import
AppCard
from
'@/components/base/card'
import
AppCard
from
'@/components/base/card'
import
{
updateShop
}
from
'@/api/shop'
export
default
{
export
default
{
components
:
{
AppCard
},
components
:
{
AppCard
},
data
()
{
data
()
{
return
{
return
{
ruleForm
:
{
tel
:
''
,
address
:
''
},
ruleForm
:
{
shop_tel
:
''
,
shop_
address
:
''
},
rules
:
{
rules
:
{
tel
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}],
shop_tel
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}],
address
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}]
shop_address
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}]
}
}
},
computed
:
{
shop
()
{
return
this
.
$store
.
state
.
shop
}
},
watch
:
{
shop
:
{
immediate
:
true
,
handler
(
data
)
{
this
.
ruleForm
=
Object
.
assign
({},
data
)
}
}
}
}
},
},
methods
:
{}
methods
:
{
onSubmit
()
{
this
.
$refs
.
ruleForm
.
validate
().
then
(
this
.
updateShop
)
},
updateShop
()
{
updateShop
(
this
.
ruleForm
).
then
(
resp
=>
{
this
.
$message
({
type
:
'success'
,
message
:
'修改成功'
})
this
.
dialogVisible
=
false
this
.
$store
.
dispatch
(
'getShop'
)
})
}
}
}
}
</
script
>
</
script
>
...
...
src/pages/setting/general.vue
0 → 100644
浏览文件 @
1eb24e70
<
template
>
<app-card>
<el-form
:model=
"ruleForm"
:rules=
"rules"
ref=
"ruleForm"
label-width=
"100px"
>
<el-form-item
label=
"店铺有效期"
prop=
"shop_name"
>
<el-date-picker
v-model=
"ruleForm.end_time"
type=
"datetime"
value-format=
"yyyy-MM-dd HH:mm:ss"
placeholder=
"请选择店铺有效期"
>
</el-date-picker>
</el-form-item>
</el-form>
</app-card>
</
template
>
<
script
>
import
AppCard
from
'@/components/base/card'
import
{
updateShop
}
from
'@/api/shop'
export
default
{
components
:
{
AppCard
},
data
()
{
return
{
ruleForm
:
{
end_time
:
''
},
rules
:
{
end_time
:
[{
required
:
true
,
message
:
'必填'
,
trigger
:
'blur'
}]
}
}
},
computed
:
{
shop
()
{
return
this
.
$store
.
state
.
shop
}
},
watch
:
{
shop
:
{
immediate
:
true
,
handler
(
data
)
{
this
.
ruleForm
=
Object
.
assign
({},
data
)
}
}
},
methods
:
{
onSubmit
()
{
this
.
$refs
.
ruleForm
.
validate
().
then
(
this
.
updateShop
)
},
updateShop
()
{
updateShop
(
this
.
ruleForm
).
then
(
resp
=>
{
this
.
$message
({
type
:
'success'
,
message
:
'修改成功'
})
this
.
$store
.
dispatch
(
'getShop'
)
})
}
}
}
</
script
>
<
style
>
</
style
>
src/pages/setting/info.vue
浏览文件 @
1eb24e70
...
@@ -12,7 +12,7 @@
...
@@ -12,7 +12,7 @@
<label
class=
"label"
>
创建时间:
</label><span
class=
"content"
>
{{ shop.create_time }}
</span>
<label
class=
"label"
>
创建时间:
</label><span
class=
"content"
>
{{ shop.create_time }}
</span>
</div>
</div>
<div
class=
"item"
>
<div
class=
"item"
>
<label
class=
"label"
>
联系电话:
</label><span
class=
"content"
>
{{ shop.tel }}
</span>
<label
class=
"label"
>
联系电话:
</label><span
class=
"content"
>
{{ shop.
shop_
tel }}
</span>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
<el-input
v-model=
"ruleForm.shop_name"
placeholder=
"请输入店铺、品牌、机构的全称"
></el-input>
<el-input
v-model=
"ruleForm.shop_name"
placeholder=
"请输入店铺、品牌、机构的全称"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"店铺头像"
prop=
"shop_logo"
>
<el-form-item
label=
"店铺头像"
prop=
"shop_logo"
>
<app-upload
v-model=
"ruleForm.shop_logo"
></app-upload>
<app-upload
v-model=
"ruleForm.shop_logo"
accept=
"image/*"
:show-file-list=
"false"
></app-upload>
</el-form-item>
</el-form-item>
<el-form-item
label=
"店铺有效期"
prop=
"end_time"
>
<el-form-item
label=
"店铺有效期"
prop=
"end_time"
>
<el-date-picker
<el-date-picker
...
@@ -52,7 +52,7 @@
...
@@ -52,7 +52,7 @@
<
script
>
<
script
>
import
AppCard
from
'@/components/base/card'
import
AppCard
from
'@/components/base/card'
import
AppUpload
from
'@/components/base/upload'
import
AppUpload
from
'@/components/base/upload'
import
{
updateShop
}
from
'@/api/shop'
export
default
{
export
default
{
components
:
{
AppCard
,
AppUpload
},
components
:
{
AppCard
,
AppUpload
},
data
()
{
data
()
{
...
@@ -80,7 +80,13 @@ export default {
...
@@ -80,7 +80,13 @@ export default {
onSubmit
()
{
onSubmit
()
{
this
.
$refs
.
ruleForm
.
validate
().
then
(
this
.
updateShop
)
this
.
$refs
.
ruleForm
.
validate
().
then
(
this
.
updateShop
)
},
},
updateShop
()
{}
updateShop
()
{
updateShop
(
this
.
ruleForm
).
then
(
resp
=>
{
this
.
$message
({
type
:
'success'
,
message
:
'修改成功'
})
this
.
dialogVisible
=
false
this
.
$store
.
dispatch
(
'getShop'
)
})
}
}
}
}
}
</
script
>
</
script
>
...
...
src/router/routes.js
浏览文件 @
1eb24e70
...
@@ -38,13 +38,16 @@ export default [
...
@@ -38,13 +38,16 @@ export default [
meta
:
{
title
:
'商品列表'
}
meta
:
{
title
:
'商品列表'
}
},
},
{
{
name
:
'goodsAdd'
,
path
:
'add'
,
path
:
'add'
,
component
:
()
=>
import
(
/* webpackChunkName: "goods" */
'@/pages/goods/goods/edit'
),
component
:
()
=>
import
(
/* webpackChunkName: "goods" */
'@/pages/goods/goods/edit'
),
meta
:
{
title
:
'发布商品'
}
meta
:
{
title
:
'发布商品'
}
},
},
{
{
name
:
'goodsEdit'
,
path
:
'edit/:id'
,
path
:
'edit/:id'
,
component
:
()
=>
import
(
/* webpackChunkName: "goods" */
'@/pages/goods/goods/edit'
),
component
:
()
=>
import
(
/* webpackChunkName: "goods" */
'@/pages/goods/goods/edit'
),
props
:
{
isEdit
:
true
},
meta
:
{
title
:
'编辑商品'
}
meta
:
{
title
:
'编辑商品'
}
},
},
{
{
...
@@ -84,6 +87,11 @@ export default [
...
@@ -84,6 +87,11 @@ export default [
component
:
()
=>
import
(
/* webpackChunkName: "setting" */
'@/pages/setting/info'
),
component
:
()
=>
import
(
/* webpackChunkName: "setting" */
'@/pages/setting/info'
),
meta
:
{
title
:
'店铺信息'
}
meta
:
{
title
:
'店铺信息'
}
},
},
{
path
:
'general'
,
component
:
()
=>
import
(
/* webpackChunkName: "setting" */
'@/pages/setting/general'
),
meta
:
{
title
:
'通用设置'
}
},
{
{
path
:
'contact'
,
path
:
'contact'
,
component
:
()
=>
import
(
/* webpackChunkName: "setting" */
'@/pages/setting/contact'
),
component
:
()
=>
import
(
/* webpackChunkName: "setting" */
'@/pages/setting/contact'
),
...
...
src/utils/axios.js
浏览文件 @
1eb24e70
...
@@ -35,7 +35,9 @@ httpRequest.interceptors.response.use(
...
@@ -35,7 +35,9 @@ httpRequest.interceptors.response.use(
function
(
response
)
{
function
(
response
)
{
const
{
data
}
=
response
const
{
data
}
=
response
if
(
data
.
code
)
{
if
(
data
.
code
)
{
Message
.
error
(
data
.
msg
||
data
.
message
)
if
(
!
[
1010
].
includes
(
data
.
code
))
{
Message
.
error
(
data
.
msg
||
data
.
message
)
}
return
Promise
.
reject
(
data
)
return
Promise
.
reject
(
data
)
}
}
return
data
return
data
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论