flat: 修改零工问题

This commit is contained in:
yangxiao
2025-12-09 10:07:23 +08:00
parent 2dd075c9b4
commit 66f2b6e806
10 changed files with 1032 additions and 44 deletions

View File

@@ -379,3 +379,12 @@ export const jkWorksHistory = () => {
method: 'get', method: 'get',
}) })
} }
// 零工岗位审核接口
export const missionReview = (params) => {
return request({
url: `/api/jobslink-api/missions/mission/missionReview`,
method: 'post',
data:params
})
}

View File

@@ -190,6 +190,12 @@ export const wageUnitCategoryState = [
// { value: 6, label: "元/人·件", disable: true }, // { value: 6, label: "元/人·件", disable: true },
]; ];
export const wageUnitCategoryOther = [
{ value: 1, label: "计件", disable: false },
{ value: 2, label: "面议", disable: false },
];
export const wageOptionsMonth = [ export const wageOptionsMonth = [
{ {
value: "2000元以下/月", value: "2000元以下/月",

View File

@@ -25,6 +25,7 @@ export default {
type: String, type: String,
default: "-" default: "-"
}, },
city: Boolean, // 12月3号修改 下拉从市区开始
filterCity: Array filterCity: Array
}, },
data() { data() {
@@ -50,8 +51,10 @@ export default {
if (district) { if (district) {
nextProvince.children[0].children = nextProvince.children[0].children.find((area) => area.label === district) nextProvince.children[0].children = nextProvince.children[0].children.find((area) => area.label === district)
} }
return nextProvince return this.city ? nextProvince.children : nextProvince
} }
return this.area.labelData return this.area.labelData
} }
}, },

View File

@@ -23,7 +23,7 @@
@refresh-change="refreshChange" @refresh-change="refreshChange"
@on-load="onLoad" @on-load="onLoad"
> >
<template slot="menuLeft"> <!-- <template slot="menuLeft">
<el-button <el-button
v-if="vaildData(permission.manage_mission_check, false)" v-if="vaildData(permission.manage_mission_check, false)"
size="small" size="small"
@@ -32,7 +32,7 @@
>审核 >审核
</el-button </el-button
> >
</template> </template> -->
<template slot="menuRight"> <template slot="menuRight">
<el-button size="small" :disabled="downloadButton" @click.stop="downRecords" type="primary" <el-button size="small" :disabled="downloadButton" @click.stop="downRecords" type="primary"
>导出 >导出
@@ -46,8 +46,11 @@
@click.stop="rowView(row)" @click.stop="rowView(row)"
v-if="vaildData(permission.manage_mission_view, false)" v-if="vaildData(permission.manage_mission_view, false)"
>详情 >详情
</el-button </el-button>
> <el-button :size="size" type="text"
@click="reviewStateClk(row)"
v-if="row.reviewState === 0" v-show="vaildData(permission.tenant_mission_review, false)">审核
</el-button>
<!-- <el-button <!-- <el-button
type="text" type="text"
size="small" size="small"
@@ -78,6 +81,8 @@
@onCancel="diaLogCancel" @onCancel="diaLogCancel"
@onConfirm="diaLogConfirm" @onConfirm="diaLogConfirm"
></PromptDialog> ></PromptDialog>
<reviewView :visible.sync="reviewState" @refreshChange="refreshChange" ref="reviewView" :model="reviewStateRow"></reviewView>
</basic-container> </basic-container>
</template> </template>
@@ -95,6 +100,7 @@ import {downloadEcxel} from '@/util/util'
import {mapGetters} from "vuex"; import {mapGetters} from "vuex";
import missionView from "@/views/util/mission-view"; import missionView from "@/views/util/mission-view";
import zpView from "./zpView"; import zpView from "./zpView";
import reviewView from './reviewView.vue'
import {missionState, wageUnitCategoryState, recruitStatus, dataSourcesEnum, educationState} from "@/common/dic"; import {missionState, wageUnitCategoryState, recruitStatus, dataSourcesEnum, educationState} from "@/common/dic";
import {calcDate} from "@/util/date"; import {calcDate} from "@/util/date";
import {Message} from "element-ui"; import {Message} from "element-ui";
@@ -116,10 +122,12 @@ const message = lodash.throttle(
); );
export default { export default {
components: {missionView, zpView, PromptDialog}, components: {missionView, zpView, PromptDialog, reviewView},
name: "manage_mission", name: "manage_mission",
data() { data() {
return { return {
reviewState: false, // 审核弹框
reviewStateRow: {}, // 审核需要的数据
dialogFlag: false, dialogFlag: false,
selectIdList: [], selectIdList: [],
recruitStatus, recruitStatus,
@@ -159,7 +167,7 @@ export default {
searchMenuSpan: 5, searchMenuSpan: 5,
menuWidth: 110, menuWidth: 110,
border: true, border: true,
selection: true, // selection: true,
viewBtn: false, viewBtn: false,
addBtn: false, addBtn: false,
editBtn: false, editBtn: false,
@@ -578,7 +586,12 @@ export default {
this.downloadButton = false this.downloadButton = false
}) })
}, },
// 点击审核
reviewStateClk(row) {
// this.reviewState = true
this.$refs.reviewView.refreshReview(true)
this.reviewStateRow = row
}
}, },
}; };
</script> </script>

View File

@@ -0,0 +1,400 @@
<template>
<el-drawer title="审核" :visible.sync="reviewState" @closed="closed" size="60%">
<div class="mission-view">
<el-form label-position="left" size="small">
<el-collapse v-model="activeNames" @change="handleChange" class="avue-group">
<el-collapse-item title="岗位信息" name="1" disabled="true">
<template slot="title">
<div class="avue-group__header">
<div class="avue-group__title">零工岗位信息</div>
</div>
</template>
<el-row>
<el-col span="12">
<el-form-item label="岗位名称:">{{
model.missionTitle
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="岗位编码:">{{
model.missionNo
}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="12">
<el-form-item label="发布时间:">{{ format(model.stime) }}</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="结束时间:">{{ format(model.etime) }}</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="岗位要求" name="2" disabled="true">
<template slot="title">
<div class="avue-group__header">
<div class="avue-group__title">岗位要求</div>
</div>
</template>
<el-row>
<el-col span="12">
<el-form-item label="招聘人数:">{{ model.peopleNum }}</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="参考工资:">{{
model.wageUnitCategory === 4 ? wageCategoryOtherEnum[model.wage] : model.wage
}}{{ model.wageUnitCategory !== 4 ? wageUnitCategory[model.wageUnitCategory] : '' }}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="12">
<el-form-item label="行业类型:">{{
model.tradeNames
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item>
<label slot="label">零工工种</label>
{{ model.worktypeNames }} /
{{ model.skillNames }}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="24">
<el-form-item label="岗位描述:">{{
model.missionDesc
}}
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="人员要求" name="3" disabled="true">
<template slot="title">
<div class="avue-group__header">
<div class="avue-group__title">人员要求</div>
</div>
</template>
<el-row>
<!-- <el-col span="16">-->
<!-- <el-form-item label="人员属性:">{{-->
<!-- model.userNature-->
<!-- }}-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col span="16">
<el-form-item label="学历要求:">{{
education[model.education]
}}
</el-form-item>
</el-col>
<el-col span="8">
<el-form-item label="年龄要求:">{{
model.ageDesc
}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="8">
<el-form-item label="经验要求:">{{
model.experienceDesc
}}
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="联系人" name="4" disabled="true">
<template slot="title">
<div class="avue-group__header">
<div class="avue-group__title">用工单位信息</div>
</div>
</template>
<el-row>
<el-col span="12">
<el-form-item label="用工单位:">{{
model.missionCompanyName
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="单位信用代码:">{{
model.missionCompanyScale
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="单位性质:">{{
model.missionCompanyNature
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="所属行业:">{{
model.missionCompanyIndustry
}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="24">
<el-form-item label="单位介绍:">{{
model.missionCompanyDescription
}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="8">
<el-form-item label="联 系 人:">{{
model.callName
}}
</el-form-item>
</el-col>
<el-col span="8">
<el-form-item label="联系方式:">{{
model.callTel
}}
</el-form-item>
</el-col>
<el-col span="8">
<el-form-item>
<label slot="label">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
{{ model.callNumber }}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="24">
<el-form-item label="工作地址:" v-if="model.cityId">{{ model.cityId }}</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="24">
<el-form-item label="详细地址:">{{
model.address
}}
</el-form-item>
<!-- <select-map :lat="model.lat" :lng="model.lon" :isCanEdit="false" :type="'view'"></select-map>-->
<super-map-view
:isCanEdit="false"
:longitude="model.lon"
:latitude="model.lat"
:open="true"
:zoom="10"
:min-zoom="10"
:max-zoom="20"
:flag-tip="false"
placeholder="请输入详细地址"
:type="'edit'"
></super-map-view>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="审核状态" name="5" disabled="true">
<template slot="title">
<div class="avue-group__header">
<div class="avue-group__title">审核信息</div>
</div>
</template>
<avue-form
:option="reviewOption"
ref="reviewFrom"
v-model="reviewValue"
@submit="submit"
>
<template slot="menuForm">
<el-button @click="refreshReview(false)">取消</el-button>
</template>
</avue-form>
</el-collapse-item>
</el-collapse>
</el-form>
</div>
</el-drawer>
</template>
<script>
import {mapGetters} from "vuex";
import {dateFormat} from "@/util/date";
import {
wageUnitCategoryState,
educationState,
genderState,
recruitStatus,
wageUnitCategoryOther
} from "@/common/dic";
import {missionReview} from "@/api/tenant/mission";
function getDic(arr) {
let rel = {};
arr.forEach((element) => {
rel[element.value] = element.label;
});
return rel;
}
export default {
props: {model: Object, visible:Boolean},
data() {
return {
activeNames: ["1", "2", "3", "4", "5"],
wageUnitCategory: getDic(wageUnitCategoryState),
education: getDic(educationState),
gender: getDic(genderState),
recruit: getDic(recruitStatus),
reject: false,
reviewValue: {},
wageCategoryOtherEnum: getDic(wageUnitCategoryOther),
reviewState: false
};
},
mounted() {
},
methods: {
getSkill(skillStr) {
return skillStr.split(",");
},
format(date) {
if (date) {
return dateFormat(new Date(date), "yyyy/MM/dd");
}
},
// 点击提交
submit(form,done) {
const params = {
id: this.model.id,
remarks: '',
reviewMsg: this.reviewValue.reviewMsg,
reviewState: this.reviewValue.reviewState
}
missionReview(params).then(res => {
if (res.data.code === 200) {
done();
this.refreshReview(false)
this.$message({
type: "success",
message: res.data.msg,
});
this.$emit('refreshChange')
} else {
this.$message({
type: "error",
message: res.data.msg,
});
}
})
},
// 点击清空
refreshReview(res) {
this.reviewState = res
}
},
computed: {
...mapGetters(["area"]),
city() {
return this.$store.getters.getAreaParents(this.model.cityId);
},
// reviewState: {
// get() {
// return this.visible;
// },
// set(val) {
// this.$emit("update:visible", val);
// },
// },
reviewOption(){
return {
// size: "small",
labelWidth: 150,
labelPosition: 'left',
emptyBtn: false,
// submitBtn: false,
emptyText: '取消',
column:[
{
label: '审核',
prop: 'reviewState',
type: 'select',
span: 18,
dicData: [{
label: '通过',
value: 1
}, {
label: '驳回',
value: 9
}],
rules: [
{
required: true,
message: "请选择审核结果",
trigger: "blur",
},
],
change:({column,value}) =>{
console.log(value, column)
if(value == 9){
this.reject = true
}else{
this.reject = false
}
}
},
{
label: '驳回原因',
prop: 'reviewMsg',
type: 'textarea',
rows: 5,
span: 18,
display: this.reject,
rules: [
{
required: true,
message: "请输入驳回原因",
trigger: "blur",
},
],
}
]
}
},
},
};
</script>
<style>
.mission-view .el-tag + .el-tag {
margin-left: 5px;
}
.mission-view .el-form {
padding: 0 20px;
}
.mission-view .el-form .el-col {
padding: 0 10px;
}
.mission-view .el-form .el-col .el-form-item {
margin-bottom: 18px;
}
.mission-view .el-collapse {
border-top: 0px;
}
.button {
text-align: center;
}
</style>

View File

@@ -260,7 +260,9 @@ export default {
userName: item.name userName: item.name
})) }))
} }
let resData = await pushPostUserServe(params) // 处理错误的时候 状态不会改
await pushPostUserServe(params).then(resData => {
// 成功的时候
if (resData.data.code === 200) { if (resData.data.code === 200) {
const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0 const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
setTimeout(() => { setTimeout(() => {
@@ -268,8 +270,21 @@ export default {
this.$refs.crud2.selectClear() this.$refs.crud2.selectClear()
this.pushState = false this.pushState = false
}, timed) }, timed)
} }
}).catch(err => {
this.pushState = false
console.log(err, 'err')
})
// let resData = await pushPostUserServe(params)
// if (resData.data.code === 200) {
// const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
// setTimeout(() => {
// this.$message.success('岗位推送成功')
// this.$refs.crud2.selectClear()
// this.pushState = false
// }, timed)
// }
}, },
async pushPolicyAndUser() { async pushPolicyAndUser() {
this.pushState = true this.pushState = true
@@ -284,7 +299,8 @@ export default {
userName: item.name userName: item.name
})) }))
} }
let resData = await pushPolicyUserServe(params) // 处理错误的时候 状态不会改
await pushPolicyUserServe(params).then(resData => {
if (resData.data.code === 200) { if (resData.data.code === 200) {
const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0 const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
setTimeout(() => { setTimeout(() => {
@@ -293,6 +309,19 @@ export default {
this.pushState = false this.pushState = false
}, timed) }, timed)
} }
}).catch(err => {
this.pushState = false
console.log(err, 'err')
})
// let resData = await pushPolicyUserServe(params)
// if (resData.data.code === 200) {
// const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
// setTimeout(() => {
// this.$message.success('政策推送成功')
// this.$refs.crud2.selectClear()
// this.pushState = false
// }, timed)
// }
}, },
async getRightSearch() { async getRightSearch() {
this.progress = 0 this.progress = 0

View File

@@ -463,6 +463,19 @@ export default {
searchLabelWidth: 100, searchLabelWidth: 100,
searchSpan: 8, searchSpan: 8,
}, },
{
label: "是否回访",
prop: "isBack",
dicData: [
{ value: 1, label: "" },
{ value: 0, label: "" },
],
type: 'select',
search: true,
hide: true,
searchLabelWidth: 100,
searchSpan: 8,
},
{ {
label: "毕业年份", label: "毕业年份",
width: 100, width: 100,

View File

@@ -24,6 +24,7 @@
v-model="obj.cityId" v-model="obj.cityId"
placeholder="请选择 工作地址" placeholder="请选择 工作地址"
:filterCity="['四川省', '德阳市']" :filterCity="['四川省', '德阳市']"
city
></jl-cityLabel-cascader> ></jl-cityLabel-cascader>
</template> </template>
@@ -45,16 +46,15 @@
<!-- :value="item.label">--> <!-- :value="item.label">-->
<!-- </el-option>--> <!-- </el-option>-->
<!-- </el-select>--> <!-- </el-select>-->
<el-autocomplete <!-- <el-autocomplete
style="'width100%'" style="'width100%'"
class="inline-input" class="inline-input"
v-model="obj.missionCompanyName" v-model="obj.missionCompanyName"
:fetch-suggestions="remoteMethod" :fetch-suggestions="remoteMethod"
placeholder="请输入用工单位" placeholder="请输入用工单位"
@select="selectMissionCompany" @select="selectMissionCompany"
></el-autocomplete> ></el-autocomplete> -->
</template> </template>
<template slot-scope="{ disabled }" slot="skillIds"> <template slot-scope="{ disabled }" slot="skillIds">
<skill-select <skill-select
ref="skillSelect" ref="skillSelect"
@@ -97,12 +97,33 @@
></super-map-view> ></super-map-view>
</template> </template>
<template slot-scope="{ row }" slot="wage"> <template slot-scope="{ row }" slot="wage">
<el-input placeholder="请输入工资" type="number" v-model="obj.wage" class="input-with-select" @blur="wageBlur"> <!-- <el-input placeholder="请输入工资" type="number" v-model="obj.wage" class="input-with-select" @blur="wageBlur">
<el-select v-model="obj.wageUnitCategory" slot="append" placeholder="请选择" @change="getMaxAndMin"> <el-select v-model="obj.wageUnitCategory" slot="append" placeholder="请选择" @change="getMaxAndMin">
<el-option :label="item.label" v-for="item in wageUnitCategory" :key="item.value" <el-option :label="item.label" v-for="item in wageUnitCategory" :key="item.value"
:value="item.value"></el-option> :value="item.value"></el-option>
</el-select> </el-select>
</el-input> -->
<div slot="append">
<div class="input-with-select-all">
<el-input placeholder="请输入工资" v-if="!other" type="number" v-model="obj.wage" class="input-with-select-all-a" @blur="wageBlur">
</el-input> </el-input>
<el-select v-else v-model="obj.wage" class="input-with-select-all-c" placeholder="请选择" @change="wageOtherChange">
<el-option :label="item.label" v-for="item in wageUnitCategoryOther" :key="item.value"
:value="item.value"></el-option>
</el-select>
<el-select v-model="obj.wageUnitCategory" class="input-with-select-all-b" placeholder="请选择" @change="getMaxAndMin">
<el-option :label="item.label" v-for="item in wageUnitCategory" :key="item.value"
:value="item.value"></el-option>
</el-select>
</div>
<div class="info">
<p v-if="obj.wageUnitCategory === 2">日薪不低于0</p>
<p v-if="obj.wageUnitCategory === 1">时薪不低于22</p>
<p v-if="obj.wageUnitCategory === 3">月薪不低于2200</p>
</div>
</div>
</template> </template>
<!-- 行业类型 --> <!-- 行业类型 -->
<!-- <template slot="tradeId"> <!-- <template slot="tradeId">
@@ -175,6 +196,7 @@ import {mapGetters} from "vuex";
import { import {
wageUnitCategoryState, wageUnitCategoryState,
wageOptionsWithNoMonth, wageOptionsWithNoMonth,
wageUnitCategoryOther,
educationState, educationState,
} from "@/common/dic"; } from "@/common/dic";
import {dateFormat} from "@/util/date"; import {dateFormat} from "@/util/date";
@@ -220,7 +242,7 @@ export default {
tradeNames: null, tradeNames: null,
userNature: "灵活用工", userNature: "灵活用工",
lat: 31.126855, lat: 31.126855,
lon: 104.397894 lon: 104.397894,
}, },
loading: false, loading: false,
drawer: false, drawer: false,
@@ -233,7 +255,9 @@ export default {
endTimeFlag: true, endTimeFlag: true,
stimeDate: null, stimeDate: null,
wallMaxAndMin: [], wallMaxAndMin: [],
dwlist: [] dwlist: [],
other: false,
wageUnitCategoryOther: wageUnitCategoryOther
}; };
}, },
components: { components: {
@@ -243,7 +267,8 @@ export default {
this.$store.dispatch("InitArea"); this.$store.dispatch("InitArea");
this.initData(); this.initData();
this.getMaxAndMin() this.getMaxAndMin()
this.getHistroyCompanyList() // 11.26号去掉 用工单位下拉框
// this.getHistroyCompanyList()
}, },
watch: { watch: {
"obj.tradeId": function (val, oldval) { "obj.tradeId": function (val, oldval) {
@@ -283,9 +308,9 @@ export default {
case this.obj.wage < Math.min(...val): case this.obj.wage < Math.min(...val):
this.obj.wage = Math.min(...val) this.obj.wage = Math.min(...val)
return return
case this.obj.wage > Math.max(...val): // case this.obj.wage > Math.max(...val):
this.obj.wage = Math.max(...val) // this.obj.wage = Math.max(...val)
return // return
} }
} }
@@ -489,12 +514,12 @@ export default {
labelslot: false, labelslot: false,
errorslot: false, errorslot: false,
// dicData: wageOptionsWithNoMonth, // dicData: wageOptionsWithNoMonth,
// rules: [ rules: [
// { {
// required: true, required: true,
// trigger: "blur", trigger: "blur",
// }, },
// ], ],
// span: 12, // span: 12,
}, },
{ {
@@ -534,13 +559,13 @@ export default {
trigger: "blur", trigger: "blur",
}, },
{ {
min: 30, min: 10,
max: 200, max: 200,
message: "长度在 30 到 200 个字", message: "长度在 10 到 200 个字",
trigger: "blur", trigger: "blur",
}, },
], ],
placeholder: "请输入任务描述,字数30-200字以内", placeholder: "请输入任务描述,字数10-200字以内",
span: 24, span: 24,
maxlength: 200, maxlength: 200,
showWordLimit: true, showWordLimit: true,
@@ -651,7 +676,7 @@ export default {
trigger: "blur", trigger: "blur",
}, },
], ],
formslot: true, // formslot: true,
span: 12, span: 12,
}, },
{ {
@@ -877,11 +902,14 @@ export default {
case this.obj.wage < Math.min(...val): case this.obj.wage < Math.min(...val):
this.obj.wage = Math.min(...val) this.obj.wage = Math.min(...val)
return return
case this.obj.wage > Math.max(...val): // case this.obj.wage > Math.max(...val):
this.obj.wage = Math.max(...val) // this.obj.wage = Math.max(...val)
return // return
} }
}, },
wageOtherChange(e) {
this.obj.wage = e.target.value
},
async getMaxAndMin(id) { async getMaxAndMin(id) {
let params = { let params = {
code: `wages_limit_${this.obj.wageUnitCategory}` code: `wages_limit_${this.obj.wageUnitCategory}`
@@ -892,7 +920,14 @@ export default {
resData.data.data.map((item) => { resData.data.data.map((item) => {
arr.push(Number(item.dictKey)) arr.push(Number(item.dictKey))
}) })
// 获取到最大值和最小值的一个数组
this.wallMaxAndMin = arr this.wallMaxAndMin = arr
if (this.obj.wageUnitCategory === 4) {
this.other = true
this.obj.wage = Number(this.obj.wage) || 1
} else {
this.other = false
}
} }
}, },
inputAddress(val) { inputAddress(val) {
@@ -1050,6 +1085,7 @@ export default {
closed() { closed() {
this.tradeState = ""; this.tradeState = "";
this.workTypeState = ""; this.workTypeState = "";
this.other = false;
this.$refs.form.init(); this.$refs.form.init();
this.$refs.form.resetForm(); this.$refs.form.resetForm();
this.$refs.form.clearValidate(); this.$refs.form.clearValidate();
@@ -1290,6 +1326,12 @@ export default {
res.cityId = '' res.cityId = ''
} }
this.obj = res; this.obj = res;
if (res.wageUnitCategory === 4) {
this.other = true
this.obj.wage = Number(res.wage)
} else {
this.other = false
}
this.obj.workSkills = [] this.obj.workSkills = []
this.obj.workSkills.push(res.worktypeIds) this.obj.workSkills.push(res.worktypeIds)
this.obj.workSkills.push(res.skillIds) this.obj.workSkills.push(res.skillIds)
@@ -1310,11 +1352,49 @@ export default {
.el-form-item { .el-form-item {
margin-bottom: 0px; margin-bottom: 0px;
} }
::v-deep .avue-form .input-with-select-all-a .el-input__inner {
border: none;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
border-right: 1px solid #DCDFE6;
}
::v-deep .avue-form .input-with-select-all-b .el-input__inner {
border: none;
}
::v-deep .avue-form .input-with-select-all-c .el-input__inner {
border: none;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
border-right: 1px solid #DCDFE6;
}
.info {
font-size: 12px;
color: red;
margin-top: -20px;
}
</style> </style>
<style> <style>
.input-with-select-all {
width: 100%;
display: flex;
border: 1px solid #DCDFE6;
border-radius: 4px
}
.input-with-select-all-a {
width: 90%;
}
.input-with-select-all-b {
width: 10% !important;
}
.input-with-select { .input-with-select {
width: 100%; width: 100%;
} }
.input-with-select-all-b .el-input__inner {
border: none !important;
}
.copy-form .el-input-group__append { .copy-form .el-input-group__append {
background-color: #fff; background-color: #fff;

View File

@@ -8,12 +8,14 @@
<save-button type="warning" plain icon="el-icon-plus" size="small" @click="rowCopy('', 'add')" <save-button type="warning" plain icon="el-icon-plus" size="small" @click="rowCopy('', 'add')"
v-show="vaildData(permission.tenant_mission_add, false)">发布任务 v-show="vaildData(permission.tenant_mission_add, false)">发布任务
</save-button> </save-button>
<el-button type="success" size="small" plain icon="el-icon-plus" @click="handleImport" <!-- <el-button type="success" size="small" plain icon="el-icon-plus" @click="handleImport"
v-show="vaildData(permission.tenant_mission_add, false)">批量导入 v-show="vaildData(permission.tenant_mission_add, false)">批量导入
</el-button> </el-button> -->
</template> </template>
<template slot="wage" slot-scope="{ row }"> <template slot="wage" slot-scope="{ row }">
<div>{{ row.wage }}{{ wageUnitCategoryStateEnum[row.wageUnitCategory] }}</div> <!-- wageUnitCategoryOtherEnum -->
<div>{{row.wageUnitCategory === 4 ? wageCategoryOtherEnum[row.wage] : row.wage }}{{ row.wageUnitCategory !== 4 ? wageUnitCategoryStateEnum[row.wageUnitCategory] :'' }}</div>
<!-- <div>{{row.wage }}{{ wageUnitCategoryStateEnum[row.wageUnitCategory] }}</div> -->
</template> </template>
<!--/自定义按钮--> <!--/自定义按钮-->
<!--自定义列--> <!--自定义列-->
@@ -59,15 +61,19 @@
<el-button icon="el-icon-view" type="text" v-if="row.reviewState === 8" size="mini" @click="employmentNum(row)"> <el-button icon="el-icon-view" type="text" v-if="row.reviewState === 8" size="mini" @click="employmentNum(row)">
已录用 已录用
</el-button> </el-button>
<!-- <el-button :size="size" :type="type"
@click="reviewStateClk(row)"
v-if="row.reviewState === 0" v-show="vaildData(permission.tenant_mission_review, false)">审核
</el-button> -->
<el-button icon="el-icon-view" :size="size" :type="type" @click.stop="rowView(row)" <el-button icon="el-icon-view" :size="size" :type="type" @click.stop="rowView(row)"
v-show="vaildData(permission.tenant_mission_view, false)">查看 v-show="vaildData(permission.tenant_mission_view, false)">查看
</el-button> </el-button>
<!-- <save-button icon="el-icon-check" :size="size" :type="type" @click="rowCopy(row, 'copy')">复制</save-button> --> <!-- <save-button icon="el-icon-check" :size="size" :type="type" @click="rowCopy(row, 'copy')">复制</save-button> -->
<el-button icon="el-icon-edit" :size="size" :type="type" @click="rowCopy(row, 'edit')" <el-button icon="el-icon-edit" :size="size" :type="type" @click="rowCopy(row, 'edit')"
v-if="row.reviewState === 0 || row.reviewState === 1" v-if="row.reviewState === 0"
:disabled="row.signUpCount !== 0" v-show="vaildData(permission.tenant_mission_edit, false)">编辑 :disabled="row.signUpCount !== 0" v-show="vaildData(permission.tenant_mission_edit, false)">编辑
</el-button> </el-button>
<el-button v-if="row.reviewState !== 9" icon="el-icon-delete" :size="size" :type="type" <el-button v-if="state !==2 && row.reviewState !== 8" icon="el-icon-delete" :size="size" :type="type"
@click="$refs.crud.rowDel(row)" @click="$refs.crud.rowDel(row)"
:disabled="row.signUpCount !== 0" v-show="vaildData(permission.tenant_mission_cancel, false)">取消 :disabled="row.signUpCount !== 0" v-show="vaildData(permission.tenant_mission_cancel, false)">取消
</el-button> </el-button>
@@ -103,6 +109,9 @@
</avue-form> </avue-form>
</el-dialog> </el-dialog>
<!--/批量导入--> <!--/批量导入-->
<!--审核-->
<reviewView :visible.sync="reviewState" @refreshChange="refreshChange" ref="reviewView" :model="reviewStateRow"></reviewView>
<!--/审核-->
</div> </div>
</template> </template>
@@ -113,6 +122,7 @@ import CopyMission from "../Dialog/CopyMission";
import Employ from "../Dialog/Employ"; import Employ from "../Dialog/Employ";
import employmentNum from "../Dialog/EmployNumber"; import employmentNum from "../Dialog/EmployNumber";
import Recommend from "../Dialog/Recommend"; import Recommend from "../Dialog/Recommend";
import reviewView from './reviewView.vue'
import Contrast from "../Dialog/Contrast" import Contrast from "../Dialog/Contrast"
import SkillSelect from "../Dialog/Skill"; import SkillSelect from "../Dialog/Skill";
import missionView from "./missionView.vue"; import missionView from "./missionView.vue";
@@ -122,12 +132,23 @@ import {mapGetters} from "vuex";
import {dateFormat} from "@/util/date"; import {dateFormat} from "@/util/date";
import {getTemplate} from "@/api/resource/template"; import {getTemplate} from "@/api/resource/template";
import saveButton from "./saveButton"; import saveButton from "./saveButton";
import {dataSourcesEnum, educationState, missionState, recruitStatus, wageUnitCategoryState} from "@/common/dic"; import {dataSourcesEnum, educationState, missionState, recruitStatus, wageUnitCategoryState,wageUnitCategoryOther} from "@/common/dic";
const wageUnitCategoryStateEnum = {} const wageUnitCategoryStateEnum = {}
wageUnitCategoryState.map((item) => { wageUnitCategoryState.map((item) => {
wageUnitCategoryStateEnum[item.value] = item.label wageUnitCategoryStateEnum[item.value] = item.label
}) })
const wageCategoryOtherEnum = {}
wageUnitCategoryOther.map((item) => {
wageCategoryOtherEnum[item.value] = item.label
})
function getDic(arr) {
let rel = {};
arr.forEach((element) => {
rel[element.value] = element.label;
});
return rel;
}
export default { export default {
components: { components: {
CopyMission, CopyMission,
@@ -138,7 +159,8 @@ export default {
saveButton, saveButton,
Contrast, Contrast,
employmentNum, employmentNum,
excelAccept excelAccept,
reviewView
}, },
filters: { filters: {
ellipsis(value) { ellipsis(value) {
@@ -152,6 +174,8 @@ export default {
data() { data() {
return { return {
wageUnitCategoryStateEnum, wageUnitCategoryStateEnum,
wageCategoryOtherEnum,
education: getDic(educationState),
excelBox: false, excelBox: false,
excelForm: {isCovered: 1}, excelForm: {isCovered: 1},
excelOption: { excelOption: {
@@ -198,6 +222,10 @@ export default {
data: [], data: [],
obj: {}, obj: {},
missionNo: '', missionNo: '',
reviewState: false, // 审核弹框
reviewStateRow: {}, // 审核需要的数据
reviewValue: {},
reject:false
}; };
}, },
created() { created() {
@@ -379,6 +407,7 @@ export default {
], ],
}; };
}, },
}, },
methods: { methods: {
format(date) { format(date) {
@@ -550,6 +579,12 @@ export default {
this.templateLoading = false; this.templateLoading = false;
}); });
}, },
// 点击审核
reviewStateClk(row) {
// this.reviewState = true
this.$refs.reviewView.refreshReview(true)
this.reviewStateRow = row
}
}, },
}; };
</script> </script>

View File

@@ -0,0 +1,400 @@
<template>
<el-drawer title="审核" :visible.sync="reviewState" @closed="closed" size="60%">
<div class="mission-view">
<el-form label-position="left" size="small">
<el-collapse v-model="activeNames" @change="handleChange" class="avue-group">
<el-collapse-item title="岗位信息" name="1" disabled="true">
<template slot="title">
<div class="avue-group__header">
<div class="avue-group__title">零工岗位信息</div>
</div>
</template>
<el-row>
<el-col span="12">
<el-form-item label="岗位名称:">{{
model.missionTitle
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="岗位编码:">{{
model.missionNo
}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="12">
<el-form-item label="发布时间:">{{ format(model.stime) }}</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="结束时间:">{{ format(model.etime) }}</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="岗位要求" name="2" disabled="true">
<template slot="title">
<div class="avue-group__header">
<div class="avue-group__title">岗位要求</div>
</div>
</template>
<el-row>
<el-col span="12">
<el-form-item label="招聘人数:">{{ model.peopleNum }}</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="参考工资:">{{
model.wageUnitCategory === 4 ? wageCategoryOtherEnum[model.wage] : model.wage
}}{{ model.wageUnitCategory !== 4 ? wageUnitCategory[model.wageUnitCategory] : '' }}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="12">
<el-form-item label="行业类型:">{{
model.tradeNames
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item>
<label slot="label">零工工种</label>
{{ model.worktypeNames }} /
{{ model.skillNames }}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="24">
<el-form-item label="岗位描述:">{{
model.missionDesc
}}
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="人员要求" name="3" disabled="true">
<template slot="title">
<div class="avue-group__header">
<div class="avue-group__title">人员要求</div>
</div>
</template>
<el-row>
<!-- <el-col span="16">-->
<!-- <el-form-item label="人员属性:">{{-->
<!-- model.userNature-->
<!-- }}-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col span="16">
<el-form-item label="学历要求:">{{
education[model.education]
}}
</el-form-item>
</el-col>
<el-col span="8">
<el-form-item label="年龄要求:">{{
model.ageDesc
}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="8">
<el-form-item label="经验要求:">{{
model.experienceDesc
}}
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="联系人" name="4" disabled="true">
<template slot="title">
<div class="avue-group__header">
<div class="avue-group__title">用工单位信息</div>
</div>
</template>
<el-row>
<el-col span="12">
<el-form-item label="用工单位:">{{
model.missionCompanyName
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="单位信用代码:">{{
model.missionCompanyScale
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="单位性质:">{{
model.missionCompanyNature
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="所属行业:">{{
model.missionCompanyIndustry
}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="24">
<el-form-item label="单位介绍:">{{
model.missionCompanyDescription
}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="8">
<el-form-item label="联 系 人:">{{
model.callName
}}
</el-form-item>
</el-col>
<el-col span="8">
<el-form-item label="联系方式:">{{
model.callTel
}}
</el-form-item>
</el-col>
<el-col span="8">
<el-form-item>
<label slot="label">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</label>
{{ model.callNumber }}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="24">
<el-form-item label="工作地址:" v-if="model.cityId">{{ model.cityId }}</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="24">
<el-form-item label="详细地址:">{{
model.address
}}
</el-form-item>
<!-- <select-map :lat="model.lat" :lng="model.lon" :isCanEdit="false" :type="'view'"></select-map>-->
<super-map-view
:isCanEdit="false"
:longitude="model.lon"
:latitude="model.lat"
:open="true"
:zoom="10"
:min-zoom="10"
:max-zoom="20"
:flag-tip="false"
placeholder="请输入详细地址"
:type="'edit'"
></super-map-view>
</el-col>
</el-row>
</el-collapse-item>
<el-collapse-item title="审核状态" name="5" disabled="true">
<template slot="title">
<div class="avue-group__header">
<div class="avue-group__title">审核信息</div>
</div>
</template>
<avue-form
:option="reviewOption"
ref="reviewFrom"
v-model="reviewValue"
@submit="submit"
>
<template slot="menuForm">
<el-button @click="refreshReview(false)">取消</el-button>
</template>
</avue-form>
</el-collapse-item>
</el-collapse>
</el-form>
</div>
</el-drawer>
</template>
<script>
import {mapGetters} from "vuex";
import {dateFormat} from "@/util/date";
import {
wageUnitCategoryState,
educationState,
genderState,
recruitStatus,
wageUnitCategoryOther
} from "@/common/dic";
import {missionReview} from "@/api/tenant/mission";
function getDic(arr) {
let rel = {};
arr.forEach((element) => {
rel[element.value] = element.label;
});
return rel;
}
export default {
props: {model: Object, visible:Boolean},
data() {
return {
activeNames: ["1", "2", "3", "4", "5"],
wageUnitCategory: getDic(wageUnitCategoryState),
education: getDic(educationState),
gender: getDic(genderState),
recruit: getDic(recruitStatus),
reject: false,
reviewValue: {},
wageCategoryOtherEnum: getDic(wageUnitCategoryOther),
reviewState: false
};
},
mounted() {
},
methods: {
getSkill(skillStr) {
return skillStr.split(",");
},
format(date) {
if (date) {
return dateFormat(new Date(date), "yyyy/MM/dd");
}
},
// 点击提交
submit(form,done) {
const params = {
id: this.model.id,
remarks: '',
reviewMsg: this.reviewValue.reviewMsg,
reviewState: this.reviewValue.reviewState
}
missionReview(params).then(res => {
if (res.data.code === 200) {
done();
this.refreshReview(false)
this.$message({
type: "success",
message: res.data.msg,
});
this.$emit('refreshChange')
} else {
this.$message({
type: "error",
message: res.data.msg,
});
}
})
},
// 点击清空
refreshReview(res) {
this.reviewState = res
}
},
computed: {
...mapGetters(["area"]),
city() {
return this.$store.getters.getAreaParents(this.model.cityId);
},
// reviewState: {
// get() {
// return this.visible;
// },
// set(val) {
// this.$emit("update:visible", val);
// },
// },
reviewOption(){
return {
// size: "small",
labelWidth: 150,
labelPosition: 'left',
emptyBtn: false,
// submitBtn: false,
emptyText: '取消',
column:[
{
label: '审核',
prop: 'reviewState',
type: 'select',
span: 18,
dicData: [{
label: '通过',
value: 1
}, {
label: '驳回',
value: 9
}],
rules: [
{
required: true,
message: "请选择审核结果",
trigger: "blur",
},
],
change:({column,value}) =>{
console.log(value, column)
if(value == 9){
this.reject = true
}else{
this.reject = false
}
}
},
{
label: '驳回原因',
prop: 'reviewMsg',
type: 'textarea',
rows: 5,
span: 18,
display: this.reject,
rules: [
{
required: true,
message: "请输入驳回原因",
trigger: "blur",
},
],
}
]
}
},
},
};
</script>
<style>
.mission-view .el-tag + .el-tag {
margin-left: 5px;
}
.mission-view .el-form {
padding: 0 20px;
}
.mission-view .el-form .el-col {
padding: 0 10px;
}
.mission-view .el-form .el-col .el-form-item {
margin-bottom: 18px;
}
.mission-view .el-collapse {
border-top: 0px;
}
.button {
text-align: center;
}
</style>