Commit 16973291 authored by 郝聪敏's avatar 郝聪敏

添加prettier

parent 680dfdeb
...@@ -9,13 +9,16 @@ module.exports = { ...@@ -9,13 +9,16 @@ module.exports = {
extends: [ extends: [
'plugin:vue/essential', 'plugin:vue/essential',
'standard', 'standard',
'prettier',
], ],
plugins: [ plugins: [
'vue', 'vue',
'prettier',
], ],
rules: { rules: {
'prettier/prettier': 'error',
// 防止iview的标签报错 // 防止iview的标签报错
"vue/no-parsing-error": [2, { "x-invalid-end-tag": false }], 'vue/no-parsing-error': [2, { 'x-invalid-end-tag': false }],
}, },
} }
...@@ -4166,6 +4166,23 @@ ...@@ -4166,6 +4166,23 @@
"eslint-restricted-globals": "^0.1.1" "eslint-restricted-globals": "^0.1.1"
} }
}, },
"eslint-config-prettier": {
"version": "6.7.0",
"resolved": "http://npmprivate.quantgroups.com/eslint-config-prettier/-/eslint-config-prettier-6.7.0.tgz",
"integrity": "sha512-FamQVKM3jjUVwhG4hEMnbtsq7xOIDm+SY5iBPfR8gKsJoAB2IQnNF+bk1+8Fy44Nq7PPJaLvkRxILYdJWoguKQ==",
"dev": true,
"requires": {
"get-stdin": "^6.0.0"
},
"dependencies": {
"get-stdin": {
"version": "6.0.0",
"resolved": "http://npmprivate.quantgroups.com/get-stdin/-/get-stdin-6.0.0.tgz",
"integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
"dev": true
}
}
},
"eslint-config-standard": { "eslint-config-standard": {
"version": "14.1.0", "version": "14.1.0",
"resolved": "http://npmprivate.quantgroups.com/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz", "resolved": "http://npmprivate.quantgroups.com/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz",
...@@ -4390,6 +4407,15 @@ ...@@ -4390,6 +4407,15 @@
} }
} }
}, },
"eslint-plugin-prettier": {
"version": "3.1.2",
"resolved": "http://npmprivate.quantgroups.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz",
"integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==",
"dev": true,
"requires": {
"prettier-linter-helpers": "^1.0.0"
}
},
"eslint-plugin-promise": { "eslint-plugin-promise": {
"version": "4.2.1", "version": "4.2.1",
"resolved": "http://npmprivate.quantgroups.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", "resolved": "http://npmprivate.quantgroups.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz",
...@@ -4847,6 +4873,12 @@ ...@@ -4847,6 +4873,12 @@
"resolved": "http://npmprivate.quantgroups.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "resolved": "http://npmprivate.quantgroups.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk="
}, },
"fast-diff": {
"version": "1.2.0",
"resolved": "http://npmprivate.quantgroups.com/fast-diff/-/fast-diff-1.2.0.tgz",
"integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
"dev": true
},
"fast-json-stable-stringify": { "fast-json-stable-stringify": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "http://npmprivate.quantgroups.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "resolved": "http://npmprivate.quantgroups.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
...@@ -10641,6 +10673,15 @@ ...@@ -10641,6 +10673,15 @@
"integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
"dev": true "dev": true
}, },
"prettier-linter-helpers": {
"version": "1.0.0",
"resolved": "http://npmprivate.quantgroups.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
"integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
"dev": true,
"requires": {
"fast-diff": "^1.1.2"
}
},
"pretty-error": { "pretty-error": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "http://npmprivate.quantgroups.com/pretty-error/-/pretty-error-2.1.1.tgz", "resolved": "http://npmprivate.quantgroups.com/pretty-error/-/pretty-error-2.1.1.tgz",
......
<template> <template>
<div id="app" :class="appClass"> <div id="app" :class="appClass">
<router-view/> <router-view />
</div> </div>
</template> </template>
<script> <script>
window.onload = function () { window.onload = function() {
document.addEventListener('touchstart', function (event) { document.addEventListener("touchstart", function(event) {
if (event.touches.length > 1) { if (event.touches.length > 1) {
event.preventDefault() event.preventDefault();
} }
}) });
document.addEventListener('gesturestart', function (event) { document.addEventListener("gesturestart", function(event) {
event.preventDefault() event.preventDefault();
}) });
} };
export default { export default {
name: 'App', name: "App",
data () { data() {
return { return {
appClass: 'pc' appClass: "pc"
} };
}, },
created: function () { created: function() {
if (document.documentElement.clientWidth <= 640) { if (document.documentElement.clientWidth <= 640) {
this.appClass = 'mobile' this.appClass = "mobile";
} }
} }
} };
</script> </script>
<style> <style>
#app{ #app {
position: absolute; position: absolute;
top: 0; top: 0;
bottom: 0; bottom: 0;
width: 100%; width: 100%;
cursor:auto; cursor: auto;
text-align: left; text-align: left;
font-family: 'PingFangSC-Regular', 'Avenir', Helvetica, Arial, sans-serif; font-family: "PingFangSC-Regular", "Avenir", Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased; -webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
color: #2c3e50; color: #2c3e50;
...@@ -47,7 +47,6 @@ export default { ...@@ -47,7 +47,6 @@ export default {
-moz-user-select: text !important; /*火狐*/ -moz-user-select: text !important; /*火狐*/
-ms-user-select: text !important; /*IE10*/ -ms-user-select: text !important; /*IE10*/
user-select: text !important; user-select: text !important;
} }
.pc { .pc {
height: 100%; height: 100%;
...@@ -58,27 +57,24 @@ export default { ...@@ -58,27 +57,24 @@ export default {
min-width: unset; min-width: unset;
min-height: unset; min-height: unset;
} }
::-webkit-scrollbar ::-webkit-scrollbar {
{
width: 8px; width: 8px;
height: 8px; height: 8px;
background-color: #F5F5F5; background-color: #f5f5f5;
} }
/*定义滚动条轨道 内阴影+圆角*/ /*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track ::-webkit-scrollbar-track {
{ -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
border-radius: 10px; border-radius: 10px;
background-color: #Eff4f6; background-color: #eff4f6;
} }
/*定义滑块 内阴影+圆角*/ /*定义滑块 内阴影+圆角*/
::-webkit-scrollbar-thumb ::-webkit-scrollbar-thumb {
{
border-radius: 10px; border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3); -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
background-color: #BDBDBD; background-color: #bdbdbd;
} }
/* .ivu-btn-primary{ /* .ivu-btn-primary{
background: #0092FF!important background: #0092FF!important
......
import axios from '../service/http.service' import axios from "../service/http.service";
import { import { sapi } from "../config";
sapi import qs from "qs";
} from '../config'
import qs from 'qs'
// 获取个人信息 // 获取个人信息
export function getpersonMassage (params) { export function getpersonMassage(params) {
// params=qs.stringify(params) // params=qs.stringify(params)
return axios.get(`${sapi}/api/login/me`, params, { return axios.get(`${sapi}/api/login/me`, params, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 用户退出 // 用户退出
export function loginOUT () { export function loginOUT() {
// params=qs.stringify(params) // params=qs.stringify(params)
return axios.get(`${sapi}/api/login/logout`, { return axios.get(`${sapi}/api/login/logout`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 通过某一来源查询简历信息 // 通过某一来源查询简历信息
export function adoptOneSeeResumeList (parmars) { export function adoptOneSeeResumeList(parmars) {
return axios.post(`${sapi}/api/resume/findListBySource`, parmars, { return axios.post(`${sapi}/api/resume/findListBySource`, parmars, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 通过渠道机简历信息 // 通过渠道机简历信息
export function getChannelMassage () { export function getChannelMassage() {
return axios.get(`${sapi}/api/resume/getSourceList`, { return axios.get(`${sapi}/api/resume/getSourceList`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 判断是否为超级管理员 // 判断是否为超级管理员
export function judeAdmin () { export function judeAdmin() {
return axios.get(`${sapi}/api/user/isAdmin`, { return axios.get(`${sapi}/api/user/isAdmin`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
import axios from '../service/http.service' import axios from "../service/http.service";
import { import { sapi } from "../config";
sapi import qs from "qs";
} from '../config'
import qs from 'qs'
// 更改约面信息 // 更改约面信息
export function changeinterviewMassage (parmars) { export function changeinterviewMassage(parmars) {
return axios.post(`${sapi}/api/resumeInterview/update`, parmars, { return axios.post(`${sapi}/api/resumeInterview/update`, parmars, {
headers: { headers: {
'Content-Type': 'application/json;' "Content-Type": "application/json;"
} }
}) });
} }
// 重启面试 // 重启面试
export function oppenInterview (tid, tstatus) { export function oppenInterview(tid, tstatus) {
console.log(tid, tstatus) console.log(tid, tstatus);
return axios.post(`${sapi}/api/resumeFlow/reset/${tid}/${tstatus}`, { return axios.post(`${sapi}/api/resumeFlow/reset/${tid}/${tstatus}`, {
headers: { headers: {
'Content-Type': 'application/json;' "Content-Type": "application/json;"
} }
}) });
} }
// 终止面试 // 终止面试
export function SInterview (tid) { export function SInterview(tid) {
return axios.post(`${sapi}/api/resumeFlow/end/${tid}`, { return axios.post(`${sapi}/api/resumeFlow/end/${tid}`, {
headers: { headers: {
'Content-Type': 'application/json;' "Content-Type": "application/json;"
} }
}) });
} }
// 面试管理查询 // 面试管理查询
export function SerchList (parmars, status) { export function SerchList(parmars, status) {
return axios.post(`${sapi}/api/interview/findListByQueryVO`, parmars, { return axios.post(`${sapi}/api/interview/findListByQueryVO`, parmars, {
headers: { headers: {
'Content-Type': 'application/json;', "Content-Type": "application/json;",
'X-Requested-With': 'XMLHttpRequest', "X-Requested-With": "XMLHttpRequest",
status status
} }
}) });
} }
// 查看简历详情页 // 查看简历详情页
export function seedetail (parmars) { export function seedetail(parmars) {
return axios.get(`${sapi}/api/html/get/${parmars.uid}`, { return axios.get(`${sapi}/api/html/get/${parmars.uid}`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 面试官查询 // 面试官查询
export function Serchinterviewor () { export function Serchinterviewor() {
return axios.get(`${sapi}/api/interview/findInterviewerList`) return axios.get(`${sapi}/api/interview/findInterviewerList`);
} }
// 邀约人查询 // 邀约人查询
export function SerchInvitationOwer () { export function SerchInvitationOwer() {
return axios.post(`${sapi}/api/interview/findInviterList`, { return axios.post(`${sapi}/api/interview/findInviterList`, {
headers: { headers: {
'Content-Type': 'application/json;' "Content-Type": "application/json;"
} }
}) });
} }
// 新增约面信息 // 新增约面信息
export function NewAddInterview (parmars) { export function NewAddInterview(parmars) {
return axios.post(`${sapi}/api/resumeInterview/add`, parmars, { return axios.post(`${sapi}/api/resumeInterview/add`, parmars, {
headers: { headers: {
'Content-Type': 'application/json;' "Content-Type": "application/json;"
} }
}) });
} }
// 查询记录 // 查询记录
export function recodeLIST (parmars) { export function recodeLIST(parmars) {
return axios.post(`${sapi}/api/resumeFlow/history/${parmars.resumeId}`, { return axios.post(`${sapi}/api/resumeFlow/history/${parmars.resumeId}`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 变更状态 // 变更状态
export function changestatus (tid, tstatus) { export function changestatus(tid, tstatus) {
return axios.post(`${sapi}/api/resumeFlow/uploadStatus/${tid}/${tstatus}`, { return axios.post(`${sapi}/api/resumeFlow/uploadStatus/${tid}/${tstatus}`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 获取终止面试前的前一个状态 // 获取终止面试前的前一个状态
export function formstatus (parmars) { export function formstatus(parmars) {
return axios.post(`${sapi}/api/resumeFlow/getPreReset/${parmars.resumeId}`, { return axios.post(`${sapi}/api/resumeFlow/getPreReset/${parmars.resumeId}`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
import axios from '../service/http.service' import axios from "../service/http.service";
import { import { sapi } from "../config";
sapi import qs from "qs";
} from '../config'
import qs from 'qs'
// 登录 // 登录
export function login (params) { export function login(params) {
// params=qs.stringify(params) // params=qs.stringify(params)
return axios.post(`${sapi}/api/login/doLogin`, params, { return axios.post(`${sapi}/api/login/doLogin`, params, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 修改密码 // 修改密码
export function updatePsd (params) { export function updatePsd(params) {
// params=qs.stringify(params) // params=qs.stringify(params)
return axios.post(`${sapi}/api/login/modifyPassword`, params, { return axios.post(`${sapi}/api/login/modifyPassword`, params, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
import axios from '../service/http.service' import axios from "../service/http.service";
import { import { sapi } from "../config";
sapi import qs from "qs";
} from '../config'
import qs from 'qs'
// 查询简历列表 // 查询简历列表
export function serchList (parmars) { export function serchList(parmars) {
return axios.post(`${sapi}/api/resume/findList`, parmars, { return axios.post(`${sapi}/api/resume/findList`, parmars, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 下载简历(单条) // 下载简历(单条)
export function downloadone (parmars) { export function downloadone(parmars) {
parmars = qs.stringify(parmars) parmars = qs.stringify(parmars);
return axios.post(`${sapi}/api/resumeFile/download/formatted/one`, parmars, { return axios.post(`${sapi}/api/resumeFile/download/formatted/one`, parmars, {
headers: { headers: {
'Content-Type': 'application/x-www-form-urlencoded' "Content-Type": "application/x-www-form-urlencoded"
} }
}) });
} }
// 搜索 // 搜索
export function sousuoList (parmars, status) { export function sousuoList(parmars, status) {
return axios.post(`${sapi}/api/resume/findListByQueryVO`, parmars, { return axios.post(`${sapi}/api/resume/findListByQueryVO`, parmars, {
headers: { headers: {
'Content-Type': 'application/json', "Content-Type": "application/json",
status status
} }
}) });
} }
// 查看简历详情页 // 查看简历详情页
export function seedetail (parmars) { export function seedetail(parmars) {
return axios.get(`${sapi}/api/html/get/${parmars.uid}`, { return axios.get(`${sapi}/api/html/get/${parmars.uid}`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 简历pass // 简历pass
export function PASS (parmars) { export function PASS(parmars) {
return axios.post(`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`, '', { return axios.post(
`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`,
"",
{
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
}
} }
}) );
} }
// 待处理 // 待处理
export function TODORes (parmars) { export function TODORes(parmars) {
return axios.post(`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`, '', { return axios.post(
`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`,
"",
{
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
}
} }
}) );
} }
// 备选 // 备选
export function OPTION (parmars) { export function OPTION(parmars) {
return axios.post(`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`, '', { return axios.post(
`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`,
"",
{
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
}
} }
}) );
} }
// 删除简历 // 删除简历
export function deleteREsume (deleteallArr) { export function deleteREsume(deleteallArr) {
return axios.post(`${sapi}/api/resume/delete`, JSON.stringify(deleteallArr), { return axios.post(`${sapi}/api/resume/delete`, JSON.stringify(deleteallArr), {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 单条下载简历 // 单条下载简历
export function downloadOne (parmars) { export function downloadOne(parmars) {
return axios.get(`${sapi}/api/resume/download/formatted/one?resumeId=${parmars.resumeId}`, { return axios.get(
`${sapi}/api/resume/download/formatted/one?resumeId=${parmars.resumeId}`,
{
headers: { headers: {
// 'Content-Type':'application/x-www-form-urlencoded' // 'Content-Type':'application/x-www-form-urlencoded'
} }
}) }
);
} }
// 批量下载简历 // 批量下载简历
export function downloadALL () { export function downloadALL() {
return axios.get(`${sapi}/api/resumeFile/download/formatted/compress`, { return axios.get(`${sapi}/api/resumeFile/download/formatted/compress`, {
headers: { headers: {
'Content-Type': 'application/x-www-form-urlencoded' "Content-Type": "application/x-www-form-urlencoded"
} }
}) });
} }
// 导出列表 // 导出列表
export function exportLIST (parmars) { export function exportLIST(parmars) {
return axios.get(`${sapi}/api/excel/output?optSource=${parmars.optSource}&keywordString=${parmars.keywordString}&company=${parmars.company}&ownerSex=${parmars.ownerSex}&highestDegreeNum=${parmars.highestDegreeNum}&flowStatusList=${parmars.flowStatusList}&ownerWorkYears1=${parmars.ownerWorkYears1}&ownerWorkYears2=${parmars.ownerWorkYears2}`, return axios.get(
`${sapi}/api/excel/output?optSource=${parmars.optSource}&keywordString=${parmars.keywordString}&company=${parmars.company}&ownerSex=${parmars.ownerSex}&highestDegreeNum=${parmars.highestDegreeNum}&flowStatusList=${parmars.flowStatusList}&ownerWorkYears1=${parmars.ownerWorkYears1}&ownerWorkYears2=${parmars.ownerWorkYears2}`,
{ {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
}
} }
}) );
} }
// 操作记录 // 操作记录
export function recodeLIST (parmars) { export function recodeLIST(parmars) {
return axios.post(`${sapi}/api/resumeFlow/history/${parmars.resumeId}`, { return axios.post(`${sapi}/api/resumeFlow/history/${parmars.resumeId}`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 通过某一来源查询简历信息 // 通过某一来源查询简历信息
export function adoptOneSeeResumeList (parmars) { export function adoptOneSeeResumeList(parmars) {
return axios.post(`${sapi}/api/resume/findListBySource`, parmars, { return axios.post(`${sapi}/api/resume/findListBySource`, parmars, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 新增约面信息 // 新增约面信息
export function addinterview (parmars) { export function addinterview(parmars) {
return axios.post(`${sapi}/api/resumeInterview/add`, parmars, { return axios.post(`${sapi}/api/resumeInterview/add`, parmars, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 修改流程状态 // 修改流程状态
export function updatastatus (parmars) { export function updatastatus(parmars) {
return axios.post(`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`, { return axios.post(
`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`,
{
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) }
);
} }
// 获取邮件模板 // 获取邮件模板
export function getEmailMoo () { export function getEmailMoo() {
return axios.post(`${sapi}/api/emailTemplate/getAllTemplateList`, { return axios.post(`${sapi}/api/emailTemplate/getAllTemplateList`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 根据获取id邮件模板内容 // 根据获取id邮件模板内容
export function getEmailContent (parmars) { export function getEmailContent(parmars) {
return axios.post(`${sapi}/api/emailTemplate/loadTemplate`, parmars, { return axios.post(`${sapi}/api/emailTemplate/loadTemplate`, parmars, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 上传图片 // 上传图片
export function uploadimage () { export function uploadimage() {
return axios.get(`${sapi}/api/ckeditor/uploadImage`, { return axios.get(`${sapi}/api/ckeditor/uploadImage`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 发送邮件 // 发送邮件
export function sendEmail (parmars) { export function sendEmail(parmars) {
return axios.post(`${sapi}/api/sendMail/sendEmailTemplate`, parmars, { return axios.post(`${sapi}/api/sendMail/sendEmailTemplate`, parmars, {
headers: { headers: {
'Content-Type': 'multipart/form-data' "Content-Type": "multipart/form-data"
// 'Content-Disposition':'multipart/form-data' // 'Content-Disposition':'multipart/form-data'
// 'Content-Type':'application/json' // 'Content-Type':'application/json'
} }
}) });
} }
export function findCompanyEmailByKey (key) { // 公司通讯录 export function findCompanyEmailByKey(key) {
return axios.get(`${sapi}/api/companyEmail/findCompanyEmailByKey?key=${key}`) // 公司通讯录
return axios.get(`${sapi}/api/companyEmail/findCompanyEmailByKey?key=${key}`);
} }
// 转发邮箱通知 // 转发邮箱通知
export function forwardResume (params) { export function forwardResume(params) {
return axios.post(`${sapi}/api/resume/forwardResume`, params, { return axios.post(`${sapi}/api/resume/forwardResume`, params, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
export function getPdf (parmars) { export function getPdf(parmars) {
return axios.get(`${sapi}/api/resume/getResumePdfByResumeId/${parmars.uid}`, { return axios.get(`${sapi}/api/resume/getResumePdfByResumeId/${parmars.uid}`, {
responseType: 'arraybuffer', responseType: "arraybuffer",
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 是否展示原件的PDF // 是否展示原件的PDF
export function isShowPDF (parmars) { export function isShowPDF(parmars) {
return axios.get(`${sapi}/api/resume/isShowOriPdf/${parmars.uid}`, { return axios.get(`${sapi}/api/resume/isShowOriPdf/${parmars.uid}`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
export function getpdfUrl (parmars) { export function getpdfUrl(parmars) {
return axios.get(`${sapi}/api/resume/getResumePdfUrl/${parmars.uid}`, { return axios.get(`${sapi}/api/resume/getResumePdfUrl/${parmars.uid}`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 获取职位列表 // 获取职位列表
export function getlist (parmars) { export function getlist(parmars) {
return axios.get(`${sapi}/api/resume/findPositionList?optSourceCode=${parmars.optSourceCode}`, { return axios.get(
`${sapi}/api/resume/findPositionList?optSourceCode=${parmars.optSourceCode}`,
{
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
}
} }
}) );
} }
import axios from '../service/http.service' import axios from "../service/http.service";
import { import { sapi } from "../config";
sapi import qs from "qs";
} from '../config'
import qs from 'qs'
// 账号列表查询 // 账号列表查询
export function queryaccountList (params) { export function queryaccountList(params) {
return axios.post(`${sapi}/api/user/findList`, params, { return axios.post(`${sapi}/api/user/findList`, params, {
headers: { headers: {
'Content-Type': 'application/json;' "Content-Type": "application/json;"
} }
}) });
} }
// 添加账户 // 添加账户
export function addAccount (params) { export function addAccount(params) {
return axios.post(`${sapi}/api/user/add`, params, { return axios.post(`${sapi}/api/user/add`, params, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 删除单条账户 // 删除单条账户
export function Delateaccount (parmars) { export function Delateaccount(parmars) {
return axios.get(`${sapi}/api/user/delete/${parmars.id}`, { return axios.get(`${sapi}/api/user/delete/${parmars.id}`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 批量删除 // 批量删除
export function delateAllAccount (DelateARR) { export function delateAllAccount(DelateARR) {
return axios.post(`${sapi}//api/user/delete`, JSON.stringify(DelateARR), { return axios.post(`${sapi}//api/user/delete`, JSON.stringify(DelateARR), {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 恢复初始密码 // 恢复初始密码
export function recoveryPassword (parmars) { export function recoveryPassword(parmars) {
return axios.post(`${sapi}/api/user/initial/${parmars.id}`, { return axios.post(`${sapi}/api/user/initial/${parmars.id}`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 查询邮箱列表 // 查询邮箱列表
export function queryemailList (parmars) { export function queryemailList(parmars) {
return axios.post(`${sapi}/api/email/list`, parmars, { return axios.post(`${sapi}/api/email/list`, parmars, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 同步邮箱 // 同步邮箱
export function Synchronization (parmars) { export function Synchronization(parmars) {
return axios.post(`${sapi}/api/email/bindAndSync`, parmars, { return axios.post(`${sapi}/api/email/bindAndSync`, parmars, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 解绑邮箱 // 解绑邮箱
export function jiebangEmail (id) { export function jiebangEmail(id) {
return axios.post(`${sapi}/api/email/unbind/${id}`, { return axios.post(`${sapi}/api/email/unbind/${id}`, {
headers: { headers: {
'Content-Type': 'application/x-www-form-urlencoded' "Content-Type": "application/x-www-form-urlencoded"
} }
}) });
} }
// 修改邮箱并重新绑定 // 修改邮箱并重新绑定
export function updateemailTWO (parmars) { export function updateemailTWO(parmars) {
return axios.post(`${sapi}/api/email/modify`, parmars, { return axios.post(`${sapi}/api/email/modify`, parmars, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 批量解绑邮箱 // 批量解绑邮箱
export function UntyingAll (UntyingAllARR) { export function UntyingAll(UntyingAllARR) {
return axios.post(`${sapi}/api/email/unbind/batch`, JSON.stringify(UntyingAllARR), { return axios.post(
`${sapi}/api/email/unbind/batch`,
JSON.stringify(UntyingAllARR),
{
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) }
);
} }
// 获取二维码 // 获取二维码
export function getErcode () { export function getErcode() {
return axios.get(`${sapi}/api/qrCode/getInterviewQrcode`, { return axios.get(`${sapi}/api/qrCode/getInterviewQrcode`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// //修改账户 // //修改账户
export function updateAccount (parmars) { export function updateAccount(parmars) {
return axios.post(`${sapi}/api/user/modify/${parmars.id}`, parmars, { return axios.post(`${sapi}/api/user/modify/${parmars.id}`, parmars, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
import axios from '../service/http.service' import axios from "../service/http.service";
import { import { sapi } from "../config";
sapi import qs from "qs";
} from '../config'
import qs from 'qs'
// 提交应聘登记表 // 提交应聘登记表
export function submitMassage (params) { export function submitMassage(params) {
// params=qs.stringify(params) // params=qs.stringify(params)
return axios.post(`${sapi}/api/interview/arrive`, params, { return axios.post(`${sapi}/api/interview/arrive`, params, {
headers: { 'Content-Type': 'application/json' } headers: { "Content-Type": "application/json" }
}) });
} }
import axios from '../service/http.service' import axios from "../service/http.service";
import { import { sapi } from "../config";
sapi import qs from "qs";
} from '../config'
import qs from 'qs'
// 获取上传批次号 // 获取上传批次号
export function getuploadNumber () { export function getuploadNumber() {
// params=qs.stringify(params) // params=qs.stringify(params)
return axios.get(`${sapi}/api/resume/upload/batchNum`, { return axios.get(`${sapi}/api/resume/upload/batchNum`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 上传文件 // 上传文件
export function uploadfile (parmars) { export function uploadfile(parmars) {
return axios.post(`${sapi}/api/resume/upload`, parmars, { return axios.post(`${sapi}/api/resume/upload`, parmars, {
headers: { headers: {
// 'Content-Type':'multipart/form-data', // 'Content-Type':'multipart/form-data',
...@@ -21,29 +19,29 @@ export function uploadfile (parmars) { ...@@ -21,29 +19,29 @@ export function uploadfile (parmars) {
contentType: false, contentType: false,
async: false async: false
} }
}) });
} }
// 查询上传列表记录 // 查询上传列表记录
export function serchList (parmars) { export function serchList(parmars) {
return axios.post(`${sapi}/api/resume/upload/history`, parmars, { return axios.post(`${sapi}/api/resume/upload/history`, parmars, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 查询简历详情 // 查询简历详情
export function serchRESUMEdetail (parmars) { export function serchRESUMEdetail(parmars) {
return axios.get(`${sapi}/api/html/get/${parmars.uid}`, { return axios.get(`${sapi}/api/html/get/${parmars.uid}`, {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
// 查询简历详情 // 查询简历详情
export function deleteREsumeUPLOad (deleteallArr) { export function deleteREsumeUPLOad(deleteallArr) {
return axios.post(`${sapi}/api/resume/delete`, JSON.stringify(deleteallArr), { return axios.post(`${sapi}/api/resume/delete`, JSON.stringify(deleteallArr), {
headers: { headers: {
'Content-Type': 'application/json' "Content-Type": "application/json"
} }
}) });
} }
...@@ -71,6 +71,4 @@ export default { ...@@ -71,6 +71,4 @@ export default {
} }
</script> </script>
<style lang="less" rel="stylesheet/less" scoped> <style lang="less" rel="stylesheet/less" scoped></style>
</style>
<template> <template>
<div> <div>
<!-- bidirectional data binding(双向数据绑定) --> <!-- bidirectional data binding(双向数据绑定) -->
<Modal v-model='modal' :fullscreen='fullscreen'> <Modal v-model="modal" :fullscreen="fullscreen">
<Input v-model='value'></Input> <Input v-model="value"></Input>
<editor @getValue='getInfo' :uploadUrl='uploadUrl' :value='value' height='400px'></editor> <editor
<div slot='footer'> @getValue="getInfo"
<Button @click='getInfo'>获取内容</Button> :uploadUrl="uploadUrl"
:value="value"
height="400px"
></editor>
<div slot="footer">
<Button @click="getInfo">获取内容</Button>
</div> </div>
</Modal> </Modal>
<Form ref="formInline" :model="formInline" :rules="ruleInline" inline> <Form ref="formInline" :model="formInline" :rules="ruleInline" inline>
...@@ -16,56 +20,73 @@ ...@@ -16,56 +20,73 @@
</Input> </Input>
</FormItem> </FormItem>
<FormItem prop="password"> <FormItem prop="password">
<Input type="password" v-model="formInline.password" placeholder="Password"> <Input
type="password"
v-model="formInline.password"
placeholder="Password"
>
<Icon type="ios-lock-outline" slot="prepend"></Icon> <Icon type="ios-lock-outline" slot="prepend"></Icon>
</Input> </Input>
</FormItem> </FormItem>
<FormItem> <FormItem>
<Button type="primary" @click="handleSubmit('formInline')">Signin</Button> <Button type="primary" @click="handleSubmit('formInline')"
>Signin</Button
>
</FormItem> </FormItem>
</Form> </Form>
</div> </div>
</template> </template>
<script> <script>
import editor from './ckeditor.vue' import editor from "./ckeditor.vue";
import { sapi } from '../config/index.js' import { sapi } from "../config/index.js";
import localStorage from '../service/localstorage.service.js' import localStorage from "../service/localstorage.service.js";
export default { export default {
data () { data() {
return { return {
modal: true, modal: true,
fullscreen: true, fullscreen: true,
content: '<h2>I am Example</h2>', content: "<h2>I am Example</h2>",
content1: '<h2>I am Example</h2>', content1: "<h2>I am Example</h2>",
uploadUrl: `${sapi}/api/ckeditor/uploadImage?token=${localStorage.get('token')}&&backUrl=/getimage`, uploadUrl: `${sapi}/api/ckeditor/uploadImage?token=${localStorage.get(
value: '22', "token"
)}&&backUrl=/getimage`,
value: "22",
editorOption: { editorOption: {
// some quill options // some quill options
}, },
formInline: { formInline: {
user: '', user: "",
password: '' password: ""
}, },
ruleInline: { ruleInline: {
user: [ user: [
{ {
required: false, required: false,
message: 'Please fill in the user name', message: "Please fill in the user name",
trigger: 'blur', trigger: "blur",
pattern: /^1[3456789]\d{9}$/, pattern: /^1[3456789]\d{9}$/,
validator: function (rule, value, call) { validator: function(rule, value, call) {
console.log(rule, value) console.log(rule, value);
return call(new Error()) return call(new Error());
} }
} }
], ],
password: [ password: [
{ required: true, message: 'Please fill in the password.', trigger: 'blur' }, {
{ type: 'string', min: 6, message: 'The password length cannot be less than 6 bits', trigger: 'blur' } required: true,
] message: "Please fill in the password.",
trigger: "blur"
},
{
type: "string",
min: 6,
message: "The password length cannot be less than 6 bits",
trigger: "blur"
} }
]
} }
};
}, },
watch: {}, watch: {},
components: { components: {
...@@ -74,10 +95,10 @@ export default { ...@@ -74,10 +95,10 @@ export default {
// manually control the data synchronization // manually control the data synchronization
// 如果需要手动控制数据同步,父组件需要显式地处理changed事件 // 如果需要手动控制数据同步,父组件需要显式地处理changed事件
methods: { methods: {
getInfo (value) { getInfo(value) {
console.log(value) console.log(value);
}, },
handleSubmit (name) { handleSubmit(name) {
// this.$refs[name].validate((valid) => { // this.$refs[name].validate((valid) => {
// if (valid) { // if (valid) {
// this.$Message.success('Success!'); // this.$Message.success('Success!');
...@@ -85,15 +106,12 @@ export default { ...@@ -85,15 +106,12 @@ export default {
// this.$Message.error('Fail!'); // this.$Message.error('Fail!');
// } // }
// }) // })
this.$refs[name].validateField('user', (error) => { this.$refs[name].validateField("user", error => {
console.log('------', error) console.log("------", error);
}) });
} }
}, },
computed: { computed: {},
}, mounted() {}
mounted () { };
}
}
</script> </script>
...@@ -2,24 +2,30 @@ ...@@ -2,24 +2,30 @@
<div></div> <div></div>
</template> </template>
<script> <script>
function GetQueryString(name) {
function GetQueryString (name) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i') var r = window.location.search.substr(1).match(reg); // 获取url中"?"符后的字符串并正则匹配
var r = window.location.search.substr(1).match(reg) // 获取url中"?"符后的字符串并正则匹配 var context = "";
var context = '' if (r != null) {
if (r != null) { context = r[2] } context = r[2];
reg = null }
r = null reg = null;
return context == null || context == '' || context == 'undefined' ? '' : decodeURIComponent(context) r = null;
return context == null || context == "" || context == "undefined"
? ""
: decodeURIComponent(context);
} }
export default { export default {
data () { data() {
return {} return {};
}, },
mounted () { mounted() {
console.log(777) console.log(777);
window.parent.CKEDITOR.tools.callFunction(GetQueryString('CKEditorFuncNum'), GetQueryString('ImageUrl'), GetQueryString('Message')) window.parent.CKEDITOR.tools.callFunction(
GetQueryString("CKEditorFuncNum"),
GetQueryString("ImageUrl"),
GetQueryString("Message")
);
} }
} };
</script> </script>
<template> <template>
<Row id="home" class="home"> <Row id="home" class="home">
<loading v-show='showLoading'></loading> <loading v-show="showLoading"></loading>
<Col span="3" class="aside" style="width:17%;height:100%;overflow: auto;"> <Col span="3" class="aside" style="width:17%;height:100%;overflow: auto;">
<img src="http://xyqbui.lkbang.net/image/homelogo.png" alt="" style="height:70px"> <img
<Menu style="width: 100%;" ref='subMenu' :active-name="levelThreeName" :open-names="levelTwoName" @on-select="go"> src="http://xyqbui.lkbang.net/image/homelogo.png"
<template v-for="(menu) in childMenu" > alt=""
<Submenu :name="menu.name" :key="menu.name" v-show='!(isAdmin==false&&menu.item=="账户管理")'> style="height:70px"
/>
<Menu
style="width: 100%;"
ref="subMenu"
:active-name="levelThreeName"
:open-names="levelTwoName"
@on-select="go"
>
<template v-for="menu in childMenu">
<Submenu
:name="menu.name"
:key="menu.name"
v-show="!(isAdmin == false && menu.item == '账户管理')"
>
<template slot="title"> <template slot="title">
<Icon :type="menu.icon" style="font-size:20px;font-weight:bold"/> <Icon :type="menu.icon" style="font-size:20px;font-weight:bold" />
{{menu.item}} {{ menu.item }}
</template> </template>
<MenuItem v-for="(child,index) in menu.child" :key="index" :name="child.name" @click="go" :active-name="levelThreeName">{{child.item}}</MenuItem> <MenuItem
v-for="(child, index) in menu.child"
:key="index"
:name="child.name"
@click="go"
:active-name="levelThreeName"
>{{ child.item }}</MenuItem
>
</Submenu> </Submenu>
</template> </template>
</Menu> </Menu>
...@@ -18,16 +39,26 @@ ...@@ -18,16 +39,26 @@
<Col span="21" class="content" style="width:83%;height:100%;"> <Col span="21" class="content" style="width:83%;height:100%;">
<Row class="header" style="height:50px;"> <Row class="header" style="height:50px;">
<Col span="20"> <Col span="20">
<Menu mode="horizontal" :active-name="levelOneName" @on-select="selectMenu"> <Menu
<MenuItem v-for="menu in menuList" :name="menu.name" :key="menu.name" > mode="horizontal"
{{menu.item}} :active-name="levelOneName"
@on-select="selectMenu"
>
<MenuItem
v-for="menu in menuList"
:name="menu.name"
:key="menu.name"
>
{{ menu.item }}
</MenuItem> </MenuItem>
</Menu> </Menu>
</Col> </Col>
<Col span="2" class="account" style="text-align:right;"> <Col span="2" class="account" style="text-align:right;">
<span style="display:inline-block;line-height:6%;margin-left:30%;">{{massage}}</span> <span style="display:inline-block;line-height:6%;margin-left:30%;">{{
massage
}}</span>
</Col> </Col>
<Col span="1" class="sign-out" > <Col span="1" class="sign-out">
<a @click="loginOut" style="float:right">退出</a> <a @click="loginOut" style="float:right">退出</a>
</Col> </Col>
</Row> </Row>
...@@ -38,131 +69,148 @@ ...@@ -38,131 +69,148 @@
</Row> </Row>
</template> </template>
<script> <script>
import { getpersonMassage, loginOUT, adoptOneSeeResumeList, getChannelMassage, judeAdmin } from '../api/home.server.js' import {
import localstorage from '../service/localstorage.service.js' getpersonMassage,
import loading from '../components/loading.vue' loginOUT,
import { mapState } from 'vuex' adoptOneSeeResumeList,
getChannelMassage,
judeAdmin
} from "../api/home.server.js";
import localstorage from "../service/localstorage.service.js";
import loading from "../components/loading.vue";
import { mapState } from "vuex";
export default { export default {
data () { data() {
return { return {
massage: '', massage: "",
isAdmin: false, isAdmin: false,
arr: [], arr: [],
biaoshi: '', biaoshi: "",
channelARR: [], channelARR: [],
isadmin: '', isadmin: "",
pageindex: 0, pageindex: 0,
pageSize: 10, pageSize: 10,
condition: '', condition: "",
xiabiao: '', xiabiao: "",
itemSelect: '', itemSelect: "",
type: '', type: "",
levelOneName: '1', levelOneName: "1",
levelTwoName: ['1-1', '2-1', '3-1', '4-1'], levelTwoName: ["1-1", "2-1", "3-1", "4-1"],
levelThreeName: '1-1-1', levelThreeName: "1-1-1",
menuList: [ menuList: [
{ {
name: '1', name: "1",
item: '简历管理', item: "简历管理",
loadMenu: true, loadMenu: true,
child: [ child: [
{ {
name: '1-1', name: "1-1",
item: '全部管理', item: "全部管理",
icon: 'ios-apps-outline', icon: "ios-apps-outline",
child: [ child: [
{ {
name: '1-1-1', name: "1-1-1",
item: '全部简历', item: "全部简历",
route: '/allResume' route: "/allResume"
} }
] ]
}, },
{ {
name: '1-2', name: "1-2",
item: '渠道简历', item: "渠道简历",
icon: 'ios-list', icon: "ios-list",
child: [] child: []
}] }
]
}, },
{ {
name: '2', name: "2",
item: '面试管理', item: "面试管理",
child: [ child: [
{ {
name: '2-1', name: "2-1",
item: '面试管理', item: "面试管理",
icon: 'ios-paper-outline', icon: "ios-paper-outline",
child: [ child: [
{ {
name: '2-1-1', name: "2-1-1",
item: '全部简历', item: "全部简历",
route: '/interview' route: "/interview"
}] }
}] ]
}
]
}, },
{ {
name: '3', name: "3",
item: '上传简历', item: "上传简历",
child: [{
name: '3-1',
item: '上传简历',
icon: 'ios-cloud-upload-outline',
child: [ child: [
{ {
name: '3-1-1', name: "3-1",
item: '上传简历', item: "上传简历",
route: '/upload' icon: "ios-cloud-upload-outline",
}] child: [
}] {
name: "3-1-1",
item: "上传简历",
route: "/upload"
}
]
}
]
}, },
{ {
name: '4', name: "4",
item: '系统管理', item: "系统管理",
isAdmin: true, isAdmin: true,
child: [{ child: [
name: '4-1', {
item: '账户管理', name: "4-1",
icon: 'ios-contact-outline', item: "账户管理",
icon: "ios-contact-outline",
show: true, show: true,
child: [{ child: [
name: '4-1-1', {
item: '账户管理', name: "4-1-1",
route: '/account' item: "账户管理",
}] route: "/account"
}
]
}, },
{ {
name: '4-2', name: "4-2",
item: '邮箱管理', item: "邮箱管理",
icon: 'ios-mail-outline', icon: "ios-mail-outline",
child: [{ child: [
name: '4-2-1', {
item: '邮箱管理', name: "4-2-1",
route: '/emailMange' item: "邮箱管理",
}] route: "/emailMange"
}
]
}, },
{ {
name: '4-3', name: "4-3",
item: '二维码管理', item: "二维码管理",
icon: 'ios-qr-scanner', icon: "ios-qr-scanner",
child: [ child: [
{ {
name: '4-3-1', name: "4-3-1",
item: '二维码管理', item: "二维码管理",
route: '/QRcode' route: "/QRcode"
}] }
]
} }
] ]
} }
], ],
childMenu: [] childMenu: []
} };
}, },
watch: { watch: {
$route (to, from) { $route(to, from) {
if (to.params.fromInterview) { if (to.params.fromInterview) {
this.getActiveName() this.getActiveName();
} }
} }
}, },
...@@ -175,181 +223,189 @@ export default { ...@@ -175,181 +223,189 @@ export default {
loading loading
}, },
methods: { methods: {
go (name) { go(name) {
this.levelThreeName = name this.levelThreeName = name;
this.childMenu.map(par => { this.childMenu.map(par => {
par.child.map(child => { par.child.map(child => {
if (child.name == name) { if (child.name == name) {
this.$router.push(child.route) this.$router.push(child.route);
} }
}) });
}) });
}, },
async selectMenu (name, refesh) { async selectMenu(name, refesh) {
// // refesh是否为刷新页面 // // refesh是否为刷新页面
this.levelOneName = name this.levelOneName = name;
const menus = this.menuList.filter(v => name === v.name) const menus = this.menuList.filter(v => name === v.name);
this.childMenu = menus.length > 0 ? menus[0].child : this.menuList[0].child this.childMenu =
if (!refesh) { // 点击菜单默认展示第一个菜单 menus.length > 0 ? menus[0].child : this.menuList[0].child;
this.levelTwoName = [] if (!refesh) {
const initName = this.getInitName(name, menus[0]) // 点击菜单默认展示第一个菜单
this.levelTwoName.push(initName.levelTwoName) this.levelTwoName = [];
this.levelThreeName = initName.levelThreeName const initName = this.getInitName(name, menus[0]);
this.levelTwoName.push(initName.levelTwoName);
this.levelThreeName = initName.levelThreeName;
} }
if (menus[0].loadMenu) { // 简历管理模块需要加载渠道简历 if (menus[0].loadMenu) {
await this.getChannelMenu() // 简历管理模块需要加载渠道简历
await this.getChannelMenu();
} }
if (refesh && this.$route.path.indexOf('channel') > -1) { if (refesh && this.$route.path.indexOf("channel") > -1) {
this.levelThreeName = this.$route.path.split('/')[2] this.levelThreeName = this.$route.path.split("/")[2];
} }
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.subMenu.updateOpened() this.$refs.subMenu.updateOpened();
this.$refs.subMenu.updateActiveName() this.$refs.subMenu.updateActiveName();
}) });
this.go(this.levelThreeName) this.go(this.levelThreeName);
}, },
// 获取个人信息 // 获取个人信息
getmassage () { getmassage() {
getpersonMassage().then(res => { getpersonMassage().then(res => {
this.massage = res.data.body && res.data.body.userName || '' this.massage = (res.data.body && res.data.body.userName) || "";
}) });
}, },
// 用户退出 // 用户退出
loginOut () { loginOut() {
loginOUT().then(res => { loginOUT().then(res => {
if (res.data.success == true) { if (res.data.success == true) {
localstorage.remove('token') localstorage.remove("token");
localstorage.remove('isADMIN') localstorage.remove("isADMIN");
this.$router.replace('/login') this.$router.replace("/login");
} }
}) });
}, },
getChannelMenu () { getChannelMenu() {
this.menuList[0].child[1].child = [] this.menuList[0].child[1].child = [];
return getChannelMassage().then(res => { return getChannelMassage().then(res => {
if (res.data.status == false || !res.data.success) { if (res.data.status == false || !res.data.success) {
return return;
} }
this.channelARR = res.data.body || [] this.channelARR = res.data.body || [];
this.channelARR.map((item, index) => { this.channelARR.map((item, index) => {
var obj = { var obj = {
name: `${item.sourceName}`, name: `${item.sourceName}`,
item: item.sourceName, item: item.sourceName,
route: `/channel/${item.sourceCode}?handUpload=${item.handUpload == null ? '' : item.handUpload}` route: `/channel/${item.sourceCode}?handUpload=${
} item.handUpload == null ? "" : item.handUpload
this.menuList[0].child[1].child.push(obj) }`
}) };
}) this.menuList[0].child[1].child.push(obj);
});
});
}, },
getActiveName (change) { getActiveName(change) {
const pathName = this.$route.path const pathName = this.$route.path;
if (pathName.indexOf('channel') > -1) { if (pathName.indexOf("channel") > -1) {
this.levelOneName = '1' this.levelOneName = "1";
this.levelThreeName = pathName.split('/')[2] this.levelThreeName = pathName.split("/")[2];
this.levelTwoName = [] this.levelTwoName = [];
this.levelTwoName.push('1-2') this.levelTwoName.push("1-2");
this.selectMenu(this.levelOneName, 'refresh') this.selectMenu(this.levelOneName, "refresh");
return return;
} }
this.menuList.map(parent => { this.menuList.map(parent => {
parent.child.map(child => { parent.child.map(child => {
child.child.map(grandson => { child.child.map(grandson => {
if (grandson.route == pathName) { if (grandson.route == pathName) {
this.levelThreeName = grandson.name this.levelThreeName = grandson.name;
this.levelOneName = parent.name this.levelOneName = parent.name;
this.levelTwoName = [] this.levelTwoName = [];
this.levelTwoName.push(child.name) this.levelTwoName.push(child.name);
} }
}) });
}) });
}) });
this.selectMenu(this.levelOneName, 'refresh') this.selectMenu(this.levelOneName, "refresh");
}, },
getInitName (name, menu, child) { getInitName(name, menu, child) {
// 超级管理员 // 超级管理员
const isAdmin = menu.isAdmin const isAdmin = menu.isAdmin;
const hightMenu = { const hightMenu = {
levelTwoName: '', levelTwoName: "",
levelThreeName: '' levelThreeName: ""
} };
if (isAdmin || isAdmin == undefined) { // 默认展示一级菜单 if (isAdmin || isAdmin == undefined) {
hightMenu.levelTwoName = menu.child[0].name // 默认展示一级菜单
hightMenu.levelThreeName = menu.child[0].child[0].name hightMenu.levelTwoName = menu.child[0].name;
} else if (isAdmin == false) { // 展示二级菜单 hightMenu.levelThreeName = menu.child[0].child[0].name;
hightMenu.levelTwoName = menu.child[1].name } else if (isAdmin == false) {
hightMenu.levelThreeName = menu.child[1].child[0].name // 展示二级菜单
hightMenu.levelTwoName = menu.child[1].name;
hightMenu.levelThreeName = menu.child[1].child[0].name;
} }
return hightMenu return hightMenu;
}, },
// 判断是否为超级管理员 // 判断是否为超级管理员
judgeadmin () { judgeadmin() {
judeAdmin().then(res => { judeAdmin().then(res => {
this.isAdmin = res.data.body this.isAdmin = res.data.body;
this.menuList[3].isAdmin = this.isAdmin this.menuList[3].isAdmin = this.isAdmin;
}) });
}, },
goBack () { goBack() {
this.getActiveName() this.getActiveName();
} }
}, },
mounted () { mounted() {
this.getmassage() this.getmassage();
this.getActiveName() this.getActiveName();
this.judgeadmin() this.judgeadmin();
if (window.history && window.history.pushState) { if (window.history && window.history.pushState) {
history.pushState(null, null, document.URL) history.pushState(null, null, document.URL);
window.addEventListener('popstate', this.goBack, false) window.addEventListener("popstate", this.goBack, false);
} }
}, },
destroyed () { destroyed() {
window.removeEventListener('popstate', this.goBack, false) window.removeEventListener("popstate", this.goBack, false);
} }
} };
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.home{ .home {
height: 100%; height: 100%;
overflow: hidden; overflow: hidden;
.aside{ .aside {
border-right: 1px solid #dcdee2; border-right: 1px solid #dcdee2;
box-shadow: #dcdee2 0 0 6px 1px; box-shadow: #dcdee2 0 0 6px 1px;
height: 100%; height: 100%;
img{ img {
height: 49px; height: 49px;
width: 100%; width: 100%;
padding: 3% 28%; padding: 3% 28%;
} }
.ivu-menu{ .ivu-menu {
.ivu-menu-item{ .ivu-menu-item {
padding-left: 49px !important; padding-left: 49px !important;
} }
} }
} }
.content{ .content {
.header{ .header {
display: flex; display: flex;
align-items: center;height: 55px; align-items: center;
height: 55px;
border-bottom: 1px solid #dcdee2; border-bottom: 1px solid #dcdee2;
line-height: 55px; line-height: 55px;
border-bottom: 1px solid rgb(220, 222, 226); border-bottom: 1px solid rgb(220, 222, 226);
font-size: 14px; font-size: 14px;
overflow:hidden; overflow: hidden;
.sign-out{ .sign-out {
line-height: 6% line-height: 6%;
} }
.ivu-menu{ .ivu-menu {
height: 43px; height: 43px;
line-height: 43px; line-height: 43px;
.ivu-menu-item{ .ivu-menu-item {
padding: 0 13px; padding: 0 13px;
margin: 0 49px; margin: 0 49px;
} }
&:after{ &:after {
height: 0; height: 0;
} }
} }
} }
} }
} }
</style> </style>
<template> <template>
<div class='loadingmark'> <div class="loadingmark">
<div class="loading-audio"> <div class="loading-audio">
<svg :width="width+'px'" :height="height+'px'" xmlns="http://www.w3.org/2000/svg" :viewBox="viewBox" preserveAspectRatio="xMidYMid"> <svg
:width="width + 'px'"
:height="height + 'px'"
xmlns="http://www.w3.org/2000/svg"
:viewBox="viewBox"
preserveAspectRatio="xMidYMid"
>
<g transform="translate(20 50)"> <g transform="translate(20 50)">
<circle cx="0" cy="0" r="7" fill="#11a181" transform="scale(0.99275 0.99275)" class='circle'/> <circle
cx="0"
cy="0"
r="7"
fill="#11a181"
transform="scale(0.99275 0.99275)"
class="circle"
/>
</g> </g>
<g transform="translate(40 50)"> <g transform="translate(40 50)">
<circle cx="0" cy="0" r="7" fill="#11a181" transform="scale(0.773605 0.773605)" class='circle1'/> <circle
cx="0"
cy="0"
r="7"
fill="#11a181"
transform="scale(0.773605 0.773605)"
class="circle1"
/>
</g> </g>
<g transform="translate(60 50)"> <g transform="translate(60 50)">
<circle cx="0" cy="0" r="7" fill="#11a181" transform="scale(0.42525 0.42525)" class='circle2'/> <circle
cx="0"
cy="0"
r="7"
fill="#11a181"
transform="scale(0.42525 0.42525)"
class="circle2"
/>
</g> </g>
<g transform="translate(80 50)"> <g transform="translate(80 50)">
<circle cx="0" cy="0" r="7" fill="#11a181" transform="scale(0.113418 0.113418)" class='circle3'/> <circle
cx="0"
cy="0"
r="7"
fill="#11a181"
transform="scale(0.113418 0.113418)"
class="circle3"
/>
</g> </g>
</svg> </svg>
</div> </div>
...@@ -21,7 +55,7 @@ ...@@ -21,7 +55,7 @@
</template> </template>
<script> <script>
export default { export default {
name: 'loading', name: "loading",
props: { props: {
width: { width: {
type: Number, type: Number,
...@@ -32,70 +66,94 @@ export default { ...@@ -32,70 +66,94 @@ export default {
default: 80 default: 80
} }
}, },
created () { created() {
this.viewBox = '0 0' + ' ' + (this.width + 10) + ' ' + this.height this.viewBox = "0 0" + " " + (this.width + 10) + " " + this.height;
}, },
data () { data() {
return { return {
viewBox: '' viewBox: ""
};
} }
} };
}
</script> </script>
<style lang='less' scoped> <style lang="less" scoped>
.loadingmark{ .loadingmark {
position:absolute; position: absolute;
top:0px; top: 0px;
left:0px; left: 0px;
width:100%; width: 100%;
height:100%; height: 100%;
background-color: rgba(255,255,255,0.6); background-color: rgba(255, 255, 255, 0.6);
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
flex-direction: column; flex-direction: column;
z-index: 1600; z-index: 1600;
} }
.loading-audio { .loading-audio {
width: 100px; width: 100px;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
// background-image: url('data:image/svg+xml,<svg width="135" height="140" viewBox="0 0 135 140" xmlns="http://www.w3.org/2000/svg" fill="#2d8cf0"><rect y="10" width="15" height="120" rx="6"><animate attributeName="height" begin="0.5s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0.5s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect><rect x="30" y="10" width="15" height="120" rx="6"><animate attributeName="height" begin="0.25s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0.25s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect><rect x="60" width="15" height="140" rx="6"><animate attributeName="height" begin="0s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect><rect x="90" y="10" width="15" height="120" rx="6"><animate attributeName="height" begin="0.25s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0.25s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect><rect x="120" y="10" width="15" height="120" rx="6"><animate attributeName="height" begin="0.5s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0.5s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect></svg>'); // background-image: url('data:image/svg+xml,<svg width="135" height="140" viewBox="0 0 135 140" xmlns="http://www.w3.org/2000/svg" fill="#2d8cf0"><rect y="10" width="15" height="120" rx="6"><animate attributeName="height" begin="0.5s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0.5s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect><rect x="30" y="10" width="15" height="120" rx="6"><animate attributeName="height" begin="0.25s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0.25s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect><rect x="60" width="15" height="140" rx="6"><animate attributeName="height" begin="0s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect><rect x="90" y="10" width="15" height="120" rx="6"><animate attributeName="height" begin="0.25s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0.25s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect><rect x="120" y="10" width="15" height="120" rx="6"><animate attributeName="height" begin="0.5s" dur="1s" values="120;110;100;90;80;70;60;50;40;140;120" calcMode="linear" repeatCount="indefinite" /><animate attributeName="y" begin="0.5s" dur="1s" values="10;15;20;25;30;35;40;45;50;0;10" calcMode="linear" repeatCount="indefinite" /></rect></svg>');
} }
.circle{ .circle {
animation: ani-demo-spin 1s linear infinite; animation: ani-demo-spin 1s linear infinite;
animation-delay:-0.375s; animation-delay: -0.375s;
}
@keyframes ani-demo-spin {
from {
transform: scale(0);
} }
@keyframes ani-demo-spin { 50% {
from { transform: scale(0);} transform: scale(1);
50% { transform: scale(1)}
to { transform: scale(0)}
} }
.circle1{ to {
transform: scale(0);
}
}
.circle1 {
animation: ani-demo-spin1 1s linear infinite; animation: ani-demo-spin1 1s linear infinite;
animation-delay:-0.25s; animation-delay: -0.25s;
}
@keyframes ani-demo-spin1 {
from {
transform: scale(0);
}
50% {
transform: scale(1);
} }
@keyframes ani-demo-spin1 { to {
from { transform: scale(0);} transform: scale(0);
50% { transform: scale(1)}
to { transform: scale(0)}
} }
.circle2{ }
.circle2 {
animation: ani-demo-spin2 1s linear infinite; animation: ani-demo-spin2 1s linear infinite;
animation-delay:-0.125s; animation-delay: -0.125s;
}
@keyframes ani-demo-spin2 {
from {
transform: scale(0);
}
50% {
transform: scale(1);
} }
@keyframes ani-demo-spin2 { to {
from { transform: scale(0);} transform: scale(0);
50% { transform: scale(1)}
to { transform: scale(0)}
} }
.circle3{ }
.circle3 {
animation: ani-demo-spin3 1s linear infinite; animation: ani-demo-spin3 1s linear infinite;
animation-delay:0s; animation-delay: 0s;
}
@keyframes ani-demo-spin3 {
from {
transform: scale(0);
} }
@keyframes ani-demo-spin3 { 50% {
from { transform: scale(0);} transform: scale(1);
50% { transform: scale(1)}
to { transform: scale(0)}
} }
to {
transform: scale(0);
}
}
</style> </style>
const sapi = 'http://recruitapi-ai3.liangkebang.net' const sapi = "http://recruitapi-ai3.liangkebang.net";
export { export { sapi };
sapi
}
module.exports = process.env.NODE_ENV === 'production' ? require('./prod.config.js') : require('./env.config.js') module.exports =
process.env.NODE_ENV === "production"
? require("./prod.config.js")
: require("./env.config.js");
const sapi = '//api.stantoo.com' const sapi = "//api.stantoo.com";
export { export { sapi };
sapi
}
...@@ -3,60 +3,233 @@ ...@@ -3,60 +3,233 @@
<!-- <Spin size="large" fix v-if="spinShow" style="font-size:25px">加载中...</Spin> --> <!-- <Spin size="large" fix v-if="spinShow" style="font-size:25px">加载中...</Spin> -->
<div class="interview-left"> <div class="interview-left">
<div class="leftcontentTop" style="height:100px;display:none"> <div class="leftcontentTop" style="height:100px;display:none">
<div style="height:90%;float:left;width:30%;background:rgb(0,146,255);margin-left:1%;margin-top:10px"></div> <div
<div style="height:90%;float:left;width:30%;background:rgb(253,85,83);margin-left:3%;margin-top:10px"></div> style="height:90%;float:left;width:30%;background:rgb(0,146,255);margin-left:1%;margin-top:10px"
<div style="height:90%;float:left;width:30%;background:rgb(0,176,160);margin-left:3%;margin-top:10px"></div> ></div>
<div
style="height:90%;float:left;width:30%;background:rgb(253,85,83);margin-left:3%;margin-top:10px"
></div>
<div
style="height:90%;float:left;width:30%;background:rgb(0,176,160);margin-left:3%;margin-top:10px"
></div>
</div> </div>
<div style="float:left;margin-left:1%;width:99%;overflow-y: auto;height:95%;margin-bottom:40px"> <div
<div style="margin:50px auto;width:300px;height:200px;line-height:200px;text-align:center;font-size:20px;color:LightGray" v-show="Essentialinformation.length==0">暂无数据</div> style="float:left;margin-left:1%;width:99%;overflow-y: auto;height:95%;margin-bottom:40px"
<div class="leftcontentContent" v-for="(item,index) in Essentialinformation " :key='index'> >
<div
style="margin:50px auto;width:300px;height:200px;line-height:200px;text-align:center;font-size:20px;color:LightGray"
v-show="Essentialinformation.length == 0"
>
暂无数据
</div>
<div
class="leftcontentContent"
v-for="(item, index) in Essentialinformation"
:key="index"
>
<div class="contentMassage"> <div class="contentMassage">
<p style="margin-top:7px"> <p style="margin-top:7px">
<span style="margin-left:10px;overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;cursor:pointer" @click="Seedetail(item.id, item.uid,item.flowStatus)">{{item.ownerName}} |</span> <span
<span @click="Seedetail(item.id, item.uid ,item.flowStatus)" style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;cursor:pointer">{{item.ownerMobile}} |</span> style="margin-left:10px;overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;cursor:pointer"
<span @click="Seedetail(item.id, item.uid,item.flowStatus)" style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;width:20%;cursor:pointer">{{item.ownerExpectTitles}}</span> @click="Seedetail(item.id, item.uid, item.flowStatus)"
<span style="color:#2d8cf0;float:right;margin-right:5%;cursor:pointer" @click="updateInterview(item.id,item.interviewerName,item.seeTime,item.inviterName)">更改约面信息</span> >{{ item.ownerName }} |</span
>
<span
@click="Seedetail(item.id, item.uid, item.flowStatus)"
style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;cursor:pointer"
>{{ item.ownerMobile }} |</span
>
<span
@click="Seedetail(item.id, item.uid, item.flowStatus)"
style="overflow: hidden;text-overflow:ellipsis;white-space: nowrap;display:inline-block;width:20%;cursor:pointer"
>{{ item.ownerExpectTitles }}</span
>
<span
style="color:#2d8cf0;float:right;margin-right:5%;cursor:pointer"
@click="
updateInterview(
item.id,
item.interviewerName,
item.seeTime,
item.inviterName
)
"
>更改约面信息</span
>
</p> </p>
<p style="margin-top:8px;color:Grey"> <p style="margin-top:8px;color:Grey">
<span style="margin-left:10px;display:inline-block;width:22%;">邀约人: {{item.inviterName}} </span> <span style="margin-left:10px;display:inline-block;width:22%;"
<span style="margin-left:7%;display:inline-block;width:22%;">面试官: {{item.interviewerName}}</span> >邀约人: {{ item.inviterName }}
<span style="float:right;margin-right:5%">面试时间:{{ item.seeTime}}</span> </span>
<span style="margin-left:7%;display:inline-block;width:22%;"
>面试官: {{ item.interviewerName }}</span
>
<span style="float:right;margin-right:5%"
>面试时间:{{ item.seeTime }}</span
>
</p> </p>
</div> </div>
<div class="contentState"> <div class="contentState">
<p style="margin-top:8px"> <p style="margin-top:8px">
<span style="margin-left:20px" @click="modal4=true">当前状态</span> <span style="margin-left:20px" @click="modal4 = true"
<span style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer" @click="Stopinterview(item.id)" v-if="item.flowStatus=='OPTION'">终止面试</span> >当前状态</span
<span style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer" @click="Stopinterview(item.id)" v-if="item.flowStatus=='TO_SEE'">终止面试</span> >
<span style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer" @click="Stopinterview(item.id)" v-if="item.flowStatus=='HAS_SEE'">终止面试</span> <span
<span style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer" @click="Stopinterview(item.id)" v-if="item.flowStatus=='SEE_FAIL'">终止面试</span> style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
<span style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer" @click="Stopinterview(item.id)" v-if="item.flowStatus=='INTERVIEW_FAIL'">终止面试</span> @click="Stopinterview(item.id)"
<span style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer" @click="Stopinterview(item.id)" v-if="item.flowStatus=='TO_SENT_OFFER'">终止面试</span> v-if="item.flowStatus == 'OPTION'"
<span style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer" @click="Stopinterview(item.id)" v-if="item.flowStatus=='TO_ENTRY'">终止面试</span> >终止面试</span
<span style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer" @click="Stopinterview(item.id)" v-if="item.flowStatus=='HAS_ENTRY'">终止面试</span> >
<span style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer" @click="Stopinterview(item.id)" v-if="item.flowStatus=='NO_ENTRY'">终止面试</span> <span
<span style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer" @click="Stopinterview(item.id)" v-if="item.flowStatus=='PASS'">终止面试</span> style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
<span style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer" @click="Stopinterview(item.id)" v-if="item.flowStatus=='HAS_SENT_OFFER'">终止面试</span> @click="Stopinterview(item.id)"
<span style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer" @click="Stopinterview(item.id)" v-if="item.flowStatus=='ARRIVED'">终止面试</span> v-if="item.flowStatus == 'TO_SEE'"
<span style="float:right;margin:0 20px 0 10px;color:#2d8cf0;cursor:pointer" @click="OPPeninterview(item.id,item.flowStatus)" v-if="item.flowStatus=='END'">重启面试</span> >终止面试</span
>
<span
style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@click="Stopinterview(item.id)"
v-if="item.flowStatus == 'HAS_SEE'"
>终止面试</span
>
<span
style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@click="Stopinterview(item.id)"
v-if="item.flowStatus == 'SEE_FAIL'"
>终止面试</span
>
<span
style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@click="Stopinterview(item.id)"
v-if="item.flowStatus == 'INTERVIEW_FAIL'"
>终止面试</span
>
<span
style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@click="Stopinterview(item.id)"
v-if="item.flowStatus == 'TO_SENT_OFFER'"
>终止面试</span
>
<span
style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@click="Stopinterview(item.id)"
v-if="item.flowStatus == 'TO_ENTRY'"
>终止面试</span
>
<span
style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@click="Stopinterview(item.id)"
v-if="item.flowStatus == 'HAS_ENTRY'"
>终止面试</span
>
<span
style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@click="Stopinterview(item.id)"
v-if="item.flowStatus == 'NO_ENTRY'"
>终止面试</span
>
<span
style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@click="Stopinterview(item.id)"
v-if="item.flowStatus == 'PASS'"
>终止面试</span
>
<span
style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@click="Stopinterview(item.id)"
v-if="item.flowStatus == 'HAS_SENT_OFFER'"
>终止面试</span
>
<span
style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@click="Stopinterview(item.id)"
v-if="item.flowStatus == 'ARRIVED'"
>终止面试</span
>
<span
style="float:right;margin:0 20px 0 10px;color:#2d8cf0;cursor:pointer"
@click="OPPeninterview(item.id, item.flowStatus)"
v-if="item.flowStatus == 'END'"
>重启面试</span
>
</p> </p>
<p class="nowstatus" style="margin-top:8px;color:Grey"> <p class="nowstatus" style="margin-top:8px;color:Grey">
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='OPTION'">备选</span> <span
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='TO_SEE'">准备约面</span> style="margin:0 20px 0 20px"
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='HAS_SEE'">已邀约</span> v-if="item.flowStatus == 'OPTION'"
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='SEE_FAIL'">邀约失败</span> >备选</span
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='INTERVIEW_FAIL'">面试淘汰</span> >
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='TO_SENT_OFFER'">待offer</span> <span
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='TO_ENTRY'">待入职</span> style="margin:0 20px 0 20px"
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='HAS_ENTRY'">已入职</span> v-if="item.flowStatus == 'TO_SEE'"
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='NO_ENTRY'">未入职</span> >准备约面</span
<span style="margin:0 20px 0 20px;color:red" v-if="item.flowStatus=='END'">终止面试</span> >
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='PASS'">PASS</span> <span
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='HAS_SENT_OFFER'">已发offer</span> style="margin:0 20px 0 20px"
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='TO_RESULT'">面试结果待定</span> v-if="item.flowStatus == 'HAS_SEE'"
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='ARRIVED'">已到达</span> >已邀约</span
<span v-show="item.flowStatus!=='END'"> >
<select style="border:0;margin-right:10px;float:right;cursor:pointer" @change="selectchangeElement($event,item.id)" v-model='statusValue'> <span
style="margin:0 20px 0 20px"
v-if="item.flowStatus == 'SEE_FAIL'"
>邀约失败</span
>
<span
style="margin:0 20px 0 20px"
v-if="item.flowStatus == 'INTERVIEW_FAIL'"
>面试淘汰</span
>
<span
style="margin:0 20px 0 20px"
v-if="item.flowStatus == 'TO_SENT_OFFER'"
>待offer</span
>
<span
style="margin:0 20px 0 20px"
v-if="item.flowStatus == 'TO_ENTRY'"
>待入职</span
>
<span
style="margin:0 20px 0 20px"
v-if="item.flowStatus == 'HAS_ENTRY'"
>已入职</span
>
<span
style="margin:0 20px 0 20px"
v-if="item.flowStatus == 'NO_ENTRY'"
>未入职</span
>
<span
style="margin:0 20px 0 20px;color:red"
v-if="item.flowStatus == 'END'"
>终止面试</span
>
<span
style="margin:0 20px 0 20px"
v-if="item.flowStatus == 'PASS'"
>PASS</span
>
<span
style="margin:0 20px 0 20px"
v-if="item.flowStatus == 'HAS_SENT_OFFER'"
>已发offer</span
>
<span
style="margin:0 20px 0 20px"
v-if="item.flowStatus == 'TO_RESULT'"
>面试结果待定</span
>
<span
style="margin:0 20px 0 20px"
v-if="item.flowStatus == 'ARRIVED'"
>已到达</span
>
<span v-show="item.flowStatus !== 'END'">
<select
style="border:0;margin-right:10px;float:right;cursor:pointer"
@change="selectchangeElement($event, item.id)"
v-model="statusValue"
>
<option value="0" style="color:#2d8cf0">变更状态 ∨</option> <option value="0" style="color:#2d8cf0">变更状态 ∨</option>
<option value="1" style="color:#2d8cf0">已邀约 </option> <option value="1" style="color:#2d8cf0">已邀约 </option>
<option value="3" style="color:#2d8cf0">邀约失败</option> <option value="3" style="color:#2d8cf0">邀约失败</option>
...@@ -67,151 +240,357 @@ ...@@ -67,151 +240,357 @@
<option value="9" style="color:#2d8cf0">已入职</option> <option value="9" style="color:#2d8cf0">已入职</option>
</select> </select>
</span> </span>
<span v-show="item.flowStatus=='END'" style="float:right;margin-right:10px;"> <span
v-show="item.flowStatus == 'END'"
style="float:right;margin-right:10px;"
>
变更状态 ∨ 变更状态 ∨
</span> </span>
</p> </p>
</div> </div>
<div class="contentRecord" style="text-align:center"> <div class="contentRecord" style="text-align:center">
<p style="margin-top:3px"><span style="color:#2d8cf0;cursor:pointer" @click="RecordSEE(item.id,item.ownerName)">操作记录</span></p> <p style="margin-top:3px">
<p style="font-size:12px;color:Grey">最后操作人|<span style="margin-left:8px;text-align:center">{{item.d}}</span></p> <span
<p style="color:Grey">{{item.modifyTime}}</p> style="color:#2d8cf0;cursor:pointer"
@click="RecordSEE(item.id, item.ownerName)"
>操作记录</span
>
</p>
<p style="font-size:12px;color:Grey">
最后操作人|<span style="margin-left:8px;text-align:center">{{
item.d
}}</span>
</p>
<p style="color:Grey">{{ item.modifyTime }}</p>
</div> </div>
</div> </div>
</div> </div>
<div class="InpageBottom"> <div class="InpageBottom">
<Page :total="totalSize" show-elevator show-total @on-change="pageChange" @on-page-size-change="pageSizeChange" :current='pageIndex' :page-size='pageSize' style="text-align:center;margin-top:4px"></Page> <Page
:total="totalSize"
show-elevator
show-total
@on-change="pageChange"
@on-page-size-change="pageSizeChange"
:current="pageIndex"
:page-size="pageSize"
style="text-align:center;margin-top:4px"
></Page>
</div> </div>
</div> </div>
<div class="interview-right"> <div class="interview-right">
<Form :label-width="80" onsubmit="return false;" class='emailForm'> <Form :label-width="80" onsubmit="return false;" class="emailForm">
<FormItem label="关键词:" style="margin-top:20px;margin-left:1%"> <FormItem label="关键词:" style="margin-top:20px;margin-left:1%">
<Input placeholder="请输入关键词" style="width:80%" v-model="keywords" @keyup.enter.native="Sousuo()"/> <Input
placeholder="请输入关键词"
style="width:80%"
v-model="keywords"
@keyup.enter.native="Sousuo()"
/>
</FormItem> </FormItem>
<FormItem label="学历:" class="Education2"> <FormItem label="学历:" class="Education2">
<span v-for="(item,index) in Education2" style="cursor:pointer" :class="{'active2':index==clickIndex1}" @click="selectSeeElement(item.Num2,index)" :key="'Education2'+index" class="edu"> {{item.status2}}</span> <span
v-for="(item, index) in Education2"
style="cursor:pointer"
:class="{ active2: index == clickIndex1 }"
@click="selectSeeElement(item.Num2, index)"
:key="'Education2' + index"
class="edu"
>
{{ item.status2 }}</span
>
</FormItem> </FormItem>
<FormItem label="邀约人:" style="margin-top:20px"> <FormItem label="邀约人:" style="margin-top:20px">
<Select style="width:80%" placeholder="请选择" :label-in-value='true' @on-change="selectinterviewElement2"> <Select
<Option v-for="(item,index) in Inviter" :key="index" :value="index" >{{item}}</Option> style="width:80%"
placeholder="请选择"
:label-in-value="true"
@on-change="selectinterviewElement2"
>
<Option
v-for="(item, index) in Inviter"
:key="index"
:value="index"
>{{ item }}</Option
>
</Select> </Select>
</FormItem> </FormItem>
<FormItem label="面试官:" style="margin-top:20px"> <FormItem label="面试官:" style="margin-top:20px">
<Select style="width:80%;height:20px" :label-in-value='true' @on-change='selectinterviewElement' filterable remote <Select
style="width:80%;height:20px"
:label-in-value="true"
@on-change="selectinterviewElement"
filterable
remote
:remote-method="remoteMethod" :remote-method="remoteMethod"
:loading="loading1" placeholder='请输入面试官全名' clearable> :loading="loading1"
<Option v-for='(item, index) in options' :key='index' :value='item.name'>{{item.name}}({{item.email}})</Option> placeholder="请输入面试官全名"
clearable
>
<Option
v-for="(item, index) in options"
:key="index"
:value="item.name"
>{{ item.name }}({{ item.email }})</Option
>
</Select> </Select>
</FormItem> </FormItem>
<FormItem label="状态:" class="state2"> <FormItem label="状态:" class="state2">
<span v-for="(item,index) in state" style="cursor:pointer" :class="{'active2':item.sta==true}" @click="selectElement3(item.Num3,index,item.status3,item.sta)" :key="'state2'+index"> {{item.status3}}</span> <span
v-for="(item, index) in state"
style="cursor:pointer"
:class="{ active2: item.sta == true }"
@click="selectElement3(item.Num3, index, item.status3, item.sta)"
:key="'state2' + index"
>
{{ item.status3 }}</span
>
</FormItem> </FormItem>
</Form> </Form>
<Button type="primary" size='small' style="width:150px;margin-left:150px;font-size:15px" @click="Sousuo">搜索</Button> <Button
type="primary"
size="small"
style="width:150px;margin-left:150px;font-size:15px"
@click="Sousuo"
>搜索</Button
>
</div> </div>
<!-- 操作记录弹出框 --> <!-- 操作记录弹出框 -->
<Modal <Modal
v-model="recordModal" v-model="recordModal"
width='550px' width="550px"
:footer-hide="true" :footer-hide="true"
:closable='false'> :closable="false"
>
<div> <div>
<h2 style="text-align: center;color:black" >操作记录</h2> <h2 style="text-align: center;color:black">操作记录</h2>
<h2 style="text-align: center;color:#999999;margin-top:10px">候选人:{{toseename}}</h2> <h2 style="text-align: center;color:#999999;margin-top:10px">
<div v-for="(item,index) in recordList" :key="index"> 候选人:{{ toseename }}
</h2>
<div v-for="(item, index) in recordList" :key="index">
<p style="margin-top:30px;" class="Recode"> <p style="margin-top:30px;" class="Recode">
<span style="display:inline-block;width:70px;margin-left:15px;">{{item.approveUserName}}</span> <span style="display:inline-block;width:70px;margin-left:15px;">{{
<span style="display:inline-block;width:140px">{{item.dateTime}}</span> item.approveUserName
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='INTERVIEW_OK'">面试合适</span> }}</span>
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='INTERVIEW_FAIL'">面试淘汰</span> <span style="display:inline-block;width:140px">{{
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='END'">终止面试</span> item.dateTime
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='SEE_FAIL'">约面失败</span> }}</span>
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='NO_ENTRY'">未入职</span> <span
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='TO_SEE'">准备约面</span> style="color:#0092FF;display:inline-block;width:70px;"
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='HAS_SEE'">已邀约</span> v-if="item.previousState == 'INTERVIEW_OK'"
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='OPTION'">备选</span> >面试合适</span
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='TO_SENT_OFFER'">待Offer</span> >
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='HAS_SENT_OFFER'">已发offer</span> <span
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='TO_ENTRY'">待入职</span> style="color:#0092FF;display:inline-block;width:70px;"
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='HAS_ENTRY'">已入职</span> v-if="item.previousState == 'INTERVIEW_FAIL'"
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='PASS'">PASS</span> >面试淘汰</span
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='TO_DO'">待处理</span> >
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='RESET'">重启面试</span> <span
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='ARRIVED'">已到达</span> style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'END'"
>终止面试</span
>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'SEE_FAIL'"
>约面失败</span
>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'NO_ENTRY'"
>未入职</span
>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'TO_SEE'"
>准备约面</span
>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'HAS_SEE'"
>已邀约</span
>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'OPTION'"
>备选</span
>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'TO_SENT_OFFER'"
>待Offer</span
>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'HAS_SENT_OFFER'"
>已发offer</span
>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'TO_ENTRY'"
>待入职</span
>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'HAS_ENTRY'"
>已入职</span
>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'PASS'"
>PASS</span
>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'TO_DO'"
>待处理</span
>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'RESET'"
>重启面试</span
>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'ARRIVED'"
>已到达</span
>
<span style="display:inline-block;width:50px;">变更为</span> <span style="display:inline-block;width:50px;">变更为</span>
<span style="color:#0092FF" v-if=" item.afterState=='INTERVIEW_OK'">面试合适</span> <span style="color:#0092FF" v-if="item.afterState == 'INTERVIEW_OK'"
<span style="color:#0092FF" v-if=" item.afterState=='INTERVIEW_FAIL'">面试淘汰</span> >面试合适</span
<span style="color:#0092FF" v-if=" item.afterState=='END'">终止面试</span> >
<span style="color:#0092FF" v-if=" item.afterState=='SEE_FAIL'">约面失败</span> <span
<span style="color:#0092FF" v-if=" item.afterState=='NO_ENTRY'">未入职</span> style="color:#0092FF"
<span style="color:#0092FF" v-if=" item.afterState=='TO_SEE'">准备约面</span> v-if="item.afterState == 'INTERVIEW_FAIL'"
<span style="color:#0092FF" v-if=" item.afterState=='HAS_SEE'">已邀约</span> >面试淘汰</span
<span style="color:#0092FF" v-if=" item.afterState=='OPTION'">备选</span> >
<span style="color:#0092FF" v-if=" item.afterState=='TO_SENT_OFFER'">待Offer</span> <span style="color:#0092FF" v-if="item.afterState == 'END'"
<span style="color:#0092FF" v-if=" item.afterState=='HAS_SENT_OFFER'">已发offer</span> >终止面试</span
<span style="color:#0092FF" v-if=" item.afterState=='TO_ENTRY'">待入职</span> >
<span style="color:#0092FF" v-if=" item.afterState=='HAS_ENTRY'">已入职</span> <span style="color:#0092FF" v-if="item.afterState == 'SEE_FAIL'"
<span style="color:#0092FF" v-if=" item.afterState=='PASS'">PASS</span> >约面失败</span
<span style="color:#0092FF" v-if=" item.afterState=='TO_DO'">待处理</span> >
<span style="color:#0092FF" v-if=" item.afterState=='RESET'">重启面试</span> <span style="color:#0092FF" v-if="item.afterState == 'NO_ENTRY'"
<span style="color:#0092FF" v-if=" item.afterState=='ARRIVED'">已到达</span> >未入职</span
>
<span style="color:#0092FF" v-if="item.afterState == 'TO_SEE'"
>准备约面</span
>
<span style="color:#0092FF" v-if="item.afterState == 'HAS_SEE'"
>已邀约</span
>
<span style="color:#0092FF" v-if="item.afterState == 'OPTION'"
>备选</span
>
<span
style="color:#0092FF"
v-if="item.afterState == 'TO_SENT_OFFER'"
>待Offer</span
>
<span
style="color:#0092FF"
v-if="item.afterState == 'HAS_SENT_OFFER'"
>已发offer</span
>
<span style="color:#0092FF" v-if="item.afterState == 'TO_ENTRY'"
>待入职</span
>
<span style="color:#0092FF" v-if="item.afterState == 'HAS_ENTRY'"
>已入职</span
>
<span style="color:#0092FF" v-if="item.afterState == 'PASS'"
>PASS</span
>
<span style="color:#0092FF" v-if="item.afterState == 'TO_DO'"
>待处理</span
>
<span style="color:#0092FF" v-if="item.afterState == 'RESET'"
>重启面试</span
>
<span style="color:#0092FF" v-if="item.afterState == 'ARRIVED'"
>已到达</span
>
</p> </p>
</div> </div>
</div> </div>
<div style="height:30px;width:100%;text-align:center;margin-top:30px"> <div style="height:30px;width:100%;text-align:center;margin-top:30px">
<Button type="primary" size='small' @click="recordModal=false">关闭</Button> <Button type="primary" size="small" @click="recordModal = false"
>关闭</Button
>
</div> </div>
</Modal> </Modal>
<!-- 更改面试信息弹出框 --> <!-- 更改面试信息弹出框 -->
<Modal <Modal v-model="modal2" :closable="false" width="400px">
v-model="modal2"
:closable="false"
width='400px'>
<h3 style="text-align:center">更改约面信息</h3> <h3 style="text-align:center">更改约面信息</h3>
<Form :label-width="80" ref="formInline" :rules="ruleInline" :model="formInline"> <Form
:label-width="80"
ref="formInline"
:rules="ruleInline"
:model="formInline"
>
<FormItem label="邀约人" style="margin-top:20px" prop="UpdateOWER"> <FormItem label="邀约人" style="margin-top:20px" prop="UpdateOWER">
<Input v-model="formInline.UpdateOWER" :maxlength="5"/> <Input v-model="formInline.UpdateOWER" :maxlength="5" />
</FormItem> </FormItem>
<FormItem label="面试时间" style="margin-top:20px" prop="UpdateTIME"> <FormItem label="面试时间" style="margin-top:20px" prop="UpdateTIME">
<DatePicker type="datetime" style="width:100%;" v-model="formInline.UpdateTIME" @on-change="selectTime" placeholder="请选择时间" :options="options3" :editable='false' format="yyyy-MM-dd HH:mm"></DatePicker> <DatePicker
type="datetime"
style="width:100%;"
v-model="formInline.UpdateTIME"
@on-change="selectTime"
placeholder="请选择时间"
:options="options3"
:editable="false"
format="yyyy-MM-dd HH:mm"
></DatePicker>
</FormItem> </FormItem>
<FormItem label="面试官" style="margin-top:20px" prop="UpdateVIEW"> <FormItem label="面试官" style="margin-top:20px" prop="UpdateVIEW">
<Select v-model ='formInline.UpdateVIEW' filterable style='width:100%;' remote <Select
v-model="formInline.UpdateVIEW"
filterable
style="width:100%;"
remote
:remote-method="remoteMethod" :remote-method="remoteMethod"
:loading="loading1" placeholder='请输入面试官全名' clearable> :loading="loading1"
<Option v-for='(item, index) in options' :key='index' :value='item.name'>{{item.name}}({{item.email}})</Option> placeholder="请输入面试官全名"
clearable
>
<Option
v-for="(item, index) in options"
:key="index"
:value="item.name"
>{{ item.name }}({{ item.email }})</Option
>
</Select> </Select>
</FormItem> </FormItem>
</Form> </Form>
<div slot='footer' style="text-align:center"> <div slot="footer" style="text-align:center">
<Button type='primary' @click='modal2=false'>取消</Button> <Button type="primary" @click="modal2 = false">取消</Button>
<Button type='primary' @click="changeUpdate">确定</Button> <Button type="primary" @click="changeUpdate">确定</Button>
</div> </div>
</Modal> </Modal>
<!-- 终止面试弹出框 --> <!-- 终止面试弹出框 -->
<Modal <Modal v-model="modal3" :closable="false" width="230px">
v-model="modal3"
:closable="false"
width='230px'>
<h3 style="text-align:center">提示</h3> <h3 style="text-align:center">提示</h3>
<p>终止面试流程后,仍可以重启流程,<br>是否确定终止该后选人的面试</p> <p>终止面试流程后,仍可以重启流程,<br />是否确定终止该后选人的面试</p>
<div slot='footer' style="text-align:center"> <div slot="footer" style="text-align:center">
<Button type='primary' @click='modal3=false'>取消</Button> <Button type="primary" @click="modal3 = false">取消</Button>
<Button type='primary' @click="STOPinterview">确定</Button> <Button type="primary" @click="STOPinterview">确定</Button>
</div> </div>
</Modal> </Modal>
<!-- 重启面试弹出框 --> <!-- 重启面试弹出框 -->
<Modal <Modal v-model="modal4" :closable="false" width="240px">
v-model="modal4"
:closable="false"
width='240px'
>
<h3 style="text-align:center">提示</h3> <h3 style="text-align:center">提示</h3>
<p style="text-align:center">终止面试时的简历状态为: {{OPPeninterviewSTA}} <p style="text-align:center">
<br>请选择重启后的状态</p> 终止面试时的简历状态为: {{ OPPeninterviewSTA }}
<br />请选择重启后的状态
</p>
<div style="text-align:center;margin-top:15px;"> <div style="text-align:center;margin-top:15px;">
<select name="a" id="333333" @change="selectFnelement($event)" style="text-align:center;margin-top:15px;display:inline-block"> <select
name="a"
id="333333"
@change="selectFnelement($event)"
style="text-align:center;margin-top:15px;display:inline-block"
>
<option value="1">待处理 ∨</option> <option value="1">待处理 ∨</option>
<option value="2">Pass</option> <option value="2">Pass</option>
<option value="3">备选</option> <option value="3">备选</option>
...@@ -223,81 +602,102 @@ ...@@ -223,81 +602,102 @@
<option value="13">待入职</option> <option value="13">待入职</option>
</select> </select>
</div> </div>
<div slot='footer' style="text-align:center"> <div slot="footer" style="text-align:center">
<Button type='primary' @click='modal4=false'>取消</Button> <Button type="primary" @click="modal4 = false">取消</Button>
<Button type='primary' @click="OPPinterview">确定</Button> <Button type="primary" @click="OPPinterview">确定</Button>
</div> </div>
</Modal> </Modal>
</div> </div>
</template> </template>
<script> <script>
import moment from 'moment' import moment from "moment";
import { changeinterviewMassage, SerchList, Serchinterviewor, SerchInvitationOwer, NewAddInterview, SInterview, oppenInterview, recodeLIST, changestatus, seedetail, formstatus } from '../../api/interview.server.js' import {
import { findCompanyEmailByKey } from '../../api/resume.server.js' changeinterviewMassage,
SerchList,
Serchinterviewor,
SerchInvitationOwer,
NewAddInterview,
SInterview,
oppenInterview,
recodeLIST,
changestatus,
seedetail,
formstatus
} from "../../api/interview.server.js";
import { findCompanyEmailByKey } from "../../api/resume.server.js";
export default { export default {
data () { data() {
return { return {
pageT: '', pageT: "",
statusValue: '0', statusValue: "0",
ruleInline: { ruleInline: {
UpdateOWER: [ UpdateOWER: [
{ required: true, message: '邀约人不能为空', trigger: 'blur' } { required: true, message: "邀约人不能为空", trigger: "blur" }
], ],
UpdateTIME: [ UpdateTIME: [
{ required: true, message: '面试时间不能为空', trigger: 'date' } { required: true, message: "面试时间不能为空", trigger: "date" }
], ],
UpdateVIEW: [ UpdateVIEW: [
{ required: true, message: '面试官不能为空', trigger: 'blur' } { required: true, message: "面试官不能为空", trigger: "blur" }
] ]
}, },
formInline: { formInline: {
UpdateOWER: '', UpdateOWER: "",
UpdateTIME: '', UpdateTIME: "",
UpdateVIEW: '' UpdateVIEW: ""
}, },
recordModal: false, recordModal: false,
modal2: false, modal2: false,
modal3: false, modal3: false,
modal4: false, modal4: false,
modal5: false, modal5: false,
interdeTailSta: '', interdeTailSta: "",
changestatuss: '', changestatuss: "",
spinShow: true, spinShow: true,
Ishow: [], Ishow: [],
aaaaa: '', aaaaa: "",
detailID: '', detailID: "",
nowstate: [{ value: '已邀约', label: '已邀约' }, { value: '邀约失败', label: '邀约失败' }, { value: '面试淘汰', label: '面试淘汰' }, { value: '待offer', label: '待offer' }, { value: '已发offer', label: '已发offer' }, { value: '待入职', label: '待入职' }, { value: '未入职', label: '未入职' }, { value: '已入职', label: '已入职' }], nowstate: [
keywords: '', { value: "已邀约", label: "已邀约" },
{ value: "邀约失败", label: "邀约失败" },
{ value: "面试淘汰", label: "面试淘汰" },
{ value: "待offer", label: "待offer" },
{ value: "已发offer", label: "已发offer" },
{ value: "待入职", label: "待入职" },
{ value: "未入职", label: "未入职" },
{ value: "已入职", label: "已入职" }
],
keywords: "",
recordList: [], recordList: [],
oppenInterviewStatus: 'TO_DO', oppenInterviewStatus: "TO_DO",
oppenInterviewID: '', oppenInterviewID: "",
OPPeninterviewSTA: '', OPPeninterviewSTA: "",
toseename: '', toseename: "",
clickIndex1: 0, clickIndex1: 0,
clickIndex2: 0, clickIndex2: 0,
clickIndex3: 0, clickIndex3: 0,
// UpdateOWER:'', // UpdateOWER:'',
// UpdateTIME:'', // UpdateTIME:'',
// UpdateVIEW:'', // UpdateVIEW:'',
UpdateID: '', UpdateID: "",
options3: { options3: {
disabledDate (date) { disabledDate(date) {
return date && date.valueOf() < Date.now() - 3600 * 24 * 1000 return date && date.valueOf() < Date.now() - 3600 * 24 * 1000;
} }
}, },
Interviewer: [], Interviewer: [],
Inviter: [], Inviter: [],
stopinterviewID: '', stopinterviewID: "",
Interviewoperation: 0, Interviewoperation: 0,
UpdateOWERNEW: '', UpdateOWERNEW: "",
UpdateTIMENEW: '', UpdateTIMENEW: "",
UpdateVIEWNEW: '', UpdateVIEWNEW: "",
highestDegreeNum: '', highestDegreeNum: "",
emailName: '', emailName: "",
flowStatusList: [], flowStatusList: [],
inviterName: '', // 邀约人 inviterName: "", // 邀约人
interviewerName: '', // 面试官 interviewerName: "", // 面试官
changestatusSTATUS: '', changestatusSTATUS: "",
pageIndex: 1, pageIndex: 1,
pageSize: 30, pageSize: 30,
totalSize: null, totalSize: null,
...@@ -306,352 +706,381 @@ export default { ...@@ -306,352 +706,381 @@ export default {
pageIndex: 1, pageIndex: 1,
STA: [] STA: []
}, },
Education2: [{ Num2: '', status2: '不限' }, { Num2: '0', status2: '专科以下' }, { Num2: '1', status2: '专科及以上' }, { Num2: '2', status2: '本科及以上' }, { Num2: '3', status2: '硕士及以上' }, { Num2: '4', status2: '博士及以上' }, { Num2: '99', status2: '985/211' }], Education2: [
state: [{ Num3: [], status3: '不限', sta: true }, { Num3: 'HAS_SEE', status3: '已邀约', sta: false }, { Num3: 'SEE_FAIL', status3: '邀约失败', sta: false }, { Num2: "", status2: "不限" },
{ Num3: 'INTERVIEW_FAIL', status3: '面试淘汰', sta: false }, { Num3: 'TO_SENT_OFFER', status3: '待Offer', sta: false }, { Num3: 'HAS_SENT_OFFER', status3: '已发offer', sta: false }, { Num3: 'HAS_ENTRY', status3: '已入职', sta: false }, { Num3: 'NO_ENTRY', status3: '未入职', sta: false }, { Num3: 'END', status3: '终止面试', sta: false }], { Num2: "0", status2: "专科以下" },
OPtionData: [{ value: '0', label: '面试淘汰' }], { Num2: "1", status2: "专科及以上" },
activeName: '', { Num2: "2", status2: "本科及以上" },
{ Num2: "3", status2: "硕士及以上" },
{ Num2: "4", status2: "博士及以上" },
{ Num2: "99", status2: "985/211" }
],
state: [
{ Num3: [], status3: "不限", sta: true },
{ Num3: "HAS_SEE", status3: "已邀约", sta: false },
{ Num3: "SEE_FAIL", status3: "邀约失败", sta: false },
{ Num3: "INTERVIEW_FAIL", status3: "面试淘汰", sta: false },
{ Num3: "TO_SENT_OFFER", status3: "待Offer", sta: false },
{ Num3: "HAS_SENT_OFFER", status3: "已发offer", sta: false },
{ Num3: "HAS_ENTRY", status3: "已入职", sta: false },
{ Num3: "NO_ENTRY", status3: "未入职", sta: false },
{ Num3: "END", status3: "终止面试", sta: false }
],
OPtionData: [{ value: "0", label: "面试淘汰" }],
activeName: "",
Essentialinformation: [], Essentialinformation: [],
serchData: [], serchData: [],
serchData2: [], serchData2: [],
options: [], options: [],
loading1: false loading1: false
} };
}, },
methods: { methods: {
// 变更状态 // 变更状态
selectFn2 (e) { selectFn2(e) {
if (e.target.value == 5) { if (e.target.value == 5) {
this.modal5 = true this.modal5 = true;
} }
}, },
// 操作记录查询 // 操作记录查询
RecordSEE (RID, sname) { RecordSEE(RID, sname) {
this.toseename = sname this.toseename = sname;
this.recordModal = true this.recordModal = true;
const parmars = { const parmars = {
resumeId: RID resumeId: RID
} };
recodeLIST(parmars).then(res => { recodeLIST(parmars).then(res => {
this.ownerName = res.data.body.ownerName this.ownerName = res.data.body.ownerName;
this.recordList = res.data.body.map((item, index) => { this.recordList = res.data.body.map((item, index) => {
item.ownerName = item.ownerName item.ownerName = item.ownerName;
item.approveUserName = item.approveUserName item.approveUserName = item.approveUserName;
item.dateTime = item.dateTime item.dateTime = item.dateTime;
item.previousState = item.previousState item.previousState = item.previousState;
item.afterState = item.afterState item.afterState = item.afterState;
return item return item;
}) });
}) });
}, },
// 更改面试信息弹出框 // 更改面试信息弹出框
updateInterview (InterID, InterOWOR, InterTime, InterVIEW) { updateInterview(InterID, InterOWOR, InterTime, InterVIEW) {
this.formInline.UpdateOWER = InterVIEW, (this.formInline.UpdateOWER = InterVIEW),
this.formInline.UpdateVIEW = InterOWOR, (this.formInline.UpdateVIEW = InterOWOR),
this.formInline.UpdateTIME = InterTime, (this.formInline.UpdateTIME = InterTime),
this.UpdateID = InterID (this.UpdateID = InterID);
this.modal2 = true this.modal2 = true;
}, },
selectTime (b) { selectTime(b) {
this.UpdateTIME = b this.UpdateTIME = b;
}, },
// 准备约面取消 // 准备约面取消
StopInterview () { StopInterview() {
this.status = status this.status = status;
this.modal2 = false this.modal2 = false;
}, },
// 终止面试弹出框 // 终止面试弹出框
Stopinterview (sid) { Stopinterview(sid) {
this.stopinterviewID = sid this.stopinterviewID = sid;
this.modal3 = true this.modal3 = true;
}, },
// 重启面试 // 重启面试
OPPeninterview (tid, sta4) { OPPeninterview(tid, sta4) {
this.oppenInterviewID = tid this.oppenInterviewID = tid;
const parmars = { const parmars = {
resumeId: tid resumeId: tid
} };
formstatus(parmars).then(res => { formstatus(parmars).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.OPPeninterviewSTA = res.data.body.workFlow this.OPPeninterviewSTA = res.data.body.workFlow;
} }
}) });
this.modal4 = true this.modal4 = true;
}, },
// 操作状态 // 操作状态
UpdateStatus (LLL) { UpdateStatus(LLL) {
const STATUS = LLL const STATUS = LLL;
if (this.STATUS == '终止面试') { if (this.STATUS == "终止面试") {
this.modal3 = true this.modal3 = true;
} }
if (this.STATUS == '重启面试') { if (this.STATUS == "重启面试") {
this.modal4 = true this.modal4 = true;
} }
}, },
// 更改约面信息 // 更改约面信息
changeUpdate () { changeUpdate() {
const parmars = { const parmars = {
resumeId: this.UpdateID, resumeId: this.UpdateID,
inviterName: this.formInline.UpdateOWER, inviterName: this.formInline.UpdateOWER,
seeTime: moment(this.formInline.UpdateTIME).format('YYYY-MM-DD HH:mm'), seeTime: moment(this.formInline.UpdateTIME).format("YYYY-MM-DD HH:mm"),
interviewerName: this.formInline.UpdateVIEW, interviewerName: this.formInline.UpdateVIEW,
email: this.emailName email: this.emailName
} };
if (this.formInline.UpdateOWER == '' || this.formInline.UpdateTIME == '' || this.formInline.UpdateVIEW == '') { if (
this.formInline.UpdateOWER == "" ||
this.formInline.UpdateTIME == "" ||
this.formInline.UpdateVIEW == ""
) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: '请您填写完整的约面信息' desc: "请您填写完整的约面信息"
}) });
return return;
} }
changeinterviewMassage(parmars).then(res => { changeinterviewMassage(parmars).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.formInline.UpdateTIME == '' this.formInline.UpdateTIME == "";
this.formInline.UpdateVIEW == '' this.formInline.UpdateVIEW == "";
this.formInline.UpdateOWER == '' this.formInline.UpdateOWER == "";
this.modal2 = false this.modal2 = false;
this.Sousuo(this.pageT) this.Sousuo(this.pageT);
} }
}) });
}, },
// 查询面试信息 // 查询面试信息
serchListInterview (page, status) { serchListInterview(page, status) {
page = typeof (page) === 'number' ? page : 1 page = typeof page === "number" ? page : 1;
this.searchInfo.pageIndex = page this.searchInfo.pageIndex = page;
this.pageIndex = page this.pageIndex = page;
const parmars = { const parmars = {
pageSize: this.searchInfo.pageSize, pageSize: this.searchInfo.pageSize,
pageIndex: this.searchInfo.pageIndex, pageIndex: this.searchInfo.pageIndex,
parameter: { parameter: {
keywordString: '', keywordString: "",
highestDegreeNum: '', highestDegreeNum: "",
flowStatusList: [], flowStatusList: [],
interviewerName: '', interviewerName: "",
inviterName: '' inviterName: ""
}
} }
};
SerchList(parmars, status).then(res => { SerchList(parmars, status).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.spinShow = false this.spinShow = false;
this.totalSize = res.data.body.totalNumber this.totalSize = res.data.body.totalNumber;
this.Essentialinformation = res.data.body.items.map((item, index) => { this.Essentialinformation = res.data.body.items.map((item, index) => {
item.id = item.id item.id = item.id;
item.flowStatus = item.flowStatus item.flowStatus = item.flowStatus;
item.interviewerName = item.interviewerName item.interviewerName = item.interviewerName;
item.inviterName = item.inviterName item.inviterName = item.inviterName;
item.modifier = item.modifier item.modifier = item.modifier;
item.c = item.modifier == '' ? item.modifier : item.modifier.split('_') item.c =
item.d = item.c[0] item.modifier == "" ? item.modifier : item.modifier.split("_");
item.modifyTime = item.modifyTime item.d = item.c[0];
item.ownerExpectTitles = item.ownerExpectTitles item.modifyTime = item.modifyTime;
item.ownerMobile = item.ownerMobile item.ownerExpectTitles = item.ownerExpectTitles;
item.ownerName = item.ownerName item.ownerMobile = item.ownerMobile;
item.seeTime = item.seeTime item.ownerName = item.ownerName;
item.uid = item.uid item.seeTime = item.seeTime;
return item item.uid = item.uid;
}) return item;
} });
}) }
});
}, },
// 面试官查询 // 面试官查询
SerchlistinterviewList () { SerchlistinterviewList() {
Serchinterviewor().then(res => { Serchinterviewor().then(res => {
this.Interviewer = res.data.body this.Interviewer = res.data.body;
this.Interviewer.unshift('不限') this.Interviewer.unshift("不限");
}) });
}, },
// 邀约人查询 // 邀约人查询
SerchInvitation () { SerchInvitation() {
SerchInvitationOwer().then(res => { SerchInvitationOwer().then(res => {
if (!res.data.success) { if (!res.data.success) {
return return;
} }
this.Inviter = res.data.body this.Inviter = res.data.body;
this.Inviter.unshift('不限') this.Inviter.unshift("不限");
}) });
}, },
// 新增约面信息 // 新增约面信息
newaddInterview () { newaddInterview() {
const parmars = { const parmars = {
resumeId: this.UpdateOWERNEW, resumeId: this.UpdateOWERNEW,
inviterName: this.UpdateTIMENEW, inviterName: this.UpdateTIMENEW,
interviewerName: this.UpdateVIEWNEW, interviewerName: this.UpdateVIEWNEW,
seeTime: this.UpdateTIMENEW seeTime: this.UpdateTIMENEW
} };
NewAddInterview(parmars).then(res => { NewAddInterview(parmars).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.$Message.success('新增约面信息成功') this.$Message.success("新增约面信息成功");
} }
}) });
}, },
// 终止面试 // 终止面试
STOPinterview () { STOPinterview() {
SInterview(this.stopinterviewID).then(res => { SInterview(this.stopinterviewID).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.modal3 = false this.modal3 = false;
this.Sousuo(this.pageT) this.Sousuo(this.pageT);
} }
}) });
}, },
// 操作重启时选择的状态 // 操作重启时选择的状态
selectFnelement (e) { selectFnelement(e) {
if (e.target.value == 1) { if (e.target.value == 1) {
this.oppenInterviewStatus = 'TO_DO' this.oppenInterviewStatus = "TO_DO";
} }
if (e.target.value == 2) { if (e.target.value == 2) {
this.oppenInterviewStatus = 'PASS' this.oppenInterviewStatus = "PASS";
} }
if (e.target.value == 3) { if (e.target.value == 3) {
this.oppenInterviewStatus = 'OPTION' this.oppenInterviewStatus = "OPTION";
} }
if (e.target.value == 4) { if (e.target.value == 4) {
this.oppenInterviewStatus = 'OPTION' this.oppenInterviewStatus = "OPTION";
} }
if (e.target.value == 5) { if (e.target.value == 5) {
this.oppenInterviewStatus = 'HAS_SEE' this.oppenInterviewStatus = "HAS_SEE";
} }
if (e.target.value == 6) { if (e.target.value == 6) {
this.oppenInterviewStatus = 'SEE_FAIL' this.oppenInterviewStatus = "SEE_FAIL";
} }
if (e.target.value == 10) { if (e.target.value == 10) {
this.oppenInterviewStatus = 'INTERVIEW_FAIL' this.oppenInterviewStatus = "INTERVIEW_FAIL";
} }
if (e.target.value == 11) { if (e.target.value == 11) {
this.oppenInterviewStatus = 'TO_SENT_OFFER' this.oppenInterviewStatus = "TO_SENT_OFFER";
} }
if (e.target.value == 12) { if (e.target.value == 12) {
this.oppenInterviewStatus = 'HAS_SENT_OFFER' this.oppenInterviewStatus = "HAS_SENT_OFFER";
} }
if (e.target.value == 13) { if (e.target.value == 13) {
this.oppenInterviewStatus = 'TO_ENTRY' this.oppenInterviewStatus = "TO_ENTRY";
} }
}, },
// 重启面试 // 重启面试
OPPinterview () { OPPinterview() {
oppenInterview(this.oppenInterviewID, this.oppenInterviewStatus).then(res => { oppenInterview(this.oppenInterviewID, this.oppenInterviewStatus).then(
res => {
if (res.data.success == true) { if (res.data.success == true) {
this.$Notice.success({ this.$Notice.success({
title: '提示', title: "提示",
desc: '已成功重启流程' desc: "已成功重启流程"
}) });
this.serchListInterview() this.serchListInterview();
}
} }
}) );
this.modal4 = false this.modal4 = false;
}, },
// 选择变更状态时的元素 // 选择变更状态时的元素
selectchangeElement (e, SID) { selectchangeElement(e, SID) {
if (e.target.value == 1) { if (e.target.value == 1) {
this.changestatusSTATUS = 'HAS_SEE' this.changestatusSTATUS = "HAS_SEE";
changestatus(SID, this.changestatusSTATUS).then(res => { changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init') this.serchListInterview(this.pageT, "init");
}) });
} }
if (e.target.value == 2) { if (e.target.value == 2) {
this.changestatusSTATUS = 'HAS_SEE' this.changestatusSTATUS = "HAS_SEE";
changestatus(SID, this.changestatusSTATUS).then(res => { changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init') this.serchListInterview(this.pageT, "init");
}) });
} }
if (e.target.value == 3) { if (e.target.value == 3) {
this.changestatusSTATUS = 'SEE_FAIL' this.changestatusSTATUS = "SEE_FAIL";
changestatus(SID, this.changestatusSTATUS).then(res => { changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init') this.serchListInterview(this.pageT, "init");
}) });
} }
if (e.target.value == 4) { if (e.target.value == 4) {
this.changestatusSTATUS = 'INTERVIEW_FAIL' this.changestatusSTATUS = "INTERVIEW_FAIL";
changestatus(SID, this.changestatusSTATUS).then(res => { changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init') this.serchListInterview(this.pageT, "init");
}) });
} }
if (e.target.value == 5) { if (e.target.value == 5) {
this.changestatusSTATUS = 'TO_SENT_OFFER' this.changestatusSTATUS = "TO_SENT_OFFER";
changestatus(SID, this.changestatusSTATUS).then(res => { changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init') this.serchListInterview(this.pageT, "init");
}) });
} }
if (e.target.value == 6) { if (e.target.value == 6) {
this.changestatusSTATUS = 'HAS_SENT_OFFER' this.changestatusSTATUS = "HAS_SENT_OFFER";
changestatus(SID, this.changestatusSTATUS).then(res => { changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init') this.serchListInterview(this.pageT, "init");
}) });
} }
if (e.target.value == 7) { if (e.target.value == 7) {
this.changestatusSTATUS = 'TO_ENTRY' this.changestatusSTATUS = "TO_ENTRY";
changestatus(SID, this.changestatusSTATUS).then(res => { changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init') this.serchListInterview(this.pageT, "init");
}) });
} }
if (e.target.value == 8) { if (e.target.value == 8) {
this.changestatusSTATUS = 'NO_ENTRY' this.changestatusSTATUS = "NO_ENTRY";
changestatus(SID, this.changestatusSTATUS).then(res => { changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init') this.serchListInterview(this.pageT, "init");
}) });
} }
if (e.target.value == 9) { if (e.target.value == 9) {
this.changestatusSTATUS = 'HAS_ENTRY' this.changestatusSTATUS = "HAS_ENTRY";
changestatus(SID, this.changestatusSTATUS).then(res => { changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init') this.serchListInterview(this.pageT, "init");
}) });
} }
this.statusValue = '0' this.statusValue = "0";
}, },
selectElement3 (tItem, Tindex, status3, sta3) { selectElement3(tItem, Tindex, status3, sta3) {
sta3 = !sta3 sta3 = !sta3;
this.state[Tindex].sta = sta3 this.state[Tindex].sta = sta3;
if (Tindex == 0) { if (Tindex == 0) {
this.searchInfo.STA = [] this.searchInfo.STA = [];
this.state.map((item, index) => { this.state.map((item, index) => {
if (index !== 0) { if (index !== 0) {
item.sta = false item.sta = false;
} }
if (index == 0) { if (index == 0) {
item.sta = true item.sta = true;
} }
return item return item;
}) });
return return;
} }
if (Tindex !== 0) { if (Tindex !== 0) {
this.state[0].sta = false this.state[0].sta = false;
} }
if (sta3 == true) { if (sta3 == true) {
this.searchInfo.STA.push(tItem) this.searchInfo.STA.push(tItem);
} }
if (sta3 == false) { if (sta3 == false) {
Array.prototype.indexOf = function (val) { Array.prototype.indexOf = function(val) {
for (var i = 0; i < this.length; i++) { for (var i = 0; i < this.length; i++) {
if (this[i] == val) return i if (this[i] == val) return i;
} }
return -1 return -1;
} };
Array.prototype.remove = function (val) { Array.prototype.remove = function(val) {
var index = this.indexOf(val) var index = this.indexOf(val);
if (index > -1) { if (index > -1) {
this.splice(index, 1) this.splice(index, 1);
}
} }
this.searchInfo.STA.remove(tItem) };
this.searchInfo.STA.remove(tItem);
} }
}, },
Seedetail (Tid, Uid, sta) { Seedetail(Tid, Uid, sta) {
this.DOWNID = Uid this.DOWNID = Uid;
this.detailID = Tid this.detailID = Tid;
this.interdeTailSta = sta this.interdeTailSta = sta;
const newpage = this.$router.resolve({ const newpage = this.$router.resolve({
name: 'resumeDetail', name: "resumeDetail",
params: {}, params: {},
query: { id: this.DOWNID, noShowBtn: '', ID: this.detailID, status: this.interdeTailSta } query: {
}) id: this.DOWNID,
window.open(newpage.href, '_blank') noShowBtn: "",
ID: this.detailID,
status: this.interdeTailSta
}
});
window.open(newpage.href, "_blank");
}, },
// 搜索 // 搜索
Sousuo (page) { Sousuo(page) {
page = typeof (page) === 'number' ? page : 1 page = typeof page === "number" ? page : 1;
this.searchInfo.pageIndex = page this.searchInfo.pageIndex = page;
this.pageIndex = page this.pageIndex = page;
const parmars = { const parmars = {
pageSize: this.searchInfo.pageSize, pageSize: this.searchInfo.pageSize,
pageIndex: this.searchInfo.pageIndex, pageIndex: this.searchInfo.pageIndex,
...@@ -661,203 +1090,207 @@ export default { ...@@ -661,203 +1090,207 @@ export default {
flowStatusList: this.searchInfo.STA, flowStatusList: this.searchInfo.STA,
interviewerName: this.interviewerName, interviewerName: this.interviewerName,
inviterName: this.inviterName, inviterName: this.inviterName,
handUpload: '' handUpload: ""
}
} }
};
SerchList(parmars).then(res => { SerchList(parmars).then(res => {
const Ishow = res.data.items const Ishow = res.data.items;
if (res.data.success == true) { if (res.data.success == true) {
this.spinShow = false this.spinShow = false;
this.totalSize = res.data.body.totalNumber this.totalSize = res.data.body.totalNumber;
this.Essentialinformation = res.data.body.items.map((item, index) => { this.Essentialinformation = res.data.body.items.map((item, index) => {
item.id = item.id item.id = item.id;
item.flowStatus = item.flowStatus item.flowStatus = item.flowStatus;
item.interviewerName = item.interviewerName item.interviewerName = item.interviewerName;
item.inviterName = item.inviterName item.inviterName = item.inviterName;
item.modifier = item.modifier item.modifier = item.modifier;
item.c = item.modifier == '' ? item.modifier : item.modifier.split('_') item.c =
item.d = item.c[0] item.modifier == "" ? item.modifier : item.modifier.split("_");
item.modifyTime = item.modifyTime item.d = item.c[0];
item.ownerExpectTitles = item.ownerExpectTitles item.modifyTime = item.modifyTime;
item.ownerMobile = item.ownerMobile item.ownerExpectTitles = item.ownerExpectTitles;
item.ownerName = item.ownerName item.ownerMobile = item.ownerMobile;
item.seeTime = item.seeTime item.ownerName = item.ownerName;
item.uid = item.uid item.seeTime = item.seeTime;
return item item.uid = item.uid;
}) return item;
} });
}) }
});
}, },
// 选择要搜索的元素 // 选择要搜索的元素
selectSeeElement (Titem, Tindex) { selectSeeElement(Titem, Tindex) {
this.highestDegreeNum = Titem this.highestDegreeNum = Titem;
this.clickIndex1 = Tindex this.clickIndex1 = Tindex;
}, },
selectinterviewElement (e) { selectinterviewElement(e) {
if (e.value == '不限') { if (e.value == "不限") {
this.interviewerName = '' this.interviewerName = "";
} else { } else {
this.interviewerName = e.value this.interviewerName = e.value;
} }
}, },
selectinterviewElement2 (e) { selectinterviewElement2(e) {
if (e.label == '不限') { if (e.label == "不限") {
this.inviterName = '' this.inviterName = "";
} else { } else {
this.inviterName = e.label this.inviterName = e.label;
} }
}, },
// 改变页码 // 改变页码
pageChange (page) { pageChange(page) {
this.pageT = page this.pageT = page;
this.Sousuo(this.pageT) this.Sousuo(this.pageT);
}, },
pageSizeChange (page) { pageSizeChange(page) {
this.searchInfo.pageSize = page this.searchInfo.pageSize = page;
this.pageSize = page this.pageSize = page;
this.Sousuo() this.Sousuo();
}, },
remoteMethod: function (query) { remoteMethod: function(query) {
if (query !== '') { if (query !== "") {
this.loading1 = true this.loading1 = true;
setTimeout(() => { setTimeout(() => {
this.loading1 = false this.loading1 = false;
let list = [] let list = [];
query = query.split('(')[0] query = query.split("(")[0];
findCompanyEmailByKey(query).then(res => { findCompanyEmailByKey(query).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
list = res list = res;
this.options = list.data.body || [] this.options = list.data.body || [];
this.options.map(item => { this.options.map(item => {
this.emailName = item.email this.emailName = item.email;
}) });
} else { } else {
this.options = [] this.options = [];
} }
// this.options.push({name: '不限', email: ''}) // this.options.push({name: '不限', email: ''})
}) });
}, 200) }, 200);
} else { } else {
this.options = [] this.options = [];
} }
} }
}, },
mounted () { mounted() {
this.serchListInterview(null, 'init') this.serchListInterview(null, "init");
// this.Serchlistinterview() // this.Serchlistinterview()
this.SerchInvitation() this.SerchInvitation();
this.SerchlistinterviewList() this.SerchlistinterviewList();
} }
} };
</script> </script>
<style> <style>
.interview .emailForm .ivu-form-item-label{ .interview .emailForm .ivu-form-item-label {
font-size: 14px font-size: 14px;
} }
.interview .ivu-form-item-content{ .interview .ivu-form-item-content {
font-size: 14px; font-size: 14px;
} }
.interview .ivu-form-item-error-tip{ .interview .ivu-form-item-error-tip {
font-size:12px; font-size: 12px;
} }
.interview{ .interview {
height: 100%; height: 100%;
width:100%; width: 100%;
background:#EDEDED; background: #ededed;
overflow: hidden; overflow: hidden;
min-width: 1200px; min-width: 1200px;
} }
.interview-left{ .interview-left {
height:100%; height: 100%;
overflow:hidden; overflow: hidden;
width: 70%; width: 70%;
float: left; float: left;
background: #F2F2F2; background: #f2f2f2;
} }
.interview-right{ .interview-right {
height: 100%; height: 100%;
width: 29%; width: 29%;
float: left; float: left;
overflow: hidden; overflow: hidden;
background:white; background: white;
margin-top:10px; margin-top: 10px;
margin-left: 1%; margin-left: 1%;
} }
.leftcontentTop{ .leftcontentTop {
height: 120px; height: 120px;
width: 100%; width: 100%;
} }
.leftcontentContent{ .leftcontentContent {
width: 100%; width: 100%;
margin-top: 10px; margin-top: 10px;
margin-bottom: 40px; margin-bottom: 40px;
} }
.contentMassage{ .contentMassage {
width: 53%; width: 53%;
height: 60px; height: 60px;
float: left; float: left;
margin-left: 0%; margin-left: 0%;
background: white; background: white;
margin-top: 10px margin-top: 10px;
/* margin-bottom: 35px */ /* margin-bottom: 35px */
} }
.contentState{ .contentState {
width:23%; width: 23%;
height: 60px; height: 60px;
float: left; float: left;
margin-left: 1.5%; margin-left: 1.5%;
background: white; background: white;
margin-top: 10px margin-top: 10px;
/* margin-bottom: 35px */ /* margin-bottom: 35px */
} }
.contentRecord{ .contentRecord {
width:20%; width: 20%;
height: 60px; height: 60px;
float: left; float: left;
margin-left: 1.5%; margin-left: 1.5%;
background: white; background: white;
margin-top: 10px margin-top: 10px;
/* margin-bottom: 35px */ /* margin-bottom: 35px */
} }
.InpageBottom{ .InpageBottom {
height: 40px; height: 40px;
width: 56%; width: 56%;
background:#EDEDED; background: #ededed;
position: fixed; position: fixed;
bottom: 0; bottom: 0;
margin-left:0.6%; margin-left: 0.6%;
}
.active2 {
color: #0092ff;
} }
.active2{ select::-ms-expand {
color: #0092FF display: none;
} }
select::-ms-expand{display:none;} select {
select{ appearance: none;
appearance:none; -moz-appearance: none;
-moz-appearance:none; -webkit-appearance: none;
-webkit-appearance:none;
outline: none; outline: none;
border: none; border: none;
color: #0092FF color: #0092ff;
} }
option::-ms-expand{ display: none; } option::-ms-expand {
option{ display: none;
-moz-appearance:none; /* Firefox */ }
-webkit-appearance:none; /* Safari 和 Chrome */ option {
appearance:none; -moz-appearance: none; /* Firefox */
-webkit-appearance: none; /* Safari 和 Chrome */
appearance: none;
} }
/* --背景色字体颜色--*/ /* --背景色字体颜色--*/
option:hover{ option:hover {
color:#fff; color: #fff;
background-color:#1E90FF; background-color: #1e90ff;
} }
.active{ .active {
color: blue; color: blue;
} }
.Education2{ .Education2 {
width:85%; width: 85%;
} }
.Education2 span{ .Education2 span {
display: inline-block; display: inline-block;
margin-right: 20px; margin-right: 20px;
} }
...@@ -876,10 +1309,10 @@ option:hover{ ...@@ -876,10 +1309,10 @@ option:hover{
.Education2 :nth-child(7){ .Education2 :nth-child(7){
margin-left: 10% margin-left: 10%
} */ } */
.state2{ .state2 {
width: 85%; width: 85%;
} }
.state2 span{ .state2 span {
display: inline-block; display: inline-block;
margin-right: 20px; margin-right: 20px;
} }
......
...@@ -3,29 +3,53 @@ ...@@ -3,29 +3,53 @@
<div class="login-content"> <div class="login-content">
<div class="loginContent-left"> <div class="loginContent-left">
<div class="logimg"> <div class="logimg">
<img src="http://xyqbui.lkbang.net/image/logo99.png"> <img src="http://xyqbui.lkbang.net/image/logo99.png" />
</div> </div>
</div> </div>
<div class="loginContent-right"> <div class="loginContent-right">
<div class="logo"> <div class="logo">
<img src="http://xyqbui.lkbang.net/image/log.jpg"> <img src="http://xyqbui.lkbang.net/image/log.jpg" />
<h3>登录</h3> <h3>登录</h3>
</div> </div>
<div class="login_content"> <div class="login_content">
<Form ref="formInline" :model="formInline" :rules="ruleInline" style="height:161px"> <Form
ref="formInline"
:model="formInline"
:rules="ruleInline"
style="height:161px"
>
<FormItem prop="user" style="height:60px"> <FormItem prop="user" style="height:60px">
<Input type="text" v-model="formInline.user" placeholder="请输入企业邮箱账号" class="wordStyle" size="large"> <Input
<Icon type="ios-person-outline" slot="prepend" ></Icon> type="text"
v-model="formInline.user"
placeholder="请输入企业邮箱账号"
class="wordStyle"
size="large"
>
<Icon type="ios-person-outline" slot="prepend"></Icon>
</Input> </Input>
</FormItem> </FormItem>
<FormItem prop="password"> <FormItem prop="password">
<Input type="password" v-model="formInline.password" placeholder="请输入密码" class="wordStyle" @keyup.enter.native='login' size="large"> <Input
type="password"
v-model="formInline.password"
placeholder="请输入密码"
class="wordStyle"
@keyup.enter.native="login"
size="large"
>
<Icon type="ios-lock-outline" slot="prepend"></Icon> <Icon type="ios-lock-outline" slot="prepend"></Icon>
</Input> </Input>
<span style="color:red;margin-top;5px" v-show="noteconTime==true">{{notecontent}}</span> <span
style="color:red;margin-top;5px"
v-show="noteconTime == true"
>{{ notecontent }}</span
>
</FormItem> </FormItem>
</Form> </Form>
<Button type="primary" class="loginBtu" @click.prevent="login">登录</Button> <Button type="primary" class="loginBtu" @click.prevent="login"
>登录</Button
>
</div> </div>
<div class="copy"> <div class="copy">
...@@ -37,80 +61,87 @@ ...@@ -37,80 +61,87 @@
</div> </div>
</template> </template>
<script> <script>
import { login } from "../../api/login.server.js";
import { login } from '../../api/login.server.js' import localstorage from "../../service/localstorage.service.js";
import localstorage from '../../service/localstorage.service.js'
export default { export default {
data () { data() {
return { return {
channelarr: [], channelarr: [],
notecontent: '', notecontent: "",
noteconTime: false, noteconTime: false,
ISIDMIN: '', ISIDMIN: "",
formInline: { formInline: {
user: '', user: "",
password: '' password: ""
}, },
ruleInline: { ruleInline: {
user: [ user: [
{ required: true, pattern: /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/, message: '请输入正确的邮箱账号', trigger: 'blur' } {
required: true,
pattern: /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/,
message: "请输入正确的邮箱账号",
trigger: "blur"
}
], ],
password: [ password: [
{ required: true, message: '请输入正确的密码', trigger: 'blur' } { required: true, message: "请输入正确的密码", trigger: "blur" }
// { type: 'string', min: 4, message: '请输入正确的密码', trigger: 'blur' } // { type: 'string', min: 4, message: '请输入正确的密码', trigger: 'blur' }
] ]
} }
} };
}, },
methods: { methods: {
handleSubmit (name) { handleSubmit(name) {
this.$refs[name].validate((valid) => { this.$refs[name].validate(valid => {
if (valid) { if (valid) {
this.$Message.success('Success!') this.$Message.success("Success!");
} else { } else {
this.$Message.error('Fail!') this.$Message.error("Fail!");
} }
}) });
}, },
login () { login() {
const params = { const params = {
userCode: this.formInline.user, userCode: this.formInline.user,
password: this.formInline.password password: this.formInline.password
} };
if (this.formInline.user == '' || this.formInline.password == '') { if (this.formInline.user == "" || this.formInline.password == "") {
return return;
} }
login(params).then(res => { login(params).then(res => {
if (res.data.body.code == '100') { if (res.data.body.code == "100") {
this.$router.push({ name: 'update', params: { userCode: this.formInline.user } }) this.$router.push({
return name: "update",
params: { userCode: this.formInline.user }
});
return;
} }
if (res.data.success == true) { if (res.data.success == true) {
this.ISIDMIN = res.data.body this.ISIDMIN = res.data.body;
localstorage.set('token', res.data.body.token) localstorage.set("token", res.data.body.token);
this.$router.push({ name: 'allResume' }) this.$router.push({ name: "allResume" });
localstorage.set('isADMIN', JSON.stringify(this.ISIDMIN)) localstorage.set("isADMIN", JSON.stringify(this.ISIDMIN));
return return;
} }
if (res.data.success == false) { if (res.data.success == false) {
this.noteconTime = true this.noteconTime = true;
this.notecontent = res.data.body.message this.notecontent = res.data.body.message;
setTimeout(() => { setTimeout(() => {
this.noteconTime = false this.noteconTime = false;
}, 3000) }, 3000);
} }
}) });
} }
} }
} };
</script> </script>
<style scoped> <style scoped>
.login{ .login {
width:100%; width: 100%;
height:100%; height: 100%;
overflow: hidden; overflow: hidden;
} }
.login .login-content{ .login .login-content {
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow: hidden; overflow: hidden;
...@@ -118,65 +149,64 @@ export default { ...@@ -118,65 +149,64 @@ export default {
.loginContent-left { .loginContent-left {
float: left; float: left;
width: 70%; width: 70%;
height:100%; height: 100%;
} }
.logimg{ .logimg {
height: 100%; height: 100%;
width:100%; width: 100%;
} }
.logimg img{ .logimg img {
width:100%; width: 100%;
height: 100% height: 100%;
} }
.loginBtu{ .loginBtu {
width:90%; width: 90%;
height: 40px; height: 40px;
font-size: 18px font-size: 18px;
} }
.loginContent-right{ .loginContent-right {
float: left; float: left;
width: 30%; width: 30%;
height:100%; height: 100%;
border: 1px solid GhostWhite border: 1px solid GhostWhite;
} }
.logo{ .logo {
width:70%; width: 70%;
height:180px; height: 180px;
margin-top:160px; margin-top: 160px;
/* border: 1px solid black; */ /* border: 1px solid black; */
margin-left:15% margin-left: 15%;
} }
.logo img { .logo img {
width:50%; width: 50%;
height:50% ; height: 50%;
/* margin-left: 30px */ /* margin-left: 30px */
} }
.logo h3{ .logo h3 {
font-size: 30px; font-size: 30px;
color: black; color: black;
margin-top: 0px margin-top: 0px;
} }
.login_content{ .login_content {
height: 300px; height: 300px;
width: 70%; width: 70%;
/* border:1px solid black; */ /* border:1px solid black; */
margin-left:15%; margin-left: 15%;
margin-top: 0px margin-top: 0px;
} }
.copy{ .copy {
width: 100%; width: 100%;
height:100px; height: 100px;
margin-top: 80px; margin-top: 80px;
margin-left: 7% margin-left: 7%;
} }
.copy p{ .copy p {
font-size: 17px; font-size: 17px;
color: #999 color: #999;
} }
.wordStyle{ .wordStyle {
width: 90%; width: 90%;
line-height: 50px line-height: 50px;
/* margin-left: 30px */ /* margin-left: 30px */
} }
</style> </style>
...@@ -3,30 +3,55 @@ ...@@ -3,30 +3,55 @@
<div class="updatePsd-content"> <div class="updatePsd-content">
<div class="updatePsdContent-left"> <div class="updatePsdContent-left">
<div class="logimg"> <div class="logimg">
<img src="http://xyqbui.lkbang.net/image/logo99.png"> <img src="http://xyqbui.lkbang.net/image/logo99.png" />
</div> </div>
</div> </div>
<div class="updatePsdContent-right"> <div class="updatePsdContent-right">
<div class="logo"> <div class="logo">
<img src="http://xyqbui.lkbang.net/image/log.jpg"> <img src="http://xyqbui.lkbang.net/image/log.jpg" />
<h3>首次登录请修改密码</h3> <h3>首次登录请修改密码</h3>
</div> </div>
<div class="updatePsd_content"> <div class="updatePsd_content">
<Form ref="formInline" :model="formInline" class="formcontent"> <Form ref="formInline" :model="formInline" class="formcontent">
<FormItem class="formitemcontent"> <FormItem class="formitemcontent">
<Input type="password" v-model="formInline.password" placeholder="Password" class="wordStyle2" @on-change='verification' size="large"> <Input
type="password"
v-model="formInline.password"
placeholder="Password"
class="wordStyle2"
@on-change="verification"
size="large"
>
<Icon type="ios-lock-outline" slot="prepend"></Icon> <Icon type="ios-lock-outline" slot="prepend"></Icon>
</Input> </Input>
<span style="color:Grey;margin-left:30px" v-show="fistcontent">4-20位且不得与默认密码相同</span> <span style="color:Grey;margin-left:30px" v-show="fistcontent"
>4-20位且不得与默认密码相同</span
>
</FormItem> </FormItem>
<FormItem style="margin-top:-20px" class="formitemcontent"> <FormItem style="margin-top:-20px" class="formitemcontent">
<Input type="password" v-model="formInline.passwordTwo" placeholder="Password" class="wordStyle2" @keyup.enter.native='loginT' size="large"> <Input
type="password"
v-model="formInline.passwordTwo"
placeholder="Password"
class="wordStyle2"
@keyup.enter.native="loginT"
size="large"
>
<Icon type="ios-lock-outline" slot="prepend"></Icon> <Icon type="ios-lock-outline" slot="prepend"></Icon>
</Input> </Input>
<span style="color:Grey;margin-left:30px;color:red" v-show="twocontent">{{twocontentmessage}}</span> <span
style="color:Grey;margin-left:30px;color:red"
v-show="twocontent"
>{{ twocontentmessage }}</span
>
</FormItem> </FormItem>
</Form> </Form>
<Button type="primary" style="height:40px;width:100%;border-radius: 5px;background:rgb(0, 146, 255);color:rgb(255,255,255);font-size:18px;margin-top:10px" @click="loginT">登录</Button> <Button
type="primary"
style="height:40px;width:100%;border-radius: 5px;background:rgb(0, 146, 255);color:rgb(255,255,255);font-size:18px;margin-top:10px"
@click="loginT"
>登录</Button
>
</div> </div>
<div class="copy"> <div class="copy">
<p>量化派为你提供全程服务</p> <p>量化派为你提供全程服务</p>
...@@ -37,132 +62,134 @@ ...@@ -37,132 +62,134 @@
</div> </div>
</template> </template>
<script> <script>
import { updatePsd } from "../../api/login.server.js";
import { updatePsd } from '../../api/login.server.js'
export default { export default {
data () { data() {
return { return {
formInline: { formInline: {
passwordTwo: '', passwordTwo: "",
password: '' password: ""
}, },
fistcontent: true, fistcontent: true,
twocontent: false, twocontent: false,
twocontentmessage: '', twocontentmessage: "",
channelarr: [], channelarr: [],
Massage: '', Massage: "",
ISIDMIN: '' ISIDMIN: ""
} };
}, },
methods: { methods: {
handleSubmit (name) { handleSubmit(name) {
this.$refs[name].validate((valid) => { this.$refs[name].validate(valid => {
if (valid) { if (valid) {
this.$Message.success('Success!') this.$Message.success("Success!");
} else { } else {
this.$Message.error('Fail!') this.$Message.error("Fail!");
} }
}) });
}, },
loginT () { loginT() {
const params = { const params = {
userCode: this.$route.params.userCode, userCode: this.$route.params.userCode,
password: this.formInline.password, password: this.formInline.password,
confirmPassWord: this.formInline.passwordTwo confirmPassWord: this.formInline.passwordTwo
} };
if (this.formInline.passwordTwo !== this.formInline.password) { if (this.formInline.passwordTwo !== this.formInline.password) {
this.twocontentmessage = '输入密码不一致,请重新输入' this.twocontentmessage = "输入密码不一致,请重新输入";
this.twocontent = true this.twocontent = true;
setTimeout(() => { setTimeout(() => {
this.twocontent = false this.twocontent = false;
}, 3000) }, 3000);
return return;
} }
if (this.formInline.passwordTwo.length < 4 || this.formInline.password.length < 4) { if (
this.twocontentmessage = '请输入4-20位密码' this.formInline.passwordTwo.length < 4 ||
this.twocontent = true this.formInline.password.length < 4
) {
this.twocontentmessage = "请输入4-20位密码";
this.twocontent = true;
setTimeout(() => { setTimeout(() => {
this.twocontent = false this.twocontent = false;
}, 3000) }, 3000);
return return;
} }
if (this.formInline.password.length > 20) { if (this.formInline.password.length > 20) {
this.twocontentmessage = '请输入4-20位密码' this.twocontentmessage = "请输入4-20位密码";
setTimeout(() => { setTimeout(() => {
this.twocontent = false this.twocontent = false;
}, 3000) }, 3000);
return return;
} }
if (this.formInline.password.length < 4) { if (this.formInline.password.length < 4) {
this.twocontentmessage = '请输入4-20位密码' this.twocontentmessage = "请输入4-20位密码";
setTimeout(() => { setTimeout(() => {
this.twocontent = false this.twocontent = false;
}, 3000) }, 3000);
return return;
} }
if (this.formInline.password.length == 0) { if (this.formInline.password.length == 0) {
this.twocontentmessage = '密码不能为空' this.twocontentmessage = "密码不能为空";
setTimeout(() => { setTimeout(() => {
this.twocontent = false this.twocontent = false;
}, 3000) }, 3000);
return return;
} }
if (this.formInline.passwordTwo.length == 0) { if (this.formInline.passwordTwo.length == 0) {
this.twocontentmessage = '请输入相同的确认密码' this.twocontentmessage = "请输入相同的确认密码";
setTimeout(() => { setTimeout(() => {
this.twocontent = false this.twocontent = false;
}, 3000) }, 3000);
return return;
} }
updatePsd(params).then(res => { updatePsd(params).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.ISIDMIN = res.data.body this.ISIDMIN = res.data.body;
localStorage.setItem('isADMIN', JSON.stringify(this.ISIDMIN)) localStorage.setItem("isADMIN", JSON.stringify(this.ISIDMIN));
localStorage.setItem('token', res.data.body.token) localStorage.setItem("token", res.data.body.token);
this.$router.replace({ name: 'allResume' }) this.$router.replace({ name: "allResume" });
} }
if (res.data.success == false) { if (res.data.success == false) {
this.Massage = res.data.body.message this.Massage = res.data.body.message;
this.twocontent = true this.twocontent = true;
this.twocontentmessage = this.Massage this.twocontentmessage = this.Massage;
setTimeout(() => { setTimeout(() => {
this.twocontent = false this.twocontent = false;
}, 3000) }, 3000);
} }
}) });
}, },
verification () { verification() {
if (this.formInline.password == 123456) { if (this.formInline.password == 123456) {
this.twocontentmessage = '输入密码与初始密码相同,请重新输入' this.twocontentmessage = "输入密码与初始密码相同,请重新输入";
setTimeout(() => { setTimeout(() => {
this.twocontent = false this.twocontent = false;
}, 3000) }, 3000);
} }
if (this.formInline.password.length == 0) { if (this.formInline.password.length == 0) {
this.fistcontent = true this.fistcontent = true;
} }
if (this.formInline.password == '') { if (this.formInline.password == "") {
this.fistcontent = true this.fistcontent = true;
} }
if (this.formInline.password.length < 4) { if (this.formInline.password.length < 4) {
this.fistcontent = true this.fistcontent = true;
} }
if (this.formInline.password.length > 4) { if (this.formInline.password.length > 4) {
this.fistcontent = false this.fistcontent = false;
} }
if (this.formInline.password.length > 20) { if (this.formInline.password.length > 20) {
this.fistcontent = true this.fistcontent = true;
} }
} }
} }
} };
</script> </script>
<style scoped> <style scoped>
.updatePsd{ .updatePsd {
width:100%; width: 100%;
height:100%; height: 100%;
} }
.updatePsd-content{ .updatePsd-content {
width: 100%; width: 100%;
height: 100%; height: 100%;
overflow: hidden; overflow: hidden;
...@@ -170,53 +197,53 @@ export default { ...@@ -170,53 +197,53 @@ export default {
.updatePsdContent-left { .updatePsdContent-left {
float: left; float: left;
width: 70%; width: 70%;
height: 100% height: 100%;
} }
.updatePsdContent-right{ .updatePsdContent-right {
float: left; float: left;
width: 30%; width: 30%;
height: 858px; height: 858px;
background: #ffffff background: #ffffff;
} }
.logo{ .logo {
width:70%; width: 70%;
height:180px; height: 180px;
margin-top:160px; margin-top: 160px;
/* border: 1px solid black; */ /* border: 1px solid black; */
margin-left:15% margin-left: 15%;
} }
.logo img { .logo img {
width:50%; width: 50%;
height:50% ; height: 50%;
/* margin-left: 30px */ /* margin-left: 30px */
} }
.logo h3{ .logo h3 {
font-size: 30px; font-size: 30px;
color: black; color: black;
margin-top: 0px margin-top: 0px;
} }
.updatePsd_content{ .updatePsd_content {
height: 200px; height: 200px;
width: 70%; width: 70%;
margin-left:15% margin-left: 15%;
} }
.copy{ .copy {
width: 100%; width: 100%;
height:100px; height: 100px;
margin-top: 160px; margin-top: 160px;
margin-left: 7%; margin-left: 7%;
} }
.copy p{ .copy p {
font-size: 17px; font-size: 17px;
color: #999 color: #999;
} }
.wordStyle2{ .wordStyle2 {
width: 100%; width: 100%;
} }
.formcontent{ .formcontent {
height:130px; height: 130px;
} }
.formitemcontent{ .formitemcontent {
height:60px; height: 60px;
} }
</style> </style>
<template> <template>
<div class="resumeDetail"> <div class="resumeDetail">
<div class="personalInformation" v-show="JSON.stringify(resume)!=='{}'"> <div class="personalInformation" v-show="JSON.stringify(resume) !== '{}'">
<p class="detailTitel"> <p class="detailTitel">
<span> <span>
<img src="http://xyqbui.lkbang.net/image/icon_%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF_23_16px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"> <img
src="http://xyqbui.lkbang.net/image/icon_%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF_23_16px.png"
style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/>
</span> </span>
<span style="margin-left:7px;font-size:16px;color:#0092FF" >基本信息</span> <span style="margin-left:7px;font-size:16px;color:#0092FF"
>基本信息</span
>
</p> </p>
<div class="massageTitle"> <div class="massageTitle">
<p> <p>
<span class="bassMassage">姓名:{{resume&&resume.ownerName}}</span> <span class="bassMassage"
<span class="bassMassageRight">年龄:{{resume&&resume.ownerAge}}</span> >姓名:{{ resume && resume.ownerName }}</span
>
<span class="bassMassageRight"
>年龄:{{ resume && resume.ownerAge }}</span
>
</p> </p>
<p> <p>
<span class="bassMassage">联系电话:{{resume&&resume.ownerMobile}}</span> <span class="bassMassage"
<span class="bassMassageRight">职位:{{resume&&resume.ownerExpectTitles}}</span> >联系电话:{{ resume && resume.ownerMobile }}</span
>
<span class="bassMassageRight"
>职位:{{ resume && resume.ownerExpectTitles }}</span
>
</p> </p>
<p> <p>
<span class="bassMassage">电子邮箱:{{resume&&resume.email}}</span> <span class="bassMassage"
<span class="bassMassageRight">学历:{{resume&&resume.ownerHighestDegree}}</span> >电子邮箱:{{ resume && resume.email }}</span
>
<span class="bassMassageRight"
>学历:{{ resume && resume.ownerHighestDegree }}</span
>
</p> </p>
<p> <p>
<span class="bassMassage">所在地:{{resume&&resume.locationCity}}</span> <span class="bassMassage"
<span class="bassMassageRight">经验:{{resume&&resume.workYearsOriginal}}</span> >所在地:{{ resume && resume.locationCity }}</span
>
<span class="bassMassageRight"
>经验:{{ resume && resume.workYearsOriginal }}</span
>
</p> </p>
<p> <p>
<span class="bassMassage">求职状态:{{resume&&resume.statusMessage}}</span> <span class="bassMassage"
>求职状态:{{ resume && resume.statusMessage }}</span
>
<span class="bassMassageRight"></span> <span class="bassMassageRight"></span>
</p> </p>
<p> <p>
<span class="bassMassage">期望行业:{{resume&&resume.industries}}</span> <span class="bassMassage"
<span class="bassMassageRight">期望薪资:{{resume&&resume.expectSalary}}</span> >期望行业:{{ resume && resume.industries }}</span
>
<span class="bassMassageRight"
>期望薪资:{{ resume && resume.expectSalary }}</span
>
</p> </p>
<p > <p>
<span class="bassMassage">期望职位:{{resume&&resume.expectTitles}}</span> <span class="bassMassage"
<span class="bassMassageRight">期望地区:{{resume&&resume.city}}</span> >期望职位:{{ resume && resume.expectTitles }}</span
>
<span class="bassMassageRight"
>期望地区:{{ resume && resume.city }}</span
>
</p> </p>
</div> </div>
</div> </div>
<div class="workExperience" v-show="roList.length !==0 "> <div class="workExperience" v-show="roList.length !== 0">
<p class="detailTitel"> <p class="detailTitel">
<span> <span>
<img src="http://xyqbui.lkbang.net/image/icon_%E5%B7%A5%E4%BD%9C%E7%BB%8F%E5%8E%86_20_18px.png" style="height:16px;width:23px;vertical-align: middle;margin-top:-4px"> <img
src="http://xyqbui.lkbang.net/image/icon_%E5%B7%A5%E4%BD%9C%E7%BB%8F%E5%8E%86_20_18px.png"
style="height:16px;width:23px;vertical-align: middle;margin-top:-4px"
/>
</span> </span>
<span style="margin-left:7px;font-size:16px;color:#0092FF;">工作经历</span> <span style="margin-left:7px;font-size:16px;color:#0092FF;"
>工作经历</span
>
</p> </p>
<div class="workExperience-detail" v-for="(item,index) in roList" :key="index"> <div
class="workExperience-detail"
v-for="(item, index) in roList"
:key="index"
>
<div class="workExperience-top"> <div class="workExperience-top">
<p style="height:28px;line-height:28px;font-size:14px;"> <p style="height:28px;line-height:28px;font-size:14px;">
<span style="margin-left:30px">{{item.startTime}}-{{item.endTime}}</span> <span style="margin-left:30px"
<span style="margin-left:18px"><span>{{item.company}}<span>({{item.workTime}})</span></span></span> >{{ item.startTime }}-{{ item.endTime }}</span
>
<span style="margin-left:18px"
><span
>{{ item.company }}<span>({{ item.workTime }})</span></span
></span
>
<span style="float:right;margin-right:30px"> <span style="float:right;margin-right:30px">
<span>{{item.industry}}</span> <span>{{ item.industry }}</span>
<span>{{item.companyType}}</span> <span>{{ item.companyType }}</span>
</span> </span>
</p> </p>
<p style="height:28px;line-height:28px;font-size:14px;"> <p style="height:28px;line-height:28px;font-size:14px;">
<span style="float:right;margin-right:30px">{{item.department}}</span> <span style="float:right;margin-right:30px">{{
item.department
}}</span>
</p> </p>
</div> </div>
<div class="workExperience-bottom">{{item.desc}}</div> <div class="workExperience-bottom">{{ item.desc }}</div>
</div> </div>
</div> </div>
<div class="projectExperience" v-show="rpList.length !==0 "> <div class="projectExperience" v-show="rpList.length !== 0">
<p class="detailTitel"> <p class="detailTitel">
<span> <span>
<img src="http://xyqbui.lkbang.net/image/icon_%E9%A1%B9%E7%9B%AE%E7%BB%8F%E5%8E%86_20_20px.png" style="height:14px;width:19px; vertical-align: middle;margin-top:-4px;margin-left:2px"></span> <img
<span style="margin-left:7px;font-size:16px;color:#0092FF">项目经历</span> src="http://xyqbui.lkbang.net/image/icon_%E9%A1%B9%E7%9B%AE%E7%BB%8F%E5%8E%86_20_20px.png"
style="height:14px;width:19px; vertical-align: middle;margin-top:-4px;margin-left:2px"
/></span>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>项目经历</span
>
</p> </p>
<div class="projectExperience-detail" v-for="(item,index) in rpList" :key="index"> <div
class="projectExperience-detail"
v-for="(item, index) in rpList"
:key="index"
>
<div class="projectExperience-top"> <div class="projectExperience-top">
<p style="height:28px;line-height:28px;font-size:14px;"> <p style="height:28px;line-height:28px;font-size:14px;">
<span style="margin-left:30px">{{item.startYear}}/{{item.startMonth}}-{{item.endYear}}/{{item.endMonth}}</span> <span style="margin-left:30px"
<span style="margin-left:18px"><span>{{item.name}}<span></span></span></span> >{{ item.startYear }}/{{ item.startMonth }}-{{ item.endYear }}/{{
item.endMonth
}}</span
>
<span style="margin-left:18px"
><span>{{ item.name }}<span></span></span
></span>
<span style="float:right;margin-right:30px"> <span style="float:right;margin-right:30px">
<span>{{item.post}}</span> <span>{{ item.post }}</span>
</span> </span>
</p> </p>
</div> </div>
<div class="projectExperience-bottom">{{item.desc}}</div> <div class="projectExperience-bottom">{{ item.desc }}</div>
</div> </div>
</div> </div>
<div class="internshipExperience" v-show="riList.length !==0 "> <div class="internshipExperience" v-show="riList.length !== 0">
<p class="detailTitel"> <p class="detailTitel">
<span> <span>
<img src="http://xyqbui.lkbang.net/image/icon_%E5%AE%9E%E4%B9%A0%E7%BB%8F%E5%8E%86_21_18px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"></span> <img
<span style="margin-left:7px;font-size:16px;color:#0092FF">实习经历</span> src="http://xyqbui.lkbang.net/image/icon_%E5%AE%9E%E4%B9%A0%E7%BB%8F%E5%8E%86_21_18px.png"
style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>实习经历</span
>
</p> </p>
<div class="internshipExperience-detail" v-for="(item,index) in riList" :key="index"> <div
class="internshipExperience-detail"
v-for="(item, index) in riList"
:key="index"
>
<div class="internshipExperience-top"> <div class="internshipExperience-top">
<p style="height:28px;line-height:28px;font-size:14px;"> <p style="height:28px;line-height:28px;font-size:14px;">
<span style="margin-left:30px">{{item.startYear}}/{{item.startMonth}}-{{item.endYear}}/{{item.endMonth}}</span> <span style="margin-left:30px"
<span style="margin-left:18px"><span>{{item.company}}<span></span></span></span> >{{ item.startYear }}/{{ item.startMonth }}-{{ item.endYear }}/{{
item.endMonth
}}</span
>
<span style="margin-left:18px"
><span>{{ item.company }}<span></span></span
></span>
<span style="float:right;margin-right:30px"> <span style="float:right;margin-right:30px">
<span>{{item.industry}}</span> <span>{{ item.industry }}</span>
<!-- <span>{{item.title}}</span> --> <!-- <span>{{item.title}}</span> -->
</span> </span>
</p> </p>
<p style="height:28px;line-height:28px;font-size:14px;"> <p style="height:28px;line-height:28px;font-size:14px;">
<span style="float:right;margin-right:30px">{{item.title}}</span> <span style="float:right;margin-right:30px">{{ item.title }}</span>
</p> </p>
</div> </div>
<div class="internshipExperience-bottom">{{item.desc}}</div> <div class="internshipExperience-bottom">{{ item.desc }}</div>
</div> </div>
</div> </div>
<div class="educationalExperience" v-show="reList.length !==0"> <div class="educationalExperience" v-show="reList.length !== 0">
<p class="detailTitel"> <p class="detailTitel">
<span> <span>
<img src="http://xyqbui.lkbang.net/image/icon_%E6%95%99%E8%82%B2%E7%BB%8F%E5%8E%86_26_20px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"></span> <img
<span style="margin-left:7px;font-size:16px;color:#0092FF">教育经历</span> src="http://xyqbui.lkbang.net/image/icon_%E6%95%99%E8%82%B2%E7%BB%8F%E5%8E%86_26_20px.png"
style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>教育经历</span
>
</p> </p>
<div class="educationalExperience-detail" v-for="(item,index) in reList" :key="index"> <div
class="educationalExperience-detail"
v-for="(item, index) in reList"
:key="index"
>
<div class="educationalExperience-content"> <div class="educationalExperience-content">
<div class="educationalExperience-left"> <div class="educationalExperience-left">
<p style="line-height:25px;margin-top:20px">{{item.school}}(({{item.startYear}}.{{item.startMonth}}-{{item.endYear}}.{{item.endMonth}}))</p> <p style="line-height:25px;margin-top:20px">
<p style="margin-top:20px;">专业:{{item.major}}</p> {{ item.school }}(({{ item.startYear }}.{{ item.startMonth }}-{{
item.endYear
}}.{{ item.endMonth }}))
</p>
<p style="margin-top:20px;">专业:{{ item.major }}</p>
</div> </div>
<div class="educationalExperience-right"> <div class="educationalExperience-right">
<p style="margin-top:65px">学历:{{item.degree}}</p> <p style="margin-top:65px">学历:{{ item.degree }}</p>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="Self-evaluation" v-show="JSON.stringify(resume)!=='{}'"> <div class="Self-evaluation" v-show="JSON.stringify(resume) !== '{}'">
<p class="detailTitel"> <p class="detailTitel">
<span> <span>
<img src="http://xyqbui.lkbang.net/image/icon_%E8%87%AA%E6%88%91%E8%AF%84%E4%BB%B7_18_18px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"></span> <img
<span style="margin-left:7px;font-size:16px;color:#0092FF">自我评价</span> src="http://xyqbui.lkbang.net/image/icon_%E8%87%AA%E6%88%91%E8%AF%84%E4%BB%B7_18_18px.png"
style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>自我评价</span
>
</p> </p>
<div class="evaluation-content"> <div class="evaluation-content">
{{resume&&resume.selfEvaluate}} {{ resume && resume.selfEvaluate }}
</div> </div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import { seedetail } from '../../api/resume.server' import { seedetail } from "../../api/resume.server";
import localStorage from '../../service/localstorage.service.js' import localStorage from "../../service/localstorage.service.js";
import { import { sapi } from "../../config";
sapi
} from '../../config'
export default { export default {
data () { data() {
return { return {
resume: {}, resume: {},
riList: [], riList: [],
roList: [], roList: [],
rpList: [], rpList: [],
reList: [], reList: [],
downresume: '', downresume: "",
detialID: '', detialID: "",
showBtn: '' showBtn: ""
} };
}, },
methods: { methods: {
getDETAIL () { getDETAIL() {
this.detialID = this.$route.query.ID this.detialID = this.$route.query.ID;
this.showBtn = this.$route.query.noShowBtn this.showBtn = this.$route.query.noShowBtn;
const token = this.$route.query.token || '' const token = this.$route.query.token || "";
const parmars = { const parmars = {
uid: this.$route.query.id uid: this.$route.query.id
// uid:"0646215721cc43ccb51ff3e979959e35" // uid:"0646215721cc43ccb51ff3e979959e35"
} };
seedetail(parmars).then(res => { seedetail(parmars).then(res => {
this.resume = res.data.body.resume this.resume = res.data.body.resume;
this.riList = res.data.body.riList this.riList = res.data.body.riList;
this.roList = res.data.body.roList this.roList = res.data.body.roList;
this.rpList = res.data.body.rpList this.rpList = res.data.body.rpList;
this.reList = res.data.body.reList this.reList = res.data.body.reList;
}) });
} }
}, },
mounted () { mounted() {
this.getDETAIL() this.getDETAIL();
} }
} };
</script> </script>
<style scoped> <style scoped>
.resumeDetail{ .resumeDetail {
width: 860px; width: 860px;
margin: 30px auto; margin: 30px auto;
color: #000000; color: #000000;
font-family: "\5FAE\8F6F\96C5\9ED1" font-family: "\5FAE\8F6F\96C5\9ED1";
} }
.personalInformation{ .personalInformation {
width:860px; width: 860px;
/* height: 600px; */ /* height: 600px; */
float: left; float: left;
/* border: 1px solid black */ /* border: 1px solid black */
} }
.bassMassage{ .bassMassage {
display: inline-block; display: inline-block;
width: 400px; width: 400px;
float: left; float: left;
margin-left:30px; margin-left: 30px;
font-size: 14px; font-size: 14px;
margin-top:20px margin-top: 20px;
} }
.bassMassageRight{ .bassMassageRight {
display: inline-block; display: inline-block;
width: 400px; width: 400px;
float: left; float: left;
font-size: 14px; font-size: 14px;
margin-top:20px; margin-top: 20px;
margin-left:20px margin-left: 20px;
} }
.massageTitle{ .massageTitle {
/* height: 300px; */ /* height: 300px; */
float: left; float: left;
} }
.personalInformation-left{ .personalInformation-left {
width: 400px; width: 400px;
height:260px; height: 260px;
margin-left: 30px; margin-left: 30px;
float: left; float: left;
font-size: 14px; font-size: 14px;
} }
.personalInformation-left p{ .personalInformation-left p {
line-height: 37px line-height: 37px;
} }
.personalInformation-right{ .personalInformation-right {
width: 400px; width: 400px;
height:260px; height: 260px;
font-size: 14px; font-size: 14px;
float: left; float: left;
} }
.personalInformation-right p{ .personalInformation-right p {
line-height: 37px line-height: 37px;
} }
.workExperience{ .workExperience {
width: 860px; width: 860px;
float: left; float: left;
margin-top: 10px margin-top: 10px;
} }
.workExperience-detail{ .workExperience-detail {
width: 860px; width: 860px;
float: left; float: left;
margin-top: 20px; margin-top: 20px;
} }
.workExperience-top{ .workExperience-top {
width: 860px; width: 860px;
height: 56px; height: 56px;
background: rgba(246,246,246,1); background: rgba(246, 246, 246, 1);
} }
.workExperience-bottom{ .workExperience-bottom {
width:640px; width: 640px;
margin-left: 71px; margin-left: 71px;
margin-top: 20px; margin-top: 20px;
line-height: 24px; line-height: 24px;
} }
.projectExperience{ .projectExperience {
width: 860px; width: 860px;
margin-top: 30px; margin-top: 30px;
float: left; float: left;
} }
.projectExperience-detail{ .projectExperience-detail {
width: 860px; width: 860px;
float: left; float: left;
margin-top: 20px; margin-top: 20px;
} }
.projectExperience-top{ .projectExperience-top {
width: 860px; width: 860px;
height: 34px; height: 34px;
line-height: 34px; line-height: 34px;
background: rgba(246,246,246,1); background: rgba(246, 246, 246, 1);
} }
.projectExperience-bottom{ .projectExperience-bottom {
width:640px; width: 640px;
margin-left: 71px; margin-left: 71px;
margin-top: 20px; margin-top: 20px;
line-height: 24px line-height: 24px;
} }
.internshipExperience{ .internshipExperience {
width: 860px; width: 860px;
margin-top: 30px; margin-top: 30px;
float: left; float: left;
} }
.internshipExperience-detail{ .internshipExperience-detail {
width: 860px; width: 860px;
float: left; float: left;
margin-top: 20px; margin-top: 20px;
} }
.internshipExperience-top{ .internshipExperience-top {
width: 860px; width: 860px;
height: 56px; height: 56px;
line-height: 34px; line-height: 34px;
background: rgba(246,246,246,1); background: rgba(246, 246, 246, 1);
} }
.internshipExperience-bottom{ .internshipExperience-bottom {
width:640px; width: 640px;
margin-left: 71px; margin-left: 71px;
margin-top: 20px; margin-top: 20px;
line-height: 24px line-height: 24px;
} }
.educationalExperience{ .educationalExperience {
width: 860px; width: 860px;
float: left; float: left;
} }
.educationalExperience-left{ .educationalExperience-left {
width: 430px; width: 430px;
float: left; float: left;
margin-left: 30px; margin-left: 30px;
font-size: 14px font-size: 14px;
} }
.educationalExperience-right{ .educationalExperience-right {
width: 380px; width: 380px;
float: left; float: left;
font-size: 14px font-size: 14px;
} }
.Self-evaluation{ .Self-evaluation {
width: 860px; width: 860px;
float: left; float: left;
} }
.evaluation-content{ .evaluation-content {
width: 690px; width: 690px;
margin-left:30px; margin-left: 30px;
float: left; float: left;
margin-top: 20px; margin-top: 20px;
line-height: 30px; line-height: 30px;
margin-bottom: 40px margin-bottom: 40px;
} }
.detailTitel{ .detailTitel {
width: 860px; width: 860px;
height: 24px; height: 24px;
float: left; float: left;
......
...@@ -4,322 +4,425 @@ ...@@ -4,322 +4,425 @@
<h3 style="margin-top:5px;font-size:0.35rem">应聘登记表</h3> <h3 style="margin-top:5px;font-size:0.35rem">应聘登记表</h3>
</div> </div>
<div class="sweepcode_content"> <div class="sweepcode_content">
<Form :label-width="120" :model="formInline" :rules="ruleInline" ref="formInline" class="fontsize" label-position=left style="margin-left:3%"> <Form
<FormItem label="邀约人" prop="Inviter" style="margin-top:10px;font-size:15px"> :label-width="120"
<Input placeholder="请输入" style="width:85%;" v-model="formInline.Inviter" size="large"/> :model="formInline"
:rules="ruleInline"
ref="formInline"
class="fontsize"
label-position="left"
style="margin-left:3%"
>
<FormItem
label="邀约人"
prop="Inviter"
style="margin-top:10px;font-size:15px"
>
<Input
placeholder="请输入"
style="width:85%;"
v-model="formInline.Inviter"
size="large"
/>
</FormItem> </FormItem>
<FormItem label="邀约人手机" style="" class="phone"> <FormItem label="邀约人手机" style="" class="phone">
<Input placeholder="请输入" style="width:85%;" v-model="formInline.InviterPhoneNumber" size="large" @on-blur='jedugePhone'/><br> <Input
<span style="position: absolute;top: 100%;left: 0;line-height: 1;padding-top: 6px;color:#ed4014;display:inline-block;height:30px;" v-show="isV==true">请输入正确的手机号码</span> placeholder="请输入"
style="width:85%;"
v-model="formInline.InviterPhoneNumber"
size="large"
@on-blur="jedugePhone"
/><br />
<span
style="position: absolute;top: 100%;left: 0;line-height: 1;padding-top: 6px;color:#ed4014;display:inline-block;height:30px;"
v-show="isV == true"
>请输入正确的手机号码</span
>
</FormItem> </FormItem>
<FormItem label="面试时间" prop="time" class="dateTime"> <FormItem label="面试时间" prop="time" class="dateTime">
<Input placeholder="请输入" style="width:40%;" v-model="formInline.date" :readonly="true" size="large" /> <Input
<TimePicker type="time" placeholder="请选择时间" style="width: 43%" v-model="formInline.time" format="HH:mm" @on-change="selectTime" @on-focus="defaultRRRR" :editable="false" size="large"></TimePicker> placeholder="请输入"
style="width:40%;"
v-model="formInline.date"
:readonly="true"
size="large"
/>
<TimePicker
type="time"
placeholder="请选择时间"
style="width: 43%"
v-model="formInline.time"
format="HH:mm"
@on-change="selectTime"
@on-focus="defaultRRRR"
:editable="false"
size="large"
></TimePicker>
</FormItem> </FormItem>
<FormItem label="应聘职位" prop="position" class="position"> <FormItem label="应聘职位" prop="position" class="position">
<Input placeholder="请输入" style="width:85%;" v-model="formInline.position" size="large"/> <Input
placeholder="请输入"
style="width:85%;"
v-model="formInline.position"
size="large"
/>
</FormItem> </FormItem>
<FormItem label="应聘来源" prop="model1" class="model1"> <FormItem label="应聘来源" prop="model1" class="model1">
<Select v-model="formInline.model1" style="width:85%;" size="large"> <Select v-model="formInline.model1" style="width:85%;" size="large">
<Option v-for="item in origen" :value="item.value" :key="item.value">{{ item.label}}</Option> <Option
v-for="item in origen"
:value="item.value"
:key="item.value"
>{{ item.label }}</Option
>
</Select> </Select>
</FormItem> </FormItem>
<FormItem label="姓名" prop="name" class="name"> <FormItem label="姓名" prop="name" class="name">
<Input placeholder="请与简历保持一致" style="width:85%;" v-model="formInline.name" size="large"/> <Input
placeholder="请与简历保持一致"
style="width:85%;"
v-model="formInline.name"
size="large"
/>
</FormItem> </FormItem>
<FormItem label="手机号码" prop="phoneNUmber" class="phoneNUmber"> <FormItem label="手机号码" prop="phoneNUmber" class="phoneNUmber">
<Input placeholder="请输入" style="width:85%;" v-model="formInline.phoneNUmber" size="large"/> <Input
placeholder="请输入"
style="width:85%;"
v-model="formInline.phoneNUmber"
size="large"
/>
</FormItem> </FormItem>
<FormItem label="是否携带简历" prop="model2" class="model2"> <FormItem label="是否携带简历" prop="model2" class="model2">
<Select v-model="formInline.model2" style="width:85%;" size="large"> <Select v-model="formInline.model2" style="width:85%;" size="large">
<Option v-for="item in isGET" :value="item.value" :key="item.value">{{ item.label }}</Option> <Option
v-for="item in isGET"
:value="item.value"
:key="item.value"
>{{ item.label }}</Option
>
</Select> </Select>
</FormItem> </FormItem>
</Form> </Form>
</div> </div>
<div class="submission"> <div class="submission">
<Button type='primary' @click="confirmSubmission" :loading="loading">提交</Button> <Button type="primary" @click="confirmSubmission" :loading="loading"
>提交</Button
>
</div> </div>
<Modal <Modal v-model="modal3" width="200px" :closable="false">
v-model="modal3" <div>
width='200px'
:closable='false'>
<div >
<h2 style="text-align: center;color:black">欢迎来到量星球</h2> <h2 style="text-align: center;color:black">欢迎来到量星球</h2>
<p style="font-size:15px">您好,为了更好的面试体验,请仔细填写以下信息,预计用时1-2分钟</p> <p style="font-size:15px">
您好,为了更好的面试体验,请仔细填写以下信息,预计用时1-2分钟
</p>
</div> </div>
<div slot='footer' style="text-align:center"> <div slot="footer" style="text-align:center">
<Button type='primary' @click='modal3=false'>确定</Button> <Button type="primary" @click="modal3 = false">确定</Button>
</div> </div>
</Modal> </Modal>
<Modal <Modal v-model="modal4" width="200px" :closable="false">
v-model="modal4" <div>
width='200px' <p style="text-align:center;font-size:16px">
:closable='false'> HR已知晓您的到来,请稍等片刻
<div > </p>
<p style="text-align:center;font-size:16px">HR已知晓您的到来,请稍等片刻</p>
</div> </div>
<div slot='footer' style="text-align:center"> <div slot="footer" style="text-align:center">
<Button type='primary' @click='modal4=false'>好的</Button> <Button type="primary" @click="modal4 = false">好的</Button>
</div> </div>
</Modal> </Modal>
</div> </div>
</template> </template>
<script> <script>
import moment from 'moment' import moment from "moment";
import { submitMassage } from '../../api/sweepCode.server.js' import { submitMassage } from "../../api/sweepCode.server.js";
export default { export default {
data () { data() {
return { return {
docmHeight: '0', docmHeight: "0",
showHeight: '0', showHeight: "0",
loading: false, loading: false,
hidshow: true, hidshow: true,
isResize: false, isResize: false,
modal3: false, modal3: false,
modal4: false, modal4: false,
ruleInline: { ruleInline: {
Inviter: [ Inviter: [{ required: true, message: "请输入邀约人", trigger: "blur" }],
{ required: true, message: '请输入邀约人', trigger: 'blur' }
],
time: [ time: [
{ required: true, message: '面试时间不能为空', trigger: 'date' } { required: true, message: "面试时间不能为空", trigger: "date" }
], ],
// InviterPhoneNumber: [ // InviterPhoneNumber: [
// { required: false, pattern:/^[1][3,4,5,7,8,6,9][0-9]{9}$/, message: '请输入正确的手机号', trigger: 'blur' } // { required: false, pattern:/^[1][3,4,5,7,8,6,9][0-9]{9}$/, message: '请输入正确的手机号', trigger: 'blur' }
// ], // ],
position: [ position: [
{ required: true, message: '请输入应聘职位', trigger: 'blur' } { required: true, message: "请输入应聘职位", trigger: "blur" }
], ],
model1: [ model1: [
{ required: true, message: '请输入应聘来源', trigger: 'blur' } { required: true, message: "请输入应聘来源", trigger: "blur" }
],
name: [
{ required: true, message: '请输入姓名', trigger: 'blur' }
], ],
name: [{ required: true, message: "请输入姓名", trigger: "blur" }],
phoneNUmber: [ phoneNUmber: [
{ required: true, message: '请输入正确的手机号码', trigger: 'blur' }, { required: true, message: "请输入正确的手机号码", trigger: "blur" },
{ required: true, pattern: /^[1][3,4,5,7,8,6,9][0-9]{9}$/, message: '请输入正确的手机号', trigger: 'blur' } {
required: true,
pattern: /^[1][3,4,5,7,8,6,9][0-9]{9}$/,
message: "请输入正确的手机号",
trigger: "blur"
}
], ],
model2: [ model2: [
{ required: true, message: '请选择是否携带简历', trigger: 'blur' } { required: true, message: "请选择是否携带简历", trigger: "blur" }
] ]
}, },
saleDate: '', saleDate: "",
isV: false, isV: false,
options3: { options3: {
disabledDate (date) { disabledDate(date) {
return date && date.valueOf() < Date.now() - 3600 * 24 * 1000 || date.valueOf() > Date.now() return (
(date && date.valueOf() < Date.now() - 3600 * 24 * 1000) ||
date.valueOf() > Date.now()
);
} }
}, },
origen: [ origen: [
{ {
value: '智联招聘', value: "智联招聘",
label: '智联招聘' label: "智联招聘"
}, },
{ {
value: '51Job', value: "51Job",
label: '51Job' label: "51Job"
}, },
{ {
value: 'boss直聘', value: "boss直聘",
label: 'boss直聘' label: "boss直聘"
}, },
{ {
value: '拉勾网', value: "拉勾网",
label: '拉勾网' label: "拉勾网"
}, },
{ {
value: '内部推荐', value: "内部推荐",
label: '内部推荐' label: "内部推荐"
}, },
{ {
value: '猎聘网', value: "猎聘网",
label: '猎聘网' label: "猎聘网"
}, },
{ {
value: '其他', value: "其他",
label: '其他' label: "其他"
} }
], ],
isGET: [ isGET: [
{ {
value: '', value: "",
label: '' label: ""
}, },
{ {
value: '', value: "",
label: '' label: ""
} }
], ],
formInline: { formInline: {
model1: '', model1: "",
model2: '', model2: "",
Inviter: '', Inviter: "",
InviterPhoneNumber: '', InviterPhoneNumber: "",
date: '', date: "",
time: '', time: "",
position: '', position: "",
phoneNUmber: '', phoneNUmber: "",
name: '' name: ""
}, },
isV: false, isV: false,
hh: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'], hh: [
mm: ['00', '10', '20', '30', '40', '50', '60'] "01",
} "02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12"
],
mm: ["00", "10", "20", "30", "40", "50", "60"]
};
}, },
methods: { methods: {
// 确认提交 // 确认提交
confirmSubmission () { confirmSubmission() {
if (this.formInline.model1 == '' || this.formInline.model2 == '' || this.formInline.Inviter == '' || this.formInline.date == '' || this.formInline.time === '' || this.formInline.position == '' || this.formInline.phoneNUmber == '' || this.formInline.name == '') { if (
this.$Message.error('请填写完整的信息') this.formInline.model1 == "" ||
return this.formInline.model2 == "" ||
this.formInline.Inviter == "" ||
this.formInline.date == "" ||
this.formInline.time === "" ||
this.formInline.position == "" ||
this.formInline.phoneNUmber == "" ||
this.formInline.name == ""
) {
this.$Message.error("请填写完整的信息");
return;
} }
if (!(/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.phoneNUmber))) { if (!/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.phoneNUmber)) {
this.$Message.error('请输入正确的手机号') this.$Message.error("请输入正确的手机号");
return return;
} }
if (this.formInline.InviterPhoneNumber !== '' && !(/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.InviterPhoneNumber))) { if (
this.$Message.error('请输入正确的手机号') this.formInline.InviterPhoneNumber !== "" &&
return !/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.InviterPhoneNumber)
) {
this.$Message.error("请输入正确的手机号");
return;
} }
const parmars = { const parmars = {
invitePerson: this.formInline.Inviter, invitePerson: this.formInline.Inviter,
inviterMobile: this.formInline.InviterPhoneNumber, inviterMobile: this.formInline.InviterPhoneNumber,
dateTime: moment(this.formInline.date).format('YYYY-MM-DD') + ' ' + this.formInline.time, dateTime:
moment(this.formInline.date).format("YYYY-MM-DD") +
" " +
this.formInline.time,
interviewTitle: this.formInline.position, interviewTitle: this.formInline.position,
source: this.formInline.model1, source: this.formInline.model1,
name: this.formInline.name, name: this.formInline.name,
mobile: this.formInline.phoneNUmber, mobile: this.formInline.phoneNUmber,
takeResume: this.formInline.model2 takeResume: this.formInline.model2
} };
this.loading = true this.loading = true;
submitMassage(parmars).then(res => { submitMassage(parmars).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.loading = false this.loading = false;
this.formInline.model1 = '' this.formInline.model1 = "";
this.formInline.model2 = '' this.formInline.model2 = "";
this.formInline.Inviter = '' this.formInline.Inviter = "";
this.formInline.InviterPhoneNumber = '' this.formInline.InviterPhoneNumber = "";
this.formInline.time = '' this.formInline.time = "";
this.formInline.position = '' this.formInline.position = "";
this.formInline.name = '' this.formInline.name = "";
this.formInline.phoneNUmber = '' this.formInline.phoneNUmber = "";
this.modal4 = true this.modal4 = true;
} }
}) });
}, },
selectDate (a) { selectDate(a) {
this.formInline.date = a this.formInline.date = a;
}, },
selectTime (b) { selectTime(b) {
this.formInline.time = b this.formInline.time = b;
}, },
welconme () { welconme() {
this.modal3 = true this.modal3 = true;
}, },
jedugePhone () { jedugePhone() {
if (this.formInline.InviterPhoneNumber == '') { if (this.formInline.InviterPhoneNumber == "") {
this.isV = false this.isV = false;
return return;
} }
if (!(/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.InviterPhoneNumber))) { if (
this.isV = true !/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.InviterPhoneNumber)
) {
this.isV = true;
} }
if ((/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.InviterPhoneNumber))) { if (
this.isV = false /^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.InviterPhoneNumber)
) {
this.isV = false;
} }
}, },
// 阻止弹出键盘 // 阻止弹出键盘
defaultRRRR () { defaultRRRR() {
document.activeElement.blur() document.activeElement.blur();
} }
}, },
mounted () { mounted() {
this.welconme() this.welconme();
const myDate = new Date() const myDate = new Date();
const year = myDate.getFullYear() // 获取当前年份 const year = myDate.getFullYear(); // 获取当前年份
const month = myDate.getMonth() + 1 // 获取当前月份(0-11,0代表1月所以要加1); const month = myDate.getMonth() + 1; // 获取当前月份(0-11,0代表1月所以要加1);
const day = myDate.getDate() // 获取当前日(1-31) const day = myDate.getDate(); // 获取当前日(1-31)
this.saleDate = `${year}/${month}/${day}` this.saleDate = `${year}/${month}/${day}`;
this.formInline.date = this.saleDate this.formInline.date = this.saleDate;
function getRem () { function getRem() {
var html = document.getElementsByTagName('html')[0] var html = document.getElementsByTagName("html")[0];
var oWidth = document.body.clientWidth || document.documentElement.clientWidth var oWidth =
html.style.fontSize = oWidth / 7.5 + 'px' document.body.clientWidth || document.documentElement.clientWidth;
html.style.fontSize = oWidth / 7.5 + "px";
} }
this.$nextTick(() => { this.$nextTick(() => {
getRem() getRem();
}) });
window.onresize = () => { window.onresize = () => {
return (() => { return (() => {
getRem() getRem();
if (!this.isResize) { if (!this.isResize) {
this.docmHeight = document.documentElement.clientHeight this.docmHeight = document.documentElement.clientHeight;
this.isResize = true this.isResize = true;
}
this.showHeight = document.body.clientHeight
})()
} }
this.showHeight = document.body.clientHeight;
})();
};
}, },
beforeDestroy () { beforeDestroy() {
document.getElementsByTagName('html')[0].removeAttribute('style') document.getElementsByTagName("html")[0].removeAttribute("style");
}, },
watch: { watch: {
showHeight: function () { showHeight: function() {
if (this.docmHeight > this.showHeight) { if (this.docmHeight > this.showHeight) {
this.hidshow = false this.hidshow = false;
} else { } else {
this.hidshow = true this.hidshow = true;
} }
} }
} }
} };
</script> </script>
<style scoped> <style scoped>
#Sweepcode{ #Sweepcode {
height: 100%; height: 100%;
width:100%; width: 100%;
overflow: hidden; overflow: hidden;
} }
.mobile{ .mobile {
width: 100%; width: 100%;
height: 100% height: 100%;
} }
.header{ .header {
text-align: center; text-align: center;
height: 5%; height: 5%;
} }
.submission{ .submission {
height: 10%; height: 10%;
margin-top:10px; margin-top: 10px;
} }
.submission button{ .submission button {
width: 47%; width: 47%;
font-size: 0.35rem; font-size: 0.35rem;
margin-top:20px; margin-top: 20px;
margin-left: 26%; margin-left: 26%;
height: 39px; height: 39px;
} }
.sweepcode_content{ .sweepcode_content {
margin-top:10px; margin-top: 10px;
font-size: 0.15rem; font-size: 0.15rem;
height: 80%; height: 80%;
border-top: 1px solid rgba(241,241,241,1); border-top: 1px solid rgba(241, 241, 241, 1);
} }
</style> </style>
<style > <style>
.sweepcode_content input.ivu-input.ivu-input-large{ .sweepcode_content input.ivu-input.ivu-input-large {
background: #F4F4F4 background: #f4f4f4;
} }
.sweepcode_content .ivu-select-placeholder{ .sweepcode_content .ivu-select-placeholder {
background: #F4F4F4 background: #f4f4f4;
} }
.fontsize .ivu-form-item-label{ .fontsize .ivu-form-item-label {
font-size: 0.28rem; font-size: 0.28rem;
} }
/* .dateTime .ivu-form-item-label{ /* .dateTime .ivu-form-item-label{
...@@ -340,19 +443,19 @@ export default { ...@@ -340,19 +443,19 @@ export default {
.phoneNUmber .ivu-form-item-label{ .phoneNUmber .ivu-form-item-label{
margin-top:6px margin-top:6px
} */ } */
.fontsize{ .fontsize {
height: 100%; height: 100%;
width: 100%; width: 100%;
/* border: 1px solid yellow */ /* border: 1px solid yellow */
} }
.fontsize .ivu-form-item.ivu-form-item-required{ .fontsize .ivu-form-item.ivu-form-item-required {
height:7.5%; height: 7.5%;
} }
.fontsize .phone{ .fontsize .phone {
height:7%; height: 7%;
} }
.fontsize .ivu-input.ivu-input-large{ .fontsize .ivu-input.ivu-input-large {
font-size: 0.23rem font-size: 0.23rem;
} }
/* .dateTime .ivu-form-item-content{ /* .dateTime .ivu-form-item-content{
margin-top:6px margin-top:6px
......
<template> <template>
<div> <div>
<h3 style="color:#2d8cf0;font-size:18px;margin:14px 0 0 15px">二维码管理</h3> <h3 style="color:#2d8cf0;font-size:18px;margin:14px 0 0 15px">
二维码管理
</h3>
<h5 style="margin:24px 0 0 15px;display:inline-block">前台扫描二维码</h5> <h5 style="margin:24px 0 0 15px;display:inline-block">前台扫描二维码</h5>
<div class="Qrcode"> <div class="Qrcode">
<img :src="url" style="width:100%;height:100%"> <img :src="url" style="width:100%;height:100%" />
</div> </div>
<p class="xiazai" @click="downPic">下载</p> <p class="xiazai" @click="downPic">下载</p>
<!-- <p style="margin-top:40px"><span>请点击&nbsp;</span> <!-- <p style="margin-top:40px"><span>请点击&nbsp;</span>
...@@ -16,53 +18,50 @@ ...@@ -16,53 +18,50 @@
</div> </div>
</template> </template>
<script> <script>
import { getErcode, downloadErcode } from '../../api/stystem.server.js' import { getErcode, downloadErcode } from "../../api/stystem.server.js";
import { import { sapi } from "../../config";
sapi
} from '../../config'
export default { export default {
data () { data() {
return { return {
url: '', url: "",
url2: '' url2: ""
} };
}, },
methods: { methods: {
// 取到二维码 // 取到二维码
getercode () { getercode() {
getErcode().then(res => { getErcode().then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.url = res.data.body this.url = res.data.body;
} }
}) });
}, },
downPic (img) { downPic(img) {
window.location.href = `${sapi}/api/qrCode/downQrCode` window.location.href = `${sapi}/api/qrCode/downQrCode`;
} }
}, },
mounted () { mounted() {
this.getercode() this.getercode();
} }
} };
</script> </script>
<style> <style>
.Qrcode{ .Qrcode {
height: 200px; height: 200px;
width: 200px; width: 200px;
border: 1px solid black; border: 1px solid black;
margin: 20px 0 0 15px margin: 20px 0 0 15px;
} }
.xiazai{ .xiazai {
height: 30px; height: 30px;
width: 100px; width: 100px;
background:#2d8cf0; background: #2d8cf0;
color: white; color: white;
line-height: 30px; line-height: 30px;
text-align: center; text-align: center;
border-radius: 5px ; border-radius: 5px;
position: absolute; position: absolute;
left: 230px; left: 230px;
top:270px top: 270px;
} }
</style> </style>
...@@ -2,131 +2,217 @@ ...@@ -2,131 +2,217 @@
<div class="account"> <div class="account">
<div class="addAcount"> <div class="addAcount">
<p style="margin-top:0.5%"> <p style="margin-top:0.5%">
<span style="font-size:18px;color:#2d8cf0;margin-left:18px;">新增账户</span> <span style="font-size:18px;color:#2d8cf0;margin-left:18px;"
>新增账户</span
>
<span style="margin-left:10px;color:Grey">以下内容均为必填项</span> <span style="margin-left:10px;color:Grey">以下内容均为必填项</span>
</p> </p>
<Form :label-width="100" :model="formInline" :rules="ruleInline"> <Form :label-width="100" :model="formInline" :rules="ruleInline">
<FormItem label="登录账号" style="margin-top:1%" prop="emailNumber"> <FormItem label="登录账号" style="margin-top:1%" prop="emailNumber">
<Input placeholder="请输入企业邮箱" style="width:300px" v-model="formInline.emailNumber"/> <Input
placeholder="请输入企业邮箱"
style="width:300px"
v-model="formInline.emailNumber"
/>
</FormItem> </FormItem>
<FormItem label="手机号码" style="margin-top:1%" prop="PhoneNumber"> <FormItem label="手机号码" style="margin-top:1%" prop="PhoneNumber">
<Input placeholder="请输入正确的手机号" style="width:300px" v-model="formInline.PhoneNumber"/> <Input
placeholder="请输入正确的手机号"
style="width:300px"
v-model="formInline.PhoneNumber"
/>
</FormItem> </FormItem>
<FormItem label="真实姓名" style="margin-top:1%" prop="PerName"> <FormItem label="真实姓名" style="margin-top:1%" prop="PerName">
<Input placeholder="请输入真实姓名" style="width:300px" v-model="formInline.PerName" :maxlength="5"/> <Input
placeholder="请输入真实姓名"
style="width:300px"
v-model="formInline.PerName"
:maxlength="5"
/>
</FormItem> </FormItem>
</Form> </Form>
<p> <p>
<span style="margin-left:25px;fnt-size:14px">初始登录密码</span> <span style="margin-left:25px;fnt-size:14px">初始登录密码</span>
<span style="margin-left:10px">默认是"123456",新用户首次登录需修改后才能进入系统。</span> <span style="margin-left:10px"
<span style="margin-left:30px"><Button type="primary" size='small' style="color:#ffffff;margin-left:20px;width:60px" @click="addacount"> 添加</Button></span> >默认是"123456",新用户首次登录需修改后才能进入系统。</span
>
<span style="margin-left:30px"
><Button
type="primary"
size="small"
style="color:#ffffff;margin-left:20px;width:60px"
@click="addacount"
>
添加</Button
></span
>
</p> </p>
</div> </div>
<div class="accountMange"> <div class="accountMange">
<div class="accountMange-top"> <div class="accountMange-top">
<p style="height:40px;line-height:40px"> <p style="height:40px;line-height:40px">
<span style="font-size:18px;color:#2d8cf0;margin-left:18px">账户管理</span> <span style="font-size:18px;color:#2d8cf0;margin-left:18px"
<span style="margin-left:10px;color:Grey">删除后该用户将无法登录,该账户上传的简历仍然保留。</span> >账户管理</span
>
<span style="margin-left:10px;color:Grey"
>删除后该用户将无法登录,该账户上传的简历仍然保留。</span
>
</p> </p>
<p style="border-bottom:1px solid black;line-height:30px;margin-bottom:10px"> <p
<input type='checkbox' class='input-checkbox' v-model='checked' v-on:click='checkedAll(checkboxList)' style="margin-left:25px;margin-top:15px;cursor:pointer"><span style="margin-left:10px">全选</span> style="border-bottom:1px solid black;line-height:30px;margin-bottom:10px"
<span style="margin-left:40px;color:#2d8cf0;cursor:pointer" @click="delateall">删除</span> >
<input
type="checkbox"
class="input-checkbox"
v-model="checked"
v-on:click="checkedAll(checkboxList)"
style="margin-left:25px;margin-top:15px;cursor:pointer"
/><span style="margin-left:10px">全选</span>
<span
style="margin-left:40px;color:#2d8cf0;cursor:pointer"
@click="delateall"
>删除</span
>
</p> </p>
</div> </div>
<!-- <Table ref="selection" :columns="columns4" :data="data1"></Table> --> <!-- <Table ref="selection" :columns="columns4" :data="data1"></Table> -->
<div style="overflow-y: auto;height:80%;margin-bottom:40px"> <div style="overflow-y: auto;height:80%;margin-bottom:40px">
<!-- <Spin size="large" fix v-if="spinShow" style="font-size:25px">加载中...</Spin> --> <!-- <Spin size="large" fix v-if="spinShow" style="font-size:25px">加载中...</Spin> -->
<div v-for='item in ajaxData' :key="item.id" style=""> <div v-for="item in ajaxData" :key="item.id" style="">
<div class="detailQQ"> <div class="detailQQ">
<input type='checkbox' name='checkboxinput' class='input-checkbox' v-model='checkboxList' :value="item.id" style="margin-left:25px;cursor:pointer" @click="delateArr(item.id)"> <input
<span style="margin-left:5px" >{{item.userName}}</span> type="checkbox"
<span style="margin-left:35px">{{item.userCode}}</span> name="checkboxinput"
<span style="margin-left:35px">{{item.phone}}</span> class="input-checkbox"
<span style="margin-left:35px">{{item.createTime}}</span> v-model="checkboxList"
<span style="margin-left:35px;color:#2d8cf0;cursor:pointer" @click="recoveryModal(item.id)">恢复初始密码</span> :value="item.id"
<span style="margin-left:35px;color:#2d8cf0;cursor:pointer" @click="updateModal(item)">修改</span> style="margin-left:25px;cursor:pointer"
<span style="margin-left:35px;color:#2d8cf0;cursor:pointer" @click="delateMaodal(item.id)">删除</span> @click="delateArr(item.id)"
/>
<span style="margin-left:5px">{{ item.userName }}</span>
<span style="margin-left:35px">{{ item.userCode }}</span>
<span style="margin-left:35px">{{ item.phone }}</span>
<span style="margin-left:35px">{{ item.createTime }}</span>
<span
style="margin-left:35px;color:#2d8cf0;cursor:pointer"
@click="recoveryModal(item.id)"
>恢复初始密码</span
>
<span
style="margin-left:35px;color:#2d8cf0;cursor:pointer"
@click="updateModal(item)"
>修改</span
>
<span
style="margin-left:35px;color:#2d8cf0;cursor:pointer"
@click="delateMaodal(item.id)"
>删除</span
>
</div> </div>
<div style="height:10px;background:white;width:100%;"></div> <div style="height:10px;background:white;width:100%;"></div>
</div> </div>
</div> </div>
<div class="pageBottom"> <div class="pageBottom">
<Page :total="totalSize" show-elevator show-total @on-change="pageChange" @on-page-size-change="pageSizeChange" :current='pageIndex' :page-size='pageSize' style="text-align:center;margin-top:8px"></Page> <Page
:total="totalSize"
show-elevator
show-total
@on-change="pageChange"
@on-page-size-change="pageSizeChange"
:current="pageIndex"
:page-size="pageSize"
style="text-align:center;margin-top:8px"
></Page>
</div> </div>
</div> </div>
<!-- 恢复初始密码 --> <!-- 恢复初始密码 -->
<Modal <Modal v-model="modal1" :closable="false" width="250px">
v-model="modal1"
:closable="false"
width='250px'>
<h3 style="text-align:center">提示</h3> <h3 style="text-align:center">提示</h3>
<p style="text-align:center">是否将该账号的密码,恢复至初始状态。</p> <p style="text-align:center">是否将该账号的密码,恢复至初始状态。</p>
<div slot='footer' style="text-align:center"> <div slot="footer" style="text-align:center">
<Button type='primary' @click='modal1=false'>取消</Button> <Button type="primary" @click="modal1 = false">取消</Button>
<Button type='primary' @click="recovery()" >确定</Button> <Button type="primary" @click="recovery()">确定</Button>
</div> </div>
</Modal> </Modal>
<Modal <Modal v-model="modal6" :closable="false" width="450px">
v-model="modal6"
:closable="false"
width='450px'>
<h3 style="text-align:center;font-size:14px">修改信息</h3> <h3 style="text-align:center;font-size:14px">修改信息</h3>
<Form :label-width="100" :model="formInline" :rules="ruleInline" class="updateClassModal"> <Form
:label-width="100"
:model="formInline"
:rules="ruleInline"
class="updateClassModal"
>
<FormItem label="登录账号" style="margin-top:1%" prop="emailNumber"> <FormItem label="登录账号" style="margin-top:1%" prop="emailNumber">
<Input placeholder="请输入企业邮箱" style="width:300px;" v-model="formInline.updateemailNumber" disabled/> <Input
placeholder="请输入企业邮箱"
style="width:300px;"
v-model="formInline.updateemailNumber"
disabled
/>
</FormItem> </FormItem>
<FormItem label="手机号码" style="margin-top:1%" prop="updatePhoneNumber"> <FormItem
<Input placeholder="请输入正确的手机号" style="width:300px;" v-model="formInline.updatePhoneNumber"/> label="手机号码"
style="margin-top:1%"
prop="updatePhoneNumber"
>
<Input
placeholder="请输入正确的手机号"
style="width:300px;"
v-model="formInline.updatePhoneNumber"
/>
</FormItem> </FormItem>
<FormItem label="真实姓名" style="margin-top:1%" prop="updatePerName"> <FormItem label="真实姓名" style="margin-top:1%" prop="updatePerName">
<Input placeholder="请输入真实姓名" style="width:300px;" v-model="formInline.updatePerName" :maxlength="5"/> <Input
placeholder="请输入真实姓名"
style="width:300px;"
v-model="formInline.updatePerName"
:maxlength="5"
/>
</FormItem> </FormItem>
</Form> </Form>
<div slot='footer' style="text-align:center"> <div slot="footer" style="text-align:center">
<Button type='primary' @click='modal6=false'>取消</Button> <Button type="primary" @click="modal6 = false">取消</Button>
<Button type='primary' @click="confireUpdate" >确定</Button> <Button type="primary" @click="confireUpdate">确定</Button>
</div> </div>
</Modal> </Modal>
<!-- 删除当前的账户 --> <!-- 删除当前的账户 -->
<Modal <Modal v-model="modal2" :closable="false" width="250px">
v-model="modal2"
:closable="false"
width='250px'>
<h3 style="text-align:center">提示</h3> <h3 style="text-align:center">提示</h3>
<p style="text-align:center">是否确定删除当前账户</p> <p style="text-align:center">是否确定删除当前账户</p>
<div slot='footer' style="text-align:center"> <div slot="footer" style="text-align:center">
<Button type='primary' @click='modal2=false'>取消</Button> <Button type="primary" @click="modal2 = false">取消</Button>
<Button type='primary' @click="delateAccount">确定</Button> <Button type="primary" @click="delateAccount">确定</Button>
</div> </div>
</Modal> </Modal>
<Modal <Modal v-model="modal3" :closable="false" width="250px">
v-model="modal3"
:closable="false"
width='250px'>
<h3 style="text-align:center">提示</h3> <h3 style="text-align:center">提示</h3>
<p style="text-align:center">是否确定删除这些账户</p> <p style="text-align:center">是否确定删除这些账户</p>
<div slot='footer' style="text-align:center"> <div slot="footer" style="text-align:center">
<Button type='primary' @click='modal3=false'>取消</Button> <Button type="primary" @click="modal3 = false">取消</Button>
<Button type='primary' @click="delateAll">确定</Button> <Button type="primary" @click="delateAll">确定</Button>
</div> </div>
</Modal> </Modal>
<Modal <Modal v-model="modal4" :closable="false" width="250px">
v-model="modal4"
:closable="false"
width='250px'>
<h3 style="text-align:center">提示</h3> <h3 style="text-align:center">提示</h3>
<p style="text-align:center">未选择要上传的远元素</p> <p style="text-align:center">未选择要上传的远元素</p>
<div slot='footer' style="text-align:center"> <div slot="footer" style="text-align:center">
<Button type='primary' @click='modal4=false'>确定</Button> <Button type="primary" @click="modal4 = false">确定</Button>
</div> </div>
</Modal> </Modal>
</div> </div>
</template> </template>
<script> <script>
import { queryaccountList, addAccount, Delateaccount, delateAllAccount, recoveryPassword, updateAccount } from '../../api/stystem.server.js' import {
queryaccountList,
addAccount,
Delateaccount,
delateAllAccount,
recoveryPassword,
updateAccount
} from "../../api/stystem.server.js";
export default { export default {
data () { data() {
return { return {
modal1: false, modal1: false,
modal2: false, modal2: false,
...@@ -135,359 +221,387 @@ export default { ...@@ -135,359 +221,387 @@ export default {
modal6: false, modal6: false,
checkboxList: [], checkboxList: [],
checked: false, checked: false,
updateAccountId: '', updateAccountId: "",
pageT: '', pageT: "",
userName: '', userName: "",
userCode: '', userCode: "",
Massage: '', Massage: "",
spinShow: true, spinShow: true,
delateARR: [], delateARR: [],
id: '', id: "",
I: '', I: "",
pageIndex: 1, pageIndex: 1,
pageSize: 30, pageSize: 30,
totalSize: null, totalSize: null,
searchInfo: { searchInfo: {
pageSize: 30, pageSize: 30,
pageIndex: 1, pageIndex: 1,
id: '' id: ""
}, },
formInline: { formInline: {
PhoneNumber: '', PhoneNumber: "",
PerName: '', PerName: "",
emailNumber: '', emailNumber: "",
updatePhoneNumber: '', updatePhoneNumber: "",
updatePerName: '', updatePerName: "",
updateemailNumber: '' updateemailNumber: ""
}, },
ruleInline: { ruleInline: {
PhoneNumber: [ PhoneNumber: [
{ required: true, pattern: /^[1][3,4,5,7,8,6,9][0-9]{9}$/, message: '请输入正确的手机号', trigger: 'blur' } {
required: true,
pattern: /^[1][3,4,5,7,8,6,9][0-9]{9}$/,
message: "请输入正确的手机号",
trigger: "blur"
}
], ],
PerName: [ PerName: [
{ required: true, message: '请输入真实的姓名', trigger: 'blur' }, { required: true, message: "请输入真实的姓名", trigger: "blur" },
{ type: 'string', message: '', trigger: 'blur' } { type: "string", message: "", trigger: "blur" }
], ],
updateemailNumber: [ updateemailNumber: [
{ required: true, pattern: /^[1][3,4,5,7,8,6,9][0-9]{9}$/, message: '请输入正确的手机号', trigger: 'blur' } {
required: true,
pattern: /^[1][3,4,5,7,8,6,9][0-9]{9}$/,
message: "请输入正确的手机号",
trigger: "blur"
}
], ],
updatePerName: [ updatePerName: [
{ required: true, message: '请输入真实的姓名', trigger: 'blur' }, { required: true, message: "请输入真实的姓名", trigger: "blur" },
{ type: 'string', message: '', trigger: 'blur' } { type: "string", message: "", trigger: "blur" }
], ],
emailNumber: [ emailNumber: [
{ required: true, pattern: /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/, message: '请输入正确的邮箱账号', trigger: 'blur' } {
required: true,
pattern: /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/,
message: "请输入正确的邮箱账号",
trigger: "blur"
}
] ]
}, },
ajaxData: [], ajaxData: [],
checkData: [] // 双向数据绑定的数组 checkData: [] // 双向数据绑定的数组
} };
}, },
methods: { methods: {
handleSelectAll (status) { handleSelectAll(status) {
this.$refs.selection.selectAll(status) this.$refs.selection.selectAll(status);
}, },
ok () { ok() {
this.$Message.info('Clicked ok') this.$Message.info("Clicked ok");
}, },
cancel () { cancel() {
this.$Message.info('Clicked cancel') this.$Message.info("Clicked cancel");
}, },
// //
delateArr (DElateID) { delateArr(DElateID) {
this.delateARR.push(DElateID) this.delateARR.push(DElateID);
}, },
// 全选与反选 // 全选与反选
checkedAll: function () { checkedAll: function() {
if (this.checked) { // 实现反选 if (this.checked) {
this.checkboxList = [] // 实现反选
this.checkboxList.push(item.id) this.checkboxList = [];
this.delateARR.push(item.id) this.checkboxList.push(item.id);
} else { // 实现全选 this.delateARR.push(item.id);
this.checkboxList = [] } else {
this.ajaxData.forEach((item) => { // 实现全选
this.checkboxList.push(item.id) this.checkboxList = [];
this.delateARR.push(item.id) this.ajaxData.forEach(item => {
}) this.checkboxList.push(item.id);
this.delateARR.push(item.id);
});
} }
}, },
// 修改 // 修改
updateModal (item) { updateModal(item) {
this.modal6 = true this.modal6 = true;
this.updateAccountId = item.id this.updateAccountId = item.id;
this.formInline.updateemailNumber = item.userCode this.formInline.updateemailNumber = item.userCode;
this.formInline.updatePhoneNumber = item.phone this.formInline.updatePhoneNumber = item.phone;
this.formInline.updatePerName = item.userName this.formInline.updatePerName = item.userName;
}, },
// 确认修改 // 确认修改
confireUpdate () { confireUpdate() {
const parmars = { const parmars = {
id: this.updateAccountId, id: this.updateAccountId,
userCode: this.formInline.updateemailNumber, userCode: this.formInline.updateemailNumber,
userName: this.formInline.updatePerName, userName: this.formInline.updatePerName,
phone: this.formInline.updatePhoneNumber phone: this.formInline.updatePhoneNumber
} };
if (this.formInline.updatePhoneNumber == '' || this.formInline.updatePerName == '') { if (
this.formInline.updatePhoneNumber == "" ||
this.formInline.updatePerName == ""
) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: '请您填写正确的手机号码或姓名', desc: "请您填写正确的手机号码或姓名",
duration: 2 duration: 2
}) });
return return;
} }
if (!(/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.updatePhoneNumber))) { if (
!/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.updatePhoneNumber)
) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: '请您填写正确的手机号', desc: "请您填写正确的手机号",
duration: 2 duration: 2
}) });
return return;
} }
updateAccount(parmars).then(res => { updateAccount(parmars).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.$Notice.success({ this.$Notice.success({
title: '提示', title: "提示",
desc: '修改成功', desc: "修改成功",
duration: 2 duration: 2
}) });
this.modal6 = false this.modal6 = false;
this.SearchList() this.SearchList();
} }
if (res.data.success == false) { if (res.data.success == false) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: res.data.body.message, desc: res.data.body.message,
duration: 2 duration: 2
}) });
this.modal6 = false this.modal6 = false;
} }
}) });
}, },
// 添加账户 // 添加账户
addacount () { addacount() {
const parmars = { const parmars = {
userCode: this.formInline.emailNumber, userCode: this.formInline.emailNumber,
userName: this.formInline.PerName, userName: this.formInline.PerName,
phone: this.formInline.PhoneNumber phone: this.formInline.PhoneNumber
} };
if (this.formInline.PhoneNumber == '' || this.formInline.PerName == '' || this.formInline.emailNumber == '') { if (
this.formInline.PhoneNumber == "" ||
this.formInline.PerName == "" ||
this.formInline.emailNumber == ""
) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: '请您填写正确的账号或姓名', desc: "请您填写正确的账号或姓名",
duration: 2 duration: 2
}) });
return return;
} }
if (!(/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.PhoneNumber))) { if (!/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.PhoneNumber)) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: '请您填写正确的手机号', desc: "请您填写正确的手机号",
duration: 2 duration: 2
}) });
return return;
} }
if (!(/\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/.test(this.formInline.emailNumber))) { if (
!/\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/.test(
this.formInline.emailNumber
)
) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: '请您填写正确邮箱账号', desc: "请您填写正确邮箱账号",
duration: 2 duration: 2
}) });
return return;
} }
addAccount(parmars).then(res => { addAccount(parmars).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.$Notice.success({ this.$Notice.success({
title: '提示', title: "提示",
desc: '添加成功', desc: "添加成功",
duration: 2 duration: 2
}) });
this.SearchList() this.SearchList();
this.formInline.PhoneNumber = '' this.formInline.PhoneNumber = "";
this.formInline.PerName = '' this.formInline.PerName = "";
this.formInline.emailNumber = '' this.formInline.emailNumber = "";
} }
if (res.data.body.code == 0) { if (res.data.body.code == 0) {
this.Massage = res.data.body.message this.Massage = res.data.body.message;
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: this.Massage, desc: this.Massage,
duration: 2 duration: 2
}) });
this.formInline.PhoneNumber = '' this.formInline.PhoneNumber = "";
this.formInline.PerName = '' this.formInline.PerName = "";
this.formInline.emailNumber = '' this.formInline.emailNumber = "";
} }
}) });
}, },
// 查询账户列表 // 查询账户列表
SearchList (page) { SearchList(page) {
page = typeof (page) === 'number' ? page : 1 page = typeof page === "number" ? page : 1;
this.searchInfo.pageIndex = page this.searchInfo.pageIndex = page;
this.pageIndex = page this.pageIndex = page;
const parmars = { const parmars = {
pageSize: this.searchInfo.pageSize, pageSize: this.searchInfo.pageSize,
pageIndex: this.searchInfo.pageIndex pageIndex: this.searchInfo.pageIndex
} };
queryaccountList(parmars).then(res => { queryaccountList(parmars).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.spinShow = false this.spinShow = false;
this.totalSize = res.data.body.totalNumber this.totalSize = res.data.body.totalNumber;
this.ajaxData = res.data.body.items.map((item, index) => { this.ajaxData = res.data.body.items.map((item, index) => {
item.id = item.id item.id = item.id;
item.userName = item.userName item.userName = item.userName;
item.userCode = item.userCode item.userCode = item.userCode;
item.createTime = item.createTime item.createTime = item.createTime;
return item return item;
}) });
} }
}) });
}, },
// 删除单条账户弹框 // 删除单条账户弹框
delateMaodal (DID) { delateMaodal(DID) {
this.I = DID this.I = DID;
this.modal2 = true this.modal2 = true;
}, },
// 删除单条账户 // 删除单条账户
delateAccount () { delateAccount() {
const parmars = { const parmars = {
id: this.I id: this.I
} };
Delateaccount(parmars).then(res => { Delateaccount(parmars).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.modal2 = false this.modal2 = false;
this.SearchList(this.pageT) this.SearchList(this.pageT);
} }
this.SearchList(this.pageT) this.SearchList(this.pageT);
}) });
}, },
// 批量删除弹出框 // 批量删除弹出框
delateall () { delateall() {
if (this.checkboxList.length == 0 || this.delateArr.length == 0) { if (this.checkboxList.length == 0 || this.delateArr.length == 0) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: '选项不能为空', desc: "选项不能为空",
duration: '2' duration: "2"
}) });
return return;
} }
this.modal3 = true this.modal3 = true;
}, },
// 批量删除账户 // 批量删除账户
delateAll () { delateAll() {
delateAllAccount(this.delateARR).then(res => { delateAllAccount(this.delateARR).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.$Notice.success({ this.$Notice.success({
title: '提示', title: "提示",
desc: '删除成功', desc: "删除成功",
duration: '2' duration: "2"
}) });
this.modal3 = false this.modal3 = false;
this.SearchList(this.pageT) this.SearchList(this.pageT);
} }
}) });
}, },
// 恢复初始密码弹窗 // 恢复初始密码弹窗
recoveryModal (ID) { recoveryModal(ID) {
this.I = ID this.I = ID;
this.modal1 = true this.modal1 = true;
}, },
// 确认恢复初始密码 // 确认恢复初始密码
recovery () { recovery() {
const parmars = { const parmars = {
id: this.I id: this.I
} };
recoveryPassword(parmars).then(res => { recoveryPassword(parmars).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.$Notice.success({ this.$Notice.success({
title: '提示', title: "提示",
desc: '恢复密码成功', desc: "恢复密码成功",
duration: '2' duration: "2"
}) });
this.modal1 = false this.modal1 = false;
} }
}) });
}, },
// 改变页码 // 改变页码
pageChange (page) { pageChange(page) {
this.pageT = page this.pageT = page;
this.SearchList(page) this.SearchList(page);
}, },
pageSizeChange (page) { pageSizeChange(page) {
this.searchInfo.pageSize = page this.searchInfo.pageSize = page;
this.pageSize = page this.pageSize = page;
this.SearchList() this.SearchList();
} }
}, },
watch: { watch: {
checkboxList: { checkboxList: {
handler: function (val, oldVal) { handler: function(val, oldVal) {
if (this.ajaxData.length == 0) { if (this.ajaxData.length == 0) {
this.checked = false this.checked = false;
return return;
} }
if (this.checkboxList.length === this.ajaxData.length) { if (this.checkboxList.length === this.ajaxData.length) {
this.checked = true this.checked = true;
} else { } else {
this.checked = false this.checked = false;
} }
}, },
deep: true deep: true
} }
}, },
mounted () { mounted() {
this.SearchList() this.SearchList();
} }
};
}
</script> </script>
<style scoped> <style scoped>
.account{ .account {
height: 100%; height: 100%;
width: 100%; width: 100%;
overflow: hidden; overflow: hidden;
} }
.addAcount{ .addAcount {
height:240px; height: 240px;
width:100%; width: 100%;
} }
.pageBottom{ .pageBottom {
height: 40px; height: 40px;
width: 84.4%; width: 84.4%;
background:#EDEDED; background: #ededed;
position: fixed; position: fixed;
bottom: 0; bottom: 0;
} }
.accountMange{ .accountMange {
height: 74%; height: 74%;
} }
.accountMange-top{ .accountMange-top {
width: 100%; width: 100%;
height: 78px; height: 78px;
} }
.detailQQ{ .detailQQ {
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
width: 100%; width: 100%;
background: rgba(244,244,244,1); background: rgba(244, 244, 244, 1);
/* margin-top: 10px */ /* margin-top: 10px */
} }
.detailQQ :nth-child(2){ .detailQQ :nth-child(2) {
width: 80px; width: 80px;
display: inline-block; display: inline-block;
} }
.detailQQ :nth-child(3){ .detailQQ :nth-child(3) {
width: 180px; width: 180px;
display: inline-block; display: inline-block;
} }
.detailQQ :nth-child(4){ .detailQQ :nth-child(4) {
width: 180px; width: 180px;
display: inline-block; display: inline-block;
} }
</style> </style>
<style> <style>
.updateClassModal .ivu-input{ .updateClassModal .ivu-input {
color: grey !important color: grey !important;
} }
</style> </style>
...@@ -2,140 +2,271 @@ ...@@ -2,140 +2,271 @@
<div class="emailMange"> <div class="emailMange">
<div class="addEmail"> <div class="addEmail">
<p style="margin-top:10px"> <p style="margin-top:10px">
<span style="font-size:18px;color:#2d8cf0;margin-left:18px">新增接收邮箱</span> <span style="font-size:18px;color:#2d8cf0;margin-left:18px"
<span style="margin-left:10px;color:Grey">绑定邮箱以接收简历,仅可绑定一个邮箱</span> >新增接收邮箱</span
>
<span style="margin-left:10px;color:Grey"
>绑定邮箱以接收简历,仅可绑定一个邮箱</span
>
</p> </p>
<Form :label-width="100" :model="formInline" :rules="ruleInline"> <Form :label-width="100" :model="formInline" :rules="ruleInline">
<FormItem label="邮箱账号" style="margin-top:20px" prop="emailNumber"> <FormItem label="邮箱账号" style="margin-top:20px" prop="emailNumber">
<Input placeholder="请输入企业邮箱" style="width:300px" v-model="formInline.emailNumber"/> <Input
placeholder="请输入企业邮箱"
style="width:300px"
v-model="formInline.emailNumber"
/>
</FormItem> </FormItem>
<FormItem label="请选择开始同步的时间" style="margin-top:20px; position: absolute;top:30px;left: 490px" :label-width="180"> <FormItem
<DatePicker type="datetime" format="yyyy-MM-dd HH:mm:ss" placeholder="请选择日期" style="width: 200px" v-model="DATA" @on-change="selectTime" :options="options3" :editable='false'></DatePicker><br> label="请选择开始同步的时间"
<span style="font-size:8px;margin-left:0px;"><Icon type="md-information-circle" />最长可同步30天</span> style="margin-top:20px; position: absolute;top:30px;left: 490px"
:label-width="180"
>
<DatePicker
type="datetime"
format="yyyy-MM-dd HH:mm:ss"
placeholder="请选择日期"
style="width: 200px"
v-model="DATA"
@on-change="selectTime"
:options="options3"
:editable="false"
></DatePicker
><br />
<span style="font-size:8px;margin-left:0px;"
><Icon type="md-information-circle" />最长可同步30天</span
>
</FormItem> </FormItem>
<FormItem label="邮箱密码" style="margin-top:20px; position: absolute;top:110px;left: -80px" prop="emailPsd" :label-width="180"> <FormItem
<Input placeholder="请输入企业邮箱密码" style="width:300px" v-model="formInline.emailPsd" type="password" /><br> label="邮箱密码"
<span style="font-size:8px;position: relative;top:0px left:30px"><Icon type="md-information-circle" />邮箱密码在绑定后再次修改,请及时点击修改来更新。</span> style="margin-top:20px; position: absolute;top:110px;left: -80px"
prop="emailPsd"
:label-width="180"
>
<Input
placeholder="请输入企业邮箱密码"
style="width:300px"
v-model="formInline.emailPsd"
type="password"
/><br />
<span style="font-size:8px;position: relative;top:0px left:30px"
><Icon
type="md-information-circle"
/>邮箱密码在绑定后再次修改,请及时点击修改来更新。</span
>
</FormItem> </FormItem>
<FormItem label="所属人" style="margin-top:20px; position: absolute;top:110px;left: 410px" prop="UserName" :label-width="180"> <FormItem
<Input placeholder="请输入所属者正确姓名" style="width:300px" v-model="formInline.UserName" :maxlength="5"/> label="所属人"
style="margin-top:20px; position: absolute;top:110px;left: 410px"
prop="UserName"
:label-width="180"
>
<Input
placeholder="请输入所属者正确姓名"
style="width:300px"
v-model="formInline.UserName"
:maxlength="5"
/>
</FormItem> </FormItem>
<Button type="primary" style="position: absolute;top:130px;left: 910px;" :disabled='disabled' @click="bindingSynchronizat">绑定并开始同步</Button> <Button
type="primary"
style="position: absolute;top:130px;left: 910px;"
:disabled="disabled"
@click="bindingSynchronizat"
>绑定并开始同步</Button
>
</Form> </Form>
</div> </div>
<div class="Emailmange"> <div class="Emailmange">
<p style="height:40px;line-height:40px"> <p style="height:40px;line-height:40px">
<span style="font-size:18px;color:#2d8cf0;margin-left:18px">邮箱管理</span> <span style="font-size:18px;color:#2d8cf0;margin-left:18px"
<span style="margin-left:10px;color:Grey">解绑后不再接受该邮箱下的简历,之前接收的简历仍然保留。</span> >邮箱管理</span
>
<span style="margin-left:10px;color:Grey"
>解绑后不再接受该邮箱下的简历,之前接收的简历仍然保留。</span
>
</p> </p>
<p style="border-bottom:1px solid black;line-height:30px" > <p style="border-bottom:1px solid black;line-height:30px">
<input type='checkbox' class='input-checkbox' v-model='checked' v-on:click='checkedAll' style="margin-left:25px;cursor:pointer" v-show="idAdmin==true"> <input
<span style="margin-left:5px;cursor:pointer" v-show="idAdmin==true" >全选</span> type="checkbox"
<span style="margin-left:40px;color:#2d8cf0;cursor:pointer" @click="UntyingAllmodeal" v-show="idAdmin==true">解绑</span> class="input-checkbox"
v-model="checked"
v-on:click="checkedAll"
style="margin-left:25px;cursor:pointer"
v-show="idAdmin == true"
/>
<span style="margin-left:5px;cursor:pointer" v-show="idAdmin == true"
>全选</span
>
<span
style="margin-left:40px;color:#2d8cf0;cursor:pointer"
@click="UntyingAllmodeal"
v-show="idAdmin == true"
>解绑</span
>
</p> </p>
<!-- <Spin size="large" fix v-if="spinShow" style="font-size:25px" v-show="idAdmin==true">加载中...</Spin> --> <!-- <Spin size="large" fix v-if="spinShow" style="font-size:25px" v-show="idAdmin==true">加载中...</Spin> -->
<div v-for='item in ajaxData' :key="item.id" class="emailList"> <div v-for="item in ajaxData" :key="item.id" class="emailList">
<input type='checkbox' name='checkboxinput' class='input-checkbox' v-model='checkboxList' :value="item.id" style="margin-left:25px;margin-top:20px;cursor:pointer" @click="selectUntyingEle(item.id)"/> <input
<span style="margin-left:0.3%" >{{item.belongs}}</span> type="checkbox"
<span style="margin-left:0.5%;">{{item.emailName}}</span> name="checkboxinput"
<span style="margin-left:0.5%;">同步时间 | {{item.syncStartDate}}</span> class="input-checkbox"
<span style="margin-left:2%;">新建时间 | {{item.createTime}}</span> v-model="checkboxList"
<span style="margin-left:1%;color:#2d8cf0;cursor:pointer" @click="UpdateEMAIL(item.emailName,item.belongs,item.id)">修改</span> :value="item.id"
<span style="margin-left:1%;color:#2d8cf0;cursor:pointer" @click="UnbindingModal(item.id)">解绑</span> style="margin-left:25px;margin-top:20px;cursor:pointer"
<span style="margin-left:5%;" v-if="item.c=='正常'" >{{item.syncMailMsg}}</span> @click="selectUntyingEle(item.id)"
<span style="margin-left:5%;color:red" v-if="item.c=='系统'" >{{item.syncMailMsg}}</span> />
<span style="margin-left:0.3%">{{ item.belongs }}</span>
<span style="margin-left:0.5%;">{{ item.emailName }}</span>
<span style="margin-left:0.5%;"
>同步时间 | {{ item.syncStartDate }}</span
>
<span style="margin-left:2%;">新建时间 | {{ item.createTime }}</span>
<span
style="margin-left:1%;color:#2d8cf0;cursor:pointer"
@click="UpdateEMAIL(item.emailName, item.belongs, item.id)"
>修改</span
>
<span
style="margin-left:1%;color:#2d8cf0;cursor:pointer"
@click="UnbindingModal(item.id)"
>解绑</span
>
<span style="margin-left:5%;" v-if="item.c == '正常'">{{
item.syncMailMsg
}}</span>
<span style="margin-left:5%;color:red" v-if="item.c == '系统'">{{
item.syncMailMsg
}}</span>
</div> </div>
<div class="pageBottom" v-show="this.idAdmin==true"> <div class="pageBottom" v-show="this.idAdmin == true">
<Page :total="totalSize" show-elevator show-total @on-change="pageChange" @on-page-size-change="pageSizeChange" :current='pageIndex' :page-size='pageSize' style="text-align:center;margin-top:8px"></Page> <Page
:total="totalSize"
show-elevator
show-total
@on-change="pageChange"
@on-page-size-change="pageSizeChange"
:current="pageIndex"
:page-size="pageSize"
style="text-align:center;margin-top:8px"
></Page>
</div> </div>
</div> </div>
<!--同步失败--> <!--同步失败-->
<Modal <Modal v-model="modal1" :closable="false" :footer-hide="true" width="250px">
v-model="modal1"
:closable="false"
:footer-hide="true"
width='250px'>
<h3 style="text-align:center">提示</h3> <h3 style="text-align:center">提示</h3>
<p style="text-align:center">系统错误,请联系开发者!</p> <p style="text-align:center">系统错误,请联系开发者!</p>
<h2 style="text-align:center;font-size:18px;color:#2d8cf0" @click="modal1=false">确定</h2> <h2
style="text-align:center;font-size:18px;color:#2d8cf0"
@click="modal1 = false"
>
确定
</h2>
</Modal> </Modal>
<!-- 同步成功 --> <!-- 同步成功 -->
<Modal <Modal v-model="modal2" :closable="false" :footer-hide="true" width="270px">
v-model="modal2"
:closable="false"
:footer-hide="true"
width='270px'>
<h3 style="text-align:center">提示</h3> <h3 style="text-align:center">提示</h3>
<p style="height:30px;line-height:30px">同步完成,如密码发生改变,请及时点击<br><span>修改</span>来重置密码</p> <p style="height:30px;line-height:30px">
同步完成,如密码发生改变,请及时点击<br /><span>修改</span>来重置密码
</p>
<!-- <h2 style="text-align:center;font-size:18px;color:#2d8cf0;height:40px;line-height:40px;margin-top:30px" @click="pushlist">我已知晓</h2> --> <!-- <h2 style="text-align:center;font-size:18px;color:#2d8cf0;height:40px;line-height:40px;margin-top:30px" @click="pushlist">我已知晓</h2> -->
<Button type="primary" style="margin:40px 0 0 80px" @click="iKnow">我已知晓</Button> <Button type="primary" style="margin:40px 0 0 80px" @click="iKnow"
>我已知晓</Button
>
</Modal> </Modal>
<!-- 同步绑定 --> <!-- 同步绑定 -->
<Modal <Modal v-model="modal3" :closable="false" :footer-hide="true" width="250px">
v-model="modal3"
:closable="false"
:footer-hide="true"
width='250px'>
<h3 style="text-align:center">提示</h3> <h3 style="text-align:center">提示</h3>
<p style="text-align:center;line-height:40px">同步中,请稍后...</p> <p style="text-align:center;line-height:40px">同步中,请稍后...</p>
</Modal> </Modal>
<!-- 修改弹出框 --> <!-- 修改弹出框 -->
<Modal <Modal v-model="modal4" :closable="false" width="460px">
v-model="modal4"
:closable="false"
width='460px'>
<span style="margin-left:180px;font-size:14px">修改绑定邮箱</span> <span style="margin-left:180px;font-size:14px">修改绑定邮箱</span>
<div style="height:230px"> <div style="height:230px">
<Form> <Form>
<FormItem label="邮箱账号" style="margin-top:20px" prop="emailNumber"> <FormItem label="邮箱账号" style="margin-top:20px" prop="emailNumber">
<Input placeholder="请输入企业邮箱" v-model="Uusername" style="width:300px;color:Gainsboro" disabled/> <Input
placeholder="请输入企业邮箱"
v-model="Uusername"
style="width:300px;color:Gainsboro"
disabled
/>
</FormItem> </FormItem>
<FormItem label="邮箱密码" prop="emailPsd" :label-width="180" style="position: absolute;top:130px;left:-105px"> <FormItem
<Input placeholder="请输入企业邮箱密码" style="width:300px" v-model="UpassWord" type="password" autocomplete="new-password"/><br> label="邮箱密码"
<span style="font-size:8px;position: relative;top:0px left:30px"><Icon type="md-information-circle" :options="options3" />邮箱密码在绑定后再次修改,请及时点击修改来更新。</span> prop="emailPsd"
:label-width="180"
style="position: absolute;top:130px;left:-105px"
>
<Input
placeholder="请输入企业邮箱密码"
style="width:300px"
v-model="UpassWord"
type="password"
autocomplete="new-password"
/><br />
<span style="font-size:8px;position: relative;top:0px left:30px"
><Icon
type="md-information-circle"
:options="options3"
/>邮箱密码在绑定后再次修改,请及时点击修改来更新。</span
>
</FormItem> </FormItem>
<FormItem label="所属人" style=" position: absolute;top:220px;left: -100px" prop="UserName" :label-width="180"> <FormItem
<Input placeholder="请输入所属着真实的姓名" style="width:300px" v-model="Ublengs" :maxlength="5"/> label="所属人"
style=" position: absolute;top:220px;left: -100px"
prop="UserName"
:label-width="180"
>
<Input
placeholder="请输入所属着真实的姓名"
style="width:300px"
v-model="Ublengs"
:maxlength="5"
/>
</FormItem> </FormItem>
</Form> </Form>
</div> </div>
<div slot='footer' style="text-align:center"> <div slot="footer" style="text-align:center">
<Button type='primary' @click='updatapassT'>取消</Button> <Button type="primary" @click="updatapassT">取消</Button>
<Button type='primary' @click="UpdateemailTwo" >保存</Button> <Button type="primary" @click="UpdateemailTwo">保存</Button>
</div> </div>
</Modal> </Modal>
<!-- 解绑弹出框 --> <!-- 解绑弹出框 -->
<Modal <Modal v-model="modal5" :closable="false" width="250px">
v-model="modal5"
:closable="false"
width='250px'>
<h3 style="text-align:center">提示</h3> <h3 style="text-align:center">提示</h3>
<p style="text-align:center">解绑后如你需要再次绑定该邮箱,需重新输入账号,密码等信息重新绑定,是否确定解绑?</p> <p style="text-align:center">
<div slot='footer' style="text-align:center"> 解绑后如你需要再次绑定该邮箱,需重新输入账号,密码等信息重新绑定,是否确定解绑?
<Button type='primary' @click='modal5=false'>取消</Button> </p>
<Button type='primary' @click="Unbinding">确认</Button> <div slot="footer" style="text-align:center">
<Button type="primary" @click="modal5 = false">取消</Button>
<Button type="primary" @click="Unbinding">确认</Button>
</div> </div>
</Modal> </Modal>
<Modal <Modal v-model="modal6" :closable="false" width="250px">
v-model="modal6"
:closable="false"
width='250px'>
<h3 style="text-align:center">提示</h3> <h3 style="text-align:center">提示</h3>
<p style="text-align:center">解绑后如你需要再次绑定该邮箱,需重新输入账号,密码等信息重新绑定,是否确定解绑?</p> <p style="text-align:center">
<div slot='footer' style="text-align:center"> 解绑后如你需要再次绑定该邮箱,需重新输入账号,密码等信息重新绑定,是否确定解绑?
<Button type='primary' @click='pushlistModal6'>取消</Button> </p>
<Button type='primary' @click="UntyingAll">确认</Button> <div slot="footer" style="text-align:center">
<Button type="primary" @click="pushlistModal6">取消</Button>
<Button type="primary" @click="UntyingAll">确认</Button>
</div> </div>
</Modal> </Modal>
</div> </div>
</template> </template>
<script> <script>
import { queryemailList, Synchronization, jiebangEmail, updateemailTWO, UntyingAll } from '../../api/stystem.server.js' import {
import moment from 'moment' queryemailList,
Synchronization,
jiebangEmail,
updateemailTWO,
UntyingAll
} from "../../api/stystem.server.js";
import moment from "moment";
export default { export default {
data () { data() {
return { return {
modal1: false, modal1: false,
modal2: false, modal2: false,
...@@ -143,27 +274,30 @@ export default { ...@@ -143,27 +274,30 @@ export default {
modal4: false, modal4: false,
modal5: false, modal5: false,
modal6: false, modal6: false,
condition: '', condition: "",
Massage: '', Massage: "",
pageT: '', pageT: "",
spinShow: true, spinShow: true,
idAdmin: '', idAdmin: "",
admin: '', admin: "",
NAme: '', NAme: "",
DATA: '', DATA: "",
Tname: '', Tname: "",
options3: { options3: {
disabledDate (date) { disabledDate(date) {
return date && date.valueOf() > Date.now() || date.valueOf() < Date.now() - 3600 * 1000 * 30 * 24 return (
(date && date.valueOf() > Date.now()) ||
date.valueOf() < Date.now() - 3600 * 1000 * 30 * 24
);
} }
}, },
UpassWord: '', UpassWord: "",
Uusername: '', Uusername: "",
decisionStartTime: '', decisionStartTime: "",
Ublengs: '', Ublengs: "",
Uid: '', Uid: "",
UntyingAllARR: [], UntyingAllARR: [],
Tblengs: '', Tblengs: "",
checkboxList: [], checkboxList: [],
checked: false, checked: false,
disabled: false, disabled: false,
...@@ -173,337 +307,357 @@ export default { ...@@ -173,337 +307,357 @@ export default {
searchInfo: { searchInfo: {
pageSize: 30, pageSize: 30,
pageIndex: 1, pageIndex: 1,
id: '' id: ""
}, },
formInline: { formInline: {
emailNumber: '', emailNumber: "",
emailPsd: '', emailPsd: "",
UserName: '' UserName: ""
}, },
ruleInline: { ruleInline: {
emailNumber: [ emailNumber: [
// derong.zhang@quantgroup.cn // derong.zhang@quantgroup.cn
{ required: true, pattern: /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/, message: '请输入正确的邮箱账号', trigger: 'blur' } {
required: true,
pattern: /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/,
message: "请输入正确的邮箱账号",
trigger: "blur"
}
], ],
emailPsd: [ emailPsd: [
{ required: true, message: '请输入正确的密码', trigger: 'blur' } { required: true, message: "请输入正确的密码", trigger: "blur" }
], ],
UserName: [ UserName: [
{ required: true, message: '请输入正确的姓名', trigger: 'blur' } { required: true, message: "请输入正确的姓名", trigger: "blur" }
] ]
}, },
ajaxData: [], ajaxData: [],
checkData: [] // 双向数据绑定的数组 checkData: [] // 双向数据绑定的数组
} };
}, },
methods: { methods: {
// 全选与反选 // 全选与反选
checkedAll: function () { checkedAll: function() {
if (this.checked) { // 实现反选 if (this.checked) {
this.checkboxList = [] // 实现反选
} else { // 实现全选 this.checkboxList = [];
this.checkboxList = [] } else {
this.ajaxData.forEach((item) => { // 实现全选
this.checkboxList.push(item.id) this.checkboxList = [];
this.UntyingAllARR.push(item.id) this.ajaxData.forEach(item => {
}) this.checkboxList.push(item.id);
this.UntyingAllARR.push(item.id);
});
} }
}, },
// 绑定同步邮箱 // 绑定同步邮箱
bindingSynchronizat () { bindingSynchronizat() {
if (this.formInline.emailNumber == '' || this.formInline.emailPsd == '' || this.formInline.UserName == '' || this.DATA == '') { if (
this.formInline.emailNumber == "" ||
this.formInline.emailPsd == "" ||
this.formInline.UserName == "" ||
this.DATA == ""
) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: '请您填写完整的信息', desc: "请您填写完整的信息",
duration: '2' duration: "2"
}) });
return return;
} }
this.disabled = true this.disabled = true;
this.modal3 = true this.modal3 = true;
const parmars = { const parmars = {
emailName: this.formInline.emailNumber, emailName: this.formInline.emailNumber,
emailPassword: this.formInline.emailPsd, emailPassword: this.formInline.emailPsd,
belongs: this.formInline.UserName, belongs: this.formInline.UserName,
syncStartDate: moment(this.DATA).format('YYYY-MM-DD HH:mm:ss') syncStartDate: moment(this.DATA).format("YYYY-MM-DD HH:mm:ss")
} };
Synchronization(parmars).then(res => { Synchronization(parmars).then(
res => {
if (res.data.success == true) { if (res.data.success == true) {
this.modal3 = false this.modal3 = false;
this.modal2 = true this.modal2 = true;
this.formInline.emailNumber = '' this.formInline.emailNumber = "";
this.formInline.emailPsd = '' this.formInline.emailPsd = "";
this.formInline.UserName = '' this.formInline.UserName = "";
this.DATA = '' this.DATA = "";
this.SearchList() this.SearchList();
// this.disabled=false // this.disabled=false
} }
if (res.data.success == false) { if (res.data.success == false) {
this.modal3 = false this.modal3 = false;
this.disabled = false this.disabled = false;
this.Massage = res.data.body.message this.Massage = res.data.body.message;
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: this.Massage, desc: this.Massage,
duration: 2 duration: 2
}) });
} }
}, () => { },
this.modal3 = false () => {
this.modal3 = false;
// this.modal1=true // this.modal1=true
this.formInline.emailPsd = '' this.formInline.emailPsd = "";
}) }
);
}, },
iKnow () { iKnow() {
this.modal2 = false, (this.modal2 = false), (this.disabled = false);
this.disabled = false
}, },
// 选择同步的时间 // 选择同步的时间
selectTime (b) { selectTime(b) {
this.DATA = b this.DATA = b;
}, },
// 查询邮箱列表 // 查询邮箱列表
SearchList (page) { SearchList(page) {
page = typeof (page) === 'number' ? page : 1 page = typeof page === "number" ? page : 1;
this.searchInfo.pageIndex = page this.searchInfo.pageIndex = page;
this.pageIndex = page this.pageIndex = page;
const parmars = { const parmars = {
pageSize: this.searchInfo.pageSize, pageSize: this.searchInfo.pageSize,
pageIndex: this.searchInfo.pageIndex pageIndex: this.searchInfo.pageIndex
} };
queryemailList(parmars).then(res => { queryemailList(parmars).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.spinShow = false this.spinShow = false;
this.totalSize = res.data.body.totalNumber this.totalSize = res.data.body.totalNumber;
this.ajaxData = res.data.body.items.map((item, index) => { this.ajaxData = res.data.body.items.map((item, index) => {
item.syncStartDate = item.syncStartDate item.syncStartDate = item.syncStartDate;
item.syncFlag = item.syncFlag item.syncFlag = item.syncFlag;
item.createTime = item.createTime item.createTime = item.createTime;
item.belongs = item.belongs item.belongs = item.belongs;
item.emailName = item.emailName item.emailName = item.emailName;
item.id = item.id item.id = item.id;
item.STA = false item.STA = false;
item.syncFlag = item.syncFlag item.syncFlag = item.syncFlag;
item.syncMailMsg = item.syncMailMsg item.syncMailMsg = item.syncMailMsg;
item.c = item.syncMailMsg == null ? item.syncMailMsg : item.syncMailMsg.substring(0, 2) item.c =
return item item.syncMailMsg == null
}) ? item.syncMailMsg
: item.syncMailMsg.substring(0, 2);
return item;
});
} }
}) });
}, },
// 改变页码 // 改变页码
pageChange (page) { pageChange(page) {
this.pageT = page this.pageT = page;
this.SearchList(page) this.SearchList(page);
}, },
pageSizeChange (page) { pageSizeChange(page) {
this.searchInfo.pageSize = page this.searchInfo.pageSize = page;
this.pageSize = page this.pageSize = page;
this.SearchList() this.SearchList();
}, },
// 修改邮箱弹出框 // 修改邮箱弹出框
UpdateEMAIL (Tname, Tblengs, Tid) { UpdateEMAIL(Tname, Tblengs, Tid) {
this.modal4 = true this.modal4 = true;
this.Uusername = Tname this.Uusername = Tname;
this.Ublengs = Tblengs this.Ublengs = Tblengs;
this.Uid = Tid this.Uid = Tid;
}, },
// 修改后重新绑定邮箱并保存 // 修改后重新绑定邮箱并保存
UpdateemailTwo () { UpdateemailTwo() {
if (this.UpassWord == '' || this.Uusername == '' || this.Ublengs == '') { if (this.UpassWord == "" || this.Uusername == "" || this.Ublengs == "") {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: '请您填写完整的信息', desc: "请您填写完整的信息",
duration: '2' duration: "2"
}) });
return return;
} }
const parmars = { const parmars = {
emailName: this.Uusername, emailName: this.Uusername,
emailPassword: this.UpassWord, emailPassword: this.UpassWord,
belongs: this.Ublengs, belongs: this.Ublengs,
id: this.Uid id: this.Uid
};
}
updateemailTWO(parmars).then(res => { updateemailTWO(parmars).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.UpassWord = '' this.UpassWord = "";
this.modal4 = false this.modal4 = false;
this.SearchList(this.pageT) this.SearchList(this.pageT);
this.$Notice.success({ this.$Notice.success({
title: '提示', title: "提示",
desc: '修改成功', desc: "修改成功",
duration: '2' duration: "2"
}) });
} else { } else {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: '你填写的密码有误', desc: "你填写的密码有误",
duration: '2' duration: "2"
}) });
this.UpassWord = '' this.UpassWord = "";
} }
}) });
}, },
// 解绑弹出框 // 解绑弹出框
UnbindingModal (Eid) { UnbindingModal(Eid) {
this.NAme = Eid, (this.NAme = Eid), (this.modal5 = true);
this.modal5 = true
}, },
// 确认解绑邮箱 // 确认解绑邮箱
Unbinding () { Unbinding() {
jiebangEmail(this.NAme).then(res => { jiebangEmail(this.NAme).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.$Notice.success({ this.$Notice.success({
title: '提示', title: "提示",
desc: '解绑成功', desc: "解绑成功",
duration: 2 duration: 2
}) });
this.modal5 = false this.modal5 = false;
this.SearchList(this.pageT) this.SearchList(this.pageT);
} }
}) });
}, },
// 批量解绑弹出框 // 批量解绑弹出框
UntyingAllmodeal () { UntyingAllmodeal() {
if (this.UntyingAllARR.length == 0) { if (this.UntyingAllARR.length == 0) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: '选项不能为空', desc: "选项不能为空",
duration: 2 duration: 2
}) });
return return;
} }
this.modal6 = true this.modal6 = true;
}, },
// 选择批量解绑的项 // 选择批量解绑的项
selectUntyingEle (id) { selectUntyingEle(id) {
this.UntyingAllARR.push(id) this.UntyingAllARR.push(id);
}, },
// 批量解绑邮箱 // 批量解绑邮箱
UntyingAll () { UntyingAll() {
UntyingAll(this.UntyingAllARR).then(res => { UntyingAll(this.UntyingAllARR).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.$Notice.success({ this.$Notice.success({
title: '提示', title: "提示",
desc: '解绑成功', desc: "解绑成功",
duration: 2 duration: 2
}) });
this.modal6 = false this.modal6 = false;
this.SearchList(this.pageT) this.SearchList(this.pageT);
} }
}) });
}, },
pushlist () { pushlist() {
this.modal2 = false this.modal2 = false;
this.SearchList(this.pageT) this.SearchList(this.pageT);
}, },
pushlistModal6 () { pushlistModal6() {
this.modal6 = false this.modal6 = false;
this.UntyingAllARR = [] this.UntyingAllARR = [];
this.SearchList(this.pageT) this.SearchList(this.pageT);
}, },
isadminmethods () { isadminmethods() {
this.admin = localStorage.getItem('isADMIN') this.admin = localStorage.getItem("isADMIN");
const c = JSON.parse(this.admin) const c = JSON.parse(this.admin);
this.idAdmin = c.isAdmin this.idAdmin = c.isAdmin;
}, },
updatapassT () { updatapassT() {
this.modal4 = false this.modal4 = false;
this.UpassWord = '' this.UpassWord = "";
}, },
changeStartTime: function (e, b) { changeStartTime: function(e, b) {
this.DATA = b this.DATA = b;
var time = e var time = e;
var that = this var that = this;
var days = new Date(new Date().getFullYear(), (new Date().getMonth() + 1), 0).getDate() - 1 var days =
var startEndTime = time ? new Date(time).valueOf() - days * 24 * 60 * 60 * 1000 : '' new Date(
var endEndTime = time ? new Date(time).valueOf() : '' new Date().getFullYear(),
if (time === '') { new Date().getMonth() + 1,
0
).getDate() - 1;
var startEndTime = time
? new Date(time).valueOf() - days * 24 * 60 * 60 * 1000
: "";
var endEndTime = time ? new Date(time).valueOf() : "";
if (time === "") {
this.decisionStartTime = { this.decisionStartTime = {
disabledDate (data) { disabledDate(data) {
return data.valueOf() < 0 return data.valueOf() < 0;
}
} }
};
} else { } else {
this.decisionStartTime = { this.decisionStartTime = {
disabledDate (data) { disabledDate(data) {
if (that.qualityCheck.decisionEndTime === '') { if (that.qualityCheck.decisionEndTime === "") {
return new Date() return new Date();
}
return data.valueOf() < startEndTime || data.valueOf() > endEndTime
} }
return data.valueOf() < startEndTime || data.valueOf() > endEndTime;
} }
};
} }
} }
}, },
watch: { watch: {
checkboxList: { checkboxList: {
handler: function (val, oldVal) { handler: function(val, oldVal) {
if (this.checkboxList.length === this.ajaxData.length) { if (this.checkboxList.length === this.ajaxData.length) {
this.checked = true this.checked = true;
} else { } else {
this.checked = false this.checked = false;
} }
}, },
deep: true deep: true
} }
}, },
mounted () { mounted() {
this.isadminmethods() this.isadminmethods();
this.SearchList() this.SearchList();
} }
};
}
</script> </script>
<style> <style>
.addEmail{ .addEmail {
height: 220px; height: 220px;
} }
.Emailmange{ .Emailmange {
min-height: 500px min-height: 500px;
} }
.emailList{ .emailList {
height: 40px; height: 40px;
line-height: 40px; line-height: 40px;
width:100% width: 100%;
} }
.emailList :nth-child(2){ .emailList :nth-child(2) {
width: 5%; width: 5%;
display: inline-block; display: inline-block;
} }
.emailList :nth-child(3){ .emailList :nth-child(3) {
width: 15%; width: 15%;
display: inline-block; display: inline-block;
} }
.emailList :nth-child(4){ .emailList :nth-child(4) {
display: inline-block; display: inline-block;
} }
.emailList :nth-child(5){ .emailList :nth-child(5) {
display: inline-block; display: inline-block;
} }
.emailList :nth-child(6){ .emailList :nth-child(6) {
display: inline-block; display: inline-block;
} }
.emailList :nth-child(7){ .emailList :nth-child(7) {
display: inline-block; display: inline-block;
} }
.emailList :nth-child(8){ .emailList :nth-child(8) {
width: 15%; width: 15%;
display: inline-block; display: inline-block;
} }
.buTon :nth-child(1){ .buTon :nth-child(1) {
width: 70px; width: 70px;
height: 40px; height: 40px;
background: #2d8cf0; background: #2d8cf0;
color:white color: white;
} }
.pageBottom{ .pageBottom {
height: 40px; height: 40px;
width: 84.4%; width: 84.4%;
background:#EDEDED; background: #ededed;
position: fixed; position: fixed;
bottom: 0; bottom: 0;
} }
......
<template> <template>
<div class="upload"> <div class="upload">
<div class="upload-left"> <div class="upload-left">
<div class='uploadC' style="background:rgba(244,244,244,1);height:300px"> <div class="uploadC" style="background:rgba(244,244,244,1);height:300px">
<div class='upload-title'> <div class="upload-title">
<Input type='text' v-model='fileName' style='width:70%;margin-left:4%;margin-top:40px'></Input> <Input
type="text"
v-model="fileName"
style="width:70%;margin-left:4%;margin-top:40px"
></Input>
<input <input
ref="input" ref="input"
class='nativeInput' class="nativeInput"
type="file" type="file"
:class="['prefixCls' + '-input']" :class="['prefixCls' + '-input']"
@change="handleChange" @change="handleChange"
:multiple="true" :multiple="true"
:format="['pdf','doc','docx']" :format="['pdf', 'doc', 'docx']"
:accept="accept" :accept="accept"
/>
<Button
@click="selFiles"
style="width:20%;margin-top:40px;margin-left:-4px;color:black"
>选择文件</Button
> >
<Button @click='selFiles' style='width:20%;margin-top:40px;margin-left:-4px;color:black'>选择文件</Button> <div class="contentTips">
<div class='contentTips'> <p
<p style="font-size:12px;margin-left:5%;text-align:center;height:40px;line-height:40px;width:90%;display:inline-block;margin-top:30px">单个文件不能大于2MB,仅支持word,pdf格式,暂时不支持压缩格式</p> style="font-size:12px;margin-left:5%;text-align:center;height:40px;line-height:40px;width:90%;display:inline-block;margin-top:30px"
<p style="font-size:12px;margin-left:2%;text-align:center;height:40px;line-height:40px;width:90%">支持最多二十份简历批量上传</p> >
单个文件不能大于2MB,仅支持word,pdf格式,暂时不支持压缩格式
</p>
<p
style="font-size:12px;margin-left:2%;text-align:center;height:40px;line-height:40px;width:90%"
>
支持最多二十份简历批量上传
</p>
</div> </div>
<Button @click='uploadBtn' style='width:20%;margin-left:38%;margin-top:30px' type='primary'>上传</Button> <Button
@click="uploadBtn"
style="width:20%;margin-left:38%;margin-top:30px"
type="primary"
>上传</Button
>
</div> </div>
<!-- 上传文件 --> <!-- 上传文件 -->
<Modal v-model='uploadModal' :closable='false' :mask-closable='false'> <Modal v-model="uploadModal" :closable="false" :mask-closable="false">
<div> <div>
<h4 style="font-size:20px;text-align:center;margin-bottom:20px">{{filetile}}</h4> <h4 style="font-size:20px;text-align:center;margin-bottom:20px">
<div v-for='(item,index) in dataList' class='process' :key='index'> {{ filetile }}
<p style='padding-top:5px;'>{{item.name}}</p> </h4>
<span class='title' style="float:right;" v-show="item.Code==0">{{item.title}}</span> <div v-for="(item, index) in dataList" class="process" :key="index">
<span class='title' style="float:right;color:red" v-show="item.Code==1">{{item.title}} <p style="padding-top:5px;">{{ item.name }}</p>
<Checkbox v-model="item.sStatus" @on-change='selectfile(item.sStatus,item.name)'></Checkbox> <span
class="title"
style="float:right;"
v-show="item.Code == 0"
>{{ item.title }}</span
>
<span
class="title"
style="float:right;color:red"
v-show="item.Code == 1"
>{{ item.title }}
<Checkbox
v-model="item.sStatus"
@on-change="selectfile(item.sStatus, item.name)"
></Checkbox
>
</span> </span>
<span class='title' style="float:right;color:red" v-show="item.Code==2">{{item.title}}</span> <span
<Progress :percent="item.percentage" hide-info :status='item.status'></Progress> class="title"
style="float:right;color:red"
v-show="item.Code == 2"
>{{ item.title }}</span
>
<Progress
:percent="item.percentage"
hide-info
:status="item.status"
></Progress>
</div> </div>
</div> </div>
<div slot='footer' > <div slot="footer">
<p v-show="activeT==true" style="text-align:left">简历替换仅替换简历内容,不会影响简历状态。</p> <p v-show="activeT == true" style="text-align:left">
<Button @click='closeModal' v-show="activeT==true">完成</Button> 简历替换仅替换简历内容,不会影响简历状态。
</p>
<Button @click="closeModal" v-show="activeT == true">完成</Button>
</div> </div>
</Modal> </Modal>
<Modal <Modal v-model="modal6" width="280px" :closable="false">
v-model="modal6" <div>
width='280px'
:closable='false'
>
<div >
<h2 style="text-align: center;color:black">提示</h2> <h2 style="text-align: center;color:black">提示</h2>
<p>删除后不可恢复,是否确定永久删除简历?</p> <p>删除后不可恢复,是否确定永久删除简历?</p>
</div> </div>
<div slot='footer' style="text-align:center"> <div slot="footer" style="text-align:center">
<Button type='primary' @click='modal6=false'>取消</Button> <Button type="primary" @click="modal6 = false">取消</Button>
<Button type='primary' @click="delateONE" >确定</Button> <Button type="primary" @click="delateONE">确定</Button>
</div> </div>
</Modal> </Modal>
</div> </div>
<div class="leftcontrentFotter"> <div class="leftcontrentFotter">
<h5 style="width:100%;height:40px;background:rgb(0,176,160);text-align:center;line-height:40px;color:white;font-size:15px;font-weight:bold">上传记录</h5> <h5
<div style="width:100%;background:rgb(0,176,160); opacity: 0.7;overflow-y:auto;height:93%;"> style="width:100%;height:40px;background:rgb(0,176,160);text-align:center;line-height:40px;color:white;font-size:15px;font-weight:bold"
>
上传记录
</h5>
<div
style="width:100%;background:rgb(0,176,160); opacity: 0.7;overflow-y:auto;height:93%;"
>
<!-- <div style="width:100%;height:10px;background:rgb(0,176,160)"></div> --> <!-- <div style="width:100%;height:10px;background:rgb(0,176,160)"></div> -->
<div class="contentMASSAGE" v-for="(item,index) in ajaxData" :key="index"> <div
<p @click="getResumeData(item.resumeId,item.uid)" style="margin-top:10px"> class="contentMASSAGE"
<span style="color:#000000;margin:10px 0 0 10px;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer">{{item.name}} |</span> v-for="(item, index) in ajaxData"
<span style="color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer">{{item.mobile}} |</span> :key="index"
<span style="color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer">{{item.age}}岁|</span> >
<span style="color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer">{{item.gender}} |</span> <p
<span style="color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer">{{item.workYears}}年 |</span> @click="getResumeData(item.resumeId, item.uid)"
<span style="color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer">{{item.degree}} |</span> style="margin-top:10px"
<span style="color:#000000;width:28%;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer">{{item.expectedTitle}}</span> >
<span
style="color:#000000;margin:10px 0 0 10px;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>{{ item.name }} |</span
>
<span
style="color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>{{ item.mobile }} |</span
>
<span
style="color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>{{ item.age }}岁|</span
>
<span
style="color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>{{ item.gender }} |</span
>
<span
style="color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>{{ item.workYears }}年 |</span
>
<span
style="color:#000000;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>{{ item.degree }} |</span
>
<span
style="color:#000000;width:28%;display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space: nowrap; cursor:pointer"
>{{ item.expectedTitle }}</span
>
</p> </p>
<p style="margin-top:0px;color:Grey"> <p style="margin-top:0px;color:Grey">
<span style="color:Grey;margin:5px 0 0 10px;display:inline-block">{{item.createTime}}入库|</span> <span style="color:Grey;margin:5px 0 0 10px;display:inline-block"
<span>{{item.creator}}</span> >{{ item.createTime }}入库|</span
>
<span>{{ item.creator }}</span>
</p> </p>
<Button type='primary' style="margin:-55px 0 0 83%;width:60px;z-index:99" @click="delateONEModal(item.resumeId)">删除</Button> <Button
type="primary"
style="margin:-55px 0 0 83%;width:60px;z-index:99"
@click="delateONEModal(item.resumeId)"
>删除</Button
>
</div> </div>
</div> </div>
</div> </div>
...@@ -84,121 +168,218 @@ ...@@ -84,121 +168,218 @@
</p> </p>
<div style="width:100%;float:left;"> <div style="width:100%;float:left;">
<div style="margin:0 auto;width:860px"> <div style="margin:0 auto;width:860px">
<div class="personalInformation" v-show="JSON.stringify(resume)!=='{}'"> <div
class="personalInformation"
v-show="JSON.stringify(resume) !== '{}'"
>
<p class="bestmessage"> <p class="bestmessage">
<span> <span>
<img src="http://xyqbui.lkbang.net/image/icon_%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF_23_16px.png" style="height:16px;width:23px;vertical-align: middle;margin-top:-4px"></span> <img
<span style="margin-left:7px;font-size:16px;color:#0092FF">基本信息</span> src="http://xyqbui.lkbang.net/image/icon_%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF_23_16px.png"
<span style="float:right;width:50px;height:24px;margin-right:5px"><Button type="primary" size='small' style="width:50px;height:24px" @click="downloadONE(downloadId)">下载</Button></span> style="height:16px;width:23px;vertical-align: middle;margin-top:-4px"
/></span>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>基本信息</span
>
<span style="float:right;width:50px;height:24px;margin-right:5px"
><Button
type="primary"
size="small"
style="width:50px;height:24px"
@click="downloadONE(downloadId)"
>下载</Button
></span
>
</p> </p>
<div class="personalInformation-left"> <div class="personalInformation-left">
<p style="margin-top:20px">姓名:{{resume&&resume.ownerName}}</p> <p style="margin-top:20px">
<p>联系电话:{{resume&&resume.ownerMobile}}</p> 姓名:{{ resume && resume.ownerName }}
<p>电子邮箱:{{resume&&resume.email}}</p> </p>
<p>所在地:{{resume&&resume.locationCity}}</p> <p>联系电话:{{ resume && resume.ownerMobile }}</p>
<p>求职状态:{{resume&&resume.statusMessage}}</p> <p>电子邮箱:{{ resume && resume.email }}</p>
<p>期望行业:{{resume&&resume.industries}}</p> <p>所在地:{{ resume && resume.locationCity }}</p>
<p>期望职位:{{resume&&resume.expectTitles}}</p> <p>求职状态:{{ resume && resume.statusMessage }}</p>
<p>期望行业:{{ resume && resume.industries }}</p>
<p>期望职位:{{ resume && resume.expectTitles }}</p>
</div> </div>
<div class="personalInformation-right"> <div class="personalInformation-right">
<p style="margin-top:20px">年龄:{{resume&&resume.ownerAge}}</p> <p style="margin-top:20px">
<p>职位:{{resume&&resume.ownerExpectTitles}}</p> 年龄:{{ resume && resume.ownerAge }}
<p>学历:{{resume&&resume.ownerHighestDegree}}</p> </p>
<p>经验:{{resume&&resume.workYearsOriginal}}</p> <p>职位:{{ resume && resume.ownerExpectTitles }}</p>
<p style="margin-top:30px">期望薪资:{{resume&&resume.expectSalary}}</p> <p>学历:{{ resume && resume.ownerHighestDegree }}</p>
<p>期望地区:{{resume&&resume.city}}</p> <p>经验:{{ resume && resume.workYearsOriginal }}</p>
<p style="margin-top:30px">
期望薪资:{{ resume && resume.expectSalary }}
</p>
<p>期望地区:{{ resume && resume.city }}</p>
</div> </div>
</div> </div>
<div class="workExperience" v-show="roList.length !==0 "> <div class="workExperience" v-show="roList.length !== 0">
<p class="bestmessage"> <p class="bestmessage">
<span> <span>
<img img src="http://xyqbui.lkbang.net/image/icon_%E5%B7%A5%E4%BD%9C%E7%BB%8F%E5%8E%86_20_18px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"></span> <img
<span style="margin-left:7px;font-size:16px;color:#0092FF">工作经历</span> img
src="http://xyqbui.lkbang.net/image/icon_%E5%B7%A5%E4%BD%9C%E7%BB%8F%E5%8E%86_20_18px.png"
style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>工作经历</span
>
</p> </p>
<div class="workExperience-detail" v-for="(item,index) in roList" :key="index"> <div
class="workExperience-detail"
v-for="(item, index) in roList"
:key="index"
>
<div class="workExperience-top"> <div class="workExperience-top">
<p style="height:28px;line-height:28px;font-size:14px;"> <p style="height:28px;line-height:28px;font-size:14px;">
<span style="margin-left:30px">{{item.startTime}}-{{item.endTime}}</span> <span style="margin-left:30px"
<span style="margin-left:18px"><span>{{item.company}}<span>({{item.workTime}})</span></span></span> >{{ item.startTime }}-{{ item.endTime }}</span
>
<span style="margin-left:18px"
><span
>{{ item.company
}}<span>({{ item.workTime }})</span></span
></span
>
<span style="float:right;margin-right:30px"> <span style="float:right;margin-right:30px">
<span>{{item.industry}}</span> <span>{{ item.industry }}</span>
<span>{{item.companyType}}</span> <span>{{ item.companyType }}</span>
</span> </span>
</p> </p>
<p style="height:28px;line-height:28px;font-size:14px;"> <p style="height:28px;line-height:28px;font-size:14px;">
<span style="float:right;margin-right:30px">{{item.department}}</span> <span style="float:right;margin-right:30px">{{
item.department
}}</span>
</p> </p>
</div> </div>
<div class="workExperience-bottom">{{item.desc}}</div> <div class="workExperience-bottom">{{ item.desc }}</div>
</div> </div>
</div> </div>
<div class="projectExperience" v-show="rpList.length !==0 "> <div class="projectExperience" v-show="rpList.length !== 0">
<p class="bestmessage"> <p class="bestmessage">
<span> <span>
<img src="http://xyqbui.lkbang.net/image/icon_%E9%A1%B9%E7%9B%AE%E7%BB%8F%E5%8E%86_20_20px.png" style="height:14px;width:19px; vertical-align: middle;margin-top:-4px;margin-left:2px"></span> <img
<span style="margin-left:7px;font-size:16px;color:#0092FF">项目经历</span> src="http://xyqbui.lkbang.net/image/icon_%E9%A1%B9%E7%9B%AE%E7%BB%8F%E5%8E%86_20_20px.png"
style="height:14px;width:19px; vertical-align: middle;margin-top:-4px;margin-left:2px"
/></span>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>项目经历</span
>
</p> </p>
<div class="projectExperience-detail" v-for="(item,index) in rpList" :key="index"> <div
class="projectExperience-detail"
v-for="(item, index) in rpList"
:key="index"
>
<div class="projectExperience-top"> <div class="projectExperience-top">
<p style="height:28px;line-height:28px;font-size:14px;"> <p style="height:28px;line-height:28px;font-size:14px;">
<span style="margin-left:30px">{{item.startYear}}/{{item.startMonth}}-{{item.endYear}}/{{item.endMonth}}</span> <span style="margin-left:30px"
<span style="margin-left:18px"><span>{{item.name}}<span></span></span></span> >{{ item.startYear }}/{{ item.startMonth }}-{{
item.endYear
}}/{{ item.endMonth }}</span
>
<span style="margin-left:18px"
><span>{{ item.name }}<span></span></span
></span>
<span style="float:right;margin-right:30px"> <span style="float:right;margin-right:30px">
<span>{{item.post}}</span> <span>{{ item.post }}</span>
</span> </span>
</p> </p>
</div> </div>
<div class="projectExperience-bottom">{{item.desc}}</div> <div class="projectExperience-bottom">{{ item.desc }}</div>
</div> </div>
</div> </div>
<div class="internshipExperience" v-show="riList.length !==0 "> <div class="internshipExperience" v-show="riList.length !== 0">
<p class="bestmessage"> <p class="bestmessage">
<span > <span>
<img src="http://xyqbui.lkbang.net/image/icon_%E5%AE%9E%E4%B9%A0%E7%BB%8F%E5%8E%86_21_18px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"></span> <img
<span style="margin-left:7px;font-size:16px;color:#0092FF">实习经历</span> src="http://xyqbui.lkbang.net/image/icon_%E5%AE%9E%E4%B9%A0%E7%BB%8F%E5%8E%86_21_18px.png"
style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>实习经历</span
>
</p> </p>
<div class="internshipExperience-detail" v-for="(item,index) in riList" :key="index"> <div
class="internshipExperience-detail"
v-for="(item, index) in riList"
:key="index"
>
<div class="internshipExperience-top"> <div class="internshipExperience-top">
<p style="height:28px;line-height:28px;font-size:14px;"> <p style="height:28px;line-height:28px;font-size:14px;">
<span style="margin-left:30px">{{item.startYear}}/{{item.startMonth}}-{{item.endYear}}/{{item.endMonth}}</span> <span style="margin-left:30px"
<span style="margin-left:18px"><span>{{item.company}}<span></span></span></span> >{{ item.startYear }}/{{ item.startMonth }}-{{
item.endYear
}}/{{ item.endMonth }}</span
>
<span style="margin-left:18px"
><span>{{ item.company }}<span></span></span
></span>
<span style="float:right;margin-right:30px"> <span style="float:right;margin-right:30px">
<span>{{item.industry}}</span> <span>{{ item.industry }}</span>
</span> </span>
</p> </p>
<p style="height:28px;line-height:28px;font-size:14px;"> <p style="height:28px;line-height:28px;font-size:14px;">
<span style="float:right;margin-right:30px">{{item.title}}</span> <span style="float:right;margin-right:30px">{{
item.title
}}</span>
</p> </p>
</div> </div>
<div class="internshipExperience-bottom">{{item.desc}}</div> <div class="internshipExperience-bottom">{{ item.desc }}</div>
</div> </div>
</div> </div>
<div class="educationalExperience" v-show="reList.length !==0"> <div class="educationalExperience" v-show="reList.length !== 0">
<p class="bestmessage"> <p class="bestmessage">
<span> <span>
<img src="http://xyqbui.lkbang.net/image/icon_%E6%95%99%E8%82%B2%E7%BB%8F%E5%8E%86_26_20px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"></span> <img
<span style="margin-left:7px;font-size:16px;color:#0092FF">教育经历</span> src="http://xyqbui.lkbang.net/image/icon_%E6%95%99%E8%82%B2%E7%BB%8F%E5%8E%86_26_20px.png"
style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>教育经历</span
>
</p> </p>
<div class="educationalExperience-detail" v-for="(item,index) in reList" :key="index"> <div
class="educationalExperience-detail"
v-for="(item, index) in reList"
:key="index"
>
<div class="educationalExperience-content"> <div class="educationalExperience-content">
<div class="educationalExperience-left"> <div class="educationalExperience-left">
<p style="line-height:25px;margin-top:20px">{{item.school}}(({{item.startYear}}.{{item.startMonth}}-{{item.endYear}}.{{item.endMonth}}))</p> <p style="line-height:25px;margin-top:20px">
<p style="margin-top:20px;">专业:{{item.major}}</p> {{ item.school }}(({{ item.startYear }}.{{
item.startMonth
}}-{{ item.endYear }}.{{ item.endMonth }}))
</p>
<p style="margin-top:20px;">专业:{{ item.major }}</p>
</div> </div>
<div class="educationalExperience-right"> <div class="educationalExperience-right">
<p style="margin-top:65px">学历:{{item.degree}}</p> <p style="margin-top:65px">学历:{{ item.degree }}</p>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="Self-evaluation" v-show="JSON.stringify(resume)!=='{}'"> <div class="Self-evaluation" v-show="JSON.stringify(resume) !== '{}'">
<p class="bestmessage"> <p class="bestmessage">
<span > <span>
<img src="http://xyqbui.lkbang.net/image/icon_%E8%87%AA%E6%88%91%E8%AF%84%E4%BB%B7_18_18px.png" style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"></span> <img
<span style="margin-left:7px;font-size:16px;color:#0092FF">自我评价</span> src="http://xyqbui.lkbang.net/image/icon_%E8%87%AA%E6%88%91%E8%AF%84%E4%BB%B7_18_18px.png"
style="height:16px;width:23px; vertical-align: middle;margin-top:-4px"
/></span>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>自我评价</span
>
</p> </p>
<div class="evaluation-content"> <div class="evaluation-content">
{{resume&&resume.selfEvaluate}} {{ resume && resume.selfEvaluate }}
</div> </div>
</div> </div>
</div> </div>
...@@ -207,80 +388,83 @@ ...@@ -207,80 +388,83 @@
</div> </div>
</template> </template>
<script> <script>
import { getuploadNumber, uploadfile, serchList, serchRESUMEdetail, deleteREsumeUPLOad } from '../../api/upload.server'
import { import {
sapi getuploadNumber,
} from '../../config' uploadfile,
import { uploadFile } from '../../service/ajax' serchList,
serchRESUMEdetail,
deleteREsumeUPLOad
} from "../../api/upload.server";
import { sapi } from "../../config";
import { uploadFile } from "../../service/ajax";
export default { export default {
data () { data() {
return { return {
uploadList: [], uploadList: [],
dataList: [], dataList: [],
fileName: '', fileName: "",
ajaxData: [], ajaxData: [],
delateARRALL: [], delateARRALL: [],
replaceArr: [], replaceArr: [],
downloadId: '', downloadId: "",
pageIndex: 1, pageIndex: 1,
pageSize: 30, pageSize: 30,
isReplace: true, isReplace: true,
newArr: [], newArr: [],
replaceName: '', replaceName: "",
searchInfo: { searchInfo: {
pageSize: 30, pageSize: 30,
pageIndex: 1 pageIndex: 1
}, },
Sid: '', Sid: "",
single: true, single: true,
checkboxList: [], checkboxList: [],
filetile: '上传中请稍后...', filetile: "上传中请稍后...",
totalSize: null, totalSize: null,
uploadModal: false, uploadModal: false,
accept: '.doc,.docx,.pdf', accept: ".doc,.docx,.pdf",
fileSize: 2048, fileSize: 2048,
progressStatus: { progressStatus: {
0: 'active', 0: "active",
2: 'wrong', 2: "wrong",
1: 'wrong' 1: "wrong"
}, },
files: null, files: null,
activeT: false, activeT: false,
change: false, change: false,
massage: '', massage: "",
Massage: '', Massage: "",
Code: '', Code: "",
action: `${sapi}/api/resume/upload`, action: `${sapi}/api/resume/upload`,
batchNum: '', batchNum: "",
modal3: false, modal3: false,
modal1: false, modal1: false,
modal2: false, modal2: false,
modal6: false, modal6: false,
Filename: '', Filename: "",
uploadNUmber: '', uploadNUmber: "",
// uploadList:[], // uploadList:[],
a: [], a: [],
files: null, files: null,
b: '', b: "",
uploadFile: [], uploadFile: [],
resume: {}, // 简历基本详情 resume: {}, // 简历基本详情
riList: [], // 实习经历列表 riList: [], // 实习经历列表
roList: [], // 工作经历列表 roList: [], // 工作经历列表
rpList: [], // 项目经历列表 rpList: [], // 项目经历列表
reList: [], // 教育经历列表 reList: [], // 教育经历列表
serchID: '' serchID: ""
};
}
}, },
methods: { methods: {
handleChange (e) { handleChange(e) {
this.fileName = '' this.fileName = "";
this.dataList = [] this.dataList = [];
const files = e.target.files const files = e.target.files;
this.files = e.target.files this.files = e.target.files;
for (const key in files) { for (const key in files) {
if (key != 'length' && key != 'item') { if (key != "length" && key != "item") {
const file = files[key] const file = files[key];
const temp = { const temp = {
name: file.name, name: file.name,
data: file, data: file,
...@@ -288,158 +472,160 @@ export default { ...@@ -288,158 +472,160 @@ export default {
type: file.type, type: file.type,
size: file.size, size: file.size,
title: null, title: null,
status: 'active' status: "active"
} };
this.dataList.push(temp) this.dataList.push(temp);
this.fileName += files[key].name + ';' this.fileName += files[key].name + ";";
} }
} }
if (!files) { if (!files) {
return return;
} }
this.$refs.input.value = null this.$refs.input.value = null;
}, },
uploadBtn () { uploadBtn() {
if (this.dataList.length < 1) { if (this.dataList.length < 1) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: '请您选择文件在上传', desc: "请您选择文件在上传",
duration: 2 duration: 2
}) });
return return;
} }
if (this.dataList.length > 20) { if (this.dataList.length > 20) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: '批量上传文件不能大于20份', desc: "批量上传文件不能大于20份",
duration: 2 duration: 2
}) });
this.$refs.input.value = '' this.$refs.input.value = "";
this.fileName = '' this.fileName = "";
this.dataList = [] this.dataList = [];
return return;
} }
if (this.handleMaxSize()) { if (this.handleMaxSize()) {
this.$Notice.error({ this.$Notice.error({
title: '提示', title: "提示",
desc: '单份文件不能大于2MB', desc: "单份文件不能大于2MB",
duration: 2 duration: 2
}) });
this.$refs.input.value = '' this.$refs.input.value = "";
this.fileName = '' this.fileName = "";
this.dataList = [] this.dataList = [];
return return;
} }
this.uploadModal = true this.uploadModal = true;
this.filetile = '上传中请稍后...' this.filetile = "上传中请稍后...";
uploadFile({ uploadFile({
headers: this.headers, headers: this.headers,
data: this.dataList, data: this.dataList,
batchNum: this.batchNum, batchNum: this.batchNum,
action: this.action, action: this.action,
batchNum: this.batchNum, batchNum: this.batchNum,
appendName: 'batchNum', appendName: "batchNum",
appendFile: 'recFile', appendFile: "recFile",
onProgress: e => { onProgress: e => {
setTimeout(() => { setTimeout(() => {
this.handleProgress(e) this.handleProgress(e);
}, 200) }, 200);
}, },
onSuccess: res => { onSuccess: res => {
setTimeout(() => { setTimeout(() => {
this.handleSuccess(res, this.files) this.handleSuccess(res, this.files);
this.activeT = true this.activeT = true;
}, 1000) }, 1000);
}, },
onError: (err, response) => { onError: (err, response) => {
this.handleError(err, response, this.files) this.handleError(err, response, this.files);
} }
}) });
}, },
handleProgress (e) { handleProgress(e) {
this.dataList.map(item => { this.dataList.map(item => {
item.percentage = e.percent - 5 item.percentage = e.percent - 5;
}) });
}, },
selectfile (data, name) { selectfile(data, name) {
this.replaceName = name this.replaceName = name;
if (data == false) { if (data == false) {
this.replaceArr = this.replaceArr.filter(item => item !== this.replaceName) this.replaceArr = this.replaceArr.filter(
item => item !== this.replaceName
);
} else { } else {
this.replaceArr.push(this.replaceName) this.replaceArr.push(this.replaceName);
} }
}, },
handleSuccess (res, files) { handleSuccess(res, files) {
const data = res.body const data = res.body;
this.filetile = '上传完成' this.filetile = "上传完成";
for (const key in data) { for (const key in data) {
const code = data[key].code const code = data[key].code;
this.Code = data[key].code this.Code = data[key].code;
this.Massage = data[key].message this.Massage = data[key].message;
if (data[key].code == 1) { if (data[key].code == 1) {
this.replaceArr.push(key) this.replaceArr.push(key);
} }
this.dataList.map(item => { this.dataList.map(item => {
item.sStatus = true item.sStatus = true;
if (key == item.name) { if (key == item.name) {
item.title = this.Massage item.title = this.Massage;
if (item.Code == 2) { progressStatus = { 2: 'wrong' } } if (item.Code == 2) {
item.status = this.progressStatus[code] progressStatus = { 2: "wrong" };
item.Code = this.Code
item.percentage = 100
} }
}) item.status = this.progressStatus[code];
item.Code = this.Code;
item.percentage = 100;
}
});
} }
}, },
handleError (err, res, files) { handleError(err, res, files) {},
handleMaxSize() {
}, let isLimit = false;
handleMaxSize () {
let isLimit = false
this.dataList.map(item => { this.dataList.map(item => {
if (item.size / 1024 > this.fileSize) { if (item.size / 1024 > this.fileSize) {
isLimit = true isLimit = true;
} }
}) });
return isLimit return isLimit;
}, },
selFiles () { selFiles() {
this.$refs.input.click() this.$refs.input.click();
}, },
closeModal () { closeModal() {
this.uploadModal = false this.uploadModal = false;
this.$refs.input.value = '' this.$refs.input.value = "";
this.dataList = [] this.dataList = [];
// this.replaceArr = [] // this.replaceArr = []
this.fileName = '' this.fileName = "";
this.activeT = false this.activeT = false;
this.filetile = '上传中请稍后...' this.filetile = "上传中请稍后...";
this.serchlist() this.serchlist();
}, },
// 下载单条简历 // 下载单条简历
downloadONE (downID) { downloadONE(downID) {
window.location.href = `${sapi}/api/resume/download/formatted/one?resumeId=${downID}` window.location.href = `${sapi}/api/resume/download/formatted/one?resumeId=${downID}`;
}, },
// 获取上传批次号 // 获取上传批次号
getnumber () { getnumber() {
return getuploadNumber().then(res => { return getuploadNumber().then(res => {
this.batchNum = res.data.body this.batchNum = res.data.body;
}) });
}, },
// 改变页码 // 改变页码
pageChange (page) { pageChange(page) {
this.SearchList(page) this.SearchList(page);
}, },
pageSizeChange (page) { pageSizeChange(page) {
this.searchInfo.pageSize = page this.searchInfo.pageSize = page;
this.pageSize = page this.pageSize = page;
this.SearchList() this.SearchList();
}, },
// 查询记录列表 // 查询记录列表
serchlist (page) { serchlist(page) {
page = typeof (page) === 'number' ? page : 1 page = typeof page === "number" ? page : 1;
this.searchInfo.pageIndex = page this.searchInfo.pageIndex = page;
this.pageIndex = page this.pageIndex = page;
const parmars = { const parmars = {
pageSize: this.searchInfo.pageSize, pageSize: this.searchInfo.pageSize,
pageIndex: this.searchInfo.pageIndex, pageIndex: this.searchInfo.pageIndex,
...@@ -447,112 +633,112 @@ export default { ...@@ -447,112 +633,112 @@ export default {
batchNum: this.batchNum, batchNum: this.batchNum,
replaceFileNameList: this.replaceArr replaceFileNameList: this.replaceArr
} }
} };
serchList(parmars).then(res => { serchList(parmars).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.replaceArr = [] this.replaceArr = [];
this.totalSize = res.data.body.totalNumber this.totalSize = res.data.body.totalNumber;
this.ajaxData = res.data.body.items.map((item, index) => { this.ajaxData = res.data.body.items.map((item, index) => {
item.resumeId = item.resumeId item.resumeId = item.resumeId;
item.name = item.name item.name = item.name;
item.mobile = item.mobile item.mobile = item.mobile;
item.age = item.age item.age = item.age;
item.gender = item.gender item.gender = item.gender;
item.workYears = item.workYears item.workYears = item.workYears;
item.degree = item.degree item.degree = item.degree;
item.expectedTitle = item.expectedTitle item.expectedTitle = item.expectedTitle;
item.status = item.status item.status = item.status;
item.uid = item.uid item.uid = item.uid;
item.creator = item.creator == '' ? item.creator : item.creator.split('_')[0] item.creator =
item.createTime = item.createTime item.creator == "" ? item.creator : item.creator.split("_")[0];
return item item.createTime = item.createTime;
}) return item;
});
} }
}) });
}, },
// 获取简历详情页数据 // 获取简历详情页数据
getResumeData (sid, Uid) { getResumeData(sid, Uid) {
this.downloadId = sid this.downloadId = sid;
const parmars = { const parmars = {
uid: Uid uid: Uid
} };
serchRESUMEdetail(parmars).then(res => { serchRESUMEdetail(parmars).then(res => {
this.resume = res.data.body.resume this.resume = res.data.body.resume;
this.riList = res.data.body.riList this.riList = res.data.body.riList;
this.roList = res.data.body.roList this.roList = res.data.body.roList;
this.reList = res.data.body.reList this.reList = res.data.body.reList;
this.rpList = res.data.body.rpList this.rpList = res.data.body.rpList;
}) });
}, },
// 删除提示 // 删除提示
delateONEModal (vid) { delateONEModal(vid) {
this.Sid = vid this.Sid = vid;
this.modal6 = true this.modal6 = true;
}, },
// 删除单条简历 // 删除单条简历
delateONE () { delateONE() {
this.delateARRALL.push(this.Sid) this.delateARRALL.push(this.Sid);
deleteREsumeUPLOad(this.delateARRALL).then(res => { deleteREsumeUPLOad(this.delateARRALL).then(res => {
if (res.data.success == true) { if (res.data.success == true) {
this.modal6 = false this.modal6 = false;
this.resume = {} this.resume = {};
this.riList = [] this.riList = [];
this.roList = [] this.roList = [];
this.rpList = [] this.rpList = [];
this.reList = [] this.reList = [];
this.downloadId = '' this.downloadId = "";
this.serchlist() this.serchlist();
} }
}) });
} }
}, },
async mounted () { async mounted() {
await this.getnumber() await this.getnumber();
this.serchlist() this.serchlist();
} }
} };
</script> </script>
<style lang='less' scoped> <style lang="less" scoped>
.upload{ .upload {
width: 100%; width: 100%;
height:100%; height: 100%;
background: #F2F2F2; background: #f2f2f2;
overflow: hidden; overflow: hidden;
} }
.upload-left{ .upload-left {
width: 32%; width: 32%;
float: left; float: left;
height:100%; height: 100%;
// overflow: hidden; // overflow: hidden;
} }
.upload-right{ .upload-right {
width: 67%; width: 67%;
float: left; float: left;
overflow-y: auto; overflow-y: auto;
overflow-x: hidden; overflow-x: hidden;
height: 100%; height: 100%;
background:rgb(255,255,255) background: rgb(255, 255, 255);
} }
.detailUload{ .detailUload {
width: 100%; width: 100%;
margin-top: 3px; margin-top: 3px;
} }
.leftcontrentFotter{ .leftcontrentFotter {
width: 100%; width: 100%;
float: left; float: left;
height: 70%; height: 70%;
overflow: hidden; overflow: hidden;
} }
.contentMASSAGE{ .contentMASSAGE {
width:96%; width: 96%;
height:67px; height: 67px;
margin-top:0px; margin-top: 0px;
margin-left: 2%; margin-left: 2%;
background: white; background: white;
border-radius: 5px border-radius: 5px;
} }
.detailTW{ .detailTW {
height: 30px; height: 30px;
width: 370px; width: 370px;
position: relative; position: relative;
...@@ -560,179 +746,179 @@ export default { ...@@ -560,179 +746,179 @@ export default {
left: 20px; left: 20px;
/* display: block */ /* display: block */
} }
.detailTB{ .detailTB {
background:#F4F4F4; background: #f4f4f4;
color:black; color: black;
position: relative; position: relative;
top:20px; top: 20px;
left: 390px left: 390px;
} }
.format{ .format {
position: relative; position: relative;
top: 60px; top: 60px;
left: 30px; left: 30px;
} }
.number{ .number {
position: relative; position: relative;
top: 90px; top: 90px;
left: 160px left: 160px;
} }
.clickUpload{ .clickUpload {
position: relative; position: relative;
top: 120px; top: 120px;
left: 190px left: 190px;
} }
.upload-pageBottom{ .upload-pageBottom {
width: 26.2%; width: 26.2%;
text-align: center; text-align: center;
height:40px; height: 40px;
position: fixed; position: fixed;
bottom:0px; bottom: 0px;
background:rgba(0,176,160,0.7) background: rgba(0, 176, 160, 0.7);
} }
.uploadC{ .uploadC {
height: 30%; height: 30%;
width:100%; width: 100%;
float: left; float: left;
.upload-title{ .upload-title {
height: 100%; height: 100%;
.nativeInput{ .nativeInput {
display:none display: none;
} }
} }
.contentTips{ .contentTips {
// margin:20px 10px 30px 10px; // margin:20px 10px 30px 10px;
.p{ .p {
// margin:10px; // margin:10px;
} }
} }
.title{ .title {
float:right float: right;
} }
.process{ .process {
margin-top:10px; margin-top: 10px;
} }
} }
.personalInformation{ .personalInformation {
width:860px; width: 860px;
height: 300px; height: 300px;
float: left; float: left;
} }
.personalInformation-left{ .personalInformation-left {
width: 400px; width: 400px;
height:260px; height: 260px;
margin-left: 30px; margin-left: 30px;
float: left; float: left;
font-size: 14px font-size: 14px;
} }
.personalInformation-left p{ .personalInformation-left p {
line-height: 28px line-height: 28px;
} }
.personalInformation-right{ .personalInformation-right {
width: 400px; width: 400px;
height:260px; height: 260px;
font-size: 14px; font-size: 14px;
float: left; float: left;
} }
.personalInformation-right p{ .personalInformation-right p {
line-height: 28px line-height: 28px;
} }
.workExperience{ .workExperience {
width: 860px; width: 860px;
float: left; float: left;
} }
.workExperience-detail{ .workExperience-detail {
width: 860px; width: 860px;
float: left; float: left;
margin-top: 20px; margin-top: 20px;
} }
.workExperience-top{ .workExperience-top {
width: 860px; width: 860px;
height: 56px; height: 56px;
background: rgba(246,246,246,1); background: rgba(246, 246, 246, 1);
} }
.workExperience-bottom{ .workExperience-bottom {
width:640px; width: 640px;
margin-left: 71px; margin-left: 71px;
margin-top: 20px; margin-top: 20px;
line-height: 24px line-height: 24px;
} }
.projectExperience{ .projectExperience {
width: 860px; width: 860px;
margin-top: 30px; margin-top: 30px;
float: left; float: left;
} }
.projectExperience-detail{ .projectExperience-detail {
width: 860px; width: 860px;
float: left; float: left;
margin-top: 20px; margin-top: 20px;
} }
.projectExperience-top{ .projectExperience-top {
width: 860px; width: 860px;
height: 34px; height: 34px;
line-height: 34px; line-height: 34px;
background: rgba(246,246,246,1); background: rgba(246, 246, 246, 1);
} }
.projectExperience-bottom{ .projectExperience-bottom {
width:640px; width: 640px;
margin-left: 71px; margin-left: 71px;
margin-top: 20px; margin-top: 20px;
line-height: 24px line-height: 24px;
} }
.internshipExperience{ .internshipExperience {
width: 860px; width: 860px;
margin-top: 30px; margin-top: 30px;
float: left; float: left;
} }
.internshipExperience-detail{ .internshipExperience-detail {
width: 860px; width: 860px;
float: left; float: left;
margin-top: 20px; margin-top: 20px;
} }
.internshipExperience-top{ .internshipExperience-top {
width: 860px; width: 860px;
height: 56px; height: 56px;
line-height: 34px; line-height: 34px;
background: rgba(246,246,246,1); background: rgba(246, 246, 246, 1);
} }
.internshipExperience-bottom{ .internshipExperience-bottom {
width:640px; width: 640px;
margin-left: 71px; margin-left: 71px;
margin-top: 20px; margin-top: 20px;
line-height: 24px line-height: 24px;
} }
.educationalExperience{ .educationalExperience {
width: 860px; width: 860px;
float: left; float: left;
} }
.educationalExperience-left{ .educationalExperience-left {
width: 430px; width: 430px;
float: left; float: left;
margin-left: 30px; margin-left: 30px;
font-size: 14px font-size: 14px;
} }
.educationalExperience-right{ .educationalExperience-right {
width: 380px; width: 380px;
float: left; float: left;
font-size: 14px font-size: 14px;
} }
.Self-evaluation{ .Self-evaluation {
width: 860px; width: 860px;
float: left; float: left;
} }
.evaluation-content{ .evaluation-content {
width: 720px; width: 720px;
margin-left:30px; margin-left: 30px;
float: left; float: left;
margin-top: 30px; margin-top: 30px;
line-height: 30px; line-height: 30px;
margin-bottom: 20px margin-bottom: 20px;
} }
.bestmessage{ .bestmessage {
width: 860px; width: 860px;
height: 24px; height: 24px;
float: left; float: left;
margin-top: 20px margin-top: 20px;
} }
</style> </style>
import Vue from 'vue' import Vue from "vue";
import Router from 'vue-router' import Router from "vue-router";
const home = r => require.ensure([], () => r(require('@/components/home.vue')), 'home') const home = r =>
require.ensure([], () => r(require("@/components/home.vue")), "home");
// const changepsd = r => require.ensure([], () => r(require('@/components/changepsd.vue')), 'changepsd'); // const changepsd = r => require.ensure([], () => r(require('@/components/changepsd.vue')), 'changepsd');
const login = r => require.ensure([], () => r(require('@/page/login/login.vue')), 'login') const login = r =>
const update = r => require.ensure([], () => r(require('@/page/login/update.vue')), 'update') require.ensure([], () => r(require("@/page/login/login.vue")), "login");
const pdfdetail = r => require.ensure([], () => r(require('@/page/resume/pdfdetail.vue')), 'pdfdetail') const update = r =>
const resumeDetail = r => require.ensure([], () => r(require('@/page/resume/resumeDetail.vue')), 'resumeDetail') require.ensure([], () => r(require("@/page/login/update.vue")), "update");
const interview = r => require.ensure([], () => r(require('@/page/interview/interview.vue')), 'interview') const pdfdetail = r =>
const allResume = r => require.ensure([], () => r(require('@/page/resume/allResume.vue')), 'allResume') require.ensure(
const channel = r => require.ensure([], () => r(require('@/page/resume/channel.vue')), 'channel') [],
const account = r => require.ensure([], () => r(require('@/page/system/account.vue')), 'account') () => r(require("@/page/resume/pdfdetail.vue")),
const emailMange = r => require.ensure([], () => r(require('@/page/system/emailMange.vue')), 'emailMange') "pdfdetail"
const QRcode = r => require.ensure([], () => r(require('@/page/system/QRcode.vue')), 'QRcode') );
const upload = r => require.ensure([], () => r(require('@/page/upload/upload.vue')), 'upload') const resumeDetail = r =>
const sweepCode = r => require.ensure([], () => r(require('@/page/sweepCode/sweepCode.vue')), 'sweepCode') require.ensure(
const editor = r => require.ensure([], () => r(require('@/components/editor.vue')), 'editor') [],
const getimage = r => require.ensure([], () => r(require('@/components/getimage.vue')), 'getimage') () => r(require("@/page/resume/resumeDetail.vue")),
"resumeDetail"
);
const interview = r =>
require.ensure(
[],
() => r(require("@/page/interview/interview.vue")),
"interview"
);
const allResume = r =>
require.ensure(
[],
() => r(require("@/page/resume/allResume.vue")),
"allResume"
);
const channel = r =>
require.ensure([], () => r(require("@/page/resume/channel.vue")), "channel");
const account = r =>
require.ensure([], () => r(require("@/page/system/account.vue")), "account");
const emailMange = r =>
require.ensure(
[],
() => r(require("@/page/system/emailMange.vue")),
"emailMange"
);
const QRcode = r =>
require.ensure([], () => r(require("@/page/system/QRcode.vue")), "QRcode");
const upload = r =>
require.ensure([], () => r(require("@/page/upload/upload.vue")), "upload");
const sweepCode = r =>
require.ensure(
[],
() => r(require("@/page/sweepCode/sweepCode.vue")),
"sweepCode"
);
const editor = r =>
require.ensure([], () => r(require("@/components/editor.vue")), "editor");
const getimage = r =>
require.ensure([], () => r(require("@/components/getimage.vue")), "getimage");
// z注释 // z注释
Vue.use(Router) Vue.use(Router);
export default new Router({ export default new Router({
mode: 'history', mode: "history",
routes: [ routes: [
{ {
path: '/', path: "/",
redirect: '/home' redirect: "/home"
}, { },
path: '/login', {
name: 'login', path: "/login",
name: "login",
component: login, component: login,
meta: { meta: {
allowBack: false allowBack: false
} }
}, },
{ {
path: '/sweepCode', path: "/sweepCode",
name: 'sweepCode', name: "sweepCode",
component: sweepCode component: sweepCode
}, },
{ {
path: '/update', path: "/update",
name: 'update', name: "update",
component: update component: update
}, },
{ {
path: '/getimage', path: "/getimage",
name: 'getimage', name: "getimage",
component: getimage component: getimage
}, },
{ {
path: '/resumeDetail', path: "/resumeDetail",
name: 'resumeDetail', name: "resumeDetail",
component: resumeDetail component: resumeDetail
}, },
{ {
path: '/pdfdetail', path: "/pdfdetail",
name: 'pdfdetail', name: "pdfdetail",
component: pdfdetail component: pdfdetail
}, },
{ {
path: '/editor', path: "/editor",
name: 'editor', name: "editor",
component: editor component: editor
}, },
{ {
path: '/home', path: "/home",
name: 'home', name: "home",
component: home, component: home,
children: [ children: [
{ {
path: '/interview', path: "/interview",
name: 'interview', name: "interview",
component: interview component: interview
}, },
{ {
path: '/allResume', path: "/allResume",
name: 'allResume', name: "allResume",
component: allResume component: allResume
}, },
{ {
path: '/channel/:channelname', path: "/channel/:channelname",
name: 'channel', name: "channel",
component: channel component: channel
}, },
{ {
path: '/account', path: "/account",
name: 'account', name: "account",
component: account component: account
}, },
{ {
path: '/emailMange', path: "/emailMange",
name: 'emailMange', name: "emailMange",
component: emailMange component: emailMange
}, },
{ {
path: '/QRcode', path: "/QRcode",
name: 'QRcode', name: "QRcode",
component: QRcode component: QRcode
}, },
{ {
path: '/upload', path: "/upload",
name: 'upload', name: "upload",
component: upload component: upload
} }
] ]
} }
] ]
}) });
// https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js // https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js
import axios from './http.service.js' import axios from "./http.service.js";
function getError (action, option, xhr) { function getError(action, option, xhr) {
const msg = `fail to post ${action} ${xhr.status}'` const msg = `fail to post ${action} ${xhr.status}'`;
const err = new Error(msg) const err = new Error(msg);
err.status = xhr.status err.status = xhr.status;
err.method = 'post' err.method = "post";
err.url = action err.url = action;
return err return err;
} }
function getBody (xhr) { function getBody(xhr) {
const text = xhr.responseText || xhr.response const text = xhr.responseText || xhr.response;
if (!text) { if (!text) {
return text return text;
} }
try { try {
return JSON.parse(text) return JSON.parse(text);
} catch (e) { } catch (e) {
return text return text;
} }
} }
export function uploadFile (option) { export function uploadFile(option) {
const action = option.action const action = option.action;
const formData = new FormData() const formData = new FormData();
if (option.data) { if (option.data) {
option.data.map(item => { option.data.map(item => {
formData.append(option.appendFile, item.data) formData.append(option.appendFile, item.data);
}) });
} }
formData.append(option.appendName, option.batchNum) formData.append(option.appendName, option.batchNum);
axios.post(action, formData, { axios
onUploadProgress: function (progressEvent) { .post(action, formData, {
onUploadProgress: function(progressEvent) {
if (progressEvent.total > 0) { if (progressEvent.total > 0) {
progressEvent.percent = (progressEvent.loaded / progressEvent.total * 100) progressEvent.percent =
(progressEvent.loaded / progressEvent.total) * 100;
} }
option.onProgress(progressEvent) option.onProgress(progressEvent);
} }
}).then((res) => {
option.onSuccess(res.data)
}).catch((error) => {
option.onError(error)
}) })
.then(res => {
option.onSuccess(res.data);
})
.catch(error => {
option.onError(error);
});
} }
export default function upload (option) { export default function upload(option) {
if (typeof XMLHttpRequest === 'undefined') { if (typeof XMLHttpRequest === "undefined") {
return return;
} }
const xhr = new XMLHttpRequest() const xhr = new XMLHttpRequest();
const action = option.action const action = option.action;
if (xhr.upload) { if (xhr.upload) {
xhr.upload.onprogress = function progress (e) { xhr.upload.onprogress = function progress(e) {
if (e.total > 0) { if (e.total > 0) {
e.percent = (e.loaded / e.total * 100 - 10) e.percent = (e.loaded / e.total) * 100 - 10;
}
option.onProgress(e)
} }
option.onProgress(e);
};
} }
const formData = new FormData() const formData = new FormData();
if (option.data) { if (option.data) {
option.data.map(item => { option.data.map(item => {
formData.append(option.appendFile, item.data) formData.append(option.appendFile, item.data);
}) });
} }
formData.append(option.appendName, option.batchNum) formData.append(option.appendName, option.batchNum);
xhr.onerror = function error (e) { xhr.onerror = function error(e) {
option.onError(e) option.onError(e);
} };
xhr.onload = function onload () { xhr.onload = function onload() {
if (xhr.status < 200 || xhr.status >= 300) { if (xhr.status < 200 || xhr.status >= 300) {
return option.onError(getError(action, option, xhr), getBody(xhr)) return option.onError(getError(action, option, xhr), getBody(xhr));
} }
option.onSuccess(getBody(xhr)) option.onSuccess(getBody(xhr));
} };
xhr.open('post', action, true) xhr.open("post", action, true);
if ('withCredentials' in xhr) { if ("withCredentials" in xhr) {
xhr.withCredentials = true xhr.withCredentials = true;
} }
const headers = option.headers || {} const headers = option.headers || {};
if (headers['X-Requested-With'] !== null) { if (headers["X-Requested-With"] !== null) {
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest') xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
} }
for (const item in headers) { for (const item in headers) {
if (headers.hasOwnProperty(item) && headers[item] !== null) { if (headers.hasOwnProperty(item) && headers[item] !== null) {
xhr.setRequestHeader(item, headers[item]) xhr.setRequestHeader(item, headers[item]);
} }
} }
xhr.send(formData) xhr.send(formData);
} }
import Cookie from 'js-cookie' import Cookie from "js-cookie";
export default { export default {
set: function (name, value) { Cookie.set(name, value) }, set: function(name, value) {
get: function (name) { Cookie.set(name, value);
return Cookie.get(name)
}, },
remove: function (name) { Cookie.remove(name) } get: function(name) {
} return Cookie.get(name);
},
remove: function(name) {
Cookie.remove(name);
}
};
import axios from 'axios' import axios from "axios";
import Promise from './promise.service.js' import Promise from "./promise.service.js";
import { Notice } from 'iview' import { Notice } from "iview";
import Vue from 'vue' import Vue from "vue";
import router from '../router/index.js' import router from "../router/index.js";
import store from '../store' import store from "../store";
var instance = axios.create({}) var instance = axios.create({});
instance.defaults.timeout = 3600000 instance.defaults.timeout = 3600000;
instance.defaults.withCredentials = true instance.defaults.withCredentials = true;
instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded' instance.defaults.headers.post["Content-Type"] =
instance.defaults.headers['X-Requested-With'] = 'XMLHttpRequest' "application/x-www-form-urlencoded";
let needLoadingRequestCount = 0 instance.defaults.headers["X-Requested-With"] = "XMLHttpRequest";
function startLoading () { let needLoadingRequestCount = 0;
store.state.loading = true function startLoading() {
store.state.loading = true;
} }
function endLoading () { function endLoading() {
store.state.loading = false store.state.loading = false;
} }
function showFullScreenLoading () { function showFullScreenLoading() {
if (needLoadingRequestCount === 0) { if (needLoadingRequestCount === 0) {
startLoading() startLoading();
} }
needLoadingRequestCount++ needLoadingRequestCount++;
} }
function tryHideFullScreenLoading () { function tryHideFullScreenLoading() {
if (needLoadingRequestCount <= 0) return if (needLoadingRequestCount <= 0) return;
needLoadingRequestCount-- needLoadingRequestCount--;
if (needLoadingRequestCount === 0) { if (needLoadingRequestCount === 0) {
setTimeout(() => { setTimeout(() => {
endLoading() endLoading();
}, 200) }, 200);
} }
} }
const needLoading = ['resume/findListByQueryVO', 'sendMail/sendEmailTemplate', 'resume/forwardResume', 'interview/findListByQueryVO', 'resume/delete'] const needLoading = [
instance.interceptors.request.use(function (config) { "resume/findListByQueryVO",
"sendMail/sendEmailTemplate",
"resume/forwardResume",
"interview/findListByQueryVO",
"resume/delete"
];
instance.interceptors.request.use(
function(config) {
// 在发送请求之前做些什么 // 在发送请求之前做些什么
if (!config.headers['Content-Type']) { if (!config.headers["Content-Type"]) {
config.headers['Content-Type'] = 'application/x-www-form-urlencoded' config.headers["Content-Type"] = "application/x-www-form-urlencoded";
} }
const url = config.url.split('api/')[1] const url = config.url.split("api/")[1];
const headers = config.headers const headers = config.headers;
if (headers.status != 'init' && needLoading.includes(url)) { if (headers.status != "init" && needLoading.includes(url)) {
showFullScreenLoading() showFullScreenLoading();
} }
delete headers.status delete headers.status;
return config return config;
}, function (error) { },
function(error) {
// 对请求错误做些什么 // 对请求错误做些什么
return Promise.reject(error) return Promise.reject(error);
}) }
instance.interceptors.response.use(function (response) { );
instance.interceptors.response.use(
function(response) {
// 在发送请求之前做些什么 // 在发送请求之前做些什么
const errorInfo = { const errorInfo = {
900: 'cookie已失效,请重新登录', 900: "cookie已失效,请重新登录",
901: '', 901: "",
902: '您的账号已在其他地方登录,如不是您个人操作,请及时修改密码' 902: "您的账号已在其他地方登录,如不是您个人操作,请及时修改密码"
} };
tryHideFullScreenLoading() tryHideFullScreenLoading();
if (response.status >= 200 && response.status < 300) { if (response.status >= 200 && response.status < 300) {
const code = response.data && response.data.body && response.data.body.code || '' const code =
if (code == '900' || code == '901' || code == '902') { (response.data && response.data.body && response.data.body.code) || "";
if (!store.state.cookieTips && code != '901') { if (code == "900" || code == "901" || code == "902") {
store.dispatch('cookieTipsShow', true) if (!store.state.cookieTips && code != "901") {
store.dispatch("cookieTipsShow", true);
Notice.error({ Notice.error({
render: (h) => { render: h => {
return h('div', { return h(
"div",
{
style: { style: {
paddingRight: '5px', paddingRight: "5px",
fontSize: '14px', fontSize: "14px",
lineHeight: '20px', lineHeight: "20px",
color: '#17233d' color: "#17233d"
} }
}, errorInfo[code]) },
errorInfo[code]
);
} }
}) });
setTimeout(() => { setTimeout(() => {
store.dispatch('cookieTipsHide', false) store.dispatch("cookieTipsHide", false);
}, 2000) }, 2000);
} }
router.replace({ name: 'login' }) router.replace({ name: "login" });
} }
if (response.data.success) { if (response.data.success) {
return Promise.resolve(response) return Promise.resolve(response);
} else { } else {
return Promise.resolve(response) return Promise.resolve(response);
} }
} else { } else {
// return Promise.resolve(response); // return Promise.resolve(response);
} }
return response return response;
}, error => { },
tryHideFullScreenLoading() error => {
tryHideFullScreenLoading();
// Notice.error({desc:`${error.response.data.body.message}`}) // Notice.error({desc:`${error.response.data.body.message}`})
}) }
export default instance );
export default instance;
// export default axios // export default axios
import localstorage from './localstorage.service.js' import localstorage from "./localstorage.service.js";
export default { export default {
init: function (router) { init: function(router) {
router.beforeEach((to, form, next) => { router.beforeEach((to, form, next) => {
const token = localstorage.get('token') const token = localstorage.get("token");
if (to.meta && !to.meta.allowBack && window.history && window.history.pushState) { // 登录页面不能后退 if (
history.pushState(null, null, document.URL) to.meta &&
!to.meta.allowBack &&
window.history &&
window.history.pushState
) {
// 登录页面不能后退
history.pushState(null, null, document.URL);
} }
if (to.name == 'login' || to.name == 'update' || to.name == 'sweepCode' || to.name == 'resumeDetail' || to.name == 'pdfdetail') { if (
next() to.name == "login" ||
return to.name == "update" ||
to.name == "sweepCode" ||
to.name == "resumeDetail" ||
to.name == "pdfdetail"
) {
next();
return;
} }
if (!token) { if (!token) {
window.location.href = `${window.location.origin}/login` window.location.href = `${window.location.origin}/login`;
return return;
} }
next() next();
}) });
} }
} };
export default { export default {
set: function (name, value) { window.localStorage.setItem(name, value) }, set: function(name, value) {
get: function (name) { window.localStorage.setItem(name, value);
return window.localStorage.getItem(name)
}, },
remove: function (name) { window.localStorage.removeItem(name) } get: function(name) {
} return window.localStorage.getItem(name);
},
remove: function(name) {
window.localStorage.removeItem(name);
}
};
module.exports = require('es6-promise') module.exports = require("es6-promise");
export function _debounce (fn, delay) { export function _debounce(fn, delay) {
let timer = null let timer = null;
delay = delay || 200 delay = delay || 200;
return function () { return function() {
const args = arguments const args = arguments;
if (timer) { if (timer) {
clearTimeout(timer) clearTimeout(timer);
} }
timer = setTimeout(function () { timer = setTimeout(
timer = null function() {
fn.apply(this, args) timer = null;
}.bind(this), delay) fn.apply(this, args);
} }.bind(this),
delay
);
};
} }
export function _throttle (fn, interval) { export function _throttle(fn, interval) {
let last = null let last = null;
let timer = null let timer = null;
interval = interval || 200 interval = interval || 200;
return function () { return function() {
const self = this const self = this;
const args = arguments const args = arguments;
const now = +new Date() const now = +new Date();
if (last && now - last < interval) { if (last && now - last < interval) {
clearTimeout(timer) clearTimeout(timer);
timer = setTimeout(function () { timer = setTimeout(function() {
last = now last = now;
fn.apply(self, args) fn.apply(self, args);
}, interval) }, interval);
} else { } else {
last = now last = now;
fn.apply(self, args) fn.apply(self, args);
}
} }
};
} }
export function emailValidata (rule, value, callback) { export function emailValidata(rule, value, callback) {
const field = rule.field const field = rule.field;
const reg = rule.pattern const reg = rule.pattern;
switch (field) { switch (field) {
case 'receiveEmail': case "receiveEmail":
if (!value) { if (!value) {
this.tip = true this.tip = true;
this.isDisable = false this.isDisable = false;
callback(new Error('收件人不能为空')) callback(new Error("收件人不能为空"));
} else if (rule.pattern && !rule.pattern.test(value)) { } else if (rule.pattern && !rule.pattern.test(value)) {
this.tip = true this.tip = true;
this.isDisable = false this.isDisable = false;
callback(new Error('请输入正确收件人地址')) callback(new Error("请输入正确收件人地址"));
} else { } else {
this.tip = false this.tip = false;
this.isDisable = true this.isDisable = true;
callback() callback();
} }
break break;
case 'theme': case "theme":
if (!value) { if (!value) {
this.isDisable = false this.isDisable = false;
callback(new Error('主题能为空')) callback(new Error("主题能为空"));
} else { } else {
this.isDisable = true this.isDisable = true;
callback() callback();
} }
break break;
case 'copyname': case "copyname":
if (value && reg && !reg.test(value)) { if (value && reg && !reg.test(value)) {
this.isDisable = false this.isDisable = false;
callback(new Error('请输入正确抄送地址')) callback(new Error("请输入正确抄送地址"));
} else { } else {
this.isDisable = true this.isDisable = true;
callback() callback();
} }
break break;
case 'UpdateOWER': case "UpdateOWER":
if (!value) { if (!value) {
this.isDisable = false this.isDisable = false;
callback(new Error('邀约人不能为空')) callback(new Error("邀约人不能为空"));
} else { } else {
this.isDisable = true this.isDisable = true;
callback() callback();
} }
break break;
case 'UpdateTIME': case "UpdateTIME":
if (!value) { if (!value) {
this.isDisable = false this.isDisable = false;
callback(new Error('面试时间不能为空')) callback(new Error("面试时间不能为空"));
} else { } else {
this.isDisable = true this.isDisable = true;
callback() callback();
} }
break break;
case 'UpdateVIEW': case "UpdateVIEW":
if (!value) { if (!value) {
this.isDisable = false this.isDisable = false;
callback(new Error('面试官不能为空')) callback(new Error("面试官不能为空"));
} else { } else {
this.isDisable = true this.isDisable = true;
callback() callback();
} }
break break;
default: default:
callback() callback();
break break;
} }
} }
export const emailRule = /^((([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6}\;))*(([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})))$/ export const emailRule = /^((([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6}\;))*(([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})))$/;
export function vidte (rule, value, callback) { export function vidte(rule, value, callback) {
if (this.emailMassage == true) { if (this.emailMassage == true) {
callback(new Error('你尚未选择简历,请先选择简历')) callback(new Error("你尚未选择简历,请先选择简历"));
} else if (this.allEmailVilitor == true) { } else if (this.allEmailVilitor == true) {
callback(new Error('不能选择多份简历,请选择单份简历')) callback(new Error("不能选择多份简历,请选择单份简历"));
} else { } else {
callback() callback();
} }
} }
export function validator (rule, value, callback) { export function validator(rule, value, callback) {
if (!value) this.$Notice.warning({ title: '提示', desc: '请输入您要通知的面试官' }) if (!value)
callback() this.$Notice.warning({ title: "提示", desc: "请输入您要通知的面试官" });
callback();
} }
// // action.js // // action.js
import * as types from './muationsType' import * as types from "./muationsType";
const action = { const action = {
cookieTipsShow ({ commit }, value) { cookieTipsShow({ commit }, value) {
commit(types.COOKIE_SHOW, value) commit(types.COOKIE_SHOW, value);
}, },
addInterviewee ({ commit }, value) { addInterviewee({ commit }, value) {
commit(types.ADD_INTERVIEWEE, value) commit(types.ADD_INTERVIEWEE, value);
}, },
removeInterviewee ({ commit }, value) { removeInterviewee({ commit }, value) {
commit(types.REMOVE_INTERVIEWEE, value) commit(types.REMOVE_INTERVIEWEE, value);
}, },
clearInterviewee ({ commit }, value) { clearInterviewee({ commit }, value) {
commit(types.CLEAR_INTERVIEWEE, value) commit(types.CLEAR_INTERVIEWEE, value);
} }
} };
export default action export default action;
import Vuex from 'vuex' import Vuex from "vuex";
import Vue from 'vue' import Vue from "vue";
import mutations from './mutations.js' import mutations from "./mutations.js";
import actions from './actions.js' import actions from "./actions.js";
Vue.use(Vuex) Vue.use(Vuex);
const state = { const state = {
cookieTips: false, cookieTips: false,
interviewee: [], interviewee: [],
channelInterviewee: [], channelInterviewee: [],
loading: false loading: false
} };
export default new Vuex.Store({ export default new Vuex.Store({
mutations, mutations,
actions, actions,
state state
}) });
export const COOKIE_SHOW = 'COOKIE_SHOW' export const COOKIE_SHOW = "COOKIE_SHOW";
export const COOKIE_HIDE = 'COOKIE_HIDE' export const COOKIE_HIDE = "COOKIE_HIDE";
export const ADD_INTERVIEWEE = 'ADD_INTERVIEWEE' export const ADD_INTERVIEWEE = "ADD_INTERVIEWEE";
export const REMOVE_INTERVIEWEE = 'REMOVE_INTERVIEWEE' export const REMOVE_INTERVIEWEE = "REMOVE_INTERVIEWEE";
export const CLEAR_INTERVIEWEE = 'CLEAR_INTERVIEWEE' export const CLEAR_INTERVIEWEE = "CLEAR_INTERVIEWEE";
import { COOKIE_SHOW, COOKIE_HIDE, ADD_INTERVIEWEE, REMOVE_INTERVIEWEE, CLEAR_INTERVIEWEE } from './muationsType' import {
COOKIE_SHOW,
COOKIE_HIDE,
ADD_INTERVIEWEE,
REMOVE_INTERVIEWEE,
CLEAR_INTERVIEWEE
} from "./muationsType";
export default { export default {
[COOKIE_SHOW] (state, value) { [COOKIE_SHOW](state, value) {
state.cookieTips = value || true state.cookieTips = value || true;
}, },
[COOKIE_HIDE] (state, value) { [COOKIE_HIDE](state, value) {
state.cookieTips = value || false state.cookieTips = value || false;
}, },
[ADD_INTERVIEWEE] (state, object) { [ADD_INTERVIEWEE](state, object) {
let flag = false let flag = false;
const data = object.data const data = object.data;
if (object.type == 'channel') { if (object.type == "channel") {
console.log(data) console.log(data);
state.channelInterviewee.map(item => { state.channelInterviewee.map(item => {
if (data && item.id == data.id) { if (data && item.id == data.id) {
flag = true flag = true;
} }
}) });
if (!flag) { if (!flag) {
state.channelInterviewee.push(data) state.channelInterviewee.push(data);
} }
} else { } else {
state.interviewee.map(item => { state.interviewee.map(item => {
if (data && item.id == data.id) { if (data && item.id == data.id) {
flag = true flag = true;
} }
}) });
if (!flag) { if (!flag) {
state.interviewee.push(data) state.interviewee.push(data);
} }
} }
}, },
[REMOVE_INTERVIEWEE] (state, object) { [REMOVE_INTERVIEWEE](state, object) {
const data = object.data const data = object.data;
if (object.type == 'channel') { if (object.type == "channel") {
state.channelInterviewee.map((item, index) => { state.channelInterviewee.map((item, index) => {
if (data && item.id == data.id) { if (data && item.id == data.id) {
state.channelInterviewee.splice(index, 1) state.channelInterviewee.splice(index, 1);
} }
}) });
} else { } else {
state.interviewee.map((item, index) => { state.interviewee.map((item, index) => {
if (data && item.id == data.id) { if (data && item.id == data.id) {
state.interviewee.splice(index, 1) state.interviewee.splice(index, 1);
} }
}) });
} }
}, },
[CLEAR_INTERVIEWEE] (state, object) { [CLEAR_INTERVIEWEE](state, object) {
const type = object.type const type = object.type;
if (type == 'channel') { if (type == "channel") {
state.channelInterviewee = [] state.channelInterviewee = [];
console.log('===') console.log("===");
} else { } else {
state.interviewee = [] state.interviewee = [];
} }
} }
} };
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment