1

parent 1b2b1be9
......@@ -2,7 +2,11 @@
<NavBar :showIcon="true" :showTitle="true" title="文章详情" backgroundBox="#FFFFFF"></NavBar>
<div class="page">
<div class="top">
<video :src="evn.APP_IMAGE_BASE_API + data.videoPath" v-if="data.infoType === 2"></video>
<video
:poster="evn.APP_IMAGE_BASE_API + data.thumbnailPath"
: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>
......@@ -53,6 +57,7 @@ onLoad(({ id }) => {
data.value.bmStutas = Res.data;
});
});
function next() {
xma.navigateTo({
url: `/pages/signUp/index?articleId=${articleId.value}`
......
<template>
<NavBar :showIcon="false" :showTitle="true" title="动态"></NavBar>
<div class="policy">
<NavBar :showIcon="false" :showTitle="true" title="动态"></NavBar>
<div class="tab-name" :style="{ position: sticky, top: contentHeight }" :enable-flex="true" :scroll-x="true">
<view :class="{ item: 1, active: active == v.id }" v-for="v in typeList" :key="v.id" @click="changeType(v)">{{
v.name
......
......@@ -13,12 +13,13 @@
<view class="message flex-between">
<text>{{ v.content }}</text>
<view class="flex-align-center">
<text class="link">立即前往</text>
<text class="link" v-if="[2, 3, 4, 7].includes(v.type)">立即前往</text>
<view class="arrow"></view>
</view>
</view>
</view>
</view>
<wd-status-tip v-if="list.length == 0" image="../.././static/image/enmpty-dt.png" tip="暂无消息" />
</view>
</scroll-view>
</div>
......@@ -37,7 +38,7 @@ const params = ref({
isEnd: false
});
const goToDetail = item => {
if (item.type == 3 || item.type == 4) {
if ([3, 4, 7].includes(item.type)) {
xma.navigateTo({
url: `/pages/user/myCompany/licenseInfo?id=${item.id}`
});
......
<template>
<NavBar :showIcon="false" :showTitle="true" title="政策"></NavBar>
<div class="policy">
<div class="tab-name" :enable-flex="true" :scroll-x="true">
<NavBar :showIcon="false" :showTitle="true" title="政策"></NavBar>
<div class="tab-name" :style="{ position: sticky, top: contentHeight }" :enable-flex="true" :scroll-x="true">
<view :class="{ item: 1, active: active == v.id }" v-for="v in typeList" :key="v.id" @click="changeType(v)">{{
v.name
}}</view>
......@@ -18,6 +18,7 @@ import articleList from "@/components/articleList/index.vue";
import { getArticleListApi, getArticleTypesApi } from "@/api/article.js";
import { reactive, ref } from "vue";
const active = ref("");
const contentHeight = ref("100rpx");
const typeList = ref([{ id: "", name: "全部" }]);
getArticleTypesApi(1).then(res => {
typeList.value.push(...res.data);
......@@ -73,6 +74,18 @@ onPullDownRefresh(() => {
});
});
});
onLoad(() => {
xma.xh.getSystemInfo({
success(res) {
// console.log('设备信息', res); // 设备信息
}
});
xma.xh.getMenuButtonBoundingClientRect({
success(res) {
contentHeight.value = (res.top + res.bottom) / 2 + 25 + "px";
}
});
});
// 触底加载
onReachBottom(() => {
feedbackListFn();
......
<template>
<NavBar :showIcon="false" :showTitle="true" title="推荐"></NavBar>
<div class="page">
<view class="tabs">
<NavBar :showIcon="false" :showTitle="true" title="推荐"></NavBar>
<view class="tabs" :style="{ position: sticky, top: contentHeight }">
<text @tap="changeActiveTab('求职推荐')" :class="activeTab == '求职推荐' ? 'active' : ''">求职推荐</text>
<text @tap="changeActiveTab('职位管理')" :class="activeTab == '职位管理' ? 'active' : ''">职位管理</text>
</view>
......@@ -139,6 +139,9 @@
</scroll-view>
</view>
<view class="release-postion" @tap="releasePostion"> 发布 </view>
<!-- <wd-fab :draggable="true">
</wd-fab> -->
</view>
</div>
</template>
......@@ -172,6 +175,7 @@ import { useAsync } from "@/hooks/useAsync";
import _ from "lodash";
import { useReleasePostionStore } from "./releasePostion/store";
/* tab */
const contentHeight = ref("100rpx");
const pinias = useReleasePostionStore();
const activeTab = ref("求职推荐");
const changeActiveTab = tab => {
......@@ -229,9 +233,7 @@ const getApplicationListParams = ref({
pageSize: 10
});
const getResumeRecommendList = () => {
getResumeRecommendListApi(getApplicationListParams.value).then(res => {
console.log("resresresres", res);
});
getResumeRecommendListApi(getApplicationListParams.value).then(res => {});
};
// 城市筛选
const valueCity = ref([]);
......@@ -356,9 +358,21 @@ const getJobList = (status = "") => {
v.workModeText = workModeText;
v.statusText = statusText;
});
jobList.value = res.data;
jobList.value = [...res.data];
});
};
onLoad(() => {
xma.xh.getSystemInfo({
success(res) {
// console.log('设备信息', res); // 设备信息
}
});
xma.xh.getMenuButtonBoundingClientRect({
success(res) {
contentHeight.value = (res.top + res.bottom) / 2 + 25 + "px";
}
});
});
onShow(() => {
getTopFilter();
getJobList();
......@@ -383,6 +397,7 @@ const switchJobStatus = async v => {
title: "操作成功",
icon: "none"
});
getJobList();
} else {
uni.showToast({
title: res.message,
......@@ -505,12 +520,11 @@ const editJob = ({ id, status }) => {
display: flex;
flex-direction: column;
flex-grow: 1;
height: 200rpx;
.release-postion {
position: fixed;
right: 22rpx;
bottom: 120rpx;
bottom: 150rpx;
z-index: 1;
display: flex;
flex-direction: column;
......
......@@ -19,7 +19,8 @@
<veiw class="label">面试时间</veiw>
<wd-datetime-picker
v-model="date"
:min-date="new Date().getTime()"
style="z-index: 999 !important"
:min-date="new Date(new Date().setHours(0, 0, 0, 0)).getTime()"
use-default-slot
label="日期选择"
@confirm="dateConfirm"
......@@ -60,7 +61,6 @@
</template>
<script setup>
import navBar from "@/components/navBar/index.vue";
import dayjs from "dayjs";
import { getApplicationByIdApi, inviteInterviewApi } from "@/api/postion";
import { reactive, ref } from "vue";
......
<template>
<NavBar :showIcon="true" :showTitle="false" title="" backgroundBox="#FFFFFF"></NavBar>
<div class="page">
<NavBar :showIcon="true" :showTitle="false" title="" backgroundBox="#FFFFFF"></NavBar>
<view class="title">
<view class="t1">1/5填写职位信息</view>
<view class="t2">选择对应的职位并填写职位信息</view>
......@@ -47,7 +47,13 @@
</view>
<view class="form-item describe" style="border: 0">
<view class="form-item-title">职位描述</view>
<textarea maxlength="500" v-model="pinias.formData.jobDesc" placeholder="请输入你的职位描述" />
<wd-textarea
custom-class="textarea"
show-word-limit
maxlength="500"
v-model="pinias.formData.jobDesc"
placeholder="请输入你的职位描述"
/>
</view>
</view>
......@@ -94,6 +100,8 @@ const changeWorkMode = mode => {
pinias.setFormDataKey("workMode", mode);
pinias.setFormDataKey("minSalary", 0);
pinias.setFormDataKey("maxSalary", 0);
console.log("mode", mode);
if (mode == 2) {
// 小时
pinias.setFormDataKey("settlementType", 1);
......@@ -124,6 +132,7 @@ const handleConfirm = ({ selectedItems, value }) => {
pinias.setFormDataKey("jobType", taget.id);
};
const next = () => {
xma.hideKeyboard();
if (validateForm(pinias.formData, ["jobType", "jobTypeText", "jobName", "jobDesc"])) {
uni.navigateTo({
url: "/pages/recommend/releasePostion/step2"
......@@ -145,6 +154,23 @@ const next = () => {
opacity: 1;
}
}
.page {
.textarea {
margin-top: 32rpx;
background: #f2f5fb;
max-height: 272rpx;
:deep(.wd-textarea__value) {
background: #f2f5fb !important;
max-height: 272rpx;
width: 100%;
padding: 0 !important;
}
:deep(.wd-textarea__count) {
background: none !important;
}
}
}
.switch {
display: flex;
align-items: center;
......
<template>
<NavBar :showIcon="true" :showTitle="false" title="" backgroundBox="#FFFFFF"></NavBar>
<div class="page">
<NavBar :showIcon="true" :showTitle="false" title="" backgroundBox="#FFFFFF"></NavBar>
<view class="title">
<view class="t1">2/5福利待遇</view>
<view class="t2">给岗位选择对应福利待遇</view>
......@@ -33,15 +33,12 @@
<view class="title-box"
><view></view>
<view class="title">薪资选择</view>
<wd-icon name="close" size="30rpx"></wd-icon>
<wd-icon @click="handleClose" name="close" size="30rpx"></wd-icon>
</view>
<wd-picker-view
@change="handleConfirm"
use-default-slot
:columns="columns"
v-model="value"
@close="handleClose"
></wd-picker-view>
<wd-picker-view @change="handleConfirm" use-default-slot :columns="columns" v-model="value"></wd-picker-view>
<view style="width: 100%; display: flex; justify-content: center"
><wd-button style="width: 80%" @click="handleClose" block :round="false">确定</wd-button></view
>
</wd-popup>
</view>
<view class="form-item">
......@@ -176,6 +173,13 @@ function onOpen() {
show.value = true;
}
function handleClose() {
if (value.value[1] < value.value[0]) {
xma.showToast({
title: "最高薪资不能小于最低薪资",
icon: "none"
});
return;
}
show.value = false;
}
/* 是否提供住宿 */
......@@ -264,16 +268,6 @@ initViewData();
:deep(.uni-checkbox-input) {
border-radius: 50% !important;
}
.title-box {
display: flex;
align-items: center;
justify-content: space-between;
box-sizing: border-box;
padding: 0 32rpx;
.title {
font-weight: bold;
}
}
.welfare {
display: flex;
flex-wrap: wrap;
......
<template>
<NavBar v-if="showTab" :showIcon="true" :showTitle="false" title="" backgroundBox="#FFFFFF"></NavBar>
<div class="page">
<NavBar v-if="showTab" :showIcon="true" :showTitle="false" title="" backgroundBox="#FFFFFF"></NavBar>
<view class="title">
<view class="t1">3/5工作地点</view>
<view class="t2">添加准确的就职工作地址</view>
......
<template>
<NavBar :showIcon="true" :showTitle="false" title="" backgroundBox="#FFFFFF"></NavBar>
<div class="page">
<NavBar :showIcon="true" :showTitle="false" title="" backgroundBox="#FFFFFF"></NavBar>
<view class="title">
<view class="t1">4/5填写职位信息</view>
<view class="t2">设置招聘偏好,让报名更精准</view>
......
<template>
<NavBar :showIcon="true" :showTitle="false" title="" backgroundBox="#FFFFFF"></NavBar>
<div class="page">
<NavBar :showIcon="true" :showTitle="false" title="" backgroundBox="#FFFFFF"></NavBar>
<view class="title">
<view class="t1">5/5 更多要求</view>
<view class="t2">设置招聘偏好,让报名更精准</view>
......@@ -46,21 +46,33 @@ import { useReleasePostionStore } from "./store";
const pinias = useReleasePostionStore();
import { validateForm } from "@/utils/utils";
const submit = () => {
xma.hideKeyboard();
xma.showLoading({
title: "提交中",
mask: true
});
if (pinias.formData.id) {
// 更新
updateJobApi(pinias.formData).then(res => {
if (res.code == 200) {
pinias.resetForm();
uni.showToast({
title: "更新成功",
icon: "none",
duration: 2000,
success: () => {
uni.switchTab({
url: "/pages/recommend/index"
});
}
});
setTimeout(() => {
wx.hideLoading({
complete: complete => {
if (complete.errMsg == "hideLoading:ok") {
wx.showToast({
title: "更新成功",
icon: "none"
});
}
}
});
}, 2000);
setTimeout(() => {
uni.switchTab({
url: "/pages/recommend/index"
});
}, 3000);
} else {
uni.showToast({
title: res.msg,
......@@ -75,16 +87,23 @@ const submit = () => {
createJobApi(pinias.formData).then(res => {
if (res.code == 200) {
pinias.resetForm();
uni.showToast({
title: "发布成功",
icon: "none",
duration: 2000,
success: () => {
uni.switchTab({
url: "/pages/recommend/index"
});
}
});
setTimeout(() => {
wx.hideLoading({
complete: complete => {
if (complete.errMsg == "hideLoading:ok") {
wx.showToast({
title: "发布成功",
icon: "none"
});
}
}
});
}, 2000);
setTimeout(() => {
uni.switchTab({
url: "/pages/recommend/index"
});
}, 3000);
} else {
uni.showToast({
title: res.msg,
......
......@@ -42,7 +42,7 @@ export const useReleasePostionStore = defineStore("useReleasePostionStore", ()=>
jobTypeText: "",
jobDesc: "",
negotiableSalary: 0,
settlementType: 1,
settlementType: 4,
minSalary: 0,
maxSalary: 0,
benefits: "",
......
This diff is collapsed.
......@@ -2,27 +2,44 @@
box-sizing: border-box;
display: flex;
flex-direction: column;
height: 100%;
background: #F3F4F8;
min-height: 100vh;
.title {
padding: 32rpx;
padding: 32rpx 0;
font-size: 48rpx;
font-weight: normal;
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
line-height: 54rpx;
white-space: nowrap;
color: #1b2026;
}
.form {
flex: 1;
padding: 32rpx;
font-size: 28rpx;
.from-item {
margin-top: 32rpx;
background-color: #fff;
box-sizing: border-box;
padding: 0 32rpx;
}
input {
font-size: 28rpx;
}
.placeholder {
color: #77818f;
}
.from-item:nth-child(1) {
margin-top: 0;
}
}
.footer {
padding: 16rpx 0;
border-top: 2rpx solid rgb(31 35 41 / 15%);
display: flex;
align-items: center;
justify-content: space-around;
width: 100%;
height: 100%;
}
}
<template>
<div class="page">
<div class="page1">
<NavBar :showIcon="true" :showTitle="true" title="岗位信息" backgroundBox="#FFFFFF"></NavBar>
<div class="title">填写企业信息</div>
<div class="title1">填写企业信息</div>
<div class="form">
<formItem title="企业(单位)名称">
<input type="text" v-model="pinias.formData.companyName" placeholder="请填写单位名称" />
......@@ -16,9 +16,15 @@
<textarea type="text" v-model="pinias.formData.companyIntro" placeholder="请输入简介" />
</formItem>
</div>
<div class="footer">
<button class="bottom-btn" @click="next">下一步</button>
</div>
<wd-tabbar
@tap="next"
custom-style="display: flex;justify-content: center !important;z-index:1;"
fixed
placeholder
safeAreaInsetBottom
>
<view class="footer"> <button class="foot-btn" @click="next">下一步</button></view>
</wd-tabbar>
</div>
</template>
......@@ -47,8 +53,37 @@ const next = () => {
<style lang="scss" scoped>
@import "./index.scss";
.page1 {
background: #fff;
box-sizing: border-box;
padding: 0 32rpx;
.title1 {
padding: 32rpx 0;
font-size: 48rpx;
font-weight: normal;
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
line-height: 54rpx;
white-space: nowrap;
color: #1b2026;
}
.foot-btn {
display: flex;
align-items: center;
justify-content: center;
width: 622rpx;
height: 80rpx;
color: #ffffff;
background: #1f86ff;
border-radius: 12rpx;
}
}
textarea {
width: 100%;
height: 108px;
height: 216rpx;
}
</style>
......@@ -23,9 +23,15 @@
<input type="number" v-model="params.phone" placeholder="请输入电话" />
</div>
</div>
<div class="footer">
<button class="bottom-btn" @click="submit">保存</button>
</div>
<wd-tabbar
@tap="next"
custom-style="display: flex;justify-content: center !important;z-index:1;"
fixed
placeholder
safeAreaInsetBottom
>
<view class="foot-btn" @click="submit">保存</view>
</wd-tabbar>
</div>
</template>
......@@ -123,9 +129,17 @@ const submit = () => {
}
}
}
.footer {
padding: 8px 0;
border-top: 1rpx solid #1f232918;
.foot-btn {
position: fixed;
display: flex;
align-items: center;
justify-content: center;
width: 622rpx;
height: 80rpx;
color: #ffffff;
background: #1f86ff;
border-radius: 12rpx;
}
}
</style>
......@@ -98,20 +98,20 @@ const navList = reactive([
removeToken();
},
text: "退出登录"
},
{
icon: new URL("@/static/image/user/loginout.png", import.meta.url).href,
url: "/pages/login/test",
fn: () => {
removeToken();
},
text: "退出登录(去测试登录)"
},
{
icon: new URL("@/static/image/user/loginout.png", import.meta.url).href,
url: "/pages/user/businessLicense/fillIn",
text: "企业认证"
}
// {
// icon: new URL("@/static/image/user/loginout.png", import.meta.url).href,
// url: "/pages/login/test",
// fn: () => {
// removeToken();
// },
// text: "退出登录(去测试登录)"
// },
// {
// icon: new URL("@/static/image/user/loginout.png", import.meta.url).href,
// url: "/pages/user/businessLicense/fillIn",
// text: "企业认证"
// }
//
]);
/* 个人信息 */
......
......@@ -6,7 +6,7 @@
<img v-if="params.logoPath" :src="evn.APP_IMAGE_BASE_API + params.logoPath" @click="chooseImage" />
<img v-else src="@/static/image/temp/defaultCompany.png" alt="" @click="chooseImage" />
<div class="name">{{ companyInfo.name }}</div>
<formItem title="营业执照" arrow :border="false" @click="jupmLicenseInfo">
<formItem style="margin-top: 80rpx" title="营业执照" arrow :border="false" @click="jupmLicenseInfo">
<p :class="`status${companyInfo.companyAudit?.status}`">{{ auditStatus }}</p>
</formItem>
</div>
......@@ -35,7 +35,7 @@
</formItem>
<div class="textarea-wrap">
<p class="label">公司介绍</p>
<textarea placeholder="请输入公司介绍" v-model="params.companyIntro" />
<textarea maxlength="500" placeholder="请输入公司介绍" v-model="params.companyIntro" />
</div>
</div>
</div>
......
......@@ -49,7 +49,7 @@
<view class="item">
<view class="label"> 有效期 </view>
<view class="content">
<wd-radio-group v-model="radio" shape="dot" inline :disabled="status != 2">
<wd-radio-group @change="change" v-model="radio" shape="dot" inline :disabled="status != 2">
<wd-radio :value="1">长期</wd-radio>
<wd-radio :value="2">具体时间</wd-radio>
</wd-radio-group>
......@@ -60,12 +60,12 @@
<wd-calendar
v-model="myLicenseValidityPeriod"
:disabled="radio == 1 && status != 2"
:min-date="new Date().getTime()"
:max-date="new Date('2059/01/01').getTime()"
:min-date="minDate"
:max-date="maxDate"
use-default-slot
>
<view :class="`content ${radio == 1 ? 'disabled' : ''}`">
{{ (myLicenseValidityPeriod && dayjs(myLicenseValidityPeriod).format("YYYY-MM-DD")) || "请选择" }}
{{ (myLicenseValidityPeriod && $formatTimestamp(myLicenseValidityPeriod, "YYYY-MM-DD")) || "请选择" }}
</view>
</wd-calendar>
</view>
......@@ -88,11 +88,21 @@ const companyName = ref("");
const myCode = ref("");
const myLicensePath = ref("");
let status = ref(1);
let myLicenseValidityPeriod = ref(4102329600000);
let myLicenseValidityPeriod = ref(new Date().getTime());
let companyInfo = reactive({});
let minDate = ref(new Date().getTime());
let maxDate = ref(new Date().getTime() + 1000 * 60 * 60 * 24 * 365);
onReady(() => {
getCompanyInfoApiFn();
});
function change(e) {
console.log(e);
if (e.value == 2) {
myLicenseValidityPeriod.value = new Date().getTime();
} else {
myLicenseValidityPeriod.value = 4102329600000;
}
}
function getCompanyInfoApiFn() {
getCompanyInfoApi().then(res => {
companyInfo = res.data;
......@@ -102,11 +112,11 @@ function getCompanyInfoApiFn() {
myCode.value = res.data.companyAudit.creditCode;
myLicenseValidityPeriod.value = res.data.licenseValidityPeriod;
if (res.data.licenseValidityPeriod == 4102329600000) {
radio.value = 1;
} else {
radio.value = 2;
}
// if (res.data.licenseValidityPeriod == 4102329600000) {
// radio.value = 1;
// } else {
// radio.value = 2;
// }
});
}
/* 选择图片 */
......
import axios from "axios";
import { getToken,removeToken } from "@/utils/token";
// const baseURL = "https://lygsh-api.wjzpgz.com/";
const baseURL = "http://192.168.11.179:8080/";
const baseURL = "https://lygsh-api.wjzpgz.com/";
// const baseURL = "http://192.168.11.181:8080/";
// 创建一个 axios 实例
const instance = axios.create({
baseURL, // 设置基础 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