Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mp-customer-people-recruitment-h5
Project
Project
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
彭佳妮(贵阳日报)
mp-customer-people-recruitment-h5
Commits
0cea30ae
Commit
0cea30ae
authored
Oct 11, 2024
by
陈宗胤(贵阳日报)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改bug
parent
6342d876
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
521 additions
and
99 deletions
+521
-99
common.js
src/api/common.js
+4
-3
index.vue
src/components/navBar/index.vue
+1
-1
pages.json
src/pages.json
+8
-1
index.vue
src/pages/articleDetails/index.vue
+15
-13
index.vue
src/pages/dynamic/index.vue
+3
-1
test.vue
src/pages/login/test.vue
+2
-1
index.vue
src/pages/messageList/index.vue
+3
-1
index.vue
src/pages/policy/index.vue
+3
-1
index.vue
src/pages/postionList/companyDetails/index.vue
+8
-0
index.vue
src/pages/postionList/index.vue
+22
-8
index.vue
src/pages/postionList/positionDetails/index.vue
+1
-0
index.vue
src/pages/user/deliveryFeedback/index.vue
+1
-1
feedBackRecord.vue
src/pages/user/feedBack/feedBackRecord/feedBackRecord.vue
+2
-2
feedBackWiat.vue
src/pages/user/feedBack/feedBackWait/feedBackWiat.vue
+42
-49
index.vue
src/pages/user/feedbackDetails/index.vue
+194
-0
index.vue
src/pages/user/index.vue
+7
-5
index.vue
src/pages/user/problemRecord/index.vue
+152
-0
index.vue
src/pages/user/resume/educationExperience/index.vue
+14
-0
index.vue
src/pages/user/resume/essentialInformation/index.vue
+11
-5
index.vue
src/pages/user/resume/index.vue
+1
-1
index.vue
src/pages/user/resume/introduce/index.vue
+1
-0
index.vue
src/pages/user/resume/jobIntention/index.vue
+1
-0
index.vue
src/pages/user/resume/realNameAuthentication/index.vue
+1
-0
index.vue
src/pages/user/resume/workExperience/index.vue
+19
-2
request.js
src/utils/request.js
+3
-2
utils.js
src/utils/utils.js
+2
-2
No files found.
src/api/common.js
View file @
0cea30ae
...
...
@@ -10,6 +10,8 @@ export const dictJobTypeApi = params => instance.post("/dict/dictJobType/getTree
// 获取岗位列表类型(1职位,2政策,3动态)
export
const
getBannerListApi
=
type
=>
instance
.
post
(
`/banner/list/
${
type
}
`
);
// 添加反馈信息
export
const
getFeedbackAdd
=
params
=>
instance
.
post
(
"/feedback/add"
,
params
);
export
const
feedbackAdd
=
params
=>
instance
.
post
(
"/feedback/add/consumer"
,
params
);
//根据id获取反馈信息
export
const
feedbackById
=
params
=>
instance
.
post
(
`/feedback/
${
params
}
`
);
// 我的反馈列表
export
const
getFeedbackList
=
params
=>
instance
.
post
(
"/feedback/list"
,
params
);
\ No newline at end of file
export
const
getFeedbackList
=
params
=>
instance
.
post
(
"/feedback/list"
,
params
);
src/components/navBar/index.vue
View file @
0cea30ae
...
...
@@ -74,7 +74,7 @@ const back = () => {
.searchComponent
{
position
:
sticky
;
top
:
0
;
z-index
:
99
9999
;
z-index
:
99
;
// background: green;
transition
:
background-color
0
.5s
;
...
...
src/pages.json
View file @
0cea30ae
...
...
@@ -167,12 +167,19 @@
}
},
{
"path"
:
"pages/user/
feedBack/feedBackRecord/feedBackRecord
"
,
"path"
:
"pages/user/
problemRecord/index
"
,
"style"
:
{
"navigationBarTitleText"
:
"记录"
,
"navigationStyle"
:
"custom"
}
},
{
"path"
:
"pages/user/feedbackDetails/index"
,
"style"
:
{
"navigationBarTitleText"
:
"投诉建议"
,
"navigationStyle"
:
"custom"
}
},
{
"path"
:
"pages/user/feedBack/feedBackWait/feedBackWiat"
,
"style"
:
{
...
...
src/pages/articleDetails/index.vue
View file @
0cea30ae
<
template
>
<NavBar
:showIcon=
"true"
backgroundBox=
"#ffffff"
:showTitle=
"true"
title=
"文章详情"
></NavBar>
<div
class=
"page"
>
<div
class=
"top"
>
<video
:src=
"evn.APP_IMAGE_BASE_API + data.videoPath"
v-if=
"data.infoType === 2"
></video>
<div
class=
"title"
>
{{
data
.
title
}}
</div>
<div
class=
"flex-between"
>
<div
class=
"publisher"
>
{{
data
.
publisher
}}
</div>
<div
class=
"date"
>
{{
dayjs
(
data
.
publishDate
).
format
(
"YYYY/MM/DD hh:mm"
)
}}
</div>
</div>
<div
class=
"watch flex-align-center"
>
<img
src=
"@/static/image/icon/eye.png"
alt=
""
/>
{{
data
.
views
}}
<div>
<NavBar
:showIcon=
"true"
backgroundBox=
"#ffffff"
:showTitle=
"true"
title=
"文章详情"
></NavBar>
<div
class=
"page"
>
<div
class=
"top"
>
<video
:src=
"evn.APP_IMAGE_BASE_API + data.videoPath"
v-if=
"data.infoType === 2"
></video>
<div
class=
"title"
>
{{
data
.
title
}}
</div>
<div
class=
"flex-between"
>
<div
class=
"publisher"
>
{{
data
.
publisher
}}
</div>
<div
class=
"date"
>
{{
dayjs
(
data
.
publishDate
).
format
(
"YYYY/MM/DD hh:mm"
)
}}
</div>
</div>
<div
class=
"watch flex-align-center"
>
<img
src=
"@/static/image/icon/eye.png"
alt=
""
/>
{{
data
.
views
}}
</div>
</div>
<div
class=
"content"
v-html=
"data.content"
></div>
</div>
<div
class=
"content"
v-html=
"data.content"
></div>
</div>
</
template
>
...
...
src/pages/dynamic/index.vue
View file @
0cea30ae
...
...
@@ -21,6 +21,9 @@ const typeList = ref([{ id: "", name: "全部" }]);
getArticleTypesApi
(
2
).
then
(
res
=>
{
typeList
.
value
.
push
(...
res
.
data
);
});
onShow
(()
=>
{
changeType
({
id
:
""
});
});
const
changeType
=
type
=>
{
active
.
value
=
type
.
id
;
pageNo
=
1
;
...
...
@@ -50,7 +53,6 @@ const getData = () => {
list
.
push
(...
res
.
data
);
});
};
changeType
({
id
:
""
});
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/pages/login/test.vue
View file @
0cea30ae
<
template
>
<div>
<NavBar
:showIcon=
"true"
:showTitle=
"true"
title=
"测试登录"
backgroundBox=
"#ffffff"
></NavBar>
<p>
手机号
<input
type=
"text"
v-model=
"phone"
/>
...
...
@@ -20,7 +21,7 @@ const login = async () => {
}).
then
(
res
=>
{
console
.
log
(
res
);
if
(
res
.
code
===
200
)
{
setToken
(
loginR
es
.
data
.
token
);
setToken
(
r
es
.
data
.
token
);
uni
.
switchTab
({
url
:
"/pages/user/index"
});
...
...
src/pages/messageList/index.vue
View file @
0cea30ae
...
...
@@ -31,6 +31,9 @@ import { getEnumText } from "@/utils/utils";
import
_
from
"lodash"
;
const
list
=
ref
([]);
let
pageNo
=
1
;
onShow
(()
=>
{
getList
();
});
const
getList
=
()
=>
{
getMessagePageList
({
pageNo
:
pageNo
++
,
...
...
@@ -43,7 +46,6 @@ const getList = () => {
list
.
value
=
_
.
concat
(
list
.
value
,
res
.
data
);
});
};
getList
();
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/pages/policy/index.vue
View file @
0cea30ae
...
...
@@ -21,6 +21,9 @@ const typeList = ref([{ id: "", name: "全部" }]);
getArticleTypesApi
(
1
).
then
(
res
=>
{
typeList
.
value
.
push
(...
res
.
data
);
});
onShow
(()
=>
{
changeType
({
id
:
""
});
});
const
changeType
=
type
=>
{
active
.
value
=
type
.
id
;
pageNo
=
1
;
...
...
@@ -50,7 +53,6 @@ const getData = () => {
list
.
push
(...
res
.
data
);
});
};
changeType
({
id
:
""
});
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/pages/postionList/companyDetails/index.vue
View file @
0cea30ae
<
template
>
<div
class=
"page"
>
<NavBar
:showIcon=
"true"
backIcon=
"#ffffff"
:showTitle=
"true"
title=
"公司简介"
backgroundBox=
"#1d2c3e"
textColor=
"#ffffff"
></NavBar>
<!-- 公司详情 -->
<view
class=
"pos-details"
>
<view
class=
"pos-title"
>
...
...
src/pages/postionList/index.vue
View file @
0cea30ae
...
...
@@ -40,7 +40,15 @@
</view>
</view>
<!-- 蒙版弹框 -->
<view
class=
"pop-mask"
:style=
"
{ paddingTop: '70rpx' }" v-if="maskType" @click="maskType = null">
<view
@
touchmove
.
stop
.
prevent
class=
"pop-mask"
v-if=
"maskType"
@
click=
"maskType = null"
>
<view
class=
"select-nav"
:style=
"
{ top: '0px' }" catchtouchmove="
{{
true
}}
" @tap.stop>
<view
class=
"recommend"
>
推荐
</view>
<view
class=
"select-item"
>
<text
:class=
"
{ active: maskType == 'address' }" @tap="openMask('address')">贵州省
</text>
<text
:class=
"
{ active: maskType == 'position' }" @tap="openMask('position')">职位类型
</text>
<text
:class=
"
{ active: maskType == 'other' }" @tap="openMask('other')">更多筛选
</text>
</view>
</view>
<!-- 区域弹窗 -->
<view
@
click
.
stop=
""
...
...
@@ -174,6 +182,14 @@ import { getEumData } from "@/utils/utils.js";
import
evn
from
"@/utils/config.js"
;
/* 轮播 */
const
swiperList
=
ref
([]);
onShow
(()
=>
{
getTreeData
();
dictJobType
();
getListData
();
initOtherData
();
});
// 获取数据
getBannerListApi
(
1
).
then
(
res
=>
{
console
.
log
(
res
);
...
...
@@ -257,7 +273,7 @@ const getTreeData = () => {
}
});
};
getTreeData
();
// 选择市
const
bindCityList
=
(
code
,
name
)
=>
{
for
(
let
i
=
0
;
i
<
cityData
.
value
.
length
;
i
++
)
{
...
...
@@ -305,7 +321,7 @@ const bindSortList = (name, id) => {
pageNo
=
1
;
}
};
dictJobType
();
// 其他筛选
const
identityData
=
ref
([]);
const
screenSexData
=
ref
([]);
...
...
@@ -325,7 +341,6 @@ const bindScreenEducationList = (text, code) => {
screenEducation
.
value
=
text
;
screenEducationCode
.
value
=
code
;
};
initOtherData
();
/* 获取职位列表 */
let
pageNo
=
1
,
pageSize
=
10
,
...
...
@@ -356,7 +371,6 @@ const getListData = () => {
}
});
};
getListData
();
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
@@ -416,8 +430,8 @@ getListData();
// 筛选条
.select-nav
{
position
:
sticky
;
z-index
:
30
;
//
position: sticky;
//
z-index: 30;
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
...
...
@@ -482,7 +496,7 @@ getListData();
.pop-mask
{
position
:
fixed
;
inset
:
0
;
z-index
:
2
0
;
z-index
:
10
0
;
background-color
:
#000000
66
;
.address
{
.region-pop-content
{
...
...
src/pages/postionList/positionDetails/index.vue
View file @
0cea30ae
<
template
>
<div
class=
"postion-details"
>
<NavBar
:showIcon=
"true"
:showTitle=
"true"
title=
"职位详情"
backgroundBox=
"#ffffff"
></NavBar>
<!--pages/position-details/position-details.wxml-->
<view
class=
"steps-wrap"
>
<steps
v-if=
"partTimeJobData.jobApplication"
:data=
"partTimeJobData.jobApplication"
></steps>
...
...
src/pages/user/deliveryFeedback/index.vue
View file @
0cea30ae
<
template
>
<div
class=
"page"
>
<NavBar
:showIcon=
"true"
:showTitle=
"true"
title=
"投递反馈"
backgroundBox=
"#ffffff"
></NavBar>
<!--
<view
v-if=
"v.status == 2"
class=
"state success"
>
待面试
</view>
<view
v-if=
"v.status == 4"
class=
"state warning"
>
已拒绝
</view>
-->
<view
class=
"card"
v-if=
"postionData.jobApplication?.status == 4"
>
...
...
@@ -71,7 +72,6 @@ onLoad(({ id }) => {
<
style
lang=
"scss"
scoped
>
.page
{
box-sizing
:
border-box
;
padding-top
:
48rpx
;
background-color
:
#ffffff
;
}
.card
{
...
...
src/pages/user/feedBack/feedBackRecord/feedBackRecord.vue
View file @
0cea30ae
...
...
@@ -37,7 +37,7 @@ let feedbackListData = ref([]);
const
postListData
=
()
=>
{
// feedbackListData = res.feedbackListData;
getFeedbackList
()
getFeedbackList
(
{
pageNo
:
1
,
pageSize
:
50000
}
)
.
then
(
res
=>
{
feedbackListData
.
value
=
res
.
data
;
emit
(
""
);
...
...
@@ -45,7 +45,7 @@ const postListData = () => {
.
catch
(
res
=>
{});
};
on
Ready
(()
=>
{
on
Show
(()
=>
{
postListData
();
});
console
.
log
(
"feedbackListData:"
,
feedbackListData
);
...
...
src/pages/user/feedBack/feedBackWait/feedBackWiat.vue
View file @
0cea30ae
<
template
>
<NavBar
:showIcon=
"true"
backgroundBox=
"#ffffff"
:showTitle=
"true"
title=
"投诉建议"
></NavBar>
<div
class=
"feedback-wait"
>
<div
class=
"problem-description"
>
投诉建议
</div>
<div
class=
"text-box"
>
...
...
@@ -23,7 +24,7 @@
<
script
setup
>
import
{
uploadFiles
}
from
"@/utils/fileUpload"
;
import
{
getF
eedbackAdd
}
from
"@/api/common"
;
import
{
f
eedbackAdd
}
from
"@/api/common"
;
import
{
ref
,
computed
}
from
"vue"
;
import
{
ISuccessRes
}
from
"rexma-cli"
;
import
{
useRouter
}
from
"vue-router"
;
...
...
@@ -34,9 +35,8 @@ let item = ref([]);
const
textInputs
=
ref
(
""
);
let
questionDesc
=
ref
(
""
);
let
imagesPath
=
ref
(
""
);
let
imagesPaths
=
ref
([])
;
let
imagesPaths
=
[]
;
let
upArr
=
ref
([]);
let
imgs
=
ref
([]);
const
inputLength
=
computed
(()
=>
{
// console.log(imagesPaths.length);
...
...
@@ -53,19 +53,17 @@ const chooseSource = () => {
// path: File.path
// }));
imgList
.
value
=
[...
imgList
.
value
,
...
res
.
tempFilePaths
];
console
.
log
(
"imgList.value"
,
imgList
.
value
);
console
.
log
(
"res.tempFilePaths"
,
res
.
tempFilePaths
);
console
.
log
(
"res"
,
res
);
// console.log("imgList", imgList);
// imgs.concat(res.tempFiles);
// console.log("imgs", imgs);
if
(
imgList
.
value
.
length
>
3
)
{
imgList
.
value
=
imgList
.
value
.
slice
(
0
,
3
);
}
let
tempFiles
=
res
.
tempFiles
;
console
.
log
(
tempFiles
);
upArr
=
await
uploadFiles
(
tempFiles
);
console
.
log
(
"upArr"
,
upArr
);
const
imgs
=
(
imagesPaths
=
upArr
.
map
(({
key
})
=>
[
key
]));
const
imgs
=
upArr
.
map
(({
key
})
=>
[
key
]);
imagesPaths
=
[...
imagesPaths
,
...
imgs
];
if
(
imagesPaths
.
length
>
3
)
{
imagesPaths
=
imagesPaths
.
slice
(
0
,
3
);
}
// imagesPaths = upArr;
console
.
log
(
imagesPaths
);
imagesPath
=
imagesPaths
.
join
(
","
);
}
});
...
...
@@ -74,8 +72,10 @@ const chooseSource = () => {
const
deleteimg
=
index
=>
{
imgList
.
value
.
splice
(
index
,
1
);
imagesPaths
.
splice
(
index
,
1
);
imagesPath
=
imagesPaths
.
join
(
","
);
console
.
log
(
imgList
);
console
.
log
(
imagesPaths
);
console
.
log
(
imagesPath
);
};
const
submit
=
res
=>
{
...
...
@@ -98,73 +98,72 @@ const submit = res => {
console
.
log
(
imgList
);
console
.
log
(
"questionDesc:"
,
questionDesc
);
console
.
log
(
"imagesPath:"
,
imagesPath
);
// getFeedbackAdd({
// questionDesc,
// imagesPath
// });
xma
.
showLoading
();
getFeedbackAdd
({
questionDesc
,
imagesPath
}).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
xma
.
hideLoading
();
xma
.
navigateBack
({
delta
:
1
});
}
});
// router.go(-1);
};
</
script
>
<
style
lang=
"scss"
scoped
>
page
{
background-color
:
#fff
;
background-color
:
#fff
fff
;
}
.feedback-wait
{
width
:
750rpx
;
padding-left
:
32rpx
;
}
.feedback-wait
.problem-description
{
margin-top
:
16rpx
;
font-size
:
36rpx
;
font-weight
:
600
;
color
:
#1b2026
;
margin-top
:
16rpx
;
}
.feedback-wait
.text-box
{
width
:
686rpx
;
height
:
272rpx
;
margin-top
:
32rpx
;
border-radius
:
8rpx
;
background
:
#f2f5fb
;
border-radius
:
8rpx
;
}
.feedback-wait
.text-box
.current-word
{
font-size
:
28rpx
;
color
:
gray
;
position
:
absolute
;
right
:
72rpx
;
margin-top
:
32rpx
;
font-size
:
28rpx
;
color
:
gray
;
}
.feedback-wait
.text-box
.content
{
top
:
32rpx
;
width
:
640rpx
;
height
:
190rpx
;
margin-left
:
32rpx
;
font-size
:
24rpx
;
font-weight
:
500
;
color
:
#77818f
;
top
:
32rpx
;
margin-left
:
32rpx
;
}
.feedback-wait
.picture-position
{
display
:
flex
;
width
:
610rpx
;
height
:
160rpx
;
display
:
flex
;
margin-top
:
32rpx
;
}
.feedback-wait
.picture-position
.img-size-box
{
display
:
flex
;
width
:
158rpx
;
height
:
160rpx
;
border-radius
:
4rpx
;
margin-right
:
16rpx
;
display
:
fle
x
;
border-radius
:
4rp
x
;
}
.feedback-wait
.picture-position
.picture-del
{
position
:
absolute
;
width
:
22rpx
;
...
...
@@ -172,47 +171,42 @@ page {
margin-top
:
-160rpx
;
margin-left
:
136rpx
;
}
.feedback-wait
.picture-position
.div-picture
{
display
:
flex
;
justify-content
:
center
;
width
:
158rpx
;
margin-left
:
0rpx
;
border-radius
:
4rpx
;
background
:
#f2f5fb
;
border-radius
:
4rpx
;
}
.feedback-wait
.picture-position
.div-picture
.div-picture-add
{
width
:
60rpx
;
height
:
60rpx
;
margin-top
:
50rpx
;
}
.feedback-wait
.text-content
{
margin-top
:
16rpx
;
font-size
:
24rpx
;
font-weight
:
500
;
margin-top
:
16rpx
;
color
:
#1b2026
;
}
.feedback-wait
.content-line
{
position
:
absolute
;
top
:
90%
;
left
:
0rpx
;
width
:
750rpx
;
height
:
1rpx
;
background
:
rgb
a
(
31
,
35
,
41
,
0
.15
);
background
:
rgb
(
31
35
41
/
15%
);
}
.feedback-wait
#button-submit
{
position
:
absolute
;
width
:
622rpx
;
color
:
#fff
;
top
:
92%
;
left
:
65rpx
;
border-radius
:
1
2rpx
;
width
:
62
2rpx
;
font-size
:
30rpx
;
font-weight
:
600
;
color
:
#ffffff
;
background
:
#1f86ff
;
border-radius
:
12rpx
;
}
</
style
>
\ No newline at end of file
</
style
>
src/pages/user/feedbackDetails/index.vue
0 → 100644
View file @
0cea30ae
<
template
>
<NavBar
:showIcon=
"true"
:showTitle=
"true"
title=
"投诉建议"
backgroundBox=
"#FFFFFF"
></NavBar>
<view
class=
"feedback-page"
>
<view
class=
"title"
>
问题描述
</view>
<wd-textarea
show-word-limit
maxlength=
"300"
:readonly=
"id"
custom-class=
"textarea"
v-model=
"params.questionDesc"
placeholder=
"请输入你的问题"
/>
<view
class=
"img-list"
>
<image
v-for=
"(item, index) in imgArr"
:key=
"index"
:src=
"evn.APP_IMAGE_BASE_API + item"
@
click=
"previewImage(evn.APP_IMAGE_BASE_API + item)"
/>
<view
class=
"up-load"
@
click=
"chooseImage"
v-if=
"(imgArr.length
<
3
&&
id =
=
null
)
||
!
id
"
>
<wd-icon
name=
"add"
size=
"60rpx"
color=
"#77818F"
></wd-icon>
</view>
</view>
<view
class=
"tip"
v-if=
"!id"
>
上传图片(可上传0-3张图片)
</view>
<view
class=
"msg"
>
<view
class=
"title"
>
平台回复
</view>
<view
class=
"hf"
>
{{
detail
.
replyMessage
||
"暂无回复"
}}
</view>
</view>
<wd-tabbar
v-if=
"!id"
@
click=
"feedbackAddFn"
custom-style=
"display: flex;justify-content: center !important;"
fixed
placeholderW
safeAreaInsetBottom
>
<wd-button
:round=
"false"
class=
"foot-btn"
:disabled=
"params.questionDesc == '' || params.imagesPath == ''"
>
投诉建议
</wd-button
>
</wd-tabbar>
</view>
</
template
>
<
script
setup
>
import
evn
from
"@/utils/config.js"
;
import
{
uploadFiles
}
from
"@/utils/fileUpload"
;
import
{
feedbackAdd
,
feedbackById
}
from
"@/api/common"
;
const
value
=
ref
(
""
);
const
imgArr
=
ref
([]);
const
id
=
ref
(
null
);
const
detail
=
ref
({});
const
params
=
reactive
({
questionDesc
:
""
,
imagesPath
:
""
});
onLoad
(
option
=>
{
id
.
value
=
option
.
id
;
feedbackByIdFn
(
option
.
id
);
});
const
feedbackByIdFn
=
id
=>
{
feedbackById
(
id
).
then
(
feedback
=>
{
detail
.
value
=
feedback
.
data
;
params
.
questionDesc
=
feedback
.
data
.
questionDesc
;
imgArr
.
value
=
feedback
.
data
.
imagesPath
.
split
(
","
);
});
};
function
previewImage
(
url
)
{
xma
.
previewImage
({
current
:
url
// 当前显示图片的http链接
});
}
/* 选择图片 */
const
chooseImage
=
()
=>
{
console
.
log
(
123
);
if
(
imgArr
.
value
.
length
<
3
)
{
uni
.
chooseImage
({
count
:
1
,
success
:
async
({
tempFiles
})
=>
{
const
res
=
await
uploadFiles
(
tempFiles
);
imgArr
.
value
.
push
(
res
[
0
].
key
);
params
.
imagesPath
=
imgArr
.
value
.
join
(
","
);
}
});
}
else
{
xma
.
showToast
({
title
:
"最多只能上传3张图片"
,
icon
:
"none"
});
}
};
const
feedbackAddFn
=
()
=>
{
xma
.
showLoading
();
if
(
params
.
questionDesc
==
""
||
params
.
imagesPath
==
""
)
{
}
else
{
feedbackAdd
(
params
).
then
(
res
=>
{
if
(
res
.
code
==
200
)
{
xma
.
hideLoading
();
xma
.
navigateBack
({
delta
:
1
});
}
});
}
};
</
script
>
<
style
lang=
"scss"
scoped
>
.feedback-page
{
box-sizing
:
border-box
;
display
:
flex
;
flex-direction
:
column
;
width
:
750rpx
;
padding
:
16rpx
32rpx
;
.msg
{
padding-top
:
32rpx
;
.title
{
position
:
relative
;
font-size
:
32rpx
;
font-weight
:
600
;
color
:
#1b2026
;
}
.
title
:
:
before
{
position
:
absolute
;
top
:
28rpx
;
left
:
8rpx
;
width
:
122rpx
;
height
:
16rpx
;
content
:
" "
;
background
:
linear-gradient
(
90deg
,
rgb
(
241
246
251
/
0%
)
0%
,
#76a5ff
100%
);
opacity
:
1
;
}
.hf
{
margin-top
:
16rpx
;
font-size
:
24rpx
;
line-height
:
36rpx
;
color
:
#1b2026
;
}
}
.title
{
font-size
:
32rpx
;
font-weight
:
600
;
color
:
#1b2026
;
}
.textarea
{
max-height
:
272rpx
;
margin-top
:
32rpx
;
background
:
#f2f5fb
;
:deep
(
.wd-textarea__value
)
{
width
:
100%
;
max-height
:
272rpx
;
padding
:
0
!
important
;
background
:
#f2f5fb
!
important
;
}
:deep
(
.wd-textarea__count
)
{
background
:
none
!
important
;
}
}
.img-list
{
display
:
flex
;
gap
:
16rpx
;
align-items
:
center
;
margin-top
:
32rpx
;
.up-load
{
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
width
:
160rpx
;
height
:
160rpx
;
background
:
#f2f5fb
;
border-radius
:
4rpx
;
}
image
{
width
:
160rpx
;
height
:
160rpx
;
}
}
.tip
{
margin-top
:
16rpx
;
font-size
:
24rpx
;
color
:
#1b2026
;
}
.foot-btn
{
position
:
fixed
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
width
:
622rpx
;
height
:
80rpx
;
color
:
#ffffff
;
border-radius
:
12rpx
;
}
}
</
style
>
src/pages/user/index.vue
View file @
0cea30ae
<
template
>
<NavBar
:showIcon=
"false"
:showTitle=
"true"
title=
"我的"
textColor=
"#ffffff"
></NavBar>
<div
class=
"user-container"
>
<NavBar
:showIcon=
"false"
:showTitle=
"true"
title=
"我的"
textColor=
"#ffffff"
></NavBar>
<view
class=
"bg"
></view>
<!-- 用户信息 -->
<view
class=
"user-info flex-align-center"
>
...
...
@@ -34,9 +34,9 @@
<view
class=
"arrow"
></view>
</view>
</view>
<div>
<
!--
<
div>
{{
test
}}
</div>
</div>
-->
</div>
</
template
>
...
...
@@ -47,6 +47,9 @@ import { getEnumText } from "@/utils/utils.js";
import
evn
from
"@/utils/config.js"
;
const
test
=
ref
();
onShow
(()
=>
{
getUserInfo
();
});
const
navigateTo
=
url
=>
{
url
&&
uni
.
navigateTo
({
...
...
@@ -66,7 +69,7 @@ const navList = [
},
{
icon
:
new
URL
(
"@/static/image/user/question.png"
,
import
.
meta
.
url
).
href
,
url
:
"/pages/user/
feedBack/feedBackRecord/feedBackRecord
"
,
url
:
"/pages/user/
problemRecord/index
"
,
text
:
"投诉建议"
},
{
...
...
@@ -110,7 +113,6 @@ const getUserInfo = () => {
schoolName
.
value
=
JSON
.
parse
(
educationExperience
)[
0
].
schoolName
;
});
};
getUserInfo
();
</
script
>
<
style
lang=
"scss"
scoped
>
...
...
src/pages/user/problemRecord/index.vue
0 → 100644
View file @
0cea30ae
<
template
>
<NavBar
:showIcon=
"true"
:showTitle=
"true"
title=
"记录"
backgroundBox=
"#FFFFFF"
></NavBar>
<view
class=
"problem-page"
>
<view
class=
"history-item"
v-for=
"item in list"
:key=
"item.id"
@
click=
"goToDetail(item)"
>
<view
class=
"item-left"
>
<view
class=
"title"
>
{{
item
.
questionDesc
}}
</view>
<view
class=
"time"
>
{{
$formatTimestamp
(
item
.
createTime
,
"YYYY-MM-DD hh:mm"
)
}}
</view>
</view>
<view
class=
"btn"
:style=
"
{
background: item.replyMessage ? '#EAF9F6' : '#E8F2FF',
color: item.replyMessage ? '#31CBAE' : '#1F86FF'
}"
>
{{
item
.
replyMessage
?
"已回复"
:
"待回复"
}}
</view
>
</view>
<wd-tabbar
@
click=
"navigateTo"
custom-style=
"display: flex;justify-content: center !important;"
fixed
placeholder
safeAreaInsetBottom
>
<view
class=
"foot-btn"
>
投诉建议
</view>
</wd-tabbar>
</view>
</
template
>
<
script
setup
>
import
{
getFeedbackList
}
from
"@/api/common"
;
const
list
=
ref
([]);
const
params
=
ref
({
pageNo
:
1
,
pageSize
:
10
,
isEnd
:
false
});
/**
* 跳转详情
*/
const
navigateTo
=
()
=>
{
xma
.
navigateTo
({
url
:
`/pages/user/feedbackDetails/index`
});
};
onShow
(()
=>
{
refresh
().
then
(()
=>
{
feedbackListFn
().
then
(()
=>
{
xma
.
stopPullDownRefresh
();
});
});
});
const
feedbackListFn
=
()
=>
{
if
(
params
.
value
.
isEnd
===
true
)
return
new
Promise
(
resolve
=>
{
resolve
();
});
xma
.
showLoading
({
title
:
"加载中..."
,
mask
:
true
});
return
getFeedbackList
(
params
.
value
).
then
(
res
=>
{
if
(
res
.
data
.
length
<
params
.
value
.
pageSize
)
{
params
.
value
.
isEnd
=
true
;
}
params
.
value
.
pageNo
+=
1
;
list
.
value
=
list
.
value
.
concat
(
res
.
data
);
xma
.
hideLoading
();
});
};
const
goToDetail
=
item
=>
{
xma
.
navigateTo
({
url
:
`/pages/user/feedbackDetails/index?id=
${
item
.
id
}
`
});
};
const
refresh
=
()
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
list
.
value
=
[];
params
.
value
.
pageNo
=
1
;
params
.
value
.
isEnd
=
false
;
resolve
();
});
};
onPullDownRefresh
(()
=>
{
refresh
().
then
(()
=>
{
feedbackListFn
().
then
(()
=>
{
xma
.
stopPullDownRefresh
();
});
});
});
// 触底加载
onReachBottom
(()
=>
{
feedbackListFn
();
});
</
script
>
<
style
lang=
"scss"
scoped
>
page
{
background
:
#f3f4f8
;
}
.problem-page
{
display
:
flex
;
flex-direction
:
column
;
gap
:
16rpx
;
width
:
750rpx
;
.history-item
{
box-sizing
:
border-box
;
display
:
flex
;
justify-content
:
space-between
;
width
:
100%
;
padding
:
32rpx
;
background
:
#ffffff
;
.item-left
{
display
:
flex
;
flex-direction
:
column
;
.title
{
max-width
:
400rpx
;
overflow
:
hidden
;
font-size
:
32rpx
;
color
:
#1b2026
;
text-overflow
:
ellipsis
;
white-space
:
nowrap
;
}
.time
{
margin-top
:
16rpx
;
font-size
:
24rpx
;
color
:
#77818f
;
}
}
.btn
{
box-sizing
:
border-box
;
display
:
flex
;
flex-shrink
:
0
;
align-items
:
center
;
height
:
60rpx
;
padding
:
0rpx
32rpx
;
font-size
:
24rpx
;
}
}
.foot-btn
{
position
:
fixed
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
width
:
622rpx
;
height
:
80rpx
;
color
:
#ffffff
;
background
:
#1f86ff
;
border-radius
:
12rpx
;
}
}
</
style
>
src/pages/user/resume/educationExperience/index.vue
View file @
0cea30ae
<
template
>
<NavBar
:showIcon=
"true"
:showTitle=
"true"
title=
"教育经历"
backgroundBox=
"#ffffff"
></NavBar>
<view
class=
"item"
>
<view
class=
"label"
>
学校名称
</view>
<input
v-model=
"params.schoolName"
placeholder=
"请输入用户名"
border=
"
{{
false
}}
" />
...
...
@@ -52,6 +53,19 @@ import { reactive } from "vue";
const
params
=
reactive
({
schoolName
:
""
,
startDate
:
0
,
endDate
:
0
,
major
:
""
});
const
format
=
date
=>
date
&&
dayjs
(
date
).
format
(
"YYYY-MM-DD"
);
const
submit
=
()
=>
{
let
really
=
true
;
for
(
let
key
in
params
)
{
if
(
!
params
[
key
])
{
really
=
false
;
}
}
if
(
!
really
)
{
uni
.
showToast
({
title
:
`请完善表单!`
,
icon
:
"none"
});
return
;
}
saveEducationExperienceApi
(
JSON
.
stringify
([
params
])).
then
(
res
=>
{
if
(
res
.
code
===
200
)
{
uni
.
showToast
({
...
...
src/pages/user/resume/essentialInformation/index.vue
View file @
0cea30ae
<
template
>
<div
class=
"essential-information"
>
<NavBar
:showIcon=
"true"
:showTitle=
"true"
title=
"基本信息"
></NavBar>
<view
class=
"real-name-authentication flex-between"
v-if=
"verified == 0"
...
...
@@ -15,9 +16,8 @@
</view>
<view
class=
"btn"
>
去认证
</view>
</view>
<!-- 个人资料 -->
<view
class=
"my-info"
v-if=
"!cropperFlag"
>
<view
class=
"my-info"
>
<view
class=
"my-info-list flex-row-b-c pd-b-38 upload-avatar"
@
tap=
"bindUploadImg"
>
<view
class=
"my-info-title avatar-label"
>
<text>
头像
</text>
...
...
@@ -141,13 +141,13 @@
</
template
>
<
script
setup
>
import
{
reactive
,
ref
}
from
"vue"
;
import
{
reactive
,
ref
,
onMounted
}
from
"vue"
;
import
{
getLoginUserApi
,
saveUserInfoApi
}
from
"@/api/user.js"
;
import
{
getEumData
,
navigateTo
}
from
"@/utils/utils.js"
;
import
{
uploadFiles
}
from
"@/utils/fileUpload.js"
;
import
evn
from
"@/utils/config.js"
;
import
dayjs
from
"dayjs"
;
const
verified
=
0
;
let
verified
=
ref
(
0
)
;
const
cropperFlag
=
0
;
const
identityCode
=
0
;
const
userInfo
=
ref
({
...
...
@@ -169,6 +169,9 @@ const userInfo = ref({
completeResume
:
false
,
user
:
null
});
onMounted
(()
=>
{
getData
();
});
/* 头像 */
const
bindUploadImg
=
()
=>
{
uni
.
chooseFile
({
...
...
@@ -223,10 +226,13 @@ const getData = async () => {
const
{
data
,
code
}
=
await
getLoginUserApi
();
console
.
log
(
data
);
if
(
code
==
200
)
{
if
(
!
data
)
{
verified
.
value
=
1
;
return
;
}
userInfo
.
value
=
data
;
}
};
getData
();
/* 提交 */
const
submit
=
()
=>
{
...
...
src/pages/user/resume/index.vue
View file @
0cea30ae
...
...
@@ -177,6 +177,7 @@ const getUserResume = () => {
};
onShow
(()
=>
{
getUserResume
();
getOpstion
();
});
// 获取求职状态数据
const
value
=
ref
();
...
...
@@ -185,7 +186,6 @@ const getOpstion = async () => {
jobStatusColumns
.
value
=
await
getEumData
(
"EnumUserJobStatus"
);
console
.
log
(
jobStatusColumns
.
value
);
};
getOpstion
();
const
changeJobStatus
=
async
e
=>
{
console
.
log
(
e
.
selectedItems
.
text
);
const
{
code
,
message
}
=
await
saveJobStatusApi
({
jobStatus
:
e
.
value
});
...
...
src/pages/user/resume/introduce/index.vue
View file @
0cea30ae
<
template
>
<NavBar
:showIcon=
"true"
:showTitle=
"true"
title=
"个人优势"
backgroundBox=
"#ffffff"
></NavBar>
<view
class=
"container"
>
<view
class=
"title"
>
我的优势
</view>
<view
class=
"desc text-color"
>
一句话介绍自己,突出自己的核心优势
</view>
...
...
src/pages/user/resume/jobIntention/index.vue
View file @
0cea30ae
<
template
>
<NavBar
:showIcon=
"true"
:showTitle=
"true"
title=
"求职意向"
backgroundBox=
"#ffffff"
></NavBar>
<view
class=
"container"
>
<view
class=
"header"
>
<view
class=
"title"
>
求职意向
</view>
...
...
src/pages/user/resume/realNameAuthentication/index.vue
View file @
0cea30ae
<
template
>
<NavBar
:showIcon=
"true"
:showTitle=
"true"
title=
"实名认证"
backgroundBox=
"#ffffff"
></NavBar>
<div
class=
"page"
>
<view
class=
"text1"
>
请填写您的真实身份信息
</view>
<view
class=
"text2"
>
信息仅用于身份核实
</view>
...
...
src/pages/user/resume/workExperience/index.vue
View file @
0cea30ae
<
template
>
<NavBar
:showIcon=
"true"
:showTitle=
"true"
title=
"工作经历"
backgroundBox=
"#ffffff"
></NavBar>
<view
class=
"container"
>
<view
class=
"header"
>
<view
class=
"title"
>
工作/实习经历
</view>
...
...
@@ -108,8 +109,19 @@ const handleConfirmPostion = ({ selectedItems }) => {
};
const
save
=
()
=>
{
params
.
position
=
jobTypeText
.
value
;
console
.
log
(
params
);
let
really
=
true
;
for
(
let
key
in
params
)
{
if
(
!
params
[
key
])
{
really
=
false
;
}
}
if
(
!
really
)
{
uni
.
showToast
({
title
:
`请完善表单!`
,
icon
:
"none"
});
return
;
}
saveWorkExperienceApi
(
JSON
.
stringify
([
params
])).
then
(
res
=>
{
console
.
log
(
res
);
if
(
res
.
code
==
200
)
{
...
...
@@ -117,6 +129,11 @@ const save = () => {
title
:
"保存成功"
,
icon
:
"success"
});
setTimeout
(()
=>
{
uni
.
navigateBack
({
delta
:
1
});
},
1500
);
}
});
};
...
...
src/utils/request.js
View file @
0cea30ae
import
axios
from
"axios"
;
import
{
getToken
}
from
"./token"
;
const
baseURL
=
"https://lygsh-api.wjzpgz.com/"
;
// const baseURL = "https://lygsh-api.wjzpgz.com/";
const
baseURL
=
"http://192.168.11.158:8080/"
;
// 创建一个 axios 实例
const
instance
=
axios
.
create
({
baseURL
,
// 设置基础 URL
...
...
@@ -20,7 +21,7 @@ instance.interceptors.request.use(
// config.headers.Authorization = `Bearer ${token}`;
// }·
const
token
=
getToken
();
config
.
headers
[
'User-Token'
]
=
token
;
config
.
headers
[
"User-Token"
]
=
token
;
return
config
;
},
error
=>
{
...
...
src/utils/utils.js
View file @
0cea30ae
...
...
@@ -36,9 +36,9 @@ export const setStorageSync = (key, data) => {
export
const
getStorageSync
=
key
=>
uni
.
getStorageSync
(
key
);
// 路由跳转
export
const
navigateTo
=
(
url
,
type
=
"navigateTo"
)
=>
{
export
const
navigateTo
=
url
=>
{
if
(
!
url
)
return
;
uni
[
type
]
({
uni
.
navigateTo
({
url
:
url
});
};
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