33 Commits

Author SHA1 Message Date
Apcallover
b2fabc9000 flat: eslint 规则 2024-05-30 17:07:15 +08:00
Apcallover
45fcff178b flat: 忽略flatgeobuf 大小写 2024-05-30 15:36:10 +08:00
Apcallover
e13fae93ef flat: 优化 2024-05-30 09:17:01 +08:00
Apcallover
6f99dd70f9 flat: 服务对象 服务人 2024-05-29 18:03:21 +08:00
Apcallover
a5d7b03002 flat:zanc 2024-05-29 17:36:23 +08:00
Apcallover
a6bdf2e5cf flat: 暂存 2024-05-29 16:18:28 +08:00
Apcallover
4be04917c0 flat: 暂存 2024-05-29 14:36:48 +08:00
Apcallover
eb96014379 flat: 暂存 2024-05-29 10:21:39 +08:00
Apcallover
c9167aac36 Merge branch 'master' of https://gitee.com/beiwu/cmanager 2024-05-28 09:43:26 +08:00
Apcallover
cbf8b81775 flat: 请求大屏地址 2024-05-28 09:43:03 +08:00
Apcallover
128a85a994 flat:暂存 2024-05-27 11:39:50 +08:00
Apcallover
4fdcbd3f38 flat: 时间选择 2024-05-21 15:50:59 +08:00
Apcallover
6653360f0b Merge branch 'master' of https://gitee.com/beiwu/cmanager 2024-05-21 14:29:50 +08:00
Apcallover
195ceb284d flat: 修改些条件 2024-05-21 14:29:41 +08:00
18500206848
36a0f6634f 删除无效的引用 2024-05-20 22:05:38 +08:00
Apcallover
e970733bd0 flat: 添加期望薪资等等 2024-05-20 10:30:34 +08:00
Apcallover
255c80eaab flat: 地区选择 2024-05-17 17:18:00 +08:00
Apcallover
9da9263693 flat:清理不用的文件 2024-05-17 15:13:42 +08:00
Apcallover
42534ac881 flat: 暂存, 删除qq地图 2024-05-17 14:51:26 +08:00
Apcallover
5e0154261c flat: 街道添加地图 2024-05-16 16:01:41 +08:00
Apcallover
7a35c32284 flat: 街道添加地图 2024-05-16 16:00:59 +08:00
Apcallover
02359f2877 flat: 123 2024-05-16 11:50:21 +08:00
Apcallover
22b9e68e17 flat: 地图添加 2024-05-16 11:46:43 +08:00
lsd
bb9f8080cc stService 2024-05-16 11:08:59 +08:00
18500206848
7d5049f64a 删除无效的引用 2024-05-16 08:41:21 +08:00
Apcallover
915189d8af flat: 修改请求地址 2024-05-15 18:11:01 +08:00
Apcallover
516ce1c9ee flat: 修改请求地址 2024-05-15 16:56:32 +08:00
Apcallover
31d259b313 flat: 暂存 2024-05-14 16:26:07 +08:00
Apcallover
5f4363ce89 flat: 暂存 2024-05-13 18:27:25 +08:00
Apcallover
26dca7884c flat: 暂存 2024-05-13 14:31:25 +08:00
Apcallover
48af499b2f flat: zanc 2024-05-11 18:01:56 +08:00
Apcallover
1628473959 flat: 暂存 2024-05-11 15:43:49 +08:00
Apcallover
c839003715 flat: 添加30分钟退出功能 2024-05-10 16:45:20 +08:00
62 changed files with 6531 additions and 2536 deletions

View File

@@ -1,3 +1,5 @@
VUE_APP_SITE='default'
VUE_APP_LOGIN_ERROR = http://10.160.7.216:9920/casserver/login
VUE_APP_REPLACE_STR = {"{oss_file_url}": "http://10.165.0.173:8000", "https://dy12333.org.cn/api/jobslink-api/front/file": "http://10.165.0.173:8000/jobslink-api/front/file"}
VUE_APP_LOGIN_NEXT = http://10.160.7.216:9920/casserver/login?service=http://10.165.0.173/manage/login&stService=http%3A%2F%2F10.165.0.173%2Fmanage%2Flogin
VUE_APP_SUPPER_MAP = http://10.165.0.44:1205/proxy/rest/maps/c02c6f51f3ab4190bffd5e3e54cf5ac4/111013e9067749488d44841208771768

View File

@@ -1 +0,0 @@
VUE_APP_SITE='hengshui'

View File

@@ -1,3 +1,5 @@
VUE_APP_SITE='default'
VUE_APP_LOGIN_ERROR = http://10.160.7.216:9920/casserver/login
VUE_APP_REPLACE_STR = {"{oss_file_url}": "http://10.165.0.173:8000", "https://dy12333.org.cn/api/jobslink-api/front/file": "http://10.165.0.173:8000/jobslink-api/front/file"}
VUE_APP_REPLACE_STR = {"{oss_file_url}": "http://10.165.0.173:8000", "https://dy12333.org.cn/api/jobslink-api/front/file": "http://10.165.0.77:8000/jobslink-api/front/file"}
VUE_APP_LOGIN_NEXT = http://10.160.7.216:9920/casserver/login?service=http://10.165.0.54:8300/manage/login&stService=http%3A%2F%2F10.165.0.54%3A8300%2Fmanage%2Flogin
VUE_APP_SUPPER_MAP = http://10.165.0.44:1205/proxy/rest/maps/c02c6f51f3ab4190bffd5e3e54cf5ac4/111013e9067749488d44841208771768

View File

@@ -9,9 +9,10 @@ module.exports = {
],
rules: {
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
"no-unused-vars": ["error", {"vars": "local", "args": "none"}]
},
parserOptions: {
parser: 'babel-eslint'
}
}
}

2464
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -4,9 +4,7 @@
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"serve-hengshui": "vue-cli-service serve --mode hengshui",
"build": "vue-cli-service build",
"build-hengshui": "vue-cli-service build --mode hengshui",
"lint": "vue-cli-service lint",
"analyz": "npm_config_report=true npm run build",
"test:unit": "vue-cli-service test:unit",
@@ -14,6 +12,7 @@
},
"dependencies": {
"@smallwei/avue": "2.6.10",
"@supermap/iclient-ol": "^11.1.1",
"avue-plugin-ueditor": "^0.0.10",
"axios": "^0.18.0",
"babel-polyfill": "^6.26.0",
@@ -40,6 +39,7 @@
"xlsx": "^0.16.2"
},
"devDependencies": {
"@supermap/babel-plugin-import": "0.0.1",
"@vue/cli-plugin-babel": "^3.1.1",
"@vue/cli-plugin-eslint": "^3.1.5",
"@vue/cli-service": "^3.1.4",

View File

@@ -9,14 +9,14 @@
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="format-detection" content="telephone=no">
<meta http-equiv="X-UA-Compatible" content="chrome=1" />
<meta http-equiv="X-UA-Compatible" content="chrome=1"/>
<link rel="stylesheet" href="<%= BASE_URL %>cdn/element-ui/2.12.0/theme-chalk/index.css">
<link rel="stylesheet" href="<%= BASE_URL %>cdn/animate/3.5.2/animate.css">
<link rel="stylesheet" href="<%= BASE_URL %>cdn/iconfont/1.0.0/index.css">
<link rel="stylesheet" href="<%= BASE_URL %>resource/font/font_567566_pwc3oottzol.css"></link>
<link rel="stylesheet" href="<%= BASE_URL %>resource/font/font_1066523_6bvkeuqao36.css"></link>
<link rel="stylesheet" href="<%= BASE_URL %>resource/font/font_1939523_a2ybsew93wu.css"></link>
<link rel="icon" href="">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<title>德阳市智慧就业服务平台</title>
<style>
html,
@@ -51,7 +51,7 @@
padding: 1em 0;
}
.avue-home__footer>a {
.avue-home__footer > a {
font-size: 12px;
color: #ABABAB;
text-decoration: none;
@@ -77,38 +77,38 @@
</head>
<body>
<noscript>
<strong>
请启用浏览器的 JavaScript 然后继续。
</strong>
</noscript>
<div id="app">
<div class="avue-home">
<div class="avue-home__main">
<!-- <img class="avue-home__loading" src="/manage/svg/loading-spin.svg" alt="loading"> -->
<div class="avue-home__title">
正在加载,请耐心等待...
</div>
</div>
<div class="avue-home__footer">
<noscript>
<strong>
请启用浏览器的 JavaScript 然后继续。
</strong>
</noscript>
<div id="app">
<div class="avue-home">
<div class="avue-home__main">
<!-- <img class="avue-home__loading" src="/manage/svg/loading-spin.svg" alt="loading"> -->
<div class="avue-home__title">
正在加载,请耐心等待...
</div>
</div>
<div class="avue-home__footer">
</div>
</div>
<script src="<%= BASE_URL %>cdn/tinymce5.6.2/tinymce.min.js"></script>
<!-- built files will be auto injected -->
<script src="<%= BASE_URL %>util/aes.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/vue/2.6.10/vue.min.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/vuex/3.1.1/vuex.min.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/vue-router/3.0.1/vue-router.min.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/axios/1.0.0/axios.min.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/element-ui/2.12.0/index.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/xlsx/FileSaver.min.js"></script>
<script src="<%= BASE_URL %>cdn/xlsx/xlsx.full.min.js"></script>
</div>
<script src="<%= BASE_URL %>cdn/tinymce5.6.2/tinymce.min.js"></script>
<!-- built files will be auto injected -->
<script src="<%= BASE_URL %>util/aes.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/vue/2.6.10/vue.min.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/vuex/3.1.1/vuex.min.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/vue-router/3.0.1/vue-router.min.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/axios/1.0.0/axios.min.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/element-ui/2.12.0/index.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/xlsx/FileSaver.min.js"></script>
<script src="<%= BASE_URL %>cdn/xlsx/xlsx.full.min.js"></script>
<!-- <script src="//map.qq.com/api/js?v=2.exp&key=FW3BZ-6JTK6-GCUS5-MZCRR-3GPR5-HJFEI"></script>-->
<!-- <script src="//3gimg.qq.com/lightmap/components/geolocation/geolocation.min.js"></script>-->
<script defer src="//map.qq.com/api/js?v=2.exp&key=FW3BZ-6JTK6-GCUS5-MZCRR-3GPR5-HJFEI"></script>
<script defer src="<%= BASE_URL %>resource/geolocation.min.js"></script>
<!--<script defer src="//map.qq.com/api/js?v=2.exp&key=FW3BZ-6JTK6-GCUS5-MZCRR-3GPR5-HJFEI"></script>-->
<!--<script defer src="<%= BASE_URL %>resource/geolocation.min.js"></script>-->
</body>
</html>

View File

@@ -0,0 +1,10 @@
import request from "@/router/axios";
/*获取人才列表*/
export const getList = (current, size, params, groupId) => {
return request({
url: "/api/jobslink-api/serve/list",
method: "get",
params: {...params, current, size, groupId}
});
};

View File

@@ -5,7 +5,7 @@ export const getList = (current, size, params, groupId) => {
return request({
url: "/api/jobslink-api/serve/list",
method: "get",
params: { ...params, current, size, groupId }
params: {...params, current, size, groupId}
});
};
@@ -14,7 +14,7 @@ export const getUserList = (current, size, params, groupId) => {
return request({
url: "/api/jobslink-api/serve/user/list",
method: "get",
params: { ...params, current, size, groupId }
params: {...params, current, size, groupId}
});
};
@@ -41,7 +41,7 @@ export const remove = ids => {
return request({
url: "/api/jobslink-api/serve/remove",
method: "post",
params: { ids }
params: {ids}
});
};
@@ -50,7 +50,7 @@ export const detail = id => {
return request({
url: "/api/jobslink-api/serve/detail",
method: "get",
params: { id }
params: {id}
});
};
@@ -104,7 +104,7 @@ export const removeDept = ids => {
return request({
url: "/api/jobslink-api/serve/group/remove",
method: "post",
params: { ids }
params: {ids}
});
};
@@ -113,7 +113,7 @@ export const transferDept = (groupIds, ids) => {
return request({
url: "/api/jobslink-api/serve/updateAllGroup",
method: "post",
params: { groupIds, ids }
params: {groupIds, ids}
});
};
@@ -205,11 +205,12 @@ export const getSearchAll = params =>
method: "get",
params: params
});
export const getSearchAllByUserId = params =>
export const getSearchAllByUserId = (params, body) =>
request({
url: "/api/jobslink-api/serve/pushSearchList",
method: "get",
params: params
method: "post",
data: body,
params: params,
});
export const pushPolicyUserServe = params =>
@@ -233,9 +234,39 @@ export const getListAllTalents = params =>
params
});
export const getListUserAllTalents = params =>
request({
url: "/api/jobslink-api/serve/user/listAllTalents",
method: "get",
params
});
export const getListUserAllTalents = params =>
request({
url: "/api/jobslink-api/serve/user/listAllTalents",
method: "get",
params
});
export const addServeLog = data =>
request({
url: "/api/jobslink-api/tenant/mainserveuserlog/save",
method: "post",
data
});
export const updateServeLog = data =>
request({
url: "/api/jobslink-api/tenant/mainserveuserlog/update",
method: "post",
data
});
export const removeServeLog = data =>
request({
url: "/api/jobslink-api/tenant/mainserveuserlog/remove",
method: "post",
params: data
});
/*服务日志*/
export const getMainServeUserLog = params => {
return request({
url: "/api/jobslink-api/tenant/mainserveuserlog/listUserLog",
method: "get",
params: params
});
};

View File

@@ -112,3 +112,12 @@ export const getDeptMyTree = (params) => {
params
})
}
export const getDeptAllTree = (params) => {
return request({
url: '/api/jobslink-api/system/dept/all-tree',
method: 'get',
params
})
}

View File

