flat: cityId 合并

This commit is contained in:
Apcallover
2024-04-23 19:42:48 +08:00
parent 381f2273b3
commit 90258f3179
8 changed files with 660 additions and 533 deletions

View File

@@ -0,0 +1,57 @@
<template>
<el-cascader
:options="area.labelData"
:show-all-levels="showAllLevels"
v-model="county"
:filterable="filterable"
:placeholder="placeholder"
:disabled="disabled"
:clearable="clearable"
></el-cascader>
</template>
<script>
import {mapGetters} from "vuex";
export default {
props: {
value: String,
filterable: Boolean,
placeholder: String,
showAllLevels: {type: Boolean, default: true},
disabled: Boolean,
clearable: Boolean,
splicer: {
type: String,
default: "-"
}
},
data() {
return {
options: [],
};
},
created() {
this.$store.dispatch("InitArea");
},
watch: {},
computed: {
...mapGetters(["area"]),
county: {
get() {
if (this.value) {
return this.value.split(this.splicer);
} else {
return []
}
},
set(val) {
this.$emit("input", val.join(this.splicer));
},
},
},
};
</script>
<style>
</style>

View File

@@ -18,6 +18,7 @@ import App from './App';
import basicBlock from './components/basic-block/main' import basicBlock from './components/basic-block/main'
import basicContainer from './components/basic-container/main' import basicContainer from './components/basic-container/main'
import cityCascader from './components/city-cascader/main' import cityCascader from './components/city-cascader/main'
import cityLabelCascader from './components/city-cascader/label'
import goBack from './components/go-back/main' import goBack from './components/go-back/main'
import tagSelect from './components/tag-select/main' import tagSelect from './components/tag-select/main'
import tooltip from './components/tooltip/index' import tooltip from './components/tooltip/index'
@@ -39,6 +40,7 @@ Vue.component('basicContainer', basicContainer);
Vue.component('basicBlock', basicBlock); Vue.component('basicBlock', basicBlock);
Vue.component('jl-go-back', goBack); Vue.component('jl-go-back', goBack);
Vue.component('jl-city-cascader', cityCascader); Vue.component('jl-city-cascader', cityCascader);
Vue.component('jl-cityLabel-cascader', cityLabelCascader);
Vue.component('tag-select', tagSelect) Vue.component('tag-select', tagSelect)
Vue.component('tool-tip', tooltip) Vue.component('tool-tip', tooltip)
// 加载相关url地址 // 加载相关url地址
@@ -55,6 +57,7 @@ Vue.prototype.website = website;
function sleep(time) { function sleep(time) {
return new Promise((resolve) => setTimeout(resolve, time)) return new Promise((resolve) => setTimeout(resolve, time))
} }
Vue.prototype.$api = {sleep} Vue.prototype.$api = {sleep}
Vue.config.productionTip = false; Vue.config.productionTip = false;

View File

