Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
occloud-server
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
yangjiarong
occloud-server
Commits
0af13dd7
Commit
0af13dd7
authored
Jul 27, 2022
by
liuliufashi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
push
parent
41a815df
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
56 additions
and
89 deletions
+56
-89
index.vue
...-admin/src/views/goods-cabinet/components/goods/index.vue
+6
-28
index.vue
...min/src/views/goods-cabinet/components/goodsubs/index.vue
+3
-3
index.vue
web-vue-admin/src/views/goods-cabinet/index.vue
+10
-18
index.vue
...e-admin/src/views/pay-list/components/createpay/index.vue
+20
-23
index.vue
web-vue-admin/src/views/pay-list/index.vue
+17
-17
No files found.
web-vue-admin/src/views/goods-cabinet/components/goods/index.vue
View file @
0af13dd7
...
...
@@ -4,12 +4,12 @@
<div
class=
"title"
>
商品基础信息
</div>
<a-form
style=
"margin-top: 30px"
:model=
"formState"
name=
"basic"
:label-col=
"
{ span: 1 }" :wrapper-col="{ span: 8 }"
autocomplete="off" @finish="onFinish" @finishFailed="onFinishFailed">
<a-form-item
label=
"商品名称"
name=
"subject"
:rules=
"rulesRef.subject"
labelAlign=
"left"
:label-col=
"
{ span: 2 }">
<a-input
v-model:value=
"formState.subject"
/>
<a-form-item
label=
"商品名称"
name=
"subject"
:rules=
"rulesRef.subject"
labelAlign=
"left"
:label-col=
"
{ span: 2 }"
>
<a-input
v-model:value=
"formState.subject"
maxlength=
"30"
showCount
/>
</a-form-item>
<a-form-item
label=
"商品简介"
name=
"shortname"
:rules=
"rulesRef.shortname"
labelAlign=
"left"
:label-col=
"
{ span: 2}">
<a-input
v-model:value=
"formState.shortname"
/>
<a-input
v-model:value=
"formState.shortname"
maxlength=
"50"
showCount
/>
</a-form-item>
<a-form-item
label=
" 商品示图"
name=
"picurl"
:rules=
"rulesRef.picurl"
:wrapper-col=
"
{ offset: 0, span: 8 }" class="Up"
...
...
@@ -27,7 +27,7 @@
</a-modal>
<div>
<p
class=
"warin"
>
建议图片比例为4:3,大小不超过20
0
M,图片仅支持JPG、JPEG、PNG格式
建议图片比例为4:3,大小不超过20M,图片仅支持JPG、JPEG、PNG格式
</p>
</div>
</div>
...
...
@@ -231,24 +231,7 @@ const rulesRef = reactive({
message
:
'请输入商品简介!'
,
},
],
body
:
[
{
required
:
true
,
message
:
'请输入商品详情!'
,
},
],
picurl
:
[
{
validateOnRuleChange
:
true
,
message
:
'请上传商品示图!'
,
},
],
markingprice
:
[
{
required
:
true
,
message
:
'请输入划线价格'
,
},
],
price
:
[
{
required
:
true
,
...
...
@@ -256,10 +239,9 @@ const rulesRef = reactive({
},
],
});
const
{
resetFields
,
validate
}
=
useForm
(
formState
,
rulesRef
);
const
{
validate
}
=
useForm
(
formState
,
rulesRef
);
const
onFinish
=
(
values
:
any
)
=>
{
console
.
log
(
"Success:"
,
values
);
};
const
onFinishFailed
=
(
errorInfo
:
any
)
=>
{
...
...
@@ -320,7 +302,6 @@ const onBeforeUpload: UploadProps['beforeUpload'] = file => {
const
onSubmit
=
()
=>
{
validate
()
.
then
(
async
()
=>
{
const
fromData
:
any
=
toRaw
(
formState
)
const
uid
=
getUid
()
const
prarms
=
{
...
...
@@ -335,11 +316,8 @@ const onSubmit = () => {
picurl
:
fromData
.
picurl
,
free
:
value
.
value
}
console
.
log
(
prarms
,
'toRaw(formState)'
);
const
data
:
any
=
await
onCreateGoods
(
JSON
.
stringify
(
prarms
))
if
(
data
.
state
===
1
)
{
resetFields
()
fileList
.
value
=
[]
message
.
success
(
data
.
message
)
emit
(
'onBack'
)
...
...
web-vue-admin/src/views/goods-cabinet/components/goodsubs/index.vue
View file @
0af13dd7
...
...
@@ -4,11 +4,11 @@
<div
class=
"title"
>
商品包基础信息
</div>
<a-form
style=
"margin-top: 30px"
:model=
"formState"
name=
"basic"
:label-col=
"
{ span: 1 }" :wrapper-col="{ span: 8 }" autocomplete="off" @finish="onFinish" @finishFailed="onFinishFailed">
<a-form-item
label=
"商品名称:"
name=
"subject"
:rules=
"rulesRef.subject"
labelAlign=
"left"
:label-col=
"
{ span: 2 }">
<a-input
v-model:value=
"formState.subject"
/>
<a-input
v-model:value=
"formState.subject"
maxlength=
"30"
showCount
/>
</a-form-item>
<a-form-item
label=
"商品简介:"
name=
"shortname"
:rules=
"rulesRef.shortname"
labelAlign=
"left"
:label-col=
"
{ span: 2 }">
<a-input
v-model:value=
"formState.shortname"
/>
<a-input
v-model:value=
"formState.shortname"
maxlength=
"50"
showCount
/>
</a-form-item>
<a-form-item
label=
"商品示图:"
name=
"picurl"
:rules=
"rulesRef.picurl"
labelAlign=
"left"
:wrapper-col=
"
{ offset: 0, span: 8 }"
...
...
@@ -26,7 +26,7 @@
</a-modal>
<div>
<p
class=
"warin"
>
建议图片比例为4:3,大小不超过20
0
M,图片仅支持JPG、JPEG、PNG格式
建议图片比例为4:3,大小不超过20M,图片仅支持JPG、JPEG、PNG格式
</p>
</div>
</div>
...
...
web-vue-admin/src/views/goods-cabinet/index.vue
View file @
0af13dd7
...
...
@@ -50,14 +50,14 @@
<a-modal
v-model:visible=
"visible"
title=
"编辑"
:confirm-loading=
"confirmLoading"
:width=
"1000"
@
ok=
"handleOk"
:maskClosable=
"false"
@
Cancel=
"handleCancel"
@
handleChange=
"handleChange"
>
<a-form
:model=
"modelRef"
name=
"basic"
:label-col=
"{ span: 2 }"
:wrapper-col=
"{ span: 8 }"
autocomplete=
"off"
>
<a-form-item
label=
"商品名称"
name=
"
商品名称"
:rules=
"[{ required: true, message: '请输入商品名称!' }]
"
<a-form-item
label=
"商品名称"
name=
"
subject"
:rules=
"[{ required: true, message: '请输入商品名称!' }]"
:maxlength=
"200
"
:label-col=
"{ span: 2 }"
>
<a-input
v-model:value=
"modelRef.subject"
/>
<a-input
v-model:value=
"modelRef.subject"
maxlength=
"30"
/>
</a-form-item>
<a-form-item
label=
"商品简介"
name=
"
商品简介"
:rules=
"[{ required: true, message: '请输入商品简介!' }]
"
<a-form-item
label=
"商品简介"
name=
"
shortname"
:rules=
"[{ required: true, message: '请输入商品简介!' }]"
:maxlength=
"200
"
:label-col=
"{ span: 2 }"
>
<a-input
v-model:value=
"modelRef.shortname"
/>
<a-input
v-model:value=
"modelRef.shortname"
maxlength=
"50"
/>
</a-form-item>
<a-form-item
label=
" 商品示图"
name=
"picurl"
:wrapper-col=
"{ offset: 0, span: 8 }"
class=
"Up"
labelAlign=
"left"
...
...
@@ -74,7 +74,7 @@
</div>
<div>
<p
class=
"warin"
>
建议图片比例为4:3,大小不超过20
0
M,图片仅支持JPG、JPEG、PNG格式
建议图片比例为4:3,大小不超过20M,图片仅支持JPG、JPEG、PNG格式
</p>
</div>
</div>
...
...
@@ -117,14 +117,14 @@
<a-form-item
name=
"price"
:wrapper-col=
"{ offset: 0, span: 4 }"
label=
"商品售价"
:rules=
"[{ required: true, message: '请输入输入价格' }]"
labelAlign=
"left"
:label-col=
"{ span: 2 }"
>
<div>
<a-radio-group
v-model:value=
"modelRef.
sellingmodel
"
@
change=
"onSelectPlain"
>
<a-radio-group
v-model:value=
"modelRef.
free
"
@
change=
"onSelectPlain"
>
<a-radio
value=
"0"
>
免费
</a-radio>
<a-radio
value=
"1"
>
收费
</a-radio>
</a-radio-group>
</div>
</a-form-item>
<a-form-item
:wrapper-col=
"{ offset: 2, span: 7 }"
>
<a-form-item
:wrapper-col=
"{ offset: 2, span: 7 }"
v-if=
"modelRef.free!== '0'"
>
<div
style=
"display:flex;"
>
<div
style=
"margin-right:20px"
>
划线价
</div>
<a-input-number
style=
"width: 200px"
:min=
"0"
string-mode
...
...
@@ -134,7 +134,7 @@
</div>
</a-form-item>
<a-form-item
name=
"price"
:wrapper-col=
"{ offset: 2, span: 7 }"
:rules=
"[{ required: true, message: '请输入商品价格!' }]"
>
:rules=
"[{ required: true, message: '请输入商品价格!' }]"
v-if=
"modelRef.free!== '0'"
>
<div
style=
"display:flex;"
>
<div
style=
"margin-right:20px"
>
售卖价
</div>
<a-input-number
style=
"width: 200px"
:min=
"0"
string-mode
...
...
@@ -330,18 +330,11 @@ const onEdit = (e: any) => {
modelRef
.
value
.
sellingmodel
=
e
.
price
?
'1'
:
'0'
modelRef
.
value
.
price
=
e
.
price
/
100
modelRef
.
value
.
markingprice
=
e
.
markingprice
/
100
modelRef
.
value
.
free
=
e
.
free
fileList
.
value
[
0
].
url
=
e
.
picurl
};
const
{
resetFields
,
validate
,
validateInfos
}
=
useForm
(
const
{
validate
}
=
useForm
(
modelRef
,
reactive
({
subject
:
[
{
required
:
true
,
message
:
"请输入商品名称"
,
},
],
})
);
const
onSelectPlain
=
(
e
:
any
)
=>
{
if
(
e
.
target
.
value
===
'0'
)
{
...
...
@@ -468,7 +461,6 @@ defineExpose({
modalText
,
visible
,
confirmLoading
,
validateInfos
,
modelRef
,
optionss
,
options
,
...
...
web-vue-admin/src/views/pay-list/components/createpay/index.vue
View file @
0af13dd7
...
...
@@ -164,9 +164,8 @@ const rulesRef = reactive({
message
:
'请输入商品简介!'
,
},
],
});
const
{
resetFields
,
validate
}
=
useForm
(
formState
,
rulesRef
);
const
{
validate
}
=
useForm
(
formState
,
rulesRef
);
const
onSelect
=
(
value
:
any
,
option
:
any
)
=>
{
price
.
value
=
option
.
itemKey
.
price
/
100
}
...
...
@@ -175,27 +174,25 @@ const onSubmit = () => {
.
then
(
async
(
res
)
=>
{
const
uid
=
getUid
()
const
expireendtime
=
(
moment
(
toRaw
(
formState
).
expireendtime
.
$d
).
format
(
'YYYY-MM-DD'
))
+
(
moment
(
endvalue
.
value
.
$d
).
format
(
'THH:mm:[00][Z]'
))
// goodspayditch.value.map((item:any)=>{return item.goodsid = toRaw(formState).subject.value})
// console.log(toRaw(formState),'toRaw(formState)',goodspayditch.value);
// const prarms = {
// subject:toRaw(formState).subject.label,
// shortname:toRaw(formState).shortname,
// paymentmodel:toRaw(formState).paymentmodel,
// fullphone:toRaw(formState).paymentmodel?0:1,
// expireendtime:expireendtime,
// starttime: moment(new Date()).format('YYYY-MM-DDTHH:mm:[00][Z]'),
// goodsid: toRaw(formState).subject.value,
// goodspayditch:goodspayditch.value,
// payment:formState.paymentmodel == '1'?price.value*100:priceSet.value*100,
// uid,
// remark:toRaw(formState).remark
// }
// const data:any = await onCreateGoodsPay(prarms)
// if(data.state === 1){
// message.success(data.message)
// emit('onBack')
// }
goodspayditch
.
value
.
map
((
item
:
any
)
=>
{
return
item
.
goodsid
=
toRaw
(
formState
).
subject
.
value
})
const
prarms
=
{
subject
:
toRaw
(
formState
).
subject
.
label
,
shortname
:
toRaw
(
formState
).
shortname
,
paymentmodel
:
toRaw
(
formState
).
paymentmodel
,
fullphone
:
toRaw
(
formState
).
paymentmodel
?
0
:
1
,
expireendtime
:
expireendtime
,
starttime
:
moment
(
new
Date
()).
format
(
'YYYY-MM-DDTHH:mm:[00][Z]'
),
goodsid
:
toRaw
(
formState
).
subject
.
value
,
goodspayditch
:
goodspayditch
.
value
,
payment
:
formState
.
paymentmodel
==
'1'
?
price
.
value
*
100
:
priceSet
.
value
*
100
,
uid
,
remark
:
toRaw
(
formState
).
remark
}
const
data
:
any
=
await
onCreateGoodsPay
(
prarms
)
if
(
data
.
state
===
1
){
message
.
success
(
data
.
message
)
emit
(
'onBack'
)
}
})
.
catch
(
err
=>
{
...
...
web-vue-admin/src/views/pay-list/index.vue
View file @
0af13dd7
...
...
@@ -14,7 +14,6 @@
<template
#
bodyCell=
"
{ column, record }">
<div
v-if=
"column.key == 'picurl'"
>
<div
style=
"display:flex;align-items: center;"
>
<a-image
:width=
"100"
:src=
"record.picurl"
/>
<div>
{{
record
.
subject
}}
</div>
</div>
...
...
@@ -64,7 +63,7 @@
<a-form-item
label=
"选择商品"
name=
"subject"
:label-col=
"{ span: 2 }"
labelAlign=
"left"
>
<div
style=
"width:100%;display: flex;align-items: center;"
>
<a-select
v-model:value=
"formState.subject"
style=
"width: 120px"
:options=
"listArray.map((item:any, index:number) => ({ value: item.goodsid, label: item.subject, index: index }))"
@
change=
"onSelect"
>
:options=
"listArray.map((item:any, index:number) => ({ value: item.goodsid, label: item.subject, index: index
,
}))"
@
change=
"onSelect"
>
</a-select>
</div>
</a-form-item>
...
...
@@ -72,17 +71,17 @@
<a-input
v-model:value=
"formState.shortname"
placeholder=
"请输入商品描述"
/>
</a-form-item>
<a-form-item
label=
"支付金额"
name=
"price"
:label-col=
"{ span: 2 }"
labelAlign=
"left"
>
<a-radio-group
v-model:value=
"formState.
payment
model"
name=
"radioGroup"
class=
"pay"
>
<a-radio-group
v-model:value=
"formState.
expire
model"
name=
"radioGroup"
class=
"pay"
>
<div
style=
"display: flex;height: 35px;"
>
<a-radio
:
value=
"0"
style=
"width:150px;"
>
商品默认金额
</a-radio>
<a-radio
value=
"0"
style=
"width:150px;"
>
商品默认金额
</a-radio>
<a-input-number
style=
"width:200px;height: 35px;"
v-model:value=
"formState.markingprice"
:formatter=
"value => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
:parser=
"value => value.replace(/\$\s?|(,*)/g, '')"
:disabled=
"true"
/>
:parser=
"value => value.replace(/\$\s?|(,*)/g, '')"
:disabled=
"true"
/>
<div
style=
"width:50px;"
>
元
</div>
</div>
<div
style=
"display: flex;height: 35px;margin-top: 20px;"
>
<a-radio
:
value=
"1"
style=
"width:150px;"
>
自定义金额
</a-radio>
<a-radio
value=
"1"
style=
"width:150px;"
>
自定义金额
</a-radio>
<a-input-number
style=
"width:200px;height: 35px;"
v-model:value=
"formState.payment"
:formatter=
"value => `${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ',')"
:parser=
"value => value.replace(/\$\s?|(,*)/g, '')"
/>
:parser=
"value => value.replace(/\$\s?|(,*)/g, '')"
/>
<div
style=
"width:50px;"
>
元
</div>
</div>
</a-radio-group>
...
...
@@ -92,13 +91,13 @@
<a-switch
:checked=
"formState.fullphone === '0'"
/>
</div>
</a-form-item>
<a-form-item
label=
"开始时间"
name=
"price"
:label-col=
"{ span: 2 }"
labelAlign=
"left"
>
<
!-- <
a-form-item label="开始时间" name="price" :label-col="{ span: 2 }" labelAlign="left">
<div style="display:flex">
<a-date-picker v-model:value="value2" :format="dateFormat"
:disabledDate="disabledDate" />
<a-time-picker style="margin-left: 20px;" v-model:value="value3" format="HH:mm" />
</div>
</a-form-item>
</a-form-item>
-->
<a-form-item
label=
"结束时间"
name=
"price"
:label-col=
"{ span: 2 }"
labelAlign=
"left"
>
<div
style=
"display:flex"
>
<a-date-picker
v-model:value=
"value4"
:format=
"dateFormat"
...
...
@@ -155,8 +154,8 @@ const optionsWithDisabled = [
const
columns
=
[
{
title
:
'支付项目名称'
,
dataIndex
:
'
picurl
'
,
key
:
'
picurl
'
,
dataIndex
:
'
subject
'
,
key
:
'
subject
'
,
},
{
title
:
'绑定商品编号'
,
...
...
@@ -204,16 +203,15 @@ const showModal = () => {
};
const
handleOk
=
async
(
e
:
MouseEvent
)
=>
{
const
starttime
=
(
moment
(
value2
.
value
.
$d
).
format
(
'YYYY-MM-DD'
))
+
(
moment
(
value3
.
value
.
$d
).
format
(
'THH:mm:[00][Z]'
)
)
const
starttime
=
moment
(
new
Date
()).
format
(
'YYYY-MM-DDTHH:mm:[00][Z]'
)
const
expireendtime
=
(
moment
(
value4
.
value
.
$d
).
format
(
'YYYY-MM-DD'
))
+
(
moment
(
value5
.
value
.
$d
).
format
(
'THH:mm:[00][Z]'
))
const
uid
=
getUid
()
const
params
=
{
id
:
formState
.
value
.
id
,
goodsid
:
formState
.
value
.
goodspayditch
[
0
].
goodsid
,
paymentmodel
:
formState
.
value
.
paymentmodel
*
100
,
paymentmodel
:
formState
.
value
.
paymentmodel
,
payment
:
formState
.
value
.
payment
*
100
,
fullphone
:
formState
.
value
.
fullphone
,
expiremodel
:
formState
.
value
.
expiremodel
,
expireendtime
:
expireendtime
,
expiremillisecond
:
formState
.
value
.
expiremillisecond
,
starttime
:
starttime
,
...
...
@@ -255,6 +253,7 @@ const onEdit = (e: any) => {
formState
.
value
.
goodsid
=
e
.
goodsid
formState
.
value
.
expireendtime
=
e
.
expireendtime
formState
.
value
.
createtime
=
e
.
createtime
formState
.
value
.
expiremodel
=
e
.
expiremodel
value2
.
value
=
dayjs
(
moment
(
e
.
starttime
).
format
((
'YYYY/MM/DD'
)),
dateFormat
)
value3
.
value
=
dayjs
(
moment
(
e
.
starttime
).
format
((
'HH:mm'
)),
'HH:mm'
)
value4
.
value
=
dayjs
(
moment
(
e
.
expireendtime
).
format
((
'YYYY-MM-DD'
)),
dateFormat
)
...
...
@@ -320,11 +319,12 @@ const init = async () => {
listArray
.
value
=
data
.
data
}
const
onSelectCheckboxValue
=
(
e
:
any
,
index
:
any
)
=>
{
const
onSelectCheckboxValue
=
(
e
:
any
,
index
:
any
)
=>
{
d
checkboxValue
.
value
[
index
]
=
e
}
const
onSelect
=
(
e
:
any
,
label
:
any
,
index
:
any
)
=>
{
const
onSelect
=
(
e
:
any
,
label
:
any
,
index
:
any
,
item
:
any
)
=>
{
console
.
log
(
e
,
label
,
item
,
'e'
);
formState
.
value
.
markingprice
=
listArray
.
value
[
label
.
index
].
price
/
100
}
onMounted
(
async
()
=>
{
...
...
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