cyl/master-im
wangxia 5 months ago
parent e17f430814
commit d38d38eb57

@ -1,19 +1,20 @@
let jobInfo = {
job_list:"/assistant/custom/job/v2/list",// 职位列表
job_detail:"/assistant/custom/job/v2/detail",// 职位详情
job_personDetail:"/yishoudan/custom/job/detail",// 获取自有职位详情
job_recordJob:"/assistant/apply/handler/add",// 职位报名
job_watch:"/assistant/custom/job/ignore/add",// 查看职位次数
job_addJob:"/yishoudan/custom/job/addRecord",// 添加职位
job_updateJob:"/yishoudan/custom/job/updateRecord",// 编辑提交职位
job_setStatus:"/assistant/custom/job/v2/recruitment",// 开停招
job_hotList:"/assistant/custom/job/v2/recommend/list",// 推荐列表
job_getDetailInList:"/assistant/custom/job/v2/getInfo",// 职位列表获取职位详情
job_delJob:"/yishoudan/custom/job/del",// 删除职位
job_updateStatus:"/assistant/custom/job/ignore/add",// 更新状态
job_getPolicyPerson:'/yishoudan/custom/job/getPolicyStr',// 获取自有职位政策
job_getPolicyShare:'/yishoudan/store/job/getPolicyByStoreJobId',// 获取共享职位政策
job_ai:'/yishoudan/common/structure/get'// 获取ai结果
job_list: "/assistant/custom/job/v2/list",// 职位列表
job_detail: "/assistant/custom/job/v2/detail",// 职位详情
job_personDetail: "/yishoudan/custom/job/detail",// 获取自有职位详情
job_recordJob: "/assistant/apply/handler/add",// 职位报名
job_watch: "/assistant/custom/job/ignore/add",// 查看职位次数
job_addJob: "/yishoudan/custom/job/addRecord",// 添加职位
job_updateJob: "/yishoudan/custom/job/updateRecord",// 编辑提交职位
job_setStatus: "/assistant/custom/job/v2/recruitment",// 开停招
job_hotList: "/assistant/custom/job/v2/recommend/list",// 推荐列表
job_getDetailInList: "/assistant/custom/job/v2/getInfo",// 职位列表获取职位详情
job_delJob: "/yishoudan/custom/job/del",// 删除职位
job_updateStatus: "/assistant/custom/job/ignore/add",// 更新状态
job_getPolicyPerson: '/yishoudan/custom/job/getPolicyStr',// 获取自有职位政策
job_getPolicyShare: '/yishoudan/store/job/getPolicyByStoreJobId',// 获取共享职位政策
job_ai: '/yishoudan/common/structure/get', // 获取ai结果
yi_job_class_new: "/labels/getListByTypeAndIndustry", // 新职位要求接口(新)
}
export default jobInfo;

@ -12,7 +12,8 @@
>
<g-empty :text="emptyText" :subText="emptySubText" style="margin-top: 30px" />
<view class="g_mt_32" v-if="isShowLoginBtn">
<g-button btnText="去登录" size="small" @clickBtn="goLogin" />
<!-- <g-button btnText="去登录" size="small" @clickBtn="goLogin" /> -->
<g-button :btnText="'登录查看'" type="primary" @clickBtn="goLogin" />
</view>
</view>
<view v-if="speed > 0" class="link">

@ -0,0 +1,74 @@
# slider-range
uni-app 滑块区间选择组件
可根据具体需求,修改、自定义其他内容。
## 属性说明
|属性名|类型|默认值|说明|
| -- | -- | --|--|
| value | Array<Number, Number> | [0,100] |滑块已选中区间的值|
| min | Number| 0 | 滑块区间最小值 |
| max | Number | 100 | 滑块区间最大值 |
| step | Number | 1 | 拖动时的步长 |
| disabled | Boolean | false | 是否为禁用状态 |
| height | Number | 50 | 滑块容器高度 |
| barHeight | Number | 5 | 滑块进度条高度 |
| backgroundColor | String | #e9e9e9| 滑块进度条背景色|
| activeColor | String | #1aad19 | 已选中区间进度条颜色|
| blockSize | Number | 20 | 滑块大小 |
| blockColor | String | #fff | 滑块颜色 |
| decorationVisible | Boolean | false | 是否显示滑块内装饰元素|
| tipVisible | Boolean | true | 是否显示滑块值提示文本 |
| fomat| Function | | 滑块值提示文本格式化函数,**注意**:小程序中此属性必传,否则会报错,如果无需格式化,可以简单返回原始值: `format(val) { return val }`H5中可以不传。|
## 使用示例
```html
<slider-range
:value="rangeValue"
:min="rangeMin"
:max="rangMax"
:step="5"
:bar-height="3"
:block-size="26"
background-color="#EEEEF6"
active-color="#FF6B00"
:format="format"
:decorationVisible="true"
@change="handleRangeChange"
></slider-range>
```
```javascript
import SliderRange from '../components/slider-range/index.vue'
export default {
components: {
SliderRange
},
data() {
return {
rangeMin: 5,
rangMax: 200,
rangeValue: [10, 50]
}
},
methods: {
format(val) {
return val + '%'
},
handleRangeChange(e) {
this.rangeValue = e
}
}
}
```
效果图
![](http://images.alisali.cn/img_20190715175325.png)

@ -0,0 +1,381 @@
<template>
<view
class="slider-range"
:class="{ disabled: disabled }"
:style="{ paddingLeft: blockSize / 2 + 'px', paddingRight: blockSize / 2 + 'px' }"
style="background-color: #fff;"
>
<view class="slider-range-inner" :style="{ height: height + 'px' }">
<view
class="slider-bar"
:style="{
height: barHeight + 'px',
}"
>
<!-- 背景条 -->
<view
class="slider-bar-bg"
:style="{
backgroundColor: backgroundColor,
}"
></view>
<!-- 滑块实际区间 -->
<view
class="slider-bar-inner"
:style="{
width: ((values[1] - values[0]) / (max - min)) * 100 + '%',
left: lowerHandlePosition + '%',
backgroundColor: activeColor,
}"
></view>
</view>
<!-- 滑动块- -->
<view
class="slider-handle-block"
:class="{ decoration: decorationVisible }"
:style="{
backgroundColor: blockColor,
width: blockSize + 'px',
height: blockSize + 'px',
left: lowerHandlePosition + '%',
}"
@touchstart="_onTouchStart"
@touchmove="_onBlockTouchMove"
@touchend="_onBlockTouchEnd"
data-tag="lowerBlock"
></view>
<!-- 滑动块- -->
<view
class="slider-handle-block"
:class="{ decoration: decorationVisible }"
:style="{
backgroundColor: blockColor,
width: blockSize + 'px',
height: blockSize + 'px',
left: higherHandlePosition + '%',
}"
@touchstart="_onTouchStart"
@touchmove="_onBlockTouchMove"
@touchend="_onBlockTouchEnd"
data-tag="higherBlock"
></view>
<!-- 滑块值提示 -->
<view v-if="tipVisible" class="range-tip" :style="lowerTipStyle">{{ format(values[0]) }}</view>
<view v-if="tipVisible" class="range-tip" :style="higherTipStyle">{{ format(values[1]) }}</view>
</view>
</view>
</template>
<script>
export default {
components: {},
props: {
//
value: {
type: Array,
default: function() {
return [0, 100]
},
},
//
min: {
type: Number,
default: 0,
},
//
max: {
type: Number,
default: 100,
},
step: {
type: Number,
default: 1,
},
format: {
type: Function,
default: function(val) {
return val
},
},
disabled: {
type: Boolean,
default: false,
},
//
height: {
height: Number,
default: 50,
},
//
barHeight: {
type: Number,
default: 5,
},
//
backgroundColor: {
type: String,
default: '#e9e9e9',
},
//
activeColor: {
type: String,
default: '#1aad19',
},
//
blockSize: {
type: Number,
default: 20,
},
blockColor: {
type: String,
default: '#fff',
},
tipVisible: {
type: Boolean,
default: true,
},
decorationVisible: {
type: Boolean,
default: false,
},
},
data() {
return {
values: [this.min, this.max],
startDragPos: 0, //
startVal: 0, //
}
},
computed: {
//
lowerHandlePosition() {
return ((this.values[0] - this.min) / (this.max - this.min)) * 100
},
//
higherHandlePosition() {
return ((this.values[1] - this.min) / (this.max - this.min)) * 100
},
lowerTipStyle() {
if (this.lowerHandlePosition < 90) {
return `left: ${this.lowerHandlePosition}%;`
}
return `right: ${100 - this.lowerHandlePosition}%;transform: translate(50%, -100%);`
},
higherTipStyle() {
if (this.higherHandlePosition < 90) {
return `left: ${this.higherHandlePosition}%;`
}
return `right: ${100 - this.higherHandlePosition}%;transform: translate(50%, -100%);`
},
},
created: function() {},
onLoad: function(option) {},
watch: {
//
value: {
immediate: true,
handler(newVal, oldVal) {
if (this._isValuesValid(newVal) && (newVal[0] !== this.values[0] || newVal[1] !== this.values[1])) {
this._updateValue(newVal)
}
},
},
},
methods: {
_updateValue(newVal) {
//
if (this.step >= this.max - this.min) {
throw new RangeError('Invalid slider step or slider range')
}
let newValues = []
if (Array.isArray(newVal)) {
newValues = [newVal[0], newVal[1]]
}
if (typeof newValues[0] !== 'number') {
newValues[0] = this.values[0]
} else {
newValues[0] = Math.round((newValues[0] - this.min) / this.step) * this.step + this.min
}
if (typeof newValues[1] !== 'number') {
newValues[1] = this.values[1]
} else {
newValues[1] = Math.round((newValues[1] - this.min) / this.step) * this.step + this.min
}
//
if (this.values[0] === newValues[0] && this.values[1] === newValues[1]) {
return
}
//
if (newValues[0] < this.min) {
newValues[0] = this.min
}
//
if (newValues[1] > this.max) {
newValues[1] = this.max
}
// 使
if (newValues[0] >= newValues[1]) {
//
if (newValues[0] === this.values[0]) {
newValues[1] = newValues[0] + this.step
} else {
//
newValues[0] = newValues[1] - this.step
}
}
this.values = newValues
this.$emit('change', this.values)
},
_onTouchStart: function(event) {
if (this.disabled) {
return
}
this.isDragging = true
let tag = event.target.dataset.tag
//h5
let e = event.changedTouches ? event.changedTouches[0] : event
this.startDragPos = e.pageX
this.startVal = tag === 'lowerBlock' ? this.values[0] : this.values[1]
},
_onBlockTouchMove: function(e) {
if (this.disabled) {
return
}
this._onDrag(e)
},
_onBlockTouchEnd: function(e) {
if (this.disabled) {
return
}
this.isDragging = false
this._onDrag(e)
},
_onDrag(event) {
if (!this.isDragging) {
return
}
let view = uni
.createSelectorQuery()
.in(this)
.select('.slider-range-inner')
view
.boundingClientRect(data => {
let sliderWidth = data.width
const tag = event.target.dataset.tag
let e = event.changedTouches ? event.changedTouches[0] : event
let diff = ((e.pageX - this.startDragPos) / sliderWidth) * (this.max - this.min)
let nextVal = this.startVal + diff
if (tag === 'lowerBlock') {
this._updateValue([nextVal, null])
} else {
this._updateValue([null, nextVal])
}
})
.exec()
},
_isValuesValid: function(values) {
return Array.isArray(values) && values.length == 2
},
},
}
</script>
<style scoped lang="less">
.slider-range {
position: relative;
padding-top: 20rpx;
padding-bottom: 10rpx;
}
.slider-range-inner {
position: relative;
width: 100%;
}
.slider-range.disabled .slider-bar-inner {
opacity: 0.35;
}
.slider-range.disabled .slider-handle-block {
cursor: not-allowed;
}
.slider-bar {
position: absolute;
top: 50%;
left: 0;
right: 0;
transform: translateY(-50%);
}
.slider-bar-bg {
position: absolute;
width: 100%;
height: 100%;
border-radius: 10000px;
z-index: 10;
}
.slider-bar-inner {
position: absolute;
width: 100%;
height: 100%;
border-radius: 10000px;
z-index: 11;
}
.slider-handle-block {
position: absolute;
top: 50%;
transform: translate(-50%, -50%);
border-radius: 50%;
// box-shadow: 0 0 3px 2px rgba(37, 69, 255, 0.5);
border: 1px solid #3578f6;
z-index: 12;
}
.slider-handle-block.decoration::before {
position: absolute;
content: '';
width: 6upx;
height: 24upx;
top: 50%;
left: 29%;
transform: translateY(-50%);
background: #3578f6;
border-radius: 3upx;
z-index: 13;
}
.slider-handle-block.decoration::after {
position: absolute;
content: '';
width: 6upx;
height: 24upx;
top: 50%;
right: 29%;
transform: translateY(-50%);
background: #3578f6;
border-radius: 3upx;
z-index: 13;
}
.range-tip {
position: absolute;
top: 0;
font-size: 24upx;
color: #666;
transform: translate(-50%, -100%);
}
</style>

@ -0,0 +1,92 @@
<template>
<view class="demo-slider-range">
<view class="section-title">普通用法</view>
<view class="slider-item">
<slider-range
:value="slider1.rangeValue"
:min="slider1.min"
:max="slider1.max"
:step="slider1.step"
:bar-height="barHeight"
:block-size="blockSize"
block-color="#3578f6"
:background-color="backgroundColor"
:format="format1"
@change="handleRangeChange"
></slider-range>
</view>
<view class="section-title">自定义</view>
<view class="slider-item">
<slider-range
:value="slider2.rangeValue"
:min="slider2.min"
:max="slider2.max"
:step="slider2.step"
:bar-height="barHeight"
:block-size="blockSize"
block-color="#3578f6"
:background-color="backgroundColor"
:active-color="slider2.activeColor"
:format="format2"
:decorationVisible="slider2.decorationVisible"
@change="handleRangeChange"
></slider-range>
</view>
</view>
</template>
<script>
import SliderRange from '../../components/slider-range/index.vue'
export default {
components: {
SliderRange,
},
data() {
return {
barHeight: 3,
blockSize: 26,
backgroundColor: '#EEEEF6',
slider1: {
min: 50,
max: 200,
step: 10,
rangeValue: [50, 150],
},
slider2: {
rangeMin: 0,
rangMax: 100,
rangeValue: [8, 80],
step: 1,
activeColor: '#FF6B00',
decorationVisible: true,
},
}
},
methods: {
format1(val) {
return val
},
format2(val) {
return `${val}%`
},
handleRangeChange(e) {
this.rangeValue = e
},
},
}
</script>
<style>
.demo-slider-range {
background-color: #fff;
padding: 100rpx 40rpx 0;
}
.section-title {
padding: 0 0 20rpx;
color: #666;
}
.slider-item:not(:last-child) {
margin-bottom: 100rpx;
}
</style>

@ -1,15 +1,15 @@
<template>
<div>
<view class="g_flex_column_between g_flex_1" style="background-color: #ededed; height: 100%; padding-top: 100px">
<div class="g_bg_page">
<view class="g_flex_column_between g_flex_1" style=" height: 100%; padding-top: 100px">
<view class="g_flex_column_start flex_center">
<view class="iconfont icon-info-circle-fill g_c_027" style="font-size: 80px"> </view>
<view class="g_fs_17 g_mb_16 g_mt_16"> 温馨提示 </view>
<view class="g_fs_13 g_c_9 g_mb_32 g_text_c g_ml_20 g_mr_20"> {{ !isLogin ? "相关功能仅对注册用户开放,请注册登录后查看。" : "平台仅面向企业用户开放,您需完成企业认证后使用。" }} </view>
<view class="g_fs_13 g_c_9 g_mb_32 g_text_c g_ml_20 g_mr_20"> {{ "相关功能仅对注册用户开放,请注册登录后查看。" }} </view>
</view>
<view class="" style="margin-bottom: 80px">
<g-button :btnText="!isLogin ? '登录查看' : '马上认证'" type="primary" @clickBtn="goPage('/root/other/tobeAgencyChoose')" />
<view class=""></view>
<g-button :btnText="'登录查看'" type="primary" @clickBtn="goPage('/root/other/tobeAgencyChoose')" />
<view class=""></view>
<!-- <view class="g_c_sub g_flex_row_center flex_center g_fs_14 g_mt_32" @click="serverPopShow = true"> <i class="iconfont icon-kefu"> </i>联系客服 </view> -->
</view>
</view>

@ -26,6 +26,7 @@ import gPanelRecord from './components/panel/record.vue';
import gPanelTime from './components/panel/time.vue';
import gPanelTabbar from './components/panel/tabbar.vue';
import gPanelFixed from './components/panel/fixed.vue';
import gFilter from './pages/home/child/filter.vue';
import { createSSRApp } from 'vue'
export function createApp () {
const app = createSSRApp(App)
@ -50,6 +51,7 @@ export function createApp () {
app.component('g-panel-time', gPanelTime);
app.component('g-panel-tabbar', gPanelTabbar);
app.component('g-panel-fixed', gPanelFixed);
app.component('g-filter', gFilter);
app.config.globalProperties.api = apiInfo;
app.config.globalProperties.G = Object.assign(G, Ajax, {

@ -46,7 +46,7 @@ export default {
onShareAppMessage() {
return {
title: " ",
imageUrl: "../../static/image/fdzsshare.png",
imageUrl: "https://matripe-cms.oss-cn-beijing.aliyuncs.com/dailibaoming/APP/shareCard0609.png",
};
// return this.G.shareFun();
},

@ -0,0 +1,716 @@
<template>
<view class="gjFixed" v-if="show == 'special'" @click.stop @touchmove.stop.prevent>
<view class="filterContainer filterBox" style>
<scroll-view class style="padding: 0; background-color: #f5f5f5" scroll-y>
<template v-for="item in anchorList">
<view :class="item.id == filterTo ? 'filterActive' : ''" class="g_c_3 g_fw_600" style="width: 84px; padding: 12px 0" @click="goAnchor(item)">{{ item.name }}</view>
</template>
</scroll-view>
<scroll-view class=" " :data-filter-to="filterTo" :scroll-into-view="filterTo" scroll-with-animation style="width: calc(100% - 100px); padding: 0 8px" scroll-y>
<view style="padding: 0 10px">
<view class="sub" id="age">
<view class="title">年龄</view>
<view class="content g_bg_f">
<slider-range style="width: 98vw" class="g_bg_f" :value="rangeValue" :min="rangeMin" :max="rangMax" :step="1" :bar-height="3" :height="20" :format="format" :block-size="26" :active-color="'#3578f6'" :decorationVisible="true" @change="handleRangeChange"></slider-range>
</view>
</view>
<view class="sub" id="gender">
<view class="title">性别</view>
<view class="content">
<view @click.stop="setActive($event, item.id, index, 'sex')" :class="item.active == item.id ? 'active' : ''" hover-class="none" :hover-stop-propagation="false" v-for="(item, index) in filterData.sex" :key="index">
{{ item.name }}
</view>
</view>
</view>
<!-- <view class="sub" id="class" >
<view class="title">分类</view>
<view class="content">
<view @click.stop="setActive($event, item.id, index, 'classifyList')" :class="item.active != 0 ? 'active' : ''" hover-class="none" :hover-stop-propagation="false" v-for="(item, index) in filterData.classifyList" :key="index"> {{ item.name }}</view>
</view>
</view> -->
<view class="sub" id="xzfl">
<view class="title">薪资待遇</view>
<view class="content">
<view @click="clearArray(1)" :class="filterData.jobFilter.tagArray1.some((item) => item.active != 0) ? '' : 'active'">不限</view>
<view @click.stop="setActive($event, item.id, index, 'tagArray1')" :class="item.active != 0 ? 'active' : ''" hover-class="none" :hover-stop-propagation="false" v-for="(item, index) in filterData.jobFilter.tagArray1" :key="index"> {{ item.name }}</view>
</view>
</view>
<view class="sub" id="ssbz">
<view class="title">吃饭住宿</view>
<view class="content">
<view @click="clearArray(3)" :class="filterData.jobFilter.tagArray3.some((item) => item.active != 0) ? '' : 'active'">不限</view>
<view @click.stop="setActive($event, item.id, index, 'tagArray3')" :class="item.active != 0 ? 'active' : ''" hover-class="none" :hover-stop-propagation="false" v-for="(item, index) in filterData.jobFilter.tagArray3" :key="index"> {{ item.name }}</view>
</view>
</view>
<view class="sub" id="bzxx">
<view class="title">工作休息</view>
<view class="content">
<view @click="clearArray(0)" :class="filterData.jobFilter.tagArray0.some((item) => item.active != 0) ? '' : 'active'">不限</view>
<view @click.stop="setActive($event, item.id, index, 'tagArray0')" :class="item.active != 0 ? 'active' : ''" hover-class="none" :hover-stop-propagation="false" v-for="(item, index) in filterData.jobFilter.tagArray0" :key="index"> {{ item.name }}</view>
</view>
</view>
<view class="sub" id="msts">
<view class="title">面试特色</view>
<view class="content">
<view @click="clearArray(4)" :class="filterData.jobFilter.tagArray4.some((item) => item.active != 0) ? '' : 'active'">不限</view>
<view @click.stop="setActive($event, item.id, index, 'tagArray4')" :class="item.active != 0 ? 'active' : ''" hover-class="none" :hover-stop-propagation="false" v-for="(item, index) in filterData.jobFilter.tagArray4" :key="index"> {{ item.name }}</view>
</view>
</view>
<view class="sub" id="qtts">
<view class="title">其它特色</view>
<view class="content">
<view @click="clearArray(2)" :class="filterData.jobFilter.tagArray2.some((item) => item.active != 0) ? '' : 'active'">不限</view>
<view @click.stop="setActive($event, item.id, index, 'tagArray2')" :class="item.active == item.id ? 'active' : ''" hover-class="none" :hover-stop-propagation="false" v-for="(item, index) in filterData.jobFilter.tagArray2" :key="index"> {{ item.name }}</view>
</view>
</view>
</view>
</scroll-view>
</view>
<view class="btnBox bt1" catchtap>
<button class="clearFilter" data-type="innerclear" @click="clearFilter"></button>
<button class="normalBtn loginOut" @click="toList"></button>
</view>
</view>
</template>
<script>
import SliderRange from "../../../components/primewind-sliderrange/components/primewind-sliderrange/index.vue";
export default {
components: {
SliderRange,
},
props: {
getFilterDataNew: {
type: Object,
default: () => {
return {};
},
},
show: {
type: String,
default: () => {
return {};
},
},
top: {
type: String,
default: () => {
return "43px";
},
},
},
watch: {
getFilterDataNew: {
handler(newValue, oldValue) {
var that = this;
console.log("筛选组件 newValue", JSON.parse(JSON.stringify(newValue)));
console.log("筛选组件 oldValue", JSON.parse(JSON.stringify(oldValue)));
// if (newValue != oldValue) {
console.log("筛选组件:有变化");
if (newValue.ageRangeStr != "" && newValue.ageRangeStr != "16-60") {
this.rangeValue = newValue.ageRangeStr.split("-").map((item) => Number(item));
} else {
this.rangeValue = [16, 60];
}
if (newValue.sex == -1) {
this.sex = -1;
this.filterData.sex.forEach((item) => {
item.active = 0;
this.filterData.sex[0].active = -1;
});
console.log("this.filterData.sex", this.filterData.sex);
} else {
this.filterData.sex.forEach((item) => {
item.active = 0;
this.filterData.sex[Number(newValue.sex)].active = newValue.sex;
});
}
that.filterData.classifyList.forEach((item) => {
item.active = 0;
});
if (newValue.jobSpecialLabelObjects) {
newValue.jobCategoryLabelObjects.forEach((obj) => {
// active
const index = that.filterData.classifyList.findIndex((item) => item.id === obj.id);
if (index != -1) {
that.filterData.classifyList[index].active = obj.id;
} else {
that.filterData.classifyList[index].active = 0;
}
});
that.jobCategoryLabelIds = that.filterData.classifyList.filter((item) => item.active !== 0).map((item) => item.id);
that.allSpecial.forEach((item) => {
item.active = 0;
});
}
if (newValue.jobSpecialLabelObjects) {
newValue.jobSpecialLabelObjects.forEach((obj) => {
// active
const index = that.allSpecial.findIndex((item) => item.id === obj.id);
if (index != -1) {
that.allSpecial[index].active = obj.id;
}
});
that.jobSpecialLabelIds = that.allSpecial.filter((item) => item.active !== 0).map((item) => item.id);
}
if (newValue.ageRangeStr != "" && newValue.ageRangeStr != "16-60") {
this.rangeValue = newValue.ageRangeStr.split("-").map((item) => Number(item));
this.ageRangeStr = newValue.ageRangeStr;
} else {
this.rangeValue = [16, 60];
}
if (newValue.sex == -1) {
this.sex = -1;
this.filterData.sex.forEach((item) => {
item.active = 0;
this.filterData.sex[0].active = -1;
});
console.log("this.filterData.sex", this.filterData.sex);
} else {
this.filterData.sex.forEach((item) => {
item.active = 0;
this.filterData.sex[Number(newValue.sex)].active = newValue.sex;
});
console.log("newValue.sex +++++++++++++++++++++ newValue.sex", newValue.sex);
this.sex = newValue.sex;
}
if (newValue.labelNames) {
let digui = function () {
setTimeout(() => {
if (that.filterData.jobFilter.tagArray0.length > 0) {
for (const k in that.filterData.jobFilter) {
if (k == "tagArray0" || k == "tagArray1" || k == "tagArray2" || k == "tagArray3" || k == "tagArray4") {
that.filterData.jobFilter[k].forEach((item) => {
newValue.labelNames.split(" ").forEach((label) => {
if (item.name == label) {
item.active = item.id;
}
});
});
}
console.log("this.filterData.jobFilter", that.filterData.jobFilter);
}
that.toList();
} else {
digui();
}
}, 100);
};
digui();
}
// } else {
// console.log("");
// }
},
deep: true,
},
},
data() {
return {
rangeMin: 16,
rangMax: 60,
rangeValue: [16, 60],
ageRangeStr: "",
sex: "-1",
jobCategoryLabelIds: [],
jobSpecialLabelIds: [],
filterObj: {},
totalList: [],
allSpecial: [],
appid: getApp().globalData.appId,
filterData: {
sex: [
{
name: "不限",
id: -1,
active: -1,
},
{
name: "收男工",
id: 1,
active: 0,
},
{
name: "收女工",
id: 2,
active: 0,
},
{
name: "男女都收",
id: 3,
active: 0,
},
],
jobFilter: {
tagArray0: [],
tagArray1: [],
tagArray2: [],
tagArray3: [],
tagArray4: [],
},
classifyList: [],
},
anchorList: [
{
id: "age",
name: "性别年龄",
},
// {
// id: "gender",
// name: "",
// },
// {
// id: "class",
// name: "",
// },
{
id: "xzfl",
name: "薪资福利",
},
{
id: "ssbz",
name: "吃饭住宿",
},
{
id: "bzxx",
name: "班制休息",
},
{
id: "msts",
name: "面试特色",
},
{
id: "qtts",
name: "其他特色",
},
],
filterTo: "age", //
};
},
mounted() {
// this.getType();
this.getClass();
},
onShow() {
// this.getType();
},
methods: {
format(val) {
return val;
},
handleRangeChange(e) {
console.log(e);
this.rangeValue = e;
this.ageRangeStr = e[0] + "-" + e[1];
},
doNothing() {},
toList() {
var that = this;
console.log("this.sex", this.sex);
this.filterObj["sex"] = this.sex;
this.filterObj["ageRangeStr"] = this.ageRangeStr;
this.jobSpecialLabelIds = [];
//
this.filterObj["jobCategoryLabelIds"] = this.jobCategoryLabelIds.join(",");
for (const k in this.filterData.jobFilter) {
if (k == "tagArray0" || k == "tagArray1" || k == "tagArray2" || k == "tagArray3" || k == "tagArray4") {
this.filterData.jobFilter[k].forEach((item) => {
if (item.active != 0) {
this.jobSpecialLabelIds.push(item.id);
}
});
}
}
this.filterObj["jobSpecialLabelIds"] = this.jobSpecialLabelIds.join(",");
// id
const jobCategoryLabelObjects = that.filterData.classifyList.filter((item) => this.jobCategoryLabelIds.includes(item.id));
console.log(jobCategoryLabelObjects);
// id()
const jobSpecialLabelObjects = that.totalList.filter((item) => this.jobSpecialLabelIds.includes(item.id));
console.log(jobSpecialLabelObjects);
this.filterObj.jobCategoryLabelObjects = jobCategoryLabelObjects;
this.filterObj.jobSpecialLabelObjects = jobSpecialLabelObjects;
this.$emit("filterObj", this.filterObj);
},
clearFilter() {
var that = this;
console.log("cleclecleclecleclecle");
this.filterObj["sex"] = -1;
this.filterObj["ageRangeStr"] = "";
this.rangeValue = [16, 60];
//
this.filterObj["jobCategoryLabelIds"] = "";
this.filterObj["jobSpecialLabelIds"] = "";
this.filterObj["jobSpecialLabelObjects"] = [];
this.filterObj["jobCategoryLabelObjects"] = [];
this.jobCategoryLabelIds = [];
this.jobSpecialLabelIds = [];
this.filterData.sex.forEach((item) => {
item.active = 0;
this.filterData.sex[0].active = -1;
});
this.filterData["ageRangeStr"] = "";
this.filterData.classifyList.forEach((item) => {
item.active = 0;
});
this.clearArray();
console.log(that.filterData);
setTimeout(() => {
this.rangeValue = [16, 60];
that.$emit("filterObj", that.filterObj);
}, 100);
},
clearArray(type) {
console.log(type);
if (type || type == 0) {
this["clearArray" + type]();
} else {
this.clearArray0();
this.clearArray1();
this.clearArray2();
this.clearArray3();
this.clearArray4();
}
},
clearArray0() {
this.filterData.jobFilter.tagArray0.forEach((item) => {
item.active = 0;
});
},
clearArray1() {
this.filterData.jobFilter.tagArray1.forEach((item) => {
item.active = 0;
});
},
clearArray2() {
this.filterData.jobFilter.tagArray2.forEach((item) => {
item.active = 0;
});
},
clearArray3() {
this.filterData.jobFilter.tagArray3.forEach((item) => {
item.active = 0;
});
},
clearArray4() {
this.filterData.jobFilter.tagArray4.forEach((item) => {
item.active = 0;
});
},
/**
* 获取职位标签
*/
getClass() {
var that = this;
that.G.Get(
that.api.yi_job_class_new,
{ type: 90, industry: 2, hasJob: 1 },
(res) => {
console.log(res);
that.allSpecial = res;
that.allSpecial.forEach((item) => {
item.active = 0;
if (item.typeClassify == "0") {
this.filterData.jobFilter["tagArray0"].push(item);
} else if (item.typeClassify == "1") {
this.filterData.jobFilter["tagArray1"].push(item);
} else if (item.typeClassify == "2") {
this.filterData.jobFilter["tagArray2"].push(item);
} else if (item.typeClassify == "3") {
this.filterData.jobFilter["tagArray3"].push(item);
} else if (item.typeClassify == "4") {
this.filterData.jobFilter["tagArray4"].push(item);
}
});
that.totalList = [...this.filterData.jobFilter.tagArray0, ...this.filterData.jobFilter.tagArray1, ...this.filterData.jobFilter.tagArray2, ...this.filterData.jobFilter.tagArray3, ...this.filterData.jobFilter.tagArray4];
console.log(that.totalList);
// that.filterData.classifyList = res.labels.map(label => ({
// ...label,
// active: 0
// }));
},
(res) => {
console.log(res);
}
);
},
/**
* 获取职位类型
*/
// getType() {
// var that = this;
// that.G.Get(
// that.api.yi_job_type_new,
// {},
// (res) => {
// that.filterData.classifyList = res.labels.map((label) => ({
// ...label,
// active: 0,
// }));
// },
// (res) => {
// console.log(res);
// }
// );
// },
setActive(e, id, index, str) {
// let idx = index;
// let index = this.filterData[str].findIndex((item) => {
// return idx == data.id;
// });
if (str == "sex") {
if (this.filterData[str][index].active == id) {
//
this.filterData[str][index].active = 0;
this.sex = -1;
} else {
//
this.filterData[str].forEach((item) => {
item.active = 0;
});
this.filterData[str][index].active = id;
this.sex = id;
}
} else if (str == "classifyList") {
if (this.filterData[str][index].active == id) {
//
this.filterData[str][index].active = 0;
this.jobCategoryLabelIds = this.jobCategoryLabelIds.filter((id1) => id1 != id);
} else {
this.filterData[str][index].active = id;
this.jobCategoryLabelIds.push(id);
}
console.log(this.jobCategoryLabelIds);
} else {
console.log("id", id);
if (this.filterData.jobFilter[str][index].active == id) {
//
this.filterData.jobFilter[str][index].active = 0;
// this.jobSpecialLabelIds = this.jobSpecialLabelIds.filter((id1) => id1 != id);
} else {
this.filterData.jobFilter[str][index].active = id;
// this.jobSpecialLabelIds.push(id);
}
console.log("this.filterData.jobFilter[str]", this.filterData.jobFilter[str]);
}
},
goAnchor(item) {
if (item.id) {
this.filterTo = item.id;
}
},
},
};
</script>
<style lang="less" scoped>
.filterContainer {
display: flex;
justify-content: flex-start;
overflow: hidden;
min-height: 70vh;
/* padding: 0 10px; */
/* height: calc(40vh - 64px); */
/* height: 100%; */
/* width: calc(100%); */
box-sizing: border-box;
background-color: #fff;
/* padding-bottom: 4px; */
}
.container {
/* margin: 10px;
padding: 0 10px; */
padding-bottom: 32px;
margin-bottom: 10px;
background-color: #fff;
border-radius: 8px;
}
.sub {
overflow: hidden;
}
.sub .title {
margin: 32px 0 20px 0;
font-size: 18px;
line-height: 1;
font-weight: bold;
text-align: left;
}
.sub .content {
display: flex;
flex-wrap: wrap;
}
.sub .content > view {
width: calc(32% - 2px);
height: 34px;
line-height: 34px;
border-radius: 4px;
background-color: #f6f6f6;
text-align: center;
color: #333;
font-size: 14px;
font-weight: 500;
border: 1px solid transparent;
}
.sub .content > view.active {
background-color: #e3ecfd;
color: #3578f6;
border-color: #3578f6;
}
.sub .content > view:not(:nth-child(3n)) {
margin-right: 2%;
}
.sub .content > view:not(:nth-last-child(-n + 3)) {
margin-bottom: 12px;
}
.btnBox {
position: sticky;
bottom: 0;
height: 56px;
padding-top: 12px;
display: flex;
justify-content: center;
background-color: #fff;
}
.btnBox button {
width: 128px !important;
height: 32px;
padding: 0;
margin: 0;
border-radius: 24px;
line-height: 32px;
font-size: 14px;
box-sizing: border-box;
}
.btnBox .clearFilter {
margin-right: 20px;
line-height: 30px;
border: 1px solid #3578f6;
background-color: #fff;
color: #3578f6;
}
.loginOut {
width: 100% !important;
height: 44px;
opacity: 1;
display: flex;
align-items: center;
justify-content: center;
background: #3578f6;
border-radius: 25px;
font-size: 18px;
font-weight: 601;
color: #ffffff;
padding: 0;
line-height: 44px;
margin-bottom: 40px;
margin-top: 20rpx;
}
.bt1 {
border-top: 1px solid #e5e5e5;
}
.gjFixed {
position: absolute;
top: v-bind("top");
left: 0;
width: 100vw;
height: 100vh;
/* right:0;
bottom:0; */
z-index: 999999;
background-color: rgba(0, 0, 0, 0.8);
}
.sort {
animation: singleBox 0.2s;
animation-fill-mode: forwards;
/* animation-timing-function: linear; */
/* animation-timing-function: ease-out; */
animation-timing-function: ease-in;
}
.filterBox,
.brand {
animation: filterBox 0.35s;
animation-fill-mode: forwards;
/* animation-timing-function: linear; */
/* animation-timing-function: ease-out; */
animation-timing-function: ease-in;
}
@keyframes filterBox {
0% {
height: 0;
/* opacity: 0; */
}
100% {
height: 58.5%;
/* opacity: 1; */
}
}
@keyframes singleBox {
0% {
height: 0;
/* opacity: 0; */
}
100% {
height: 240px;
/* opacity: 1; */
}
}
/* .activeWindow {
height: 240px !important;
} */
.oh {
overflow: hidden;
height: 100vh;
}
.oa {
overflow: auto;
}
.weui-half-screen-dialog {
height: 75vh;
border-top-left-radius: 4px;
border-top-right-radius: 4px;
padding: 0;
}
.filterActive {
background-color: #fff;
}
</style>

@ -8,7 +8,7 @@
<!-- 列表区 -->
<!-- <div @click="showPop = true"> 1123 </div> -->
<!-- `calc(${navInfo.windowHeight}px - ${navInfo.navigationBarHeight + navInfo.statusBarHeight}px)` -->
<scroll-view class="m-list" id="listBox" :style="{ height: `calc(${navInfo.windowHeight}px)` }" :scroll-y="true" @scrolltolower="reachBottom">
<scroll-view class="m-list" id="listBox" :scroll-into-view="scrollTo" :style="{ height: `calc(${navInfo.windowHeight}px)` }" :scroll-y="true" @scrolltolower="reachBottom">
<div class="" hover-class="none" hover-stop-propagation="false">
<div class="g_position_rela">
<!-- 搜索区 -->
@ -17,26 +17,78 @@
<div class="g_w_all g_h_40 g_position_abso" style="left: 0; z-index: 9999; top: 0; height: 100%" @click.stop="goSearch"></div>
</div>
</div>
<!-- #ifdef APP-PLUS || H5 || MP-TOUTIAO || MP-KUAISHOU -->
<div>
<div class=" g_bg_f_5 sticky g_flex_row_between">
<div class="g_flex_1">
<u-tabs bg-color="transparent" from="index" :list="tabInfo.list" :is-scroll="true" :current="tabInfo.active" active-color="#00b666" bar-width="64" bar-height="6" @change="handleUpdateTab" font-size="34" duration="0.05" height="76"></u-tabs>
</div>
<div class="g_flex_none g_flex_column_center g_fs_17 g_pr_26 g_pb_4" style="color: #576b95; text-decoration: underline" @click="goPage('/root/home/ignore')"></div>
</div>
<g-list-job from="home" @uploadList="getList" bg="#f5f5f5" class="g_h_all" :list="query.list" :active="tabInfo.active" @shareJob="shareJob" :loading="loading" :speed="speed" :query="query" :isShowLoginBtn="isLogin ? false : true" :emptyText="isLogin ? (tabInfo.active == 0 || tabInfo.active == 2 ? '嘿,这里还没有数据呢' : '您还未收藏职位,快去试试收藏职位吧') : '您还有没有登录,请登录后查看职位'" :emptySubText="isLogin ? (tabInfo.active == 0 ? '关注发单号,我们会第一时间通知您新的动态' : tabInfo.active == 2 ? '快去试试发布职位吧' : '') : ''" />
</div>
<!-- #endif -->
<!-- #ifdef MP-WEIXIN -->
<div>
<div class=" g_bg_f_5 sticky g_flex_row_between">
<div class="g_flex_1">
<u-tabs bg-color="transparent" from="index" :list="tabInfo.list" :is-scroll="true" :current="tabInfo.active" active-color="#00b666" bar-width="64" bar-height="6" @change="handleUpdateTab" font-size="34" duration="0.05" height="76"></u-tabs>
<div class="sticky">
<div class="g_bg_f_5 g_flex_row_between flex_center" id="tttop">
<div class="g_flex_1">
<u-tabs bg-color="transparent" from="index" :list="tabInfo.list" :is-scroll="true" :current="tabInfo.active" active-color="#00b666" bar-width="64" bar-height="6" @change="handleUpdateTab" font-size="34" duration="0.05" height="76"></u-tabs>
</div>
<div class="g_flex_row_end">
<div class="csbf" @click="chooseNl('sort')">
{{ sortList.list[sortList.active].showName }}
<span class="iconfont icon-shouqi g_fs_12 g_c_9 fst g_ml_4" v-if="whichOneShow == 'sort'"></span>
<span class="iconfont icon-zhankai g_fs_12 g_c_9 fst g_ml_4" v-if="whichOneShow != 'sort'"></span>
<div class="sortMask" v-if="whichOneShow == 'sort'">
<div class="sortContainer" style="overflow: hidden" @click.stop>
<div v-for="(item, index) in sortList.list" @click="sortJob(index)" :key="index" :class="sortList.active == index ? 'g_border_main g_c_main' : 'g_border_f'" class="g_fs_16 g_fw_600 g_mt_16 g_bg_f" style="border-radius: 30px; padding: 8px 16px">{{ item.name }}</div>
</div>
</div>
</div>
<view class="csbf" style="z-index: 99999999" @click="chooseNl('special')" data-type="special">
筛选
<span class="iconfont icon-shouqi g_fs_12 g_c_9 fst g_ml_4" v-if="whichOneShow == 'special'"></span>
<span class="iconfont icon-zhankai g_fs_12 g_c_9 fst g_ml_4" v-if="whichOneShow != 'special'"></span>
<g-filter :show="whichOneShow" ref="filterChild" top="43px" :getFilterDataNew="getFilterData" @filterObj="receiveFromChild"></g-filter>
</view>
</div>
<!-- <div class="g_flex_none g_flex_column_center g_fs_17 g_pr_26 g_pb_4" style="color: #576b95; text-decoration: underline" @click="goPage('/root/home/ignore')"></div> -->
</div>
<div class="g_flex_none g_flex_column_center g_fs_17 g_pr_26 g_pb_4" style="color: #576b95; text-decoration: underline" @click="goPage('/root/home/ignore')"></div>
<scroll-view class="filterTag bt1" v-if="getFilterData.jobCategoryLabelObjects.length > 0 || getFilterData.jobSpecialLabelObjects.length > 0 || getFilterData.sex != '-1' || (getFilterData.ageRangeStr && getFilterData.ageRangeStr != '16-60')" :scroll-x="true" :scroll-y="false" scroll-top="0" scroll-left="0" scroll-into-view scroll-with-animation="false" enable-flex enable-back-to-top="false">
<div class="g_flex_row_between flex_center flex_nw g_w_all">
<div class="g_flex_row_start flex_nw" style="line-height: 44px">
<div class="tc genderTag f14 por" style="min-width: 60px" v-if="getFilterData.ageRangeStr != '' && getFilterData.ageRangeStr != '16-60'">
<div class="por" @click.stop="deleteAge">
{{ getFilterData.ageRangeStr }}
<div class="clear_icon iconfont icon-dianji"></div>
</div>
</div>
<div class="tc genderTag f14 por" style="min-width: 60px" v-if="getFilterData.sex != '-1'">
<div class="por" @click.stop="deleteSex">
{{ getFilterData.sex == 1 ? "收男工" : getFilterData.sex == 2 ? "收女工" : getFilterData.sex == 3 ? "男女都收" : "" }}
<!-- {{getFilterData.jobCategoryLabelObjects.length > 0}} {{getFilterData.jobSpecialLabelObjects.length > 0}} -->
<div class="clear_icon iconfont icon-dianji"></div>
</div>
</div>
<div class="brandTag ml8" v-if="getFilterData.jobCategoryLabelObjects.length > 0">
<block v-for="(item, index) in getFilterData.jobCategoryLabelObjects" :key="index">
<div class="por" @click.stop="deleteJobCategoryLabel(item.id)">
{{ item.name }}
<div class="clear_icon iconfont icon-dianji"></div>
</div>
</block>
</div>
<div class="specialTag ml8">
<block v-for="(item, index) in getFilterData.jobSpecialLabelObjects" :key="index">
<div class="por" @click.stop="deleteJobSpecialLabel(item.id)">
{{ item.name }}
<div class="clear_icon iconfont icon-dianji"></div>
</div>
</block>
</div>
</div>
<div class="clear" @click.stop="clearFilter1" data-type="outerClear">
<span class="iconfont icon-shanchu f14"></span>
清除
</div>
</div>
</scroll-view>
</div>
<g-list-job from="home" @uploadList="getList" bg="#f5f5f5" class="g_h_all" :list="query.list" :active="tabInfo.active" @shareJob="shareJob" :loading="loading" :speed="speed" :query="query" :isShowLoginBtn="isLogin ? false : true" :emptyText="isLogin ? (tabInfo.active == 0 || tabInfo.active == 2 ? '嘿,这里还没有数据呢' : '您还未收藏职位,快去试试收藏职位吧') : '您还有没有登录,请登录后查看职位'" :emptySubText="isLogin ? (tabInfo.active == 0 ? '关注发单号,我们会第一时间通知您新的动态' : tabInfo.active == 2 ? '快去试试发布职位吧' : '') : ''" />
<div class="g_h_8"></div>
<g-list-job from="home" @uploadList="getList" bg="#f5f5f5" class="g_h_all" :list="query.list" :active="tabInfo.active" @shareJob="shareJob" :loading="loading" :speed="speed" :query="query" :isShowLoginBtn="isLogin ? false : true" :emptyText="isLogin ? (tabInfo.active == 0 || tabInfo.active == 2 ? '嘿,这里还没有数据呢' : '您还未收藏职位,快去试试收藏职位吧') : '您还有没有登录,请登录后查看职位'" />
</div>
<!-- #endif -->
@ -78,7 +130,7 @@ export default {
onShareAppMessage() {
return {
title: " ",
imageUrl: "../../static/image/fdzsshare.png",
imageUrl: "https://matripe-cms.oss-cn-beijing.aliyuncs.com/dailibaoming/APP/shareCard0609.png",
};
// return this.G.shareFun();
},
@ -92,6 +144,15 @@ export default {
},
data() {
return {
scrollTo: "",
getFilterData: {
sex: "-1",
ageRangeStr: "",
jobCategoryLabelIds: "",
jobSpecialLabelIds: "",
jobSpecialLabelObjects: [],
jobCategoryLabelObjects: [],
},
background: {
backgroundColor: "#caf1e0",
},
@ -137,6 +198,7 @@ export default {
size: 50,
list: [],
isFinish: -1,
sortTag: 2,
},
keyword: "",
tabInfo: {
@ -162,6 +224,27 @@ export default {
],
active: 0,
},
sortList: {
list: [
{
name: "按工价",
key: 1,
showName: "按工价",
},
{
name: "按佣金",
key: 3,
showName: "按佣金",
},
{
name: "按时间",
key: 0,
showName: "按时间",
},
],
active: 2,
},
};
},
watch: {
@ -284,15 +367,18 @@ export default {
},
getList($type = "init") {
let that = this;
console.log("job_list __________________________",1);
this.loading = true;
console.log("job_list __F________________________", 1);
let time = new Date().getTime();
that.G.Post(
that.api.job_list,
{
...that.getFilterData,
pageNum: that.query.page,
pageSize: that.query.size,
agencyId: that.tabInfo.active == 2 ? uni.getStorageSync("apply-agencyId") : "",
classify: that.tabInfo.list[that.tabInfo.active].classify,
sortTag: that.query.sortTag,
keys: that.keyword,
},
(res) => {
@ -586,6 +672,98 @@ export default {
that.attentionConfig.num++;
this.getInviteList();
},
/**
* 筛选相关========================================================
*/
deleteSex() {
console.log("deleteSex");
this.getFilterData.sex = -1;
this.getList();
},
deleteAge() {
console.log("deleteAge");
this.getFilterData.ageRangeStr = "";
this.getList();
},
deleteJobCategoryLabel(id) {
console.log(id);
this.getFilterData.jobCategoryLabelObjects = this.getFilterData.jobCategoryLabelObjects.filter((obj) => obj.id != id);
const idsArray = this.getFilterData.jobCategoryLabelObjects.map((obj) => obj.id);
//
this.getFilterData.jobCategoryLabelIds = idsArray.join(",");
console.log("deleteJobCategoryLabel", this.getFilterData);
this.getList();
},
deleteJobSpecialLabel(id) {
this.getFilterData.jobSpecialLabelObjects = JSON.parse(JSON.stringify(this.getFilterData.jobSpecialLabelObjects.filter((obj) => obj.id != id)));
const idsArray = this.getFilterData.jobSpecialLabelObjects.map((obj) => obj.id);
//
this.getFilterData.jobSpecialLabelIds = idsArray.join(",");
console.log("deleteJobSpecialLabel", this.getFilterData);
this.getList();
},
clearFilter1() {
var that = this;
this.getFilterData.jobCategoryLabelIds = "";
this.getFilterData.jobSpecialLabelIds = "";
this.getFilterData.jobCategoryLabelObjects = [];
this.getFilterData.jobSpecialLabelObjects = [];
this.scrollTo = "";
this.getFilterData.sex = -1;
this.getFilterData.ageRangeStr = "";
console.log("this.getFilterData", this.getFilterData);
this.$refs.filterChild.clearFilter();
this.getList();
setTimeout(() => {
that.scrollTo = "listBox";
console.log("aaaaaaaaa");
}, 1);
},
receiveFromChild(data) {
console.log(data);
this.whichOneShow = "";
this.query.page = 1;
this.getFilterData = JSON.parse(JSON.stringify(data));
console.log("getFilterData in receiveFromChild", this.getFilterData);
this.getList();
// this.messageFromChild = data.message;
},
chooseNl(type) {
let that = this;
that.scrollTo = "";
that.whichOneShow = that.whichOneShow == type ? "" : type;
setTimeout(() => {
that.scrollTo = "tttop";
}, 1);
},
/**
* 筛选相关================================================end
*/
sortJob(ind) {
let that = this;
this.sortList.active = ind;
this.query.sortTag = this.sortList.list[ind].key;
this.whichOneShow = "";
if (this.query.sortTag === 2) {
// 60 * 60 * 24
if (that.currentInfo.latitude && new Date().getTime() - that.currentInfo.timestamp < 1000 * 10) {
console.log("inTime");
this.getList();
} else {
console.log("outTime");
this.getLocation().then(() => {
this.getList();
});
}
} else {
this.getList();
}
},
},
};
</script>

@ -3,7 +3,7 @@
<!-- 15936360682 -->
<view class="g_h_70"></view>
<view class="g_flex_row_center g_mb_10">
<img :src="localBaseImg + 'fadanzhushou.png'" alt="" class="g_w_56 g_h_56 g_radius_8" />
<img :src="localBaseImg + 'boss.png'" alt="" class="g_w_56 g_h_56 g_radius_8" />
</view>
<view style="font-size: 18px; font-weight: 400; color: #919191; line-height: 25px; margin-bottom: 60px; text-align: center">劳务上下游收发单工具</view>
<view class="m-form g_mb_50 g_pl_40 g_pr_40">

@ -36,7 +36,7 @@
</view>
<view class="g_flex_row_start flex_center g_mt_26 g_fs_16 g_c_8" hover-class="thover" @click="goPage('/root/person/info?active=1')">
<view class="">
{{ userInfo.agencyName || "未创建/加入企业" }}
{{ userInfo.agencyName || "设置企业信息" }}
</view>
<i class="iconfont icon-gengduo11" style="line-height: 22px; font-size: 10px"></i>
</view>
@ -94,7 +94,6 @@
/>
</view>
<view class="g_mt_24">
<g-panel-form-item
:list="[
@ -110,7 +109,21 @@
@clickItem="goPage('/root/person/set')"
/>
</view>
<div class="g_mt_40" v-if="userInfo.admin">
<g-button btnText="添加成员" icon="icon-tianjia g_fsi_16 g_mr_8" @clickBtn="addMemberShow = true"></g-button>
</div>
<view class="g_h_100"></view>
<u-popup v-model="addMemberShow" mode="bottom" z-index="999999" border-radius="12" :closeable="false" :mask-close-able="true" @close="addMemberShow = false">
<view class="g_text_c g_bg_f_5 g_fs_17">
<view class="g_bg_f">
<view class="g_c_3">
<view class="g_p_16 g_border_e_t" @click="goPage('/root/person/addOrUpdataMember')"> </view>
<view class="g_p_16 g_border_e_t" @click="goPage('/root/person/memberApplyQRCode')"> </view>
</view>
</view>
<view class="g_p_16 g_mt_10 g_bg_f" style="padding-bottom: calc(constant(safe-area-inset-bottom) + 16px); padding-bottom: calc(env(safe-area-inset-bottom) + 16px)" @click="addMemberShow = false"> 取消 </view>
</view>
</u-popup>
<u-popup v-model="showTeamToggle" class="" mode="bottom" uZindex="9999" :closeable="true" border-radius="12" :mask-close-able="true">
<view class="title g_text_c g_fs_18 g_fw_600 g_pt_32 g_pb_20">切换团队</view>
<scroll-view class="g_pb_32" scroll-y="true" hover-class="none" style="height: calc(70vh)">
@ -149,9 +162,17 @@ export default {
uni.showTabBar();
}
},
addMemberShow(val) {
if (val) {
uni.hideTabBar();
} else {
uni.showTabBar();
}
},
},
data() {
return {
addMemberShow: false,
scrollTop: 0,
defaultTop: 0,
pageSpeed: -1,
@ -435,6 +456,7 @@ export default {
uni.navigateTo({
url: $path,
});
this.addMemberShow = false;
}
},
handleClickNum(item, index) {

@ -1,7 +1,7 @@
<template>
<view class="g_bg_page">
<view class="g_h_all" style="" v-if="!isLogin">
<!-- <unloginInfo></unloginInfo> -->
<unloginInfo></unloginInfo>
</view>
<view class="g_pb_48" v-else>
<view class="g_h_10"> </view>
@ -61,7 +61,7 @@
<script>
// import gEmpty from "@/components/empty.vue";
// import unloginInfo from "@/components/unloginInfo.vue";
import unloginInfo from "@/components/unloginInfo.vue";
// import servicePopup from "@/components/servicePopup.vue";
export default {
onShareAppMessage() {
@ -72,7 +72,7 @@ export default {
},
components: {
// gEmpty,
// unloginInfo,
unloginInfo,
// servicePopup,
},
data() {

@ -15,7 +15,7 @@
<g-panel-form-item :list="[{ icon_after: userinfo.realName ? 'yirenzheng g_c_main' : '', label: '实名认证', result: userinfo.realName ? '' : '去认证', path: '/root/person/idcardForm', type: userinfo.realName ? 'slot' : '' }]" @clickItem="goRealName" />
</view> -->
</view>
<view v-else>
<view v-show="menuActive === 1">
<!-- 企业资料内容直接引入组件 -->
<OrderEdit v-if="reset" />
</view>

@ -486,7 +486,7 @@ export default {
},
(res) => {
console.log("recommendList", res);
that.recommendList = res;
that.recommendList = { ...res, fullName: res.fullName ? res.fullName : res.userName };
console.log("--", that.recommendList);
}
);

@ -1,10 +1,8 @@
<template>
<view class="" style="height: calc(100vh - 47px)" v-if="userInfo.agencyStatus != 1" hover-class="none" hover-stop-propagation="false">
<!-- <view class="" style="height: calc(100vh - 47px)" v-if="userInfo.agencyStatus != 1" hover-class="none" hover-stop-propagation="false">
<unloginInfo></unloginInfo>
</view>
<div class="g_pb_32" style="min-height: calc(100vh - 47px)" v-else
:data-admin="isAdmin"
>
</view> -->
<div class="g_pb_32" style="min-height: calc(100vh - 47px)" :data-admin="isAdmin">
<view class="">
<g-panel-form-item
:list="[
@ -95,7 +93,7 @@
<scroll-view class="g_pb_32 g_fs_16" scroll-y="true" style="height: calc(100% - 92px)">
<view class="g_flex_row_between g_p_16 g_border_e_b" hover-class="thover" hover-stop-propagation="true" v-for="(item, index) in teamList" :key="index" @click="toogleTeam(item)">
<view class="g_flex_row_between">
<view class="f17">{{ item.agencyName }}</view>
<view class="f17">{{ item.agencyName || item.userName }}</view>
</view>
<view class style="color: #1890ff"> {{ item.checked ? "当前" : "" }}</view>
</view>
@ -140,9 +138,9 @@ export default {
});
that.resetInfo();
that.getTeamList();
if (that.userInfo.agencyStatus == 1) {
that.getAgencyInfo();
}
// if (that.userInfo.agencyStatus == 1) {
that.getAgencyInfo();
// }
},
methods: {
@ -213,9 +211,9 @@ export default {
icon: "",
label: "企业名称",
result: that.info.agencyName || "请输入企业名称",
value: that.info.agencyName,
value: that.info.agencyName || "",
fontColor: !that.info.agencyName ? "g_c_9" : "g_c_3",
path: "/root/person/change?label=企业名称&fieldName=agencyName&value=" + that.info.agencyName,
path: "/root/person/change?label=企业名称&fieldName=agencyName&value=" + that.info.agencyName || "",
tip: "user-name",
placeholder: "请输入企业名称",
fontSize: "16px",
@ -232,7 +230,7 @@ export default {
icon: "",
label: "企业简称",
result: that.info.fullName || "请输入企业简称",
value: that.info.fullName,
value: that.info.fullName || "",
fontColor: !that.info.fullName ? "g_c_9" : "g_c_3",
path: "/root/person/change?label=企业简称&fieldName=fullName&value=" + that.info.fullName,
tip: "user-name",
@ -251,7 +249,7 @@ export default {
icon: "",
label: "宣传口号",
result: that.info.slogan || "请输入宣传口号",
value: that.info.slogan,
value: that.info.slogan || "",
fontColor: !that.info.slogan ? "g_c_9" : "g_c_3",
path: "/root/person/change?label=宣传口号&fieldName=slogan&value=" + that.info.slogan,
tip: "user-name",

@ -62,7 +62,7 @@
@clickItem="handleClickItem"
/>
</view>
<view class="g_mt_10">
<!-- <view class="g_mt_10">
<g-panel-form-item
:list="[
{
@ -75,7 +75,7 @@
]"
@clickItem="handleClickItem"
/>
</view>
</view> -->
<view class="g_mt_24 g_ml_10 g_mr_10">
<g-button btnText="退出登录" type="delete" size="medium" @clickBtn="handleLayout" mode="square" />
</view>

@ -1,6 +1,6 @@
<template>
<div class="team-manage-container g_flex_column_between g_bg_page">
<scroll-view class="g_flex_1" :style="{ 'max-height': `calc(100vh - ${98}px)` }" :scroll-y="true">
<scroll-view class="g_flex_1" :style="{ 'max-height': `calc(100vh - ${0}px)` }" :scroll-y="true">
<div class="g_h_all">
<div class="g_h_10"></div>
<div class="g_flex_row_start g_bg_f g_mb_10" style="padding: 12px 16px" @click="goPage('/root/person/applyManage')" v-if="applyNum !== 0">
@ -10,6 +10,7 @@
<div class="g_c_9 g_fs_14">您有{{ applyNum }}条申请等待审核</div>
</div>
</div>
<div class="r_box g_fs_20 g_text_c g_h_60 g_ml_10 g_mr_10 g_mb_10 g_fw_600" style="line-height: 60px">{{ agencyInfo.fullName || agencyInfo.userName }}</div>
<div class="r_box g_ml_10 g_mr_10">
<div v-for="item in memberList" :key="item.id" @click="editMember(item)" class="g_border_e_b g_flex_row_between g_fs_18" style="padding: 18px 10px">
<div class="g_flex_row_start flex_center g_fw_600">
@ -23,12 +24,15 @@
</div>
</div>
<div class="g_h_24"></div>
<div class="g_pb_40" v-if="memberList.length > 0">
<g-button btnText="添加成员" class="" @clickBtn="addMember"></g-button>
</div>
</div>
</scroll-view>
<div class="g_flex_row_end g_bg_f" style="padding: 14px 16px 34px">
<g-button btnText="添加成员" size="small" class="" @clickBtn="addMember"></g-button>
<!-- <g-button btnText="添加部门" size="small" class="g_ml_16" @clickBtn="goLogin"></g-button> -->
</div>
<!-- <div class="g_flex_row_end g_bg_f" style="padding: 14px 16px 34px"> -->
<!-- <g-button btnText="添加部门" size="small" class="g_ml_16" @clickBtn="goLogin"></g-button> -->
<!-- </div> -->
<u-popup v-model="addMemberShow" mode="bottom" z-index="999999" border-radius="12" :closeable="false" :mask-close-able="true" @close="addMemberShow = false">
<view class="g_text_c g_bg_f_5 g_fs_17">
<view class="g_bg_f">
@ -49,6 +53,7 @@ export default {
return {
memberList: [],
addMemberShow: false,
agencyInfo: uni.getStorageSync("agencyInfo"),
applyNum: 0,
};
},
@ -67,9 +72,9 @@ export default {
uni.showLoading({
title: "加载中...",
});
this.G.Get(this.api.order_peopleList, {}, (res) => {
this.G.Get(this.api.order_peopleList, { pageSize: 500 }, (res) => {
console.log("报名人列表:", res);
that.memberList = res.recordList;
that.memberList = res.recordList
uni.hideLoading();
});
},
@ -101,17 +106,17 @@ export default {
<style lang="scss">
.creator {
color: #46c7bb;
border: 1px solid #46c7bb;
// border: 1px solid #46c7bb;
background-color: #46c7ba3d;
}
.member {
color: #f9676e;
border: 1px solid #f9676e;
// border: 1px solid #f9676e;
background-color: #f9676e3d;
}
.manager {
color: #0066d6;
border: 1px solid #0066d6;
// border: 1px solid #0066d6;
background-color: #0066d63d;
}
.sticky {

@ -356,6 +356,9 @@ scroll-view::-webkit-scrollbar {
&_10a {
color: #10aeff;
}
&_027 {
color: #027aff;
}
&_sub {
color: #576b95;
}
@ -651,3 +654,125 @@ $max-radius: 50;
.pri {
white-space: pre-line;
}
.csbf {
padding: 0px 8px;
height: 28px;
background-color: #fff;
border-radius: 16px;
text-align: center;
font-size: 14px;
font-weight: 400;
color: #333333;
line-height: 28px;
box-sizing: border-box;
// margin-top: 6px;
margin-right: 12px;
}
//
.filterTag {
// display: flex;
background-color: #f5f5f5;
border-top: 1rpx solid #eee;
.brandTag,
.specialTag {
display: flex;
/* width: 200vw; */
position: relative;
justify-content: start;
align-items: center;
flex-wrap: nowrap;
padding-right: 8px;
/* border-right: 1px solid #ccc; */
& > view {
position: relative;
height: 28px;
line-height: 26px;
background-color: #e3ecfd;
border: 1px solid #3578f6;
border-radius: 999px;
margin-right: 8px;
font-size: 12px;
color: #3578f6;
/* min-width: 100px; */
text-align: center;
white-space: nowrap;
padding: 0px 12px;
box-sizing: border-box;
&:last-child {
margin-right: 0px;
}
}
}
.genderTag {
// width: 80px;
padding-left: 8px;
justify-content: center !important;
.por {
position: relative;
height: 28px;
line-height: 26px;
background-color: #e3ecfd;
border: 1px solid #3578f6;
border-radius: 999px;
margin-right: 8px;
font-size: 12px;
color: #3578f6;
/* min-width: 100px; */
text-align: center;
white-space: nowrap;
padding: 0px 12px;
box-sizing: border-box;
}
}
.clear {
position: sticky;
right: 0px;
top: 0px;
height: 44px;
min-width: 60px;
text-align: center;
line-height: 44px;
font-size: 14px;
background: linear-gradient(180deg, #f5f5f5, #ffffff 23%, #ffffff 79%, #f5f5f5);
box-shadow: -12px 0px 8px -4px rgba(206, 206, 206, 0.6);
}
.clear_icon {
position: absolute;
display: inline-block;
width: 12px;
height: 12px;
line-height: 10px;
border-radius: 50%;
background-color: #fff;
right: -2px;
top: -2px;
color: #aaa;
/* font-size: 12px; */
}
}
//
//
.sortMask {
position: absolute;
top: 43px;
left: 0;
width: 100vw;
height: 100vh;
z-index: 999999;
background-color: rgba(0, 0, 0, 0.8);
}
.sortContainer {
padding: 0 24px;
animation: filterBox 0.35s;
animation-fill-mode: forwards;
animation-timing-function: ease-in;
box-sizing: border-box;
background-color: #f5f5f5;
padding-bottom: 4px;
border-radius: 0 0 8px 8px;
height: 40% !important;
}
//

Loading…
Cancel
Save