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',
})
}
// 零工岗位审核接口
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 },
];
export const wageUnitCategoryOther = [
{ value: 1, label: "计件", disable: false },
{ value: 2, label: "面议", disable: false },
];
export const wageOptionsMonth = [
{
value: "2000元以下/月",

View File

@@ -25,6 +25,7 @@ export default {
type: String,
default: "-"
},
city: Boolean, // 12月3号修改 下拉从市区开始
filterCity: Array
},
data() {
@@ -50,8 +51,10 @@ export default {
if (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
}
},

View File

@@ -23,7 +23,7 @@
@refresh-change="refreshChange"
@on-load="onLoad"
>
<template slot="menuLeft">
<!-- <template slot="menuLeft">
<el-button
v-if="vaildData(permission.manage_mission_check, false)"
size="small"
@@ -32,7 +32,7 @@
>审核
</el-button
>
</template>
</template> -->
<template slot="menuRight">
<el-button size="small" :disabled="downloadButton" @click.stop="downRecords" type="primary"
>导出
@@ -46,8 +46,11 @@
@click.stop="rowView(row)"
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
type="text"
size="small"
@@ -78,6 +81,8 @@
@onCancel="diaLogCancel"
@onConfirm="diaLogConfirm"
></PromptDialog>
<reviewView :visible.sync="reviewState" @refreshChange="refreshChange" ref="reviewView" :model="reviewStateRow"></reviewView>
</basic-container>
</template>
@@ -95,6 +100,7 @@ import {downloadEcxel} from '@/util/util'
import {mapGetters} from "vuex";
import missionView from "@/views/util/mission-view";
import zpView from "./zpView";
import reviewView from './reviewView.vue'
import {missionState, wageUnitCategoryState, recruitStatus, dataSourcesEnum, educationState} from "@/common/dic";
import {calcDate} from "@/util/date";
import {Message} from "element-ui";
@@ -116,10 +122,12 @@ const message = lodash.throttle(
);
export default {
components: {missionView, zpView, PromptDialog},
components: {missionView, zpView, PromptDialog, reviewView},
name: "manage_mission",
data() {
return {
reviewState: false, // 审核弹框
reviewStateRow: {}, // 审核需要的数据
dialogFlag: false,
selectIdList: [],
recruitStatus,
@@ -159,7 +167,7 @@ export default {
searchMenuSpan: 5,
menuWidth: 110,
border: true,
selection: true,
// selection: true,
viewBtn: false,
addBtn: false,
editBtn: false,
@@ -578,7 +586,12 @@ export default {
this.downloadButton = false
})
},
// 点击审核
reviewStateClk(row) {
// this.reviewState = true
this.$refs.reviewView.refreshReview(true)
this.reviewStateRow = row
}
},
};
</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
}))
}
let resData = await pushPostUserServe(params)
// 处理错误的时候 状态不会改
await pushPostUserServe(params).then(resData => {
// 成功的时候
if (resData.data.code === 200) {
const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
setTimeout(() => {
@@ -268,8 +270,21 @@ export default {
this.$refs.crud2.selectClear()
this.pushState = false
}, 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() {
this.pushState = true
@@ -284,7 +299,8 @@ export default {
userName: item.name
}))
}
let resData = await pushPolicyUserServe(params)
// 处理错误的时候 状态不会改
await pushPolicyUserServe(params).then(resData => {
if (resData.data.code === 200) {
const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
setTimeout(() => {
@@ -293,6 +309,19 @@ export default {
this.pushState = false
}, 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() {
this.progress = 0

View File

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

View File

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

View File

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