123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488 |
- <template>
- <view>
- <view class="jobAll" :class="topY==true?'end':'start'" @touchstart="start" @touchend="end"
- @touchmove.stop="move">
- <view class="jobAll-search flex justify-center">
- <view class="jobAll-search-box">
- <u-dropdown :mask='false' active-color="#016BF6">
- <u-dropdown-item v-model="value1" title="岗位" @change="change1"
- :options="options1"></u-dropdown-item>
- <u-dropdown-item v-model="value2" title="经验" @change="change2"
- :options="options2"></u-dropdown-item>
- <u-dropdown-item v-model="value3" title="薪资" @change="change3"
- :options="options3"></u-dropdown-item>
- <u-dropdown-item v-model="value4" title="城市" @change="change4"
- :options="options4"></u-dropdown-item>
- </u-dropdown>
- </view>
- </view>
- <view class="jobAll-item flex justify-center">
- <view class="jobAll-item-box">
- <scroll-view scroll-y="true" v-if="list.length>0" style="width: 100%;height: 100%;"
- :refresher-enabled="true" :refresher-triggered="refresher" @refresherpulling="scrolltoupper"
- @refresherrefresh="refresherrefresh" @scrolltolower="scrolltolower">
- <view class="jobAll-item-box-item" v-for="(item,index) in list" :key="index"
- @tap.native="gotos(item.postPushId)">
- <!-- 标题-薪资 -->
- <view class="jobAll-item-box-item-title flex justify-between align-center">
- <view class="title-left flex align-center">
- <view class="job-title-text">
- <block v-if="isSameName(item.ruleClassifyName,item.stationName)">
- {{item.ruleClassifyName}}-
- </block>
- <block>
- {{item.stationName}}
- </block>
- </view>
- <!-- <view class="salary-text-box">
- <image src="../../static/images/index/jipinIcom.svg" class="jipin-icon" />
- <text class="jipin-text">急聘</text>
- </view> -->
- </view>
- <text class="salary-text">{{item.salaryRange}}</text>
- </view>
- <!-- 公司名称-公司人数 -->
- <view class="jobAll-item-box-item-name flex align-center">
- <text class="company-name" style="margin-right: 8rpx;">{{item.company?item.company.companyName:''}}</text>
- <text class="company-people" v-if="item.company">{{item.company?item.company.companyPeople:'0人'}}</text>
- </view>
- <!-- 职位标签 -->
- <view class="jobAll-item-box-item-label flex align-center flex-wrap">
- <text class="job-tag">{{item.education}}</text>
- <text class="job-tag">{{item.experience}}</text>
- <text class="job-tag">{{item.industry}}</text>
- </view>
- <!-- 公司简介-位置 -->
- <view class="jobAll-item-box-item-info flex justify-between align-center">
- <view class="jobAll-item-box-item-info-l flex align-center">
- <image :src="item.company?item.company.companyLogo:'../../static/logo.png'"
- style="width: 58rpx;height: 58rpx;border-radius: 50%;margin-right: 20rpx;" mode=""></image>
- <view class="company-info-text" v-if="item.company">
- {{item.company.companyLegalPerson?item.company.companyLegalPerson:'未知'}}·人事总监
- </view>
- <view class="reply-time">10分钟前回复</view>
- </view>
- <view class="location-text">
- {{item.distance}} {{item.county}} {{item.address}}
- </view>
- </view>
- <view class="jobAll-item-box-item-line" v-if="(index + 1) != list.length">
- </view>
- </view>
- </scroll-view>
- <empty v-else />
- </view>
- </view>
- </view>
- </view>
- </template>
- <script>
- import empty from '../empty.vue'
- export default {
- name: "btnPopous",
- components: {
- empty
- },
- props: {
- //公司id
- companyId: {
- type: String,
- default: ''
- },
- //城市数组
- cittArr: {
- type: Array,
- default: []
- },
- //薪资数组
- moneyArr: {
- type: Array,
- default: []
- },
- //经验数组
- jyArr: {
- type: Array,
- default: []
- },
- //岗位分类
- classify: {
- type: Array,
- default: []
- }
- },
- data() {
- return {
- refresher: false,
- list: [],
- clientX: '',
- clientY: '',
- topY: false,
- value1: 1,
- value2: 1,
- value3: 1,
- value4: 1,
- options1: [],
- options2: [],
- options3: [],
- options4: [],
- page: 1,
- pages: 1,
- limit: 10,
- projectName: '', //岗位名称
- address: '', //城市
- salaryRange: '', //薪资
- experience: '', //经验
- };
- },
- watch: {
- //城市
- cittArr(newArr, oldArr) {
- //拿到最新传递的城市数据,处理成需要的格式
- let arr = [{
- label: '全部',
- value: '',
- }]
- this.cittArr.map(item => {
- let obj = {
- label: item,
- value: item,
- }
- arr.push(obj)
- })
- this.options4 = arr
- },
- //岗位分类列表
- classify(newArr, oldArr) {
- //拿到最新传递的岗位数据,处理成需要的格式
- let arr = [{
- label: '全部',
- value: '',
- }]
- this.classify.map(item => {
- let obj = {
- label: item,
- value: item,
- }
- arr.push(obj)
- })
- this.options1 = arr
- },
- //经验
- jyArr(newArr, oldArr) {
- //拿到最新传递的经验数据,处理成需要的格式
- let arr = [{
- label: '全部',
- value: '',
- }]
- this.jyArr.map(item => {
- let obj = {
- label: item.value,
- value: item.value,
- }
- arr.push(obj)
- })
- this.options2 = arr
- },
- //薪资
- moneyArr(newArr, oldArr) {
- //拿到最新传递的薪资数据,处理成需要的格式
- let arr = [{
- label: '全部',
- value: '',
- }]
- this.moneyArr.map(item => {
- let obj = {
- label: item.value,
- value: item.value,
- }
- arr.push(obj)
- })
- this.options3 = arr
- },
- },
- created() {
- this.userGetPostPushList()
- },
- methods: {
- //判断岗位名称与职位名称是否相同(不区分大小写)
- isSameName(className, name) {
- let str1 = className.trim();
- let str2 = name.trim();
- if (str1.length !== str2.length) {
- return true;
- }
- return str1.toLowerCase() !== str2.toLowerCase();
- },
- change1(e) {
- this.projectName = e
- this.userGetPostPushList()
- },
- change2(e) {
- this.experience = e
- this.userGetPostPushList()
- },
- change3(e) {
- this.salaryRange = e
- this.userGetPostPushList()
- },
- change4(e) {
- this.address = e
- this.userGetPostPushList()
- },
- /**
- * 上拉加载更多
- */
- scrolltolower() {
- if (this.page < this.pages) {
- this.page += 1
- this.userGetPostPushList()
- }
- },
- /**
- * 获取岗位列表
- */
- userGetPostPushList() {
- let data = {
- companyId: this.companyId,
- page: this.page,
- limit: this.limit,
- ruleClassifyName: this.projectName, //岗位名称
- city: this.address, //城市
- salaryRange: this.salaryRange, //薪资
- experience: this.experience, //经验
- }
- this.$Request.getT("/app/postPush/userGetPostPushList", data).then(res => {
- if (res.code == 0) {
- this.pages = res.data.pages
- if (this.page == 1) {
- this.list = res.data.records
- } else {
- this.list = [...this.list, ...res.data.records]
- }
- }
- })
- },
- gotos(postPushId) {
- console.log('rrrrrrrrrrrrrrrrrrrrrrrr')
- uni.navigateTo({
- url: '/pages/index/game/order?postPushId=' + postPushId
- })
- },
- refresherrefresh() {
- this.refresher = false
- },
- scrolltoupper(e) {
- // this.refresher = true
- this.refresher = true
- this.topY = false
- },
- start(e) {
- this.clientX = e.changedTouches[0].clientX
- this.clientY = e.changedTouches[0].clientY
- },
- end(e) {
- let subX = e.changedTouches[0].clientX - this.clientX
- let subY = e.changedTouches[0].clientY - this.clientY
- // 向下拉动超过150px时直接关闭弹窗
- if (subY > 150) {
- this.topY = false
- // 通知父组件关闭弹窗
- this.$emit('closePopup')
- } else if (subY < -50) {
- this.topY = true
- }
- },
- move(e) {
- },
- }
- }
- </script>
- <style lang="scss">
- .jobAll {
- width: 100%;
- height: 90vh;
- background-color: rgba(253, 253, 253, 1);
- border-radius: 60rpx 60rpx 0px 0px;
- padding: 0 20rpx;
- position: fixed;
- z-index: 99999;
- box-shadow: 0 -4rpx 20rpx rgba(0, 0, 0, 0.1);
- .jobAll-search {
- width: 100%;
- margin-top: 20rpx;
- .jobAll-search-box {
- width: 686rpx;
- height: 100%;
- }
- }
- .jobAll-item {
- width: 100%;
- height: calc(90vh - 120rpx);
- margin-top: 20rpx;
- .jobAll-item-box {
- width: 100%;
- height: 100%;
- .jobAll-item-box-item {
- width: 100%;
- background-color: #ffffff;
- border-radius: 12rpx;
- margin-bottom: 20rpx;
- padding: 20rpx;
- border: 0.5px solid rgba(227, 231, 236, 1);
- background: rgba(253, 253, 253, 1);
- .jobAll-item-box-item-name {
- margin-top: 14rpx;
- color: #999999;
- font-size: 28rpx;
- font-weight: 500;
- }
- .jobAll-item-box-item-label {
- margin-top: 14rpx;
- }
- .jobAll-item-box-item-info {
- font-size: 26rpx;
- margin-top: 20rpx;
- .jobAll-item-box-item-info-l {
- color: #1A1A1A;
- display: flex;
- align-items: center;
- gap: 12rpx;
- }
- }
- .jobAll-item-box-item-line {
- width: 100%;
- border-bottom: 1rpx solid #E6E6E6;
- margin-top: 30rpx;
- }
- }
- }
- }
- }
- .start {
- border-radius: 60rpx 60rpx 0px 0px !important;
- bottom: -70vh;
- transition-duration: .5s
- }
- .end {
- border-radius: 60rpx 60rpx 0px 0px !important;
- bottom: 0;
- transition-duration: .5s
- }
- // 首页样式
- .job-title-text {
- color: var(--Grayscale/Grayscale 100, rgba(23, 23, 37, 1));
- font-family: DM Sans;
- font-size: 38rpx;
- font-weight: 700;
- line-height: 24px;
- letter-spacing: undefined;
- text-align: left;
- }
- .salary-text-box {
- display: flex;
- align-items: center;
- margin-left: 16rpx;
- .jipin-icon {
- width: 32rpx;
- height: 32rpx;
- margin-right: 8rpx;
- }
- .jipin-text {
- color: #FF6B6B;
- font-size: 24rpx;
- font-weight: 600;
- }
- }
- .salary-text {
- color: rgba(1, 107, 246, 1);
- font-family: DM Sans;
- font-size: 28rpx;
- font-weight: 700;
- line-height: 20px;
- letter-spacing: 0.5%;
- text-align: right;
- }
- .company-name {
- color: var(--Grayscale/Grayscale 60, rgba(156, 164, 171, 1));
- font-family: DM Sans;
- font-size: 24rpx;
- font-weight: 400;
- line-height: 20px;
- letter-spacing: 0.5%;
- text-align: left;
- }
- .company-people {
- color: var(--Grayscale/Grayscale 60, rgba(156, 164, 171, 1));
- font-family: DM Sans;
- font-size: 24rpx;
- font-weight: 400;
- line-height: 20px;
- letter-spacing: 0.5%;
- text-align: left;
- }
- .job-tag {
- height: 42rpx;
- display: flex;
- flex-direction: row;
- justify-content: center;
- align-items: center;
- padding: 8rpx;
- border-radius: 8rpx;
- background: rgba(198, 198, 198, 0.1);
- margin-right: 16rpx;
- color: rgba(153, 153, 153, 1);
- font-size: 24rpx;
- }
- .company-info-text,
- .location-text {
- color: rgba(156, 164, 171, 1);
- font-family: DM Sans;
- font-size: 20rpx;
- font-weight: 400;
- line-height: 40rpx;
- letter-spacing: 0.5%;
- text-align: left;
- }
- .reply-time {
- display: flex;
- flex-direction: row;
- justify-content: center;
- align-items: center;
- padding: 8rpx;
- font-family: DM Sans;
- font-size: 20rpx;
- font-weight: 400;
- line-height: 40rpx;
- letter-spacing: 0.5%;
- text-align: left;
- border-radius: 12rpx;
- background: #ECE1FD;
- color: #8858C5;
- }
- </style>
|