Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
E
eMall_miniapp
Project
Project
Details
Activity
Releases
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
高宇
eMall_miniapp
Commits
9ed13435
Commit
9ed13435
authored
Jul 22, 2023
by
杨硕
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加小票记录
parent
aa7013a1
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
336 additions
and
113 deletions
+336
-113
index.vue
moreFunction/about/index.vue
+50
-7
index.vue
moreFunction/feedback/index.vue
+8
-3
index.vue
my/myIntegral/index.vue
+127
-64
index.vue
my/myIntegral/receiptRecord/index.vue
+111
-34
package.json
package.json
+1
-1
index.vue
pages/menu/index.vue
+20
-2
list.vue
pages/menu/list.vue
+19
-2
No files found.
moreFunction/about/index.vue
View file @
9ed13435
<
template
>
<view
class=
"aboutMy"
>
<!-- 注册隐私保护协议 -->
<view
class=
"registration"
@
click=
"toDetail"
>
<view
class=
"registration"
@
click=
"toDetail
(0)
"
>
<view
class=
"icon"
>
<image
:src=
"img"
style=
"width: 20px; height: 20px;"
:mode=
"mode"
></image>
</view>
...
...
@@ -11,7 +11,7 @@
</view>
</view>
<!-- 会员服务协议 -->
<view
class=
"registration"
@
click=
"toDetail"
>
<view
class=
"registration"
@
click=
"toDetail
(1)
"
>
<view
class=
"icon"
>
<image
:src=
"img"
style=
"width: 20px; height: 20px;"
:mode=
"mode"
></image>
</view>
...
...
@@ -21,7 +21,7 @@
</view>
</view>
<!-- 简介 -->
<view
class=
"registration"
@
click=
"toDetail"
>
<view
class=
"registration"
@
click=
"toDetail
(2)
"
>
<view
class=
"icon"
>
<image
:src=
"img"
style=
"width: 20px; height: 20px;"
:mode=
"mode"
></image>
</view>
...
...
@@ -38,13 +38,56 @@
data
(){
return
{
mode
:
'aspectFill'
,
img
:
'http://192.144.239.97:20043/file/banner/20230605/6F749760FE1148369C4081EBD3248C6C.jpeg'
img
:
'http://192.144.239.97:20043/file/banner/20230605/6F749760FE1148369C4081EBD3248C6C.jpeg'
,
pdfList
:
[]
}
},
onShow
()
{
this
.
getPdf
()
},
methods
:{
toDetail
(){
uni
.
navigateTo
({
url
:
'/moreFunction/about/agreementDetail/index'
toDetail
(
index
){
const
baseUrl
=
'https://qf.91isoft.com/cshopFile/upload/'
// uni.navigateTo({
// url:'/moreFunction/about/agreementDetail/index'
// })
const
pdfUrl
=
baseUrl
+
this
.
pdfList
[
index
].
name
console
.
log
(
"pdf地址"
,
pdfUrl
)
// pdf预览
if
(
pdfUrl
)
{
uni
.
showLoading
({
title
:
'文件下载中'
,
mask
:
true
})
uni
.
downloadFile
({
url
:
pdfUrl
,
success
(
res
)
{
if
(
res
.
statusCode
===
200
)
{
var
filePath
=
res
.
tempFilePath
uni
.
openDocument
({
filePath
:
filePath
,
success
:
function
(
res
){
console
.
log
(
'成功打开文档'
)
}
})
}
uni
.
hideLoading
()
},
fail
:
function
()
{
console
.
log
(
'打开失败'
);
uni
.
hideLoading
()
}
})
}
else
{
console
.
log
(
'暂无模板'
);
// this.url = null
}
},
// 获取pdf链接
getPdf
(){
const
dictName
=
'pdf'
this
.
$u
.
get
(
'/moblie/dict/getDicts/'
+
dictName
).
then
(
res
=>
{
this
.
pdfList
=
res
})
}
}
...
...
moreFunction/feedback/index.vue
View file @
9ed13435
<
template
>
<view
class=
"complaint"
>
<view
class=
"complaint-form"
>
<u-form
labelWidth=
"160"
:model=
"form"
ref=
"uForm"
class=
"complaint-form"
:rules=
"rules"
>
<u-form
labelWidth=
"160"
:model=
"form"
ref=
"uForm"
:rules=
"rules"
>
<u-form-item
label=
"投诉标题"
prop=
"title"
borderBottom
required=
"true"
labelWidth=
"160"
labelPosition=
"top"
>
<u-input
placeholder=
"请输入投诉标题"
:maxlength=
"30"
v-model=
"form.title"
border=
"none"
></u-input>
...
...
@@ -15,6 +15,10 @@
labelPosition=
"top"
>
<u-input
placeholder=
"请输入投诉内容"
:maxlength=
"30"
v-model=
"form.details"
border=
"none"
></u-input>
</u-form-item>
<u-form-item
label=
"联系人"
prop=
"contact"
borderBottom
required=
"true"
labelWidth=
"160"
labelPosition=
"top"
>
<u-input
placeholder=
"请输入联系人"
:maxlength=
"11"
v-model=
"form.contact"
border=
"none"
></u-input>
</u-form-item>
<u-form-item
label=
"联系方式"
prop=
"phone"
borderBottom
required=
"true"
labelWidth=
"160"
labelPosition=
"top"
>
<u-input
placeholder=
"请输入联系方式"
:maxlength=
"11"
v-model=
"form.phone"
border=
"none"
></u-input>
...
...
@@ -111,11 +115,12 @@
tenantId
:
this
.
tenantId
,
title
:
this
.
form
.
title
,
details
:
this
.
form
.
details
,
phone
:
this
.
form
.
phone
phone
:
this
.
form
.
phone
,
contact
:
this
.
form
.
contact
}).
then
(
res
=>
{
console
.
log
(
'res'
,
res
)
uni
.
showToast
({
title
:
'
投诉建议
成功'
,
title
:
'
提交
成功'
,
icon
:
'success'
})
uni
.
navigateTo
({
...
...
my/myIntegral/index.vue
View file @
9ed13435
...
...
@@ -21,15 +21,18 @@
<view
class=
"title"
>
积分明细
</view>
<!-- 列表 -->
<view
class=
"list"
>
<view
class=
"list-item"
@
click=
"toDetail"
>
<view
class=
"left"
>
<view
class=
"title1"
>
新注册的会员赠200积分
</view>
<view
class=
"title2"
>
天津复悦里 新会员福利
</view>
<view
class=
"title2"
>
2023-07-05 09:29:54
</view>
</view>
<view
class=
"right"
>
<view
class=
"integral"
>
+200
</view>
</view>
<view
class=
"list-item"
@
click=
"toDetail"
v-for=
"item in integralList"
>
<view
class=
"left"
>
<view
class=
"title1"
>
{{
item
.
remarks
}}
</view>
<view
class=
"title2"
>
{{
businessMessage
.
name
}}
{{
item
.
styleName
}}
</view>
<view
class=
"title2"
>
{{
item
.
createTime
}}
</view>
</view>
<view
class=
"right"
>
<view
class=
"integral"
>
<span
v-if=
"item.type === 0"
>
+
{{
item
.
integral
}}
</span>
<span
v-if=
"item.type === 1"
>
-
{{
item
.
integral
}}
</span>
</view>
</view>
</view>
</view>
</view>
...
...
@@ -37,22 +40,71 @@
</
template
>
<
script
>
export
default
{
data
(){
return
{
export
default
{
data
()
{
return
{
// 总积分
total
:
'200'
total
:
0
,
businessMessage
:
{},
query
:
{
page
:
1
,
limit
:
20
},
integralList
:
[]
}
},
methods
:{
toDetail
(){
onShow
()
{
this
.
getMessage
()
},
methods
:
{
//获取商圈信息
getMessage
()
{
const
that
=
this
uni
.
getStorage
({
key
:
'business'
,
success
:
function
(
res
)
{
// that.ishaveBusiness = true
that
.
businessMessage
=
res
.
data
console
.
log
(
"商圈数据"
,
that
.
businessMessage
)
}
})
this
.
$nextTick
(()
=>
{
this
.
init
()
},
1000
)
},
init
()
{
this
.
getIntegralList
()
this
.
getIntegralNum
()
},
getIntegralNum
()
{
this
.
$u
.
get
(
'/user/tenantUser/mobile/get?tenantId='
+
this
.
businessMessage
.
id
).
then
(
res
=>
{
console
.
log
(
"积分总数"
,
res
)
if
(
res
)
{
this
.
total
=
res
.
integral
}
else
{
this
.
total
=
0
}
})
},
getIntegralList
()
{
this
.
$u
.
get
(
'/user/tenantUser/mobile/userIntegralList?tenantId='
+
this
.
businessMessage
.
id
+
'&page='
+
this
.
query
.
page
+
'&limit='
+
this
.
query
.
limit
).
then
(
res
=>
{
console
.
log
(
"积分列表"
,
res
)
if
(
res
)
{
this
.
integralList
=
res
.
records
}
})
},
toDetail
()
{
uni
.
navigateTo
({
url
:
'/my/myIntegral/detail/index'
url
:
'/my/myIntegral/detail/index'
})
},
toRecord
(){
toRecord
()
{
uni
.
navigateTo
({
url
:
'/my/myIntegral/receiptRecord/index'
url
:
'/my/myIntegral/receiptRecord/index'
})
}
}
...
...
@@ -60,72 +112,83 @@
</
script
>
<
style
lang=
"scss"
scoped
>
.myIntegral
{
.myIntegral
{
background-color
:
#eeeeee
;
min-height
:
100vh
;
.main
{
.main
{
display
:
flex
;
margin-left
:
4%
;
width
:
92%
;
width
:
92%
;
height
:
14vh
;
background-color
:
#fff
;
border-radius
:
12px
;
.left
{
margin-top
:
30rpx
;
margin-left
:
30rpx
;
.title
{
margin-bottom
:
18rpx
;
font-weight
:
700
;
}
.number
{
font-size
:
44rpx
;
font-weight
:
700
;
}
.left
{
margin-top
:
30rpx
;
margin-left
:
30rpx
;
.title
{
margin-bottom
:
18rpx
;
font-weight
:
700
;
}
.number
{
font-size
:
44rpx
;
font-weight
:
700
;
}
}
.right
{
.right
{
display
:
flex
;
margin-top
:
30rpx
;
position
:
absolute
;
right
:
58rpx
;
}
}
.boby
{
.boby
{
margin-top
:
30rpx
;
.title
{
.title
{
margin-left
:
30rpx
;
margin-bottom
:
30rpx
;
}
.list
{
.list-item
{
display
:
flex
;
margin-left
:
4%
;
width
:
92%
;
height
:
14vh
;
background-color
:
#fff
;
border-radius
:
12px
;
.left
{
.title1
{
font-weight
:
700
;
font-size
:
32rpx
;
margin-top
:
30rpx
;
margin-left
:
30rpx
;
.list
{
.list-item
{
display
:
flex
;
margin-left
:
4%
;
width
:
92%
;
height
:
14vh
;
background-color
:
#fff
;
border-radius
:
12px
;
margin-bottom
:
40rpx
;
.left
{
.title1
{
font-weight
:
700
;
font-size
:
32rpx
;
margin-top
:
30rpx
;
margin-left
:
30rpx
;
}
.title2
{
margin-left
:
30rpx
;
}
}
.title2
{
margin-left
:
30rpx
;
.right
{
.integral
{
position
:
absolute
;
right
:
59rpx
;
color
:
red
;
display
:
flex
;
height
:
12%
;
align-items
:
center
;
font-size
:
33rpx
;
}
}
}
.right
{
.integral
{
position
:
absolute
;
right
:
59rpx
;
color
:
red
;
display
:
flex
;
height
:
12%
;
align-items
:
center
;
font-size
:
33rpx
;
}
}
}
}
}
}
}
...
...
my/myIntegral/receiptRecord/index.vue
View file @
9ed13435
<
template
>
<view
class=
"myTicket"
>
<view
class=
"element"
>
<img
src=
"http://192.144.239.97:20043/file/banner/20230605/6F749760FE1148369C4081EBD3248C6C.jpeg"
>
<view
class=
"element"
v-if=
"noteList.length === 0"
>
<img
src=
"http://192.144.239.97:20043/file/banner/20230605/6F749760FE1148369C4081EBD3248C6C.jpeg"
>
<view
class=
"text"
>
上传消费小票即可获得积分哦
</view>
<view
class=
"button"
>
立即上传小票
</view>
<view
class=
"button"
@
click=
"gotopage"
>
立即上传小票
</view>
</view>
<view
v-else
class=
"noteList"
v-for=
"item in noteList"
>
<view
class=
"note-left"
>
<view
style=
"font-size: 28rpx;"
>
{{
businessMessage
.
name
}}
</view>
<view
style=
"font-size: 26rpx;color: #666;"
>
{{
item
.
shop
.
name
}}
</view>
<view
style=
"font-size: 22rpx;color: #999;"
>
{{
item
.
createTime
}}
</view>
</view>
<view
class=
"note-right"
>
<view
style=
"text-align: right;"
v-if=
"item.status === 0"
>
待审核
</view>
<view
style=
"text-align: right;"
v-if=
"item.status === 1"
>
已通过
</view>
<view
style=
"text-align: right;"
v-if=
"item.status === 2"
>
已拒绝
</view>
<view
style=
"font-size: 22rpx;color: #999;"
v-if=
"item.status === 1"
>
小票审核通过
</view>
<view
style=
"font-size: 22rpx;color: #999;"
v-if=
"item.status === 2"
>
小票审核拒绝
</view>
</view>
</view>
</view>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
noteList
:
[],
businessMessage
:
{}
}
},
onLoad
()
{
this
.
getMessage
()
},
methods
:
{
//获取商圈信息
getMessage
()
{
const
that
=
this
uni
.
getStorage
({
key
:
'business'
,
success
:
function
(
res
)
{
// that.ishaveBusiness = true
that
.
businessMessage
=
res
.
data
console
.
log
(
"商圈数据"
,
that
.
businessMessage
)
}
})
this
.
$nextTick
(()
=>
{
this
.
getNote
()
},
1000
)
},
// 获取小票列表
getNote
()
{
this
.
$u
.
get
(
'/user/receipt/mobile/list?tenantId='
+
this
.
businessMessage
.
id
).
then
(
res
=>
{
console
.
log
(
"小票列表"
,
res
)
// if (res) {
// this.total = res.integral
// } else {
// this.total = 0
// }
this
.
noteList
=
res
.
records
})
},
// 跳转页面
gotopage
()
{
uni
.
navigateTo
({
url
:
'/homePage/filmReceipt/index'
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.myTicket
{
.myTicket
{
min-height
:
100vh
;
background-color
:
#eeeeee
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
.element
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
margin-top
:
20px
;
margin-left
:
20px
;
margin-right
:
20px
;
.text
{
font-family
:
'Franklin Gothic Medium'
,
'Arial Narrow'
,
Arial
,
sans-serif
;
color
:
#333333
;
font-size
:
15px
;
margin
:
5px
5px
5px
5px
;
text-align
:
center
;
}
.button
{
width
:
130px
;
height
:
35px
;
background-color
:
white
;
border
:
2px
solid
#bd0000
;
color
:
#bd0000
;
font-weight
:
bold
;
border-radius
:
60rpx
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
}
padding-top
:
34rpx
;
// display: flex;
// align-items: center;
// justify-content: center;
.element
{
height
:
100vh
;
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
// margin-top: 20px;
// margin-left: 20px;
// margin-right: 20px;
.text
{
font-family
:
'Franklin Gothic Medium'
,
'Arial Narrow'
,
Arial
,
sans-serif
;
color
:
#333333
;
font-size
:
15px
;
margin
:
5px
5px
5px
5px
;
text-align
:
center
;
}
.button
{
width
:
130px
;
height
:
35px
;
background-color
:
white
;
border
:
2px
solid
#bd0000
;
color
:
#bd0000
;
font-weight
:
bold
;
border-radius
:
60rpx
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
}
}
.noteList
{
margin
:
0
34rpx
34rpx
34rpx
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
background-color
:
#fff
;
border-radius
:
12px
;
padding
:
34rpx
26rpx
;
}
}
</
style
>
\ No newline at end of file
package.json
View file @
9ed13435
{
"name"
:
"
邻家小铺
"
,
"name"
:
"
商圈plus
"
,
"version"
:
"1.0.0"
,
"description"
:
"<p align=
\"
center
\"
>
\r
<img alt=
\"
logo
\"
src=
\"
https://uviewui.com/common/logo.png
\"
width=
\"
120
\"
height=
\"
120
\"
style=
\"
margin-bottom: 10px;
\"
>
\r
</p>
\r
<h3 align=
\"
center
\"
style=
\"
margin: 30px 0 30px;font-weight: bold;font-size:40px;
\"
>uView</h3>
\r
<h3 align=
\"
center
\"
>多平台快速开发的UI框架</h3>"
,
"main"
:
"main.js"
,
...
...
pages/menu/index.vue
View file @
9ed13435
...
...
@@ -47,15 +47,33 @@
arr
:
[],
scrollRightTop
:
0
,
// 右边栏目scroll-view的滚动条高度
timer
:
null
,
// 定时器
baseApi
:
this
.
baseApi
,
businessMessage
:{}
// 商圈数据
}
},
onLoad
()
{
this
.
init
()
this
.
getMessage
()
// this.init()
},
methods
:
{
getMessage
(){
const
that
=
this
uni
.
getStorage
({
key
:
'business'
,
success
:
function
(
res
){
// that.ishaveBusiness = true
that
.
businessMessage
=
res
.
data
console
.
log
(
"商圈数据"
,
that
.
businessMessage
)
}
})
this
.
$nextTick
(()
=>
{
this
.
init
()
},
1000
)
},
init
()
{
this
.
$u
.
get
(
'category/list
'
).
then
(
res
=>
{
this
.
$u
.
get
(
'category/list
?tenantId='
+
this
.
businessMessage
.
id
).
then
(
res
=>
{
this
.
tabbar
=
res
this
.
getMenuItemTop
()
})
...
...
pages/menu/list.vue
View file @
9ed13435
...
...
@@ -34,6 +34,7 @@
idCategory
:
undefined
},
total
:
0
,
businessMessage
:
{},
status
:
'loadmore'
,
loadText
:
{
loadmore
:
'轻轻上拉'
,
...
...
@@ -44,13 +45,29 @@
},
onLoad
(
option
)
{
this
.
idCategory
=
option
.
idCategory
this
.
init
()
this
.
getMessage
()
// this.init()
},
onReachBottom
()
{
this
.
listQuery
.
page
=
this
.
listQuery
.
page
+
1
this
.
getGoods
(
this
.
idCategory
)
},
methods
:
{
getMessage
(){
const
that
=
this
uni
.
getStorage
({
key
:
'business'
,
success
:
function
(
res
){
// that.ishaveBusiness = true
that
.
businessMessage
=
res
.
data
console
.
log
(
"商圈数据"
,
that
.
businessMessage
)
}
})
this
.
$nextTick
(()
=>
{
this
.
init
()
},
1000
)
},
init
()
{
this
.
getGoods
(
this
.
idCategory
)
},
...
...
@@ -66,7 +83,7 @@
const
page
=
this
.
listQuery
.
page
const
limit
=
this
.
listQuery
.
limit
const
baseApi
=
this
.
baseApi
;
this
.
$u
.
get
(
'goods/queryGoods?page='
+
page
+
'&limit='
+
limit
+
'&idCategory='
+
idCategory
).
then
(
res
=>
{
this
.
$u
.
get
(
'goods/queryGoods?page='
+
page
+
'&limit='
+
limit
+
'&idCategory='
+
idCategory
+
'&tenantId='
+
this
.
businessMessage
.
id
).
then
(
res
=>
{
let
list
=
res
.
records
this
.
total
=
res
.
total
if
(
list
.
length
<
limit
)
{
...
...
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