Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sensorConsult
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
zhanglw
sensorConsult
Commits
84909063
Commit
84909063
authored
1 year ago
by
zhanglw
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
底部文件
parent
f356297a
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
1400 additions
and
21 deletions
+1400
-21
common.js
src/api/common.js
+3
-3
index.js
src/router/index.js
+1
-1
routers.js
src/router/routers.js
+24
-0
add.vue
src/views/backstage/contentMgt/homePage/add.vue
+113
-6
view.vue
src/views/backstage/contentMgt/homePage/view.vue
+39
-0
homeFooter.vue
src/views/homepage/components/homeFooter.vue
+43
-10
cooperate.vue
src/views/homepage/footer/cooperate.vue
+371
-0
index.vue
src/views/homepage/footer/index.vue
+437
-0
opinion.vue
src/views/homepage/footer/opinion.vue
+367
-0
index.vue
src/views/homepage/index.vue
+2
-1
No files found.
src/api/common.js
View file @
84909063
...
@@ -437,10 +437,10 @@ export const HttpReq = {
...
@@ -437,10 +437,10 @@ export const HttpReq = {
method
:
'
get
'
method
:
'
get
'
})
})
},
},
// 首页-
友情链接
// 首页-
底部导航
homePageGet
FriendshipUrl
:
function
(
params
)
{
homePageGet
BottomNavigation
:
function
(
params
)
{
return
request
({
return
request
({
url
:
'
/api/bsw/bigScreen/index/
friendshipUrl
?
'
+
qs
.
stringify
(
params
,
{
indices
:
false
}),
url
:
'
/api/bsw/bigScreen/index/
bottomNavigationBar
?
'
+
qs
.
stringify
(
params
,
{
indices
:
false
}),
method
:
'
get
'
method
:
'
get
'
})
})
},
},
...
...
This diff is collapsed.
Click to expand it.
src/router/index.js
View file @
84909063
...
@@ -9,7 +9,7 @@ import { filterAsyncRouter } from '@/store/modules/permission'
...
@@ -9,7 +9,7 @@ import { filterAsyncRouter } from '@/store/modules/permission'
NProgress
.
configure
({
showSpinner
:
false
})
// NProgress Configuration
NProgress
.
configure
({
showSpinner
:
false
})
// NProgress Configuration
const
whiteList
=
[
'
/login
'
,
'
/backlogin
'
,
'
/home
'
,
'
/product
'
,
'
/supplier
'
,
'
/project
'
,
'
/software
'
,
'
/course
'
,
'
/information
'
]
// 免登录路由白名单
const
whiteList
=
[
'
/login
'
,
'
/backlogin
'
,
'
/home
'
,
'
/product
'
,
'
/supplier
'
,
'
/project
'
,
'
/software
'
,
'
/course
'
,
'
/information
'
,
'
/footer
'
]
// 免登录路由白名单
const
backUrlList
=
[
'
/dashboard
'
,
'
/system
'
,
'
/monitor
'
,
'
/sys-tools
'
,
'
/backstage
'
]
// 后台路由
const
backUrlList
=
[
'
/dashboard
'
,
'
/system
'
,
'
/monitor
'
,
'
/sys-tools
'
,
'
/backstage
'
]
// 后台路由
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
...
...
This diff is collapsed.
Click to expand it.
src/router/routers.js
View file @
84909063
...
@@ -158,6 +158,30 @@ export const constantRouterMap = [
...
@@ -158,6 +158,30 @@ export const constantRouterMap = [
},
},
hidden
:
true
hidden
:
true
},
},
{
path
:
'
/footer/about/:id
'
,
meta
:
{
title
:
''
,
noCache
:
true
},
component
:
(
resolve
)
=>
{
return
require
([
'
@/views/homepage/footer/index
'
],
resolve
)
},
hidden
:
true
},
{
path
:
'
/footer/opinion
'
,
meta
:
{
title
:
'
提供建议
'
,
noCache
:
true
},
component
:
(
resolve
)
=>
{
return
require
([
'
@/views/homepage/footer/opinion
'
],
resolve
)
},
hidden
:
true
},
{
path
:
'
/footer/cooperate
'
,
meta
:
{
title
:
'
我要合作
'
,
noCache
:
true
},
component
:
(
resolve
)
=>
{
return
require
([
'
@/views/homepage/footer/cooperate
'
],
resolve
)
},
hidden
:
true
},
{
{
path
:
'
/console
'
,
path
:
'
/console
'
,
meta
:
{
title
:
'
个人中心
'
,
noCache
:
true
},
meta
:
{
title
:
'
个人中心
'
,
noCache
:
true
},
...
...
This diff is collapsed.
Click to expand it.
src/views/backstage/contentMgt/homePage/add.vue
View file @
84909063
<
template
>
<
template
>
<!-- 表单渲染 -->
<!-- 表单渲染 -->
<el-dialog
append-to-body
:close-on-click-modal=
"false"
:before-close=
"cancelView"
:visible=
"visible"
:title=
"title"
width=
"860px"
>
<el-dialog
append-to-body
:close-on-click-modal=
"false"
:before-close=
"cancelView"
:visible=
"visible"
:title=
"title"
width=
"860px"
>
<el-form
ref=
"formViewRef"
:model=
"formData"
:rules=
"rules"
:status-icon=
"true"
label-width=
"2
4
0px"
>
<el-form
ref=
"formViewRef"
:model=
"formData"
:rules=
"rules"
:status-icon=
"true"
label-width=
"2
2
0px"
>
<el-form-item
label=
"位置:"
class=
"form-cell"
prop=
"type"
>
<el-form-item
label=
"位置:"
class=
"form-cell"
prop=
"type"
>
<div
class=
"cell-box"
>
<div
class=
"cell-box"
>
<el-select
v-model=
"formData.type"
placeholder=
"无"
class=
"cell-select"
>
<el-select
v-model=
"formData.type"
placeholder=
"无"
class=
"cell-select"
@
change=
"typeChang"
>
<el-option
v-for=
"item in dict.home_setting"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
<el-option
v-for=
"item in dict.home_setting"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-select>
</div>
</div>
...
@@ -83,6 +83,44 @@
...
@@ -83,6 +83,44 @@
/>
/>
</div>
</div>
</el-form-item>
</el-form-item>
<el-form-item
label=
"封面与LOGO:"
class=
"form-cell"
prop=
"partnerLogo"
>
<div
class=
"cell-box"
>
<ul
class=
"el-upload-list el-upload-list--picture-card"
style=
"float: left"
>
<li
v-for=
"(item, index) in imgList"
:key=
"index"
tabindex=
"0"
class=
"el-upload-list__item is-success"
>
<img
:src=
"imgSrcStart+item"
class=
"el-upload-list__item-thumbnail"
>
<label
class=
"el-upload-list__item-status-label"
><i
class=
"el-icon-upload-success el-icon-check"
/></label>
<span
class=
"el-upload-list__item-actions"
>
<span
class=
"el-upload-list__item-preview"
@
click=
"dialogImgUrl=item;dialogImgVisible=true"
><i
class=
"el-icon-zoom-in"
/></span>
<span
class=
"el-upload-list__item-delete"
@
click=
"handleRemoveImg(item)"
><i
class=
"el-icon-delete"
/></span>
</span>
</li>
</ul>
<el-dialog
append-to-body
:visible.sync=
"dialogImgVisible"
>
<img
width=
"100%"
:src=
"imgSrcStart+dialogImgUrl"
>
</el-dialog>
<el-upload
ref=
"uploadCom"
action=
"/api/bsw/common/uploadPicture"
name=
"multipartFile"
:data=
"
{mark:'logo'}"
list-type="picture-card"
:headers="uploadHeaders"
:limit="1"
:on-exceed="handleExceed"
:on-success="handleImported"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
>
<div
slot=
"trigger"
@
click=
"handlePushClick($event)"
>
<i
class=
"el-icon-plus"
/>
</div>
</el-upload>
<el-dialog
append-to-body
:visible.sync=
"dialogImageVisible"
>
<img
width=
"100%"
:src=
"dialogImageUrl"
>
</el-dialog>
</div>
<div
style=
"display: none;clear: both"
>
{{
formData
.
partnerLogo
}}
</div>
</el-form-item>
<el-form-item
label=
"是否设置为钻石供应商:"
class=
"form-cell"
prop=
"diamondSupplier"
>
<el-form-item
label=
"是否设置为钻石供应商:"
class=
"form-cell"
prop=
"diamondSupplier"
>
<div
class=
"cell-box"
>
<div
class=
"cell-box"
>
<el-radio-group
v-model=
"formData.diamondSupplier"
size=
"mini"
>
<el-radio-group
v-model=
"formData.diamondSupplier"
size=
"mini"
>
...
@@ -271,6 +309,28 @@
...
@@ -271,6 +309,28 @@
</div>
</div>
</el-form-item>
</el-form-item>
</div>
</div>
<div
v-if=
"formData.type>=8"
>
<el-form-item
label=
"操作名称:"
class=
"form-cell"
prop=
"operationName"
>
<div
class=
"cell-box"
>
<el-input
v-model=
"formData.operationName"
placeholder=
"单行输入"
class=
"cell-input"
/>
</div>
</el-form-item>
<el-form-item
label=
"频道名称:"
class=
"form-cell"
prop=
"channelName"
>
<div
class=
"cell-box"
>
<el-input
v-model=
"formData.channelName"
placeholder=
"单行输入"
class=
"cell-input"
/>
</div>
</el-form-item>
<el-form-item
label=
"富文本内容:"
class=
"form-cell"
prop=
"content"
>
<div
class=
"cell-box"
>
<div
ref=
"editor"
class=
"editor"
/>
</div>
</el-form-item>
<el-form-item
label=
"顺序:"
class=
"form-cell"
prop=
"operatingPeriod"
>
<div
class=
"cell-box"
>
<el-input
v-model.number=
"formData.sort"
type=
"number"
placeholder=
"请输入数字"
class=
"cell-input"
/>
</div>
</el-form-item>
</div>
</el-form>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: center"
>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: center"
>
<el-button
@
click=
"cancelView"
>
关闭
</el-button>
<el-button
@
click=
"cancelView"
>
关闭
</el-button>
...
@@ -283,6 +343,9 @@
...
@@ -283,6 +343,9 @@
<
script
>
<
script
>
import
{
getToken
}
from
'
@/utils/auth
'
import
{
getToken
}
from
'
@/utils/auth
'
import
{
HttpReq
}
from
'
@/api/common
'
import
{
HttpReq
}
from
'
@/api/common
'
import
{
mapGetters
}
from
'
vuex
'
import
{
upload
}
from
'
@/utils/upload
'
import
E
from
'
wangeditor
'
export
default
{
export
default
{
dicts
:
[
'
home_setting
'
,
'
home_setting_2
'
,
'
home_setting_5
'
,
'
product_type
'
],
dicts
:
[
'
home_setting
'
,
'
home_setting_2
'
,
'
home_setting_5
'
,
'
product_type
'
],
...
@@ -324,12 +387,45 @@ export default {
...
@@ -324,12 +387,45 @@ export default {
rules
:
{}
rules
:
{}
}
}
},
},
mounted
()
{
computed
:
{
this
.
$nextTick
(()
=>
{
...
mapGetters
([
'
imagesUploadApi
'
,
})
'
baseApi
'
])
},
},
mounted
()
{},
methods
:
{
methods
:
{
typeChang
()
{
if
(
this
.
formData
.
type
>=
8
)
{
this
.
$nextTick
(()
=>
{
if
(
!
this
.
editor
)
{
const
_this
=
this
const
editor
=
new
E
(
this
.
$refs
.
editor
)
editor
.
config
.
zIndex
=
5
editor
.
config
.
customUploadImg
=
function
(
files
,
insert
)
{
files
.
forEach
(
image
=>
{
upload
(
_this
.
imagesUploadApi
,
image
).
then
(
res
=>
{
const
data
=
res
.
data
const
url
=
_this
.
baseApi
+
'
/file/
'
+
data
.
type
+
'
/
'
+
data
.
realName
insert
(
url
)
})
})
}
editor
.
config
.
onchange
=
(
html
)
=>
{
this
.
formData
.
content
=
html
}
editor
.
create
()
this
.
editor
=
editor
}
this
.
editor
.
txt
.
html
(
this
.
formData
.
content
)
})
}
else
{
if
(
this
.
editor
)
{
this
.
editor
.
txt
.
clear
()
this
.
editor
=
null
}
}
},
checkEnterpriseName
(
rule
,
value
,
callback
)
{
checkEnterpriseName
(
rule
,
value
,
callback
)
{
this
.
$nextTick
(
_
=>
{
this
.
$nextTick
(
_
=>
{
HttpReq
.
backstageApi
.
checkEnterpriseName
({
HttpReq
.
backstageApi
.
checkEnterpriseName
({
...
@@ -360,6 +456,10 @@ export default {
...
@@ -360,6 +456,10 @@ export default {
if
(
this
.
$refs
.
uploadCom
)
{
if
(
this
.
$refs
.
uploadCom
)
{
this
.
$refs
.
uploadCom
.
clearFiles
()
this
.
$refs
.
uploadCom
.
clearFiles
()
}
}
if
(
this
.
editor
)
{
this
.
editor
.
txt
.
clear
()
this
.
editor
=
null
}
this
.
$refs
.
formViewRef
.
resetFields
()
this
.
$refs
.
formViewRef
.
resetFields
()
this
.
imgList
=
[]
this
.
imgList
=
[]
this
.
formData
=
{
this
.
formData
=
{
...
@@ -454,6 +554,9 @@ export default {
...
@@ -454,6 +554,9 @@ export default {
if
(
this
.
formData
.
partnerLogo
)
{
if
(
this
.
formData
.
partnerLogo
)
{
this
.
imgList
=
this
.
formData
.
partnerLogo
.
split
(
'
;
'
)
this
.
imgList
=
this
.
formData
.
partnerLogo
.
split
(
'
;
'
)
}
}
if
(
this
.
formData
.
type
>=
8
)
{
this
.
typeChang
()
}
}
else
{
}
else
{
this
.
$message
({
this
.
$message
({
message
:
res
.
msg
,
message
:
res
.
msg
,
...
@@ -524,6 +627,10 @@ export default {
...
@@ -524,6 +627,10 @@ export default {
</
script
>
</
script
>
<
style
rel=
"stylesheet/scss"
lang=
"scss"
scoped
>
<
style
rel=
"stylesheet/scss"
lang=
"scss"
scoped
>
.editor
{
text-align
:left
;
width
:
580px
;
}
.cell-box
{
.cell-box
{
min-width
:
120px
;
min-width
:
120px
;
.cell-input
{
.cell-input
{
...
...
This diff is collapsed.
Click to expand it.
src/views/backstage/contentMgt/homePage/view.vue
View file @
84909063
...
@@ -84,6 +84,23 @@
...
@@ -84,6 +84,23 @@
/>
/>
</div>
</div>
</el-form-item>
</el-form-item>
<el-form-item
label=
"封面与LOGO:"
class=
"form-cell"
prop=
"partnerLogo"
>
<div
class=
"cell-box"
>
<ul
class=
"el-upload-list el-upload-list--picture-card"
style=
"float: left"
>
<li
v-for=
"(item, index) in imgList"
:key=
"index"
tabindex=
"0"
class=
"el-upload-list__item is-success"
>
<img
:src=
"imgSrcStart+item"
class=
"el-upload-list__item-thumbnail"
>
<label
class=
"el-upload-list__item-status-label"
><i
class=
"el-icon-upload-success el-icon-check"
/></label>
<span
class=
"el-upload-list__item-actions"
>
<span
class=
"el-upload-list__item-preview"
@
click=
"dialogImgUrl=item;dialogImgVisible=true"
><i
class=
"el-icon-zoom-in"
/></span>
</span>
</li>
</ul>
<el-dialog
append-to-body
:visible.sync=
"dialogImgVisible"
>
<img
width=
"100%"
:src=
"imgSrcStart+dialogImgUrl"
>
</el-dialog>
</div>
<div
style=
"display: none;clear: both"
>
{{
formData
.
partnerLogo
}}
</div>
</el-form-item>
<el-form-item
label=
"是否设置为钻石供应商:"
class=
"form-cell"
prop=
"diamondSupplier"
>
<el-form-item
label=
"是否设置为钻石供应商:"
class=
"form-cell"
prop=
"diamondSupplier"
>
<div
class=
"cell-box"
>
<div
class=
"cell-box"
>
<el-radio-group
v-model=
"formData.diamondSupplier"
disabled
size=
"mini"
>
<el-radio-group
v-model=
"formData.diamondSupplier"
disabled
size=
"mini"
>
...
@@ -251,6 +268,28 @@
...
@@ -251,6 +268,28 @@
</div>
</div>
</el-form-item>
</el-form-item>
</div>
</div>
<div
v-if=
"formData.type>=8"
>
<el-form-item
label=
"操作名称:"
class=
"form-cell"
prop=
"operationName"
>
<div
class=
"cell-box"
>
<el-input
v-model=
"formData.operationName"
disabled
placeholder=
"单行输入"
class=
"cell-input"
/>
</div>
</el-form-item>
<el-form-item
label=
"频道名称:"
class=
"form-cell"
prop=
"channelName"
>
<div
class=
"cell-box"
>
<el-input
v-model=
"formData.channelName"
disabled
placeholder=
"单行输入"
class=
"cell-input"
/>
</div>
</el-form-item>
<el-form-item
label=
"富文本内容:"
class=
"form-cell"
prop=
"content"
>
<div
class=
"cell-box"
>
<div
style=
"width: 580px"
v-html=
"formData.content"
/>
</div>
</el-form-item>
<el-form-item
label=
"顺序:"
class=
"form-cell"
prop=
"operatingPeriod"
>
<div
class=
"cell-box"
>
<el-input
v-model.number=
"formData.sort"
disabled
type=
"number"
placeholder=
"请输入数字"
class=
"cell-input"
/>
</div>
</el-form-item>
</div>
</el-form>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: center"
>
<div
slot=
"footer"
class=
"dialog-footer"
style=
"text-align: center"
>
<el-button
@
click=
"cancelView"
>
关闭
</el-button>
<el-button
@
click=
"cancelView"
>
关闭
</el-button>
...
...
This diff is collapsed.
Click to expand it.
src/views/homepage/components/homeFooter.vue
View file @
84909063
...
@@ -5,9 +5,10 @@
...
@@ -5,9 +5,10 @@
<el-col
v-for=
"(item,index) in dataList"
:key=
"index"
:span=
"4"
>
<el-col
v-for=
"(item,index) in dataList"
:key=
"index"
:span=
"4"
>
<div
class=
"title-s"
>
{{
item
.
name
}}
</div>
<div
class=
"title-s"
>
{{
item
.
name
}}
</div>
<div
v-for=
"(t,i) in item.list"
:key=
"'lb_'+i"
class=
"label"
:title=
"t.name"
>
<div
v-for=
"(t,i) in item.list"
:key=
"'lb_'+i"
class=
"label"
:title=
"t.name"
>
<a
:href=
"t.url||'http://www.minestar.cn'"
target=
"_blank"
>
<a
v-if=
"t.url"
:href=
"t.url||'http://www.minestar.cn'"
target=
"_blank"
>
{{
t
.
name
}}
{{
t
.
name
}}
</a>
</a>
<div
v-else
class=
"touch"
@
click=
"linkClick(t)"
>
{{
t
.
name
}}
</div>
</div>
</div>
</el-col>
</el-col>
</el-row>
</el-row>
...
@@ -41,9 +42,9 @@ export default {
...
@@ -41,9 +42,9 @@ export default {
{
{
name
:
'
联系我们
'
,
name
:
'
联系我们
'
,
list
:
[
list
:
[
{
name
:
'
提供建议
'
,
url
:
'
'
},
{
name
:
'
提供建议
'
,
leaveWordUrl
:
'
/footer/opinion
'
},
{
name
:
'
我要合作
'
,
url
:
'
'
},
{
name
:
'
我要合作
'
,
leaveWordUrl
:
'
/footer/cooperate
'
},
{
name
:
'
联系方式
'
,
url
:
''
}
{
name
:
'
联系方式
'
}
]
]
},
},
{
{
...
@@ -58,22 +59,54 @@ export default {
...
@@ -58,22 +59,54 @@ export default {
},
},
mounted
()
{
mounted
()
{
this
.
$nextTick
(()
=>
{
this
.
$nextTick
(()
=>
{
HttpReq
.
webClientApi
.
homePageGet
FriendshipUrl
({
HttpReq
.
webClientApi
.
homePageGet
BottomNavigation
({
preview
:
false
preview
:
false
}).
then
((
res
)
=>
{
}).
then
((
res
)
=>
{
this
.
dataList
.
push
({
this
.
dataList
=
[
name
:
'
友情链接
'
,
{
list
:
res
.
data
.
friendshipUrl
name
:
'
用户指南
'
,
})
list
:
res
.
data
.
userGuide
},
{
name
:
'
关于我们
'
,
list
:
res
.
data
.
aboutUs
},
{
name
:
'
联系我们
'
,
list
:
[
{
name
:
'
提供建议
'
,
leaveWordUrl
:
'
/footer/opinion
'
},
{
name
:
'
我要合作
'
,
leaveWordUrl
:
'
/footer/cooperate
'
},
...
res
.
data
.
commonQuestions
]
},
{
name
:
'
常见问题
'
,
list
:
res
.
data
.
contactUs
},
{
name
:
'
友情链接
'
,
list
:
res
.
data
.
friendshipUrl
}
]
})
})
})
})
},
},
methods
:
{
methods
:
{
click
()
{}
linkClick
(
item
)
{
if
(
item
.
leaveWordUrl
)
{
this
.
$router
.
push
({
path
:
item
.
leaveWordUrl
})
}
else
{
this
.
$router
.
push
({
path
:
`/footer/about/
${
item
.
id
}
`
})
}
}
}
}
}
}
</
script
>
</
script
>
<
style
rel=
"stylesheet/scss"
lang=
"scss"
scoped
>
<
style
rel=
"stylesheet/scss"
lang=
"scss"
scoped
>
.touch
{
cursor
:pointer
;
}
.footer-content
{
.footer-content
{
width
:
100%
;
width
:
100%
;
height
:
267px
;
height
:
267px
;
...
...
This diff is collapsed.
Click to expand it.
src/views/homepage/footer/cooperate.vue
0 → 100644
View file @
84909063
<
template
>
<div
class=
"page-body"
>
<div
class=
"head-box"
>
<div
class=
"head-box-top"
>
<div
class=
"top-call"
/>
<div
class=
"top-call"
><img
src=
"@/assets/home_images/gemho_logo_b.png"
></div>
<div
class=
"top-call"
><title-menus
ref=
"titleMenus"
menu-index=
"7"
style=
"padding-top: 15px"
/></div>
<div
class=
"top-call"
><user-login
ref=
"userLogin"
/></div>
<div
class=
"top-call"
><language-setting
ref=
"languageSetting"
/></div>
</div>
</div>
<div
class=
"content-box"
>
<div
style=
"width: 88%;padding-left: 9%;"
>
<div
class=
"showcase"
>
<el-breadcrumb
separator-class=
"el-icon-arrow-right"
>
<el-breadcrumb-item
:to=
"
{ path: '/home' }">首页
</el-breadcrumb-item>
<el-breadcrumb-item>
我要合作
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<!--我要留言-->
<div
class=
"page-title"
>
我要合作
</div>
<div
class=
"form-table-box"
>
<el-form
ref=
"formViewRef"
:model=
"formData"
:rules=
"rules"
:status-icon=
"true"
label-width=
"240px"
>
<el-form-item
label=
"留言内容类型:"
class=
"form-cell"
prop=
"consultType"
>
<div
class=
"cell-box"
>
<el-select
v-model=
"formData.consultType"
disabled
placeholder=
"产品大类"
style=
"width: 300px"
>
<el-option
label=
"深度合作"
value=
"8"
/>
<el-option
label=
"采购其它"
value=
"9"
/>
<el-option
label=
"其它问题"
value=
"10"
/>
</el-select>
</div>
</el-form-item>
<el-form-item
label=
"标题:"
class=
"form-cell"
prop=
"title"
>
<div
class=
"cell-box"
>
<el-input
v-model=
"formData.title"
placeholder=
"请输入产品名称"
class=
"cell-input"
/>
</div>
</el-form-item>
<el-form-item
label=
"内容:"
class=
"form-cell"
prop=
"consultationContent"
>
<div
class=
"cell-box"
>
<el-input
v-model=
"formData.consultationContent"
type=
"textarea"
placeholder=
"请输入文本内容"
maxlength=
"1000"
:autosize=
"
{ minRows: 12, maxRows: 12}" show-word-limit resize="none" class="cell-input" />
</div>
</el-form-item>
<el-form-item
label=
"联系方式:"
required
class=
"form-cell"
>
<div
class=
"cell-box"
style=
"max-width: 600px"
>
<el-row>
<el-col
:span=
"10"
class=
"grid-content"
>
<div
class=
"grid-label"
>
联系人
</div>
</el-col>
<el-col
:span=
"14"
class=
"grid-content"
>
<el-form-item
prop=
"contactPerson"
style=
"margin: 0"
>
<el-input
v-model=
"formData.contactPerson"
placeholder=
"请留下姓名"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"10"
class=
"grid-content"
>
<div
class=
"grid-label"
>
联系电话
</div>
</el-col>
<el-col
:span=
"14"
class=
"grid-content"
>
<el-form-item
prop=
"contactPersonPhone"
style=
"margin: 0"
>
<el-input
v-model=
"formData.contactPersonPhone"
placeholder=
"请留下联系电话"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"10"
class=
"grid-content"
>
<div
class=
"grid-label"
>
电子邮箱
</div>
</el-col>
<el-col
:span=
"14"
class=
"grid-content"
>
<el-input
v-model=
"formData.contactPersonEmail"
placeholder=
"请留下电子邮箱"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"10"
class=
"grid-content"
>
<div
class=
"grid-label"
>
联系地址
</div>
</el-col>
<el-col
:span=
"14"
class=
"grid-content"
>
<el-input
v-model=
"formData.contactPersonDetailAddress"
placeholder=
"请留下联系地址"
/>
</el-col>
</el-row>
</div>
</el-form-item>
</el-form>
<div
style=
"width: 100%;text-align: center"
>
<el-button
@
click=
"cancelView"
>
返回
</el-button>
<el-button
type=
"primary"
@
click=
"openTip()"
>
提交
</el-button>
</div>
</div>
</div>
</div>
<home-footer
ref=
"homeFooter"
/>
<el-backtop
/>
</div>
</
template
>
<
script
>
import
titleMenus
from
'
../components/titleMenusV2
'
import
userLogin
from
'
../components/userLoginV2
'
import
languageSetting
from
'
../components/languageSettingV2
'
import
homeFooter
from
'
../components/homeFooter
'
import
{
getToken
}
from
'
@/utils/auth
'
import
{
HttpReq
}
from
'
@/api/common
'
export
default
{
components
:
{
titleMenus
,
userLogin
,
languageSetting
,
homeFooter
},
dicts
:
[],
data
()
{
return
{
title
:
''
,
uploadHeaders
:
{
'
Authorization
'
:
getToken
()
},
imgSrcStart
:
process
.
env
.
VUE_APP_BASE_API
,
editor
:
false
,
// 富文本对象
dialogImageUrl
:
''
,
dialogImageVisible
:
false
,
visible
:
false
,
tagTypes
:
[
''
,
'
primary
'
,
'
success
'
,
'
warning
'
,
'
danger
'
,
'
info
'
,
'
info
'
,
'
info
'
],
productTypeOpts
:
[],
productSubTypeOpts
:
[],
inputVisible
:
false
,
inputValue
:
''
,
productFeature
:
[],
// 产品特点tag列表
formData
:
{
title
:
''
,
// 标题
consultType
:
'
8
'
,
// 留言类型
consultationContent
:
''
,
// 需求说明
contactPerson
:
''
,
// 联系人
contactPersonPhone
:
''
,
// 电话
contactPersonEmail
:
''
,
// 邮箱
contactPersonDetailAddress
:
''
,
// 地址
rank
:
'
1
'
// 产品品级
},
rules
:
{
consultType
:
{
required
:
true
,
message
:
'
请选择留言类型
'
,
trigger
:
'
blur
'
},
title
:
{
required
:
true
,
message
:
'
请填写标题
'
,
trigger
:
'
blur
'
},
consultationContent
:
{
required
:
true
,
message
:
'
请填写留言内容
'
,
trigger
:
'
blur
'
},
contactPerson
:
{
required
:
true
,
message
:
'
请留下姓名
'
,
trigger
:
'
blur
'
},
contactPersonPhone
:
{
required
:
true
,
message
:
'
请留下联系电话
'
,
trigger
:
'
blur
'
}
}
}
},
mounted
()
{
this
.
$nextTick
(()
=>
{
})
},
methods
:
{
onDictReady
(
dict
)
{
},
cancelView
()
{
this
.
$router
.
push
({
path
:
`/home`
})
},
openTip
()
{
this
.
$alert
(
'
我们收到了您的留言讯息,稍后将与您联系。
'
,
'
完成
'
,
{
confirmButtonText
:
'
确定
'
,
type
:
'
success
'
,
showClose
:
false
,
center
:
true
,
callback
:
action
=>
{
this
.
cancelView
()
}
})
},
submitForm
()
{
this
.
$refs
.
formViewRef
.
validate
(
valid
=>
{
if
(
valid
)
{
HttpReq
.
backstageApi
.
addProduct
(
this
.
formData
).
then
((
res
)
=>
{
this
.
$notify
({
title
:
res
.
msg
,
type
:
'
success
'
,
duration
:
2500
})
if
(
res
.
code
===
200
)
{
alert
(
666
)
}
})
}
else
{
this
.
$message
({
message
:
'
表单信息有误,请核对无误后提交!
'
,
type
:
'
error
'
})
}
})
},
loadData
()
{
}
}
}
</
script
>
<
style
rel=
"stylesheet/scss"
lang=
"scss"
scoped
>
.touch
{
cursor
:pointer
;
}
.clear
{
clear
:
both
}
.inline-block
{
display
:
inline-block
;
}
.ellipsis
{
display
:
-
webkit-box
;
-webkit-box-orient
:
vertical
;
overflow
:
hidden
;
-webkit-line-clamp
:
2
;
text-overflow
:
ellipsis
;
}
.showcase
{
padding
:
1px
0
;
font-size
:
20px
;
font-family
:
Source
Han
Sans
CN
;
font-weight
:
400
;
}
.form-table-box
{
width
:
1080px
;
margin
:
20px
auto
;
padding
:
30px
;
border
:
1px
solid
rgba
(
0
,
0
,
0
,
0
.12
);
box-shadow
:
1px
2px
8px
0
rgba
(
0
,
0
,
0
,
0
.12
);
border-radius
:
10px
;
}
.head-box
{
width
:
100vw
;
top
:
0
;
position
:
fixed
;
background
:
none
repeat
scroll
0
0
white
;
z-index
:
999
;
box-shadow
:
0px
3px
7px
0px
rgba
(
0
,
0
,
0
,
0
.2
);
.head-box-top
{
display
:
flex
;
justify-content
:
space-evenly
;
align-items
:
center
;
.top-call
{
height
:
80px
;
padding-top
:
15px
;
}
}
}
.content-box
{
min-height
:
70vh
;
margin-top
:
94px
;
font-family
:
Source
Han
Sans
CN
;
user-select
:
none
;
.page-title
{
margin-top
:
20px
;
padding
:
0
20px
;
font-size
:
26px
;
font-weight
:
bold
;
color
:
#333333
;
}
}
.line-btn
{
display
:
flex
;
justify-content
:
center
;
font-family
:
Source
Han
Sans
CN
;
font-weight
:
400
;
.btn-o
{
margin
:
0
25px
;
width
:
360px
;
padding
:
6px
10px
;
background
:
#F7601A
;
box-shadow
:
0
3px
6px
0
rgba
(
0
,
0
,
0
,
0
.2
);
text-align
:
center
;
border
:
1px
solid
transparent
;
font-size
:
22px
;
color
:
#FFFFFF
;
cursor
:pointer
;
user-select
:
none
;
}
.btn-o
:hover
{
border
:
1px
solid
rgba
(
30
,
144
,
255
,
0
.8
);
color
:
#1482f0
;
}
.btn-l
{
margin
:
0
25px
;
width
:
360px
;
padding
:
10px
;
background
:
#1961C5
;
box-shadow
:
0
3px
6px
0
rgba
(
0
,
0
,
0
,
0
.2
);
text-align
:
center
;
border
:
1px
solid
transparent
;
font-size
:
22px
;
color
:
#FFFFFF
;
cursor
:pointer
;
user-select
:
none
;
}
.btn-l
:hover
{
border
:
1px
solid
rgba
(
0
,
0
,
0
,
0
.3
);
color
:
#F7601A
;
}
.btn-b
{
margin
:
0
10px
;
width
:
168px
;
padding
:
6px
;
background
:
#EFF6FF
;
border
:
1px
solid
transparent
;
box-shadow
:
0
1px
2px
0
rgba
(
0
,
0
,
0
,
0
.2
);
text-align
:
center
;
font-size
:
20px
;
color
:
#1961C5
;
cursor
:pointer
;
user-select
:
none
;
}
.btn-b
:hover
{
border
:
1px
solid
rgba
(
30
,
144
,
255
,
0
.9
);
}
.active
{
color
:
#FFFFFF
;
font-weight
:
400
;
background
:
#1961C5
;
}
}
.grid-content
{
border
:
1px
solid
rgba
(
100
,
100
,
100
,
0
.3
);
padding
:
0
;
}
.grid-label
{
background
:
#dedede
;
padding
:
0
10px
;
}
.editor
{
text-align
:left
;
width
:
680px
;
}
::v-deep
.w-e-text-container
{
height
:
560px
!
important
;
}
.cell-box
{
min-width
:
120px
;
.cell-input
{
width
:
620px
;
}
.cell-select
{
width
:
320px
;
}
.el-tag
+
.el-tag
{
margin-left
:
10px
;
}
.button-new-tag
{
margin-left
:
10px
;
height
:
28px
;
line-height
:
24px
;
padding
:
0
8px
;
}
.input-new-tag
{
width
:
140px
;
height
:
28px
;
margin-left
:
10px
;
vertical-align
:
bottom
;
}
>>>
.el-input__inner
{
border
:
1px
solid
rgba
(
100
,
100
,
100
,
0
.1
);
border-bottom
:
1px
solid
rgba
(
100
,
100
,
100
,
0
.2
);
border-radius
:
5px
;
}
>>>
.el-input.is-disabled
.el-input__inner
{
border-radius
:
0
;
border
:
0
;
border-bottom
:
1px
solid
rgba
(
100
,
100
,
100
,
0
.4
);
background
:
white
;
cursor
:
text
;
}
>>>
.el-input.is-disabled
.el-input__icon
{
cursor
:
text
;
}
>>>
.el-icon-circle-check
{
color
:
#13ce66
;
}
>>>
.el-icon-arrow-up
:before
{
content
:
''
;
}
}
</
style
>
This diff is collapsed.
Click to expand it.
src/views/homepage/footer/index.vue
0 → 100644
View file @
84909063
<
template
>
<div
class=
"page-body"
>
<div
class=
"head-box"
>
<div
class=
"head-box-top"
>
<div
class=
"top-call"
/>
<div
class=
"top-call"
><img
src=
"@/assets/home_images/gemho_logo_b.png"
></div>
<div
class=
"top-call"
><title-menus
ref=
"titleMenus"
menu-index=
"7"
style=
"padding-top: 15px"
/></div>
<div
class=
"top-call"
><user-login
ref=
"userLogin"
/></div>
<div
class=
"top-call"
><language-setting
ref=
"languageSetting"
/></div>
</div>
</div>
<div
class=
"content-box"
>
<div
style=
"width: 88%;padding-left: 9%;"
>
<div
class=
"showcase"
>
<el-breadcrumb
separator-class=
"el-icon-arrow-right"
>
<el-breadcrumb-item
:to=
"
{ path: '/home' }">首页
</el-breadcrumb-item>
<el-breadcrumb-item>
{{
formData
.
channelName
}}
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<div
class=
"page-title"
>
{{
formData
.
channelName
}}
</div>
<div
v-html=
"formData.content"
/>
</div>
</div>
<home-footer
ref=
"homeFooter"
/>
<inquiry-view
ref=
"inquiryView"
/>
<el-backtop
/>
</div>
</
template
>
<
script
>
import
default_system
from
'
@/assets/home_images/default_system.png
'
import
titleMenus
from
'
../components/titleMenusV2
'
import
userLogin
from
'
../components/userLoginV2
'
import
languageSetting
from
'
../components/languageSettingV2
'
import
homeFooter
from
'
../components/homeFooter
'
import
inquiryView
from
'
../components/inquiryView
'
import
{
HttpReq
}
from
'
@/api/common
'
export
default
{
components
:
{
titleMenus
,
userLogin
,
languageSetting
,
homeFooter
,
inquiryView
},
dicts
:
[],
data
()
{
return
{
defaultImgSystem
:
default_system
,
imgSrcStart
:
process
.
env
.
VUE_APP_BASE_API
,
formData
:
{
channelName
:
''
,
// 频道名称
url
:
''
,
// 链接
content
:
''
,
// 内容
homePageId
:
null
},
throttle
:
null
,
// 节流器
throttleTime
:
300
}
},
watch
:
{
$route
()
{
location
.
reload
()
}
},
mounted
()
{
this
.
$nextTick
(()
=>
{
HttpReq
.
backstageApi
.
queryHomePageById
({
homePageId
:
this
.
$route
.
params
.
id
}).
then
((
res
)
=>
{
if
(
res
.
code
===
200
)
{
this
.
formData
=
Object
.
assign
(
this
.
formData
,
res
.
data
)
}
else
{
this
.
$message
({
message
:
res
.
msg
,
type
:
'
error
'
})
}
})
})
},
methods
:
{
onDictReady
(
dict
)
{
},
setQuertType
(
type
)
{
if
(
type
===
this
.
query
.
type
)
{
this
.
query
.
sort
=
!
this
.
query
.
sort
}
else
{
this
.
query
.
type
=
type
this
.
query
.
sort
=
false
}
},
// 点击询价
inquiry
(
item
,
type
)
{
console
.
log
(
item
,
type
)
this
.
$refs
.
inquiryView
.
initView
(
item
.
id
,
type
)
},
// 跳转到详情
goToDetails
(
item
,
type
)
{
console
.
log
(
item
,
type
)
},
pageChange
(
e
)
{
this
.
page
=
e
this
.
loadData
()
},
loadData
()
{
},
goTop
()
{
document
.
body
.
scrollTop
=
0
document
.
documentElement
.
scrollTop
=
0
}
}
}
</
script
>
<
style
rel=
"stylesheet/scss"
lang=
"scss"
scoped
>
.touch
{
cursor
:pointer
;
}
.clear
{
clear
:
both
}
.inline-block
{
display
:
inline-block
;
}
.ellipsis
{
// 多行溢出省略号
display
:
-
webkit-box
;
-webkit-box-orient
:
vertical
;
overflow
:
hidden
;
-webkit-line-clamp
:
2
;
text-overflow
:
ellipsis
;
}
// 分页 前文字+分页
.pagination
{
margin-top
:
23px
;
text-align
:
center
;
padding
:
10px
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
>>>
.el-pagination.is-background
.el-pager
li
{
font-style
:
normal
;
font-weight
:
400
;
font-size
:
14px
;
text-align
:
center
;
background-color
:
#fff
;
color
:
#000000
;
border
:
1px
solid
#e5e5ea
;
}
/* 激活后的样式 */
>>>
.el-pagination.is-background
.el-pager
li
:not
(
.disabled
)
.active
{
background-color
:
#ffffff
;
color
:
#0366ed
;
border
:
1px
solid
#0366ed
;
text-align
:
center
;
}
/* 修改左右箭头样式 */
>>>
.el-pagination
.btn-next
.el-icon
,
>>>
.el-pagination
.btn-prev
.el-icon
{
font-style
:
normal
;
font-weight
:
400
;
font-size
:
14px
;
text-align
:
center
;
background-color
:
#fff
;
color
:
#e5e5ea
;
border
:
1px
solid
#e5e5ea
;
}
>>>
.el-pager
{
height
:
35
.5px
!
important
;
}
>>>
.number
,
>>>
.el-icon
{
height
:
35
.5px
!
important
;
line-height
:
35
.5px
!
important
;
}
}
.head-box
{
width
:
100vw
;
top
:
0
;
position
:
fixed
;
background
:
none
repeat
scroll
0
0
white
;
z-index
:
999
;
box-shadow
:
0px
3px
7px
0px
rgba
(
0
,
0
,
0
,
0
.2
);
.head-box-top
{
display
:
flex
;
justify-content
:
space-evenly
;
align-items
:
center
;
.top-call
{
height
:
80px
;
padding-top
:
15px
;
}
}
}
.content-box
{
min-height
:
70vh
;
margin-top
:
94px
;
font-family
:
Source
Han
Sans
CN
;
user-select
:
none
;
.page-title
{
margin-top
:
20px
;
padding
:
0
20px
;
font-size
:
26px
;
font-weight
:
bold
;
color
:
#333333
;
}
.box-card
{
display
:
inline-block
;
position
:
relative
;
margin
:
12px
;
padding
:
10px
0
;
width
:
350px
;
background
:
#FFFFFF
;
border
:
1px
solid
rgba
(
0
,
0
,
0
,
0
.12
);
box-shadow
:
1px
2px
8px
0
rgba
(
0
,
0
,
0
,
0
.12
);
border-radius
:
10px
;
.line-text
{
width
:
100%
;
text-align
:
center
;
padding
:
5px
;
font-size
:
18px
;
font-weight
:
bolder
;
opacity
:
0
.85
;
}
.line-text
:hover
{
opacity
:
1
;
}
.float-title
{
width
:
344px
;
position
:
absolute
;
padding
:
5px
;
top
:
200px
;
left
:
2px
;
text-align
:
center
;
font-weight
:
600
;
color
:
#fff
;
background
:
rgba
(
0
,
0
,
0
,
0
.6
);
opacity
:
0
.9
;
}
.float-title
:hover
{
opacity
:
1
;
}
.title
{
width
:
305px
;
padding
:
2px
20px
;
font-size
:
18px
;
color
:
#333333
;
overflow
:hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
-o-text-overflow
:ellipsis
;
}
.title
:hover
{
font-weight
:
600
;
}
.subTitle
{
width
:
260px
;
padding
:
2px
20px
;
font-size
:
15px
;
color
:
#1961C5
;
overflow
:hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
-o-text-overflow
:ellipsis
;
}
.area
{
padding
:
2px
0
;
font-size
:
17px
;
color
:
#666666
;
}
.date
{
padding
:
2px
10px
;
font-size
:
17px
;
color
:
#999999
;
}
.stamp
{
border-style
:
none
;
position
:
absolute
;
z-index
:
99
;
}
}
}
.search-box
{
padding-top
:
12px
;
width
:
100%
;
font-family
:
Source
Han
Sans
CN
;
font-weight
:
400
;
color
:
#666666
;
user-select
:
none
;
.search-item
{
width
:
100%
;
height
:
38px
;
display
:
inline-block
;
padding
:
8px
20px
;
background
:
#F7F7F7
;
border
:
1px
solid
rgba
(
0
,
0
,
0
,
0
.12
);
overflow
:hidden
;
white-space
:
nowrap
;
text-overflow
:
ellipsis
;
-o-text-overflow
:ellipsis
;
.label
:hover
{
font-weight
:
600
;
}
.btn
{
width
:
74px
;
padding
:
3px
;
margin-left
:
12px
;
display
:
inline-block
;
background
:
#1961C5
;
border-radius
:
6px
;
color
:
white
;
text-align
:
center
;
opacity
:
0
.7
;
}
.btn
:hover
{
opacity
:
1
;
}
}
.area-title
{
height
:
62px
;
background
:
#F7F7F7
;
border
:
1px
solid
rgba
(
0
,
0
,
0
,
0
.12
);
text-align
:
center
;
line-height
:
60px
;
}
.area_item
{
height
:
30px
;
padding
:
6px
12px
;
display
:
inline-block
;
}
.area_item
:hover
{
font-weight
:
600
;
}
.active
{
color
:
#1961C5
;
}
.search-tools
{
width
:
100%
;
.btn
{
width
:
76%
;
height
:
38px
;
border
:
2px
solid
#1961C5
;
border-radius
:
8px
;
background
:
#1961C5
;
font-family
:
Source
Han
Sans
CN
;
font-weight
:
400
;
font-size
:
21px
;
color
:
#ffffff
;
opacity
:
0
.7
;
}
.btn
:hover
{
opacity
:
1
;
}
>>>
.el-input__inner
{
height
:
38px
;
border
:
2px
solid
#1961C5
;
border-radius
:
8px
;
font-family
:
Source
Han
Sans
CN
;
font-weight
:
400
;
font-size
:
18px
;
color
:
#333333
;
opacity
:
0
.7
;
}
>>>
.el-input__inner
:hover
{
opacity
:
1
;
}
}
.search-keyword
{
padding
:
5px
0
;
font-family
:
Source
Han
Sans
CN
;
font-weight
:
400
;
font-size
:
14px
;
text-align
:
left
;
.label
{
padding
:
1px
15px
1px
;
color
:
#333333
;
cursor
:pointer
;
user-select
:
none
;
}
.label
:hover
{
color
:
#1961C5
;
}
}
}
.line-btn
{
display
:
flex
;
justify-content
:
center
;
font-family
:
Source
Han
Sans
CN
;
font-weight
:
400
;
.btn-o
{
margin
:
0
25px
;
width
:
360px
;
padding
:
6px
10px
;
background
:
#F7601A
;
box-shadow
:
0
3px
6px
0
rgba
(
0
,
0
,
0
,
0
.2
);
text-align
:
center
;
border
:
1px
solid
transparent
;
font-size
:
22px
;
color
:
#FFFFFF
;
cursor
:pointer
;
user-select
:
none
;
}
.btn-o
:hover
{
border
:
1px
solid
rgba
(
30
,
144
,
255
,
0
.8
);
color
:
#1482f0
;
}
.btn-l
{
margin
:
0
25px
;
width
:
360px
;
padding
:
10px
;
background
:
#1961C5
;
box-shadow
:
0
3px
6px
0
rgba
(
0
,
0
,
0
,
0
.2
);
text-align
:
center
;
border
:
1px
solid
transparent
;
font-size
:
22px
;
color
:
#FFFFFF
;
cursor
:pointer
;
user-select
:
none
;
}
.btn-l
:hover
{
border
:
1px
solid
rgba
(
0
,
0
,
0
,
0
.3
);
color
:
#F7601A
;
}
.btn-b
{
margin
:
0
10px
;
width
:
168px
;
padding
:
6px
;
background
:
#EFF6FF
;
border
:
1px
solid
transparent
;
box-shadow
:
0
1px
2px
0
rgba
(
0
,
0
,
0
,
0
.2
);
text-align
:
center
;
font-size
:
20px
;
color
:
#1961C5
;
cursor
:pointer
;
user-select
:
none
;
}
.btn-b
:hover
{
border
:
1px
solid
rgba
(
30
,
144
,
255
,
0
.9
);
}
.active
{
color
:
#FFFFFF
;
font-weight
:
400
;
background
:
#1961C5
;
}
}
</
style
>
This diff is collapsed.
Click to expand it.
src/views/homepage/footer/opinion.vue
0 → 100644
View file @
84909063
<
template
>
<div
class=
"page-body"
>
<div
class=
"head-box"
>
<div
class=
"head-box-top"
>
<div
class=
"top-call"
/>
<div
class=
"top-call"
><img
src=
"@/assets/home_images/gemho_logo_b.png"
></div>
<div
class=
"top-call"
><title-menus
ref=
"titleMenus"
menu-index=
"7"
style=
"padding-top: 15px"
/></div>
<div
class=
"top-call"
><user-login
ref=
"userLogin"
/></div>
<div
class=
"top-call"
><language-setting
ref=
"languageSetting"
/></div>
</div>
</div>
<div
class=
"content-box"
>
<div
style=
"width: 88%;padding-left: 9%;"
>
<div
class=
"showcase"
>
<el-breadcrumb
separator-class=
"el-icon-arrow-right"
>
<el-breadcrumb-item
:to=
"
{ path: '/home' }">首页
</el-breadcrumb-item>
<el-breadcrumb-item>
提供建议
</el-breadcrumb-item>
</el-breadcrumb>
</div>
<!--提供建议-->
<div
class=
"page-title"
>
提供建议
</div>
<div
class=
"form-table-box"
>
<el-form
ref=
"formViewRef"
:model=
"formData"
:rules=
"rules"
:status-icon=
"true"
label-width=
"240px"
>
<el-form-item
label=
"建议类别:"
class=
"form-cell"
prop=
"title"
>
<div
class=
"cell-box"
>
<el-select
v-model=
"formData.title"
placeholder=
"请选择建议的类别"
style=
"width: 300px"
>
<el-option
label=
"产品功能"
value=
"产品功能"
/>
<el-option
label=
"产品推广"
value=
"产品推广"
/>
<el-option
label=
"售后"
value=
"售后"
/>
<el-option
label=
"业务咨询"
value=
"业务咨询"
/>
<el-option
label=
"平台管理"
value=
"平台管理"
/>
</el-select>
</div>
</el-form-item>
<el-form-item
label=
"内容:"
class=
"form-cell"
prop=
"consultationContent"
>
<div
class=
"cell-box"
>
<el-input
v-model=
"formData.consultationContent"
type=
"textarea"
placeholder=
"请输入文本内容"
maxlength=
"1000"
:autosize=
"
{ minRows: 12, maxRows: 12}" show-word-limit resize="none" class="cell-input" />
</div>
</el-form-item>
<el-form-item
label=
"联系方式:"
required
class=
"form-cell"
>
<div
class=
"cell-box"
style=
"max-width: 600px"
>
<el-row>
<el-col
:span=
"10"
class=
"grid-content"
>
<div
class=
"grid-label"
>
联系人
</div>
</el-col>
<el-col
:span=
"14"
class=
"grid-content"
>
<el-form-item
prop=
"contactPerson"
style=
"margin: 0"
>
<el-input
v-model=
"formData.contactPerson"
placeholder=
"请留下姓名"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"10"
class=
"grid-content"
>
<div
class=
"grid-label"
>
联系电话
</div>
</el-col>
<el-col
:span=
"14"
class=
"grid-content"
>
<el-form-item
prop=
"contactPersonPhone"
style=
"margin: 0"
>
<el-input
v-model=
"formData.contactPersonPhone"
placeholder=
"请留下联系电话"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"10"
class=
"grid-content"
>
<div
class=
"grid-label"
>
电子邮箱
</div>
</el-col>
<el-col
:span=
"14"
class=
"grid-content"
>
<el-input
v-model=
"formData.contactPersonEmail"
placeholder=
"请留下电子邮箱"
/>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"10"
class=
"grid-content"
>
<div
class=
"grid-label"
>
联系地址
</div>
</el-col>
<el-col
:span=
"14"
class=
"grid-content"
>
<el-input
v-model=
"formData.contactPersonDetailAddress"
placeholder=
"请留下联系地址"
/>
</el-col>
</el-row>
</div>
</el-form-item>
</el-form>
<div
style=
"width: 100%;text-align: center"
>
<el-button
@
click=
"cancelView"
>
返回
</el-button>
<el-button
type=
"primary"
@
click=
"openTip()"
>
提交
</el-button>
</div>
</div>
</div>
</div>
<home-footer
ref=
"homeFooter"
/>
<el-backtop
/>
</div>
</
template
>
<
script
>
import
titleMenus
from
'
../components/titleMenusV2
'
import
userLogin
from
'
../components/userLoginV2
'
import
languageSetting
from
'
../components/languageSettingV2
'
import
homeFooter
from
'
../components/homeFooter
'
import
{
getToken
}
from
'
@/utils/auth
'
import
{
HttpReq
}
from
'
@/api/common
'
export
default
{
components
:
{
titleMenus
,
userLogin
,
languageSetting
,
homeFooter
},
dicts
:
[],
data
()
{
return
{
title
:
''
,
uploadHeaders
:
{
'
Authorization
'
:
getToken
()
},
imgSrcStart
:
process
.
env
.
VUE_APP_BASE_API
,
editor
:
false
,
// 富文本对象
dialogImageUrl
:
''
,
dialogImageVisible
:
false
,
visible
:
false
,
tagTypes
:
[
''
,
'
primary
'
,
'
success
'
,
'
warning
'
,
'
danger
'
,
'
info
'
,
'
info
'
,
'
info
'
],
productTypeOpts
:
[],
productSubTypeOpts
:
[],
inputVisible
:
false
,
inputValue
:
''
,
productFeature
:
[],
// 产品特点tag列表
formData
:
{
title
:
''
,
// 标题
consultType
:
'
10
'
,
// 留言类型
consultationContent
:
''
,
// 需求说明
contactPerson
:
''
,
// 联系人
contactPersonPhone
:
''
,
// 电话
contactPersonEmail
:
''
,
// 邮箱
contactPersonDetailAddress
:
''
,
// 地址
rank
:
'
1
'
// 产品品级
},
rules
:
{
title
:
{
required
:
true
,
message
:
'
请选择建议类别
'
,
trigger
:
'
blur
'
},
consultationContent
:
{
required
:
true
,
message
:
'
请填写留言内容
'
,
trigger
:
'
blur
'
},
contactPerson
:
{
required
:
true
,
message
:
'
请留下姓名
'
,
trigger
:
'
blur
'
},
contactPersonPhone
:
{
required
:
true
,
message
:
'
请留下联系电话
'
,
trigger
:
'
blur
'
}
}
}
},
mounted
()
{
this
.
$nextTick
(()
=>
{
})
},
methods
:
{
onDictReady
(
dict
)
{
},
cancelView
()
{
this
.
$router
.
push
({
path
:
`/home`
})
},
openTip
()
{
this
.
$alert
(
'
我们收到了您的留言讯息,稍后将与您联系。
'
,
'
完成
'
,
{
confirmButtonText
:
'
确定
'
,
type
:
'
success
'
,
showClose
:
false
,
center
:
true
,
callback
:
action
=>
{
this
.
cancelView
()
}
})
},
submitForm
()
{
this
.
$refs
.
formViewRef
.
validate
(
valid
=>
{
if
(
valid
)
{
HttpReq
.
backstageApi
.
addProduct
(
this
.
formData
).
then
((
res
)
=>
{
this
.
$notify
({
title
:
res
.
msg
,
type
:
'
success
'
,
duration
:
2500
})
if
(
res
.
code
===
200
)
{
alert
(
666
)
}
})
}
else
{
this
.
$message
({
message
:
'
表单信息有误,请核对无误后提交!
'
,
type
:
'
error
'
})
}
})
},
loadData
()
{
}
}
}
</
script
>
<
style
rel=
"stylesheet/scss"
lang=
"scss"
scoped
>
.touch
{
cursor
:pointer
;
}
.clear
{
clear
:
both
}
.inline-block
{
display
:
inline-block
;
}
.ellipsis
{
display
:
-
webkit-box
;
-webkit-box-orient
:
vertical
;
overflow
:
hidden
;
-webkit-line-clamp
:
2
;
text-overflow
:
ellipsis
;
}
.showcase
{
padding
:
1px
0
;
font-size
:
20px
;
font-family
:
Source
Han
Sans
CN
;
font-weight
:
400
;
}
.form-table-box
{
width
:
1080px
;
margin
:
20px
auto
;
padding
:
30px
;
border
:
1px
solid
rgba
(
0
,
0
,
0
,
0
.12
);
box-shadow
:
1px
2px
8px
0
rgba
(
0
,
0
,
0
,
0
.12
);
border-radius
:
10px
;
}
.head-box
{
width
:
100vw
;
top
:
0
;
position
:
fixed
;
background
:
none
repeat
scroll
0
0
white
;
z-index
:
999
;
box-shadow
:
0px
3px
7px
0px
rgba
(
0
,
0
,
0
,
0
.2
);
.head-box-top
{
display
:
flex
;
justify-content
:
space-evenly
;
align-items
:
center
;
.top-call
{
height
:
80px
;
padding-top
:
15px
;
}
}
}
.content-box
{
min-height
:
70vh
;
margin-top
:
94px
;
font-family
:
Source
Han
Sans
CN
;
user-select
:
none
;
.page-title
{
margin-top
:
20px
;
padding
:
0
20px
;
font-size
:
26px
;
font-weight
:
bold
;
color
:
#333333
;
}
}
.line-btn
{
display
:
flex
;
justify-content
:
center
;
font-family
:
Source
Han
Sans
CN
;
font-weight
:
400
;
.btn-o
{
margin
:
0
25px
;
width
:
360px
;
padding
:
6px
10px
;
background
:
#F7601A
;
box-shadow
:
0
3px
6px
0
rgba
(
0
,
0
,
0
,
0
.2
);
text-align
:
center
;
border
:
1px
solid
transparent
;
font-size
:
22px
;
color
:
#FFFFFF
;
cursor
:pointer
;
user-select
:
none
;
}
.btn-o
:hover
{
border
:
1px
solid
rgba
(
30
,
144
,
255
,
0
.8
);
color
:
#1482f0
;
}
.btn-l
{
margin
:
0
25px
;
width
:
360px
;
padding
:
10px
;
background
:
#1961C5
;
box-shadow
:
0
3px
6px
0
rgba
(
0
,
0
,
0
,
0
.2
);
text-align
:
center
;
border
:
1px
solid
transparent
;
font-size
:
22px
;
color
:
#FFFFFF
;
cursor
:pointer
;
user-select
:
none
;
}
.btn-l
:hover
{
border
:
1px
solid
rgba
(
0
,
0
,
0
,
0
.3
);
color
:
#F7601A
;
}
.btn-b
{
margin
:
0
10px
;
width
:
168px
;
padding
:
6px
;
background
:
#EFF6FF
;
border
:
1px
solid
transparent
;
box-shadow
:
0
1px
2px
0
rgba
(
0
,
0
,
0
,
0
.2
);
text-align
:
center
;
font-size
:
20px
;
color
:
#1961C5
;
cursor
:pointer
;
user-select
:
none
;
}
.btn-b
:hover
{
border
:
1px
solid
rgba
(
30
,
144
,
255
,
0
.9
);
}
.active
{
color
:
#FFFFFF
;
font-weight
:
400
;
background
:
#1961C5
;
}
}
.grid-content
{
border
:
1px
solid
rgba
(
100
,
100
,
100
,
0
.3
);
padding
:
0
;
}
.grid-label
{
background
:
#dedede
;
padding
:
0
10px
;
}
.editor
{
text-align
:left
;
width
:
680px
;
}
::v-deep
.w-e-text-container
{
height
:
560px
!
important
;
}
.cell-box
{
min-width
:
120px
;
.cell-input
{
width
:
620px
;
}
.cell-select
{
width
:
320px
;
}
.el-tag
+
.el-tag
{
margin-left
:
10px
;
}
.button-new-tag
{
margin-left
:
10px
;
height
:
28px
;
line-height
:
24px
;
padding
:
0
8px
;
}
.input-new-tag
{
width
:
140px
;
height
:
28px
;
margin-left
:
10px
;
vertical-align
:
bottom
;
}
>>>
.el-input__inner
{
border
:
1px
solid
rgba
(
100
,
100
,
100
,
0
.1
);
border-bottom
:
1px
solid
rgba
(
100
,
100
,
100
,
0
.2
);
border-radius
:
5px
;
}
>>>
.el-input.is-disabled
.el-input__inner
{
border-radius
:
0
;
border
:
0
;
border-bottom
:
1px
solid
rgba
(
100
,
100
,
100
,
0
.4
);
background
:
white
;
cursor
:
text
;
}
>>>
.el-input.is-disabled
.el-input__icon
{
cursor
:
text
;
}
>>>
.el-icon-circle-check
{
color
:
#13ce66
;
}
//>>>.el-icon-arrow-up:before {
// content: '';
//}
}
</
style
>
This diff is collapsed.
Click to expand it.
src/views/homepage/index.vue
View file @
84909063
...
@@ -40,9 +40,10 @@
...
@@ -40,9 +40,10 @@
<img
v-if=
"item.isGood"
src=
"@/assets/home_images/recommend.png"
class=
"stamp"
title=
"推荐"
style=
"top: 10px;right: 8px"
>
<img
v-if=
"item.isGood"
src=
"@/assets/home_images/recommend.png"
class=
"stamp"
title=
"推荐"
style=
"top: 10px;right: 8px"
>
<img
v-if=
"item.isHot"
src=
"@/assets/home_images/hot.png"
class=
"stamp"
title=
"热门"
style=
"top: 0;left: 0"
>
<img
v-if=
"item.isHot"
src=
"@/assets/home_images/hot.png"
class=
"stamp"
title=
"热门"
style=
"top: 0;left: 0"
>
<el-image
<el-image
class=
"touch"
:src=
"item.imgSrc?imgSrcStart+'/img'+item.imgSrc:defaultImgProduct"
:src=
"item.imgSrc?imgSrcStart+'/img'+item.imgSrc:defaultImgProduct"
:preview-src-list=
"item.imgSrcList.length?item.imgSrcList:[defaultImgProduct]"
style=
"width:284px;height: 284px;margin: 0 32px 4px"
style=
"width:284px;height: 284px;margin: 0 32px 4px"
@
click=
"goToDetails(item, '/product/details')"
>
>
<div
slot=
"placeholder"
class=
"image-slot"
>
加载中
<span
class=
"dot"
>
...
</span></div>
<div
slot=
"placeholder"
class=
"image-slot"
>
加载中
<span
class=
"dot"
>
...
</span></div>
</el-image>
</el-image>
...
...
This diff is collapsed.
Click to expand it.
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