@@ -1,6 +1,8 @@
function format(data) { function format(data) {
const result = []; const result = [];
const dic = {'0': {label: 'root', value: '0', children: result}}; const dic = {'0': {label: 'root', value: '0', children: result}};
const labelResult = []
const labelChild = {'0': {label: 'root', value: '0', children: labelResult}};
data.forEach(item => { data.forEach(item => {
if (item.layer > 3) { if (item.layer > 3) {
@@ -27,15 +29,26 @@ function format(data) {
} else { } else {
dic[item.areaId] = node; dic[item.areaId] = node;
} }
node.valueId = node.value
node.value = item.areaName
if (labelChild.hasOwnProperty(item.parentId)) {
if (!labelChild[item.parentId].children) {
labelChild[item.parentId].children = [];
}
labelChild[item.parentId].children.push(node);
} else {
labelChild[item.parentId] = {children: [node]};
}
}); });
return {data: result, dic}; return {data: result, dic, labelData: labelResult};
} }
let loaded = false let loaded = false
const area = { const area = {
state: {data: [], dic: {}}, state: {data: [], dic: {}, labelData: []},
actions: {InitArea({commit}) { actions: {
InitArea({commit}) {
if (!loaded) { if (!loaded) {
loaded = true loaded = true
import('@/util/area').then((resp) => { import('@/util/area').then((resp) => {
@@ -48,6 +61,7 @@ const area = {
SET_AREA: (state, data) => { SET_AREA: (state, data) => {
state.data = data.data state.data = data.data
state.dic = data.dic state.dic = data.dic
state.labelData = data.labelData
}, },
}, },
getters: { getters: {

View File

@@ -18,12 +18,12 @@
@submit="submit" @submit="submit"
> >
<template slot="cityId" slot-scope="{ disabled }"> <template slot="cityId" slot-scope="{ disabled }">
<jl-city-cascader <jl-cityLabel-cascader
:disabled="disabled" :disabled="disabled"
filterable filterable
v-model="obj.cityId" v-model="obj.cityId"
placeholder="请选择 工作地址" placeholder="请选择 工作地址"
></jl-city-cascader> ></jl-cityLabel-cascader>
</template> </template>
<template slot-scope="{ disabled }" slot="skillIds"> <template slot-scope="{ disabled }" slot="skillIds">

View File

@@ -48,18 +48,19 @@
</el-input> </el-input>
</template> --> </template> -->
<template slot="city" slot-scope="{ disabled }"> <template slot="cityId" slot-scope="{ disabled }">
<jl-city-cascader <jl-cityLabel-cascader
:disabled="disabled" :disabled="disabled"
filterable filterable
v-model="obj.city" v-model="obj.cityId"
placeholder="请选择 工作地址" placeholder="请选择 工作地址"
></jl-city-cascader> ></jl-cityLabel-cascader>
</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"> <el-input placeholder="请输入工资" type="number" v-model="obj.wage" class="input-with-select">
<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" :value="item.value"></el-option> <el-option :label="item.label" v-for="item in wageUnitCategory" :key="item.value"
:value="item.value"></el-option>
</el-select> </el-select>
</el-input> </el-input>
</template> </template>
@@ -138,7 +139,8 @@
icon="el-icon-circle-close" icon="el-icon-circle-close"
@click="drawer = false" @click="drawer = false"
:loading="disabled" :loading="disabled"
>取消</el-button >取消
</el-button
> >
</template> </template>
</avue-form> </avue-form>
@@ -253,7 +255,9 @@ export default {
} }
}, },
wallMaxAndMin(val) { wallMaxAndMin(val) {
if(!val.length) {return;} if (!val.length) {
return;
}
switch (true) { switch (true) {
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)
@@ -459,8 +463,7 @@ export default {
if (value) { if (value) {
self.stimeDate = value.split(' ')[0] self.stimeDate = value.split(' ')[0]
self.endTimeFlag = false self.endTimeFlag = false
} } else {
else{
self.endTimeFlag = true self.endTimeFlag = true
} }
}, },
@@ -811,7 +814,7 @@ export default {
{ {
label: "工作地址", label: "工作地址",
type: "input", type: "input",
prop: "city", prop: "cityId",
rules: [ rules: [
{ {
required: true, required: true,
@@ -849,7 +852,9 @@ export default {
wageBlur(e) { wageBlur(e) {
const value = e.target.value const value = e.target.value
const val = this.wallMaxAndMin const val = this.wallMaxAndMin
if(!val.length) {return;} if (!val.length) {
return;
}
switch (true) { switch (true) {
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)
@@ -1141,7 +1146,7 @@ export default {
callName: row.callName, callName: row.callName,
callTel: row.callTel, callTel: row.callTel,
callNumber: row.callNumber, callNumber: row.callNumber,
city: row.city, cityId: row.cityId,
address: row.address, address: row.address,
lat: row.lat, lat: row.lat,
lon: row.lon, lon: row.lon,
@@ -1190,7 +1195,7 @@ export default {
callName: row.callName, callName: row.callName,
callTel: row.callTel, callTel: row.callTel,
callNumber: row.callNumber, callNumber: row.callNumber,
city: row.city, cityId: row.cityId,
address: row.address, address: row.address,
lat: row.lat, lat: row.lat,
lon: row.lon, lon: row.lon,
@@ -1394,12 +1399,15 @@ export default {
.input-with-select { .input-with-select {
width: 100%; width: 100%;
} }
.copy-form .el-input-group__append { .copy-form .el-input-group__append {
background-color: #fff; background-color: #fff;
} }
.input-with-select .el-input-group__append .el-input__icon { .input-with-select .el-input-group__append .el-input__icon {
display: none; display: none;
} }
.input-with-select .el-input-group__append input { .input-with-select .el-input-group__append input {
width: 105px; width: 105px;
padding: 0; padding: 0;
@@ -1410,24 +1418,30 @@ export default {
line-height: normal; line-height: normal;
padding: 7px; padding: 7px;
} }
.my-autocomplete li .name { .my-autocomplete li .name {
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
} }
.my-autocomplete li .addr { .my-autocomplete li .addr {
font-size: 12px; font-size: 12px;
color: #b4b4b4; color: #b4b4b4;
} }
.my-autocomplete li .highlighted .addr { .my-autocomplete li .highlighted .addr {
color: #ddd; color: #ddd;
} }
.tradeId .el-autocomplete { .tradeId .el-autocomplete {
width: 100%; width: 100%;
} }
.tradeId .el-icon-plus:before { .tradeId .el-icon-plus:before {
content: "\e6d9 添加行业类型"; content: "\e6d9 添加行业类型";
color: #606266; color: #606266;
} }
.tradeId .el-input--small input { .tradeId .el-input--small input {
padding-right: 150px; padding-right: 150px;
} }

View File

@@ -12,12 +12,14 @@
<el-col span="12"> <el-col span="12">
<el-form-item label="任务名称:">{{ <el-form-item label="任务名称:">{{
model.missionTitle model.missionTitle
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="12"> <el-col span="12">
<el-form-item label="任务编码:">{{ <el-form-item label="任务编码:">{{
model.missionNo model.missionNo
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
@@ -41,15 +43,18 @@
<el-form-item label="招聘人数:">{{ model.peopleNum }}</el-form-item> <el-form-item label="招聘人数:">{{ model.peopleNum }}</el-form-item>
</el-col> </el-col>
<el-col span="12"> <el-col span="12">
<el-form-item label="参考工资:">{{ model.wage <el-form-item label="参考工资:">{{
}}{{ wageUnitCategory[model.wageUnitCategory] }}</el-form-item> model.wage
}}{{ wageUnitCategory[model.wageUnitCategory] }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col span="12"> <el-col span="12">
<el-form-item label="行业类型:">{{ <el-form-item label="行业类型:">{{
model.tradeNames model.tradeNames
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="12"> <el-col span="12">
<el-form-item> <el-form-item>
@@ -63,7 +68,8 @@
<el-col span="24"> <el-col span="24">
<el-form-item label="任务描述:">{{ <el-form-item label="任务描述:">{{
model.missionDesc model.missionDesc
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-collapse-item> </el-collapse-item>
@@ -75,27 +81,31 @@
</div> </div>
</template> </template>
<el-row> <el-row>
<!-- <el-col span="16">-->
<!-- <el-form-item label="人员属性:">{{-->
<!-- model.userNature-->
<!-- }}-->
<!-- </el-form-item>-->
<!-- </el-col>-->
<el-col span="16"> <el-col span="16">
<el-form-item label="人员属性">{{ <el-form-item label="学历要求">{{
model.userNature education[model.education]
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="8"> <el-col span="8">
<el-form-item label="年龄要求:">{{ <el-form-item label="年龄要求:">{{
model.ageDesc model.ageDesc
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col span="16">
<el-form-item label="学历要求:">{{
education[model.education]
}}</el-form-item>
</el-col>
<el-col span="8"> <el-col span="8">
<el-form-item label="经验要求:">{{ <el-form-item label="经验要求:">{{
model.experienceDesc model.experienceDesc
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-collapse-item> </el-collapse-item>
@@ -110,41 +120,48 @@
<el-col span="12"> <el-col span="12">
<el-form-item label="企业名称:">{{ <el-form-item label="企业名称:">{{
model.missionCompanyName model.missionCompanyName
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="12"> <el-col span="12">
<el-form-item label="企业信用代码:">{{ <el-form-item label="企业信用代码:">{{
model.missionCompanyScale model.missionCompanyScale
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="12"> <el-col span="12">
<el-form-item label="企业性质:">{{ <el-form-item label="企业性质:">{{
model.missionCompanyNature model.missionCompanyNature
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="12"> <el-col span="12">
<el-form-item label="所属行业:">{{ <el-form-item label="所属行业:">{{
model.missionCompanyIndustry model.missionCompanyIndustry
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col span="24"> <el-col span="24">
<el-form-item label="企业介绍:">{{ <el-form-item label="企业介绍:">{{
model.missionCompanyDescription model.missionCompanyDescription
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col span="8"> <el-col span="8">
<el-form-item label="联 系 人:">{{ <el-form-item label="联 系 人:">{{
model.callName model.callName
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="8"> <el-col span="8">
<el-form-item label="联系方式:">{{ <el-form-item label="联系方式:">{{
model.callTel model.callTel
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="8"> <el-col span="8">
<el-form-item> <el-form-item>
@@ -155,15 +172,15 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col span="24"> <el-col span="24">
<el-form-item label="工作地址:" v-if="model.cityId">{{ city[0] && city[0].label }} {{ city[1] && city[1].label }} <el-form-item label="工作地址:" v-if="model.cityId">{{ model.cityId }}</el-form-item>
{{ city[2] && city[2].label }}</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col span="24"> <el-col span="24">
<el-form-item label="详细地址:">{{ <el-form-item label="详细地址:">{{
model.address model.address
}}</el-form-item> }}
</el-form-item>
<select-map :lat="model.lat" :lng="model.lon" :isCanEdit="false" :type="'view'"></select-map> <select-map :lat="model.lat" :lng="model.lon" :isCanEdit="false" :type="'view'"></select-map>
</el-col> </el-col>
</el-row> </el-row>
@@ -179,14 +196,16 @@
<el-col span="24"> <el-col span="24">
<el-form-item label="审核状态:">{{ <el-form-item label="审核状态:">{{
recruit[model.reviewState] recruit[model.reviewState]
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col span="24"> <el-col span="24">
<el-form-item label="审核备注:">{{ <el-form-item label="审核备注:">{{
model.reviewMsg || '无' model.reviewMsg || '无'
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-collapse-item> </el-collapse-item>
@@ -226,7 +245,8 @@ export default {
recruit: getDic(recruitStatus), recruit: getDic(recruitStatus),
}; };
}, },
mounted() { }, mounted() {
},
methods: { methods: {
getSkill(skillStr) { getSkill(skillStr) {
return skillStr.split(","); return skillStr.split(",");

View File

@@ -12,12 +12,14 @@
<el-col span="12"> <el-col span="12">
<el-form-item label="岗位名称:">{{ <el-form-item label="岗位名称:">{{
model.jobName model.jobName
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="12"> <el-col span="12">
<el-form-item label="岗位编码:">{{ <el-form-item label="岗位编码:">{{
model.missionNo model.missionNo
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
@@ -46,15 +48,18 @@
<el-form-item label="招聘人数:">{{ model.peopleNum }}</el-form-item> <el-form-item label="招聘人数:">{{ model.peopleNum }}</el-form-item>
</el-col> </el-col>
<el-col span="12"> <el-col span="12">
<el-form-item label="参考工资:">{{ model.wage <el-form-item label="参考工资:">{{
}}{{ wageUnitCategory[model.wageUnitCategory] }}</el-form-item> model.wage
}}{{ wageUnitCategory[model.wageUnitCategory] }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col span="12"> <el-col span="12">
<el-form-item label="行业类型:">{{ <el-form-item label="行业类型:">{{
model.tradeNames model.tradeNames
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="12"> <el-col span="12">
<el-form-item> <el-form-item>
@@ -68,7 +73,8 @@
<el-col span="24"> <el-col span="24">
<el-form-item label="岗位描述:">{{ <el-form-item label="岗位描述:">{{
model.jobDescription model.jobDescription
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-collapse-item> </el-collapse-item>
@@ -80,28 +86,32 @@
</div> </div>
</template> </template>
<el-row> <el-row>
<!-- <el-col span="16">-->
<!-- <el-form-item label="人员属性:">{{-->
<!-- model.userNature-->
<!-- }}</el-form-item>-->
<!-- </el-col>-->
<el-col span="16"> <el-col span="16">
<el-form-item label="人员属性">{{ <el-form-item label="学历要求">{{
model.userNature education[model.education]
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="8"> <el-col span="8">
<el-form-item label="年龄要求:">{{ <el-form-item label="年龄要求:">{{
model.ageDesc model.ageDesc
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col span="16">
<el-form-item label="学历要求:">{{
education[model.education]
}}</el-form-item>
</el-col>
<el-col span="8"> <el-col span="8">
<el-form-item label="经验要求:">{{ <el-form-item label="经验要求:">{{
model.experienceDesc model.experienceDesc
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-collapse-item> </el-collapse-item>
@@ -116,41 +126,48 @@
<el-col span="12"> <el-col span="12">
<el-form-item label="企业名称:">{{ <el-form-item label="企业名称:">{{
model.jobCompanyName model.jobCompanyName
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="12"> <el-col span="12">
<el-form-item label="企业信用代码:">{{ <el-form-item label="企业信用代码:">{{
model.jobCompanyScale model.jobCompanyScale
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="12"> <el-col span="12">
<el-form-item label="企业性质:">{{ <el-form-item label="企业性质:">{{
model.jobCompanyNature model.jobCompanyNature
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="12"> <el-col span="12">
<el-form-item label="所属行业:">{{ <el-form-item label="所属行业:">{{
model.jobCompanyIndustry model.jobCompanyIndustry
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col span="24"> <el-col span="24">
<el-form-item label="企业介绍:">{{ <el-form-item label="企业介绍:">{{
model.jobCompanyDescription model.jobCompanyDescription
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col span="8"> <el-col span="8">
<el-form-item label="联 系 人:">{{ <el-form-item label="联 系 人:">{{
model.callName model.callName
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="8"> <el-col span="8">
<el-form-item label="联系方式:">{{ <el-form-item label="联系方式:">{{
model.callTel model.callTel
}}</el-form-item> }}
</el-form-item>
</el-col> </el-col>
<el-col span="8"> <el-col span="8">
<el-form-item> <el-form-item>
@@ -161,15 +178,16 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col span="24"> <el-col span="24">
<el-form-item label="工作地址:" v-if="model.cityId">{{ city[0] && city[0].label }} {{ city[1] && city[1].label }} <el-form-item label="工作地址:" v-if="model.cityId">{{ model.cityId }}
{{ city[2] && city[2].label }}</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col span="24"> <el-col span="24">
<el-form-item label="详细地址:">{{ <el-form-item label="详细地址:">{{
model.address model.address
}}</el-form-item> }}
</el-form-item>
<select-map :lat="model.lat" :lng="model.lon" :isCanEdit="false" :type="'view'"></select-map> <select-map :lat="model.lat" :lng="model.lon" :isCanEdit="false" :type="'view'"></select-map>
</el-col> </el-col>
</el-row> </el-row>
@@ -208,7 +226,8 @@
gender: getDic(genderState), gender: getDic(genderState),
}; };
}, },
mounted() { }, mounted() {
},
methods: { methods: {
getSkill(skillStr) { getSkill(skillStr) {
return skillStr.split(","); return skillStr.split(",");

View File

@@ -23,11 +23,11 @@ module.exports = {
port: 1888, port: 1888,
proxy: { proxy: {
"/api": { "/api": {
target: 'http://10.165.0.173:8000', target: 'http://192.168.1.101:8200',
ws: true, ws: true,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
"^/api": "/" "^/api/jobslink-api": "/"
} }
}, },
"/qq/map": { "/qq/map": {