@@ -40,12 +40,15 @@ export default {
county: {
get() {
if (this.value) {
return this.value.split(this.splicer);
console.log('enum', this.area)
console.log('getvalue', this.value.split(this.splicer))
return this.value.split(this.splicer).map((item) => item.replace(/\s+/g, ""));
} else {
return []
}
},
set(val) {
console.log('setvalue', val, val.join(this.splicer))
this.$emit("input", val.join(this.splicer));
},
},

View File

@@ -1,21 +1,28 @@
<template>
<el-cascader
:options="area.data"
:show-all-levels="showAllLevels"
v-model="model"
:filterable="filterable"
:placeholder="placeholder"
:disabled="disabled"
:clearable="clearable"
></el-cascader>
<div>
<el-cascader
:options="area.data"
:show-all-levels="showAllLevels"
v-model="model"
:filterable="filterable"
:placeholder="placeholder"
:disabled="disabled"
:clearable="clearable"
v-if="type !== 'view'"
></el-cascader>
<div v-else>
{{ model2 }}
</div>
</div>
</template>
<script>
import { mapGetters } from "vuex";
import {mapGetters} from "vuex";
function getProv(code) {
return code.substring(0, 2) + "0000";
}
function getCity(code) {
return code.substring(0, 4) + "00";
}
@@ -25,9 +32,12 @@ export default {
value: String,
filterable: Boolean,
placeholder: String,
showAllLevels: { type: Boolean, default: true },
showAllLevels: {type: Boolean, default: true},
disabled: Boolean,
clearable: Boolean,
type: {
default: 'custom',
}
},
data() {
return {
@@ -41,14 +51,14 @@ export default {
computed: {
...mapGetters(["area"]),
prov() {
if (this.county) {
if (this.county && this.county != -1) {
return getProv(this.county);
} else {
return "";
}
},
city() {
if (this.county) {
if (this.county && this.county != -1) {
return getCity(this.county);
} else {
return "";
@@ -60,6 +70,7 @@ export default {
},
set(val) {
this.$emit("input", val);
return val;
},
},
model: {
@@ -71,12 +82,20 @@ export default {
}
},
get() {
if (this.county) {
if (this.county && this.county != -1) {
return [this.prov, this.city, this.county];
}
return null;
},
},
model2: {
get() {
if (this.county && this.county != -1) {
return `${this.area.dic[this.prov].label}-${this.area.dic[this.city].label}-${this.area.dic[this.county].label}`
}
return null;
},
},
},
};
</script>

View File

@@ -0,0 +1,448 @@
<template>
<div class="app-content">
<el-input
v-if="showInput"
:placeholder="placeholder"
clearable
v-model="addressLocation"
@input="inputAddress"
></el-input>
<div class="app-map" id="map" style="width: 100%;height: 300px;"></div>
</div>
</template>
<script>
import 'ol/ol.css';
import Map from 'ol/Map';
import View from 'ol/View';
import TileLayer from 'ol/layer/Tile';
import SourceVector from 'ol/source/Vector';
import LayerVector from 'ol/layer/Vector';
import * as control from 'ol/control';
import {
toLonLat
} from 'ol/proj';
import Overlay from 'ol/Overlay';
import {
toStringHDMS
} from 'ol/coordinate';
import {
Select
} from 'ol/interaction'
import {
GeoJSON
} from 'ol/format';
import {
Style,
Circle,
Fill,
Stroke,
Icon,
Text
} from 'ol/style';
import Feature from 'ol/Feature';
import {
Point,
Polygon
} from 'ol/geom';
import {
Logo,
TileSuperMapRest,
FeatureService,
GetFeaturesByGeometryParameters
} from '@supermap/iclient-ol';
const geoJSONParser = new GeoJSON();
export default {
name: "uMapView",
props: {
placeholder: String,
latitude: {
required: false,
default: 31.126855,
},
longitude: {
required: false,
default: 104.397894,
},
zoom: {
type: Number,
required: false,
default: 10,
},
maxZoom: {
type: Number,
required: false,
default: 20,
},
minZoom: {
type: Number,
required: false,
default: 0,
},
ScaleZoom: {
type: Boolean,
required: false,
default: false,
},
MapUrl: { // 瓦片地图URL
type: String,
required: false,
default: process.env.VUE_APP_SUPPER_MAP,
},
flagTip: {
type: Boolean,
required: false,
default: false,
},
open: {
type: Boolean,
required: false,
default: false,
},
isCanEdit: {
type: Boolean,
required: false,
default: false,
},
address: {
required: false,
default: '',
},
type: {
required: false,
default: 'custom',
}
},
computed: {
showInput() {
if (this.type === 'view' || this.type === 'select') {
return false
}
return true
}
},
data() {
return {
// 实例化对象
map: null,
addPointsSource: null,
vectorSource: null,
vectorSourceIcon: null,
vectorLayerIcon: null,
selectInteraction: null,
helpTooltipElement: null,
helpTooltip: null,
isclearPoint: null,
overlay: null,
// 控制参数
isShowToolTip: false,
addressLocation: ''
};
},
mounted() {
this.initMap()
if (this.address) {
this.addressLocation = this.address
}
if (this.flagTip) {
this.createHelpTooltip()
}
},
methods: {
geolocation() {
this.longitude = 104.397894;
this.latitude = 31.126855;
},
initMap() {
this.map = new Map({
target: 'map',
controls: control.defaults({
attribution: false,
zoom: this.ScaleZoom,
}),
layers: [
new TileLayer({ // 使用瓦片
source: new TileSuperMapRest({
url: this.MapUrl,
wrapX: true,
}),
projection: 'EPSG:4326',
}),
],
view: new View({
center: [this.longitude, this.latitude],
maxZoom: this.maxZoom,
minZoom: this.minZoom,
zoom: this.zoom,
projection: 'EPSG:4326',
})
});
//添加查询结果图层
this.vectorSource = new SourceVector({
wrapX: false
});
const resultLayer = new LayerVector({
source: this.vectorSource,
});
//添加点图层
this.addPointsSource = new SourceVector({
wrapX: false
});
const addPointsLayer = new LayerVector({
source: this.addPointsSource,
});
this.map.addLayer(addPointsLayer);
this.map.addLayer(resultLayer);
this.map.on('pointermove', (e) => {
if (this.isShowToolTip) {
this.helpTooltip.setPosition(undefined);
this.helpTooltipElement.classList.add('hidden');
}
this.$emit('regionchange', e.pixel)
});
this.ceateMarker([this.longitude, this.latitude])
if (this.type !== 'view') {
this.map.on('singleclick', (e) => {
this.$emit('addAddress', {
address: this.addressLocation,
lng: e.coordinate[0],
lat: e.coordinate[1]
})
this.ceateMarker(e.coordinate)
});
}
// if (this.open) {
// this.addFeature([{
// id: 1,
// latitude: this.latitude,
// longitude: this.longitude,
// iconPath: mypoint,
// title: '我的位置',
// width: 20,
// height: 20
// }])
// }
},
addMarker(point) {
console.log('point', point)
// this.ceateMarker([104.404419, 31.133980])
},
addFeature(covers) {
const features = covers.map((item) => ({
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [item.longitude, item.latitude],
},
properties: {
iconPath: item.iconPath,
text: item.title,
value: JSON.stringify(item),
scale: item.id === 1 ? [0.15, 0.15] : [0.1, 0.1]
}
}))
this.careateFeature(features)
},
ceateMarker(point) {
// 创建一个坐标点
const pointed = new Point(point); // 这里的[0, 0]应该替换为您的经度和纬度
// 创建一个特征
const pointFeature = new Feature({
geometry: pointed,
name: 'My Point'
});
pointFeature.setStyle(new Style({
image: new Circle({
fill: new Fill({
color: [255, 0, 0, 0.5]
}),
stroke: new Stroke({
color: 'red',
width: 2
}),
radius: 8
})
}));
pointFeature.setProperties({
POP: 1,
CAPITAL: 'test'
});
this.addPointsSource.clear()
// 将特征添加到矢量图层
this.addPointsSource.addFeature(pointFeature);
// 确保更新地图视图以显示新的标点
this.map.getView().fit(this.addPointsSource.getExtent());
// // 或者移动视图
// _this.map.getView().animate({
// duration: 850,
// zoom: 5,
// center: point,
// });
},
careateFeature(result) {
if (this.vectorSourceIcon) {
this.vectorSourceIcon.clear()
const geojsonObject = {
type: 'FeatureCollection',
features: result,
};
this.vectorSourceIcon.addFeatures(geoJSONParser.readFeatures(geojsonObject))
this.vectorSourceIcon.changed()
return
}
const geojsonObject = {
type: 'FeatureCollection',
features: result,
};
// 创建一个图层作为点位
this.vectorSourceIcon = new SourceVector({
features: geoJSONParser.readFeatures(geojsonObject)
});
this.vectorLayerIcon = new LayerVector({
source: this.vectorSourceIcon,
style: feature => {
return new Style({
image: new Icon({
anchor: [0.5, 0.9],
scale: feature.get('scale'),
src: feature.get('iconPath'),
}),
text: new Text({
text: feature.get('text'),
fill: new Fill({
color: '#000'
}),
stroke: new Stroke({
color: '#fff',
width: 3
}),
font: 'normal 12px Calibri, sans-serif',
textAlign: 'center', // 文本对齐
offsetX: 0,
offsetY: 15,
rotation: 0, // 文本旋转
}),
});
}
});
this.map.addLayer(this.vectorLayerIcon);
this.selectInteraction = new Select({
layers: [this.vectorLayerIcon]
});
this.selectInteraction.on('select', (event) => {
const selectedFeatures = event.selected;
if (selectedFeatures.length) {
const select = selectedFeatures[0].values_
this.$emit('markertap', JSON.parse(select.value))
// tooltip
if (this.flagTip) {
const coordinate = selectedFeatures[0].values_.geometry.flatCoordinates;
this.helpTooltipElement.innerHTML = select.text;
console.log(this.helpTooltip)
this.helpTooltip.setPosition(coordinate);
this.helpTooltipElement.classList.remove('hidden');
this.map.addOverlay(this.helpTooltip);
this.isShowToolTip = true
}
}
});
this.map.addInteraction(this.selectInteraction);
},
createHelpTooltip() {
this.helpTooltipElement
if (this.helpTooltipElement) {
this.helpTooltipElement.parentNode.removeChild(this.helpTooltipElement);
}
this.helpTooltipElement = document.createElement('div');
this.helpTooltipElement.className = 'tooltip hidden';
this.helpTooltip = new Overlay({
element: this.helpTooltipElement,
offset: [-30, 20],
positioning: 'center-left'
});
},
inputAddress(val) {
if (this.type !== 'view') {
this.$emit('input', val)
}
}
}
}
</script>
<style scoped>
.app-content {
width: 100%;
height: fit-content;
}
.editPane {
position: absolute;
right: 65px;
top: 8px;
text-align: center;
background: #FFF;
z-index: 1000;
border-radius: 4px;
}
.ol-popup {
position: absolute;
background-color: white;
-webkit-filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
padding: 15px;
border-radius: 10px;
border: 1px solid #cccccc;
bottom: 12px;
left: -50px;
min-width: 120px;
white-space: nowrap;
}
.ol-popup:after,
.ol-popup:before {
top: 100%;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
}
.ol-popup:after {
border-top-color: white;
border-width: 10px;
left: 48px;
margin-left: -10px;
}
.ol-popup:before {
border-top-color: #cccccc;
border-width: 11px;
left: 48px;
margin-left: -11px;
}
.tooltip {
position: relative;
background: rgba(0, 0, 0, 0.5);
border-radius: 4px;
color: white;
padding: 4px 8px;
opacity: 0.7;
white-space: nowrap;
}
</style>

View File

@@ -6,19 +6,21 @@
:before-close="handleClose"
append-to-body>
<span>{{ subTitle }}</span>
<div class="input_box">
<el-input type="textarea" v-model="input" placeholder="请输入内容"></el-input>
</div>
<div class="kuajie">
<div class="kuajie_span" v-for="(item, index) in tips" :key="index" @click="input += item">{{ index + 1 }}:{{
item
}}
<div v-if="status === 1">
<div class="input_box">
<el-input type="textarea" v-model="input" placeholder="请输入内容"></el-input>
</div>
<div class="kuajie">
<div class="kuajie_span" v-for="(item, index) in tips" :key="index" @click="input += item">{{ index + 1 }}:{{
item
}}
</div>
</div>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleClose"> </el-button>
<el-button type="warning" @click="handleCancel">驳回</el-button>
<el-button type="primary" @click="handleConfirm"> </el-button>
<el-button :type="btnTypes[status]" @click="handleCancel"> </el-button>
<el-button type="primary" @click="handleConfirm"> </el-button>
</span>
</el-dialog>
</template>
@@ -33,11 +35,18 @@ const classEnum = {
largeXX: '146px',
largeXXL: '186px',
}
const btnTypes = {
0: 'warning',
1: 'danger'
}
export default {
name: "promptDialog",
data() {
return {
btnTypes,
input: '',
status: 0,
btnType: ''
}
},
props: {
@@ -63,6 +72,7 @@ export default {
visible(val) {
if (val) {
this.input = ''
this.status = 0
}
}
},
@@ -72,7 +82,11 @@ export default {
this.$emit('onClose')
},
handleCancel() {
this.$emit('onCancel', this.input)
if (this.status) {
this.$emit('onCancel', this.input)
} else {
this.status = 1
}
},
handleConfirm() {
this.$emit('onConfirm', this.input)

View File

@@ -1,23 +1,25 @@
<template>
<div>
<el-tooltip v-if="content.length > length" class="item" effect="dark" placement="top-start">
<div slot="content">
<div v-for="(item, index) in clipStr(content)" :key="index"><div>{{item}}</div></div>
<div>
<el-tooltip v-if="content.length > length" class="item" effect="dark" placement="top-start">
<div slot="content">
<div v-for="(item, index) in clipStr(content)" :key="index">
<div>{{ item }}</div>
</div>
<span>{{ content.length > length ? `${content.substring(0, this.length)}...` : content}}</span>
</el-tooltip>
<span v-else>{{content}}</span>
</div>
</div>
<span>{{ content.length > length ? `${content.substring(0, this.length)}...` : content }}</span>
</el-tooltip>
<span v-else>{{ content }}</span>
</div>
</template>
<script>
export default {
name: "textTooltip",
props: {
length: { default: 50, required: false },
content: { default: '', required: true },
empty: { default: '', required: false },
tipWidth: { default: 40, required: false },
length: {default: 50, required: false},
content: {default: '', required: true},
empty: {default: '', required: false},
tipWidth: {default: 40, required: false},
},
watch: {
content(val) {
@@ -27,9 +29,10 @@ export default {
methods: {
clipStr(str) {
const clip = []
if(str && str.length > this.tipWidth) {
for (let i = 0; i < Math.ceil(str.length / this.tipWidth); i++) {
clip.push(str.slice(i * this.tipWidth,i * this.tipWidth + this.tipWidth))
const tipWidth = Number(this.tipWidth)
if (str && str.length > tipWidth) {
for (let i = 0; i < Math.ceil(str.length / tipWidth); i++) {
clip.push(str.slice(i * tipWidth, (i * tipWidth) + tipWidth))
}
return clip
}
@@ -40,7 +43,7 @@ export default {
</script>
<style scoped>
.toolTipImg{
.toolTipImg {
margin-bottom: -5px;
margin-right: 10px;
}

View File

@@ -5,6 +5,7 @@ import './styles/common.scss';
import './util/directive';
import '@smallwei/avue/lib/index.css';
import 'element-ui/lib/theme-chalk/display.css';
import './util/backTime'
import * as urls from '@/config/env';
import {iconfontUrl, iconfontVersion} from '@/config/env';
@@ -22,7 +23,7 @@ import cityLabelCascader from './components/city-cascader/label'
import goBack from './components/go-back/main'
import tagSelect from './components/tag-select/main'
import tooltip from './components/tooltip/index'
import superMapView from './components/map/selectLocation2';
import i18n from './lang' // Internationalization
import axios from './router/axios';
import router from './router/router';
@@ -43,6 +44,7 @@ Vue.component('jl-city-cascader', cityCascader);
Vue.component('jl-cityLabel-cascader', cityLabelCascader);
Vue.component('tag-select', tagSelect)
Vue.component('tool-tip', tooltip)
Vue.component('super-map-view', superMapView)
// 加载相关url地址
Object.keys(urls).forEach(key => {
Vue.prototype[key] = urls[key];

View File

@@ -24,19 +24,11 @@
let config;
if (process.env.VUE_APP_SITE === "default") {
config = {
phone: "185-0020-68488:30-17:30 周一到周五)",
email: "tousu@jilianjituan.com",
address: "通州区和平西路486号",
gongzhonghao: "/manage/img/cmanage/wx/gzh/default.jpeg",
xiaochengxu: "/manage/img/cmanage/wx/xcx/default.jpeg",
};
} else if (process.env.VUE_APP_SITE === "hengshui") {
config = {
phone: "0318-88888108:30-17:30 周一到周五)",
email: "tousu@jilianjituan.com",
address: "衡水市桃城区人民西路818号易得电子广场5层",
phone: "",
email: "",
address: "",
gongzhonghao: "",
xiaochengxu: "/manage/img/cmanage/wx/xcx/hengshui.jpg",
xiaochengxu: "",
};
}

View File

@@ -54,14 +54,6 @@ if (process.env.VUE_APP_SITE === "default") {
zixun: "德阳市智慧就业服务平台资讯",
guanyu: "关于德阳市智慧就业服务平台",
};
} else if (process.env.VUE_APP_SITE === "hengshui") {
config = {
logo: "/manage/img/cmanage/logo/hengshui.svg",
wxTitle: "小程序",
wxImg: "/manage/img/cmanage/wx/xcx/hengshui.jpg",
zixun: "平台资讯",
guanyu: "关于平台",
};
}
export default {

View File

@@ -56,6 +56,10 @@ import topLang from "@/page/index/top/top-lang";
// import { info } from "@/api/system/tenant";
import {getCaptcha} from "@/api/user";
console.log('是否跳转', /(^http)(s?):\/\/([a-z0-9].+)\/manage(\/)?$/i.test(location.href), location.href)
if (/(^http)(s?):\/\/([a-z0-9].+)\/manage(\/)?$/i.test(location.href)) {
window.location.href = process.env.VUE_APP_LOGIN_NEXT
}
if (/(\/login\?)(.*)/ig.test(location.href)) {
const obj = {}
const query = location.href.split('?')[1].replace(/\?/, '').split('&')

View File

@@ -60,8 +60,12 @@ axios.interceptors.response.use(
//如果在白名单里则自行catch逻辑处理
if (statusWhiteList.includes(status)) return Promise.reject(res);
//如果是401则跳转到登录页面
if (status === 401)
store.dispatch('FedLogOut').then(() => router.push({path: '/login'}));
if (status === 401) {
store.dispatch('FedLogOut').then(() => {
window.location.href = process.env.VUE_APP_LOGIN_NEXT
});
// store.dispatch('FedLogOut').then(() => router.push({path: '/login'}));
}
// 如果请求为500统一处理
const err = new Error(message)
err.response = res

View File

@@ -29,16 +29,29 @@ function format(data) {
} else {
dic[item.areaId] = node;
}
node.valueId = node.value
node.value = item.areaName
const nodeR = {
label: item.areaName,
value: item.areaName,
quickQuery: item.quickQuery,
simpleSpelling: item.simpleSpelling,
parentId: item.parentId,
valueId: item.areaId,
};
if (labelChild.hasOwnProperty(item.parentId)) {
if (!labelChild[item.parentId].children) {
labelChild[item.parentId].children = [];
}
labelChild[item.parentId].children.push(node);
labelChild[item.parentId].children.push(nodeR);
} else {
labelChild[item.parentId] = {children: [node]};
labelChild[item.parentId] = {children: [nodeR]};
}
if (labelChild.hasOwnProperty(item.areaId)) {
labelChild[item.areaId].label = item.areaName;
labelChild[item.areaId].value = item.areaName;
} else {
labelChild[item.areaId] = nodeR;
}
});
return {data: result, dic, labelData: labelResult};
}

30
src/util/backTime.js Normal file
View File

@@ -0,0 +1,30 @@
const MAX_IDLE_TIME = 30 * 60 * 1000;
let lastActionTime = new Date();
import store from "@/store";
import router from "@/router/router";
function updateLastActionTime() {
lastActionTime = new Date();
}
// 定义一个计时器
let timeoutId = setTimeout(() => {
console.log('用户已经很长时间没有操作了!');
backLogOut()
}, MAX_IDLE_TIME);
// 监听页面上任何一个元素的点击事件
document.addEventListener('click', () => {
updateLastActionTime();
clearTimeout(timeoutId);
timeoutId = setTimeout(() => {
console.log('用户已经很长时间没有操作了!');
backLogOut()
}, MAX_IDLE_TIME);
});
function backLogOut() {
store.dispatch("LogOut").then(() => {
router.push({path: "/login"});
});
}

View File

@@ -365,10 +365,7 @@ export default {
this.loading = false;
});
},
// 环境区分
// jlOrHs: 1 企嘉云 2 衡水
// jlOrHs === 1 ? type 根绝所选划分 1(wx/h5):2(主站)
// jlOrHs === 2 ? type 根绝所选划分 3(wx/h5):4(主站)
envType() {
var jlOrHs = (this.wxStatus === 'default' || this.wxStatus === 'fangzhen') ? 1 : 2;
var type = 1;

View File

@@ -1,13 +1,13 @@
<template>
<basic-container>
<avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="form"
:permission="permissionList" :before-open="beforeOpen" :before-close="beforeClose" :page.sync="page"
@row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad" :upload-before="uploadBefore">
:permission="permissionList" :before-open="beforeOpen" :before-close="beforeClose" :page.sync="page"
@row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
@selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
@refresh-change="refreshChange" @on-load="onLoad" :upload-before="uploadBefore">
<template slot="menuLeft">
<!-- <el-button v-if="vaildData(permission.manage_compan_companyList_addUser, false)" size="small"-->
<!-- @click.stop="handleAddUser" type="primary" :disabled="selectionList.length === 0">关联账号</el-button>-->
<!-- <el-button v-if="vaildData(permission.manage_compan_companyList_addUser, false)" size="small"-->
<!-- @click.stop="handleAddUser" type="primary" :disabled="selectionList.length === 0">关联账号</el-button>-->
<!-- <el-button v-if="vaildData(permission.manage_compan_companyList_config, false)" size="small"
@click.stop="handleConfig" type="primary" :disabled="selectionList.length === 0">服务设置</el-button> -->
<!-- <el-button v-if="vaildData(permission.manage_compan_companyList_check, false)" size="small"
@@ -16,17 +16,35 @@
<template slot="cityIdForm" slot-scope="{ disabled }">
<jl-city-cascader :disabled="disabled" v-model="form.cityId"></jl-city-cascader>
</template>
<template slot="cityId" slot-scope="{ row }">
<jl-city-cascader :type="'view'" :disabled="true" v-model="row.cityId"></jl-city-cascader>
</template>
<template slot="lonForm" slot-scope="{ row }">
<super-map-view
:isCanEdit="false"
@addAddress="changeAddress"
:longitude="row.lon <= 0 ? 104.397894 : row.lon"
:latitude="row.lat <= 0 ? 31.126855 : row.lat"
:open="true"
:zoom="10"
:min-zoom="10"
:max-zoom="20"
:flag-tip="false"
placeholder="请输入详细地址"
:type="'select'"
></super-map-view>
</template>
<template slot="companyAddressForm" slot-scope="{ disabled }">
<select-map
ref="selectMap"
@addAddress="addAddress"
@addressDel = "addressDel"
:isCanEdit="!disabled"
:lng="obj.lon"
:lat="obj.lat"
:address="form.companyAddress"
:type="type"
></select-map>
<!-- <select-map-->
<!-- ref="selectMap"-->
<!-- @addAddress="addAddress"-->
<!-- @addressDel="addressDel"-->
<!-- :isCanEdit="!disabled"-->
<!-- :lng="obj.lon"-->
<!-- :lat="obj.lat"-->
<!-- :address="form.companyAddress"-->
<!-- :type="type"-->
<!-- ></select-map>-->
</template>
<template slot="authUrlIdImgForm">
<el-image style="width: 100px; height: 100px" :src="form.authUrlId" :preview-src-list="[form.authUrlId]">
@@ -34,20 +52,20 @@
</template>
<template slot="identityUrl4IdImgForm">
<el-image style="width: 100px; height: 100px" :src="form.identityUrl4Id"
:preview-src-list="[form.identityUrl4Id]"></el-image>
:preview-src-list="[form.identityUrl4Id]"></el-image>
</template>
<template slot="identityUrl5IdImgForm">
<el-image style="width: 100px; height: 100px" :src="form.identityUrl5Id"
:preview-src-list="[form.identityUrl5Id]"></el-image>
:preview-src-list="[form.identityUrl5Id]"></el-image>
</template>
<template slot="signSrcUrlForm">
<el-image style="width: 100px; height: 100px" :src="form.signSrcUrl"
:preview-src-list="[form.signSrcUrl]"></el-image>
:preview-src-list="[form.signSrcUrl]"></el-image>
</template>
<template slot="letterOfAttorneyUrlForm">
<el-image style="width: 100px; height: 100px" :src="form.letterOfAttorneyUrl"
:preview-src-list="[form.letterOfAttorneyUrl]"></el-image>
:preview-src-list="[form.letterOfAttorneyUrl]"></el-image>
</template>
<template slot="motoleyUrlImgForm">
<div v-if="imgList.length > 0">
@@ -62,18 +80,19 @@
<company-record :data="row"></company-record>
</template>
<template slot="motoleyUrlForm">
<el-upload class="companyList-upload" list-type="picture-card" :auto-upload="true" :file-list="imgList" :limit="5"
:action="mutiPutFile" :on-preview="handlePictureCardPreview" :on-exceed="handleImgLimit"
:on-success="handleImgSuccess" :on-remove="handleImgRemove" :before-remove="beforeRemove"
:before-upload="beforeAvatarUpload">
<el-upload class="companyList-upload" list-type="picture-card" :auto-upload="true" :file-list="imgList"
:limit="5"
:action="mutiPutFile" :on-preview="handlePictureCardPreview" :on-exceed="handleImgLimit"
:on-success="handleImgSuccess" :on-remove="handleImgRemove" :before-remove="beforeRemove"
:before-upload="beforeAvatarUpload">
<i slot="default" class="el-icon-plus avue-upload__icon"></i>
</el-upload>
</template>
<!--服务费-->
<template slot="serveCost" slot-scope="{ row }">
<span v-if="row.serveCost != -1 && row.serveCost">{{
moneyFormat(row.serveCost)
}}</span>
moneyFormat(row.serveCost)
}}</span>
<span v-else>-</span>
</template>
@@ -95,12 +114,13 @@
</template> -->
<!--保证金状态搜索栏trialOn-->
<template slot="trialOnSearch">
<el-select v-model="query.trialOn" placeholder="保证金" @change="selectTrailTyepChange">
<el-option v-for="(item, index) in bondList" :key="index" :label="item.label" :value="item.value">{{ item.label
}}</el-option>
<el-option v-for="(item, index) in bondList" :key="index" :label="item.label" :value="item.value">{{
item.label
}}
</el-option>
</el-select>
</template>
</avue-crud>
@@ -119,18 +139,18 @@ import {
stop,
start,
} from "@/api/manage/company";
import { getStationDic } from "@/api/manage/station";
import { getTradeDic } from "@/api/manage/trade";
import { mapGetters } from "vuex";
import {getStationDic} from "@/api/manage/station";
import {getTradeDic} from "@/api/manage/trade";
import {mapGetters} from "vuex";
import addAccount from "./addAccount";
import companyConfig from "./companyConfig";
import companyCheck from "./companyCheck";
import { putFile } from "@/api/resource/oss";
import { check18IdCardNo } from "@/util/validate";
import { moneyFormat } from "@/util/money";
import {putFile} from "@/api/resource/oss";
import {check18IdCardNo} from "@/util/validate";
import {moneyFormat} from "@/util/money";
import companyRecord from "./companyRecord";
import { companyStatus } from "@/const/company";
import SelectMap from "@/components/map/selectLocation";
import {companyStatus} from "@/const/company";
const accept = [
"image/png",
"image/jpeg",
@@ -140,7 +160,7 @@ const accept = [
];
function getPath(path) {
if(path) {
if (path) {
const arr = path.split(",");
return arr[arr.length - 1];
}
@@ -148,7 +168,7 @@ function getPath(path) {
}
export default {
components: { addAccount, companyConfig, companyCheck, companyRecord, SelectMap },
components: {addAccount, companyConfig, companyCheck, companyRecord},
name: "manage_compan_companyList",
data() {
const validateTradeId = (rule, value, callback) => {
@@ -159,6 +179,7 @@ export default {
}
}
return {
type: "",
insureTypeList: [//商保下拉框
{
label: "停用",
@@ -196,6 +217,7 @@ export default {
},
obj: {},
data: [],
selectJW: null,
};
},
computed: {
@@ -234,7 +256,7 @@ export default {
indexLabel: "序号",
selection: true,
viewBtn: true,
addBtn: true,
addBtn: false,
editBtn: true,
addBtnText: "社区街道登记",
addTitle: "新增机构名称",
@@ -254,17 +276,15 @@ export default {
display: false,
},
{
type: "tree",
label: "联系人姓名",
display: false,
prop: "masterName",
},
{
label: "创建日期",
prop: "createTime",
type: "datetime",
format: "yyyy-MM-dd",
label: "地区",
display: false,
prop: "cityId",
slot: true,
},
],
group: [
@@ -309,6 +329,7 @@ export default {
span: 20,
display: true,
prop: "cityId",
slot: true,
formslot: true,
rules: [
{
@@ -332,6 +353,14 @@ export default {
},
],
},
{
label: "所在位置",
prop: "lon",
hide: true,
span: 20,
display: true,
formslot: true,
},
],
}
],
@@ -346,7 +375,7 @@ export default {
this.obj.lon = form.lng;
this.form.companyAddress = form.address + (form.title || "");
},
addressDel(){
addressDel() {
this.form.companyAddress = this.obj.address = "";
},
// uploadBefore(file, done, loading) {
@@ -431,14 +460,22 @@ export default {
}
);
},
changeAddress(val) {
this.selectJW = val
},
rowUpdate(row, index, done, loading) {
row.authUrlId = getPath(row.authUrlId);
row.identityUrl4Id = getPath(row.identityUrl4Id);
row.identityUrl5Id = getPath(row.identityUrl5Id);
const copyRow = {...row}
if(this.obj.address) {
if (this.obj.address) {
copyRow.companyAddress = this.obj.address
}
if (this.selectJW) {
const {lng, lat} = this.selectJW
copyRow.lon = lng
copyRow.lat = lat
}
update(copyRow).then(
() => {
this.onLoad(this.page);
@@ -458,7 +495,7 @@ export default {
rowStop(id) {
let h = this.$createElement;
this.$confirm(
h("p", { style: "color: #F56C6C" }, "一旦终止合作社区街道将无法操作系统"),
h("p", {style: "color: #F56C6C"}, "一旦终止合作社区街道将无法操作系统"),
"您确定要终止与此公司的合作吗?",
{
confirmButtonText: "确定",
@@ -481,12 +518,13 @@ export default {
this.loading = false;
});
})
.catch(() => { });
.catch(() => {
});
},
rowStart(id) {
let h = this.$createElement;
this.$confirm(
h("p", { style: "color: #F56C6C" }, "一旦恢复合作社区街道所有账号均可使用"),
h("p", {style: "color: #F56C6C"}, "一旦恢复合作社区街道所有账号均可使用"),
"您确定要恢复与此公司的合作吗?",
{
confirmButtonText: "确定",
@@ -509,7 +547,8 @@ export default {
this.loading = false;
});
})
.catch(() => { });
.catch(() => {
});
},
searchReset() {
this.query = {};
@@ -533,6 +572,7 @@ export default {
if (["add", "edit"].includes(type)) {
this.imgList = [];
this.initData();
this.selectJW = null
done();
}
if (["edit", "view"].includes(type)) {
@@ -544,7 +584,7 @@ export default {
if (this.form.motoleyUrl) {
var strList = this.form.motoleyUrl.split(',');
for (var i in strList) {
this.imgList.push({ url: strList[i] })
this.imgList.push({url: strList[i]})
}
}
if (this.form.tradeId == 1) {
@@ -588,7 +628,7 @@ export default {
},
handleImgSuccess(res) {
if (res.code == 200) {
this.imgList.push({ url: res.data.link });
this.imgList.push({url: res.data.link});
var str = "";
for (var i = 0; i < this.imgList.length; i++) {
@@ -598,8 +638,7 @@ export default {
str = str.substr(0, str.length - 1);
}
this.form.motoleyUrl = str;
}
else {
} else {
this.$message.error('上传失败');
}

View File

@@ -1,10 +1,10 @@
<template>
<basic-container>
<jl-go-back></jl-go-back>
<el-row>
<el-col :span="12">
<avue-form :option="formOption" v-model="form" @submit="handleSubmit" ref="form">
<template slot="policyFileUrl">
<basic-container>
<jl-go-back></jl-go-back>
<el-row>
<el-col :span="12">
<avue-form :option="formOption" v-model="form" @submit="handleSubmit" ref="form">
<template slot="policyFileUrl">
<div class="policyFileUrlWrapper">
<div class="uploadWrapperAb">
<el-upload
@@ -13,270 +13,271 @@
:show-file-list="false"
:http-request="allUpload"
:multiple="false"
><el-button size="small" type="primary">点击上传</el-button></el-upload>
>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</div>
<avue-input disabled v-model="policyFileUrl" placeholder="点击上传文件"></avue-input>
</div>
</template>
</avue-form>
</el-col>
<el-col :span="12">
<Tinymce v-model="form.note" ref="tinymce" style="height: 100%;"></Tinymce>
</el-col>
</el-row>
</basic-container>
</template>
<script>
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import { quillEditor } from "vue-quill-editor";
import { addNews, getNewsDetail, editNews } from "@/api/manage/news"
import { putFile } from "@/api/resource/oss";
import Tinymce from "@/components/Tinymce";
import {getClassifyDic} from '@/api/help/article/classify'
const toolbarItems = [
["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线
["blockquote", "code-block"], // 引用 代码块
[{ header: 1 }, { header: 2 }], // 1、2 级标题
[{ list: "ordered" }, { list: "bullet" }], // 有序、无序列表
[{ script: "sub" }, { script: "super" }], // 上标/下标
[{ indent: "-1" }, { indent: "+1" }], // 缩进
// [{'direction': 'rtl'}], // 文本方向
[{ size: ["small", false, "large", "huge"] }], // 字体大小
[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
[{ font: [] }], // 字体种类
[{ align: [] }], // 对齐方式
["clean"], // 清除文本格式
["image"], // 链接、图片、视频
]
export default {
components: { quillEditor, Tinymce},
props: {
id: Number,
type: String
},
mounted() {
this.onload()
},
data() {
return {
policyFileUrl: '',
putFile,
imageUrl: '',
ruleForm: {
content: null,
},
form: {
note: ''
},
description:'',
formOption: {
// labelWidth:120,
column: [
{
"label": "服务时间",
"span": 24,
labelWidth: 100,
"prop": "createTime",
"rules": [
{
"required": true,
"message": "请输入服务时间"
}
]
},
{
"label": "服务发起人",
"span": 24,
labelWidth: 100,
"prop": "fromName",
"rules": [
{
"required": true,
"message": "请输入服务发起人"
}
]
},
{
"label": "服务对象",
"span": 24,
labelWidth: 100,
"prop": "toName",
"rules": [
{
"required": true,
"message": "请输入服务对象"
}
]
},
{
"label": "服务主题",
"span": 24,
labelWidth: 100,
"prop": "serveTheme",
"rules": [
{
"required": true,
"message": "请输入服务主题"
}
]
},
{
"label": "服务内容",
"span": 24,
labelWidth: 100,
"prop": "serveContent",
"rules": [
{
"required": true,
"message": "请输入服务内容"
}
]
},
{
"label": "备注1",
"span": 24,
labelWidth: 100,
"prop": "bak1",
"rules": [
{
"required": true,
"message": "请输入备注1"
}
]
},
{
label: "政策文件地址",
prop: "policyFileUrl",
span: 24,
labelWidth: 120,
hide: true,
slot: true,
formslot: true,
showWordLimit: true,
</avue-form>
},
]
</el-col>
<el-col :span="12">
<Tinymce v-model="form.note" ref="tinymce" style="height: 100%;"></Tinymce>
</el-col>
</el-row>
</basic-container>
</template>
<script>
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import {quillEditor} from "vue-quill-editor";
import {addNews, getNewsDetail, editNews} from "@/api/manage/news"
import {putFile} from "@/api/resource/oss";
import Tinymce from "@/components/Tinymce";
import {getClassifyDic} from '@/api/help/article/classify'
const toolbarItems = [
["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线
["blockquote", "code-block"], // 引用 代码块
[{header: 1}, {header: 2}], // 1、2 级标题
[{list: "ordered"}, {list: "bullet"}], // 有序、无序列表
[{script: "sub"}, {script: "super"}], // 上标/下标
[{indent: "-1"}, {indent: "+1"}], // 缩进
// [{'direction': 'rtl'}], // 文本方向
[{size: ["small", false, "large", "huge"]}], // 字体大小
[{header: [1, 2, 3, 4, 5, 6, false]}], // 标题
[{color: []}, {background: []}], // 字体颜色、字体背景颜色
[{font: []}], // 字体种类
[{align: []}], // 对齐方式
["clean"], // 清除文本格式
["image"], // 链接、图片、视频
]
export default {
components: {quillEditor, Tinymce},
props: {
id: Number,
type: String
},
mounted() {
this.onload()
},
data() {
return {
policyFileUrl: '',
putFile,
imageUrl: '',
ruleForm: {
content: null,
},
form: {
note: ''
},
description: '',
formOption: {
// labelWidth:120,
column: [
{
"label": "服务时间",
"span": 24,
labelWidth: 100,
"prop": "createTime",
"rules": [
{
"required": true,
"message": "请输入服务时间"
}
]
},
{
"label": "服务发起人",
"span": 24,
labelWidth: 100,
"prop": "fromName",
"rules": [
{
"required": true,
"message": "请输入服务发起人"
}
]
},
{
"label": "服务对象",
"span": 24,
labelWidth: 100,
"prop": "toName",
"rules": [
{
"required": true,
"message": "请输入服务对象"
}
]
},
{
"label": "服务主题",
"span": 24,
labelWidth: 100,
"prop": "serveTheme",
"rules": [
{
"required": true,
"message": "请输入服务主题"
}
]
},
{
"label": "服务内容",
"span": 24,
labelWidth: 100,
"prop": "serveContent",
"rules": [
{
"required": true,
"message": "请输入服务内容"
}
]
},
{
"label": "备注1",
"span": 24,
labelWidth: 100,
"prop": "bak1",
"rules": [
{
"required": true,
"message": "请输入备注1"
}
]
},
{
label: "政策文件地址",
prop: "policyFileUrl",
span: 24,
labelWidth: 120,
hide: true,
slot: true,
formslot: true,
showWordLimit: true,
},
editorOption: {
modules: {
toolbar: {
container: toolbarItems,
handlers: {
'image': function (value) {
if (value) {
document.querySelector('.avatar-uploader input').click()
} else {
this.quill.format('image', false);
}
}
]
},
editorOption: {
modules: {
toolbar: {
container: toolbarItems,
handlers: {
'image': function (value) {
if (value) {
document.querySelector('.avatar-uploader input').click()
} else {
this.quill.format('image', false);
}
},//工具菜单栏配置
},
placeholder: "请在这里编写文章内容", //提示
readyOnly: false, //是否只读
theme: "snow", //主题 snow/bubble
syntax: true, //语法检测
},
};
},
methods: {
// 值发生变化
onEditorChange(editor) {
this.content = editor.html;
}
}
},//工具菜单栏配置
},
handleSubmit(form, done) {
// this.form['note'] = this.$refs.tinymce.getContent()
if(this.form.note.length>64*512){
this.$message.error('文章内容不能超过64KB');
done()
}
else{
if (this.type == 'add') {
addNews(
this.form.articleTitle,
this.form.headPic,
this.form.articleSrc,
this.form.articleSrcUrl,
this.form.author,
this.form.description,
this.form.note,
this.form.type
).then(() => {
this.$message.success('添加成功');
this.$router.go(-1);
})
}
else if (this.type == 'edit') {
editNews(
this.id,
this.form.articleTitle,
this.form.headPic,
this.form.articleSrc,
this.form.articleSrcUrl,
this.form.author,
this.form.description,
this.form.note,
this.form.type
).then(() => {
this.$message.success('修改成功');
done()
})
}
}
},
/*上传图片*/
handleAvatarSuccess(res) {
let quill = this.$refs.QuillEditor.quill
let length = quill.getSelection().index;//获取光标所在位置
quill.insertEmbed(length, 'image', res.data.link)
quill.setSelection(length + 1)//光标后移一位
},
beforeAvatarUpload(file) {
const isJPG = ["image/png", "image/jpeg", "image/svg+xml", "image/gif"].indexOf(file.type) != -1;
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上传图片格式不正确');
}
if (!isLt2M) {
this.$message.error('上传图片大小不能超过 2MB!');
}
return isJPG && isLt2M;
},
onload() {
if (this.id && this.type == 'edit') {
getNewsDetail(this.id).then(res => {
this.form = res.data.data;
this.description=this.form.description;
})
}
},
placeholder: "请在这里编写文章内容", //提示
readyOnly: false, //是否只读
theme: "snow", //主题 snow/bubble
syntax: true, //语法检测
},
};
</script>
<style>
.avatar-uploader {
width: 0;
height: 0;
display: none;
}
.ql-editor {
height: 400px;
}
.policyFileUrlWrapper {
},
methods: {
// 值发生变化
onEditorChange(editor) {
this.content = editor.html;
},
handleSubmit(form, done) {
// this.form['note'] = this.$refs.tinymce.getContent()
if (this.form.note.length > 64 * 512) {
this.$message.error('文章内容不能超过64KB');
done()
} else {
if (this.type == 'add') {
addNews(
this.form.articleTitle,
this.form.headPic,
this.form.articleSrc,
this.form.articleSrcUrl,
this.form.author,
this.form.description,
this.form.note,
this.form.type
).then(() => {
this.$message.success('添加成功');
this.$router.go(-1);
})
} else if (this.type == 'edit') {
editNews(
this.id,
this.form.articleTitle,
this.form.headPic,
this.form.articleSrc,
this.form.articleSrcUrl,
this.form.author,
this.form.description,
this.form.note,
this.form.type
).then(() => {
this.$message.success('修改成功');
done()
})
}
}
},
/*上传图片*/
handleAvatarSuccess(res) {
let quill = this.$refs.QuillEditor.quill
let length = quill.getSelection().index;//获取光标所在位置
quill.insertEmbed(length, 'image', res.data.link)
quill.setSelection(length + 1)//光标后移一位
},
beforeAvatarUpload(file) {
const isJPG = ["image/png", "image/jpeg", "image/svg+xml", "image/gif"].indexOf(file.type) != -1;
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上传图片格式不正确');
}
if (!isLt2M) {
this.$message.error('上传图片大小不能超过 2MB!');
}
return isJPG && isLt2M;
},
onload() {
if (this.id && this.type == 'edit') {
getNewsDetail(this.id).then(res => {
this.form = res.data.data;
this.description = this.form.description;
})
}
},
},
};
</script>
<style>
.avatar-uploader {
width: 0;
height: 0;
display: none;
}
.ql-editor {
height: 400px;
}
.policyFileUrlWrapper {
position: relative;
}
@@ -286,5 +287,4 @@
z-index: 99;
}
</style>
</style>

View File

@@ -71,9 +71,6 @@
<script>
import {
getListAllByLabels,
getListGroupByLabels,
getServeAllPolicyList,
getListByids,
getSearchAll,
getSearchAllByUserId,
@@ -117,6 +114,19 @@ let leftUserOptions = {
}, {
label: '姓别',
prop: 'aac004',
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC004",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入性别",
trigger: "blur",
},
],
}, {
label: '身份证',
prop: 'idNumber',
@@ -124,12 +134,41 @@ let leftUserOptions = {
}, {
label: '手机号',
prop: 'telphone',
}, {
label: "求职意愿",
prop: "willingJob",
}, {
label: "民族",
prop: "aac005",
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC005",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入民族",
trigger: "blur",
},
],
}, {
label: "户口性质",
prop: "aac009",
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC009",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入户口性质",
trigger: "blur",
},
],
}, {
label: "户口所在地",
prop: "aac010",
@@ -137,6 +176,19 @@ let leftUserOptions = {
}, {
label: "文化程度",
prop: "aac011",
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC011",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入文化程度",
trigger: "blur",
},
],
}, {
label: '个人标签',
prop: 'labelsBase',
@@ -383,11 +435,12 @@ export default {
},
async getRightSearchByUserId() {
const {currentPage, size} = this.rightPages
const ids = this.leftUserSelections.map(item => item.userId).join(',');
const idNumbers = this.leftUserSelections.map(item => item.idNumber).join(',');
const createTime = Date.now() + 3000
this.rightLoading = true
let params = {
ids, current: currentPage,
idNumbers,
current: currentPage,
size,
}
let resData = await getSearchAllByUserId(params)

File diff suppressed because it is too large Load Diff

View File

@@ -51,6 +51,7 @@ export default {
dicData: this.depTree,
props: {
label: "title",
value: 'value'
},
checkStrictly: true,
slot: true,

View File

@@ -140,7 +140,7 @@ import {
detail,
getDept,
removeDept,
upload, getDeptMyTree,
upload, getDeptMyTree, getDeptAllTree,
} from "@/api/tenant/talents";
import {getWorkTypes, getLabelList} from "@/api/tenant/common";
import {mapGetters} from "vuex";
@@ -196,6 +196,7 @@ export default {
obj: {},
depTree: [],
excelForm: {isCovered: 1},
AllTree: [],
};
},
components: {addGroups, transferGroups, Resume, ied, TextTooltip},
@@ -271,6 +272,7 @@ export default {
dicData: this.depTree,
props: {
label: "title",
value: 'value'
},
checkStrictly: true,
span: 24,
@@ -300,7 +302,7 @@ export default {
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC004",
props: {
label: "dictValue",
value: "dictValue",
value: "dictKey",
},
rules: [
{
@@ -340,10 +342,10 @@ export default {
prop: "aac005",
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC005",
props: {
label: "dictValue",
value: "dictValue",
},
// props: {
// label: "dictValue",
// value: "dictValue",
// },
props: {
label: "dictValue",
value: "dictKey",
@@ -364,7 +366,7 @@ export default {
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC009",
props: {
label: "dictValue",
value: "dictValue",
value: "dictKey",
},
rules: [
{
@@ -391,7 +393,7 @@ export default {
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC011",
props: {
label: "dictValue",
value: "dictValue",
value: "dictKey",
},
rules: [
{
@@ -402,6 +404,22 @@ export default {
],
span: 24,
},
{
label: "求职意愿",
prop: "willingJob",
span: 24,
rules: [
{required: true, message: "请输入求职意愿", trigger: "blur"},
],
},
{
label: "期望薪资",
prop: "wage",
span: 24,
rules: [
{required: true, message: "请输入期望薪资", trigger: "blur"},
],
},
// {
// label: "经办时间",
// prop: "aae036",
@@ -473,6 +491,7 @@ export default {
dicData: this.depTree,
props: {
label: "title",
value: 'value'
},
checkStrictly: true,
slot: true,
@@ -578,11 +597,10 @@ export default {
let params = {
tenantId: '000000'
}
let resData = await getDeptMyTree(params)
// let resData = await getDeptMyTree(params)
let resData = await getDeptAllTree(params)
if (resData.data.code === 200) {
this.depTree = resData.data.data
console.log(this.depTree)
}
},
getWorkTypes() {

View File

@@ -17,25 +17,25 @@
@on-load="onLoad"
@selection-change="selectionChange"
>
<!-- 应发工资 -->
<template slot="wage" slot-scope="{ row }">
<span>{{moneyFormat(row.wage) }}</span>
</template>
<!-- 个税 wageReal-->
<template slot="tax" slot-scope="{ row }">
<span>{{moneyFormat(row.taxTotal) }}</span>
</template>
<!-- 实发工资-->
<template slot="wageReal" slot-scope="{row }">
<span>{{moneyFormat(row.wageReal) }}</span>
</template>
<!-- 归属月 -->
<template slot="belongMonth" slot-scope="{row }">
<span>{{row.belongYear}}-{{row.belongMonth}}</span>
</template>
<template slot="durationContract" slot-scope="{row}">
<span>{{format(row.stime)}}{{format(row.etime)}}</span>
</template>
<!-- 应发工资 -->
<template slot="wage" slot-scope="{ row }">
<span>{{ moneyFormat(row.wage) }}</span>
</template>
<!-- 个税 wageReal-->
<template slot="tax" slot-scope="{ row }">
<span>{{ moneyFormat(row.taxTotal) }}</span>
</template>
<!-- 实发工资-->
<template slot="wageReal" slot-scope="{row }">
<span>{{ moneyFormat(row.wageReal) }}</span>
</template>
<!-- 归属月 -->
<template slot="belongMonth" slot-scope="{row }">
<span>{{ row.belongYear }}-{{ row.belongMonth }}</span>
</template>
<template slot="durationContract" slot-scope="{row}">
<span>{{ format(row.stime) }}{{ format(row.etime) }}</span>
</template>
<!--自定义按钮-->
<!-- <template slot="menuLeft">
<el-button @click="excelBox = true" size="small" type="primary"
@@ -45,110 +45,112 @@
<!--自定义操作栏-->
<div slot="menu" slot-scope="{row}">
<el-button type="text" size="mini" @click.stop="calibration(row)"
>查看</el-button
>查看
</el-button
>
<el-button type="text" size="mini" @click="downloadContract(row)"
>下载</el-button
>
>下载
</el-button
>
</div>
<template slot="menuLeft">
<el-button type="primary" size="mini" @click="mutiDown"
>批量下载</el-button
>
>批量下载
</el-button
>
</template>
</avue-crud>
<!-- 查看详情dialog -->
<!-- <check ref="check" v-show="false"></check> -->
<!-- <check ref="check" v-show="false"></check> -->
<!-- /查看详情dialog -->
<el-dialog
title="上传"
:visible.sync="calibrationDialog"
width="300px"
:modal="false"
class="calibrationForm excelBox">
<el-form :model="form" :rules="rules">
title="上传"
:visible.sync="calibrationDialog"
width="300px"
:modal="false"
class="calibrationForm excelBox">
<el-form :model="form" :rules="rules">
<el-form-item label="" :label-width="0">
<p>{{form.companyName}}</p>
<el-form-item label="" :label-width="0">
<p>{{ form.companyName }}</p>
</el-form-item>
<el-form-item label="" prop="authUrlId">
<el-upload
:show-file-list="false"
:on-progress="
</el-form-item>
<el-form-item label="" prop="authUrlId">
<el-upload
:show-file-list="false"
:on-progress="
() => {
uploading = true;
}
"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
:http-request="httpRequest"
>
<div v-loading="uploading">
<img
class="companyInfo-upload-image"
:src="form.authUrlId || imageUrl"
/>
</div>
<!-- <div class="companyInfo-upload-tip" slot="tip">
请上传营业执照
</div> -->
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="calibrationDialog = false">取 消</el-button>
<el-button type="primary" @click="drawbackClick">确 定</el-button>
</div>
</el-dialog>
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
:http-request="httpRequest"
>
<div v-loading="uploading">
<img
class="companyInfo-upload-image"
:src="form.authUrlId || imageUrl"
/>
</div>
<!-- <div class="companyInfo-upload-tip" slot="tip">
请上传营业执照
</div> -->
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="calibrationDialog = false">取 消</el-button>
<el-button type="primary" @click="drawbackClick">确 定</el-button>
</div>
</el-dialog>
<!-- /查看合同dialog -->
<el-dialog
title="查看合同"
:visible.sync="viewLetterDialog"
width="50%"
:modal="false"
class="view-letter-dialog"
>
<el-form :model="viewLetterForm" :rules="rules">
<el-form-item label="" prop="authUrlId" >
<div v-loading="uploading">
<img style="width: 100%;"
<!-- /查看合同dialog -->
<el-dialog
title="查看合同"
:visible.sync="viewLetterDialog"
width="50%"
:modal="false"
class="view-letter-dialog"
>
<el-form :model="viewLetterForm" :rules="rules">
<el-form-item label="" prop="authUrlId">
<div v-loading="uploading">
<img style="width: 100%;"
:src="'data:image/png;base64,'+viewLetterForm.imgStr"
/>
</div>
</el-form-item>
<el-form-item label="" prop="" >
<el-button type="primary" @click="handelDownloadLetter">
下载合同
</el-button>
/>
</div>
</el-form-item>
<el-form-item label="" prop="">
<el-button type="primary" @click="handelDownloadLetter">
下载合同
</el-button>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
</div>
</el-dialog>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
</div>
</el-dialog>
</div>
</template>
<script>
import {excelImportOrder} from "@/api/manage/agentpay";//api
import {tenantList,downLetter,mutiDownPdf} from "@/api/manage/econtract";//api
import {signSealImg,downloadEsignature,signSeal,signSeals} from "@/api/manage/esignature";//api
import {tenantList, downLetter, mutiDownPdf} from "@/api/manage/econtract";//api
import {signSealImg, downloadEsignature, signSeal, signSeals} from "@/api/manage/esignature";//api
//import Check from "../Dialog/IncomeTaxCheck";//查看详情
import SelectMap from "@/components/map/selectLocation";
import { mapGetters } from "vuex";
import { moneyFormat } from "@/util/money";
import { dateFormat } from "@/util/date";
import {mapGetters} from "vuex";
import {moneyFormat} from "@/util/money";
import {dateFormat} from "@/util/date";
import saveButton from "./saveButton";
import { excelAccept } from "@/common/accept";
import {excelAccept} from "@/common/accept";
import httpRequest from "./httpRequest";
const accept = ["image/png", "image/jpeg", "image/svg+xml", "image/gif"];
export default {
components: {
SelectMap,
saveButton,
// Check
},
@@ -162,45 +164,45 @@ export default {
},
},
data() {
let taxReal=(rule, value, callback)=>{
let reg = new RegExp("[\\u4E00-\\u9FFF]+","g");
let taxReal = (rule, value, callback) => {
let reg = new RegExp("[\\u4E00-\\u9FFF]+", "g");
let reg1 = new RegExp("/[a-z]/i;");
if(reg.test(value)){
if (reg.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
}else if (reg1.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
}else{
callback(new Error('只能输入数字!'))
} else if (reg1.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
} else {
this.btnClickFlag = true;
callback()
}
}
return {
downLetterId:'',//下载合同id
viewLetterDialog:false,
calibrationDialog:false,
downLetterId: '',//下载合同id
viewLetterDialog: false,
calibrationDialog: false,
excelBox: false,
excelForm: {},
imageUrl: "/img/scimg.png",
imgFile:'',
btnClickFlag:false,
imgFile: '',
btnClickFlag: false,
formLabelWidth: '120px',
form:{
num:30,
form: {
num: 30,
},
viewLetterForm:{imgStr:''},
viewLetterForm: {imgStr: ''},
rules: {
taxReal: [
{ validator: taxReal , trigger: ['blur', 'change'] },
],
taxReal: [
{validator: taxReal, trigger: ['blur', 'change']},
],
},
formSubmit:{
id:111,
taxReal:111,
formSubmit: {
id: 111,
taxReal: 111,
},
ceNum:0,
taxReal:0,
ceNum: 0,
taxReal: 0,
// status: 1,
selectionList: [],
viewDrawer: false,
@@ -218,13 +220,13 @@ export default {
},
data: [],
obj: {},
missionNo:'',
leibie:'wait',//查询类别(必填,取值范围:=all 代表返回所有,=wait 待确定,=ing 发放中,=success 发放成功,fail=失败pause 暂不发放;)
missionNo: '',
leibie: 'wait',//查询类别(必填,取值范围:=all 代表返回所有,=wait 待确定,=ing 发放中,=success 发放成功,fail=失败pause 暂不发放;)
};
},
created() {},
watch: {
created() {
},
watch: {},
computed: {
...mapGetters(["permission"]),
// ids () {
@@ -241,7 +243,7 @@ export default {
});
return ids;
},
wageRealTotal () {
wageRealTotal() {
let wageRealTotal = 0;
this.selectionList.forEach(ele => {
wageRealTotal += ele.wageReal;
@@ -288,23 +290,23 @@ export default {
searchShow: false,
border: true,
index: true,
esignatureId:'',
esignatureId: '',
imageUrl: "/img/license.png",
indexLabel: "序号",
selection: true,
selection: true,
dialogType: "drawer",
dialogWidth: "60%",
delBtnText: "取消",
dialogClickModal: false,
column: [
{
width:"180px",
width: "180px",
label: "合同编号",
prop: "contractNo",
display: false,
},
{
width:"180px",
width: "180px",
label: "岗位编号",
prop: "servicesNo",
display: false,
@@ -322,22 +324,22 @@ export default {
{
label: "员工签署日期",
prop: "createTime",
type:"date",
format:"yyyy-MM-dd",
type: "date",
format: "yyyy-MM-dd",
display: false,
},
{
label: "企业签署日期",
prop: "submitTime",
type:"date",
format:"yyyy-MM-dd",
type: "date",
format: "yyyy-MM-dd",
display: false,
},
{
width:"180px",
width: "180px",
label: "合同有效期",
prop: "durationContract",
slot:"true",
slot: "true",
display: false,
}
],
@@ -346,16 +348,16 @@ export default {
},
methods: {
//批量签发
batchIssue(){
batchIssue() {
let fd = new FormData();
fd.append('ids',this.ids.join(","));
fd.append('ids', this.ids.join(","));
signSeals(fd)
.then(() => {
this.onLoad(this.page, this.params);
})
.catch(() => {
.then(() => {
this.onLoad(this.page, this.params);
})
.catch(() => {
});
});
},
/**上传图片**/
handleAvatarSuccess(res, file) {
@@ -367,23 +369,23 @@ export default {
const isJPG = accept.includes(file.type);
this.imgFile = file;
let fd = new FormData();
fd.append('file',file);
fd.append('id',this.form.id);
fd.append('file', file);
fd.append('id', this.form.id);
if (!isJPG) {
this.$message.error("图片格式不正确!");
}
signSealImg(fd)
.then(() => {
})
.catch(() => {
.then(() => {
})
.catch(() => {
});
});
return isJPG;
},
/**上传图片*/
httpRequest,
moneyFormat,
//下载建行客户端工资发放模板
//下载建行客户端工资发放模板
uploadAfter(res, done) {
this.onLoad(this.page, this.params);
done();
@@ -405,24 +407,24 @@ export default {
// }
// },
//单挑数据发起校准确定按钮
drawbackClick(){
drawbackClick() {
let fd = new FormData();
fd.append('id',this.form.id);
fd.append('id', this.form.id);
signSeal(fd)
.then(() => {
this.onLoad(this.page, this.params);
})
.catch(() => {
.then(() => {
this.onLoad(this.page, this.params);
})
.catch(() => {
});
this.calibrationDialog = false;
});
this.calibrationDialog = false;
},
taxRealChaneg(){
taxRealChaneg() {
this.form.taxReal = this.taxReal;
this.formSubmit.taxReal = this.taxReal*100;
this.ceNum = this.form.taxTotal - this.formSubmit.taxReal ;
this.formSubmit.taxReal = this.taxReal * 100;
this.ceNum = this.form.taxTotal - this.formSubmit.taxReal;
},
selectionChange (list) {
selectionChange(list) {
this.selectionList = list;
},
format(date) {
@@ -431,10 +433,10 @@ export default {
}
},
//下载合同
downloadContract(row){
downloadContract(row) {
window.open(downLetter(row.id))
},
calibration(row){
calibration(row) {
window.open(row.contractSecondUrl)
},
//查看详情
@@ -442,7 +444,7 @@ export default {
// this.$refs.check.openDialog(row);
// },
//下载申请表
downloadEsignature(row){
downloadEsignature(row) {
window.open(downloadEsignature(row.id))
},
currentChange(currentPage) {
@@ -456,7 +458,7 @@ export default {
this.onLoad(this.page, this.query);
},
/*下载合同*/
handelDownloadLetter(){
handelDownloadLetter() {
window.open(downLetter(this.downLetterId));
},
/*加载数据*/
@@ -478,20 +480,19 @@ export default {
backIndex() {
this.$emit("refresh");
},
mutiDown(){
mutiDown() {
// //mutiDownPdf(this.ids.join(','))
// mutiDownPdf(this.ids.join(',')).then(res=>{
// window.open(res)
// // console.log(res.data,'muti down')
// })
if(this.selectionList.length==0){
if (this.selectionList.length == 0) {
this.$message.error('至少选择一条数据')
}
else{
} else {
window.open(mutiDownPdf(this.ids.join(',')));
}
}
}
},
};
@@ -501,10 +502,12 @@ export default {
height: 160px;
width: 160px;
}
.el-col,
.el-form-item {
margin-bottom: 0px;
}
.map {
width: 100%;
height: 300px;
@@ -514,27 +517,34 @@ export default {
.slotForm {
font-size: 12px;
}
.calibrationForm .el-form{
.calibrationForm .el-form {
padding-bottom: 0 !important;
}
.calibrationForm .el-dialog--center .el-dialog__body{
.calibrationForm .el-dialog--center .el-dialog__body {
padding: 0 10px !important;
}
.calibrationForm .el-dialog--center .el-dialog__body .el-input__inner{
.calibrationForm .el-dialog--center .el-dialog__body .el-input__inner {
padding: 0 !important;
height:30px !important;
height: 30px !important;
line-height: 30px !important;
}
.excelBox .el-dialog__body{
padding: 0 10px!important;
.excelBox .el-dialog__body {
padding: 0 10px !important;
}
.excelBox .el-form-item__content{
margin-left: 0 !important;
text-align: center;
.excelBox .el-form-item__content {
margin-left: 0 !important;
text-align: center;
}
.excelBox .el-dialog{
width:360px !important;
.excelBox .el-dialog {
width: 360px !important;
}
/* .contentIndex-table .avue-crud{
margin-top: -40px;
} */

View File

@@ -42,7 +42,7 @@
v-model="query.time"
></YearRange>
</el-form-item>
<div class="searchBtn">
<el-form-item>
<el-button
type="primary"
size="small"
@@ -55,7 +55,7 @@
>
</el-button
>
</div>
</el-form-item>
</el-row>
</el-form>
<avue-crud
@@ -120,6 +120,8 @@ export default {
},
computed: {
option() {
const type = this.query.type
const labelName = type === 0 ? '岗位名称' : type === 1 ? '行业名称' : '时间'
return {
height: "auto",
tip: false,
@@ -141,15 +143,15 @@ export default {
align: 'center',
column: [
{
label: "名称",
label: labelName,
prop: "name",
},
{
label: "零工人数",
label: "申请人数",
prop: "workerCount",
},
{
label: "零工岗位人数",
label: "需求人数",
prop: "workCount",
},
{

View File

@@ -170,8 +170,6 @@ export default {
},
/*
* wxStatus
* default 企嘉云
* hengshui 衡水
* */
wxSubmit () {
if(this.submitList.length === 0) return

View File

@@ -185,7 +185,6 @@ export default {
},
/* 表格按钮 */
add () {
// default 企嘉云 hegnshui 衡水
this.viewDrawerAdd = true
},
closeAdd () {

View File

@@ -17,26 +17,27 @@
@on-load="onLoad"
@selection-change="selectionChange"
>
<template slot="menuLeft">
<el-button @click="batchIssue" size="small" :disabled="ids.length === 0" type="primary"
>批量重新签发</el-button>
<template slot="menuLeft">
<el-button @click="batchIssue" size="small" :disabled="ids.length === 0" type="primary"
>批量重新签发
</el-button>
</template>
<!-- 应发工资 -->
<template slot="wage" slot-scope="{ row }">
<span>{{ moneyFormat(row.wage) }}</span>
</template>
<!-- 个税 wageReal-->
<template slot="tax" slot-scope="{ row }">
<span>{{ moneyFormat(row.taxTotal) }}</span>
</template>
<!-- 实发工资-->
<template slot="wageReal" slot-scope="{row }">
<span>{{ moneyFormat(row.wageReal) }}</span>
</template>
<!-- 归属月 -->
<template slot="belongMonth" slot-scope="{row }">
<span>{{ row.belongYear }}-{{ row.belongMonth }}</span>
</template>
<!-- 应发工资 -->
<template slot="wage" slot-scope="{ row }">
<span>{{moneyFormat(row.wage) }}</span>
</template>
<!-- 个税 wageReal-->
<template slot="tax" slot-scope="{ row }">
<span>{{moneyFormat(row.taxTotal) }}</span>
</template>
<!-- 实发工资-->
<template slot="wageReal" slot-scope="{row }">
<span>{{moneyFormat(row.wageReal) }}</span>
</template>
<!-- 归属月 -->
<template slot="belongMonth" slot-scope="{row }">
<span>{{row.belongYear}}-{{row.belongMonth}}</span>
</template>
<!--自定义按钮-->
<!-- <template slot="menuLeft">
<el-button @click="excelBox = true" size="small" type="primary"
@@ -49,7 +50,8 @@
>下载申请表</el-button
> -->
<el-button type="text" size="mini" @click.stop="calibration(row)"
>重新签发</el-button
>重新签发
</el-button
>
</div>
</avue-crud>
@@ -57,65 +59,64 @@
<check ref="check" v-show="false"></check>
<!-- /查看详情dialog -->
<el-dialog
title="上传"
:visible.sync="calibrationDialog"
width="300px"
:modal="false"
class="calibrationForm excelBox">
<el-form :model="form" :rules="rules">
title="上传"
:visible.sync="calibrationDialog"
width="300px"
:modal="false"
class="calibrationForm excelBox">
<el-form :model="form" :rules="rules">
<el-form-item label="" :label-width="0">
<p>{{form.companyName}}</p>
</el-form-item>
<el-form-item label="" prop="authUrlId">
<el-upload
:show-file-list="false"
:on-progress="
<el-form-item label="" :label-width="0">
<p>{{ form.companyName }}</p>
</el-form-item>
<el-form-item label="" prop="authUrlId">
<el-upload
:show-file-list="false"
:on-progress="
() => {
uploading = true;
}
"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
:http-request="httpRequest"
>
<div v-loading="uploading">
<img
class="companyInfo-upload-image"
:src="form.authUrlId || imageUrl"
/>
</div>
<!-- <div class="companyInfo-upload-tip" slot="tip">
请上传营业执照
</div> -->
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="calibrationDialog = false">取 消</el-button>
<el-button type="primary" @click="drawbackClick">确 定</el-button>
</div>
</el-dialog>
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
:http-request="httpRequest"
>
<div v-loading="uploading">
<img
class="companyInfo-upload-image"
:src="form.authUrlId || imageUrl"
/>
</div>
<!-- <div class="companyInfo-upload-tip" slot="tip">
请上传营业执照
</div> -->
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="calibrationDialog = false">取 消</el-button>
<el-button type="primary" @click="drawbackClick">确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {excelImportOrder} from "@/api/manage/agentpay";//api
import {esignatureStatus,signSealImg,downloadEsignature,signSeal,signSeals} from "@/api/manage/esignature";//api
import {esignatureStatus, signSealImg, downloadEsignature, signSeal, signSeals} from "@/api/manage/esignature";//api
import Check from "../Dialog/IncomeTaxCheck";//查看详情
import SelectMap from "@/components/map/selectLocation";
import { mapGetters } from "vuex";
import { moneyFormat } from "@/util/money";
import { dateFormat } from "@/util/date";
import {mapGetters} from "vuex";
import {moneyFormat} from "@/util/money";
import {dateFormat} from "@/util/date";
import saveButton from "./saveButton";
import { excelAccept } from "@/common/accept";
import {excelAccept} from "@/common/accept";
import httpRequest from "../httpRequest";
const accept = ["image/png", "image/jpeg", "image/svg+xml", "image/gif"];
export default {
components: {
SelectMap,
saveButton,
Check
},
@@ -129,42 +130,42 @@ export default {
},
},
data() {
let taxReal=(rule, value, callback)=>{
let reg = new RegExp("[\\u4E00-\\u9FFF]+","g");
let taxReal = (rule, value, callback) => {
let reg = new RegExp("[\\u4E00-\\u9FFF]+", "g");
let reg1 = new RegExp("/[a-z]/i;");
if(reg.test(value)){
if (reg.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
}else if (reg1.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
}else{
callback(new Error('只能输入数字!'))
} else if (reg1.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
} else {
this.btnClickFlag = true;
callback()
}
}
return {
calibrationDialog:false,
calibrationDialog: false,
excelBox: false,
excelForm: {},
imageUrl: "/img/scimg.png",
imgFile:'',
btnClickFlag:false,
imgFile: '',
btnClickFlag: false,
formLabelWidth: '120px',
form:{
num:30,
form: {
num: 30,
},
rules: {
taxReal: [
{ validator: taxReal , trigger: ['blur', 'change'] },
],
taxReal: [
{validator: taxReal, trigger: ['blur', 'change']},
],
},
formSubmit:{
id:111,
taxReal:111,
formSubmit: {
id: 111,
taxReal: 111,
},
ceNum:0,
taxReal:0,
ceNum: 0,
taxReal: 0,
status: 1,
selectionList: [],
viewDrawer: false,
@@ -182,13 +183,13 @@ export default {
},
data: [],
obj: {},
missionNo:'',
leibie:'wait',//查询类别(必填,取值范围:=all 代表返回所有,=wait 待确定,=ing 发放中,=success 发放成功,fail=失败pause 暂不发放;)
missionNo: '',
leibie: 'wait',//查询类别(必填,取值范围:=all 代表返回所有,=wait 待确定,=ing 发放中,=success 发放成功,fail=失败pause 暂不发放;)
};
},
created() {},
watch: {
created() {
},
watch: {},
computed: {
...mapGetters(["permission"]),
// ids () {
@@ -205,7 +206,7 @@ export default {
});
return ids;
},
wageRealTotal () {
wageRealTotal() {
let wageRealTotal = 0;
this.selectionList.forEach(ele => {
wageRealTotal += ele.wageReal;
@@ -252,7 +253,7 @@ export default {
searchShow: false,
border: true,
index: true,
esignatureId:'',
esignatureId: '',
imageUrl: "/img/license.png",
indexLabel: "序号",
selection: true,
@@ -286,16 +287,16 @@ export default {
},
methods: {
//批量签发
batchIssue(){
batchIssue() {
let fd = new FormData();
fd.append('ids',this.ids.join(","));
fd.append('ids', this.ids.join(","));
signSeals(fd)
.then(() => {
this.onLoad(this.page, this.params);
})
.catch(() => {
});
.then(() => {
this.onLoad(this.page, this.params);
})
.catch(() => {
});
},
/**上传图片**/
handleAvatarSuccess(res, file) {
@@ -307,23 +308,23 @@ export default {
const isJPG = accept.includes(file.type);
this.imgFile = file;
let fd = new FormData();
fd.append('file',file);
fd.append('id',this.form.id);
fd.append('file', file);
fd.append('id', this.form.id);
if (!isJPG) {
this.$message.error("图片格式不正确!");
}
signSealImg(fd)
.then(() => {
})
.catch(() => {
});
.then(() => {
})
.catch(() => {
});
return isJPG;
},
/**上传图片*/
httpRequest,
moneyFormat,
//下载建行客户端工资发放模板
//下载建行客户端工资发放模板
uploadAfter(res, done) {
this.onLoad(this.page, this.params);
done();
@@ -345,24 +346,24 @@ export default {
// }
// },
//单挑数据发起校准确定按钮
drawbackClick(){
drawbackClick() {
let fd = new FormData();
fd.append('id',this.form.id);
fd.append('id', this.form.id);
signSeal(fd)
.then(() => {
this.onLoad(this.page, this.params);
})
.catch(() => {
});
this.calibrationDialog = false;
.then(() => {
this.onLoad(this.page, this.params);
})
.catch(() => {
});
this.calibrationDialog = false;
},
taxRealChaneg(){
taxRealChaneg() {
this.form.taxReal = this.taxReal;
this.formSubmit.taxReal = this.taxReal*100;
this.ceNum = this.form.taxTotal - this.formSubmit.taxReal ;
this.formSubmit.taxReal = this.taxReal * 100;
this.ceNum = this.form.taxTotal - this.formSubmit.taxReal;
},
selectionChange (list) {
selectionChange(list) {
this.selectionList = list;
},
format(date) {
@@ -371,12 +372,12 @@ export default {
}
},
//发起校准
calibration(row){
calibration(row) {
this.form = row;
this.calibrationDialog = true;
},
//下载申请表
downloadEsignature(row){
downloadEsignature(row) {
window.open(downloadEsignature(row.id))
},
currentChange(currentPage) {
@@ -407,7 +408,7 @@ export default {
backIndex() {
this.$emit("refresh");
},
},
};
</script>
@@ -416,10 +417,12 @@ export default {
height: 160px;
width: 160px;
}
.el-col,
.el-form-item {
margin-bottom: 0px;
}
.map {
width: 100%;
height: 300px;
@@ -429,25 +432,31 @@ export default {
.slotForm {
font-size: 12px;
}
.calibrationForm .el-form{
.calibrationForm .el-form {
padding-bottom: 0 !important;
}
.calibrationForm .el-dialog--center .el-dialog__body{
.calibrationForm .el-dialog--center .el-dialog__body {
padding: 0 10px !important;
}
.calibrationForm .el-dialog--center .el-dialog__body .el-input__inner{
.calibrationForm .el-dialog--center .el-dialog__body .el-input__inner {
padding: 0 !important;
height:30px !important;
height: 30px !important;
line-height: 30px !important;
}
.excelBox .el-dialog__body{
padding: 0 10px!important;
.excelBox .el-dialog__body {
padding: 0 10px !important;
}
.excelBox .el-form-item__content{
margin-left: 0 !important;
text-align: center;
.excelBox .el-form-item__content {
margin-left: 0 !important;
text-align: center;
}
.excelBox .el-dialog{
width:360px !important;
.excelBox .el-dialog {
width: 360px !important;
}
</style>
</style>

View File

@@ -17,26 +17,27 @@
@on-load="onLoad"
@selection-change="selectionChange"
>
<!-- 应发工资 -->
<template slot="wage" slot-scope="{ row }">
<span>{{moneyFormat(row.wage) }}</span>
</template>
<!-- 个税 wageReal-->
<template slot="tax" slot-scope="{ row }">
<span>{{moneyFormat(row.taxTotal) }}</span>
</template>
<!-- 实发工资-->
<template slot="wageReal" slot-scope="{row }">
<span>{{moneyFormat(row.wageReal) }}</span>
</template>
<!-- 归属月 -->
<template slot="belongMonth" slot-scope="{row }">
<span>{{row.belongYear}}-{{row.belongMonth}}</span>
</template>
<!-- 应发工资 -->
<template slot="wage" slot-scope="{ row }">
<span>{{ moneyFormat(row.wage) }}</span>
</template>
<!-- 个税 wageReal-->
<template slot="tax" slot-scope="{ row }">
<span>{{ moneyFormat(row.taxTotal) }}</span>
</template>
<!-- 实发工资-->
<template slot="wageReal" slot-scope="{row }">
<span>{{ moneyFormat(row.wageReal) }}</span>
</template>
<!-- 归属月 -->
<template slot="belongMonth" slot-scope="{row }">
<span>{{ row.belongYear }}-{{ row.belongMonth }}</span>
</template>
<!--自定义操作栏-->
<div slot="menu" slot-scope="{row}">
<el-button type="text" size="mini" @click.stop="checkClick(row)"
>查看</el-button
>查看
</el-button
>
</div>
</avue-crud>
@@ -44,46 +45,45 @@
<check ref="check" v-show="false"></check>
<!-- /查看详情dialog -->
<el-dialog
title="查看"
:visible.sync="calibrationDialog"
width="300px"
:modal="false"
class="calibrationForm excelBox checkForm">
<el-form :model="form" :rules="rules">
<el-form-item label="公章:" prop="authUrlId" >
<div v-loading="uploading">
<img
class="companyInfo-upload-image"
:src="'data:image/png;base64,'+form.imgStr"
/>
</div>
<!-- <div class="companyInfo-upload-tip" slot="tip">
请上传营业执照
</div> -->
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
</div>
</el-dialog>
title="查看"
:visible.sync="calibrationDialog"
width="300px"
:modal="false"
class="calibrationForm excelBox checkForm">
<el-form :model="form" :rules="rules">
<el-form-item label="公章:" prop="authUrlId">
<div v-loading="uploading">
<img
class="companyInfo-upload-image"
:src="'data:image/png;base64,'+form.imgStr"
/>
</div>
<!-- <div class="companyInfo-upload-tip" slot="tip">
请上传营业执照
</div> -->
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
</div>
</el-dialog>
</div>
</template>
<script>
import {excelImportOrder} from "@/api/manage/agentpay";//api
import {esignatureStatus,signSealImg,signSeal,detailsImg} from "@/api/manage/esignature";//api
import {esignatureStatus, signSealImg, signSeal, detailsImg} from "@/api/manage/esignature";//api
import Check from "../Dialog/IncomeTaxCheck";//查看详情
import SelectMap from "@/components/map/selectLocation";
import { mapGetters } from "vuex";
import { moneyFormat } from "@/util/money";
import { dateFormat } from "@/util/date";
import {mapGetters} from "vuex";
import {moneyFormat} from "@/util/money";
import {dateFormat} from "@/util/date";
import saveButton from "./saveButton";
import { excelAccept } from "@/common/accept";
import {excelAccept} from "@/common/accept";
import httpRequest from "../httpRequest";
const accept = ["image/png", "image/jpeg", "image/svg+xml", "image/gif"];
export default {
components: {
SelectMap,
saveButton,
Check
},
@@ -97,42 +97,42 @@ export default {
},
},
data() {
let taxReal=(rule, value, callback)=>{
let reg = new RegExp("[\\u4E00-\\u9FFF]+","g");
let taxReal = (rule, value, callback) => {
let reg = new RegExp("[\\u4E00-\\u9FFF]+", "g");
let reg1 = new RegExp("/[a-z]/i;");
if(reg.test(value)){
if (reg.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
}else if (reg1.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
}else{
callback(new Error('只能输入数字!'))
} else if (reg1.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
} else {
this.btnClickFlag = true;
callback()
}
}
return {
calibrationDialog:false,
calibrationDialog: false,
excelBox: false,
excelForm: {},
imageUrl: "/img/scimg.png",
imgFile:'',
btnClickFlag:false,
imgFile: '',
btnClickFlag: false,
formLabelWidth: '120px',
form:{
num:30,
form: {
num: 30,
},
rules: {
taxReal: [
{ validator: taxReal , trigger: ['blur', 'change'] },
],
taxReal: [
{validator: taxReal, trigger: ['blur', 'change']},
],
},
formSubmit:{
id:111,
taxReal:111,
formSubmit: {
id: 111,
taxReal: 111,
},
ceNum:0,
taxReal:0,
ceNum: 0,
taxReal: 0,
status: 1,
selectionList: [],
viewDrawer: false,
@@ -150,23 +150,23 @@ export default {
},
data: [],
obj: {},
missionNo:'',
leibie:'wait',//查询类别(必填,取值范围:=all 代表返回所有,=wait 待确定,=ing 发放中,=success 发放成功,fail=失败pause 暂不发放;)
missionNo: '',
leibie: 'wait',//查询类别(必填,取值范围:=all 代表返回所有,=wait 待确定,=ing 发放中,=success 发放成功,fail=失败pause 暂不发放;)
};
},
created() {},
watch: {
created() {
},
watch: {},
computed: {
...mapGetters(["permission"]),
ids () {
ids() {
let ids = [];
this.selectionList.forEach(ele => {
ids.push(ele.id);
});
return ids.join(",");
},
wageRealTotal () {
wageRealTotal() {
let wageRealTotal = 0;
this.selectionList.forEach(ele => {
wageRealTotal += ele.wageReal;
@@ -213,7 +213,7 @@ export default {
searchShow: false,
border: true,
index: true,
esignatureId:'',
esignatureId: '',
imageUrl: "/img/license.png",
dialogType: "drawer",
dialogWidth: "60%",
@@ -284,23 +284,23 @@ export default {
const isJPG = accept.includes(file.type);
this.imgFile = file;
let fd = new FormData();
fd.append('file',file);
fd.append('id',this.form.id);
fd.append('file', file);
fd.append('id', this.form.id);
if (!isJPG) {
this.$message.error("图片格式不正确!");
}
signSealImg(fd)
.then(() => {
})
.catch(() => {
});
.then(() => {
})
.catch(() => {
});
return isJPG;
},
/**上传图片*/
httpRequest,
moneyFormat,
//下载建行客户端工资发放模板
//下载建行客户端工资发放模板
uploadAfter(res, done) {
this.onLoad(this.page, this.params);
done();
@@ -314,23 +314,23 @@ export default {
}
},
//单挑数据发起校准确定按钮
drawbackClick(){
drawbackClick() {
let fd = new FormData();
fd.append('id',this.form.id);
fd.append('id', this.form.id);
signSeal(fd)
.then(() => {
})
.catch(() => {
});
this.calibrationDialog = false;
.then(() => {
})
.catch(() => {
});
this.calibrationDialog = false;
},
taxRealChaneg(){
taxRealChaneg() {
this.form.taxReal = this.taxReal;
this.formSubmit.taxReal = this.taxReal*100;
this.ceNum = this.form.taxTotal - this.formSubmit.taxReal ;
this.formSubmit.taxReal = this.taxReal * 100;
this.ceNum = this.form.taxTotal - this.formSubmit.taxReal;
},
selectionChange (list) {
selectionChange(list) {
this.selectionList = list;
},
format(date) {
@@ -338,16 +338,16 @@ export default {
return dateFormat(new Date(date), "yyyy/MM/dd");
}
},
checkClick (row){
checkClick(row) {
this.form = row;
detailsImg(row.id).then((res) => {
this.form.imgStr = res.data.data;
this.calibrationDialog = true;
})
.catch(() => {
});
.catch(() => {
});
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
@@ -377,7 +377,7 @@ export default {
backIndex() {
this.$emit("refresh");
},
},
};
</script>
@@ -386,14 +386,17 @@ export default {
font-size: 18px;
margin-left: 20px;
}
.companyInfo-upload-image {
height: 160px;
width: 160px;
}
.el-col,
.el-form-item {
margin-bottom: 0px;
}
.map {
width: 100%;
height: 300px;
@@ -403,24 +406,30 @@ export default {
.slotForm {
font-size: 12px;
}
.calibrationForm .el-form{
.calibrationForm .el-form {
padding-bottom: 0 !important;
}
.calibrationForm .el-dialog--center .el-dialog__body{
.calibrationForm .el-dialog--center .el-dialog__body {
padding: 0 10px !important;
}
.calibrationForm .el-dialog--center .el-dialog__body .el-input__inner{
.calibrationForm .el-dialog--center .el-dialog__body .el-input__inner {
padding: 0 !important;
height:30px !important;
height: 30px !important;
line-height: 30px !important;
}
.excelBox .el-dialog__body{
padding: 0 10px!important;
.excelBox .el-dialog__body {
padding: 0 10px !important;
}
.excelBox .el-form-item__content{
margin-left: 0 !important;
.excelBox .el-form-item__content {
margin-left: 0 !important;
}
.excelBox .el-dialog{
width:360px !important;
.excelBox .el-dialog {
width: 360px !important;
}
</style>
</style>

View File

@@ -17,22 +17,22 @@
@on-load="onLoad"
@selection-change="selectionChange"
>
<!-- 应发工资 -->
<template slot="wage" slot-scope="{ row }">
<span>{{moneyFormat(row.wage) }}</span>
</template>
<!-- 个税 wageReal-->
<template slot="tax" slot-scope="{ row }">
<span>{{moneyFormat(row.taxTotal) }}</span>
</template>
<!-- 实发工资-->
<template slot="wageReal" slot-scope="{row }">
<span>{{moneyFormat(row.wageReal) }}</span>
</template>
<!-- 归属月 -->
<template slot="belongMonth" slot-scope="{row }">
<span>{{row.belongYear}}-{{row.belongMonth}}</span>
</template>
<!-- 应发工资 -->
<template slot="wage" slot-scope="{ row }">
<span>{{ moneyFormat(row.wage) }}</span>
</template>
<!-- 个税 wageReal-->
<template slot="tax" slot-scope="{ row }">
<span>{{ moneyFormat(row.taxTotal) }}</span>
</template>
<!-- 实发工资-->
<template slot="wageReal" slot-scope="{row }">
<span>{{ moneyFormat(row.wageReal) }}</span>
</template>
<!-- 归属月 -->
<template slot="belongMonth" slot-scope="{row }">
<span>{{ row.belongYear }}-{{ row.belongMonth }}</span>
</template>
<!--自定义按钮-->
<!-- <template slot="menuLeft">
<el-button @click="excelBox = true" size="small" type="primary"
@@ -42,10 +42,12 @@
<!--自定义操作栏-->
<div slot="menu" slot-scope="{row}">
<el-button type="text" size="mini" @click="downloadEsignature(row)"
>下载申请表</el-button
>下载申请表
</el-button
>
<el-button type="text" size="mini" @click.stop="calibration(row)"
>签发</el-button
>签发
</el-button
>
</div>
</avue-crud>
@@ -53,65 +55,64 @@
<check ref="check" v-show="false"></check>
<!-- /查看详情dialog -->
<el-dialog
title="上传"
:visible.sync="calibrationDialog"
width="300px"
:modal="false"
class="calibrationForm excelBox">
<el-form :model="form" :rules="rules">
title="上传"
:visible.sync="calibrationDialog"
width="300px"
:modal="false"
class="calibrationForm excelBox">
<el-form :model="form" :rules="rules">
<el-form-item label="" :label-width="0">
<p>{{form.companyName}}</p>
</el-form-item>
<el-form-item label="" prop="authUrlId">
<el-upload
:show-file-list="false"
:on-progress="
<el-form-item label="" :label-width="0">
<p>{{ form.companyName }}</p>
</el-form-item>
<el-form-item label="" prop="authUrlId">
<el-upload
:show-file-list="false"
:on-progress="
() => {
uploading = true;
}
"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
:http-request="httpRequest"
>
<div v-loading="uploading">
<img
class="companyInfo-upload-image"
:src="form.authUrlId || imageUrl"
/>
</div>
<!-- <div class="companyInfo-upload-tip" slot="tip">
请上传营业执照
</div> -->
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="calibrationDialog = false">取 消</el-button>
<el-button type="primary" @click="drawbackClick">确 定</el-button>
</div>
</el-dialog>
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload"
:http-request="httpRequest"
>
<div v-loading="uploading">
<img
class="companyInfo-upload-image"
:src="form.authUrlId || imageUrl"
/>
</div>
<!-- <div class="companyInfo-upload-tip" slot="tip">
请上传营业执照
</div> -->
</el-upload>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="calibrationDialog = false">取 消</el-button>
<el-button type="primary" @click="drawbackClick">确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import {excelImportOrder} from "@/api/manage/agentpay";//api
import {esignatureStatus,signSealImg,downloadEsignature,signSeal} from "@/api/manage/esignature";//api
import {esignatureStatus, signSealImg, downloadEsignature, signSeal} from "@/api/manage/esignature";//api
import Check from "../Dialog/IncomeTaxCheck";//查看详情
import SelectMap from "@/components/map/selectLocation";
import { mapGetters } from "vuex";
import { moneyFormat } from "@/util/money";
import { dateFormat } from "@/util/date";
import {mapGetters} from "vuex";
import {moneyFormat} from "@/util/money";
import {dateFormat} from "@/util/date";
import saveButton from "./saveButton";
import { excelAccept } from "@/common/accept";
import {excelAccept} from "@/common/accept";
import httpRequest from "../httpRequest";
const accept = ["image/png", "image/jpeg", "image/svg+xml", "image/gif"];
export default {
components: {
SelectMap,
saveButton,
Check
},
@@ -125,42 +126,42 @@ export default {
},
},
data() {
let taxReal=(rule, value, callback)=>{
let reg = new RegExp("[\\u4E00-\\u9FFF]+","g");
let taxReal = (rule, value, callback) => {
let reg = new RegExp("[\\u4E00-\\u9FFF]+", "g");
let reg1 = new RegExp("/[a-z]/i;");
if(reg.test(value)){
if (reg.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
}else if (reg1.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
}else{
callback(new Error('只能输入数字!'))
} else if (reg1.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
} else {
this.btnClickFlag = true;
callback()
}
}
return {
calibrationDialog:false,
calibrationDialog: false,
excelBox: false,
excelForm: {},
imageUrl: "/img/scimg.png",
imgFile:'',
btnClickFlag:false,
imgFile: '',
btnClickFlag: false,
formLabelWidth: '120px',
form:{
num:30,
form: {
num: 30,
},
rules: {
taxReal: [
{ validator: taxReal , trigger: ['blur', 'change'] },
],
taxReal: [
{validator: taxReal, trigger: ['blur', 'change']},
],
},
formSubmit:{
id:111,
taxReal:111,
formSubmit: {
id: 111,
taxReal: 111,
},
ceNum:0,
taxReal:0,
ceNum: 0,
taxReal: 0,
status: 1,
selectionList: [],
viewDrawer: false,
@@ -178,23 +179,23 @@ export default {
},
data: [],
obj: {},
missionNo:'',
leibie:'wait',//查询类别(必填,取值范围:=all 代表返回所有,=wait 待确定,=ing 发放中,=success 发放成功,fail=失败pause 暂不发放;)
missionNo: '',
leibie: 'wait',//查询类别(必填,取值范围:=all 代表返回所有,=wait 待确定,=ing 发放中,=success 发放成功,fail=失败pause 暂不发放;)
};
},
created() {},
watch: {
created() {
},
watch: {},
computed: {
...mapGetters(["permission"]),
ids () {
ids() {
let ids = [];
this.selectionList.forEach(ele => {
ids.push(ele.id);
});
return ids.join(",");
},
wageRealTotal () {
wageRealTotal() {
let wageRealTotal = 0;
this.selectionList.forEach(ele => {
wageRealTotal += ele.wageReal;
@@ -241,7 +242,7 @@ export default {
searchShow: false,
border: true,
index: true,
esignatureId:'',
esignatureId: '',
imageUrl: "/img/license.png",
indexLabel: "序号",
// selection: true,
@@ -277,24 +278,24 @@ export default {
const isJPG = accept.includes(file.type);
this.imgFile = file;
let fd = new FormData();
fd.append('file',file);
fd.append('id',this.form.id);
fd.append('file', file);
fd.append('id', this.form.id);
if (!isJPG) {
this.$message.error("图片格式不正确!");
}
signSealImg(fd)
.then((res) => {
console.log(res);
})
.catch(() => {
});
.then((res) => {
console.log(res);
})
.catch(() => {
});
return isJPG;
},
/**上传图片*/
httpRequest,
moneyFormat,
//下载建行客户端工资发放模板
//下载建行客户端工资发放模板
uploadAfter(res, done) {
this.onLoad(this.page, this.params);
done();
@@ -316,24 +317,24 @@ export default {
// }
// },
//单挑数据发起校准确定按钮
drawbackClick(){
drawbackClick() {
let fd = new FormData();
fd.append('id',this.form.id);
fd.append('id', this.form.id);
signSeal(fd)
.then((res) => {
console.log(res);
})
.catch(() => {
});
this.calibrationDialog = false;
.then((res) => {
console.log(res);
})
.catch(() => {
});
this.calibrationDialog = false;
},
taxRealChaneg(){
taxRealChaneg() {
this.form.taxReal = this.taxReal;
this.formSubmit.taxReal = this.taxReal*100;
this.ceNum = this.form.taxTotal - this.formSubmit.taxReal ;
this.formSubmit.taxReal = this.taxReal * 100;
this.ceNum = this.form.taxTotal - this.formSubmit.taxReal;
},
selectionChange (list) {
selectionChange(list) {
this.selectionList = list;
},
format(date) {
@@ -342,10 +343,10 @@ export default {
}
},
//发起校准
calibration(row){
this.imageUrl="/img/scimg.png";
calibration(row) {
this.imageUrl = "/img/scimg.png";
this.form = row;
console.log(this.form,'form')
console.log(this.form, 'form')
// this.ceNum = row.taxTotal - row.taxReal
// this.taxReal = 0;
@@ -356,7 +357,7 @@ export default {
// this.$refs.check.openDialog(row);
// },
//下载申请表
downloadEsignature(row){
downloadEsignature(row) {
console.log(row);
window.open(downloadEsignature(row.id))
},
@@ -389,7 +390,7 @@ export default {
backIndex() {
this.$emit("refresh");
},
},
};
</script>
@@ -398,10 +399,12 @@ export default {
height: 160px;
width: 160px;
}
.el-col,
.el-form-item {
margin-bottom: 0px;
}
.map {
width: 100%;
height: 300px;
@@ -411,25 +414,31 @@ export default {
.slotForm {
font-size: 12px;
}
.calibrationForm .el-form{
.calibrationForm .el-form {
padding-bottom: 0 !important;
}
.calibrationForm .el-dialog--center .el-dialog__body{
.calibrationForm .el-dialog--center .el-dialog__body {
padding: 0 10px !important;
}
.calibrationForm .el-dialog--center .el-dialog__body .el-input__inner{
.calibrationForm .el-dialog--center .el-dialog__body .el-input__inner {
padding: 0 !important;
height:30px !important;
height: 30px !important;
line-height: 30px !important;
}
.excelBox .el-dialog__body{
padding: 0 10px!important;
.excelBox .el-dialog__body {
padding: 0 10px !important;
}
.excelBox .el-form-item__content{
margin-left: 0 !important;
text-align: center;
.excelBox .el-form-item__content {
margin-left: 0 !important;
text-align: center;
}
.excelBox .el-dialog{
width:360px !important;
.excelBox .el-dialog {
width: 360px !important;
}
</style>
</style>

View File

@@ -17,22 +17,22 @@
@on-load="onLoad"
@selection-change="selectionChange"
>
<!-- 应发工资 -->
<template slot="wage" slot-scope="{ row }">
<span>{{moneyFormat(row.wage) }}</span>
</template>
<!-- 个税 wageReal-->
<template slot="tax" slot-scope="{ row }">
<span>{{moneyFormat(row.taxTotal) }}</span>
</template>
<!-- 实发工资-->
<template slot="wageReal" slot-scope="{row }">
<span>{{moneyFormat(row.wageReal) }}</span>
</template>
<!-- 归属月 -->
<template slot="belongMonth" slot-scope="{row }">
<span>{{row.belongYear}}-{{row.belongMonth}}</span>
</template>
<!-- 应发工资 -->
<template slot="wage" slot-scope="{ row }">
<span>{{ moneyFormat(row.wage) }}</span>
</template>
<!-- 个税 wageReal-->
<template slot="tax" slot-scope="{ row }">
<span>{{ moneyFormat(row.taxTotal) }}</span>
</template>
<!-- 实发工资-->
<template slot="wageReal" slot-scope="{row }">
<span>{{ moneyFormat(row.wageReal) }}</span>
</template>
<!-- 归属月 -->
<template slot="belongMonth" slot-scope="{row }">
<span>{{ row.belongYear }}-{{ row.belongMonth }}</span>
</template>
<!--自定义按钮-->
<!-- <template slot="menuLeft">
<el-button @click="excelBox = true" size="small" type="primary"
@@ -45,7 +45,8 @@
>下载申请表</el-button
> -->
<el-button type="text" size="mini" @click.stop="calibration(row)"
>查看</el-button
>查看
</el-button
>
</div>
</avue-crud>
@@ -53,38 +54,45 @@
<check ref="check" v-show="false"></check>
<!-- /查看详情dialog -->
<el-dialog
title=""
:visible.sync="dialogVisible"
width="35%"
:modal=false
:before-close="handleClose">
<div>
<img class="" :src="'data:image/png;base64,'+imgStr" width="100%"/>
</div>
<span slot="footer" class="dialog-footer">
title=""
:visible.sync="dialogVisible"
width="35%"
:modal=false
:before-close="handleClose">
<div>
<img class="" :src="'data:image/png;base64,'+imgStr" width="100%"/>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="downLoadContract">下载合同</el-button>
</span>
</el-dialog>
</el-dialog>
</div>
</template>
<script>
import {excelImportOrder} from "@/api/manage/agentpay";//apitenantList
import {managerList,signSealImg,downloadEsignature,signSeal,signSeals,viewContractImg,contractDownload} from "@/api/manage/esignature";//api
import {
managerList,
signSealImg,
downloadEsignature,
signSeal,
signSeals,
viewContractImg,
contractDownload
} from "@/api/manage/esignature";//api
import Check from "../Dialog/IncomeTaxCheck";//查看详情
import SelectMap from "@/components/map/selectLocation";
import { mapGetters } from "vuex";
import { moneyFormat } from "@/util/money";
import { dateFormat } from "@/util/date";
import {mapGetters} from "vuex";
import {moneyFormat} from "@/util/money";
import {dateFormat} from "@/util/date";
import saveButton from "./saveButton";
import { excelAccept } from "@/common/accept";
import {excelAccept} from "@/common/accept";
import httpRequest from "../httpRequest";
const accept = ["image/png", "image/jpeg", "image/svg+xml", "image/gif"];
export default {
components: {
SelectMap,
saveButton,
Check
},
@@ -98,45 +106,45 @@ export default {
},
},
data() {
let taxReal=(rule, value, callback)=>{
let reg = new RegExp("[\\u4E00-\\u9FFF]+","g");
let taxReal = (rule, value, callback) => {
let reg = new RegExp("[\\u4E00-\\u9FFF]+", "g");
let reg1 = new RegExp("/[a-z]/i;");
if(reg.test(value)){
if (reg.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
}else if (reg1.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
}else{
callback(new Error('只能输入数字!'))
} else if (reg1.test(value)) {
this.btnClickFlag = false;
callback(new Error('只能输入数字!'))
} else {
this.btnClickFlag = true;
callback()
}
}
return {
calibrationDialog:false,
contractId:'',
calibrationDialog: false,
contractId: '',
excelBox: false,
dialogVisible: false,
imgStr:'',
imgStr: '',
excelForm: {},
imageUrl: "/img/scimg.png",
imgFile:'',
btnClickFlag:false,
imgFile: '',
btnClickFlag: false,
formLabelWidth: '120px',
form:{
num:30,
form: {
num: 30,
},
rules: {
taxReal: [
{ validator: taxReal , trigger: ['blur', 'change'] },
],
taxReal: [
{validator: taxReal, trigger: ['blur', 'change']},
],
},
formSubmit:{
id:111,
taxReal:111,
formSubmit: {
id: 111,
taxReal: 111,
},
ceNum:0,
taxReal:0,
ceNum: 0,
taxReal: 0,
// status: 1,
selectionList: [],
viewDrawer: false,
@@ -154,13 +162,13 @@ export default {
},
data: [],
obj: {},
missionNo:'',
leibie:'wait',//查询类别(必填,取值范围:=all 代表返回所有,=wait 待确定,=ing 发放中,=success 发放成功,fail=失败pause 暂不发放;)
missionNo: '',
leibie: 'wait',//查询类别(必填,取值范围:=all 代表返回所有,=wait 待确定,=ing 发放中,=success 发放成功,fail=失败pause 暂不发放;)
};
},
created() {},
watch: {
created() {
},
watch: {},
computed: {
...mapGetters(["permission"]),
ids() {
@@ -170,7 +178,7 @@ export default {
});
return ids;
},
wageRealTotal () {
wageRealTotal() {
let wageRealTotal = 0;
this.selectionList.forEach(ele => {
wageRealTotal += ele.wageReal;
@@ -217,7 +225,7 @@ export default {
searchShow: false,
border: true,
index: true,
esignatureId:'',
esignatureId: '',
imageUrl: "/img/license.png",
indexLabel: "序号",
// selection: true,
@@ -266,24 +274,25 @@ export default {
},
methods: {
//批量签发
batchIssue(){
batchIssue() {
let fd = new FormData();
fd.append('ids',this.ids.join(","));
fd.append('ids', this.ids.join(","));
signSeals(fd)
.then(() => {
this.onLoad(this.page, this.params);
})
.catch(() => {
});
.then(() => {
this.onLoad(this.page, this.params);
})
.catch(() => {
});
},
handleClose(done) {
this.$confirm('确认关闭?')
.then(()=> {
done();
})
.catch(() => {});
},
this.$confirm('确认关闭?')
.then(() => {
done();
})
.catch(() => {
});
},
/**上传图片**/
handleAvatarSuccess(res, file) {
this.imageUrl = URL.createObjectURL(file.raw);
@@ -294,23 +303,23 @@ export default {
const isJPG = accept.includes(file.type);
this.imgFile = file;
let fd = new FormData();
fd.append('file',file);
fd.append('id',this.form.id);
fd.append('file', file);
fd.append('id', this.form.id);
if (!isJPG) {
this.$message.error("图片格式不正确!");
}
signSealImg(fd)
.then(() => {
})
.catch(() => {
});
.then(() => {
})
.catch(() => {
});
return isJPG;
},
/**上传图片*/
httpRequest,
moneyFormat,
//下载建行客户端工资发放模板
//下载建行客户端工资发放模板
uploadAfter(res, done) {
this.onLoad(this.page, this.params);
done();
@@ -324,24 +333,24 @@ export default {
}
},
//单挑数据发起校准确定按钮
drawbackClick(){
drawbackClick() {
let fd = new FormData();
fd.append('id',this.form.id);
fd.append('id', this.form.id);
signSeal(fd)
.then(() => {
this.onLoad(this.page, this.params);
})
.catch(() => {
});
this.calibrationDialog = false;
.then(() => {
this.onLoad(this.page, this.params);
})
.catch(() => {
});
this.calibrationDialog = false;
},
taxRealChaneg(){
taxRealChaneg() {
this.form.taxReal = this.taxReal;
this.formSubmit.taxReal = this.taxReal*100;
this.ceNum = this.form.taxTotal - this.formSubmit.taxReal ;
this.formSubmit.taxReal = this.taxReal * 100;
this.ceNum = this.form.taxTotal - this.formSubmit.taxReal;
},
selectionChange (list) {
selectionChange(list) {
this.selectionList = list;
},
format(date) {
@@ -350,24 +359,24 @@ export default {
}
},
//查看
calibration(row){
calibration(row) {
this.form = row;
this.contractId = row.id;
viewContractImg(row.id).then((res) => {
this.imgStr = res.data.data;
this.dialogVisible = true;
})
.catch(() => {
});
.catch(() => {
});
//contractDetailsImg()
},
//下载合同
downLoadContract(){
downLoadContract() {
window.open(contractDownload(this.contractId))
},
//下载申请表
downloadEsignature(row){
downloadEsignature(row) {
window.open(downloadEsignature(row.id))
},
currentChange(currentPage) {
@@ -398,7 +407,7 @@ export default {
backIndex() {
this.$emit("refresh");
},
},
};
</script>
@@ -407,10 +416,12 @@ export default {
height: 160px;
width: 160px;
}
.el-col,
.el-form-item {
margin-bottom: 0px;
}
.map {
width: 100%;
height: 300px;
@@ -420,25 +431,31 @@ export default {
.slotForm {
font-size: 12px;
}
.calibrationForm .el-form{
.calibrationForm .el-form {
padding-bottom: 0 !important;
}
.calibrationForm .el-dialog--center .el-dialog__body{
.calibrationForm .el-dialog--center .el-dialog__body {
padding: 0 10px !important;
}
.calibrationForm .el-dialog--center .el-dialog__body .el-input__inner{
.calibrationForm .el-dialog--center .el-dialog__body .el-input__inner {
padding: 0 !important;
height:30px !important;
height: 30px !important;
line-height: 30px !important;
}
.excelBox .el-dialog__body{
padding: 0 10px!important;
.excelBox .el-dialog__body {
padding: 0 10px !important;
}
.excelBox .el-form-item__content{
margin-left: 0 !important;
text-align: center;
.excelBox .el-form-item__content {
margin-left: 0 !important;
text-align: center;
}
.excelBox .el-dialog{
width:360px !important;
.excelBox .el-dialog {
width: 360px !important;
}
</style>
</style>

View File

@@ -1,33 +1,33 @@
<template>
<basic-container>
<avue-crud
ref="crud"
:table-loading="loading"
@date-change="dateChange"
@current-change="currentChange"
@size-change="sizeChange"
@on-load="onLoad"
:option="option"
:data="inviteCodeList"
:page.sync="page"
@row-del="rowDel"
@search-change="searchChange"
@refresh-change="refreshChange"
@search-reset="searchReset"
@selection-change="selectionChange"
ref="crud"
:table-loading="loading"
@date-change="dateChange"
@current-change="currentChange"
@size-change="sizeChange"
@on-load="onLoad"
:option="option"
:data="inviteCodeList"
:page.sync="page"
@row-del="rowDel"
@search-change="searchChange"
@refresh-change="refreshChange"
@search-reset="searchReset"
@selection-change="selectionChange"
>
<template slot="menuLeft">
<el-button
size="small"
@click.stop="distributionCodeDialog = true; isEdit = false; inviteCodeForm = {}"
type="primary"
v-show="vaildData(permission.manage_station_inviteCode_edituser, false)"
size="small"
@click.stop="distributionCodeDialog = true; isEdit = false; inviteCodeForm = {}"
type="primary"
v-show="vaildData(permission.manage_station_inviteCode_edituser, false)"
>绑定用户
</el-button>
<el-button
size="small"
@click.stop="handleCheck"
type="primary"
size="small"
@click.stop="handleCheck"
type="primary"
>审核用户
</el-button>
</template>
@@ -37,21 +37,21 @@
</template>
<template slot="isEnabled" slot-scope="{ row }">
<el-switch
:value="row.isEnabled"
:active-value="1"
:inactive-value="0"
active-color="#13ce66"
inactive-color="#ff4949"
@change="changeEnabled(row)">
:value="row.isEnabled"
:active-value="1"
:inactive-value="0"
active-color="#13ce66"
inactive-color="#ff4949"
@change="changeEnabled(row)">
</el-switch>
</template>
</avue-crud>
<el-drawer
title="绑定用户"
:visible.sync="distributionCodeDialog"
append-to-body
width="40%"
title="绑定用户"
:visible.sync="distributionCodeDialog"
append-to-body
width="40%"
>
<div class="drawer_content">
<el-form :model="inviteCodeForm" :rules="inviteCodeRules" filterable ref="inviteCode" label-width="100px"
@@ -60,10 +60,10 @@
<el-select v-model="inviteCodeForm.inviteCompanyId" :disabled="isEdit" filterable placeholder="请选择"
style="width: 260px">
<el-option
v-for="item in enterpriseList"
:key="item.id"
:label="item.comname"
:value="item.id">
v-for="item in enterpriseList"
:key="item.id"
:label="item.comname"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
@@ -87,6 +87,20 @@
</span>
</div>
</el-drawer>
<PromptDialog
:visible="dialogFlag"
title="审核"
sub-title="请核对用工单位信息后再进行审核通过 一旦驳回无法进行后续操作"
:tips="[
'该用户未达期望,建议重筛;',
'不符合条件,请再评估;',
'经审核,该用户资质不符,建议重评;',
'用工单位资质不符;',
]"
@onClose="dialogFlag = false"
@onCancel="diaLogCancel"
@onConfirm="diaLogConfirm"
></PromptDialog>
</basic-container>
</template>
<script>
@@ -104,6 +118,7 @@ import {Message} from "element-ui";
import lodash from "lodash";
import {recruitStatus} from "@/common/dic";
import {Auditing} from "@/api/manage/mission";
import PromptDialog from "@/components/promptDialog/index.vue";
const inviteCodeRules = {
stationId: [
@@ -206,16 +221,19 @@ const page = {
total: 0,
}
const message = lodash.throttle(
function (options) {
Message(options);
},
3000,
{trailing: false}
function (options) {
Message(options);
},
3000,
{trailing: false}
);
export default {
name: "manage_station_inviteCode",
components: {PromptDialog},
data() {
return {
dialogFlag: false,
selectIdList: [],
distributionCodeDialog: false,
inviteCodeRules: Object.assign({}, inviteCodeRules),
enterpriseList: [], // 用工单位列表
@@ -236,6 +254,22 @@ export default {
...mapGetters(["permission"]),
},
methods: {
diaLogCancel(value) {
if (!value) {
return this.$message({
type: "info",
message: "请输入驳回原因!",
});
}
this.handelFetchAuditing(this.selectIdList, 9, value, "成功驳回, 操作成功!").then(() => {
this.dialogFlag = false
})
},
diaLogConfirm(value) {
this.handelFetchAuditing(this.selectIdList, 1, value).then(() => {
this.dialogFlag = false
})
},
handleCheck() {
let self = this
if (this.selectionList.length < 1) {
@@ -248,34 +282,36 @@ export default {
let idList = this.selectionList.map((v) => v.id)
let h = this.$createElement;
this.$prompt(
h("p", {style: "color: #F56C6C"}, "一旦驳回无法进行后续操作"),
"请核对用工单位信息后再进行审核通过",
{
distinguishCancelAndClose: true,
confirmButtonText: "通 过",
cancelButtonText: "驳 回",
type: "warning",
center: true,
inputType: "textarea",
inputPlaceholder: "备注驳回原因",
beforeClose: function (action, instance, done) {
if (action === 'cancel') {
if (!instance.inputValue) {
return this.$message({
type: "info",
message: "请输入驳回原因!",
});
}
self.handelFetchAuditing(idList, 9, instance.inputValue, "成功驳回, 操作成功!").then(() => done())
} else if (action === 'confirm') {
self.handelFetchAuditing(idList, 1, instance.inputValue).then(() => done())
} else {
done()
}
}
}
)
this.dialogFlag = true
this.selectIdList = idList
// this.$prompt(
// h("p", {style: "color: #F56C6C"}, "一旦驳回无法进行后续操作"),
// "请核对用工单位信息后再进行审核通过",
// {
// distinguishCancelAndClose: true,
// confirmButtonText: "通 过",
// cancelButtonText: "驳 回",
// type: "warning",
// center: true,
// inputType: "textarea",
// inputPlaceholder: "备注驳回原因",
// beforeClose: function (action, instance, done) {
// if (action === 'cancel') {
// if (!instance.inputValue) {
// return this.$message({
// type: "info",
// message: "请输入驳回原因!",
// });
// }
// self.handelFetchAuditing(idList, 9, instance.inputValue, "成功驳回, 操作成功!").then(() => done())
// } else if (action === 'confirm') {
// self.handelFetchAuditing(idList, 1, instance.inputValue).then(() => done())
// } else {
// done()
// }
// }
// }
// )
},
handelFetchAuditing(idList, reviewState, msg, message) {
return new Promise((resolve, reject) => {
@@ -312,30 +348,30 @@ export default {
rowDel(row) {
const h = this.$createElement;
this.$confirm(
h("div", null, [
h("p", {style: "font-size: 16px"}, "您确定要删除此消息吗? "),
h("p", {style: "color: red"}, "一旦删除则无法找回"),
]),
{
type: "warning",
showClose: false,
showCancelButton: true,
confirmButtonText: "确定",
cancelButtonText: "取消",
}
h("div", null, [
h("p", {style: "font-size: 16px"}, "您确定要删除此消息吗? "),
h("p", {style: "color: red"}, "一旦删除则无法找回"),
]),
{
type: "warning",
showClose: false,
showCancelButton: true,
confirmButtonText: "确定",
cancelButtonText: "取消",
}
)
.then(() => {
return getInvitationStatusUpdate({id: row.id, isDeleted: 1});
})
.then(() => {
this.$message({
type: "success",
message: "操作成功!",
});
this.refreshChange();
})
.catch(() => {
.then(() => {
return getInvitationStatusUpdate({id: row.id, isDeleted: 1});
})
.then(() => {
this.$message({
type: "success",
message: "操作成功!",
});
this.refreshChange();
})
.catch(() => {
});
},
selectionChange(list) {
this.selectionList = list;

View File

@@ -42,7 +42,7 @@
v-model="query.time"
></YearRange>
</el-form-item>
<div class="searchBtn">
<el-form-item>
<el-button
type="primary"
size="small"
@@ -55,7 +55,7 @@
>
</el-button
>
</div>
</el-form-item>
</el-row>
</el-form>
<avue-crud
@@ -120,6 +120,8 @@ export default {
},
computed: {
option() {
const type = this.query.type
const labelName = type === 0 ? '岗位名称' : type === 1 ? '行业名称' : '时间'
return {
height: "auto",
tip: false,
@@ -141,15 +143,15 @@ export default {
align: 'center',
column: [
{
label: "名称",
label: labelName,
prop: "name",
},
{
label: "零工人数",
label: "申请人数",
prop: "workerCount",
},
{
label: "零工岗位人数",
label: "需求人数",
prop: "workCount",
},
{

View File

@@ -1,10 +1,10 @@
<template>
<basic-container>
<jl-go-back></jl-go-back>
<el-row>
<el-col :span="12">
<avue-form :option="formOption" v-model="form" @submit="handleSubmit" ref="form">
<template slot="policyFileUrl">
<basic-container>
<jl-go-back></jl-go-back>
<el-row>
<el-col :span="12">
<avue-form :option="formOption" v-model="form" @submit="handleSubmit" ref="form">
<template slot="policyFileUrl">
<div class="policyFileUrlWrapper">
<div class="uploadWrapperAb">
<el-upload
@@ -13,270 +13,271 @@
:show-file-list="false"
:http-request="allUpload"
:multiple="false"
><el-button size="small" type="primary">点击上传</el-button></el-upload>
>
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</div>
<avue-input disabled v-model="policyFileUrl" placeholder="点击上传文件"></avue-input>
</div>
</template>
</avue-form>
</el-col>
<el-col :span="12">
<Tinymce v-model="form.note" ref="tinymce" style="height: 100%;"></Tinymce>
</el-col>
</el-row>
</basic-container>
</template>
<script>
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import { quillEditor } from "vue-quill-editor";
import { addNews, getNewsDetail, editNews } from "@/api/manage/news"
import { putFile } from "@/api/resource/oss";
import Tinymce from "@/components/Tinymce";
import {getClassifyDic} from '@/api/help/article/classify'
const toolbarItems = [
["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线
["blockquote", "code-block"], // 引用 代码块
[{ header: 1 }, { header: 2 }], // 1、2 级标题
[{ list: "ordered" }, { list: "bullet" }], // 有序、无序列表
[{ script: "sub" }, { script: "super" }], // 上标/下标
[{ indent: "-1" }, { indent: "+1" }], // 缩进
// [{'direction': 'rtl'}], // 文本方向
[{ size: ["small", false, "large", "huge"] }], // 字体大小
[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
[{ font: [] }], // 字体种类
[{ align: [] }], // 对齐方式
["clean"], // 清除文本格式
["image"], // 链接、图片、视频
]
export default {
components: { quillEditor, Tinymce},
props: {
id: Number,
type: String
},
mounted() {
this.onload()
},
data() {
return {
policyFileUrl: '',
putFile,
imageUrl: '',
ruleForm: {
content: null,
},
form: {
note: ''
},
description:'',
formOption: {
// labelWidth:120,
column: [
{
"label": "服务时间",
"span": 24,
labelWidth: 100,
"prop": "createTime",
"rules": [
{
"required": true,
"message": "请输入服务时间"
}
]
},
{
"label": "服务发起人",
"span": 24,
labelWidth: 100,
"prop": "fromName",
"rules": [
{
"required": true,
"message": "请输入服务发起人"
}
]
},
{
"label": "服务对象",
"span": 24,
labelWidth: 100,
"prop": "toName",
"rules": [
{
"required": true,
"message": "请输入服务对象"
}
]
},
{
"label": "服务主题",
"span": 24,
labelWidth: 100,
"prop": "serveTheme",
"rules": [
{
"required": true,
"message": "请输入服务主题"
}
]
},
{
"label": "服务内容",
"span": 24,
labelWidth: 100,
"prop": "serveContent",
"rules": [
{
"required": true,
"message": "请输入服务内容"
}
]
},
{
"label": "备注1",
"span": 24,
labelWidth: 100,
"prop": "bak1",
"rules": [
{
"required": true,
"message": "请输入备注1"
}
]
},
{
label: "政策文件地址",
prop: "policyFileUrl",
span: 24,
labelWidth: 120,
hide: true,
slot: true,
formslot: true,
showWordLimit: true,
</avue-form>
},
]
</el-col>
<el-col :span="12">
<Tinymce v-model="form.note" ref="tinymce" style="height: 100%;"></Tinymce>
</el-col>
</el-row>
</basic-container>
</template>
<script>
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import {quillEditor} from "vue-quill-editor";
import {addNews, getNewsDetail, editNews} from "@/api/manage/news"
import {putFile} from "@/api/resource/oss";
import Tinymce from "@/components/Tinymce";
import {getClassifyDic} from '@/api/help/article/classify'
const toolbarItems = [
["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线
["blockquote", "code-block"], // 引用 代码块
[{header: 1}, {header: 2}], // 1、2 级标题
[{list: "ordered"}, {list: "bullet"}], // 有序、无序列表
[{script: "sub"}, {script: "super"}], // 上标/下标
[{indent: "-1"}, {indent: "+1"}], // 缩进
// [{'direction': 'rtl'}], // 文本方向
[{size: ["small", false, "large", "huge"]}], // 字体大小
[{header: [1, 2, 3, 4, 5, 6, false]}], // 标题
[{color: []}, {background: []}], // 字体颜色、字体背景颜色
[{font: []}], // 字体种类
[{align: []}], // 对齐方式
["clean"], // 清除文本格式
["image"], // 链接、图片、视频
]
export default {
components: {quillEditor, Tinymce},
props: {
id: Number,
type: String
},
mounted() {
this.onload()
},
data() {
return {
policyFileUrl: '',
putFile,
imageUrl: '',
ruleForm: {
content: null,
},
form: {
note: ''
},
description: '',
formOption: {
// labelWidth:120,
column: [
{
"label": "服务时间",
"span": 24,
labelWidth: 100,
"prop": "createTime",
"rules": [
{
"required": true,
"message": "请输入服务时间"
}
]
},
{
"label": "服务发起人",
"span": 24,
labelWidth: 100,
"prop": "fromName",
"rules": [
{
"required": true,
"message": "请输入服务发起人"
}
]
},
{
"label": "服务对象",
"span": 24,
labelWidth: 100,
"prop": "toName",
"rules": [
{
"required": true,
"message": "请输入服务对象"
}
]
},
{
"label": "服务主题",
"span": 24,
labelWidth: 100,
"prop": "serveTheme",
"rules": [
{
"required": true,
"message": "请输入服务主题"
}
]
},
{
"label": "服务内容",
"span": 24,
labelWidth: 100,
"prop": "serveContent",
"rules": [
{
"required": true,
"message": "请输入服务内容"
}
]
},
{
"label": "备注1",
"span": 24,
labelWidth: 100,
"prop": "bak1",
"rules": [
{
"required": true,
"message": "请输入备注1"
}
]
},
{
label: "政策文件地址",
prop: "policyFileUrl",
span: 24,
labelWidth: 120,
hide: true,
slot: true,
formslot: true,
showWordLimit: true,
},
editorOption: {
modules: {
toolbar: {
container: toolbarItems,
handlers: {
'image': function (value) {
if (value) {
document.querySelector('.avatar-uploader input').click()
} else {
this.quill.format('image', false);
}
}
]
},
editorOption: {
modules: {
toolbar: {
container: toolbarItems,
handlers: {
'image': function (value) {
if (value) {
document.querySelector('.avatar-uploader input').click()
} else {
this.quill.format('image', false);
}
},//工具菜单栏配置
},
placeholder: "请在这里编写文章内容", //提示
readyOnly: false, //是否只读
theme: "snow", //主题 snow/bubble
syntax: true, //语法检测
},
};
},
methods: {
// 值发生变化
onEditorChange(editor) {
this.content = editor.html;
}
}
},//工具菜单栏配置
},
handleSubmit(form, done) {
// this.form['note'] = this.$refs.tinymce.getContent()
if(this.form.note.length>64*512){
this.$message.error('文章内容不能超过64KB');
done()
}
else{
if (this.type == 'add') {
addNews(
this.form.articleTitle,
this.form.headPic,
this.form.articleSrc,
this.form.articleSrcUrl,
this.form.author,
this.form.description,
this.form.note,
this.form.type
).then(() => {
this.$message.success('添加成功');
this.$router.go(-1);
})
}
else if (this.type == 'edit') {
editNews(
this.id,
this.form.articleTitle,
this.form.headPic,
this.form.articleSrc,
this.form.articleSrcUrl,
this.form.author,
this.form.description,
this.form.note,
this.form.type
).then(() => {
this.$message.success('修改成功');
done()
})
}
}
},
/*上传图片*/
handleAvatarSuccess(res) {
let quill = this.$refs.QuillEditor.quill
let length = quill.getSelection().index;//获取光标所在位置
quill.insertEmbed(length, 'image', res.data.link)
quill.setSelection(length + 1)//光标后移一位
},
beforeAvatarUpload(file) {
const isJPG = ["image/png", "image/jpeg", "image/svg+xml", "image/gif"].indexOf(file.type) != -1;
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上传图片格式不正确');
}
if (!isLt2M) {
this.$message.error('上传图片大小不能超过 2MB!');
}
return isJPG && isLt2M;
},
onload() {
if (this.id && this.type == 'edit') {
getNewsDetail(this.id).then(res => {
this.form = res.data.data;
this.description=this.form.description;
})
}
},
placeholder: "请在这里编写文章内容", //提示
readyOnly: false, //是否只读
theme: "snow", //主题 snow/bubble
syntax: true, //语法检测
},
};
</script>
<style>
.avatar-uploader {
width: 0;
height: 0;
display: none;
}
.ql-editor {
height: 400px;
}
.policyFileUrlWrapper {
},
methods: {
// 值发生变化
onEditorChange(editor) {
this.content = editor.html;
},
handleSubmit(form, done) {
// this.form['note'] = this.$refs.tinymce.getContent()
if (this.form.note.length > 64 * 512) {
this.$message.error('文章内容不能超过64KB');
done()
} else {
if (this.type == 'add') {
addNews(
this.form.articleTitle,
this.form.headPic,
this.form.articleSrc,
this.form.articleSrcUrl,
this.form.author,
this.form.description,
this.form.note,
this.form.type
).then(() => {
this.$message.success('添加成功');
this.$router.go(-1);
})
} else if (this.type == 'edit') {
editNews(
this.id,
this.form.articleTitle,
this.form.headPic,
this.form.articleSrc,
this.form.articleSrcUrl,
this.form.author,
this.form.description,
this.form.note,
this.form.type
).then(() => {
this.$message.success('修改成功');
done()
})
}
}
},
/*上传图片*/
handleAvatarSuccess(res) {
let quill = this.$refs.QuillEditor.quill
let length = quill.getSelection().index;//获取光标所在位置
quill.insertEmbed(length, 'image', res.data.link)
quill.setSelection(length + 1)//光标后移一位
},
beforeAvatarUpload(file) {
const isJPG = ["image/png", "image/jpeg", "image/svg+xml", "image/gif"].indexOf(file.type) != -1;
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
this.$message.error('上传图片格式不正确');
}
if (!isLt2M) {
this.$message.error('上传图片大小不能超过 2MB!');
}
return isJPG && isLt2M;
},
onload() {
if (this.id && this.type == 'edit') {
getNewsDetail(this.id).then(res => {
this.form = res.data.data;
this.description = this.form.description;
})
}
},
},
};
</script>
<style>
.avatar-uploader {
width: 0;
height: 0;
display: none;
}
.ql-editor {
height: 400px;
}
.policyFileUrlWrapper {
position: relative;
}
@@ -286,5 +287,4 @@
z-index: 99;
}
</style>
</style>

View File

@@ -56,6 +56,9 @@
<template slot="jobDescription" slot-scope="{row}">
<TextTooltip :content="row.jobDescription" length="40"></TextTooltip>
</template>
<template slot="address" slot-scope="{row}">
<TextTooltip :content="row.address" length="40"></TextTooltip>
</template>
</avue-crud>
<CustomLoading :visible="rightLoading" size="largeXXL" loading-text="智能分析匹配中"></CustomLoading>
</div>
@@ -71,9 +74,6 @@
<script>
import {
getListAllByLabels,
getListGroupByLabels,
getServeAllPolicyList,
getListByids,
getSearchAll,
getSearchAllByUserId,
@@ -117,6 +117,19 @@ let leftUserOptions = {
}, {
label: '姓别',
prop: 'aac004',
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC004",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入性别",
trigger: "blur",
},
],
}, {
label: '身份证',
prop: 'idNumber',
@@ -124,12 +137,41 @@ let leftUserOptions = {
}, {
label: '手机号',
prop: 'telphone',
}, {
label: "求职意愿",
prop: "willingJob",
}, {
label: "民族",
prop: "aac005",
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC005",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入民族",
trigger: "blur",
},
],
}, {
label: "户口性质",
prop: "aac009",
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC009",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入户口性质",
trigger: "blur",
},
],
}, {
label: "户口所在地",
prop: "aac010",
@@ -137,6 +179,19 @@ let leftUserOptions = {
}, {
label: "文化程度",
prop: "aac011",
type: 'select',
dicUrl: "/api/jobslink-api/system/dict-biz/tadict?code=AAC011",
props: {
label: "dictValue",
value: "dictKey",
},
rules: [
{
required: true,
message: "请输入文化程度",
trigger: "blur",
},
],
}, {
label: '个人标签',
prop: 'labelsBase',
@@ -165,6 +220,10 @@ let rightPostOptions = {
}, {
label: '用工单位',
prop: 'companyName',
}, {
label: '详细地址',
prop: 'address',
slot: true,
}, {
label: '岗位描述',
prop: 'jobDescription',
@@ -383,14 +442,20 @@ export default {
},
async getRightSearchByUserId() {
const {currentPage, size} = this.rightPages
const ids = this.leftUserSelections.map(item => item.userId).join(',');
const idNumbers = this.leftUserSelections.map(item => item.idNumber).join(',');
const willingJobs = this.leftUserSelections.map(item => item.willingJob);
const createTime = Date.now() + 3000
this.rightLoading = true
let params = {
ids, current: currentPage,
idNumbers,
current: currentPage,
size,
}
let resData = await getSearchAllByUserId(params)
let paramsBody = {
willingJobs: willingJobs
}
console.log(params, paramsBody)
let resData = await getSearchAllByUserId(params, paramsBody)
if (resData.data.code === 200) {
const timed = createTime - Date.now() > 0 ? createTime - Date.now() : 0
setTimeout(() => {

File diff suppressed because it is too large Load Diff

View File

@@ -51,6 +51,7 @@ export default {
dicData: this.depTree,
props: {
label: "title",
value: 'value'
},
checkStrictly: true,
slot: true,

View File

@@ -271,6 +271,7 @@ export default {
dicData: this.depTree,
props: {
label: "title",
value: 'value'
},
checkStrictly: true,
span: 24,
@@ -371,6 +372,14 @@ export default {
],
span: 24,
},
{
label: "求职意愿",
prop: "willingJob",
span: 24,
rules: [
{required: true, message: "请输入求职意愿", trigger: "blur"},
],
},
{
label: "户口所在地",
prop: "aac010",

View File

@@ -51,6 +51,7 @@ export default {
dicData: this.depTree,
props: {
label: "title",
value: 'value'
},
checkStrictly: true,
slot: true,

View File

@@ -104,6 +104,14 @@
</el-button
>
</template>
<template slot-scope="{row}" slot="menu">
<el-button type="text"
icon="el-icon-document"
size="small"
@click="serveLog(row)"
>查看日志
</el-button>
</template>
</avue-crud>
<!--批量导入-->
@@ -118,6 +126,36 @@
</template>
</avue-form>
</el-dialog>
<!-- log-->
<el-drawer
title="服务日志"
size="80%"
:append-to-body="true"
:before-close="handleCloseLog"
:visible.sync="innerDrawerLog">
<!-- <div>
<span>姓名</span>
<span>身份证号</span>
</div> -->
<avue-crud
:data="logDataSource"
:option="logOption"
:page.sync="logPage"
@row-save="saveLog"
@row-update="saveUpdateLog"
@row-del="removeLog"
@size-change="logSizeChange"
@current-change="logCurrentChange"
>
<!-- <template slot="menuLeft">
<el-button @click="addNewLog" icon="el-icon-plus" type="primary" size="mini">添加</el-button>
</template>
<template slot="menu" slot-scope="{row}">
<el-button type="text" @click="editLogInfo(row.id)" icon="el-icon-edit" size="mini">修改</el-button>
<el-button type="text" @click="editLogInfo(row.id)" icon="el-icon-edit" size="mini">查看附件</el-button>
</template> -->
</avue-crud>
</el-drawer>
<!--/批量导入-->
<!--新建 编辑分组dialog-->
<add-groups ref="addGroups" @refresh="refresh" :treeData="treeData"></add-groups>
@@ -154,7 +192,13 @@ import ied from "@/views/util/import-error-dialog";
import {excelAccept} from "@/common/accept";
import TextTooltip from '@/components/text-tooltip'
import {exportList} from "@/api/workstation/post";
import {addServeLog, getMainServeUserLog, removeServeLog, updateServeLog} from "@/api/tenant/serve";
let page = {
pageSize: 10,
currentPage: 1,
total: 0,
}
export default {
filters: {
ellipsis(value) {
@@ -184,11 +228,11 @@ export default {
personTotal: 0,
treeData: [],
tenantId: "",
page: {
pageSize: 10,
currentPage: 1,
total: 0,
},
page: Object.assign({}, page),
logPage: Object.assign({}, page),
logDataSource: [],
innerDrawerLog: false,
selectUserServeLog: null,
tempWorkType: [],
worktypeDic: {},
arr: [],//////
@@ -203,7 +247,7 @@ export default {
components: {addGroups, transferGroups, Resume, ied, TextTooltip},
watch: {},
computed: {
...mapGetters(["permission"]),
...mapGetters(["permission", "userInfo"]),
permissionList() {
return {
addBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_add, false),
@@ -273,6 +317,7 @@ export default {
dicData: this.depTree,
props: {
label: "title",
value: 'value'
},
checkStrictly: true,
span: 24,
@@ -496,6 +541,7 @@ export default {
dicData: this.depTree,
props: {
label: "title",
value: 'value'
},
checkStrictly: true,
slot: true,
@@ -567,6 +613,45 @@ export default {
}
return rel;
},
logOption() {
return {
editBtn: true,
delBtn: true,
addBtn: true,
viewBtn: true,
border: true,
index: true,
indexLabel: "序号",
refreshBtn: false,
dialogType: "drawer",
addBtnText: "新增日志",
height: '100',
column: [{
label: '服务时间',
prop: 'createTime',
type: 'date',
format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-dd HH:mm:ss",
}, {
label: '服务发起人',
prop: 'fromName',
display: false,
}, {
label: '服务对象',
prop: 'toName',
display: false,
}, {
label: '服务主题',
prop: 'serveTheme'
}, {
label: '服务内容',
prop: 'serveContent'
}, {
label: '备注说明',
prop: 'bak1'
}]
}
}
},
created() {
this.initDept();
@@ -1029,6 +1114,95 @@ export default {
this.selectionList = [];
this.$refs.crud.toggleSelection();
},
async saveLog(row, index, done, loading) {
let params = {
...row,
serveId: this.selectUserServeLog.serveId,
serveUserId: this.selectUserServeLog.serveUserId,
talentsId: this.selectUserServeLog.id,
idNumber: this.selectUserServeLog.idNumber,
toName: this.selectUserServeLog.name,
fromName: this.userInfo.real_name
}
console.log(params)
let resData = await addServeLog(params)
done()
if (resData.data.code === 200) {
this.$message({
type: "success",
message: "添加成功!",
});
this.serveLog(this.selectUserServeLog)
}
},
async saveUpdateLog(row, index, done, loading) {
let params = {
id: row.id,
createTime: row.createTime,
fromName: row.fromName,
toName: row.toName,
serveTheme: row.serveTheme,
serveContent: row.serveContent,
bak1: row.bak1,
}
let resData = await updateServeLog(params)
done()
if (resData.data.code === 200) {
this.$message({
type: "success",
message: "修改成功!",
});
this.serveLog(this.selectUserServeLog)
}
},
removeLog(row, index, done, loading) {
this.$confirm("确定将选择数据删除?", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
return removeServeLog({ids: row.id});
})
.then(() => {
this.serveLog(this.selectUserServeLog)
this.$message({
type: "success",
message: "操作成功!",
});
});
},
handleCloseLog() {
this.innerDrawerLog = false
},
logSizeChange(pageSize) {
this.logPage.pageSize = pageSize;
this.serveLog(this.selectUserServeLog)
},
logCurrentChange(currentPage) {
this.logPage.currentPage = currentPage;
this.serveLog(this.selectUserServeLog)
},
serveLog(row) {
console.log('服务日志', row)
this.selectUserServeLog = row
getMainServeUserLog({
idNumber: row.id,
current: this.logPage.currentPage,
size: this.logPage.pageSize
}).then(res => {
let _this = this;
const {records, current, size, total} = res.data.data
console.log(records, total)
_this.logDataSource = records
_this.innerDrawerLog = true
_this.logPage = {
pageSize: size,
currentPage: current,
total: total,
}
})
},
/*加载人才列表 */
onLoad(page, params = {}) {
const paramsd = {

View File

@@ -0,0 +1,138 @@
<template>
<el-row>
<basic-container>
<avue-crud
:option="option"
:table-loading="loading"
:data="dataSource"
:page.sync="page"
ref="crud"
v-model="crudValues"
:permission="permissionList"
@search-change="searchChange"
@search-reset="searchReset"
@current-change="currentChange"
@size-change="sizeChange"
class="customPage"
>
</avue-crud>
</basic-container>
</el-row>
</template>
<script>
import {mapGetters} from "vuex";
import {getList} from "@/api/tenant/personnelserve";
const page = {
pageSize: 10,
currentPage: 1,
total: 0,
}
const baseOptions = {
size: 'medium',
dateBtn: false,
addBtn: false,
editBtn: false,
delBtn: false,
height: "auto",
reserveSelection: false,
border: true,
columnBtn: false,
refreshBtn: false,
menu: true,
tip: false,
selection: false,
align: 'center',
searchMenuSpan: 6,
searchLabelWidth: 60,
}
export default {
data() {
return {
loading: false,
dataSource: [],
crudValues: {},
page: Object.assign({}, page)
}
},
computed: {
...mapGetters(["permission"]),
permissionList() {
return {
addBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_add, false),
viewBtn: true,
delBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_del, false),
editBtn: this.vaildData(this.permission.tenant_main_talents_latent_index_edit, false),
};
},
option() {
return {
...baseOptions,
column: [
{
label: "姓名",
prop: "name",
search: true,
searchSpan: 6,
},
{
label: "身份证",
prop: "idNumber",
search: true,
searchSpan: 6,
},
{
label: "手机号",
prop: "phone",
},
]
}
}
},
methods: {
searchChange(params, done) {
this.query = params;
this.page.currentPage = 1;
this.onLoad(this.page, params);
done();
},
searchReset() {
this.query = {};
this.onLoad(this.page);
},
currentChange(currentPage) {
this.page.currentPage = currentPage;
this.onLoad(this.page, this.query);
},
sizeChange(pageSize) {
this.page.pageSize = pageSize;
this.onLoad(this.page, this.query);
},
onLoad(page, params = {}) {
const {releaseTimeRange} = params;
let values = {
...params,
};
this.loading = true;
getList(
page.currentPage,
page.pageSize,
Object.assign(values, this.query)
).then((res) => {
const {total, records, page} = res.data.data
this.page.total = total;
// this.page.currentPage = page
this.dataSource = records;
this.loading = false;
});
},
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@@ -38,17 +38,34 @@
</template>
<template slot-scope="{ disabled }" slot="address">
<select-map
<!-- <select-map-->
<!-- ref="selectMap"-->
<!-- @addAddress="addAddress"-->
<!-- @addressDel="addressDel"-->
<!-- @input="inputAddress"-->
<!-- :isCanEdit="!disabled"-->
<!-- :lng="obj.lon"-->
<!-- :lat="obj.lat"-->
<!-- :address="obj.address"-->
<!-- :type="type"-->
<!-- ></select-map>-->
<super-map-view
ref="selectMap"
@addAddress="addAddress"
@addressDel="addressDel"
@input="inputAddress"
:isCanEdit="!disabled"
:lng="obj.lon"
:lat="obj.lat"
:longitude="obj.lon"
:latitude="obj.lat"
:address="obj.address"
:type="type"
></select-map>
:open="true"
:zoom="10"
:min-zoom="10"
:max-zoom="20"
:flag-tip="false"
placeholder="请输入详细地址"
></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">
@@ -113,7 +130,6 @@
import {add, detail, update, tradeListAdd, workListAdd, getMounthDays, getDictionary} from "@/api/tenant/mission";
import {getTrade, getWork, getWorkTypes} from "@/api/tenant/common";
import SkillSelect from "../Dialog/Skill";
import SelectMap from "@/components/map/selectLocation";
import {isvalidatemobile} from "@/util/validate";
import {mapGetters} from "vuex";
import {
@@ -121,6 +137,7 @@ import {
wageOptionsWithNoMonth,
educationState,
} from "@/common/dic";
import {dateFormat} from "@/util/date";
const validateTel = (rule, value, callback) => {
if (isvalidatemobile(value)[0]) {
@@ -160,6 +177,8 @@ export default {
tradeId: null,
tradeNames: null,
userNature: "灵活用工",
lat: 31.126855,
lon: 104.397894
},
loading: false,
drawer: false,
@@ -176,7 +195,6 @@ export default {
},
components: {
SkillSelect,
SelectMap,
},
created() {
this.$store.dispatch("InitArea");
@@ -337,8 +355,9 @@ export default {
valueFormat: "yyyy-MM-dd 00:00:00",
pickerOptions: {
disabledDate(time) {
const oneDay = 1000 * 60 * 60 * 24
return !(
time.getTime() > Date.now() &&
time.getTime() + oneDay > Date.now() &&
(!self.endTime ||
(time.getTime() < self.endTime &&
time.getTime() > self.endTime - 2678400000)) &&
@@ -626,7 +645,7 @@ export default {
dicUrl: "/api/jobslink-api/system/dict-biz/dictionary?code=company_nature",
props: {
label: "dictValue",
value: "dictkey",
value: "dictKey",
},
rules: [
{
@@ -926,7 +945,8 @@ export default {
education: 7,
experienceDesc: "不限经验",
userNature: "灵活用工",
lat: 31.126855,
lon: 104.397894
};
},
/*地图*/

View File

@@ -1,8 +1,9 @@
<template>
<div>
<avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="obj" @row-del="rowDel"
@row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen" :page.sync="page"
@current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
@row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen" :page.sync="page"
@current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"
@on-load="onLoad">
<!--自定义列-->
<template slot="missionTitle" slot-scope="{ row }">
<el-tooltip effect="dark" :content="row.missionTitle" placement="top">
@@ -44,15 +45,18 @@
v-show="vaildData(permission.tenant_mission_view,false)"
>查看</el-button>-->
<el-button icon="el-icon-check" :size="size" :type="type" @click="rowCopy(row, 'copy')"
v-show="vaildData(permission.tenant_mission_add, false)">复制</el-button>
v-show="vaildData(permission.tenant_mission_add, false)">复制
</el-button>
<el-button icon="el-icon-delete" :size="size" :type="type" @click="$refs.crud.rowDel(row)"
v-show="vaildData(permission.tenant_mission_delete, false)">删除</el-button>
v-show="vaildData(permission.tenant_mission_delete, false)">删除
</el-button>
</div>
<!--/自定义操作栏-->
<!--自定义按钮-->
<template slot="menuLeft">
<el-button type="warning" plain icon="el-icon-plus" size="small" @click="rowCopy('', 'add')"
v-show="vaildData(permission.tenant_mission_add, false)">发布任务</el-button>
v-show="vaildData(permission.tenant_mission_add, false)">发布任务
</el-button>
</template>
<!--/自定义按钮-->
</avue-crud>
@@ -64,13 +68,12 @@
</template>
<script>
import { getExpiredList, remove, detail } from "@/api/tenant/mission";
import {getExpiredList, remove, detail} from "@/api/tenant/mission";
import CopyMission from "../Dialog/CopyMission";
import SkillSelect from "../Dialog/Skill";
import missionView from "./missionView.vue";
import SelectMap from "@/components/map/selectLocation";
import { mapGetters } from "vuex";
import { dateFormat } from "@/util/date";
import {mapGetters} from "vuex";
import {dateFormat} from "@/util/date";
import saveButton from "./saveButton";
export default {
@@ -135,11 +138,11 @@ export default {
components: {
CopyMission,
SkillSelect,
SelectMap,
missionView,
saveButton,
},
created() { },
created() {
},
computed: {
...mapGetters(["permission"]),
option() {
@@ -240,8 +243,8 @@ export default {
const h = this.$createElement;
this.$confirm(
h("div", null, [
h("p", { style: "font-size: 16px" }, "您确定要删除此任务吗? "),
h("p", { style: "color: red" }, "一旦删除则无法找回"),
h("p", {style: "font-size: 16px"}, "您确定要删除此任务吗? "),
h("p", {style: "color: red"}, "一旦删除则无法找回"),
]),
{
type: "warning",

View File

@@ -25,17 +25,17 @@
</el-tooltip>
</template>
<template slot="takeOnCount" slot-scope="{ row }">
<div style="color: #409eff;cursor: pointer;" @click="employmentNum(row)">
<div style="color: #409eff;cursor: pointer;" @click="employmentNum(row)">
<b>{{ row.takeOnCount }}</b>
</div>
</template>
<!-- 开始日期 -->
<template slot="stime" slot-scope="{row}">
<span>{{format(row.stime)}}</span>
<span>{{ format(row.stime) }}</span>
</template>
<!-- 完成日期 -->
<template slot="etime" slot-scope="{row}">
<span>{{format(row.etime)}}</span>
<span>{{ format(row.etime) }}</span>
</template>
<template slot="toPayEnd" slot-scope="{ row }">
<div v-if="row.toPayEnd < 0" style="color: #f56c6c">
@@ -70,7 +70,8 @@
size="small"
@click="rowCopy('', 'add')"
v-show="vaildData(permission.tenant_mission_add, false)"
>发布任务</save-button>
>发布任务
</save-button>
</template>
<!--/自定义按钮-->
<!--自定义操作栏-->
@@ -80,7 +81,8 @@
:type="type"
@click="appraise(row)"
v-show="vaildData(permission.tenant_mission_appraise,false)"
>评价</el-button>
>评价
</el-button>
<!-- <el-button
icon="el-icon-view"
:size="size"
@@ -94,7 +96,8 @@
:type="type"
@click="rowCopy(row, 'copy')"
v-show="vaildData(permission.tenant_mission_add, false)"
>复制</el-button>
>复制
</el-button>
</div>
<!--/自定义操作栏-->
</avue-crud>
@@ -115,21 +118,20 @@
</template>
<script>
import { getList, detail, getWagePerson } from "@/api/tenant/mission";
import {getList, detail, getWagePerson} from "@/api/tenant/mission";
import CopyMission from "../Dialog/CopyMission";
import Appraise from "../Dialog/Appraise";
import Employ from "../Dialog/Employ";
import SkillSelect from "../Dialog/Skill";
import missionView from "./missionView.vue";
import employmentNum from "../Dialog/EmployNumber";
import SelectMap from "@/components/map/selectLocation";
import { mapGetters } from "vuex";
import { dateFormat } from "@/util/date";
import {mapGetters} from "vuex";
import {dateFormat} from "@/util/date";
import saveButton from "./saveButton";
export default {
filters: {
ellipsis (value) {
ellipsis(value) {
if (!value) return "";
if (value.length > 15) {
return value.slice(0, 14) + "...";
@@ -137,7 +139,7 @@ export default {
return value;
},
},
data () {
data() {
return {
viewDrawer: false,
view: {},
@@ -160,15 +162,15 @@ export default {
Appraise,
Employ,
SkillSelect,
SelectMap,
missionView,
saveButton,
employmentNum
},
created () { },
created() {
},
computed: {
...mapGetters(["permission"]),
option () {
option() {
return {
height: "auto",
calcHeight: 40,
@@ -307,46 +309,46 @@ export default {
},
watch: {},
methods: {
format (date) {
format(date) {
if (date) {
return dateFormat(new Date(date), "yyyy/MM/dd");
}
},
// 录用人数
employmentNum(row){
employmentNum(row) {
this.$refs.employmentNumber.openDialog(row, 2);//查看已录用人员
},
/*查看*/
rowView (row) {
rowView(row) {
detail(row.missionNo).then((res) => {
this.viewDrawer = true;
this.view = res;
});
},
/*打开录用人员*/
employ (row, state) {
employ(row, state) {
this.$refs.employ.openDialog(row, state);
},
/*打开复制*/
rowCopy (row, type) {
rowCopy(row, type) {
this.$refs.copy.onLoad(row, type);
},
/*打开评价*/
appraise (row) {
appraise(row) {
this.$refs.appraise.openDialog(row);
},
currentChange (currentPage) {
currentChange(currentPage) {
this.page.currentPage = currentPage;
},
sizeChange (pageSize) {
sizeChange(pageSize) {
this.page.pageSize = pageSize;
},
/*刷新本页 带搜索参数*/
refreshChange () {
refreshChange() {
this.onLoad(this.page, this.query);
},
/*加载数据*/
onLoad (page, params = {}) {
onLoad(page, params = {}) {
this.loading = true;
getList(
page.currentPage,
@@ -368,7 +370,7 @@ export default {
});
},
/*返回首页*/
backIndex () {
backIndex() {
this.$emit("refresh");
},
},

View File

@@ -26,11 +26,11 @@
</template>
<!-- 开始日期 -->
<template slot="stime" slot-scope="{row}">
<span>{{format(row.stime)}}</span>
<span>{{ format(row.stime) }}</span>
</template>
<!-- 完成日期 -->
<template slot="etime" slot-scope="{row}">
<span>{{format(row.etime)}}</span>
<span>{{ format(row.etime) }}</span>
</template>
<template slot="takeOnCount" slot-scope="{ row }">
<div style="color: #409eff; cursor: pointer;" @click="employmentNum(row)">
@@ -59,7 +59,8 @@
size="small"
@click="rowCopy('', 'add')"
v-show="vaildData(permission.tenant_mission_add, false)"
>发布任务</save-button
>发布任务
</save-button
>
</template>
<!--/自定义按钮-->
@@ -70,7 +71,8 @@
:type="type"
@click="rowComplete(row)"
v-show="vaildData(permission.tenant_mission_finish, false)"
>完成任务</save-button
>完成任务
</save-button
>
<el-button
icon="el-icon-view"
@@ -78,7 +80,8 @@
:type="type"
@click="rowView(row)"
v-show="vaildData(permission.tenant_mission_view, false)"
>查看</el-button
>查看
</el-button
>
<save-button
icon="el-icon-check"
@@ -86,7 +89,8 @@
:type="type"
@click="rowCopy(row, 'copy')"
v-show="vaildData(permission.tenant_mission_add, false)"
>复制</save-button
>复制
</save-button
>
</div>
<!--/自定义操作栏-->
@@ -97,7 +101,7 @@
<!--录用人员dialog-->
<Employ ref="employ" :status="status" v-show="false"></Employ>
<!-- 录用人数 -->
<employment-num
<employment-num
ref="employmentNum"
:status="1"
v-show="false"
@@ -110,21 +114,18 @@
</template>
<script>
import { getList, complete, detail } from "@/api/tenant/mission";
import {getList, complete, detail} from "@/api/tenant/mission";
import CopyMission from "../Dialog/CopyMission";
import SkillSelect from "../Dialog/Skill";
import Employ from "../Dialog/Employ";
import missionView from "./missionView.vue";
import SelectMap from "@/components/map/selectLocation";
import employmentNum from "../Dialog/EmployNumber";
import { mapGetters } from "vuex";
import { dateFormat } from "@/util/date";
import {mapGetters} from "vuex";
import {dateFormat} from "@/util/date";
import saveButton from "./saveButton";
export default {
comments: {
},
comments: {},
filters: {
ellipsis(value) {
if (!value) return "";
@@ -156,12 +157,12 @@ export default {
CopyMission,
SkillSelect,
Employ,
SelectMap,
missionView,
saveButton,
employmentNum
},
created() {},
created() {
},
computed: {
...mapGetters(["permission"]),
option() {
@@ -300,7 +301,7 @@ export default {
}
},
// 录用人数
employmentNum(row){
employmentNum(row) {
this.$refs.employmentNum.openDialog(row, 2);//查看已录用人员
},
/*查看*/
@@ -323,7 +324,7 @@ export default {
const h = this.$createElement;
this.$confirm(
h("div", null, [
h("p", { style: "font-size: 16px" }, "您确定此任务已经完成吗? "),
h("p", {style: "font-size: 16px"}, "您确定此任务已经完成吗? "),
]),
{
type: "warning",

View File

@@ -113,7 +113,6 @@ import Recommend from "../Dialog/Recommend";
import Contrast from "../Dialog/Contrast"
import SkillSelect from "../Dialog/Skill";
import missionView from "./missionView.vue";
import SelectMap from "@/components/map/selectLocation";
import {isExcel} from "@/util/validate";
import {excelAccept} from "@/common/accept";
import {mapGetters} from "vuex";
@@ -132,7 +131,6 @@ export default {
Employ,
Recommend,
SkillSelect,
SelectMap,
missionView,
saveButton,
Contrast,

View File

@@ -56,6 +56,14 @@
placeholder="请选择 工作地址"
></jl-cityLabel-cascader>
</template>
<template slot="cityIdFrom" slot-scope="{ disabled }">
<jl-cityLabel-cascader
:disabled="disabled"
filterable
v-model="obj.cityId"
placeholder="请选择 工作地址"
></jl-cityLabel-cascader>
</template>
<template slot-scope="{ row }" slot="wage">
<el-input placeholder="请输入工资" type="number" v-model="obj.wage" class="input-with-select">
<el-select v-model="obj.wageUnitCategory" slot="append" placeholder="请选择" @change="getMaxAndMin">
@@ -76,17 +84,34 @@
</template>
<template slot-scope="{ disabled }" slot="address">
<select-map
<!-- <select-map-->
<!-- ref="selectMap"-->
<!-- @addAddress="addAddress"-->
<!-- @addressDel="addressDel"-->
<!-- @input="inputAddress"-->
<!-- :isCanEdit="!disabled"-->
<!-- :lng="obj.lon"-->
<!-- :lat="obj.lat"-->
<!-- :address="obj.address"-->
<!-- :type="type"-->
<!-- ></select-map>-->
<super-map-view
ref="selectMap"
@addAddress="addAddress"
@addressDel="addressDel"
@input="inputAddress"
:isCanEdit="!disabled"
:lng="obj.lon"
:lat="obj.lat"
:longitude="obj.lon"
:latitude="obj.lat"
:address="obj.address"
:type="type"
></select-map>
:open="true"
:zoom="10"
:min-zoom="10"
:max-zoom="20"
:flag-tip="false"
placeholder="请输入详细地址"
></super-map-view>
</template>
<!-- 行业类型 -->
<!-- <template slot="tradeId">
@@ -151,7 +176,6 @@
import {add, detail, update, tradeListAdd, getMounthDays, getDictionary} from "@/api/tenant/postzp";
import {getTrade, getWork, getSkillList, getWorkTypes} from "@/api/tenant/common";
import SkillSelect from "../Dialog/Skill";
import SelectMap from "@/components/map/selectLocation";
import {isvalidatemobile} from "@/util/validate";
import {mapGetters} from "vuex";
import {
@@ -200,6 +224,8 @@ export default {
tradeId: null,
tradeNames: null,
userNature: "灵活用工",
lat: 31.126855,
lon: 104.397894
},
loading: false,
drawer: false,
@@ -217,7 +243,6 @@ export default {
},
components: {
SkillSelect,
SelectMap,
},
created() {
this.$store.dispatch("InitArea");
@@ -449,8 +474,9 @@ export default {
valueFormat: "yyyy-MM-dd 00:00:00",
pickerOptions: {
disabledDate(time) {
const oneDay = 1000 * 60 * 60 * 24
return !(
time.getTime() > Date.now() &&
time.getTime() + oneDay > Date.now() &&
(!self.endTime ||
(time.getTime() < self.endTime &&
time.getTime() > self.endTime - 2678400000)) &&
@@ -748,7 +774,7 @@ export default {
dicUrl: "/api/jobslink-api/system/dict-biz/dictionary?code=company_nature",
props: {
label: "dictValue",
value: "dictkey",
value: "dictKey",
},
rules: [
{
@@ -793,7 +819,7 @@ export default {
},
{
min: 1,
max: 5,
max: 8,
message: "长度在 1 到 5 个字",
trigger: "blur",
},
@@ -1059,7 +1085,8 @@ export default {
education: 7,
experienceDesc: "不限经验",
userNature: "灵活用工",
lat: 31.126855,
lon: 104.397894
};
},
/*地图*/
@@ -1152,7 +1179,7 @@ export default {
callName: row.callName,
callTel: row.callTel,
callNumber: row.callNumber,
cityId: row.cityId,
cityId: row.cityId.replace(/\s+/g, ""),
address: row.address,
lat: row.lat,
lon: row.lon,
@@ -1189,6 +1216,7 @@ export default {
tradeNames: row.tradeNames,
worktypeIds: row.worktypeIds,
worktypeNames: row.worktypeNames,
jobCompanyScale: row.jobCompanyScale,
skillIds: row.workSkills[1],
skillNames: row.skillNames,
jobDescription: row.jobDescription,
@@ -1201,7 +1229,7 @@ export default {
callName: row.callName,
callTel: row.callTel,
callNumber: row.callNumber,
cityId: row.cityId,
cityId: row.cityId.replace(/\s+/g, ""),
address: row.address,
lat: row.lat,
lon: row.lon,

View File

@@ -26,11 +26,11 @@
</template>
<!-- 开始日期 -->
<template slot="stime" slot-scope="{row}">
<span>{{format(row.stime)}}</span>
<span>{{ format(row.stime) }}</span>
</template>
<!-- 完成日期 -->
<template slot="etime" slot-scope="{row}">
<span>{{format(row.etime)}}</span>
<span>{{ format(row.etime) }}</span>
</template>
<template slot="signUpCount" slot-scope="{ row }">
<div style="color: #409eff">
@@ -62,14 +62,16 @@
:type="type"
@click="rowCopy(row, 'copy')"
v-show="vaildData(permission.tenant_mission_add, false)"
>复制</el-button>
>复制
</el-button>
<el-button
icon="el-icon-delete"
:size="size"
:type="type"
@click="$refs.crud.rowDel(row)"
v-show="vaildData(permission.tenant_mission_delete, false)"
>删除</el-button>
>删除
</el-button>
</div>
<!--/自定义操作栏-->
<!--自定义按钮-->
@@ -81,7 +83,8 @@
size="small"
@click="rowCopy('', 'add')"
v-show="vaildData(permission.tenant_mission_add, false)"
>发布岗位</el-button>
>发布岗位
</el-button>
</template>
<!--/自定义按钮-->
</avue-crud>
@@ -93,19 +96,18 @@
</template>
<script>
import { getExpiredList, remove, detail } from "@/api/tenant/postzp";
import {getExpiredList, remove, detail} from "@/api/tenant/postzp";
import CopyMission from "../Dialog/CopyMission";
import SkillSelect from "../Dialog/Skill";
import missionView from "./missionView.vue";
import SelectMap from "@/components/map/selectLocation";
import { mapGetters } from "vuex";
import { dateFormat } from "@/util/date";
import {mapGetters} from "vuex";
import {dateFormat} from "@/util/date";
import saveButton from "./saveButton";
export default {
comments: {},
filters: {
ellipsis (value) {
ellipsis(value) {
if (!value) return "";
if (value.length > 15) {
return value.slice(0, 14) + "...";
@@ -113,7 +115,7 @@ export default {
return value;
},
},
data () {
data() {
return {
viewDrawer: false,
view: {},
@@ -164,14 +166,14 @@ export default {
components: {
CopyMission,
SkillSelect,
SelectMap,
missionView,
saveButton,
},
created () { },
created() {
},
computed: {
...mapGetters(["permission"]),
option () {
option() {
return {
height: "auto",
calcHeight: 40,
@@ -210,14 +212,14 @@ export default {
prop: "stime",
display: false,
width: 130,
slot:true
slot: true
},
{
label: "完成时间",
prop: "etime",
display: false,
width: 130,
slot:true
slot: true
},
// {
// label: "岗位时间",
@@ -248,32 +250,32 @@ export default {
},
},
methods: {
format (date) {
format(date) {
if (date) {
return dateFormat(new Date(date), "yyyy/MM/dd");
}
},
/*查看*/
rowView (row) {
rowView(row) {
detail(row.missionNo).then((res) => {
this.viewDrawer = true;
this.view = res;
});
},
/*打开新建 复制*/
rowCopy (row, type) {
rowCopy(row, type) {
this.$refs.copy.onLoad(row, type);
this.$nextTick(()=>{
this.$nextTick(() => {
this.$refs.copy.resetFields();//等弹窗里的form表单的dom渲染完在执行this.$refs.staffForm.resetFields(),去除验证
})
},
/*删除岗位*/
rowDel (row) {
rowDel(row) {
const h = this.$createElement;
this.$confirm(
h("div", null, [
h("p", { style: "font-size: 16px" }, "您确定要删除此岗位吗? "),
h("p", { style: "color: red" }, "一旦删除则无法找回"),
h("p", {style: "font-size: 16px"}, "您确定要删除此岗位吗? "),
h("p", {style: "color: red"}, "一旦删除则无法找回"),
]),
{
type: "warning",
@@ -321,18 +323,18 @@ export default {
// });
});
},
currentChange (currentPage) {
currentChange(currentPage) {
this.page.currentPage = currentPage;
},
sizeChange (pageSize) {
sizeChange(pageSize) {
this.page.pageSize = pageSize;
},
/*刷新本页 带搜索参数*/
refreshChange () {
refreshChange() {
this.onLoad(this.page, this.query);
},
/*加载数据*/
onLoad (page, params = {}) {
onLoad(page, params = {}) {
this.loading = true;
getExpiredList(
page.currentPage,
@@ -346,7 +348,7 @@ export default {
});
},
/*返回首页*/
backIndex () {
backIndex() {
this.$emit("refresh");
},
},

View File

@@ -25,17 +25,17 @@
</el-tooltip>
</template>
<template slot="takeOnCount" slot-scope="{ row }">
<div style="color: #409eff;cursor: pointer;" @click="employmentNum(row)">
<div style="color: #409eff;cursor: pointer;" @click="employmentNum(row)">
<b>{{ row.takeOnCount }}</b>
</div>
</template>
<!-- 开始日期 -->
<template slot="stime" slot-scope="{row}">
<span>{{format(row.stime)}}</span>
<span>{{ format(row.stime) }}</span>
</template>
<!-- 完成日期 -->
<template slot="etime" slot-scope="{row}">
<span>{{format(row.etime)}}</span>
<span>{{ format(row.etime) }}</span>
</template>
<template slot="toPayEnd" slot-scope="{ row }">
<div v-if="row.toPayEnd < 0" style="color: #f56c6c">
@@ -70,7 +70,8 @@
size="small"
@click="rowCopy('', 'add')"
v-show="vaildData(permission.tenant_mission_add, false)"
>发布岗位</save-button>
>发布岗位
</save-button>
</template>
<!--/自定义按钮-->
<!--自定义操作栏-->
@@ -80,7 +81,8 @@
:type="type"
@click="appraise(row)"
v-show="vaildData(permission.tenant_mission_appraise,false)"
>评价</el-button>
>评价
</el-button>
<!-- <el-button
icon="el-icon-view"
:size="size"
@@ -94,7 +96,8 @@
:type="type"
@click="rowCopy(row, 'copy')"
v-show="vaildData(permission.tenant_mission_add, false)"
>复制</el-button>
>复制
</el-button>
</div>
<!--/自定义操作栏-->
</avue-crud>
@@ -115,21 +118,20 @@
</template>
<script>
import { getList, detail, getWagePerson } from "@/api/tenant/postzp";
import {getList, detail, getWagePerson} from "@/api/tenant/postzp";
import CopyMission from "../Dialog/CopyMission";
import Appraise from "../Dialog/Appraise";
import Employ from "../Dialog/Employ";
import SkillSelect from "../Dialog/Skill";
import missionView from "./missionView.vue";
import employmentNum from "../Dialog/EmployNumber";
import SelectMap from "@/components/map/selectLocation";
import { mapGetters } from "vuex";
import { dateFormat } from "@/util/date";
import {mapGetters} from "vuex";
import {dateFormat} from "@/util/date";
import saveButton from "./saveButton";
export default {
filters: {
ellipsis (value) {
ellipsis(value) {
if (!value) return "";
if (value.length > 15) {
return value.slice(0, 14) + "...";
@@ -137,7 +139,7 @@ export default {
return value;
},
},
data () {
data() {
return {
viewDrawer: false,
view: {},
@@ -160,15 +162,15 @@ export default {
Appraise,
Employ,
SkillSelect,
SelectMap,
missionView,
saveButton,
employmentNum
},
created () { },
created() {
},
computed: {
...mapGetters(["permission"]),
option () {
option() {
return {
height: "auto",
calcHeight: 40,
@@ -215,14 +217,14 @@ export default {
prop: "stime",
display: false,
width: 130,
slot:true
slot: true
},
{
label: "完成日期",
prop: "etime",
display: false,
width: 130,
slot:true
slot: true
},
{
label: "录用人数",
@@ -259,46 +261,46 @@ export default {
},
watch: {},
methods: {
format (date) {
format(date) {
if (date) {
return dateFormat(new Date(date), "yyyy/MM/dd");
}
},
// 录用人数
employmentNum(row){
employmentNum(row) {
this.$refs.employmentNumber.openDialog(row, 2);//查看已录用人员
},
/*查看*/
rowView (row) {
rowView(row) {
detail(row.id).then((res) => {
this.viewDrawer = true;
this.view = res;
});
},
/*打开录用人员*/
employ (row, state) {
employ(row, state) {
this.$refs.employ.openDialog(row, state);
},
/*打开复制*/
rowCopy (row, type) {
rowCopy(row, type) {
this.$refs.copy.onLoad(row, type);
},
/*打开评价*/
appraise (row) {
appraise(row) {
this.$refs.appraise.openDialog(row);
},
currentChange (currentPage) {
currentChange(currentPage) {
this.page.currentPage = currentPage;
},
sizeChange (pageSize) {
sizeChange(pageSize) {
this.page.pageSize = pageSize;
},
/*刷新本页 带搜索参数*/
refreshChange () {
refreshChange() {
this.onLoad(this.page, this.query);
},
/*加载数据*/
onLoad (page, params = {}) {
onLoad(page, params = {}) {
this.loading = true;
getList(
page.currentPage,
@@ -320,7 +322,7 @@ export default {
});
},
/*返回首页*/
backIndex () {
backIndex() {
this.$emit("refresh");
},
},
@@ -331,4 +333,4 @@ export default {
.el-form-item {
margin-bottom: 0px;
}
</style>
</style>

View File

@@ -26,11 +26,11 @@
</template>
<!-- 开始日期 -->
<template slot="stime" slot-scope="{row}">
<span>{{format(row.stime)}}</span>
<span>{{ format(row.stime) }}</span>
</template>
<!-- 完成日期 -->
<template slot="etime" slot-scope="{row}">
<span>{{format(row.etime)}}</span>
<span>{{ format(row.etime) }}</span>
</template>
<template slot="takeOnCount" slot-scope="{ row }">
<div style="color: #409eff; cursor: pointer;" @click="employmentNum(row)">
@@ -59,7 +59,8 @@
size="small"
@click="rowCopy('', 'add')"
v-show="vaildData(permission.tenant_mission_add, false)"
>发布岗位</save-button
>发布岗位
</save-button
>
</template>
<!--/自定义按钮-->
@@ -70,7 +71,8 @@
:type="type"
@click="rowComplete(row)"
v-show="vaildData(permission.tenant_mission_finish, false)"
>完成岗位</save-button
>完成岗位
</save-button
>
<el-button
icon="el-icon-view"
@@ -78,7 +80,8 @@
:type="type"
@click="rowView(row)"
v-show="vaildData(permission.tenant_mission_view, false)"
>查看</el-button
>查看
</el-button
>
<save-button
icon="el-icon-check"
@@ -86,7 +89,8 @@
:type="type"
@click="rowCopy(row, 'copy')"
v-show="vaildData(permission.tenant_mission_add, false)"
>复制</save-button
>复制
</save-button
>
</div>
<!--/自定义操作栏-->
@@ -97,7 +101,7 @@
<!--录用人员dialog-->
<Employ ref="employ" :status="status" v-show="false"></Employ>
<!-- 录用人数 -->
<employment-num
<employment-num
ref="employmentNum"
:status="1"
v-show="false"
@@ -110,21 +114,18 @@
</template>
<script>
import { getList, complete, detail } from "@/api/tenant/postzp";
import {getList, complete, detail} from "@/api/tenant/postzp";
import CopyMission from "../Dialog/CopyMission";
import SkillSelect from "../Dialog/Skill";
import Employ from "../Dialog/Employ";
import missionView from "./missionView.vue";
import SelectMap from "@/components/map/selectLocation";
import employmentNum from "../Dialog/EmployNumber";
import { mapGetters } from "vuex";
import { dateFormat } from "@/util/date";
import {mapGetters} from "vuex";
import {dateFormat} from "@/util/date";
import saveButton from "./saveButton";
export default {
comments: {
},
comments: {},
filters: {
ellipsis(value) {
if (!value) return "";
@@ -156,12 +157,12 @@ export default {
CopyMission,
SkillSelect,
Employ,
SelectMap,
missionView,
saveButton,
employmentNum
},
created() {},
created() {
},
computed: {
...mapGetters(["permission"]),
option() {
@@ -244,7 +245,7 @@ export default {
}
},
// 录用人数
employmentNum(row){
employmentNum(row) {
this.$refs.employmentNum.openDialog(row, 2);//查看已录用人员
},
/*查看*/
@@ -267,7 +268,7 @@ export default {
const h = this.$createElement;
this.$confirm(
h("div", null, [
h("p", { style: "font-size: 16px" }, "您确定此岗位已经完成吗? "),
h("p", {style: "font-size: 16px"}, "您确定此岗位已经完成吗? "),
]),
{
type: "warning",
@@ -351,4 +352,4 @@ export default {
.el-form-item {
margin-bottom: 0px;
}
</style>
</style>

View File

@@ -1,17 +1,20 @@
<template>
<div>
<avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="obj" @row-del="rowDel"
@row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen" :page.sync="page"
@current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange" @on-load="onLoad">
@row-update="rowUpdate" @row-save="rowSave" :before-open="beforeOpen" :page.sync="page"
@current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"
@on-load="onLoad">
<!--自定义按钮-->
<template slot="menuLeft">
<save-button type="warning" plain icon="el-icon-plus" size="small" @click="rowCopy('', 'add')"
v-show="vaildData(permission.tenant_works_add, false)">发布岗位</save-button>
<el-button type="success" size="small" plain icon="el-icon-plus" @click="handleImport"
v-show="vaildData(permission.tenant_works_add, false)">批量导入</el-button>
v-show="vaildData(permission.tenant_works_add, false)">发布岗位
</save-button>
<el-button type="success" size="small" plain icon="el-icon-plus" @click="handleImport"
v-show="vaildData(permission.tenant_works_add, false)">批量导入
</el-button>
</template>
<template slot="wage"slot-scope="{ row }">
<div>{{row.wage}}{{wageUnitCategoryStateEnum[row.wageUnitCategory]}}</div>
<template slot="wage" slot-scope="{ row }">
<div>{{ row.wage }}{{ wageUnitCategoryStateEnum[row.wageUnitCategory] }}</div>
</template>
<!--/自定义按钮-->
<!--自定义列-->
@@ -58,12 +61,15 @@
<!-- <el-button type="text" size="mini" @click="recommend(row)">重点人群推送</el-button> -->
<el-button type="text" size="mini" @click="employ(row, 1)">申请录用</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>
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')" :disabled="false"
v-show="vaildData(permission.tenant_mission_edit, false)">编辑</el-button>
v-show="vaildData(permission.tenant_mission_edit, false)">编辑
</el-button>
<el-button icon="el-icon-delete" :size="size" :type="type" @click="$refs.crud.rowDel(row)" :disabled="false"
v-show="vaildData(permission.tenant_mission_cancel, false)" v-if="row.reviewState !== 8">取消</el-button>
v-show="vaildData(permission.tenant_mission_cancel, false)" v-if="row.reviewState !== 8">取消
</el-button>
<!-- <el-button type="text" size="mini" @click="contrast(row)"
>比对人才库</el-button> -->
</div>
@@ -87,8 +93,9 @@
<!--批量导入-->
<el-dialog title="导入" append-to-body :visible.sync="excelBox" :close-on-click-modal="false" width="555px">
<avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter" :upload-before="beforeAvatarUpload"
:upload-error="uploadError">
<avue-form :option="excelOption" v-model="excelForm" :upload-after="uploadAfter"
:upload-before="beforeAvatarUpload"
:upload-error="uploadError">
<template slot="excelTemplate">
<el-button type="primary" @click="handleTemplate()" :loading="templateLoading">
点击下载
@@ -102,7 +109,7 @@
</template>
<script>
import { getList, cancel, detail ,upload} from "@/api/tenant/postzp";
import {getList, cancel, detail, upload} from "@/api/tenant/postzp";
import CopyMission from "../Dialog/CopyMission";
import Employ from "../Dialog/Employ";
import employmentNum from "../Dialog/EmployNumber";
@@ -110,14 +117,14 @@ import Recommend from "../Dialog/Recommend";
import Contrast from "../Dialog/Contrast"
import SkillSelect from "../Dialog/Skill";
import missionView from "./missionView.vue";
import SelectMap from "@/components/map/selectLocation";
import { isExcel } from "@/util/validate";
import { excelAccept } from "@/common/accept";
import { mapGetters } from "vuex";
import { dateFormat } from "@/util/date";
import { getTemplate } from "@/api/resource/template";
import {isExcel} from "@/util/validate";
import {excelAccept} from "@/common/accept";
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";
const wageUnitCategoryStateEnum = {}
wageUnitCategoryState.map((item) => {
wageUnitCategoryStateEnum[item.value] = item.label
@@ -128,7 +135,6 @@ export default {
Employ,
Recommend,
SkillSelect,
SelectMap,
missionView,
saveButton,
Contrast,
@@ -147,7 +153,7 @@ export default {
return {
wageUnitCategoryStateEnum,
excelBox: false,
excelForm: { isCovered: 1 },
excelForm: {isCovered: 1},
excelOption: {
submitBtn: false,
emptyBtn: false,
@@ -194,7 +200,8 @@ export default {
missionNo: '',
};
},
created() { },
created() {
},
watch: {},
computed: {
...mapGetters(["permission"]),
@@ -263,14 +270,14 @@ export default {
prop: "ageDesc",
search: false,
display: false,
},{
}, {
label: "学历要求",
prop: "education",
type: "select",
dicData: educationState,
search: false,
display: false,
},{
}, {
label: "经验要求",
prop: "experienceDesc",
search: false,
@@ -409,8 +416,8 @@ export default {
const h = this.$createElement;
this.$confirm(
h("div", null, [
h("p", { style: "font-size: 16px" }, "您确定要取消此岗位吗? "),
h("p", { style: "color: red" }, "一旦取消则岗位失效"),
h("p", {style: "font-size: 16px"}, "您确定要取消此岗位吗? "),
h("p", {style: "color: red"}, "一旦取消则岗位失效"),
]),
{
type: "warning",
@@ -504,13 +511,13 @@ export default {
const arr = [];
const data = res.data.data;
data.error &&
data.error.errorList.forEach((item) => {
arr.push(`${item.name} ${item.remarks}`);
});
data.error.errorList.forEach((item) => {
arr.push(`${item.name} ${item.remarks}`);
});
data.auth &&
data.auth.authList.forEach((item) => {
arr.push(`${item.name} ${item.remarks}`);
});
data.auth.authList.forEach((item) => {
arr.push(`${item.name} ${item.remarks}`);
});
this.$refs.ied.show(arr);
}
this.refreshChange();

View File

@@ -181,7 +181,19 @@
model.address
}}
</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>-->
<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="'view'"
></super-map-view>
</el-col>
</el-row>
</el-collapse-item>
@@ -215,7 +227,6 @@
</template>
<script>
import SelectMap from "@/components/map/selectLocation";
import {mapGetters} from "vuex";
import {dateFormat} from "@/util/date";
import {
@@ -234,7 +245,6 @@ function getDic(arr) {
}
export default {
components: {SelectMap},
props: {model: Object},
data() {
return {

View File

@@ -11,24 +11,28 @@
<el-row>
<el-col span="12">
<el-form-item label="岗位名称:">{{
model.jobName
}}</el-form-item>
model.jobName
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="岗位编码:">{{
model.missionNo
}}</el-form-item>
model.missionNo
}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="12">
<el-form-item label="报名截止:">{{
format(model.etimePub)
}}</el-form-item>
format(model.etimePub)
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="岗位时间:">{{ format(model.stime) }}
{{ format(model.etime) }}</el-form-item>
{{ format(model.etime) }}
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
@@ -44,15 +48,18 @@
<el-form-item label="招聘人数:">{{ model.peopleNum }}</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="参考工资:">{{ model.wage
}}{{ wageUnitCategory[model.wageUnitCategory] }}</el-form-item>
<el-form-item label="参考工资:">{{
model.wage
}}{{ 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>
model.tradeNames
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item>
@@ -64,8 +71,9 @@
<el-row>
<el-col span="24">
<el-form-item label="岗位描述:">{{
model.jobDescription
}}</el-form-item>
model.jobDescription
}}
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
@@ -82,21 +90,24 @@
</el-col>
<el-col span="8">
<el-form-item label="年龄要求:">{{
model.ageDesc
}}</el-form-item>
model.ageDesc
}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="16">
<el-form-item label="学历要求:">{{
education[model.education]
}}</el-form-item>
education[model.education]
}}
</el-form-item>
</el-col>
<el-col span="8">
<el-form-item label="经验要求:">{{
model.experienceDesc
}}</el-form-item>
model.experienceDesc
}}
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
@@ -110,42 +121,49 @@
<el-row>
<el-col span="12">
<el-form-item label="用工单位:">{{
model.jobCompanyName
}}</el-form-item>
model.jobCompanyName
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="单位信用代码:">{{
model.jobCompanyScale
}}</el-form-item>
model.jobCompanyScale
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="单位性质:">{{
model.jobCompanyNature
}}</el-form-item>
model.jobCompanyNature
}}
</el-form-item>
</el-col>
<el-col span="12">
<el-form-item label="所属行业:">{{
model.jobCompanyIndustry
}}</el-form-item>
model.jobCompanyIndustry
}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="24">
<el-form-item label="单位介绍:">{{
model.jobCompanyDescription
}}</el-form-item>
model.jobCompanyDescription
}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="8">
<el-form-item label="联 系 人:">{{
model.callName
}}</el-form-item>
model.callName
}}
</el-form-item>
</el-col>
<el-col span="8">
<el-form-item label="联系方式:">{{
model.callTel
}}</el-form-item>
model.callTel
}}
</el-form-item>
</el-col>
<el-col span="8">
<el-form-item>
@@ -156,17 +174,32 @@
</el-row>
<el-row>
<el-col span="24">
<el-form-item label="工作地址:" v-if="model.cityId">{{ city[0] && city[0].label }} {{ city[1] && city[1].label
}}
{{ city[2] && city[2].label }}</el-form-item>
<el-form-item label="工作地址:" v-if="model.cityId">{{ city[0] && city[0].label }} {{
city[1] && city[1].label
}}
{{ city[2] && city[2].label }}
</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>
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="'view'"
></super-map-view>
</el-col>
</el-row>
</el-collapse-item>
@@ -181,14 +214,16 @@
<el-col span="24">
<el-form-item label="审核状态:">{{
recruit[model.reviewState]
}}</el-form-item>
}}
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col span="24">
<el-form-item label="审核备注:">{{
model.reviewMsg || '无'
}}</el-form-item>
}}
</el-form-item>
</el-col>
</el-row>
</el-collapse-item>
@@ -198,9 +233,8 @@
</template>
<script>
import SelectMap from "@/components/map/selectLocation";
import { mapGetters } from "vuex";
import { dateFormat } from "@/util/date";
import {mapGetters} from "vuex";
import {dateFormat} from "@/util/date";
import {
wageUnitCategoryState,
educationState,
@@ -216,8 +250,7 @@ function getDic(arr) {
}
export default {
components: { SelectMap },
props: { model: Object },
props: {model: Object},
data() {
return {
activeNames: ["1", "2", "3", "4", "5"],
@@ -227,7 +260,8 @@ export default {
recruit: getDic(recruitStatus),
};
},
mounted() { },
mounted() {
},
methods: {
getSkill(skillStr) {
return skillStr.split(",");
@@ -248,7 +282,7 @@ export default {
</script>
<style>
.mission-view .el-tag+.el-tag {
.mission-view .el-tag + .el-tag {
margin-left: 5px;
}

View File

@@ -188,7 +188,19 @@
model.address
}}
</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>-->
<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="'view'"
></super-map-view>
</el-col>
</el-row>
</el-collapse-item>
@@ -198,7 +210,6 @@
</template>
<script>
import SelectMap from "@/components/map/selectLocation";
import {mapGetters} from "vuex";
import {dateFormat} from "@/util/date";
import {
@@ -216,7 +227,6 @@ function getDic(arr) {
}
export default {
components: {SelectMap},
props: {model: Object},
data() {
return {

View File

@@ -5,7 +5,8 @@
<!-- 合作企业概况 -->
<div class="bgWhite survey" style="height: calc(100vh - 120px);">
<i style="position: absolute;right: 10px;top: 10px;color:#fff;" class="el-icon-full-screen" @click="changeFullScreen"></i>
<i style="position: absolute;right: 10px;top: 10px;color:#fff;" class="el-icon-full-screen"
@click="changeFullScreen"></i>
<iframe
name="iframeMap"
id="iframeMapViewComponent"
@@ -22,11 +23,13 @@
</template>
<script>
import { getMapData } from '@/api/desk/notice'
import {getMapData} from '@/api/desk/notice'
export default {
data() {
return {
getPageUrl: "http://10.165.0.173/largescreen/",
// getPageUrl: "http://10.165.0.173/largescreen/",
getPageUrl: "http://10.165.0.54:8300/largescreen/",
fullScreenFlag: false,
fullScreenFlagKey: 0,
};
@@ -44,35 +47,35 @@ export default {
// this.showFullScreen = true
// },
changeFullScreen() {
// this.fullScreenFlagKey +=1
if (!this.fullScreenFlag) {
const element = document.getElementsByClassName('avue-header')[0];
element.setAttribute('style', 'display: none');
const nav = document.getElementsByClassName('avue-tags')[0]
nav.setAttribute('style', 'display: none');
const tags = document.getElementsByClassName('avue-left')[0]
tags.setAttribute('style', 'display: none');
const el = document.getElementsByClassName('avue-main')[0]
el.setAttribute('style', 'left: 0;height: 100vh;width:100vw;padding-bottom:0;');
const screen = document.getElementsByClassName('survey')[0]
screen.setAttribute('style', 'height: 100vh;width:100vw;margin-right:0;');
const large = document.getElementById('large-screen');
large.setAttribute('style', 'padding:0 !important;')
this.fullScreenFlag = !this.fullScreenFlag
} else {
const element = document.getElementsByClassName('avue-header')[0];
element.setAttribute('style', 'display: block');
const nav = document.getElementsByClassName('avue-tags')[0]
nav.setAttribute('style', 'display: block');
const tags = document.getElementsByClassName('avue-left')[0]
tags.setAttribute('style', 'display: block');
const el = document.getElementsByClassName('avue-main')[0]
el.setAttribute('style', 'left: 240px;height:100vh;');
const screen = document.getElementsByClassName('survey')[0]
screen.setAttribute('style', 'height: 100vh;');
this.fullScreenFlag = !this.fullScreenFlag
}
},
// this.fullScreenFlagKey +=1
if (!this.fullScreenFlag) {
const element = document.getElementsByClassName('avue-header')[0];
element.setAttribute('style', 'display: none');
const nav = document.getElementsByClassName('avue-tags')[0]
nav.setAttribute('style', 'display: none');
const tags = document.getElementsByClassName('avue-left')[0]
tags.setAttribute('style', 'display: none');
const el = document.getElementsByClassName('avue-main')[0]
el.setAttribute('style', 'left: 0;height: 100vh;width:100vw;padding-bottom:0;');
const screen = document.getElementsByClassName('survey')[0]
screen.setAttribute('style', 'height: 100vh;width:100vw;margin-right:0;');
const large = document.getElementById('large-screen');
large.setAttribute('style', 'padding:0 !important;')
this.fullScreenFlag = !this.fullScreenFlag
} else {
const element = document.getElementsByClassName('avue-header')[0];
element.setAttribute('style', 'display: block');
const nav = document.getElementsByClassName('avue-tags')[0]
nav.setAttribute('style', 'display: block');
const tags = document.getElementsByClassName('avue-left')[0]
tags.setAttribute('style', 'display: block');
const el = document.getElementsByClassName('avue-main')[0]
el.setAttribute('style', 'left: 240px;height:100vh;');
const screen = document.getElementsByClassName('survey')[0]
screen.setAttribute('style', 'height: 100vh;');
this.fullScreenFlag = !this.fullScreenFlag
}
},
}
};
</script>
@@ -81,10 +84,12 @@ export default {
p {
margin: 0 !important;
}
/* 底色 */
.bgWhite {
background: #ffffff;
}
/* 标题 */
.title {
font-weight: bold;
@@ -93,35 +98,43 @@ p {
color: #333333;
line-height: 30px;
}
.benchWarp {
/* padding: 0 20px !important; */
/* margin-top: 4px; */
}
.benchTop {
display: flex;
justify-content: space-between;
/* margin-bottom: 15px; */
}
.survey,
.pending {
flex: 1;
/* padding: 10px; */
/* border-radius: 4px; */
}
.survey {
/* margin-right: 10px; */
}
.pending {
margin-left: 10px;
}
.content {
display: flex;
justify-content: space-around;
padding: 0 30px;
}
.content .box {
text-align: center;
}
.content .box .surveyTitle,
.pendingTitle {
height: 25px;
@@ -131,6 +144,7 @@ p {
line-height: 25px;
margin-top: 30px !important;
}
.content .box .surveyNum,
.pendingNum {
height: 42px;
@@ -152,6 +166,7 @@ p {
border: 1px solid #3f9eff;
background: #ffffff;
}
.content .box .goJob {
width: 80px;
height: 20px;
@@ -165,15 +180,18 @@ p {
.benchBottom {
display: flex;
}
.invitationCode {
width: calc(100% - 550px);
padding: 18px 30px;
border-radius: 4px;
}
.tips {
width: 250px;
margin-left: 15px;
}
.customerService {
width: 414px;
background: #ffffff;
@@ -181,11 +199,13 @@ p {
margin-bottom: 20px;
padding: 18px 30px;
}
.customerService .customerContent {
display: flex;
align-items: center;
height: 100%;
}
.customerService .customerContent .img {
width: 115px;
height: 115px;
@@ -195,22 +215,26 @@ p {
background: url("/manage/img/kefu.jpg") no-repeat;
background-size: 115px 115px;
}
.customerService .customerContent .font {
height: 30px;
font-size: 16px;
font-weight: 400;
color: #333333;
}
.tip {
padding: 18px 30px;
width: 414px;
background: #ffffff;
border-radius: 4px;
}
.tip .tipTop {
display: flex;
justify-content: space-between;
}
.tip .tipTop .more {
cursor: pointer;
height: 22px;
@@ -219,14 +243,17 @@ p {
color: #3f9eff;
line-height: 22px;
}
.tipListBox {
height: 276px;
overflow: auto;
}
.tipListBox div {
display: flex;
margin: 11px 0;
}
.tipListBox p {
width: 400px;
height: 30px;
@@ -238,6 +265,7 @@ p {
text-overflow: ellipsis;
white-space: nowrap;
}
.tipListBox span {
color: #3f9eff;
}

View File

@@ -5,6 +5,7 @@ module.exports = {
lintOnSave: true,
productionSourceMap: false,
chainWebpack: config => {
config.plugins.delete('case-sensitive-paths')
//忽略的打包文件
config.externals({
vue: "Vue",