Commit 46f6c1bc authored by 李明环(东信)'s avatar 李明环(东信)

找回丢失文件

parent 657bedff
<script setup lang="ts">
onLaunch(() => {
console.log("App Launch");
xma.login({
provider: "weixin", //使用微信登录
success: function (loginRes) {
console.log(loginRes.authResult);
},
fail(err) {
console.log("============", err);
}
});
});
onShow(() => {
......
......@@ -9,7 +9,3 @@ export const getTreeListApi = params => instance.post("/dict/dictProvinceCityDis
export const dictJobTypeApi = params => instance.post("/dict/dictJobType/getTree", params);
// 获取岗位列表类型(1职位,2政策,3动态)
export const getBannerListApi = type => instance.post(`/banner/list/${type}`);
// 添加反馈信息
export const getFeedbackAdd = params => instance.post("/feedback/add", params);
// 我的反馈列表
export const getFeedbackList = params => instance.post("/feedback/list", params);
\ No newline at end of file
import instance from "@/utils/request";
// 获取消息分页
export const getMessagePageList = params => instance.post("/message/getPageList", params);
import instance from "@/utils/request";
// 测试登录
export const testLogin = params => instance.post("/personal/sms/login", params);
export const getSmsCode = params => instance.postForm("/personal/user/getSmsCode", params);
// 新华登录
export const xinhuaMpLogin = params => instance.post("/personal/xinhua/mpLogin", params);
// 获取用户简历
export const getUserResumeApi = () => instance.post("/personal/user/resume/get");
// 获取等用户信息
......
......@@ -75,7 +75,7 @@ const setStepViewData = data => {
list.push({
state: 2,
title: "已拒绝",
date: format(data.interviewTime)
date: format(data.updateTime)
});
break;
default:
......
......@@ -131,25 +131,9 @@
}
},
{
"path": "pages/user/feedBack/feedBackRecord/feedBackRecord",
"path": "pages/login/index",
"style": {
"navigationBarTitleText": "问题反馈"
}
},
{
"path": "pages/user/feedBack/feedBackWait/feedBackWiat",
"style": {
"navigationBarTitleText": "提交反馈"
}
},
{
"path": "pages/user/feedBack/feedBackReplied/feedBackReplied",
"style": {
"navigationBarTitleText": "问题回复",
"path": "pages/login/index",
"style": {
"navigationStyle": "custom"
}
"navigationStyle": "custom"
}
},
{
......@@ -209,4 +193,4 @@
"navigationBarBackgroundColor": "#fff",
"backgroundColor": "#F8F8F8"
}
}
\ No newline at end of file
}
<template>
<div class="page">
<!-- pages/login/login.wxml -->
<view class="login-page">
<nav-bar class="nav-bar">
<template #title>   <text class="student">登录</text> </template>
</nav-bar>
<view class="title">
<text class="t1">乐业观山湖</text>
<text class="t2">您最贴心的求职小伙伴</text>
</view>
<button class="login-btn" @click="login">授权手机号登录</button>
</view>
{{ res }}
</div>
</template>
<script setup>
import NavBar from "@/components/navBar/index.vue";
import { xinhuaMpLogin } from "@/api/user.js";
const res = ref("");
const login = () => {
xma.xh.getUserProfile({
range: ["ACCOUNT", "MOBILE"],
success(info) {
xinhuaMpLogin({ phone: info.data.uMobile })
.then(data => {
res.value = data;
})
.catch(err => {
res.value = err;
});
},
fail(err) {
test.value = err;
}
});
getLoginUserApi().then(res => {
console.log(res);
});
};
</script>
<style lang="scss" scoped>
.page {
height: 100%;
background-color: #eaf5ff;
}
.login-page {
height: 100%;
background-image: url("https://lygsh-image.wjzpgz.com/login/loginBG.png");
background-repeat: no-repeat;
background-position: 50% 50%;
background-size: auto 100%;
.student {
font-size: 36rpx;
font-weight: 600;
color: #1b2026;
text-align: center;
}
.title {
display: flex;
flex-direction: column;
margin-top: 176rpx;
text-align: center;
.t1 {
font-size: 80rpx;
font-weight: normal;
color: #0e2761;
}
.t2 {
font-size: 24rpx;
color: #1b2026;
}
}
.login-btn {
position: absolute;
bottom: 336rpx;
left: 50%;
width: 640rpx;
height: 96rpx;
font-size: 34rpx;
line-height: 96rpx;
color: #ffffff;
background-color: #1f86ff;
transform: translate(-50%, 0);
}
}
</style>
<template>
<div>
<p>
手机号
<input type="text" v-model="phone" />
</p>
<button @tap="login">登录</button>
</div>
</template>
<script setup>
import { testLogin, getSmsCode } from "@/api/user";
import { setToken } from "@/utils/token";
const phone = ref("");
const login = async () => {
const a = await getSmsCode({ username: phone.value });
testLogin({
username: phone.value,
code: "000000"
}).then(res => {
console.log(res);
if (res.code === 200) {
setToken(res.data);
uni.switchTab({
url: "/pages/user/index"
});
}
});
};
</script>
<style lang="scss" scoped></style>
<template>
<div class="message-list">
<scroll-view scroll-y="{{true}}">
<scroll-view :scroll-y="true" @scrolltolower="getList">
<view class="system">
<view class="item flex-between" v-for="(v, i) in 8" :key="i">
<view class="item flex-between" v-for="(v, i) in list" :key="i">
<img src="@/static/image/user/default-avatar.png" alt="" />
<view class="content">
<view class="name-date flex-between">
<text class="name">预约提醒</text>
<text class="name">{{ v.title || "" }}</text>
<text class="date">2024-06-21 12:30</text>
</view>
<view class="message flex-between">
<text>预约活动还有24小时开始</text>
<text>{{ v.content }}</text>
<view class="flex-align-center">
<text class="link">立即前往</text>
<view class="arrow"></view>
......@@ -24,21 +24,25 @@
</template>
<script setup>
import { getMessagePageList } from "@/api/message";
import { ref } from "vue";
const ossImgPrefix = "";
const res = ref({});
const getAddress = () => {
console.log("123");
uni.getLocation({
type: "wgs84",
success: function (res) {
res.value = res;
},
fail(err) {
console.log("errerrerr", err);
}
import { getEnumText } from "@/utils/utils";
import _ from "lodash";
const list = ref([]);
let pageNo = 1;
const getList = () => {
getMessagePageList({
pageNo: pageNo++,
pageSize: 10
}).then(res => {
res.data.forEach(async v => {
v.typeText = await getEnumText("EnumMessageType", v.type);
});
console.log(res.data);
list.value = _.concat(list.value, res.data);
});
};
getList();
</script>
<style lang="scss" scoped>
......
......@@ -25,12 +25,19 @@
<text class="title">公司地址</text>
<view class="address flex-between">
<text>{{ partTimeJobData.address }}</text>
<view>
<!-- <view @click="showNavigation = true">
<image src="@/static/image/icon/navigation.png" mode="" />
导航
</view>
</view> -->
</view>
</view>
<!-- 选择地图 -->
<wd-action-sheet
v-model="showNavigation"
:actions="navigationActions"
@close="showNavigation = false"
@select="navigationSelect"
/>
<!-- 公司介绍 -->
<view class="pos-introduce pos-padding-top0" v-if="partTimeJobData.companyIntro">
<view class="title">
......@@ -78,12 +85,12 @@
</view>
<scroll-view scroll-x="{{true}}" class="pos-select">
<view class="flex-align-center">
<text :class="activeJobListType === '' ? 'active' : ''" @:tap="filterOpstionList('')">全部</text>
<text :class="activeJobListType === '' ? 'active' : ''" @tap="filterOpstionList('')">全部</text>
<text
:class="activeJobListType === item ? 'active' : ''"
v-for="(item, index) in partTimeJobData.jobTypeTextList"
:key="item"
@:tap="filterOpstionList(item)"
@tap="filterOpstionList(item)"
>{{ item }}</text
>
</view>
......@@ -92,7 +99,7 @@
<scroll-view scroll-y="{{true}}" class="recommend-list-wrap">
<block v-for="(item, index) in partTimeJobData.jobList" :key="index">
<view class="card-wrap" v-if="item.isShow">
<postion-card1 :data="item"></postion-card1>
<PostionCard1 :data="item"></PostionCard1>
</view>
</block>
</scroll-view>
......@@ -103,7 +110,7 @@
<script setup>
import { getCompanyDetailApi } from "@/api/postion.js";
import { ref } from "vue";
import postionCard1 from "@/components/postionCard1/index.vue";
import PostionCard1 from "@/components/postionCard1/index.vue";
import SwipeHandler from "@/utils/swipeHandler";
const partTimeJobData = ref({});
onLoad(({ id }) => {
......@@ -121,7 +128,6 @@ const swipeHandler = new SwipeHandler();
const activeRecommend = ref(false);
const recommendTop = ref(0);
const top = ref(0);
const activeJobListType = ref("");
const onTouchStart = e => {
swipeHandler.onTouchStart(e);
};
......@@ -140,7 +146,7 @@ const onTouchEnd = e => {
};
const setRecommendTop = () => {
const { windowHeight, windowTop } = uni.getWindowInfo();
top.value = windowTop;
top.value = 60;
recommendTop.value = windowHeight - 178;
};
......@@ -148,11 +154,76 @@ onLoad(() => {
setRecommendTop();
});
// 筛选推荐列表
const filterOpstionList = type => {
partTimeJobData.jobList.forEach(v => {
v.isShow = !type ? true : v.jobTypeText == type;
const activeJobListType = ref("");
const filterOpstionList = item => {
activeJobListType.value = item;
partTimeJobData.value.jobList.forEach(v => {
v.isShow = !item ? true : v.jobTypeText == item;
});
};
/* 选择导航 */
const showNavigation = ref(false);
const navigationActions = [
{
name: "百度地图"
},
{
name: "高德地图"
}
/* {
name: "腾讯地图"
} */
];
const navigationSelect = ({ item }) => {
console.log(item);
let { osName } = uni.getSystemInfoSync();
const to = {
name: partTimeJobData.value.address,
longitude: 106.652946,
latitude: 26.624922
};
const getMapScheme = to => {
const u = navigator.userAgent;
const isAndroid = osName == "android";
const andriodBaidu = to => {
return `bdapp://map/direction?destination=name:${to.name}|latlng:${to.latitude},${to.longitude}&coord_type=gcj02&mode=driving&src=andr.jianghu.jianhao`;
};
const iOSBaidu = to => {
return `baidumap://map/direction?destination=name:${to.name}|latlng:${to.latitude},${to.longitude}&coord_type=gcj02&mode=driving&src=ios.jianghu.jianhao`;
};
const andriodGaode = to => {
return `amapuri://route/plan/?sourceApplication=mhc&dlat=${to.latitude}&dlon=${to.longitude}&dname=${to.name}&dev=0&t=0`;
};
const iOSGaode = to => {
return `iosamap://path?sourceApplication=mhc&dlat=${to.latitude}&dlon=${to.longitude}&dname=${to.name}&dev=0&t=0`;
};
if (item.name == "百度地图") {
if (isAndroid) {
return andriodBaidu(to);
} else {
return iOSBaidu(to);
}
} else if (item.name == "高德地图") {
if (isAndroid) {
return andriodGaode(to);
} else {
return iOSGaode(to);
}
}
};
const a = document.createElement("a");
document.body.appendChild(a);
a.href = getMapScheme(to);
a.click();
document.body.removeChild(a);
};
</script>
<style lang="scss" scoped>
......
<template>
<button @click="c">获取</button>
<div>
{{ t }}
</div>
<textarea v-model="value"></textarea>
</template>
<script setup>
import { ref } from "vue";
const t = ref("");
const c = () => {
t.value = xma.getWindowInfo();
};
const value = ref("");
xma.xh.getUserProfile({
range: ["ACCOUNT", "MOBILE"],
success(info) {
value.value = info.data.uMobile;
},
fail(err) {
test.value = err;
}
});
</script>
<style lang="scss" scoped></style>
......@@ -2,29 +2,52 @@
<div class="page">
<!-- <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">
<view class="card" v-if="postionData.jobApplication?.status == 4">
<view class="t1">不合适</view>
<view class="t2">抱歉!经公司慎重考虑,很遗憾你不适合该职位感谢你的投递!</view>
<view class="shadow"></view>
</view>
<view class="card success" v-if="postionData.jobApplication.status == 2">
<view class="card success" v-if="postionData.jobApplication?.status == 2">
<view class="t1">面试邀约</view>
<view class="t2">你好,陈春瑞!通过对你的简历了解,希望能和你面谈,特此发送面试邀约</view>
<view class="shadow"></view>
</view>
<view class="pos-card">
<view class="pos-name flex-between">
<text class="name">{{ postionData.jobName }}</text>
<view>{{ postionData.minSalary / 1000 }}k-{{ postionData.maxSalary / 1000 }}k/<text>/月</text></view>
<template v-if="postionData.jobApplication?.status == 2">
<div class="interview-info">
<div>
<p class="label">面试时间</p>
<p>{{ dayjs(postionData.jobApplication.interviewTime).format("YYYY-MM-DD HH:mm") }}</p>
</div>
<div>
<p class="label">面试地点</p>
<p>{{ postionData.jobApplication.address }}</p>
</div>
<div>
<p class="label">联系电话</p>
<p>{{ postionData.jobApplication.contactPerson }}</p>
</div>
<div>
<p class="label">联系人</p>
<p>{{ postionData.jobApplication.contactPhone }}</p>
</div>
</div>
</template>
<template v-else>
<view class="pos-card">
<view class="pos-name flex-between">
<text class="name">{{ postionData.jobName }}</text>
<view>{{ postionData.minSalary / 1000 }}k-{{ postionData.maxSalary / 1000 }}k/<text>/月</text></view>
</view>
<view class="com-name">{{ postionData.companyName }}</view>
<view class="tags">
<text class="item" v-for="v in postionData.benefits?.split(',') || []" :key="v">{{ v }}</text>
</view>
</view>
<view class="com-name">{{ postionData.companyName }}</view>
<view class="tags">
<text class="item" v-for="v in postionData.benefits.split(',')" :key="v">{{ v }}</text>
<view class="pos-detail">
{{ postionData.jobDesc }}
</view>
</view>
<view class="pos-detail">
{{ jobDesc }}
</view>
</template>
<view class="steps-wrap">
<steps :data="postionData.jobApplication"></steps>
</view>
......@@ -35,9 +58,9 @@
import steps from "@/components/steps/index.vue";
import { reactive, ref } from "vue";
import { getJobDetailApi } from "@/api/postion";
import dayjs from "dayjs";
const postionData = ref({});
onLoad(({ id }) => {
console.log(id);
getJobDetailApi(id).then(res => {
console.log(res);
postionData.value = res.data;
......@@ -88,6 +111,27 @@ onLoad(({ id }) => {
opacity: 1;
}
}
.interview-info {
display: flex;
flex-direction: column;
gap: 32rpx;
padding: 0 32rpx;
margin-top: 168rpx;
div {
display: flex;
p {
font-size: 28rpx;
font-weight: normal;
color: #1b2026;
}
.label {
width: 180rpx;
font-size: 24rpx;
font-weight: 500;
color: #77818f;
}
}
}
.success {
background: linear-gradient(180deg, #1fc9ff 0%, #1f86ff 100%), linear-gradient(180deg, #f05a25 0%, #ff0000 100%),
linear-gradient(180deg, #f05a25 0%, #ff0000 100%);
......
<template>
<div class="record">
<div class="list-container">
<template v-for="item in feedbackListData" :key="item.id">
<div class="div-content">
<div class="company-name">
{{ item.id }}
</div>
<div class="div-state-await" @click="tofeedBackRecord(item.id)">
{{ item.status }}
</div>
<div class="div-time">
{{ item.createTime }}
</div>
</div>
</template>
</div>
<div class="content-line"></div>
<div class="button-feedback" @click="tofeedBackWait">投诉建议</div>
</div>
</template>
<script setup>
import { getFeedbackList } from "@/api/common";
import { onReady } from "@dcloudio/uni-app";
import axios from "axios";
import { dayjs } from "dayjs";
import { ref } from "vue";
const pageNo = ref("1"); //初始页码
const pageSize = ref("10"); //每页数量
let feedbackListData = ref([]);
const postListData = () => {
// feedbackListData = res.feedbackListData;
getFeedbackList()
.then(res => {
feedbackListData.value = res.data;
emit("");
})
.catch(res => {});
};
onReady(() => {
postListData();
});
console.log("feedbackListData:", feedbackListData);
const tofeedBackRecord = id => {
console.log("", id);
uni.navigateTo({
url: "/pages/user/feedBack/feedBackReplied/feedBackReplied?id=" + id
});
};
const tofeedBackWait = url => {
uni.navigateTo({
url: "/pages/user/feedBack/feedBackWait/feedBackWiat"
});
};
</script>
<style lang="scss" scoped>
page {
background-color: #ffffff;
height: 100%;
}
.record {
width: 750rpx;
height: 90%;
overflow: scroll;
}
.list-container {
width: 750rpx;
height: 100%;
}
.div-content {
width: 750rpx;
height: 116rpx;
margin-top: 16rpx;
border-bottom: solid 16rpx #f3f4f8;
}
.company-name {
margin-left: 32rpx;
margin-top: 32rpx;
font-size: 32rpx;
font-weight: 600;
line-height: 36rpx;
color: #1b2026;
}
.div-time {
margin-left: 32rpx;
font-size: 24rpx;
color: #77818f;
font-weight: normal;
margin-top: -20rpx;
}
.div-state-finish {
width: 136rpx;
height: 60rpx;
margin-left: 582rpx;
margin-top: -20rpx;
background: rgba(49, 203, 174, 0.1);
font-size: 24rpx;
text-align: center;
line-height: 60rpx;
color: #31cbaee6;
font-weight: 600;
}
.div-state-await {
width: 136rpx;
height: 60rpx;
margin-left: 582rpx;
margin-top: -20rpx;
background: #1f86ff10;
font-size: 24rpx;
text-align: center;
line-height: 60rpx;
color: #1f86ff;
font-weight: 600;
}
.button-feedback {
position: fixed;
top: 92%;
left: 65rpx;
width: 622rpx;
height: 80rpx;
border-radius: 12rpx;
font-size: 30rpx;
font-weight: 600;
color: #ffffff;
text-align: center;
line-height: 80rpx;
background: #1f86ff;
}
.content-line {
position: fixed;
top: 90%;
left: 0rpx;
width: 750rpx;
height: 1rpx;
background: rgba(31, 35, 41, 0.15);
}
</style>
\ No newline at end of file
<template>
<div class="replied">
<div class="problem-description">投诉建议</div>
<div class="text-box">
<textarea class="content" disabled="trun" v-model="questionDesc"> </textarea>
<text class="current-word">{{ inputLength }}/{{ wordMax }}</text>
</div>
<div class="picture-position">
<block v-for="imgs in imagesPath" :key="imgs.index">
<image class="img-size-box" :src="evn.APP_IMAGE_BASE_API + imgs" mode="aspectFit" />
</block>
</div>
<div class="feedback-replied-line"></div>
<div class="problem-description">平台回复</div>
<div class="replied-content">{{ feedbackInfo.replyMessage }}</div>
</div>
</template>
<script setup>
import evn from "@/utils/config";
import { getFeedbackList } from "@/api/common";
import { onLoad } from "@dcloudio/uni-app";
const wordMax = 300;
const replyMessage = ref(null);
let questionDesc = ref("");
let id = ref("");
let feedbackInfo = ref([]);
let imagesPath = ref([]);
let feedbackListData = ref([]);
const inputLength = computed(() => {
return questionDesc.value.length;
});
const getFeedbackArr = () => {
// feedbackListData = res.feedbackListData;
getFeedbackList()
.then(res => {
feedbackListData = res.data;
// feedbackListData = feedbackListData;
console.log("feedbackListData:", feedbackListData);
feedbackInfo.value = feedbackListData.find(function (person) {
// console.log("person.id=", person.id);
// console.log("id=", id);
return person.id === id;
});
console.log("feedbackInfo=", feedbackInfo);
questionDesc.value = feedbackInfo.value.questionDesc;
console.log("questionDesc=", questionDesc);
imagesPath.value = feedbackInfo.value.imagesPath.split(",");
console.log("imagesPath=", imagesPath);
replyMessage.value = feedbackInfo.value.replyMessage;
console.log(replyMessage);
// feedbackListData.push(...res.data);
})
.catch(res => {});
};
onLoad(options => {
id = options.id;
console.log("id=", id);
});
onReady(() => {
getFeedbackArr();
});
</script>
<style lang="scss" scoped>
page {
background-color: #fff;
}
.replied {
width: 750rpx;
}
.replied .problem-description {
font-size: 36rpx;
font-weight: 600;
color: #1b2026;
margin-top: 32rpx;
margin-left: 32rpx;
}
.replied .text-box {
width: 686rpx;
height: 272rpx;
margin-top: 32rpx;
margin-left: 32rpx;
border-radius: 8rpx;
background: #f2f5fb;
}
.replied .text-box .content {
width: 640rpx;
height: 190rpx;
font-size: 24rpx;
font-weight: 500;
color: #77818f;
margin-left: 32rpx;
top: 32rpx;
background: #f2f5fb;
}
.replied .text-box .current-word {
font-size: 28rpx;
color: gray;
position: absolute;
right: 72rpx;
margin-top: 32rpx;
}
.replied .picture-position {
width: 610rpx;
height: 160rpx;
display: flex;
margin-top: 32rpx;
margin-left: 32rpx;
}
.replied .picture-position .img-size-box {
width: 158rpx;
height: 160rpx;
border-radius: 4rpx;
margin-right: 16rpx;
}
.replied .feedback-replied-line {
margin-top: 32rpx;
width: 750rpx;
height: 16rpx;
background: #f3f4f8;
}
.replied .replied-content {
width: 686rpx;
height: 288rpx;
margin-top: 16rpx;
margin-left: 32rpx;
font-size: 24rpx;
line-height: 36rpx;
}
</style>
\ No newline at end of file
<template>
<div class="feedback-wait">
<div class="problem-description">投诉建议</div>
<div class="text-box">
<textarea class="content" placeholder="请输入你的问题" maxlength="300" v-model="textInputs"> </textarea>
<text class="current-word">{{ inputLength }}/{{ wordMax }}</text>
</div>
<div class="picture-position">
<div v-for="(img, index) in imgList" :key="index">
<img class="img-size-box" :src="img" data-index="{{index}}" />
<img @click="deleteimg(index)" class="picture-del" src="/src/static/image/user/feedback_picture_del.png" alt="" />
</div>
<button class="div-picture" @click="chooseSource" v-if="imgList.length < 3">
<img class="div-picture-add" src="/src/static/image/user/feedback_picture_add.png" alt="" />
</button>
</div>
<text class="text-content">上传图片(可上传0-3张图片)</text>
<div class="content-line"></div>
<button @click="submit" id="button-submit">提交</button>
</div>
</template>
<script setup>
import { uploadFiles } from "@/utils/fileUpload";
import { getFeedbackAdd } from "@/api/common";
import { ref, computed } from "vue";
import { ISuccessRes } from "rexma-cli";
import { useRouter } from "vue-router";
const router = useRouter();
const wordMax = ref(300);
let imgList = ref([]);
let item = ref([]);
const textInputs = ref("");
let questionDesc = ref("");
let imagesPath = ref("");
let imagesPaths = ref([]);
let upArr = ref([]);
let imgs = ref([]);
const inputLength = computed(() => {
// console.log(imagesPaths.length);
return textInputs.value.length;
});
const chooseSource = () => {
uni.chooseImage({
count: 3,
sizeType: ["original", "compressed"], //可以指定是原图还是压缩图,默认二者都有
sourceType: ["album", "camera"], //从相册选择,拍照上传
success: async function (res) {
// imgList = res.tempFiles.map(File => ({
// 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);
let tempFiles = res.tempFiles;
console.log(tempFiles);
upArr = await uploadFiles(tempFiles);
console.log("upArr", upArr);
const imgs = (imagesPaths = upArr.map(({ key }) => [key]));
// imagesPaths = upArr;
console.log(imagesPaths);
imagesPath = imagesPaths.join(",");
}
});
};
const deleteimg = index => {
imgList.value.splice(index, 1);
imagesPaths.splice(index, 1);
console.log(imgList);
console.log(imagesPaths);
};
const submit = res => {
if (imagesPaths.length === undefined) {
uni.showToast({
title: "请至少上传一张图片",
duration: 3000
});
return;
}
if (textInputs.value.length < 10) {
uni.showToast({
title: "请至少输入十个字及以上",
duration: 3000
});
return;
}
// console.log(textInputs.value);
questionDesc = textInputs.value;
console.log(imgList);
console.log("questionDesc:", questionDesc);
console.log("imagesPath:", imagesPath);
// getFeedbackAdd({
// questionDesc,
// imagesPath
// });
// router.go(-1);
};
</script>
<style lang="scss" scoped>
page {
background-color: #fff;
}
.feedback-wait {
width: 750rpx;
padding-left: 32rpx;
}
.feedback-wait .problem-description {
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;
}
.feedback-wait .text-box .current-word {
font-size: 28rpx;
color: gray;
position: absolute;
right: 72rpx;
margin-top: 32rpx;
}
.feedback-wait .text-box .content {
width: 640rpx;
height: 190rpx;
font-size: 24rpx;
font-weight: 500;
color: #77818f;
top: 32rpx;
margin-left: 32rpx;
}
.feedback-wait .picture-position {
width: 610rpx;
height: 160rpx;
display: flex;
margin-top: 32rpx;
}
.feedback-wait .picture-position .img-size-box {
width: 158rpx;
height: 160rpx;
border-radius: 4rpx;
margin-right: 16rpx;
display: flex;
}
.feedback-wait .picture-position .picture-del {
position: absolute;
width: 22rpx;
height: 22rpx;
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;
}
.feedback-wait .picture-position .div-picture .div-picture-add {
width: 60rpx;
height: 60rpx;
margin-top: 50rpx;
}
.feedback-wait .text-content {
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: rgba(31, 35, 41, 0.15);
}
.feedback-wait #button-submit {
position: absolute;
width: 622rpx;
color: #fff;
top: 92%;
left: 65rpx;
border-radius: 12rpx;
font-size: 30rpx;
font-weight: 600;
background: #1f86ff;
}
</style>
\ No newline at end of file
......@@ -36,6 +36,9 @@
<view class="arrow"></view>
</view>
</view>
<div>
{{ test }}
</div>
</div>
</template>
......@@ -43,8 +46,16 @@
import navBar from "@/components/navBar/index.vue";
import { getUserResumeApi, getLoginUserApi } from "@/api/user";
import { ref } from "vue";
import { navigateTo, getEnumText } from "@/utils/utils.js";
import { getEnumText } from "@/utils/utils.js";
import evn from "@/utils/config.js";
const test = ref();
const navigateTo = url => {
url &&
uni.navigateTo({
url
});
};
const navList = [
{
icon: new URL("@/static/image/user/history.png", import.meta.url).href,
......@@ -58,13 +69,26 @@ const navList = [
},
{
icon: new URL("@/static/image/user/question.png", import.meta.url).href,
url: "/pages/user/feedBack/feedBackRecord/feedBackRecord",
url: "",
text: "问题反馈"
},
{
icon: new URL("@/static/image/user/loginout.png", import.meta.url).href,
url: "",
url: "/pages/login/index",
text: "退出登录"
},
{
icon: new URL("@/static/image/user/loginout.png", import.meta.url).href,
url: "/pages/test",
text: "测试页面"
},
{
icon: new URL("@/static/image/user/loginout.png", import.meta.url).href,
url: "/pages/login/test",
fn: () => {
removeToken();
},
text: "退出登录(去测试登录)"
}
];
/* 个人信息 */
......@@ -164,6 +188,7 @@ getUserInfo();
button {
width: 130rpx;
height: 48rpx;
padding: 0;
margin: 0;
font-size: 24rpx;
font-weight: 500;
......
......@@ -8,7 +8,7 @@
</view>
<view class="com-name">{{ v.companyName }}</view>
<view class="flex-align-center tags">
<text v-for="(benefit, index) in v.benefits.split(',')" :key="index">{{ benefit }}</text>
<text v-for="(benefit, index) in v.benefits?.split(',') || []" :key="index">{{ benefit }}</text>
</view>
<view v-if="v.status == 0" class="state success"> 已投递 </view>
<view v-if="v.status == 1" class="state success"> 已查看 </view>
......@@ -92,6 +92,7 @@ const getList = () => {
}
.tags {
gap: 7px;
height: 30rpx;
margin-top: 10px;
text {
padding: 2px 4px;
......
......@@ -245,7 +245,18 @@ const submit = () => {
workExperience,
personalTags
}).then(res => {
console.log(res);
if (res.code == 200) {
uni.showToast({
title: "保存成功",
icon: "none"
});
uni.navigateBack();
} else {
uni.showToast({
title: res.message,
icon: "none"
});
}
});
};
</script>
......
......@@ -174,7 +174,9 @@ const getUserResume = () => {
}
});
};
getUserResume();
onShow(() => {
getUserResume();
});
// 获取求职状态数据
const value = ref();
const jobStatusColumns = ref([]);
......
......@@ -21,6 +21,18 @@ const inputvalue = ref("");
const save = () => {
saveAdvantageApi({ personalAdvantage: inputvalue.value }).then(res => {
console.log(res);
if (res.code == 200) {
uni.showToast({
title: "保存成功",
icon: "success"
});
uni.navigateBack();
} else {
uni.showToast({
title: res.message,
icon: "none"
});
}
});
};
</script>
......
......@@ -175,18 +175,20 @@ const handleConfirmSalary = ({ selectedItems }) => {
};
const submit = () => {
let params = {
maxSalary: 24000,
minSalary: 20000,
preferredCityCode: "210400",
preferredCityName: "抚顺市",
preferredDistrictCode: "210404",
preferredDistrictName: "望花区",
preferredPosition: "钟点工,花艺师,宠物医生",
preferredProvinceCode: "210000",
preferredProvinceName: "辽宁省"
maxSalary: 0,
minSalary: 0,
preferredCityCode: "",
preferredCityName: "",
preferredDistrictCode: "",
preferredDistrictName: "",
preferredPosition: "",
preferredProvinceCode: "",
preferredProvinceName: "",
preferredPositionId: ""
};
const [p, c, d] = citySelectedItems;
params.preferredPosition = mValue.value.map(v => v.name).join(",");
params.preferredPositionId = mValue.value.map(v => v.id).join(",");
params.minSalary = salarySelectedItems[0].value;
params.maxSalary = salarySelectedItems[1].value;
params.preferredProvinceCode = p.code;
......@@ -201,6 +203,12 @@ const submit = () => {
uni.showToast({
title: "操作成功"
});
uni.navigateBack();
} else {
uni.showToast({
title: res.message,
icon: "none"
});
}
});
};
......
......@@ -6,7 +6,8 @@ if (process.env.NODE_ENV === "development") {
evn.APP_IMAGE_BASE_API = "https://lygsh-image.wjzpgz.com/";
} else {
// console.log('生产环境');
evn.APP_BASE_API = "https://lygsh-api.wjzpgz.com/";
// evn.APP_BASE_API = "https://lygsh-api.wjzpgz.com/";
evn.APP_BASE_API = "http://192.168.11.84:8080/";
evn.APP_IMAGE_BASE_API = "https://lygsh-image.wjzpgz.com/";
}
export default evn;
export const setToken = token => {
uni.setStorageSync("token", token);
};
export const getToken = () => {
return uni.getStorageSync("token");
};
export const removeToken = () => {
uni.removeStorageSync("token");
};
......@@ -37,6 +37,7 @@ export const getStorageSync = key => uni.getStorageSync(key);
// 路由跳转
export const navigateTo = (url, type = "navigateTo") => {
if (!url) return;
uni[type]({
url: url
});
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment