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

添加prettier

parent 680dfdeb
......@@ -9,13 +9,16 @@ module.exports = {
extends: [
'plugin:vue/essential',
'standard',
'prettier',
],
plugins: [
'vue',
'prettier',
],
rules: {
'prettier/prettier': 'error',
// 防止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 @@
"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": {
"version": "14.1.0",
"resolved": "http://npmprivate.quantgroups.com/eslint-config-standard/-/eslint-config-standard-14.1.0.tgz",
......@@ -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": {
"version": "4.2.1",
"resolved": "http://npmprivate.quantgroups.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz",
......@@ -4847,6 +4873,12 @@
"resolved": "http://npmprivate.quantgroups.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
"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": {
"version": "2.1.0",
"resolved": "http://npmprivate.quantgroups.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
......@@ -10641,6 +10673,15 @@
"integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
"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": {
"version": "2.1.1",
"resolved": "http://npmprivate.quantgroups.com/pretty-error/-/pretty-error-2.1.1.tgz",
......
<template>
<div id="app" :class="appClass">
<router-view/>
<router-view />
</div>
</template>
<script>
window.onload = function () {
document.addEventListener('touchstart', function (event) {
window.onload = function() {
document.addEventListener("touchstart", function(event) {
if (event.touches.length > 1) {
event.preventDefault()
event.preventDefault();
}
})
document.addEventListener('gesturestart', function (event) {
event.preventDefault()
})
}
});
document.addEventListener("gesturestart", function(event) {
event.preventDefault();
});
};
export default {
name: 'App',
data () {
name: "App",
data() {
return {
appClass: 'pc'
}
appClass: "pc"
};
},
created: function () {
created: function() {
if (document.documentElement.clientWidth <= 640) {
this.appClass = 'mobile'
this.appClass = "mobile";
}
}
}
};
</script>
<style>
#app{
#app {
position: absolute;
top: 0;
bottom: 0;
width: 100%;
cursor:auto;
cursor: auto;
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;
-moz-osx-font-smoothing: grayscale;
color: #2c3e50;
......@@ -47,7 +47,6 @@ export default {
-moz-user-select: text !important; /*火狐*/
-ms-user-select: text !important; /*IE10*/
user-select: text !important;
}
.pc {
height: 100%;
......@@ -58,27 +57,24 @@ export default {
min-width: unset;
min-height: unset;
}
::-webkit-scrollbar
{
::-webkit-scrollbar {
width: 8px;
height: 8px;
background-color: #F5F5F5;
background-color: #f5f5f5;
}
/*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track
{
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
border-radius: 10px;
background-color: #Eff4f6;
background-color: #eff4f6;
}
/*定义滑块 内阴影+圆角*/
::-webkit-scrollbar-thumb
{
::-webkit-scrollbar-thumb {
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);
background-color: #BDBDBD;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
background-color: #bdbdbd;
}
/* .ivu-btn-primary{
background: #0092FF!important
......
import axios from '../service/http.service'
import {
sapi
} from '../config'
import qs from 'qs'
import axios from "../service/http.service";
import { sapi } from "../config";
import qs from "qs";
// 获取个人信息
export function getpersonMassage (params) {
export function getpersonMassage(params) {
// params=qs.stringify(params)
return axios.get(`${sapi}/api/login/me`, params, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
// 用户退出
export function loginOUT () {
export function loginOUT() {
// params=qs.stringify(params)
return axios.get(`${sapi}/api/login/logout`, {
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, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
// 通过渠道机简历信息
export function getChannelMassage () {
export function getChannelMassage() {
return axios.get(`${sapi}/api/resume/getSourceList`, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
// 判断是否为超级管理员
export function judeAdmin () {
export function judeAdmin() {
return axios.get(`${sapi}/api/user/isAdmin`, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
import axios from '../service/http.service'
import {
sapi
} from '../config'
import qs from 'qs'
import axios from "../service/http.service";
import { sapi } from "../config";
import qs from "qs";
// 更改约面信息
export function changeinterviewMassage (parmars) {
export function changeinterviewMassage(parmars) {
return axios.post(`${sapi}/api/resumeInterview/update`, parmars, {
headers: {
'Content-Type': 'application/json;'
"Content-Type": "application/json;"
}
})
});
}
// 重启面试
export function oppenInterview (tid, tstatus) {
console.log(tid, tstatus)
export function oppenInterview(tid, tstatus) {
console.log(tid, tstatus);
return axios.post(`${sapi}/api/resumeFlow/reset/${tid}/${tstatus}`, {
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}`, {
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, {
headers: {
'Content-Type': 'application/json;',
'X-Requested-With': 'XMLHttpRequest',
"Content-Type": "application/json;",
"X-Requested-With": "XMLHttpRequest",
status
}
})
});
}
// 查看简历详情页
export function seedetail (parmars) {
export function seedetail(parmars) {
return axios.get(`${sapi}/api/html/get/${parmars.uid}`, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
// 面试官查询
export function Serchinterviewor () {
return axios.get(`${sapi}/api/interview/findInterviewerList`)
export function Serchinterviewor() {
return axios.get(`${sapi}/api/interview/findInterviewerList`);
}
// 邀约人查询
export function SerchInvitationOwer () {
export function SerchInvitationOwer() {
return axios.post(`${sapi}/api/interview/findInviterList`, {
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, {
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}`, {
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}`, {
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}`, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
import axios from '../service/http.service'
import {
sapi
} from '../config'
import qs from 'qs'
import axios from "../service/http.service";
import { sapi } from "../config";
import qs from "qs";
// 登录
export function login (params) {
export function login(params) {
// params=qs.stringify(params)
return axios.post(`${sapi}/api/login/doLogin`, params, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
// 修改密码
export function updatePsd (params) {
export function updatePsd(params) {
// params=qs.stringify(params)
return axios.post(`${sapi}/api/login/modifyPassword`, params, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
import axios from '../service/http.service'
import {
sapi
} from '../config'
import qs from 'qs'
import axios from "../service/http.service";
import { sapi } from "../config";
import qs from "qs";
// 查询简历列表
export function serchList (parmars) {
export function serchList(parmars) {
return axios.post(`${sapi}/api/resume/findList`, parmars, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
// 下载简历(单条)
export function downloadone (parmars) {
parmars = qs.stringify(parmars)
export function downloadone(parmars) {
parmars = qs.stringify(parmars);
return axios.post(`${sapi}/api/resumeFile/download/formatted/one`, parmars, {
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, {
headers: {
'Content-Type': 'application/json',
"Content-Type": "application/json",
status
}
})
});
}
// 查看简历详情页
export function seedetail (parmars) {
export function seedetail(parmars) {
return axios.get(`${sapi}/api/html/get/${parmars.uid}`, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
// 简历pass
export function PASS (parmars) {
return axios.post(`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`, '', {
export function PASS(parmars) {
return axios.post(
`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`,
"",
{
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
}
})
);
}
// 待处理
export function TODORes (parmars) {
return axios.post(`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`, '', {
export function TODORes(parmars) {
return axios.post(
`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`,
"",
{
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
}
})
);
}
// 备选
export function OPTION (parmars) {
return axios.post(`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`, '', {
export function OPTION(parmars) {
return axios.post(
`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`,
"",
{
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), {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
// 单条下载简历
export function downloadOne (parmars) {
return axios.get(`${sapi}/api/resume/download/formatted/one?resumeId=${parmars.resumeId}`, {
export function downloadOne(parmars) {
return axios.get(
`${sapi}/api/resume/download/formatted/one?resumeId=${parmars.resumeId}`,
{
headers: {
// 'Content-Type':'application/x-www-form-urlencoded'
}
})
}
);
}
// 批量下载简历
export function downloadALL () {
export function downloadALL() {
return axios.get(`${sapi}/api/resumeFile/download/formatted/compress`, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
"Content-Type": "application/x-www-form-urlencoded"
}
})
});
}
// 导出列表
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}`,
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}`,
{
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}`, {
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, {
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, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
// 修改流程状态
export function updatastatus (parmars) {
return axios.post(`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`, {
export function updatastatus(parmars) {
return axios.post(
`${sapi}/api/resumeFlow/uploadStatus/${parmars.id}/${parmars.status}`,
{
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
}
);
}
// 获取邮件模板
export function getEmailMoo () {
export function getEmailMoo() {
return axios.post(`${sapi}/api/emailTemplate/getAllTemplateList`, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
// 根据获取id邮件模板内容
export function getEmailContent (parmars) {
export function getEmailContent(parmars) {
return axios.post(`${sapi}/api/emailTemplate/loadTemplate`, parmars, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
// 上传图片
export function uploadimage () {
export function uploadimage() {
return axios.get(`${sapi}/api/ckeditor/uploadImage`, {
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, {
headers: {
'Content-Type': 'multipart/form-data'
"Content-Type": "multipart/form-data"
// 'Content-Disposition':'multipart/form-data'
// 'Content-Type':'application/json'
}
})
});
}
export function findCompanyEmailByKey (key) { // 公司通讯录
return axios.get(`${sapi}/api/companyEmail/findCompanyEmailByKey?key=${key}`)
export function findCompanyEmailByKey(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, {
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}`, {
responseType: 'arraybuffer',
responseType: "arraybuffer",
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
// 是否展示原件的PDF
export function isShowPDF (parmars) {
export function isShowPDF(parmars) {
return axios.get(`${sapi}/api/resume/isShowOriPdf/${parmars.uid}`, {
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}`, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
// 获取职位列表
export function getlist (parmars) {
return axios.get(`${sapi}/api/resume/findPositionList?optSourceCode=${parmars.optSourceCode}`, {
export function getlist(parmars) {
return axios.get(
`${sapi}/api/resume/findPositionList?optSourceCode=${parmars.optSourceCode}`,
{
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
}
})
);
}
import axios from '../service/http.service'
import {
sapi
} from '../config'
import qs from 'qs'
import axios from "../service/http.service";
import { sapi } from "../config";
import qs from "qs";
// 账号列表查询
export function queryaccountList (params) {
export function queryaccountList(params) {
return axios.post(`${sapi}/api/user/findList`, params, {
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, {
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}`, {
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), {
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}`, {
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, {
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, {
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}`, {
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, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
// 批量解绑邮箱
export function UntyingAll (UntyingAllARR) {
return axios.post(`${sapi}/api/email/unbind/batch`, JSON.stringify(UntyingAllARR), {
export function UntyingAll(UntyingAllARR) {
return axios.post(
`${sapi}/api/email/unbind/batch`,
JSON.stringify(UntyingAllARR),
{
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
}
);
}
// 获取二维码
export function getErcode () {
export function getErcode() {
return axios.get(`${sapi}/api/qrCode/getInterviewQrcode`, {
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, {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
import axios from '../service/http.service'
import {
sapi
} from '../config'
import qs from 'qs'
import axios from "../service/http.service";
import { sapi } from "../config";
import qs from "qs";
// 提交应聘登记表
export function submitMassage (params) {
export function submitMassage(params) {
// params=qs.stringify(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 {
sapi
} from '../config'
import qs from 'qs'
import axios from "../service/http.service";
import { sapi } from "../config";
import qs from "qs";
// 获取上传批次号
export function getuploadNumber () {
export function getuploadNumber() {
// params=qs.stringify(params)
return axios.get(`${sapi}/api/resume/upload/batchNum`, {
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, {
headers: {
// 'Content-Type':'multipart/form-data',
......@@ -21,29 +19,29 @@ export function uploadfile (parmars) {
contentType: false,
async: false
}
})
});
}
// 查询上传列表记录
export function serchList (parmars) {
export function serchList(parmars) {
return axios.post(`${sapi}/api/resume/upload/history`, parmars, {
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}`, {
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), {
headers: {
'Content-Type': 'application/json'
"Content-Type": "application/json"
}
})
});
}
......@@ -71,6 +71,4 @@ export default {
}
</script>
<style lang="less" rel="stylesheet/less" scoped>
</style>
<style lang="less" rel="stylesheet/less" scoped></style>
<template>
<template>
<div>
<!-- bidirectional data binding(双向数据绑定) -->
<Modal v-model='modal' :fullscreen='fullscreen'>
<Input v-model='value'></Input>
<editor @getValue='getInfo' :uploadUrl='uploadUrl' :value='value' height='400px'></editor>
<div slot='footer'>
<Button @click='getInfo'>获取内容</Button>
<Modal v-model="modal" :fullscreen="fullscreen">
<Input v-model="value"></Input>
<editor
@getValue="getInfo"
:uploadUrl="uploadUrl"
:value="value"
height="400px"
></editor>
<div slot="footer">
<Button @click="getInfo">获取内容</Button>
</div>
</Modal>
<Form ref="formInline" :model="formInline" :rules="ruleInline" inline>
......@@ -16,56 +20,73 @@
</Input>
</FormItem>
<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>
</Input>
</FormItem>
<FormItem>
<Button type="primary" @click="handleSubmit('formInline')">Signin</Button>
<Button type="primary" @click="handleSubmit('formInline')"
>Signin</Button
>
</FormItem>
</Form>
</div>
</template>
</template>
<script>
import editor from './ckeditor.vue'
import { sapi } from '../config/index.js'
import localStorage from '../service/localstorage.service.js'
import editor from "./ckeditor.vue";
import { sapi } from "../config/index.js";
import localStorage from "../service/localstorage.service.js";
export default {
data () {
data() {
return {
modal: true,
fullscreen: true,
content: '<h2>I am Example</h2>',
content1: '<h2>I am Example</h2>',
uploadUrl: `${sapi}/api/ckeditor/uploadImage?token=${localStorage.get('token')}&&backUrl=/getimage`,
value: '22',
content: "<h2>I am Example</h2>",
content1: "<h2>I am Example</h2>",
uploadUrl: `${sapi}/api/ckeditor/uploadImage?token=${localStorage.get(
"token"
)}&&backUrl=/getimage`,
value: "22",
editorOption: {
// some quill options
},
formInline: {
user: '',
password: ''
user: "",
password: ""
},
ruleInline: {
user: [
{
required: false,
message: 'Please fill in the user name',
trigger: 'blur',
message: "Please fill in the user name",
trigger: "blur",
pattern: /^1[3456789]\d{9}$/,
validator: function (rule, value, call) {
console.log(rule, value)
return call(new Error())
validator: function(rule, value, call) {
console.log(rule, value);
return call(new Error());
}
}
],
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: {},
components: {
......@@ -74,10 +95,10 @@ export default {
// manually control the data synchronization
// 如果需要手动控制数据同步,父组件需要显式地处理changed事件
methods: {
getInfo (value) {
console.log(value)
getInfo(value) {
console.log(value);
},
handleSubmit (name) {
handleSubmit(name) {
// this.$refs[name].validate((valid) => {
// if (valid) {
// this.$Message.success('Success!');
......@@ -85,15 +106,12 @@ export default {
// this.$Message.error('Fail!');
// }
// })
this.$refs[name].validateField('user', (error) => {
console.log('------', error)
})
this.$refs[name].validateField("user", error => {
console.log("------", error);
});
}
},
computed: {
},
mounted () {
}
}
computed: {},
mounted() {}
};
</script>
......@@ -2,24 +2,30 @@
<div></div>
</template>
<script>
function GetQueryString (name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i')
var r = window.location.search.substr(1).match(reg) // 获取url中"?"符后的字符串并正则匹配
var context = ''
if (r != null) { context = r[2] }
reg = null
r = null
return context == null || context == '' || context == 'undefined' ? '' : decodeURIComponent(context)
function GetQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg); // 获取url中"?"符后的字符串并正则匹配
var context = "";
if (r != null) {
context = r[2];
}
reg = null;
r = null;
return context == null || context == "" || context == "undefined"
? ""
: decodeURIComponent(context);
}
export default {
data () {
return {}
data() {
return {};
},
mounted () {
console.log(777)
window.parent.CKEDITOR.tools.callFunction(GetQueryString('CKEditorFuncNum'), GetQueryString('ImageUrl'), GetQueryString('Message'))
mounted() {
console.log(777);
window.parent.CKEDITOR.tools.callFunction(
GetQueryString("CKEditorFuncNum"),
GetQueryString("ImageUrl"),
GetQueryString("Message")
);
}
}
};
</script>
<template>
<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;">
<img src="http://xyqbui.lkbang.net/image/homelogo.png" alt="" 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=="账户管理")'>
<img
src="http://xyqbui.lkbang.net/image/homelogo.png"
alt=""
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">
<Icon :type="menu.icon" style="font-size:20px;font-weight:bold"/>
{{menu.item}}
<Icon :type="menu.icon" style="font-size:20px;font-weight:bold" />
{{ menu.item }}
</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>
</template>
</Menu>
......@@ -18,16 +39,26 @@
<Col span="21" class="content" style="width:83%;height:100%;">
<Row class="header" style="height:50px;">
<Col span="20">
<Menu mode="horizontal" :active-name="levelOneName" @on-select="selectMenu">
<MenuItem v-for="menu in menuList" :name="menu.name" :key="menu.name" >
{{menu.item}}
<Menu
mode="horizontal"
:active-name="levelOneName"
@on-select="selectMenu"
>
<MenuItem
v-for="menu in menuList"
:name="menu.name"
:key="menu.name"
>
{{ menu.item }}
</MenuItem>
</Menu>
</Col>
<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 span="1" class="sign-out" >
<Col span="1" class="sign-out">
<a @click="loginOut" style="float:right">退出</a>
</Col>
</Row>
......@@ -38,131 +69,148 @@
</Row>
</template>
<script>
import { getpersonMassage, loginOUT, 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'
import {
getpersonMassage,
loginOUT,
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 {
data () {
data() {
return {
massage: '',
massage: "",
isAdmin: false,
arr: [],
biaoshi: '',
biaoshi: "",
channelARR: [],
isadmin: '',
isadmin: "",
pageindex: 0,
pageSize: 10,
condition: '',
xiabiao: '',
itemSelect: '',
type: '',
levelOneName: '1',
levelTwoName: ['1-1', '2-1', '3-1', '4-1'],
levelThreeName: '1-1-1',
condition: "",
xiabiao: "",
itemSelect: "",
type: "",
levelOneName: "1",
levelTwoName: ["1-1", "2-1", "3-1", "4-1"],
levelThreeName: "1-1-1",
menuList: [
{
name: '1',
item: '简历管理',
name: "1",
item: "简历管理",
loadMenu: true,
child: [
{
name: '1-1',
item: '全部管理',
icon: 'ios-apps-outline',
name: "1-1",
item: "全部管理",
icon: "ios-apps-outline",
child: [
{
name: '1-1-1',
item: '全部简历',
route: '/allResume'
name: "1-1-1",
item: "全部简历",
route: "/allResume"
}
]
},
{
name: '1-2',
item: '渠道简历',
icon: 'ios-list',
name: "1-2",
item: "渠道简历",
icon: "ios-list",
child: []
}]
}
]
},
{
name: '2',
item: '面试管理',
name: "2",
item: "面试管理",
child: [
{
name: '2-1',
item: '面试管理',
icon: 'ios-paper-outline',
name: "2-1",
item: "面试管理",
icon: "ios-paper-outline",
child: [
{
name: '2-1-1',
item: '全部简历',
route: '/interview'
}]
}]
name: "2-1-1",
item: "全部简历",
route: "/interview"
}
]
}
]
},
{
name: '3',
item: '上传简历',
child: [{
name: '3-1',
item: '上传简历',
icon: 'ios-cloud-upload-outline',
name: "3",
item: "上传简历",
child: [
{
name: '3-1-1',
item: '上传简历',
route: '/upload'
}]
}]
name: "3-1",
item: "上传简历",
icon: "ios-cloud-upload-outline",
child: [
{
name: "3-1-1",
item: "上传简历",
route: "/upload"
}
]
}
]
},
{
name: '4',
item: '系统管理',
name: "4",
item: "系统管理",
isAdmin: true,
child: [{
name: '4-1',
item: '账户管理',
icon: 'ios-contact-outline',
child: [
{
name: "4-1",
item: "账户管理",
icon: "ios-contact-outline",
show: true,
child: [{
name: '4-1-1',
item: '账户管理',
route: '/account'
}]
child: [
{
name: "4-1-1",
item: "账户管理",
route: "/account"
}
]
},
{
name: '4-2',
item: '邮箱管理',
icon: 'ios-mail-outline',
child: [{
name: '4-2-1',
item: '邮箱管理',
route: '/emailMange'
}]
name: "4-2",
item: "邮箱管理",
icon: "ios-mail-outline",
child: [
{
name: "4-2-1",
item: "邮箱管理",
route: "/emailMange"
}
]
},
{
name: '4-3',
item: '二维码管理',
icon: 'ios-qr-scanner',
name: "4-3",
item: "二维码管理",
icon: "ios-qr-scanner",
child: [
{
name: '4-3-1',
item: '二维码管理',
route: '/QRcode'
}]
name: "4-3-1",
item: "二维码管理",
route: "/QRcode"
}
]
}
]
}
],
childMenu: []
}
};
},
watch: {
$route (to, from) {
$route(to, from) {
if (to.params.fromInterview) {
this.getActiveName()
this.getActiveName();
}
}
},
......@@ -175,181 +223,189 @@ export default {
loading
},
methods: {
go (name) {
this.levelThreeName = name
go(name) {
this.levelThreeName = name;
this.childMenu.map(par => {
par.child.map(child => {
if (child.name == name) {
this.$router.push(child.route)
this.$router.push(child.route);
}
})
})
});
});
},
async selectMenu (name, refesh) {
async selectMenu(name, refesh) {
// // refesh是否为刷新页面
this.levelOneName = name
const menus = this.menuList.filter(v => name === v.name)
this.childMenu = menus.length > 0 ? menus[0].child : this.menuList[0].child
if (!refesh) { // 点击菜单默认展示第一个菜单
this.levelTwoName = []
const initName = this.getInitName(name, menus[0])
this.levelTwoName.push(initName.levelTwoName)
this.levelThreeName = initName.levelThreeName
this.levelOneName = name;
const menus = this.menuList.filter(v => name === v.name);
this.childMenu =
menus.length > 0 ? menus[0].child : this.menuList[0].child;
if (!refesh) {
// 点击菜单默认展示第一个菜单
this.levelTwoName = [];
const initName = this.getInitName(name, menus[0]);
this.levelTwoName.push(initName.levelTwoName);
this.levelThreeName = initName.levelThreeName;
}
if (menus[0].loadMenu) { // 简历管理模块需要加载渠道简历
await this.getChannelMenu()
if (menus[0].loadMenu) {
// 简历管理模块需要加载渠道简历
await this.getChannelMenu();
}
if (refesh && this.$route.path.indexOf('channel') > -1) {
this.levelThreeName = this.$route.path.split('/')[2]
if (refesh && this.$route.path.indexOf("channel") > -1) {
this.levelThreeName = this.$route.path.split("/")[2];
}
this.$nextTick(() => {
this.$refs.subMenu.updateOpened()
this.$refs.subMenu.updateActiveName()
})
this.go(this.levelThreeName)
this.$refs.subMenu.updateOpened();
this.$refs.subMenu.updateActiveName();
});
this.go(this.levelThreeName);
},
// 获取个人信息
getmassage () {
getmassage() {
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 => {
if (res.data.success == true) {
localstorage.remove('token')
localstorage.remove('isADMIN')
this.$router.replace('/login')
localstorage.remove("token");
localstorage.remove("isADMIN");
this.$router.replace("/login");
}
})
});
},
getChannelMenu () {
this.menuList[0].child[1].child = []
getChannelMenu() {
this.menuList[0].child[1].child = [];
return getChannelMassage().then(res => {
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) => {
var obj = {
name: `${item.sourceName}`,
item: item.sourceName,
route: `/channel/${item.sourceCode}?handUpload=${item.handUpload == null ? '' : item.handUpload}`
}
this.menuList[0].child[1].child.push(obj)
})
})
route: `/channel/${item.sourceCode}?handUpload=${
item.handUpload == null ? "" : item.handUpload
}`
};
this.menuList[0].child[1].child.push(obj);
});
});
},
getActiveName (change) {
const pathName = this.$route.path
if (pathName.indexOf('channel') > -1) {
this.levelOneName = '1'
this.levelThreeName = pathName.split('/')[2]
this.levelTwoName = []
this.levelTwoName.push('1-2')
this.selectMenu(this.levelOneName, 'refresh')
return
getActiveName(change) {
const pathName = this.$route.path;
if (pathName.indexOf("channel") > -1) {
this.levelOneName = "1";
this.levelThreeName = pathName.split("/")[2];
this.levelTwoName = [];
this.levelTwoName.push("1-2");
this.selectMenu(this.levelOneName, "refresh");
return;
}
this.menuList.map(parent => {
parent.child.map(child => {
child.child.map(grandson => {
if (grandson.route == pathName) {
this.levelThreeName = grandson.name
this.levelOneName = parent.name
this.levelTwoName = []
this.levelTwoName.push(child.name)
this.levelThreeName = grandson.name;
this.levelOneName = parent.name;
this.levelTwoName = [];
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 = {
levelTwoName: '',
levelThreeName: ''
}
if (isAdmin || isAdmin == undefined) { // 默认展示一级菜单
hightMenu.levelTwoName = menu.child[0].name
hightMenu.levelThreeName = menu.child[0].child[0].name
} else if (isAdmin == false) { // 展示二级菜单
hightMenu.levelTwoName = menu.child[1].name
hightMenu.levelThreeName = menu.child[1].child[0].name
levelTwoName: "",
levelThreeName: ""
};
if (isAdmin || isAdmin == undefined) {
// 默认展示一级菜单
hightMenu.levelTwoName = menu.child[0].name;
hightMenu.levelThreeName = menu.child[0].child[0].name;
} else if (isAdmin == false) {
// 展示二级菜单
hightMenu.levelTwoName = menu.child[1].name;
hightMenu.levelThreeName = menu.child[1].child[0].name;
}
return hightMenu
return hightMenu;
},
// 判断是否为超级管理员
judgeadmin () {
judgeadmin() {
judeAdmin().then(res => {
this.isAdmin = res.data.body
this.menuList[3].isAdmin = this.isAdmin
})
this.isAdmin = res.data.body;
this.menuList[3].isAdmin = this.isAdmin;
});
},
goBack () {
this.getActiveName()
goBack() {
this.getActiveName();
}
},
mounted () {
this.getmassage()
this.getActiveName()
this.judgeadmin()
mounted() {
this.getmassage();
this.getActiveName();
this.judgeadmin();
if (window.history && window.history.pushState) {
history.pushState(null, null, document.URL)
window.addEventListener('popstate', this.goBack, false)
history.pushState(null, null, document.URL);
window.addEventListener("popstate", this.goBack, false);
}
},
destroyed () {
window.removeEventListener('popstate', this.goBack, false)
destroyed() {
window.removeEventListener("popstate", this.goBack, false);
}
}
};
</script>
<style lang="less" scoped>
.home{
.home {
height: 100%;
overflow: hidden;
.aside{
.aside {
border-right: 1px solid #dcdee2;
box-shadow: #dcdee2 0 0 6px 1px;
height: 100%;
img{
img {
height: 49px;
width: 100%;
padding: 3% 28%;
}
.ivu-menu{
.ivu-menu-item{
.ivu-menu {
.ivu-menu-item {
padding-left: 49px !important;
}
}
}
.content{
.header{
.content {
.header {
display: flex;
align-items: center;height: 55px;
align-items: center;
height: 55px;
border-bottom: 1px solid #dcdee2;
line-height: 55px;
border-bottom: 1px solid rgb(220, 222, 226);
font-size: 14px;
overflow:hidden;
.sign-out{
line-height: 6%
overflow: hidden;
.sign-out {
line-height: 6%;
}
.ivu-menu{
.ivu-menu {
height: 43px;
line-height: 43px;
.ivu-menu-item{
.ivu-menu-item {
padding: 0 13px;
margin: 0 49px;
}
&:after{
&:after {
height: 0;
}
}
}
}
}
}
</style>
<template>
<div class='loadingmark'>
<div class="loadingmark">
<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)">
<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 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 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 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>
</svg>
</div>
......@@ -21,7 +55,7 @@
</template>
<script>
export default {
name: 'loading',
name: "loading",
props: {
width: {
type: Number,
......@@ -32,70 +66,94 @@ export default {
default: 80
}
},
created () {
this.viewBox = '0 0' + ' ' + (this.width + 10) + ' ' + this.height
created() {
this.viewBox = "0 0" + " " + (this.width + 10) + " " + this.height;
},
data () {
data() {
return {
viewBox: ''
viewBox: ""
};
}
}
}
};
</script>
<style lang='less' scoped>
.loadingmark{
position:absolute;
top:0px;
left:0px;
width:100%;
height:100%;
background-color: rgba(255,255,255,0.6);
<style lang="less" scoped>
.loadingmark {
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100%;
background-color: rgba(255, 255, 255, 0.6);
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
z-index: 1600;
}
.loading-audio {
}
.loading-audio {
width: 100px;
background-repeat: no-repeat;
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>');
}
.circle{
}
.circle {
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 {
from { transform: scale(0);}
50% { transform: scale(1)}
to { transform: scale(0)}
50% {
transform: scale(1);
}
.circle1{
to {
transform: scale(0);
}
}
.circle1 {
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 {
from { transform: scale(0);}
50% { transform: scale(1)}
to { transform: scale(0)}
to {
transform: scale(0);
}
.circle2{
}
.circle2 {
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 {
from { transform: scale(0);}
50% { transform: scale(1)}
to { transform: scale(0)}
to {
transform: scale(0);
}
.circle3{
}
.circle3 {
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 {
from { transform: scale(0);}
50% { transform: scale(1)}
to { transform: scale(0)}
50% {
transform: scale(1);
}
to {
transform: scale(0);
}
}
</style>
const sapi = 'http://recruitapi-ai3.liangkebang.net'
export {
sapi
}
const sapi = "http://recruitapi-ai3.liangkebang.net";
export { 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 {
sapi
}
export { sapi };
......@@ -3,60 +3,233 @@
<!-- <Spin size="large" fix v-if="spinShow" style="font-size:25px">加载中...</Spin> -->
<div class="interview-left">
<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 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
style="height:90%;float:left;width:30%;background:rgb(0,146,255);margin-left:1%;margin-top:10px"
></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 style="float:left;margin-left:1%;width:99%;overflow-y: auto;height:95%;margin-bottom:40px">
<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
style="float:left;margin-left:1%;width:99%;overflow-y: auto;height:95%;margin-bottom:40px"
>
<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">
<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 @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>
<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
@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 style="margin-top:8px;color:Grey">
<span style="margin-left:10px;display:inline-block;width:22%;">邀约人: {{item.inviterName}} </span>
<span style="margin-left:7%;display:inline-block;width:22%;">面试官: {{item.interviewerName}}</span>
<span style="float:right;margin-right:5%">面试时间:{{ item.seeTime}}</span>
<span style="margin-left:10px;display:inline-block;width:22%;"
>邀约人: {{ item.inviterName }}
</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>
</div>
<div class="contentState">
<p style="margin-top:8px">
<span style="margin-left:20px" @click="modal4=true">当前状态</span>
<span style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer" @click="Stopinterview(item.id)" v-if="item.flowStatus=='OPTION'">终止面试</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 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>
<span style="margin-left:20px" @click="modal4 = true"
>当前状态</span
>
<span
style="float:right;margin:0 20px 0 0px;color:#2d8cf0;cursor:pointer"
@click="Stopinterview(item.id)"
v-if="item.flowStatus == 'OPTION'"
>终止面试</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
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 class="nowstatus" style="margin-top:8px;color:Grey">
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='OPTION'">备选</span>
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='TO_SEE'">准备约面</span>
<span style="margin:0 20px 0 20px" v-if="item.flowStatus=='HAS_SEE'">已邀约</span>
<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'>
<span
style="margin:0 20px 0 20px"
v-if="item.flowStatus == 'OPTION'"
>备选</span
>
<span
style="margin:0 20px 0 20px"
v-if="item.flowStatus == 'TO_SEE'"
>准备约面</span
>
<span
style="margin:0 20px 0 20px"
v-if="item.flowStatus == 'HAS_SEE'"
>已邀约</span
>
<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="1" style="color:#2d8cf0">已邀约 </option>
<option value="3" style="color:#2d8cf0">邀约失败</option>
......@@ -67,151 +240,357 @@
<option value="9" style="color:#2d8cf0">已入职</option>
</select>
</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>
</p>
</div>
<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="font-size:12px;color:Grey">最后操作人|<span style="margin-left:8px;text-align:center">{{item.d}}</span></p>
<p style="color:Grey">{{item.modifyTime}}</p>
<p style="margin-top:3px">
<span
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 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 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%">
<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 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 label="邀约人:" style="margin-top:20px">
<Select 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
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>
</FormItem>
<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"
:loading="loading1" placeholder='请输入面试官全名' clearable>
<Option v-for='(item, index) in options' :key='index' :value='item.name'>{{item.name}}({{item.email}})</Option>
:loading="loading1"
placeholder="请输入面试官全名"
clearable
>
<Option
v-for="(item, index) in options"
:key="index"
:value="item.name"
>{{ item.name }}({{ item.email }})</Option
>
</Select>
</FormItem>
<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>
</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>
<!-- 操作记录弹出框 -->
<Modal
v-model="recordModal"
width='550px'
width="550px"
:footer-hide="true"
:closable='false'>
:closable="false"
>
<div>
<h2 style="text-align: center;color:black" >操作记录</h2>
<h2 style="text-align: center;color:#999999;margin-top:10px">候选人:{{toseename}}</h2>
<div v-for="(item,index) in recordList" :key="index">
<h2 style="text-align: center;color:black">操作记录</h2>
<h2 style="text-align: center;color:#999999;margin-top:10px">
候选人:{{ toseename }}
</h2>
<div v-for="(item, index) in recordList" :key="index">
<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:140px">{{item.dateTime}}</span>
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='INTERVIEW_OK'">面试合适</span>
<span style="color:#0092FF;display:inline-block;width:70px;" v-if=" item.previousState=='INTERVIEW_FAIL'">面试淘汰</span>
<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:70px;margin-left:15px;">{{
item.approveUserName
}}</span>
<span style="display:inline-block;width:140px">{{
item.dateTime
}}</span>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'INTERVIEW_OK'"
>面试合适</span
>
<span
style="color:#0092FF;display:inline-block;width:70px;"
v-if="item.previousState == 'INTERVIEW_FAIL'"
>面试淘汰</span
>
<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="color:#0092FF" v-if=" item.afterState=='INTERVIEW_OK'">面试合适</span>
<span style="color:#0092FF" v-if=" item.afterState=='INTERVIEW_FAIL'">面试淘汰</span>
<span style="color:#0092FF" v-if=" item.afterState=='END'">终止面试</span>
<span style="color:#0092FF" v-if=" item.afterState=='SEE_FAIL'">约面失败</span>
<span style="color:#0092FF" v-if=" item.afterState=='NO_ENTRY'">未入职</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>
<span style="color:#0092FF" v-if="item.afterState == 'INTERVIEW_OK'"
>面试合适</span
>
<span
style="color:#0092FF"
v-if="item.afterState == 'INTERVIEW_FAIL'"
>面试淘汰</span
>
<span style="color:#0092FF" v-if="item.afterState == 'END'"
>终止面试</span
>
<span style="color:#0092FF" v-if="item.afterState == 'SEE_FAIL'"
>约面失败</span
>
<span style="color:#0092FF" v-if="item.afterState == 'NO_ENTRY'"
>未入职</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>
</div>
</div>
<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>
</Modal>
<!-- 更改面试信息弹出框 -->
<Modal
v-model="modal2"
:closable="false"
width='400px'>
<Modal v-model="modal2" :closable="false" width="400px">
<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">
<Input v-model="formInline.UpdateOWER" :maxlength="5"/>
<Input v-model="formInline.UpdateOWER" :maxlength="5" />
</FormItem>
<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 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"
:loading="loading1" placeholder='请输入面试官全名' clearable>
<Option v-for='(item, index) in options' :key='index' :value='item.name'>{{item.name}}({{item.email}})</Option>
:loading="loading1"
placeholder="请输入面试官全名"
clearable
>
<Option
v-for="(item, index) in options"
:key="index"
:value="item.name"
>{{ item.name }}({{ item.email }})</Option
>
</Select>
</FormItem>
</Form>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal2=false'>取消</Button>
<Button type='primary' @click="changeUpdate">确定</Button>
<div slot="footer" style="text-align:center">
<Button type="primary" @click="modal2 = false">取消</Button>
<Button type="primary" @click="changeUpdate">确定</Button>
</div>
</Modal>
<!-- 终止面试弹出框 -->
<Modal
v-model="modal3"
:closable="false"
width='230px'>
<Modal v-model="modal3" :closable="false" width="230px">
<h3 style="text-align:center">提示</h3>
<p>终止面试流程后,仍可以重启流程,<br>是否确定终止该后选人的面试</p>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal3=false'>取消</Button>
<Button type='primary' @click="STOPinterview">确定</Button>
<p>终止面试流程后,仍可以重启流程,<br />是否确定终止该后选人的面试</p>
<div slot="footer" style="text-align:center">
<Button type="primary" @click="modal3 = false">取消</Button>
<Button type="primary" @click="STOPinterview">确定</Button>
</div>
</Modal>
<!-- 重启面试弹出框 -->
<Modal
v-model="modal4"
:closable="false"
width='240px'
>
<Modal v-model="modal4" :closable="false" width="240px">
<h3 style="text-align:center">提示</h3>
<p style="text-align:center">终止面试时的简历状态为: {{OPPeninterviewSTA}}
<br>请选择重启后的状态</p>
<p style="text-align:center">
终止面试时的简历状态为: {{ OPPeninterviewSTA }}
<br />请选择重启后的状态
</p>
<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="2">Pass</option>
<option value="3">备选</option>
......@@ -223,81 +602,102 @@
<option value="13">待入职</option>
</select>
</div>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal4=false'>取消</Button>
<Button type='primary' @click="OPPinterview">确定</Button>
<div slot="footer" style="text-align:center">
<Button type="primary" @click="modal4 = false">取消</Button>
<Button type="primary" @click="OPPinterview">确定</Button>
</div>
</Modal>
</div>
</template>
<script>
import moment from 'moment'
import { changeinterviewMassage, SerchList, Serchinterviewor, SerchInvitationOwer, NewAddInterview, SInterview, oppenInterview, recodeLIST, changestatus, seedetail, formstatus } from '../../api/interview.server.js'
import { findCompanyEmailByKey } from '../../api/resume.server.js'
import moment from "moment";
import {
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 {
data () {
data() {
return {
pageT: '',
statusValue: '0',
pageT: "",
statusValue: "0",
ruleInline: {
UpdateOWER: [
{ required: true, message: '邀约人不能为空', trigger: 'blur' }
{ required: true, message: "邀约人不能为空", trigger: "blur" }
],
UpdateTIME: [
{ required: true, message: '面试时间不能为空', trigger: 'date' }
{ required: true, message: "面试时间不能为空", trigger: "date" }
],
UpdateVIEW: [
{ required: true, message: '面试官不能为空', trigger: 'blur' }
{ required: true, message: "面试官不能为空", trigger: "blur" }
]
},
formInline: {
UpdateOWER: '',
UpdateTIME: '',
UpdateVIEW: ''
UpdateOWER: "",
UpdateTIME: "",
UpdateVIEW: ""
},
recordModal: false,
modal2: false,
modal3: false,
modal4: false,
modal5: false,
interdeTailSta: '',
changestatuss: '',
interdeTailSta: "",
changestatuss: "",
spinShow: true,
Ishow: [],
aaaaa: '',
detailID: '',
nowstate: [{ value: '已邀约', label: '已邀约' }, { value: '邀约失败', label: '邀约失败' }, { value: '面试淘汰', label: '面试淘汰' }, { value: '待offer', label: '待offer' }, { value: '已发offer', label: '已发offer' }, { value: '待入职', label: '待入职' }, { value: '未入职', label: '未入职' }, { value: '已入职', label: '已入职' }],
keywords: '',
aaaaa: "",
detailID: "",
nowstate: [
{ value: "已邀约", label: "已邀约" },
{ value: "邀约失败", label: "邀约失败" },
{ value: "面试淘汰", label: "面试淘汰" },
{ value: "待offer", label: "待offer" },
{ value: "已发offer", label: "已发offer" },
{ value: "待入职", label: "待入职" },
{ value: "未入职", label: "未入职" },
{ value: "已入职", label: "已入职" }
],
keywords: "",
recordList: [],
oppenInterviewStatus: 'TO_DO',
oppenInterviewID: '',
OPPeninterviewSTA: '',
toseename: '',
oppenInterviewStatus: "TO_DO",
oppenInterviewID: "",
OPPeninterviewSTA: "",
toseename: "",
clickIndex1: 0,
clickIndex2: 0,
clickIndex3: 0,
// UpdateOWER:'',
// UpdateTIME:'',
// UpdateVIEW:'',
UpdateID: '',
UpdateID: "",
options3: {
disabledDate (date) {
return date && date.valueOf() < Date.now() - 3600 * 24 * 1000
disabledDate(date) {
return date && date.valueOf() < Date.now() - 3600 * 24 * 1000;
}
},
Interviewer: [],
Inviter: [],
stopinterviewID: '',
stopinterviewID: "",
Interviewoperation: 0,
UpdateOWERNEW: '',
UpdateTIMENEW: '',
UpdateVIEWNEW: '',
highestDegreeNum: '',
emailName: '',
UpdateOWERNEW: "",
UpdateTIMENEW: "",
UpdateVIEWNEW: "",
highestDegreeNum: "",
emailName: "",
flowStatusList: [],
inviterName: '', // 邀约人
interviewerName: '', // 面试官
changestatusSTATUS: '',
inviterName: "", // 邀约人
interviewerName: "", // 面试官
changestatusSTATUS: "",
pageIndex: 1,
pageSize: 30,
totalSize: null,
......@@ -306,352 +706,381 @@ export default {
pageIndex: 1,
STA: []
},
Education2: [{ Num2: '', status2: '不限' }, { Num2: '0', status2: '专科以下' }, { Num2: '1', status2: '专科及以上' }, { 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: '',
Education2: [
{ Num2: "", status2: "不限" },
{ Num2: "0", status2: "专科以下" },
{ Num2: "1", status2: "专科及以上" },
{ 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: [],
serchData: [],
serchData2: [],
options: [],
loading1: false
}
};
},
methods: {
// 变更状态
selectFn2 (e) {
selectFn2(e) {
if (e.target.value == 5) {
this.modal5 = true
this.modal5 = true;
}
},
// 操作记录查询
RecordSEE (RID, sname) {
this.toseename = sname
this.recordModal = true
RecordSEE(RID, sname) {
this.toseename = sname;
this.recordModal = true;
const parmars = {
resumeId: RID
}
};
recodeLIST(parmars).then(res => {
this.ownerName = res.data.body.ownerName
this.ownerName = res.data.body.ownerName;
this.recordList = res.data.body.map((item, index) => {
item.ownerName = item.ownerName
item.approveUserName = item.approveUserName
item.dateTime = item.dateTime
item.previousState = item.previousState
item.afterState = item.afterState
return item
})
})
item.ownerName = item.ownerName;
item.approveUserName = item.approveUserName;
item.dateTime = item.dateTime;
item.previousState = item.previousState;
item.afterState = item.afterState;
return item;
});
});
},
// 更改面试信息弹出框
updateInterview (InterID, InterOWOR, InterTime, InterVIEW) {
this.formInline.UpdateOWER = InterVIEW,
this.formInline.UpdateVIEW = InterOWOR,
this.formInline.UpdateTIME = InterTime,
this.UpdateID = InterID
this.modal2 = true
updateInterview(InterID, InterOWOR, InterTime, InterVIEW) {
(this.formInline.UpdateOWER = InterVIEW),
(this.formInline.UpdateVIEW = InterOWOR),
(this.formInline.UpdateTIME = InterTime),
(this.UpdateID = InterID);
this.modal2 = true;
},
selectTime (b) {
this.UpdateTIME = b
selectTime(b) {
this.UpdateTIME = b;
},
// 准备约面取消
StopInterview () {
this.status = status
this.modal2 = false
StopInterview() {
this.status = status;
this.modal2 = false;
},
// 终止面试弹出框
Stopinterview (sid) {
this.stopinterviewID = sid
this.modal3 = true
Stopinterview(sid) {
this.stopinterviewID = sid;
this.modal3 = true;
},
// 重启面试
OPPeninterview (tid, sta4) {
this.oppenInterviewID = tid
OPPeninterview(tid, sta4) {
this.oppenInterviewID = tid;
const parmars = {
resumeId: tid
}
};
formstatus(parmars).then(res => {
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) {
const STATUS = LLL
UpdateStatus(LLL) {
const STATUS = LLL;
if (this.STATUS == '终止面试') {
this.modal3 = true
if (this.STATUS == "终止面试") {
this.modal3 = true;
}
if (this.STATUS == '重启面试') {
this.modal4 = true
if (this.STATUS == "重启面试") {
this.modal4 = true;
}
},
// 更改约面信息
changeUpdate () {
changeUpdate() {
const parmars = {
resumeId: this.UpdateID,
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,
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({
title: '提示',
desc: '请您填写完整的约面信息'
})
return
title: "提示",
desc: "请您填写完整的约面信息"
});
return;
}
changeinterviewMassage(parmars).then(res => {
if (res.data.success == true) {
this.formInline.UpdateTIME == ''
this.formInline.UpdateVIEW == ''
this.formInline.UpdateOWER == ''
this.modal2 = false
this.Sousuo(this.pageT)
this.formInline.UpdateTIME == "";
this.formInline.UpdateVIEW == "";
this.formInline.UpdateOWER == "";
this.modal2 = false;
this.Sousuo(this.pageT);
}
})
});
},
// 查询面试信息
serchListInterview (page, status) {
page = typeof (page) === 'number' ? page : 1
this.searchInfo.pageIndex = page
this.pageIndex = page
serchListInterview(page, status) {
page = typeof page === "number" ? page : 1;
this.searchInfo.pageIndex = page;
this.pageIndex = page;
const parmars = {
pageSize: this.searchInfo.pageSize,
pageIndex: this.searchInfo.pageIndex,
parameter: {
keywordString: '',
highestDegreeNum: '',
keywordString: "",
highestDegreeNum: "",
flowStatusList: [],
interviewerName: '',
inviterName: ''
}
interviewerName: "",
inviterName: ""
}
};
SerchList(parmars, status).then(res => {
if (res.data.success == true) {
this.spinShow = false
this.totalSize = res.data.body.totalNumber
this.spinShow = false;
this.totalSize = res.data.body.totalNumber;
this.Essentialinformation = res.data.body.items.map((item, index) => {
item.id = item.id
item.flowStatus = item.flowStatus
item.interviewerName = item.interviewerName
item.inviterName = item.inviterName
item.modifier = item.modifier
item.c = item.modifier == '' ? item.modifier : item.modifier.split('_')
item.d = item.c[0]
item.modifyTime = item.modifyTime
item.ownerExpectTitles = item.ownerExpectTitles
item.ownerMobile = item.ownerMobile
item.ownerName = item.ownerName
item.seeTime = item.seeTime
item.uid = item.uid
return item
})
}
})
item.id = item.id;
item.flowStatus = item.flowStatus;
item.interviewerName = item.interviewerName;
item.inviterName = item.inviterName;
item.modifier = item.modifier;
item.c =
item.modifier == "" ? item.modifier : item.modifier.split("_");
item.d = item.c[0];
item.modifyTime = item.modifyTime;
item.ownerExpectTitles = item.ownerExpectTitles;
item.ownerMobile = item.ownerMobile;
item.ownerName = item.ownerName;
item.seeTime = item.seeTime;
item.uid = item.uid;
return item;
});
}
});
},
// 面试官查询
SerchlistinterviewList () {
SerchlistinterviewList() {
Serchinterviewor().then(res => {
this.Interviewer = res.data.body
this.Interviewer.unshift('不限')
})
this.Interviewer = res.data.body;
this.Interviewer.unshift("不限");
});
},
// 邀约人查询
SerchInvitation () {
SerchInvitation() {
SerchInvitationOwer().then(res => {
if (!res.data.success) {
return
return;
}
this.Inviter = res.data.body
this.Inviter.unshift('不限')
})
this.Inviter = res.data.body;
this.Inviter.unshift("不限");
});
},
// 新增约面信息
newaddInterview () {
newaddInterview() {
const parmars = {
resumeId: this.UpdateOWERNEW,
inviterName: this.UpdateTIMENEW,
interviewerName: this.UpdateVIEWNEW,
seeTime: this.UpdateTIMENEW
}
};
NewAddInterview(parmars).then(res => {
if (res.data.success == true) {
this.$Message.success('新增约面信息成功')
this.$Message.success("新增约面信息成功");
}
})
});
},
// 终止面试
STOPinterview () {
STOPinterview() {
SInterview(this.stopinterviewID).then(res => {
if (res.data.success == true) {
this.modal3 = false
this.Sousuo(this.pageT)
this.modal3 = false;
this.Sousuo(this.pageT);
}
})
});
},
// 操作重启时选择的状态
selectFnelement (e) {
selectFnelement(e) {
if (e.target.value == 1) {
this.oppenInterviewStatus = 'TO_DO'
this.oppenInterviewStatus = "TO_DO";
}
if (e.target.value == 2) {
this.oppenInterviewStatus = 'PASS'
this.oppenInterviewStatus = "PASS";
}
if (e.target.value == 3) {
this.oppenInterviewStatus = 'OPTION'
this.oppenInterviewStatus = "OPTION";
}
if (e.target.value == 4) {
this.oppenInterviewStatus = 'OPTION'
this.oppenInterviewStatus = "OPTION";
}
if (e.target.value == 5) {
this.oppenInterviewStatus = 'HAS_SEE'
this.oppenInterviewStatus = "HAS_SEE";
}
if (e.target.value == 6) {
this.oppenInterviewStatus = 'SEE_FAIL'
this.oppenInterviewStatus = "SEE_FAIL";
}
if (e.target.value == 10) {
this.oppenInterviewStatus = 'INTERVIEW_FAIL'
this.oppenInterviewStatus = "INTERVIEW_FAIL";
}
if (e.target.value == 11) {
this.oppenInterviewStatus = 'TO_SENT_OFFER'
this.oppenInterviewStatus = "TO_SENT_OFFER";
}
if (e.target.value == 12) {
this.oppenInterviewStatus = 'HAS_SENT_OFFER'
this.oppenInterviewStatus = "HAS_SENT_OFFER";
}
if (e.target.value == 13) {
this.oppenInterviewStatus = 'TO_ENTRY'
this.oppenInterviewStatus = "TO_ENTRY";
}
},
// 重启面试
OPPinterview () {
oppenInterview(this.oppenInterviewID, this.oppenInterviewStatus).then(res => {
OPPinterview() {
oppenInterview(this.oppenInterviewID, this.oppenInterviewStatus).then(
res => {
if (res.data.success == true) {
this.$Notice.success({
title: '提示',
desc: '已成功重启流程'
})
this.serchListInterview()
title: "提示",
desc: "已成功重启流程"
});
this.serchListInterview();
}
}
})
this.modal4 = false
);
this.modal4 = false;
},
// 选择变更状态时的元素
selectchangeElement (e, SID) {
selectchangeElement(e, SID) {
if (e.target.value == 1) {
this.changestatusSTATUS = 'HAS_SEE'
this.changestatusSTATUS = "HAS_SEE";
changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init')
})
this.serchListInterview(this.pageT, "init");
});
}
if (e.target.value == 2) {
this.changestatusSTATUS = 'HAS_SEE'
this.changestatusSTATUS = "HAS_SEE";
changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init')
})
this.serchListInterview(this.pageT, "init");
});
}
if (e.target.value == 3) {
this.changestatusSTATUS = 'SEE_FAIL'
this.changestatusSTATUS = "SEE_FAIL";
changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init')
})
this.serchListInterview(this.pageT, "init");
});
}
if (e.target.value == 4) {
this.changestatusSTATUS = 'INTERVIEW_FAIL'
this.changestatusSTATUS = "INTERVIEW_FAIL";
changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init')
})
this.serchListInterview(this.pageT, "init");
});
}
if (e.target.value == 5) {
this.changestatusSTATUS = 'TO_SENT_OFFER'
this.changestatusSTATUS = "TO_SENT_OFFER";
changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init')
})
this.serchListInterview(this.pageT, "init");
});
}
if (e.target.value == 6) {
this.changestatusSTATUS = 'HAS_SENT_OFFER'
this.changestatusSTATUS = "HAS_SENT_OFFER";
changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init')
})
this.serchListInterview(this.pageT, "init");
});
}
if (e.target.value == 7) {
this.changestatusSTATUS = 'TO_ENTRY'
this.changestatusSTATUS = "TO_ENTRY";
changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init')
})
this.serchListInterview(this.pageT, "init");
});
}
if (e.target.value == 8) {
this.changestatusSTATUS = 'NO_ENTRY'
this.changestatusSTATUS = "NO_ENTRY";
changestatus(SID, this.changestatusSTATUS).then(res => {
this.serchListInterview(this.pageT, 'init')
})
this.serchListInterview(this.pageT, "init");
});
}
if (e.target.value == 9) {
this.changestatusSTATUS = 'HAS_ENTRY'
this.changestatusSTATUS = "HAS_ENTRY";
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) {
sta3 = !sta3
this.state[Tindex].sta = sta3
selectElement3(tItem, Tindex, status3, sta3) {
sta3 = !sta3;
this.state[Tindex].sta = sta3;
if (Tindex == 0) {
this.searchInfo.STA = []
this.searchInfo.STA = [];
this.state.map((item, index) => {
if (index !== 0) {
item.sta = false
item.sta = false;
}
if (index == 0) {
item.sta = true
item.sta = true;
}
return item
})
return
return item;
});
return;
}
if (Tindex !== 0) {
this.state[0].sta = false
this.state[0].sta = false;
}
if (sta3 == true) {
this.searchInfo.STA.push(tItem)
this.searchInfo.STA.push(tItem);
}
if (sta3 == false) {
Array.prototype.indexOf = function (val) {
Array.prototype.indexOf = function(val) {
for (var i = 0; i < this.length; i++) {
if (this[i] == val) return i
if (this[i] == val) return i;
}
return -1
}
Array.prototype.remove = function (val) {
var index = this.indexOf(val)
return -1;
};
Array.prototype.remove = function(val) {
var index = this.indexOf(val);
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) {
this.DOWNID = Uid
this.detailID = Tid
this.interdeTailSta = sta
Seedetail(Tid, Uid, sta) {
this.DOWNID = Uid;
this.detailID = Tid;
this.interdeTailSta = sta;
const newpage = this.$router.resolve({
name: 'resumeDetail',
name: "resumeDetail",
params: {},
query: { id: this.DOWNID, noShowBtn: '', ID: this.detailID, status: this.interdeTailSta }
})
window.open(newpage.href, '_blank')
query: {
id: this.DOWNID,
noShowBtn: "",
ID: this.detailID,
status: this.interdeTailSta
}
});
window.open(newpage.href, "_blank");
},
// 搜索
Sousuo (page) {
page = typeof (page) === 'number' ? page : 1
this.searchInfo.pageIndex = page
this.pageIndex = page
Sousuo(page) {
page = typeof page === "number" ? page : 1;
this.searchInfo.pageIndex = page;
this.pageIndex = page;
const parmars = {
pageSize: this.searchInfo.pageSize,
pageIndex: this.searchInfo.pageIndex,
......@@ -661,203 +1090,207 @@ export default {
flowStatusList: this.searchInfo.STA,
interviewerName: this.interviewerName,
inviterName: this.inviterName,
handUpload: ''
}
handUpload: ""
}
};
SerchList(parmars).then(res => {
const Ishow = res.data.items
const Ishow = res.data.items;
if (res.data.success == true) {
this.spinShow = false
this.totalSize = res.data.body.totalNumber
this.spinShow = false;
this.totalSize = res.data.body.totalNumber;
this.Essentialinformation = res.data.body.items.map((item, index) => {
item.id = item.id
item.flowStatus = item.flowStatus
item.interviewerName = item.interviewerName
item.inviterName = item.inviterName
item.modifier = item.modifier
item.c = item.modifier == '' ? item.modifier : item.modifier.split('_')
item.d = item.c[0]
item.modifyTime = item.modifyTime
item.ownerExpectTitles = item.ownerExpectTitles
item.ownerMobile = item.ownerMobile
item.ownerName = item.ownerName
item.seeTime = item.seeTime
item.uid = item.uid
return item
})
}
})
item.id = item.id;
item.flowStatus = item.flowStatus;
item.interviewerName = item.interviewerName;
item.inviterName = item.inviterName;
item.modifier = item.modifier;
item.c =
item.modifier == "" ? item.modifier : item.modifier.split("_");
item.d = item.c[0];
item.modifyTime = item.modifyTime;
item.ownerExpectTitles = item.ownerExpectTitles;
item.ownerMobile = item.ownerMobile;
item.ownerName = item.ownerName;
item.seeTime = item.seeTime;
item.uid = item.uid;
return item;
});
}
});
},
// 选择要搜索的元素
selectSeeElement (Titem, Tindex) {
this.highestDegreeNum = Titem
this.clickIndex1 = Tindex
selectSeeElement(Titem, Tindex) {
this.highestDegreeNum = Titem;
this.clickIndex1 = Tindex;
},
selectinterviewElement (e) {
if (e.value == '不限') {
this.interviewerName = ''
selectinterviewElement(e) {
if (e.value == "不限") {
this.interviewerName = "";
} else {
this.interviewerName = e.value
this.interviewerName = e.value;
}
},
selectinterviewElement2 (e) {
if (e.label == '不限') {
this.inviterName = ''
selectinterviewElement2(e) {
if (e.label == "不限") {
this.inviterName = "";
} else {
this.inviterName = e.label
this.inviterName = e.label;
}
},
// 改变页码
pageChange (page) {
this.pageT = page
this.Sousuo(this.pageT)
pageChange(page) {
this.pageT = page;
this.Sousuo(this.pageT);
},
pageSizeChange (page) {
this.searchInfo.pageSize = page
this.pageSize = page
this.Sousuo()
pageSizeChange(page) {
this.searchInfo.pageSize = page;
this.pageSize = page;
this.Sousuo();
},
remoteMethod: function (query) {
if (query !== '') {
this.loading1 = true
remoteMethod: function(query) {
if (query !== "") {
this.loading1 = true;
setTimeout(() => {
this.loading1 = false
let list = []
query = query.split('(')[0]
this.loading1 = false;
let list = [];
query = query.split("(")[0];
findCompanyEmailByKey(query).then(res => {
if (res.data.success == true) {
list = res
this.options = list.data.body || []
list = res;
this.options = list.data.body || [];
this.options.map(item => {
this.emailName = item.email
})
this.emailName = item.email;
});
} else {
this.options = []
this.options = [];
}
// this.options.push({name: '不限', email: ''})
})
}, 200)
});
}, 200);
} else {
this.options = []
this.options = [];
}
}
},
mounted () {
this.serchListInterview(null, 'init')
mounted() {
this.serchListInterview(null, "init");
// this.Serchlistinterview()
this.SerchInvitation()
this.SerchlistinterviewList()
this.SerchInvitation();
this.SerchlistinterviewList();
}
}
};
</script>
<style>
.interview .emailForm .ivu-form-item-label{
font-size: 14px
.interview .emailForm .ivu-form-item-label {
font-size: 14px;
}
.interview .ivu-form-item-content{
font-size: 14px;
.interview .ivu-form-item-content {
font-size: 14px;
}
.interview .ivu-form-item-error-tip{
font-size:12px;
.interview .ivu-form-item-error-tip {
font-size: 12px;
}
.interview{
.interview {
height: 100%;
width:100%;
background:#EDEDED;
width: 100%;
background: #ededed;
overflow: hidden;
min-width: 1200px;
}
.interview-left{
height:100%;
overflow:hidden;
.interview-left {
height: 100%;
overflow: hidden;
width: 70%;
float: left;
background: #F2F2F2;
background: #f2f2f2;
}
.interview-right{
.interview-right {
height: 100%;
width: 29%;
float: left;
overflow: hidden;
background:white;
margin-top:10px;
background: white;
margin-top: 10px;
margin-left: 1%;
}
.leftcontentTop{
.leftcontentTop {
height: 120px;
width: 100%;
}
.leftcontentContent{
.leftcontentContent {
width: 100%;
margin-top: 10px;
margin-bottom: 40px;
}
.contentMassage{
.contentMassage {
width: 53%;
height: 60px;
float: left;
margin-left: 0%;
background: white;
margin-top: 10px
margin-top: 10px;
/* margin-bottom: 35px */
}
.contentState{
width:23%;
.contentState {
width: 23%;
height: 60px;
float: left;
margin-left: 1.5%;
background: white;
margin-top: 10px
margin-top: 10px;
/* margin-bottom: 35px */
}
.contentRecord{
width:20%;
.contentRecord {
width: 20%;
height: 60px;
float: left;
margin-left: 1.5%;
background: white;
margin-top: 10px
margin-top: 10px;
/* margin-bottom: 35px */
}
.InpageBottom{
.InpageBottom {
height: 40px;
width: 56%;
background:#EDEDED;
background: #ededed;
position: fixed;
bottom: 0;
margin-left:0.6%;
margin-left: 0.6%;
}
.active2 {
color: #0092ff;
}
.active2{
color: #0092FF
select::-ms-expand {
display: none;
}
select::-ms-expand{display:none;}
select{
appearance:none;
-moz-appearance:none;
-webkit-appearance:none;
select {
appearance: none;
-moz-appearance: none;
-webkit-appearance: none;
outline: none;
border: none;
color: #0092FF
color: #0092ff;
}
option::-ms-expand{ display: none; }
option{
-moz-appearance:none; /* Firefox */
-webkit-appearance:none; /* Safari 和 Chrome */
appearance:none;
option::-ms-expand {
display: none;
}
option {
-moz-appearance: none; /* Firefox */
-webkit-appearance: none; /* Safari 和 Chrome */
appearance: none;
}
/* --背景色字体颜色--*/
option:hover{
color:#fff;
background-color:#1E90FF;
option:hover {
color: #fff;
background-color: #1e90ff;
}
.active{
.active {
color: blue;
}
.Education2{
width:85%;
.Education2 {
width: 85%;
}
.Education2 span{
.Education2 span {
display: inline-block;
margin-right: 20px;
}
......@@ -876,10 +1309,10 @@ option:hover{
.Education2 :nth-child(7){
margin-left: 10%
} */
.state2{
.state2 {
width: 85%;
}
.state2 span{
.state2 span {
display: inline-block;
margin-right: 20px;
}
......
......@@ -3,29 +3,53 @@
<div class="login-content">
<div class="loginContent-left">
<div class="logimg">
<img src="http://xyqbui.lkbang.net/image/logo99.png">
<img src="http://xyqbui.lkbang.net/image/logo99.png" />
</div>
</div>
<div class="loginContent-right">
<div class="logo">
<img src="http://xyqbui.lkbang.net/image/log.jpg">
<img src="http://xyqbui.lkbang.net/image/log.jpg" />
<h3>登录</h3>
</div>
<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">
<Input type="text" v-model="formInline.user" placeholder="请输入企业邮箱账号" class="wordStyle" size="large">
<Icon type="ios-person-outline" slot="prepend" ></Icon>
<Input
type="text"
v-model="formInline.user"
placeholder="请输入企业邮箱账号"
class="wordStyle"
size="large"
>
<Icon type="ios-person-outline" slot="prepend"></Icon>
</Input>
</FormItem>
<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>
</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>
</Form>
<Button type="primary" class="loginBtu" @click.prevent="login">登录</Button>
<Button type="primary" class="loginBtu" @click.prevent="login"
>登录</Button
>
</div>
<div class="copy">
......@@ -37,80 +61,87 @@
</div>
</template>
<script>
import { login } from '../../api/login.server.js'
import localstorage from '../../service/localstorage.service.js'
import { login } from "../../api/login.server.js";
import localstorage from "../../service/localstorage.service.js";
export default {
data () {
data() {
return {
channelarr: [],
notecontent: '',
notecontent: "",
noteconTime: false,
ISIDMIN: '',
ISIDMIN: "",
formInline: {
user: '',
password: ''
user: "",
password: ""
},
ruleInline: {
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: [
{ required: true, message: '请输入正确的密码', trigger: 'blur' }
{ required: true, message: "请输入正确的密码", trigger: "blur" }
// { type: 'string', min: 4, message: '请输入正确的密码', trigger: 'blur' }
]
}
}
};
},
methods: {
handleSubmit (name) {
this.$refs[name].validate((valid) => {
handleSubmit(name) {
this.$refs[name].validate(valid => {
if (valid) {
this.$Message.success('Success!')
this.$Message.success("Success!");
} else {
this.$Message.error('Fail!')
this.$Message.error("Fail!");
}
})
});
},
login () {
login() {
const params = {
userCode: this.formInline.user,
password: this.formInline.password
}
if (this.formInline.user == '' || this.formInline.password == '') {
return
};
if (this.formInline.user == "" || this.formInline.password == "") {
return;
}
login(params).then(res => {
if (res.data.body.code == '100') {
this.$router.push({ name: 'update', params: { userCode: this.formInline.user } })
return
if (res.data.body.code == "100") {
this.$router.push({
name: "update",
params: { userCode: this.formInline.user }
});
return;
}
if (res.data.success == true) {
this.ISIDMIN = res.data.body
localstorage.set('token', res.data.body.token)
this.$router.push({ name: 'allResume' })
localstorage.set('isADMIN', JSON.stringify(this.ISIDMIN))
return
this.ISIDMIN = res.data.body;
localstorage.set("token", res.data.body.token);
this.$router.push({ name: "allResume" });
localstorage.set("isADMIN", JSON.stringify(this.ISIDMIN));
return;
}
if (res.data.success == false) {
this.noteconTime = true
this.notecontent = res.data.body.message
this.noteconTime = true;
this.notecontent = res.data.body.message;
setTimeout(() => {
this.noteconTime = false
}, 3000)
this.noteconTime = false;
}, 3000);
}
})
});
}
}
}
};
</script>
<style scoped>
.login{
width:100%;
height:100%;
.login {
width: 100%;
height: 100%;
overflow: hidden;
}
.login .login-content{
.login .login-content {
width: 100%;
height: 100%;
overflow: hidden;
......@@ -118,65 +149,64 @@ export default {
.loginContent-left {
float: left;
width: 70%;
height:100%;
height: 100%;
}
.logimg{
.logimg {
height: 100%;
width:100%;
width: 100%;
}
.logimg img{
width:100%;
height: 100%
.logimg img {
width: 100%;
height: 100%;
}
.loginBtu{
width:90%;
.loginBtu {
width: 90%;
height: 40px;
font-size: 18px
font-size: 18px;
}
.loginContent-right{
.loginContent-right {
float: left;
width: 30%;
height:100%;
border: 1px solid GhostWhite
height: 100%;
border: 1px solid GhostWhite;
}
.logo{
width:70%;
height:180px;
margin-top:160px;
.logo {
width: 70%;
height: 180px;
margin-top: 160px;
/* border: 1px solid black; */
margin-left:15%
margin-left: 15%;
}
.logo img {
width:50%;
height:50% ;
width: 50%;
height: 50%;
/* margin-left: 30px */
}
.logo h3{
.logo h3 {
font-size: 30px;
color: black;
margin-top: 0px
margin-top: 0px;
}
.login_content{
.login_content {
height: 300px;
width: 70%;
/* border:1px solid black; */
margin-left:15%;
margin-top: 0px
margin-left: 15%;
margin-top: 0px;
}
.copy{
.copy {
width: 100%;
height:100px;
height: 100px;
margin-top: 80px;
margin-left: 7%
margin-left: 7%;
}
.copy p{
.copy p {
font-size: 17px;
color: #999
color: #999;
}
.wordStyle{
.wordStyle {
width: 90%;
line-height: 50px
line-height: 50px;
/* margin-left: 30px */
}
</style>
......@@ -3,30 +3,55 @@
<div class="updatePsd-content">
<div class="updatePsdContent-left">
<div class="logimg">
<img src="http://xyqbui.lkbang.net/image/logo99.png">
<img src="http://xyqbui.lkbang.net/image/logo99.png" />
</div>
</div>
<div class="updatePsdContent-right">
<div class="logo">
<img src="http://xyqbui.lkbang.net/image/log.jpg">
<img src="http://xyqbui.lkbang.net/image/log.jpg" />
<h3>首次登录请修改密码</h3>
</div>
<div class="updatePsd_content">
<Form ref="formInline" :model="formInline" class="formcontent">
<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>
</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 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>
</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>
</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 class="copy">
<p>量化派为你提供全程服务</p>
......@@ -37,132 +62,134 @@
</div>
</template>
<script>
import { updatePsd } from '../../api/login.server.js'
import { updatePsd } from "../../api/login.server.js";
export default {
data () {
data() {
return {
formInline: {
passwordTwo: '',
password: ''
passwordTwo: "",
password: ""
},
fistcontent: true,
twocontent: false,
twocontentmessage: '',
twocontentmessage: "",
channelarr: [],
Massage: '',
ISIDMIN: ''
}
Massage: "",
ISIDMIN: ""
};
},
methods: {
handleSubmit (name) {
this.$refs[name].validate((valid) => {
handleSubmit(name) {
this.$refs[name].validate(valid => {
if (valid) {
this.$Message.success('Success!')
this.$Message.success("Success!");
} else {
this.$Message.error('Fail!')
this.$Message.error("Fail!");
}
})
});
},
loginT () {
loginT() {
const params = {
userCode: this.$route.params.userCode,
password: this.formInline.password,
confirmPassWord: this.formInline.passwordTwo
}
};
if (this.formInline.passwordTwo !== this.formInline.password) {
this.twocontentmessage = '输入密码不一致,请重新输入'
this.twocontent = true
this.twocontentmessage = "输入密码不一致,请重新输入";
this.twocontent = true;
setTimeout(() => {
this.twocontent = false
}, 3000)
return
}
if (this.formInline.passwordTwo.length < 4 || this.formInline.password.length < 4) {
this.twocontentmessage = '请输入4-20位密码'
this.twocontent = true
this.twocontent = false;
}, 3000);
return;
}
if (
this.formInline.passwordTwo.length < 4 ||
this.formInline.password.length < 4
) {
this.twocontentmessage = "请输入4-20位密码";
this.twocontent = true;
setTimeout(() => {
this.twocontent = false
}, 3000)
return
this.twocontent = false;
}, 3000);
return;
}
if (this.formInline.password.length > 20) {
this.twocontentmessage = '请输入4-20位密码'
this.twocontentmessage = "请输入4-20位密码";
setTimeout(() => {
this.twocontent = false
}, 3000)
return
this.twocontent = false;
}, 3000);
return;
}
if (this.formInline.password.length < 4) {
this.twocontentmessage = '请输入4-20位密码'
this.twocontentmessage = "请输入4-20位密码";
setTimeout(() => {
this.twocontent = false
}, 3000)
return
this.twocontent = false;
}, 3000);
return;
}
if (this.formInline.password.length == 0) {
this.twocontentmessage = '密码不能为空'
this.twocontentmessage = "密码不能为空";
setTimeout(() => {
this.twocontent = false
}, 3000)
return
this.twocontent = false;
}, 3000);
return;
}
if (this.formInline.passwordTwo.length == 0) {
this.twocontentmessage = '请输入相同的确认密码'
this.twocontentmessage = "请输入相同的确认密码";
setTimeout(() => {
this.twocontent = false
}, 3000)
return
this.twocontent = false;
}, 3000);
return;
}
updatePsd(params).then(res => {
if (res.data.success == true) {
this.ISIDMIN = res.data.body
localStorage.setItem('isADMIN', JSON.stringify(this.ISIDMIN))
localStorage.setItem('token', res.data.body.token)
this.$router.replace({ name: 'allResume' })
this.ISIDMIN = res.data.body;
localStorage.setItem("isADMIN", JSON.stringify(this.ISIDMIN));
localStorage.setItem("token", res.data.body.token);
this.$router.replace({ name: "allResume" });
}
if (res.data.success == false) {
this.Massage = res.data.body.message
this.twocontent = true
this.twocontentmessage = this.Massage
this.Massage = res.data.body.message;
this.twocontent = true;
this.twocontentmessage = this.Massage;
setTimeout(() => {
this.twocontent = false
}, 3000)
this.twocontent = false;
}, 3000);
}
})
});
},
verification () {
verification() {
if (this.formInline.password == 123456) {
this.twocontentmessage = '输入密码与初始密码相同,请重新输入'
this.twocontentmessage = "输入密码与初始密码相同,请重新输入";
setTimeout(() => {
this.twocontent = false
}, 3000)
this.twocontent = false;
}, 3000);
}
if (this.formInline.password.length == 0) {
this.fistcontent = true
this.fistcontent = true;
}
if (this.formInline.password == '') {
this.fistcontent = true
if (this.formInline.password == "") {
this.fistcontent = true;
}
if (this.formInline.password.length < 4) {
this.fistcontent = true
this.fistcontent = true;
}
if (this.formInline.password.length > 4) {
this.fistcontent = false
this.fistcontent = false;
}
if (this.formInline.password.length > 20) {
this.fistcontent = true
this.fistcontent = true;
}
}
}
}
};
</script>
<style scoped>
.updatePsd{
width:100%;
height:100%;
.updatePsd {
width: 100%;
height: 100%;
}
.updatePsd-content{
.updatePsd-content {
width: 100%;
height: 100%;
overflow: hidden;
......@@ -170,53 +197,53 @@ export default {
.updatePsdContent-left {
float: left;
width: 70%;
height: 100%
height: 100%;
}
.updatePsdContent-right{
.updatePsdContent-right {
float: left;
width: 30%;
height: 858px;
background: #ffffff
background: #ffffff;
}
.logo{
width:70%;
height:180px;
margin-top:160px;
.logo {
width: 70%;
height: 180px;
margin-top: 160px;
/* border: 1px solid black; */
margin-left:15%
margin-left: 15%;
}
.logo img {
width:50%;
height:50% ;
width: 50%;
height: 50%;
/* margin-left: 30px */
}
.logo h3{
.logo h3 {
font-size: 30px;
color: black;
margin-top: 0px
margin-top: 0px;
}
.updatePsd_content{
.updatePsd_content {
height: 200px;
width: 70%;
margin-left:15%
margin-left: 15%;
}
.copy{
.copy {
width: 100%;
height:100px;
height: 100px;
margin-top: 160px;
margin-left: 7%;
}
.copy p{
.copy p {
font-size: 17px;
color: #999
color: #999;
}
.wordStyle2{
.wordStyle2 {
width: 100%;
}
.formcontent{
height:130px;
.formcontent {
height: 130px;
}
.formitemcontent{
height:60px;
.formitemcontent {
height: 60px;
}
</style>
<template>
<div class="resumeDetail">
<div class="personalInformation" v-show="JSON.stringify(resume)!=='{}'">
<div class="personalInformation" v-show="JSON.stringify(resume) !== '{}'">
<p class="detailTitel">
<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 style="margin-left:7px;font-size:16px;color:#0092FF" >基本信息</span>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>基本信息</span
>
</p>
<div class="massageTitle">
<p>
<span class="bassMassage">姓名:{{resume&&resume.ownerName}}</span>
<span class="bassMassageRight">年龄:{{resume&&resume.ownerAge}}</span>
<span class="bassMassage"
>姓名:{{ resume && resume.ownerName }}</span
>
<span class="bassMassageRight"
>年龄:{{ resume && resume.ownerAge }}</span
>
</p>
<p>
<span class="bassMassage">联系电话:{{resume&&resume.ownerMobile}}</span>
<span class="bassMassageRight">职位:{{resume&&resume.ownerExpectTitles}}</span>
<span class="bassMassage"
>联系电话:{{ resume && resume.ownerMobile }}</span
>
<span class="bassMassageRight"
>职位:{{ resume && resume.ownerExpectTitles }}</span
>
</p>
<p>
<span class="bassMassage">电子邮箱:{{resume&&resume.email}}</span>
<span class="bassMassageRight">学历:{{resume&&resume.ownerHighestDegree}}</span>
<span class="bassMassage"
>电子邮箱:{{ resume && resume.email }}</span
>
<span class="bassMassageRight"
>学历:{{ resume && resume.ownerHighestDegree }}</span
>
</p>
<p>
<span class="bassMassage">所在地:{{resume&&resume.locationCity}}</span>
<span class="bassMassageRight">经验:{{resume&&resume.workYearsOriginal}}</span>
<span class="bassMassage"
>所在地:{{ resume && resume.locationCity }}</span
>
<span class="bassMassageRight"
>经验:{{ resume && resume.workYearsOriginal }}</span
>
</p>
<p>
<span class="bassMassage">求职状态:{{resume&&resume.statusMessage}}</span>
<span class="bassMassage"
>求职状态:{{ resume && resume.statusMessage }}</span
>
<span class="bassMassageRight"></span>
</p>
<p>
<span class="bassMassage">期望行业:{{resume&&resume.industries}}</span>
<span class="bassMassageRight">期望薪资:{{resume&&resume.expectSalary}}</span>
<span class="bassMassage"
>期望行业:{{ resume && resume.industries }}</span
>
<span class="bassMassageRight"
>期望薪资:{{ resume && resume.expectSalary }}</span
>
</p>
<p >
<span class="bassMassage">期望职位:{{resume&&resume.expectTitles}}</span>
<span class="bassMassageRight">期望地区:{{resume&&resume.city}}</span>
<p>
<span class="bassMassage"
>期望职位:{{ resume && resume.expectTitles }}</span
>
<span class="bassMassageRight"
>期望地区:{{ resume && resume.city }}</span
>
</p>
</div>
</div>
<div class="workExperience" v-show="roList.length !==0 ">
<div class="workExperience" v-show="roList.length !== 0">
<p class="detailTitel">
<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 style="margin-left:7px;font-size:16px;color:#0092FF;">工作经历</span>
<span style="margin-left:7px;font-size:16px;color:#0092FF;"
>工作经历</span
>
</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">
<p style="height:28px;line-height:28px;font-size:14px;">
<span style="margin-left:30px">{{item.startTime}}-{{item.endTime}}</span>
<span style="margin-left:18px"><span>{{item.company}}<span>({{item.workTime}})</span></span></span>
<span style="margin-left:30px"
>{{ 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>{{item.industry}}</span>
<span>{{item.companyType}}</span>
<span>{{ item.industry }}</span>
<span>{{ item.companyType }}</span>
</span>
</p>
<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>
</div>
<div class="workExperience-bottom">{{item.desc}}</div>
<div class="workExperience-bottom">{{ item.desc }}</div>
</div>
</div>
<div class="projectExperience" v-show="rpList.length !==0 ">
<div class="projectExperience" v-show="rpList.length !== 0">
<p class="detailTitel">
<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>
<span style="margin-left:7px;font-size:16px;color:#0092FF">项目经历</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>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>项目经历</span
>
</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">
<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:18px"><span>{{item.name}}<span></span></span></span>
<span style="margin-left:30px"
>{{ 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>{{item.post}}</span>
<span>{{ item.post }}</span>
</span>
</p>
</div>
<div class="projectExperience-bottom">{{item.desc}}</div>
<div class="projectExperience-bottom">{{ item.desc }}</div>
</div>
</div>
<div class="internshipExperience" v-show="riList.length !==0 ">
<div class="internshipExperience" v-show="riList.length !== 0">
<p class="detailTitel">
<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>
<span style="margin-left:7px;font-size:16px;color:#0092FF">实习经历</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>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>实习经历</span
>
</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">
<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:18px"><span>{{item.company}}<span></span></span></span>
<span style="margin-left:30px"
>{{ 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>{{item.industry}}</span>
<span>{{ item.industry }}</span>
<!-- <span>{{item.title}}</span> -->
</span>
</p>
<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>
</div>
<div class="internshipExperience-bottom">{{item.desc}}</div>
<div class="internshipExperience-bottom">{{ item.desc }}</div>
</div>
</div>
<div class="educationalExperience" v-show="reList.length !==0">
<div class="educationalExperience" v-show="reList.length !== 0">
<p class="detailTitel">
<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>
<span style="margin-left:7px;font-size:16px;color:#0092FF">教育经历</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>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>教育经历</span
>
</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-left">
<p style="line-height:25px;margin-top:20px">{{item.school}}(({{item.startYear}}.{{item.startMonth}}-{{item.endYear}}.{{item.endMonth}}))</p>
<p style="margin-top:20px;">专业:{{item.major}}</p>
<p style="line-height:25px;margin-top:20px">
{{ item.school }}(({{ item.startYear }}.{{ item.startMonth }}-{{
item.endYear
}}.{{ item.endMonth }}))
</p>
<p style="margin-top:20px;">专业:{{ item.major }}</p>
</div>
<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 class="Self-evaluation" v-show="JSON.stringify(resume)!=='{}'">
<div class="Self-evaluation" v-show="JSON.stringify(resume) !== '{}'">
<p class="detailTitel">
<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>
<span style="margin-left:7px;font-size:16px;color:#0092FF">自我评价</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>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>自我评价</span
>
</p>
<div class="evaluation-content">
{{resume&&resume.selfEvaluate}}
{{ resume && resume.selfEvaluate }}
</div>
</div>
</div>
</template>
<script>
import { seedetail } from '../../api/resume.server'
import localStorage from '../../service/localstorage.service.js'
import {
sapi
} from '../../config'
import { seedetail } from "../../api/resume.server";
import localStorage from "../../service/localstorage.service.js";
import { sapi } from "../../config";
export default {
data () {
data() {
return {
resume: {},
riList: [],
roList: [],
rpList: [],
reList: [],
downresume: '',
detialID: '',
showBtn: ''
}
downresume: "",
detialID: "",
showBtn: ""
};
},
methods: {
getDETAIL () {
this.detialID = this.$route.query.ID
this.showBtn = this.$route.query.noShowBtn
const token = this.$route.query.token || ''
getDETAIL() {
this.detialID = this.$route.query.ID;
this.showBtn = this.$route.query.noShowBtn;
const token = this.$route.query.token || "";
const parmars = {
uid: this.$route.query.id
// uid:"0646215721cc43ccb51ff3e979959e35"
}
};
seedetail(parmars).then(res => {
this.resume = res.data.body.resume
this.riList = res.data.body.riList
this.roList = res.data.body.roList
this.rpList = res.data.body.rpList
this.reList = res.data.body.reList
})
this.resume = res.data.body.resume;
this.riList = res.data.body.riList;
this.roList = res.data.body.roList;
this.rpList = res.data.body.rpList;
this.reList = res.data.body.reList;
});
}
},
mounted () {
this.getDETAIL()
mounted() {
this.getDETAIL();
}
}
};
</script>
<style scoped>
.resumeDetail{
.resumeDetail {
width: 860px;
margin: 30px auto;
color: #000000;
font-family: "\5FAE\8F6F\96C5\9ED1"
font-family: "\5FAE\8F6F\96C5\9ED1";
}
.personalInformation{
width:860px;
.personalInformation {
width: 860px;
/* height: 600px; */
float: left;
/* border: 1px solid black */
}
.bassMassage{
.bassMassage {
display: inline-block;
width: 400px;
float: left;
margin-left:30px;
margin-left: 30px;
font-size: 14px;
margin-top:20px
margin-top: 20px;
}
.bassMassageRight{
.bassMassageRight {
display: inline-block;
width: 400px;
float: left;
font-size: 14px;
margin-top:20px;
margin-left:20px
margin-top: 20px;
margin-left: 20px;
}
.massageTitle{
.massageTitle {
/* height: 300px; */
float: left;
}
.personalInformation-left{
.personalInformation-left {
width: 400px;
height:260px;
height: 260px;
margin-left: 30px;
float: left;
font-size: 14px;
}
.personalInformation-left p{
line-height: 37px
.personalInformation-left p {
line-height: 37px;
}
.personalInformation-right{
.personalInformation-right {
width: 400px;
height:260px;
height: 260px;
font-size: 14px;
float: left;
}
.personalInformation-right p{
line-height: 37px
.personalInformation-right p {
line-height: 37px;
}
.workExperience{
.workExperience {
width: 860px;
float: left;
margin-top: 10px
margin-top: 10px;
}
.workExperience-detail{
.workExperience-detail {
width: 860px;
float: left;
margin-top: 20px;
}
.workExperience-top{
.workExperience-top {
width: 860px;
height: 56px;
background: rgba(246,246,246,1);
background: rgba(246, 246, 246, 1);
}
.workExperience-bottom{
width:640px;
.workExperience-bottom {
width: 640px;
margin-left: 71px;
margin-top: 20px;
line-height: 24px;
}
.projectExperience{
.projectExperience {
width: 860px;
margin-top: 30px;
float: left;
}
.projectExperience-detail{
.projectExperience-detail {
width: 860px;
float: left;
margin-top: 20px;
}
.projectExperience-top{
.projectExperience-top {
width: 860px;
height: 34px;
line-height: 34px;
background: rgba(246,246,246,1);
background: rgba(246, 246, 246, 1);
}
.projectExperience-bottom{
width:640px;
.projectExperience-bottom {
width: 640px;
margin-left: 71px;
margin-top: 20px;
line-height: 24px
line-height: 24px;
}
.internshipExperience{
.internshipExperience {
width: 860px;
margin-top: 30px;
float: left;
}
.internshipExperience-detail{
.internshipExperience-detail {
width: 860px;
float: left;
margin-top: 20px;
}
.internshipExperience-top{
.internshipExperience-top {
width: 860px;
height: 56px;
line-height: 34px;
background: rgba(246,246,246,1);
background: rgba(246, 246, 246, 1);
}
.internshipExperience-bottom{
width:640px;
.internshipExperience-bottom {
width: 640px;
margin-left: 71px;
margin-top: 20px;
line-height: 24px
line-height: 24px;
}
.educationalExperience{
.educationalExperience {
width: 860px;
float: left;
}
.educationalExperience-left{
.educationalExperience-left {
width: 430px;
float: left;
margin-left: 30px;
font-size: 14px
font-size: 14px;
}
.educationalExperience-right{
.educationalExperience-right {
width: 380px;
float: left;
font-size: 14px
font-size: 14px;
}
.Self-evaluation{
.Self-evaluation {
width: 860px;
float: left;
}
.evaluation-content{
.evaluation-content {
width: 690px;
margin-left:30px;
margin-left: 30px;
float: left;
margin-top: 20px;
line-height: 30px;
margin-bottom: 40px
margin-bottom: 40px;
}
.detailTitel{
.detailTitel {
width: 860px;
height: 24px;
float: left;
......
......@@ -4,322 +4,425 @@
<h3 style="margin-top:5px;font-size:0.35rem">应聘登记表</h3>
</div>
<div class="sweepcode_content">
<Form :label-width="120" :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"/>
<Form
:label-width="120"
: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 label="邀约人手机" style="" class="phone">
<Input 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>
<Input
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 label="面试时间" prop="time" class="dateTime">
<Input 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>
<Input
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 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 label="应聘来源" prop="model1" class="model1">
<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>
</FormItem>
<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 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 label="是否携带简历" prop="model2" class="model2">
<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>
</FormItem>
</Form>
</div>
<div class="submission">
<Button type='primary' @click="confirmSubmission" :loading="loading">提交</Button>
<Button type="primary" @click="confirmSubmission" :loading="loading"
>提交</Button
>
</div>
<Modal
v-model="modal3"
width='200px'
:closable='false'>
<div >
<Modal v-model="modal3" width="200px" :closable="false">
<div>
<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 slot='footer' style="text-align:center">
<Button type='primary' @click='modal3=false'>确定</Button>
<div slot="footer" style="text-align:center">
<Button type="primary" @click="modal3 = false">确定</Button>
</div>
</Modal>
<Modal
v-model="modal4"
width='200px'
:closable='false'>
<div >
<p style="text-align:center;font-size:16px">HR已知晓您的到来,请稍等片刻</p>
<Modal v-model="modal4" width="200px" :closable="false">
<div>
<p style="text-align:center;font-size:16px">
HR已知晓您的到来,请稍等片刻
</p>
</div>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal4=false'>好的</Button>
<div slot="footer" style="text-align:center">
<Button type="primary" @click="modal4 = false">好的</Button>
</div>
</Modal>
</div>
</template>
<script>
import moment from 'moment'
import { submitMassage } from '../../api/sweepCode.server.js'
import moment from "moment";
import { submitMassage } from "../../api/sweepCode.server.js";
export default {
data () {
data() {
return {
docmHeight: '0',
showHeight: '0',
docmHeight: "0",
showHeight: "0",
loading: false,
hidshow: true,
isResize: false,
modal3: false,
modal4: false,
ruleInline: {
Inviter: [
{ required: true, message: '请输入邀约人', trigger: 'blur' }
],
Inviter: [{ required: true, message: "请输入邀约人", trigger: "blur" }],
time: [
{ required: true, message: '面试时间不能为空', trigger: 'date' }
{ required: true, message: "面试时间不能为空", trigger: "date" }
],
// InviterPhoneNumber: [
// { required: false, pattern:/^[1][3,4,5,7,8,6,9][0-9]{9}$/, message: '请输入正确的手机号', trigger: 'blur' }
// ],
position: [
{ required: true, message: '请输入应聘职位', trigger: 'blur' }
{ required: true, message: "请输入应聘职位", trigger: "blur" }
],
model1: [
{ required: true, message: '请输入应聘来源', trigger: 'blur' }
],
name: [
{ required: true, message: '请输入姓名', trigger: 'blur' }
{ required: true, message: "请输入应聘来源", trigger: "blur" }
],
name: [{ required: true, message: "请输入姓名", trigger: "blur" }],
phoneNUmber: [
{ required: true, message: '请输入正确的手机号码', trigger: 'blur' },
{ required: true, pattern: /^[1][3,4,5,7,8,6,9][0-9]{9}$/, 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"
}
],
model2: [
{ required: true, message: '请选择是否携带简历', trigger: 'blur' }
{ required: true, message: "请选择是否携带简历", trigger: "blur" }
]
},
saleDate: '',
saleDate: "",
isV: false,
options3: {
disabledDate (date) {
return date && date.valueOf() < Date.now() - 3600 * 24 * 1000 || date.valueOf() > Date.now()
disabledDate(date) {
return (
(date && date.valueOf() < Date.now() - 3600 * 24 * 1000) ||
date.valueOf() > Date.now()
);
}
},
origen: [
{
value: '智联招聘',
label: '智联招聘'
value: "智联招聘",
label: "智联招聘"
},
{
value: '51Job',
label: '51Job'
value: "51Job",
label: "51Job"
},
{
value: 'boss直聘',
label: 'boss直聘'
value: "boss直聘",
label: "boss直聘"
},
{
value: '拉勾网',
label: '拉勾网'
value: "拉勾网",
label: "拉勾网"
},
{
value: '内部推荐',
label: '内部推荐'
value: "内部推荐",
label: "内部推荐"
},
{
value: '猎聘网',
label: '猎聘网'
value: "猎聘网",
label: "猎聘网"
},
{
value: '其他',
label: '其他'
value: "其他",
label: "其他"
}
],
isGET: [
{
value: '',
label: ''
value: "",
label: ""
},
{
value: '',
label: ''
value: "",
label: ""
}
],
formInline: {
model1: '',
model2: '',
Inviter: '',
InviterPhoneNumber: '',
date: '',
time: '',
position: '',
phoneNUmber: '',
name: ''
model1: "",
model2: "",
Inviter: "",
InviterPhoneNumber: "",
date: "",
time: "",
position: "",
phoneNUmber: "",
name: ""
},
isV: false,
hh: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],
mm: ['00', '10', '20', '30', '40', '50', '60']
}
hh: [
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12"
],
mm: ["00", "10", "20", "30", "40", "50", "60"]
};
},
methods: {
// 确认提交
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 == '') {
this.$Message.error('请填写完整的信息')
return
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 == ""
) {
this.$Message.error("请填写完整的信息");
return;
}
if (!(/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.phoneNUmber))) {
this.$Message.error('请输入正确的手机号')
return
if (!/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.phoneNUmber)) {
this.$Message.error("请输入正确的手机号");
return;
}
if (this.formInline.InviterPhoneNumber !== '' && !(/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.InviterPhoneNumber))) {
this.$Message.error('请输入正确的手机号')
return
if (
this.formInline.InviterPhoneNumber !== "" &&
!/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.InviterPhoneNumber)
) {
this.$Message.error("请输入正确的手机号");
return;
}
const parmars = {
invitePerson: this.formInline.Inviter,
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,
source: this.formInline.model1,
name: this.formInline.name,
mobile: this.formInline.phoneNUmber,
takeResume: this.formInline.model2
}
this.loading = true
};
this.loading = true;
submitMassage(parmars).then(res => {
if (res.data.success == true) {
this.loading = false
this.formInline.model1 = ''
this.formInline.model2 = ''
this.formInline.Inviter = ''
this.formInline.InviterPhoneNumber = ''
this.formInline.time = ''
this.formInline.position = ''
this.formInline.name = ''
this.formInline.phoneNUmber = ''
this.loading = false;
this.formInline.model1 = "";
this.formInline.model2 = "";
this.formInline.Inviter = "";
this.formInline.InviterPhoneNumber = "";
this.formInline.time = "";
this.formInline.position = "";
this.formInline.name = "";
this.formInline.phoneNUmber = "";
this.modal4 = true
this.modal4 = true;
}
})
});
},
selectDate (a) {
this.formInline.date = a
selectDate(a) {
this.formInline.date = a;
},
selectTime (b) {
this.formInline.time = b
selectTime(b) {
this.formInline.time = b;
},
welconme () {
this.modal3 = true
welconme() {
this.modal3 = true;
},
jedugePhone () {
if (this.formInline.InviterPhoneNumber == '') {
this.isV = false
return
jedugePhone() {
if (this.formInline.InviterPhoneNumber == "") {
this.isV = false;
return;
}
if (!(/^[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)
) {
this.isV = true;
}
if ((/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.InviterPhoneNumber))) {
this.isV = false
if (
/^[1][3,4,5,7,8,6,9][0-9]{9}$/.test(this.formInline.InviterPhoneNumber)
) {
this.isV = false;
}
},
// 阻止弹出键盘
defaultRRRR () {
document.activeElement.blur()
defaultRRRR() {
document.activeElement.blur();
}
},
mounted () {
this.welconme()
const myDate = new Date()
const year = myDate.getFullYear() // 获取当前年份
const month = myDate.getMonth() + 1 // 获取当前月份(0-11,0代表1月所以要加1);
const day = myDate.getDate() // 获取当前日(1-31)
this.saleDate = `${year}/${month}/${day}`
this.formInline.date = this.saleDate
function getRem () {
var html = document.getElementsByTagName('html')[0]
var oWidth = document.body.clientWidth || document.documentElement.clientWidth
html.style.fontSize = oWidth / 7.5 + 'px'
mounted() {
this.welconme();
const myDate = new Date();
const year = myDate.getFullYear(); // 获取当前年份
const month = myDate.getMonth() + 1; // 获取当前月份(0-11,0代表1月所以要加1);
const day = myDate.getDate(); // 获取当前日(1-31)
this.saleDate = `${year}/${month}/${day}`;
this.formInline.date = this.saleDate;
function getRem() {
var html = document.getElementsByTagName("html")[0];
var oWidth =
document.body.clientWidth || document.documentElement.clientWidth;
html.style.fontSize = oWidth / 7.5 + "px";
}
this.$nextTick(() => {
getRem()
})
getRem();
});
window.onresize = () => {
return (() => {
getRem()
getRem();
if (!this.isResize) {
this.docmHeight = document.documentElement.clientHeight
this.isResize = true
}
this.showHeight = document.body.clientHeight
})()
this.docmHeight = document.documentElement.clientHeight;
this.isResize = true;
}
this.showHeight = document.body.clientHeight;
})();
};
},
beforeDestroy () {
document.getElementsByTagName('html')[0].removeAttribute('style')
beforeDestroy() {
document.getElementsByTagName("html")[0].removeAttribute("style");
},
watch: {
showHeight: function () {
showHeight: function() {
if (this.docmHeight > this.showHeight) {
this.hidshow = false
this.hidshow = false;
} else {
this.hidshow = true
this.hidshow = true;
}
}
}
}
};
</script>
<style scoped>
#Sweepcode{
#Sweepcode {
height: 100%;
width:100%;
width: 100%;
overflow: hidden;
}
.mobile{
}
.mobile {
width: 100%;
height: 100%
}
.header{
height: 100%;
}
.header {
text-align: center;
height: 5%;
}
.submission{
}
.submission {
height: 10%;
margin-top:10px;
}
.submission button{
margin-top: 10px;
}
.submission button {
width: 47%;
font-size: 0.35rem;
margin-top:20px;
margin-top: 20px;
margin-left: 26%;
height: 39px;
}
.sweepcode_content{
margin-top:10px;
}
.sweepcode_content {
margin-top: 10px;
font-size: 0.15rem;
height: 80%;
border-top: 1px solid rgba(241,241,241,1);
}
border-top: 1px solid rgba(241, 241, 241, 1);
}
</style>
<style >
.sweepcode_content input.ivu-input.ivu-input-large{
background: #F4F4F4
<style>
.sweepcode_content input.ivu-input.ivu-input-large {
background: #f4f4f4;
}
.sweepcode_content .ivu-select-placeholder{
background: #F4F4F4
.sweepcode_content .ivu-select-placeholder {
background: #f4f4f4;
}
.fontsize .ivu-form-item-label{
.fontsize .ivu-form-item-label {
font-size: 0.28rem;
}
/* .dateTime .ivu-form-item-label{
......@@ -340,19 +443,19 @@ export default {
.phoneNUmber .ivu-form-item-label{
margin-top:6px
} */
.fontsize{
.fontsize {
height: 100%;
width: 100%;
/* border: 1px solid yellow */
}
.fontsize .ivu-form-item.ivu-form-item-required{
height:7.5%;
.fontsize .ivu-form-item.ivu-form-item-required {
height: 7.5%;
}
.fontsize .phone{
height:7%;
.fontsize .phone {
height: 7%;
}
.fontsize .ivu-input.ivu-input-large{
font-size: 0.23rem
.fontsize .ivu-input.ivu-input-large {
font-size: 0.23rem;
}
/* .dateTime .ivu-form-item-content{
margin-top:6px
......
<template>
<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>
<div class="Qrcode">
<img :src="url" style="width:100%;height:100%">
<img :src="url" style="width:100%;height:100%" />
</div>
<p class="xiazai" @click="downPic">下载</p>
<!-- <p style="margin-top:40px"><span>请点击&nbsp;</span>
......@@ -16,53 +18,50 @@
</div>
</template>
<script>
import { getErcode, downloadErcode } from '../../api/stystem.server.js'
import {
sapi
} from '../../config'
import { getErcode, downloadErcode } from "../../api/stystem.server.js";
import { sapi } from "../../config";
export default {
data () {
data() {
return {
url: '',
url2: ''
}
url: "",
url2: ""
};
},
methods: {
// 取到二维码
getercode () {
getercode() {
getErcode().then(res => {
if (res.data.success == true) {
this.url = res.data.body
this.url = res.data.body;
}
})
});
},
downPic (img) {
window.location.href = `${sapi}/api/qrCode/downQrCode`
downPic(img) {
window.location.href = `${sapi}/api/qrCode/downQrCode`;
}
},
mounted () {
this.getercode()
mounted() {
this.getercode();
}
}
};
</script>
<style>
.Qrcode{
.Qrcode {
height: 200px;
width: 200px;
border: 1px solid black;
margin: 20px 0 0 15px
margin: 20px 0 0 15px;
}
.xiazai{
.xiazai {
height: 30px;
width: 100px;
background:#2d8cf0;
background: #2d8cf0;
color: white;
line-height: 30px;
text-align: center;
border-radius: 5px ;
border-radius: 5px;
position: absolute;
left: 230px;
top:270px
top: 270px;
}
</style>
......@@ -2,131 +2,217 @@
<div class="account">
<div class="addAcount">
<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>
</p>
<Form :label-width="100" :model="formInline" :rules="ruleInline">
<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 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 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>
</Form>
<p>
<span style="margin-left:25px;fnt-size:14px">初始登录密码</span>
<span style="margin-left:10px">默认是"123456",新用户首次登录需修改后才能进入系统。</span>
<span style="margin-left:30px"><Button type="primary" size='small' style="color:#ffffff;margin-left:20px;width:60px" @click="addacount"> 添加</Button></span>
<span style="margin-left:10px"
>默认是"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>
</div>
<div class="accountMange">
<div class="accountMange-top">
<p style="height:40px;line-height:40px">
<span style="font-size:18px;color:#2d8cf0;margin-left:18px">账户管理</span>
<span style="margin-left:10px;color:Grey">删除后该用户将无法登录,该账户上传的简历仍然保留。</span>
<span style="font-size:18px;color:#2d8cf0;margin-left:18px"
>账户管理</span
>
<span style="margin-left:10px;color:Grey"
>删除后该用户将无法登录,该账户上传的简历仍然保留。</span
>
</p>
<p style="border-bottom:1px solid black;line-height:30px;margin-bottom:10px">
<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
style="border-bottom:1px solid black;line-height:30px;margin-bottom:10px"
>
<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>
</div>
<!-- <Table ref="selection" :columns="columns4" :data="data1"></Table> -->
<div style="overflow-y: auto;height:80%;margin-bottom:40px">
<!-- <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">
<input type='checkbox' name='checkboxinput' class='input-checkbox' v-model='checkboxList' :value="item.id" style="margin-left:25px;cursor:pointer" @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>
<input
type="checkbox"
name="checkboxinput"
class="input-checkbox"
v-model="checkboxList"
:value="item.id"
style="margin-left:25px;cursor:pointer"
@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 style="height:10px;background:white;width:100%;"></div>
</div>
</div>
<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>
<!-- 恢复初始密码 -->
<Modal
v-model="modal1"
:closable="false"
width='250px'>
<Modal v-model="modal1" :closable="false" width="250px">
<h3 style="text-align:center">提示</h3>
<p style="text-align:center">是否将该账号的密码,恢复至初始状态。</p>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal1=false'>取消</Button>
<Button type='primary' @click="recovery()" >确定</Button>
<div slot="footer" style="text-align:center">
<Button type="primary" @click="modal1 = false">取消</Button>
<Button type="primary" @click="recovery()">确定</Button>
</div>
</Modal>
<Modal
v-model="modal6"
:closable="false"
width='450px'>
<Modal v-model="modal6" :closable="false" width="450px">
<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">
<Input placeholder="请输入企业邮箱" style="width:300px;" v-model="formInline.updateemailNumber" disabled/>
<Input
placeholder="请输入企业邮箱"
style="width:300px;"
v-model="formInline.updateemailNumber"
disabled
/>
</FormItem>
<FormItem label="手机号码" style="margin-top:1%" prop="updatePhoneNumber">
<Input placeholder="请输入正确的手机号" style="width:300px;" v-model="formInline.updatePhoneNumber"/>
<FormItem
label="手机号码"
style="margin-top:1%"
prop="updatePhoneNumber"
>
<Input
placeholder="请输入正确的手机号"
style="width:300px;"
v-model="formInline.updatePhoneNumber"
/>
</FormItem>
<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>
</Form>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal6=false'>取消</Button>
<Button type='primary' @click="confireUpdate" >确定</Button>
<div slot="footer" style="text-align:center">
<Button type="primary" @click="modal6 = false">取消</Button>
<Button type="primary" @click="confireUpdate">确定</Button>
</div>
</Modal>
<!-- 删除当前的账户 -->
<Modal
v-model="modal2"
:closable="false"
width='250px'>
<Modal v-model="modal2" :closable="false" width="250px">
<h3 style="text-align:center">提示</h3>
<p style="text-align:center">是否确定删除当前账户</p>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal2=false'>取消</Button>
<Button type='primary' @click="delateAccount">确定</Button>
<div slot="footer" style="text-align:center">
<Button type="primary" @click="modal2 = false">取消</Button>
<Button type="primary" @click="delateAccount">确定</Button>
</div>
</Modal>
<Modal
v-model="modal3"
:closable="false"
width='250px'>
<Modal v-model="modal3" :closable="false" width="250px">
<h3 style="text-align:center">提示</h3>
<p style="text-align:center">是否确定删除这些账户</p>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal3=false'>取消</Button>
<Button type='primary' @click="delateAll">确定</Button>
<div slot="footer" style="text-align:center">
<Button type="primary" @click="modal3 = false">取消</Button>
<Button type="primary" @click="delateAll">确定</Button>
</div>
</Modal>
<Modal
v-model="modal4"
:closable="false"
width='250px'>
<Modal v-model="modal4" :closable="false" width="250px">
<h3 style="text-align:center">提示</h3>
<p style="text-align:center">未选择要上传的远元素</p>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal4=false'>确定</Button>
<div slot="footer" style="text-align:center">
<Button type="primary" @click="modal4 = false">确定</Button>
</div>
</Modal>
</div>
</template>
<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 {
data () {
data() {
return {
modal1: false,
modal2: false,
......@@ -135,359 +221,387 @@ export default {
modal6: false,
checkboxList: [],
checked: false,
updateAccountId: '',
pageT: '',
userName: '',
userCode: '',
Massage: '',
updateAccountId: "",
pageT: "",
userName: "",
userCode: "",
Massage: "",
spinShow: true,
delateARR: [],
id: '',
I: '',
id: "",
I: "",
pageIndex: 1,
pageSize: 30,
totalSize: null,
searchInfo: {
pageSize: 30,
pageIndex: 1,
id: ''
id: ""
},
formInline: {
PhoneNumber: '',
PerName: '',
emailNumber: '',
updatePhoneNumber: '',
updatePerName: '',
updateemailNumber: ''
PhoneNumber: "",
PerName: "",
emailNumber: "",
updatePhoneNumber: "",
updatePerName: "",
updateemailNumber: ""
},
ruleInline: {
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: [
{ required: true, message: '请输入真实的姓名', trigger: 'blur' },
{ type: 'string', message: '', trigger: 'blur' }
{ required: true, message: "请输入真实的姓名", trigger: "blur" },
{ type: "string", message: "", trigger: "blur" }
],
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: [
{ required: true, message: '请输入真实的姓名', trigger: 'blur' },
{ type: 'string', message: '', trigger: 'blur' }
{ required: true, message: "请输入真实的姓名", trigger: "blur" },
{ type: "string", message: "", trigger: "blur" }
],
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: [],
checkData: [] // 双向数据绑定的数组
}
};
},
methods: {
handleSelectAll (status) {
this.$refs.selection.selectAll(status)
handleSelectAll(status) {
this.$refs.selection.selectAll(status);
},
ok () {
this.$Message.info('Clicked ok')
ok() {
this.$Message.info("Clicked ok");
},
cancel () {
this.$Message.info('Clicked cancel')
cancel() {
this.$Message.info("Clicked cancel");
},
//
delateArr (DElateID) {
this.delateARR.push(DElateID)
delateArr(DElateID) {
this.delateARR.push(DElateID);
},
// 全选与反选
checkedAll: function () {
if (this.checked) { // 实现反选
this.checkboxList = []
this.checkboxList.push(item.id)
this.delateARR.push(item.id)
} else { // 实现全选
this.checkboxList = []
this.ajaxData.forEach((item) => {
this.checkboxList.push(item.id)
this.delateARR.push(item.id)
})
checkedAll: function() {
if (this.checked) {
// 实现反选
this.checkboxList = [];
this.checkboxList.push(item.id);
this.delateARR.push(item.id);
} else {
// 实现全选
this.checkboxList = [];
this.ajaxData.forEach(item => {
this.checkboxList.push(item.id);
this.delateARR.push(item.id);
});
}
},
// 修改
updateModal (item) {
this.modal6 = true
this.updateAccountId = item.id
this.formInline.updateemailNumber = item.userCode
this.formInline.updatePhoneNumber = item.phone
this.formInline.updatePerName = item.userName
updateModal(item) {
this.modal6 = true;
this.updateAccountId = item.id;
this.formInline.updateemailNumber = item.userCode;
this.formInline.updatePhoneNumber = item.phone;
this.formInline.updatePerName = item.userName;
},
// 确认修改
confireUpdate () {
confireUpdate() {
const parmars = {
id: this.updateAccountId,
userCode: this.formInline.updateemailNumber,
userName: this.formInline.updatePerName,
phone: this.formInline.updatePhoneNumber
}
if (this.formInline.updatePhoneNumber == '' || this.formInline.updatePerName == '') {
};
if (
this.formInline.updatePhoneNumber == "" ||
this.formInline.updatePerName == ""
) {
this.$Notice.error({
title: '提示',
desc: '请您填写正确的手机号码或姓名',
title: "提示",
desc: "请您填写正确的手机号码或姓名",
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({
title: '提示',
desc: '请您填写正确的手机号',
title: "提示",
desc: "请您填写正确的手机号",
duration: 2
})
return
});
return;
}
updateAccount(parmars).then(res => {
if (res.data.success == true) {
this.$Notice.success({
title: '提示',
desc: '修改成功',
title: "提示",
desc: "修改成功",
duration: 2
})
this.modal6 = false
this.SearchList()
});
this.modal6 = false;
this.SearchList();
}
if (res.data.success == false) {
this.$Notice.error({
title: '提示',
title: "提示",
desc: res.data.body.message,
duration: 2
})
this.modal6 = false
});
this.modal6 = false;
}
})
});
},
// 添加账户
addacount () {
addacount() {
const parmars = {
userCode: this.formInline.emailNumber,
userName: this.formInline.PerName,
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({
title: '提示',
desc: '请您填写正确的账号或姓名',
title: "提示",
desc: "请您填写正确的账号或姓名",
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({
title: '提示',
desc: '请您填写正确的手机号',
title: "提示",
desc: "请您填写正确的手机号",
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({
title: '提示',
desc: '请您填写正确邮箱账号',
title: "提示",
desc: "请您填写正确邮箱账号",
duration: 2
})
return
});
return;
}
addAccount(parmars).then(res => {
if (res.data.success == true) {
this.$Notice.success({
title: '提示',
desc: '添加成功',
title: "提示",
desc: "添加成功",
duration: 2
})
this.SearchList()
this.formInline.PhoneNumber = ''
this.formInline.PerName = ''
this.formInline.emailNumber = ''
});
this.SearchList();
this.formInline.PhoneNumber = "";
this.formInline.PerName = "";
this.formInline.emailNumber = "";
}
if (res.data.body.code == 0) {
this.Massage = res.data.body.message
this.Massage = res.data.body.message;
this.$Notice.error({
title: '提示',
title: "提示",
desc: this.Massage,
duration: 2
})
this.formInline.PhoneNumber = ''
this.formInline.PerName = ''
this.formInline.emailNumber = ''
});
this.formInline.PhoneNumber = "";
this.formInline.PerName = "";
this.formInline.emailNumber = "";
}
})
});
},
// 查询账户列表
SearchList (page) {
page = typeof (page) === 'number' ? page : 1
this.searchInfo.pageIndex = page
this.pageIndex = page
SearchList(page) {
page = typeof page === "number" ? page : 1;
this.searchInfo.pageIndex = page;
this.pageIndex = page;
const parmars = {
pageSize: this.searchInfo.pageSize,
pageIndex: this.searchInfo.pageIndex
}
};
queryaccountList(parmars).then(res => {
if (res.data.success == true) {
this.spinShow = false
this.totalSize = res.data.body.totalNumber
this.spinShow = false;
this.totalSize = res.data.body.totalNumber;
this.ajaxData = res.data.body.items.map((item, index) => {
item.id = item.id
item.userName = item.userName
item.userCode = item.userCode
item.createTime = item.createTime
return item
})
item.id = item.id;
item.userName = item.userName;
item.userCode = item.userCode;
item.createTime = item.createTime;
return item;
});
}
})
});
},
// 删除单条账户弹框
delateMaodal (DID) {
this.I = DID
this.modal2 = true
delateMaodal(DID) {
this.I = DID;
this.modal2 = true;
},
// 删除单条账户
delateAccount () {
delateAccount() {
const parmars = {
id: this.I
}
};
Delateaccount(parmars).then(res => {
if (res.data.success == true) {
this.modal2 = false
this.SearchList(this.pageT)
this.modal2 = false;
this.SearchList(this.pageT);
}
this.SearchList(this.pageT)
})
this.SearchList(this.pageT);
});
},
// 批量删除弹出框
delateall () {
delateall() {
if (this.checkboxList.length == 0 || this.delateArr.length == 0) {
this.$Notice.error({
title: '提示',
desc: '选项不能为空',
duration: '2'
})
return
title: "提示",
desc: "选项不能为空",
duration: "2"
});
return;
}
this.modal3 = true
this.modal3 = true;
},
// 批量删除账户
delateAll () {
delateAll() {
delateAllAccount(this.delateARR).then(res => {
if (res.data.success == true) {
this.$Notice.success({
title: '提示',
desc: '删除成功',
duration: '2'
})
this.modal3 = false
this.SearchList(this.pageT)
title: "提示",
desc: "删除成功",
duration: "2"
});
this.modal3 = false;
this.SearchList(this.pageT);
}
})
});
},
// 恢复初始密码弹窗
recoveryModal (ID) {
this.I = ID
this.modal1 = true
recoveryModal(ID) {
this.I = ID;
this.modal1 = true;
},
// 确认恢复初始密码
recovery () {
recovery() {
const parmars = {
id: this.I
}
};
recoveryPassword(parmars).then(res => {
if (res.data.success == true) {
this.$Notice.success({
title: '提示',
desc: '恢复密码成功',
duration: '2'
})
this.modal1 = false
title: "提示",
desc: "恢复密码成功",
duration: "2"
});
this.modal1 = false;
}
})
});
},
// 改变页码
pageChange (page) {
this.pageT = page
this.SearchList(page)
pageChange(page) {
this.pageT = page;
this.SearchList(page);
},
pageSizeChange (page) {
this.searchInfo.pageSize = page
this.pageSize = page
this.SearchList()
pageSizeChange(page) {
this.searchInfo.pageSize = page;
this.pageSize = page;
this.SearchList();
}
},
watch: {
checkboxList: {
handler: function (val, oldVal) {
handler: function(val, oldVal) {
if (this.ajaxData.length == 0) {
this.checked = false
return
this.checked = false;
return;
}
if (this.checkboxList.length === this.ajaxData.length) {
this.checked = true
this.checked = true;
} else {
this.checked = false
this.checked = false;
}
},
deep: true
}
},
mounted () {
this.SearchList()
mounted() {
this.SearchList();
}
}
};
</script>
<style scoped>
.account{
.account {
height: 100%;
width: 100%;
overflow: hidden;
}
.addAcount{
height:240px;
width:100%;
.addAcount {
height: 240px;
width: 100%;
}
.pageBottom{
.pageBottom {
height: 40px;
width: 84.4%;
background:#EDEDED;
background: #ededed;
position: fixed;
bottom: 0;
}
.accountMange{
.accountMange {
height: 74%;
}
.accountMange-top{
.accountMange-top {
width: 100%;
height: 78px;
}
.detailQQ{
.detailQQ {
height: 40px;
line-height: 40px;
width: 100%;
background: rgba(244,244,244,1);
background: rgba(244, 244, 244, 1);
/* margin-top: 10px */
}
.detailQQ :nth-child(2){
.detailQQ :nth-child(2) {
width: 80px;
display: inline-block;
}
.detailQQ :nth-child(3){
.detailQQ :nth-child(3) {
width: 180px;
display: inline-block;
}
.detailQQ :nth-child(4){
.detailQQ :nth-child(4) {
width: 180px;
display: inline-block;
}
</style>
<style>
.updateClassModal .ivu-input{
color: grey !important
.updateClassModal .ivu-input {
color: grey !important;
}
</style>
......@@ -2,140 +2,271 @@
<div class="emailMange">
<div class="addEmail">
<p style="margin-top:10px">
<span style="font-size:18px;color:#2d8cf0;margin-left:18px">新增接收邮箱</span>
<span style="margin-left:10px;color:Grey">绑定邮箱以接收简历,仅可绑定一个邮箱</span>
<span style="font-size:18px;color:#2d8cf0;margin-left:18px"
>新增接收邮箱</span
>
<span style="margin-left:10px;color:Grey"
>绑定邮箱以接收简历,仅可绑定一个邮箱</span
>
</p>
<Form :label-width="100" :model="formInline" :rules="ruleInline">
<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 label="请选择开始同步的时间" 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
label="请选择开始同步的时间"
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 label="邮箱密码" 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
label="邮箱密码"
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 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
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>
<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>
</div>
<div class="Emailmange">
<p style="height:40px;line-height:40px">
<span style="font-size:18px;color:#2d8cf0;margin-left:18px">邮箱管理</span>
<span style="margin-left:10px;color:Grey">解绑后不再接受该邮箱下的简历,之前接收的简历仍然保留。</span>
<span style="font-size:18px;color:#2d8cf0;margin-left:18px"
>邮箱管理</span
>
<span style="margin-left:10px;color:Grey"
>解绑后不再接受该邮箱下的简历,之前接收的简历仍然保留。</span
>
</p>
<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">
<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 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"
/>
<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>
<!-- <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">
<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)"/>
<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 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)"
/>
<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 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>
<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>
</div>
</div>
<!--同步失败-->
<Modal
v-model="modal1"
:closable="false"
:footer-hide="true"
width='250px'>
<Modal v-model="modal1" :closable="false" :footer-hide="true" width="250px">
<h3 style="text-align:center">提示</h3>
<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
v-model="modal2"
:closable="false"
:footer-hide="true"
width='270px'>
<Modal v-model="modal2" :closable="false" :footer-hide="true" width="270px">
<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> -->
<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
v-model="modal3"
:closable="false"
:footer-hide="true"
width='250px'>
<Modal v-model="modal3" :closable="false" :footer-hide="true" width="250px">
<h3 style="text-align:center">提示</h3>
<p style="text-align:center;line-height:40px">同步中,请稍后...</p>
</Modal>
<!-- 修改弹出框 -->
<Modal
v-model="modal4"
:closable="false"
width='460px'>
<Modal v-model="modal4" :closable="false" width="460px">
<span style="margin-left:180px;font-size:14px">修改绑定邮箱</span>
<div style="height:230px">
<Form>
<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 label="邮箱密码" 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
label="邮箱密码"
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 label="所属人" style=" position: absolute;top:220px;left: -100px" prop="UserName" :label-width="180">
<Input placeholder="请输入所属着真实的姓名" style="width:300px" v-model="Ublengs" :maxlength="5"/>
<FormItem
label="所属人"
style=" position: absolute;top:220px;left: -100px"
prop="UserName"
:label-width="180"
>
<Input
placeholder="请输入所属着真实的姓名"
style="width:300px"
v-model="Ublengs"
:maxlength="5"
/>
</FormItem>
</Form>
</div>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='updatapassT'>取消</Button>
<Button type='primary' @click="UpdateemailTwo" >保存</Button>
<div slot="footer" style="text-align:center">
<Button type="primary" @click="updatapassT">取消</Button>
<Button type="primary" @click="UpdateemailTwo">保存</Button>
</div>
</Modal>
<!-- 解绑弹出框 -->
<Modal
v-model="modal5"
:closable="false"
width='250px'>
<Modal v-model="modal5" :closable="false" width="250px">
<h3 style="text-align:center">提示</h3>
<p style="text-align:center">解绑后如你需要再次绑定该邮箱,需重新输入账号,密码等信息重新绑定,是否确定解绑?</p>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal5=false'>取消</Button>
<Button type='primary' @click="Unbinding">确认</Button>
<p style="text-align:center">
解绑后如你需要再次绑定该邮箱,需重新输入账号,密码等信息重新绑定,是否确定解绑?
</p>
<div slot="footer" style="text-align:center">
<Button type="primary" @click="modal5 = false">取消</Button>
<Button type="primary" @click="Unbinding">确认</Button>
</div>
</Modal>
<Modal
v-model="modal6"
:closable="false"
width='250px'>
<Modal v-model="modal6" :closable="false" width="250px">
<h3 style="text-align:center">提示</h3>
<p style="text-align:center">解绑后如你需要再次绑定该邮箱,需重新输入账号,密码等信息重新绑定,是否确定解绑?</p>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='pushlistModal6'>取消</Button>
<Button type='primary' @click="UntyingAll">确认</Button>
<p style="text-align:center">
解绑后如你需要再次绑定该邮箱,需重新输入账号,密码等信息重新绑定,是否确定解绑?
</p>
<div slot="footer" style="text-align:center">
<Button type="primary" @click="pushlistModal6">取消</Button>
<Button type="primary" @click="UntyingAll">确认</Button>
</div>
</Modal>
</div>
</template>
<script>
import { queryemailList, Synchronization, jiebangEmail, updateemailTWO, UntyingAll } from '../../api/stystem.server.js'
import moment from 'moment'
import {
queryemailList,
Synchronization,
jiebangEmail,
updateemailTWO,
UntyingAll
} from "../../api/stystem.server.js";
import moment from "moment";
export default {
data () {
data() {
return {
modal1: false,
modal2: false,
......@@ -143,27 +274,30 @@ export default {
modal4: false,
modal5: false,
modal6: false,
condition: '',
Massage: '',
pageT: '',
condition: "",
Massage: "",
pageT: "",
spinShow: true,
idAdmin: '',
admin: '',
NAme: '',
DATA: '',
Tname: '',
idAdmin: "",
admin: "",
NAme: "",
DATA: "",
Tname: "",
options3: {
disabledDate (date) {
return date && date.valueOf() > Date.now() || date.valueOf() < Date.now() - 3600 * 1000 * 30 * 24
disabledDate(date) {
return (
(date && date.valueOf() > Date.now()) ||
date.valueOf() < Date.now() - 3600 * 1000 * 30 * 24
);
}
},
UpassWord: '',
Uusername: '',
decisionStartTime: '',
Ublengs: '',
Uid: '',
UpassWord: "",
Uusername: "",
decisionStartTime: "",
Ublengs: "",
Uid: "",
UntyingAllARR: [],
Tblengs: '',
Tblengs: "",
checkboxList: [],
checked: false,
disabled: false,
......@@ -173,337 +307,357 @@ export default {
searchInfo: {
pageSize: 30,
pageIndex: 1,
id: ''
id: ""
},
formInline: {
emailNumber: '',
emailPsd: '',
UserName: ''
emailNumber: "",
emailPsd: "",
UserName: ""
},
ruleInline: {
emailNumber: [
// 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: [
{ required: true, message: '请输入正确的密码', trigger: 'blur' }
{ required: true, message: "请输入正确的密码", trigger: "blur" }
],
UserName: [
{ required: true, message: '请输入正确的姓名', trigger: 'blur' }
{ required: true, message: "请输入正确的姓名", trigger: "blur" }
]
},
ajaxData: [],
checkData: [] // 双向数据绑定的数组
}
};
},
methods: {
// 全选与反选
checkedAll: function () {
if (this.checked) { // 实现反选
this.checkboxList = []
} else { // 实现全选
this.checkboxList = []
this.ajaxData.forEach((item) => {
this.checkboxList.push(item.id)
this.UntyingAllARR.push(item.id)
})
checkedAll: function() {
if (this.checked) {
// 实现反选
this.checkboxList = [];
} else {
// 实现全选
this.checkboxList = [];
this.ajaxData.forEach(item => {
this.checkboxList.push(item.id);
this.UntyingAllARR.push(item.id);
});
}
},
// 绑定同步邮箱
bindingSynchronizat () {
if (this.formInline.emailNumber == '' || this.formInline.emailPsd == '' || this.formInline.UserName == '' || this.DATA == '') {
bindingSynchronizat() {
if (
this.formInline.emailNumber == "" ||
this.formInline.emailPsd == "" ||
this.formInline.UserName == "" ||
this.DATA == ""
) {
this.$Notice.error({
title: '提示',
desc: '请您填写完整的信息',
duration: '2'
})
return
title: "提示",
desc: "请您填写完整的信息",
duration: "2"
});
return;
}
this.disabled = true
this.modal3 = true
this.disabled = true;
this.modal3 = true;
const parmars = {
emailName: this.formInline.emailNumber,
emailPassword: this.formInline.emailPsd,
belongs: this.formInline.UserName,
syncStartDate: moment(this.DATA).format('YYYY-MM-DD HH:mm:ss')
}
Synchronization(parmars).then(res => {
syncStartDate: moment(this.DATA).format("YYYY-MM-DD HH:mm:ss")
};
Synchronization(parmars).then(
res => {
if (res.data.success == true) {
this.modal3 = false
this.modal2 = true
this.formInline.emailNumber = ''
this.formInline.emailPsd = ''
this.formInline.UserName = ''
this.DATA = ''
this.SearchList()
this.modal3 = false;
this.modal2 = true;
this.formInline.emailNumber = "";
this.formInline.emailPsd = "";
this.formInline.UserName = "";
this.DATA = "";
this.SearchList();
// this.disabled=false
}
if (res.data.success == false) {
this.modal3 = false
this.disabled = false
this.Massage = res.data.body.message
this.modal3 = false;
this.disabled = false;
this.Massage = res.data.body.message;
this.$Notice.error({
title: '提示',
title: "提示",
desc: this.Massage,
duration: 2
})
});
}
}, () => {
this.modal3 = false
},
() => {
this.modal3 = false;
// this.modal1=true
this.formInline.emailPsd = ''
})
this.formInline.emailPsd = "";
}
);
},
iKnow () {
this.modal2 = false,
this.disabled = false
iKnow() {
(this.modal2 = false), (this.disabled = false);
},
// 选择同步的时间
selectTime (b) {
this.DATA = b
selectTime(b) {
this.DATA = b;
},
// 查询邮箱列表
SearchList (page) {
page = typeof (page) === 'number' ? page : 1
this.searchInfo.pageIndex = page
this.pageIndex = page
SearchList(page) {
page = typeof page === "number" ? page : 1;
this.searchInfo.pageIndex = page;
this.pageIndex = page;
const parmars = {
pageSize: this.searchInfo.pageSize,
pageIndex: this.searchInfo.pageIndex
}
};
queryemailList(parmars).then(res => {
if (res.data.success == true) {
this.spinShow = false
this.totalSize = res.data.body.totalNumber
this.spinShow = false;
this.totalSize = res.data.body.totalNumber;
this.ajaxData = res.data.body.items.map((item, index) => {
item.syncStartDate = item.syncStartDate
item.syncFlag = item.syncFlag
item.createTime = item.createTime
item.belongs = item.belongs
item.emailName = item.emailName
item.id = item.id
item.STA = false
item.syncFlag = item.syncFlag
item.syncMailMsg = item.syncMailMsg
item.c = item.syncMailMsg == null ? item.syncMailMsg : item.syncMailMsg.substring(0, 2)
return item
})
item.syncStartDate = item.syncStartDate;
item.syncFlag = item.syncFlag;
item.createTime = item.createTime;
item.belongs = item.belongs;
item.emailName = item.emailName;
item.id = item.id;
item.STA = false;
item.syncFlag = item.syncFlag;
item.syncMailMsg = item.syncMailMsg;
item.c =
item.syncMailMsg == null
? item.syncMailMsg
: item.syncMailMsg.substring(0, 2);
return item;
});
}
})
});
},
// 改变页码
pageChange (page) {
this.pageT = page
this.SearchList(page)
pageChange(page) {
this.pageT = page;
this.SearchList(page);
},
pageSizeChange (page) {
this.searchInfo.pageSize = page
this.pageSize = page
this.SearchList()
pageSizeChange(page) {
this.searchInfo.pageSize = page;
this.pageSize = page;
this.SearchList();
},
// 修改邮箱弹出框
UpdateEMAIL (Tname, Tblengs, Tid) {
this.modal4 = true
this.Uusername = Tname
this.Ublengs = Tblengs
this.Uid = Tid
UpdateEMAIL(Tname, Tblengs, Tid) {
this.modal4 = true;
this.Uusername = Tname;
this.Ublengs = Tblengs;
this.Uid = Tid;
},
// 修改后重新绑定邮箱并保存
UpdateemailTwo () {
if (this.UpassWord == '' || this.Uusername == '' || this.Ublengs == '') {
UpdateemailTwo() {
if (this.UpassWord == "" || this.Uusername == "" || this.Ublengs == "") {
this.$Notice.error({
title: '提示',
desc: '请您填写完整的信息',
duration: '2'
})
return
title: "提示",
desc: "请您填写完整的信息",
duration: "2"
});
return;
}
const parmars = {
emailName: this.Uusername,
emailPassword: this.UpassWord,
belongs: this.Ublengs,
id: this.Uid
}
};
updateemailTWO(parmars).then(res => {
if (res.data.success == true) {
this.UpassWord = ''
this.modal4 = false
this.SearchList(this.pageT)
this.UpassWord = "";
this.modal4 = false;
this.SearchList(this.pageT);
this.$Notice.success({
title: '提示',
desc: '修改成功',
duration: '2'
})
title: "提示",
desc: "修改成功",
duration: "2"
});
} else {
this.$Notice.error({
title: '提示',
desc: '你填写的密码有误',
duration: '2'
})
this.UpassWord = ''
title: "提示",
desc: "你填写的密码有误",
duration: "2"
});
this.UpassWord = "";
}
})
});
},
// 解绑弹出框
UnbindingModal (Eid) {
this.NAme = Eid,
this.modal5 = true
UnbindingModal(Eid) {
(this.NAme = Eid), (this.modal5 = true);
},
// 确认解绑邮箱
Unbinding () {
Unbinding() {
jiebangEmail(this.NAme).then(res => {
if (res.data.success == true) {
this.$Notice.success({
title: '提示',
desc: '解绑成功',
title: "提示",
desc: "解绑成功",
duration: 2
})
this.modal5 = false
this.SearchList(this.pageT)
});
this.modal5 = false;
this.SearchList(this.pageT);
}
})
});
},
// 批量解绑弹出框
UntyingAllmodeal () {
UntyingAllmodeal() {
if (this.UntyingAllARR.length == 0) {
this.$Notice.error({
title: '提示',
desc: '选项不能为空',
title: "提示",
desc: "选项不能为空",
duration: 2
})
return
});
return;
}
this.modal6 = true
this.modal6 = true;
},
// 选择批量解绑的项
selectUntyingEle (id) {
this.UntyingAllARR.push(id)
selectUntyingEle(id) {
this.UntyingAllARR.push(id);
},
// 批量解绑邮箱
UntyingAll () {
UntyingAll() {
UntyingAll(this.UntyingAllARR).then(res => {
if (res.data.success == true) {
this.$Notice.success({
title: '提示',
desc: '解绑成功',
title: "提示",
desc: "解绑成功",
duration: 2
})
this.modal6 = false
this.SearchList(this.pageT)
});
this.modal6 = false;
this.SearchList(this.pageT);
}
})
});
},
pushlist () {
this.modal2 = false
this.SearchList(this.pageT)
pushlist() {
this.modal2 = false;
this.SearchList(this.pageT);
},
pushlistModal6 () {
this.modal6 = false
this.UntyingAllARR = []
this.SearchList(this.pageT)
pushlistModal6() {
this.modal6 = false;
this.UntyingAllARR = [];
this.SearchList(this.pageT);
},
isadminmethods () {
this.admin = localStorage.getItem('isADMIN')
const c = JSON.parse(this.admin)
this.idAdmin = c.isAdmin
isadminmethods() {
this.admin = localStorage.getItem("isADMIN");
const c = JSON.parse(this.admin);
this.idAdmin = c.isAdmin;
},
updatapassT () {
this.modal4 = false
this.UpassWord = ''
updatapassT() {
this.modal4 = false;
this.UpassWord = "";
},
changeStartTime: function (e, b) {
this.DATA = b
var time = e
var that = this
var days = new Date(new Date().getFullYear(), (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 === '') {
changeStartTime: function(e, b) {
this.DATA = b;
var time = e;
var that = this;
var days =
new Date(
new Date().getFullYear(),
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 = {
disabledDate (data) {
return data.valueOf() < 0
}
disabledDate(data) {
return data.valueOf() < 0;
}
};
} else {
this.decisionStartTime = {
disabledDate (data) {
if (that.qualityCheck.decisionEndTime === '') {
return new Date()
}
return data.valueOf() < startEndTime || data.valueOf() > endEndTime
disabledDate(data) {
if (that.qualityCheck.decisionEndTime === "") {
return new Date();
}
return data.valueOf() < startEndTime || data.valueOf() > endEndTime;
}
};
}
}
},
watch: {
checkboxList: {
handler: function (val, oldVal) {
handler: function(val, oldVal) {
if (this.checkboxList.length === this.ajaxData.length) {
this.checked = true
this.checked = true;
} else {
this.checked = false
this.checked = false;
}
},
deep: true
}
},
mounted () {
this.isadminmethods()
this.SearchList()
mounted() {
this.isadminmethods();
this.SearchList();
}
}
};
</script>
<style>
.addEmail{
.addEmail {
height: 220px;
}
.Emailmange{
min-height: 500px
.Emailmange {
min-height: 500px;
}
.emailList{
.emailList {
height: 40px;
line-height: 40px;
width:100%
width: 100%;
}
.emailList :nth-child(2){
.emailList :nth-child(2) {
width: 5%;
display: inline-block;
}
.emailList :nth-child(3){
.emailList :nth-child(3) {
width: 15%;
display: inline-block;
}
.emailList :nth-child(4){
.emailList :nth-child(4) {
display: inline-block;
}
.emailList :nth-child(5){
.emailList :nth-child(5) {
display: inline-block;
}
.emailList :nth-child(6){
.emailList :nth-child(6) {
display: inline-block;
}
.emailList :nth-child(7){
.emailList :nth-child(7) {
display: inline-block;
}
.emailList :nth-child(8){
.emailList :nth-child(8) {
width: 15%;
display: inline-block;
}
.buTon :nth-child(1){
.buTon :nth-child(1) {
width: 70px;
height: 40px;
background: #2d8cf0;
color:white
color: white;
}
.pageBottom{
.pageBottom {
height: 40px;
width: 84.4%;
background:#EDEDED;
background: #ededed;
position: fixed;
bottom: 0;
}
......
<template>
<div class="upload">
<div class="upload-left">
<div class='uploadC' style="background:rgba(244,244,244,1);height:300px">
<div class='upload-title'>
<Input type='text' v-model='fileName' style='width:70%;margin-left:4%;margin-top:40px'></Input>
<div class="uploadC" style="background:rgba(244,244,244,1);height:300px">
<div class="upload-title">
<Input
type="text"
v-model="fileName"
style="width:70%;margin-left:4%;margin-top:40px"
></Input>
<input
ref="input"
class='nativeInput'
class="nativeInput"
type="file"
:class="['prefixCls' + '-input']"
@change="handleChange"
:multiple="true"
:format="['pdf','doc','docx']"
:format="['pdf', 'doc', 'docx']"
: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'>
<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>
<p style="font-size:12px;margin-left:2%;text-align:center;height:40px;line-height:40px;width:90%">支持最多二十份简历批量上传</p>
<div class="contentTips">
<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>
<p
style="font-size:12px;margin-left:2%;text-align:center;height:40px;line-height:40px;width:90%"
>
支持最多二十份简历批量上传
</p>
</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>
<!-- 上传文件 -->
<Modal v-model='uploadModal' :closable='false' :mask-closable='false'>
<Modal v-model="uploadModal" :closable="false" :mask-closable="false">
<div>
<h4 style="font-size:20px;text-align:center;margin-bottom:20px">{{filetile}}</h4>
<div v-for='(item,index) in dataList' class='process' :key='index'>
<p style='padding-top:5px;'>{{item.name}}</p>
<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>
<h4 style="font-size:20px;text-align:center;margin-bottom:20px">
{{ filetile }}
</h4>
<div v-for="(item, index) in dataList" class="process" :key="index">
<p style="padding-top:5px;">{{ item.name }}</p>
<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 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>
<span
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 slot='footer' >
<p v-show="activeT==true" style="text-align:left">简历替换仅替换简历内容,不会影响简历状态。</p>
<Button @click='closeModal' v-show="activeT==true">完成</Button>
<div slot="footer">
<p v-show="activeT == true" style="text-align:left">
简历替换仅替换简历内容,不会影响简历状态。
</p>
<Button @click="closeModal" v-show="activeT == true">完成</Button>
</div>
</Modal>
<Modal
v-model="modal6"
width='280px'
:closable='false'
>
<div >
<Modal v-model="modal6" width="280px" :closable="false">
<div>
<h2 style="text-align: center;color:black">提示</h2>
<p>删除后不可恢复,是否确定永久删除简历?</p>
</div>
<div slot='footer' style="text-align:center">
<Button type='primary' @click='modal6=false'>取消</Button>
<Button type='primary' @click="delateONE" >确定</Button>
<div slot="footer" style="text-align:center">
<Button type="primary" @click="modal6 = false">取消</Button>
<Button type="primary" @click="delateONE">确定</Button>
</div>
</Modal>
</div>
<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>
<div style="width:100%;background:rgb(0,176,160); opacity: 0.7;overflow-y:auto;height:93%;">
<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>
<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 class="contentMASSAGE" v-for="(item,index) in ajaxData" :key="index">
<p @click="getResumeData(item.resumeId,item.uid)" style="margin-top:10px">
<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>
<div
class="contentMASSAGE"
v-for="(item, index) in ajaxData"
:key="index"
>
<p
@click="getResumeData(item.resumeId, item.uid)"
style="margin-top:10px"
>
<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 style="margin-top:0px;color:Grey">
<span style="color:Grey;margin:5px 0 0 10px;display:inline-block">{{item.createTime}}入库|</span>
<span>{{item.creator}}</span>
<span style="color:Grey;margin:5px 0 0 10px;display:inline-block"
>{{ item.createTime }}入库|</span
>
<span>{{ item.creator }}</span>
</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>
......@@ -84,121 +168,218 @@
</p>
<div style="width:100%;float:left;">
<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">
<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>
<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>
<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 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>
<div class="personalInformation-left">
<p style="margin-top:20px">姓名:{{resume&&resume.ownerName}}</p>
<p>联系电话:{{resume&&resume.ownerMobile}}</p>
<p>电子邮箱:{{resume&&resume.email}}</p>
<p>所在地:{{resume&&resume.locationCity}}</p>
<p>求职状态:{{resume&&resume.statusMessage}}</p>
<p>期望行业:{{resume&&resume.industries}}</p>
<p>期望职位:{{resume&&resume.expectTitles}}</p>
<p style="margin-top:20px">
姓名:{{ resume && resume.ownerName }}
</p>
<p>联系电话:{{ resume && resume.ownerMobile }}</p>
<p>电子邮箱:{{ resume && resume.email }}</p>
<p>所在地:{{ resume && resume.locationCity }}</p>
<p>求职状态:{{ resume && resume.statusMessage }}</p>
<p>期望行业:{{ resume && resume.industries }}</p>
<p>期望职位:{{ resume && resume.expectTitles }}</p>
</div>
<div class="personalInformation-right">
<p style="margin-top:20px">年龄:{{resume&&resume.ownerAge}}</p>
<p>职位:{{resume&&resume.ownerExpectTitles}}</p>
<p>学历:{{resume&&resume.ownerHighestDegree}}</p>
<p>经验:{{resume&&resume.workYearsOriginal}}</p>
<p style="margin-top:30px">期望薪资:{{resume&&resume.expectSalary}}</p>
<p>期望地区:{{resume&&resume.city}}</p>
<p style="margin-top:20px">
年龄:{{ resume && resume.ownerAge }}
</p>
<p>职位:{{ resume && resume.ownerExpectTitles }}</p>
<p>学历:{{ resume && resume.ownerHighestDegree }}</p>
<p>经验:{{ resume && resume.workYearsOriginal }}</p>
<p style="margin-top:30px">
期望薪资:{{ resume && resume.expectSalary }}
</p>
<p>期望地区:{{ resume && resume.city }}</p>
</div>
</div>
<div class="workExperience" v-show="roList.length !==0 ">
<div class="workExperience" v-show="roList.length !== 0">
<p class="bestmessage">
<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>
<span style="margin-left:7px;font-size:16px;color:#0092FF">工作经历</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>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>工作经历</span
>
</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">
<p style="height:28px;line-height:28px;font-size:14px;">
<span style="margin-left:30px">{{item.startTime}}-{{item.endTime}}</span>
<span style="margin-left:18px"><span>{{item.company}}<span>({{item.workTime}})</span></span></span>
<span style="margin-left:30px"
>{{ 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>{{item.industry}}</span>
<span>{{item.companyType}}</span>
<span>{{ item.industry }}</span>
<span>{{ item.companyType }}</span>
</span>
</p>
<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>
</div>
<div class="workExperience-bottom">{{item.desc}}</div>
<div class="workExperience-bottom">{{ item.desc }}</div>
</div>
</div>
<div class="projectExperience" v-show="rpList.length !==0 ">
<div class="projectExperience" v-show="rpList.length !== 0">
<p class="bestmessage">
<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>
<span style="margin-left:7px;font-size:16px;color:#0092FF">项目经历</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>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>项目经历</span
>
</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">
<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:18px"><span>{{item.name}}<span></span></span></span>
<span style="margin-left:30px"
>{{ 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>{{item.post}}</span>
<span>{{ item.post }}</span>
</span>
</p>
</div>
<div class="projectExperience-bottom">{{item.desc}}</div>
<div class="projectExperience-bottom">{{ item.desc }}</div>
</div>
</div>
<div class="internshipExperience" v-show="riList.length !==0 ">
<div class="internshipExperience" v-show="riList.length !== 0">
<p class="bestmessage">
<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>
<span style="margin-left:7px;font-size:16px;color:#0092FF">实习经历</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>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>实习经历</span
>
</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">
<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:18px"><span>{{item.company}}<span></span></span></span>
<span style="margin-left:30px"
>{{ 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>{{item.industry}}</span>
<span>{{ item.industry }}</span>
</span>
</p>
<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>
</div>
<div class="internshipExperience-bottom">{{item.desc}}</div>
<div class="internshipExperience-bottom">{{ item.desc }}</div>
</div>
</div>
<div class="educationalExperience" v-show="reList.length !==0">
<div class="educationalExperience" v-show="reList.length !== 0">
<p class="bestmessage">
<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>
<span style="margin-left:7px;font-size:16px;color:#0092FF">教育经历</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>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>教育经历</span
>
</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-left">
<p style="line-height:25px;margin-top:20px">{{item.school}}(({{item.startYear}}.{{item.startMonth}}-{{item.endYear}}.{{item.endMonth}}))</p>
<p style="margin-top:20px;">专业:{{item.major}}</p>
<p style="line-height:25px;margin-top:20px">
{{ item.school }}(({{ item.startYear }}.{{
item.startMonth
}}-{{ item.endYear }}.{{ item.endMonth }}))
</p>
<p style="margin-top:20px;">专业:{{ item.major }}</p>
</div>
<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 class="Self-evaluation" v-show="JSON.stringify(resume)!=='{}'">
<div class="Self-evaluation" v-show="JSON.stringify(resume) !== '{}'">
<p class="bestmessage">
<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>
<span style="margin-left:7px;font-size:16px;color:#0092FF">自我评价</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>
<span style="margin-left:7px;font-size:16px;color:#0092FF"
>自我评价</span
>
</p>
<div class="evaluation-content">
{{resume&&resume.selfEvaluate}}
{{ resume && resume.selfEvaluate }}
</div>
</div>
</div>
......@@ -207,80 +388,83 @@
</div>
</template>
<script>
import { getuploadNumber, uploadfile, serchList, serchRESUMEdetail, deleteREsumeUPLOad } from '../../api/upload.server'
import {
sapi
} from '../../config'
import { uploadFile } from '../../service/ajax'
getuploadNumber,
uploadfile,
serchList,
serchRESUMEdetail,
deleteREsumeUPLOad
} from "../../api/upload.server";
import { sapi } from "../../config";
import { uploadFile } from "../../service/ajax";
export default {
data () {
data() {
return {
uploadList: [],
dataList: [],
fileName: '',
fileName: "",
ajaxData: [],
delateARRALL: [],
replaceArr: [],
downloadId: '',
downloadId: "",
pageIndex: 1,
pageSize: 30,
isReplace: true,
newArr: [],
replaceName: '',
replaceName: "",
searchInfo: {
pageSize: 30,
pageIndex: 1
},
Sid: '',
Sid: "",
single: true,
checkboxList: [],
filetile: '上传中请稍后...',
filetile: "上传中请稍后...",
totalSize: null,
uploadModal: false,
accept: '.doc,.docx,.pdf',
accept: ".doc,.docx,.pdf",
fileSize: 2048,
progressStatus: {
0: 'active',
2: 'wrong',
1: 'wrong'
0: "active",
2: "wrong",
1: "wrong"
},
files: null,
activeT: false,
change: false,
massage: '',
Massage: '',
Code: '',
massage: "",
Massage: "",
Code: "",
action: `${sapi}/api/resume/upload`,
batchNum: '',
batchNum: "",
modal3: false,
modal1: false,
modal2: false,
modal6: false,
Filename: '',
uploadNUmber: '',
Filename: "",
uploadNUmber: "",
// uploadList:[],
a: [],
files: null,
b: '',
b: "",
uploadFile: [],
resume: {}, // 简历基本详情
riList: [], // 实习经历列表
roList: [], // 工作经历列表
rpList: [], // 项目经历列表
reList: [], // 教育经历列表
serchID: ''
}
serchID: ""
};
},
methods: {
handleChange (e) {
this.fileName = ''
this.dataList = []
const files = e.target.files
this.files = e.target.files
handleChange(e) {
this.fileName = "";
this.dataList = [];
const files = e.target.files;
this.files = e.target.files;
for (const key in files) {
if (key != 'length' && key != 'item') {
const file = files[key]
if (key != "length" && key != "item") {
const file = files[key];
const temp = {
name: file.name,
data: file,
......@@ -288,158 +472,160 @@ export default {
type: file.type,
size: file.size,
title: null,
status: 'active'
}
this.dataList.push(temp)
this.fileName += files[key].name + ';'
status: "active"
};
this.dataList.push(temp);
this.fileName += files[key].name + ";";
}
}
if (!files) {
return
return;
}
this.$refs.input.value = null
this.$refs.input.value = null;
},
uploadBtn () {
uploadBtn() {
if (this.dataList.length < 1) {
this.$Notice.error({
title: '提示',
desc: '请您选择文件在上传',
title: "提示",
desc: "请您选择文件在上传",
duration: 2
})
return
});
return;
}
if (this.dataList.length > 20) {
this.$Notice.error({
title: '提示',
desc: '批量上传文件不能大于20份',
title: "提示",
desc: "批量上传文件不能大于20份",
duration: 2
})
this.$refs.input.value = ''
this.fileName = ''
this.dataList = []
return
});
this.$refs.input.value = "";
this.fileName = "";
this.dataList = [];
return;
}
if (this.handleMaxSize()) {
this.$Notice.error({
title: '提示',
desc: '单份文件不能大于2MB',
title: "提示",
desc: "单份文件不能大于2MB",
duration: 2
})
this.$refs.input.value = ''
this.fileName = ''
this.dataList = []
return
});
this.$refs.input.value = "";
this.fileName = "";
this.dataList = [];
return;
}
this.uploadModal = true
this.filetile = '上传中请稍后...'
this.uploadModal = true;
this.filetile = "上传中请稍后...";
uploadFile({
headers: this.headers,
data: this.dataList,
batchNum: this.batchNum,
action: this.action,
batchNum: this.batchNum,
appendName: 'batchNum',
appendFile: 'recFile',
appendName: "batchNum",
appendFile: "recFile",
onProgress: e => {
setTimeout(() => {
this.handleProgress(e)
}, 200)
this.handleProgress(e);
}, 200);
},
onSuccess: res => {
setTimeout(() => {
this.handleSuccess(res, this.files)
this.activeT = true
}, 1000)
this.handleSuccess(res, this.files);
this.activeT = true;
}, 1000);
},
onError: (err, response) => {
this.handleError(err, response, this.files)
this.handleError(err, response, this.files);
}
})
});
},
handleProgress (e) {
handleProgress(e) {
this.dataList.map(item => {
item.percentage = e.percent - 5
})
item.percentage = e.percent - 5;
});
},
selectfile (data, name) {
this.replaceName = name
selectfile(data, name) {
this.replaceName = name;
if (data == false) {
this.replaceArr = this.replaceArr.filter(item => item !== this.replaceName)
this.replaceArr = this.replaceArr.filter(
item => item !== this.replaceName
);
} else {
this.replaceArr.push(this.replaceName)
this.replaceArr.push(this.replaceName);
}
},
handleSuccess (res, files) {
const data = res.body
this.filetile = '上传完成'
handleSuccess(res, files) {
const data = res.body;
this.filetile = "上传完成";
for (const key in data) {
const code = data[key].code
this.Code = data[key].code
this.Massage = data[key].message
const code = data[key].code;
this.Code = data[key].code;
this.Massage = data[key].message;
if (data[key].code == 1) {
this.replaceArr.push(key)
this.replaceArr.push(key);
}
this.dataList.map(item => {
item.sStatus = true
item.sStatus = true;
if (key == item.name) {
item.title = this.Massage
if (item.Code == 2) { progressStatus = { 2: 'wrong' } }
item.status = this.progressStatus[code]
item.Code = this.Code
item.percentage = 100
item.title = this.Massage;
if (item.Code == 2) {
progressStatus = { 2: "wrong" };
}
})
item.status = this.progressStatus[code];
item.Code = this.Code;
item.percentage = 100;
}
});
}
},
handleError (err, res, files) {
},
handleMaxSize () {
let isLimit = false
handleError(err, res, files) {},
handleMaxSize() {
let isLimit = false;
this.dataList.map(item => {
if (item.size / 1024 > this.fileSize) {
isLimit = true
isLimit = true;
}
})
return isLimit
});
return isLimit;
},
selFiles () {
this.$refs.input.click()
selFiles() {
this.$refs.input.click();
},
closeModal () {
this.uploadModal = false
this.$refs.input.value = ''
this.dataList = []
closeModal() {
this.uploadModal = false;
this.$refs.input.value = "";
this.dataList = [];
// this.replaceArr = []
this.fileName = ''
this.activeT = false
this.filetile = '上传中请稍后...'
this.serchlist()
this.fileName = "";
this.activeT = false;
this.filetile = "上传中请稍后...";
this.serchlist();
},
// 下载单条简历
downloadONE (downID) {
window.location.href = `${sapi}/api/resume/download/formatted/one?resumeId=${downID}`
downloadONE(downID) {
window.location.href = `${sapi}/api/resume/download/formatted/one?resumeId=${downID}`;
},
// 获取上传批次号
getnumber () {
getnumber() {
return getuploadNumber().then(res => {
this.batchNum = res.data.body
})
this.batchNum = res.data.body;
});
},
// 改变页码
pageChange (page) {
this.SearchList(page)
pageChange(page) {
this.SearchList(page);
},
pageSizeChange (page) {
this.searchInfo.pageSize = page
this.pageSize = page
this.SearchList()
pageSizeChange(page) {
this.searchInfo.pageSize = page;
this.pageSize = page;
this.SearchList();
},
// 查询记录列表
serchlist (page) {
page = typeof (page) === 'number' ? page : 1
this.searchInfo.pageIndex = page
this.pageIndex = page
serchlist(page) {
page = typeof page === "number" ? page : 1;
this.searchInfo.pageIndex = page;
this.pageIndex = page;
const parmars = {
pageSize: this.searchInfo.pageSize,
pageIndex: this.searchInfo.pageIndex,
......@@ -447,112 +633,112 @@ export default {
batchNum: this.batchNum,
replaceFileNameList: this.replaceArr
}
}
};
serchList(parmars).then(res => {
if (res.data.success == true) {
this.replaceArr = []
this.totalSize = res.data.body.totalNumber
this.replaceArr = [];
this.totalSize = res.data.body.totalNumber;
this.ajaxData = res.data.body.items.map((item, index) => {
item.resumeId = item.resumeId
item.name = item.name
item.mobile = item.mobile
item.age = item.age
item.gender = item.gender
item.workYears = item.workYears
item.degree = item.degree
item.expectedTitle = item.expectedTitle
item.status = item.status
item.uid = item.uid
item.creator = item.creator == '' ? item.creator : item.creator.split('_')[0]
item.createTime = item.createTime
return item
})
item.resumeId = item.resumeId;
item.name = item.name;
item.mobile = item.mobile;
item.age = item.age;
item.gender = item.gender;
item.workYears = item.workYears;
item.degree = item.degree;
item.expectedTitle = item.expectedTitle;
item.status = item.status;
item.uid = item.uid;
item.creator =
item.creator == "" ? item.creator : item.creator.split("_")[0];
item.createTime = item.createTime;
return item;
});
}
})
});
},
// 获取简历详情页数据
getResumeData (sid, Uid) {
this.downloadId = sid
getResumeData(sid, Uid) {
this.downloadId = sid;
const parmars = {
uid: Uid
}
};
serchRESUMEdetail(parmars).then(res => {
this.resume = res.data.body.resume
this.riList = res.data.body.riList
this.roList = res.data.body.roList
this.reList = res.data.body.reList
this.rpList = res.data.body.rpList
})
this.resume = res.data.body.resume;
this.riList = res.data.body.riList;
this.roList = res.data.body.roList;
this.reList = res.data.body.reList;
this.rpList = res.data.body.rpList;
});
},
// 删除提示
delateONEModal (vid) {
this.Sid = vid
this.modal6 = true
delateONEModal(vid) {
this.Sid = vid;
this.modal6 = true;
},
// 删除单条简历
delateONE () {
this.delateARRALL.push(this.Sid)
delateONE() {
this.delateARRALL.push(this.Sid);
deleteREsumeUPLOad(this.delateARRALL).then(res => {
if (res.data.success == true) {
this.modal6 = false
this.resume = {}
this.riList = []
this.roList = []
this.rpList = []
this.reList = []
this.downloadId = ''
this.serchlist()
this.modal6 = false;
this.resume = {};
this.riList = [];
this.roList = [];
this.rpList = [];
this.reList = [];
this.downloadId = "";
this.serchlist();
}
})
});
}
},
async mounted () {
await this.getnumber()
this.serchlist()
async mounted() {
await this.getnumber();
this.serchlist();
}
}
};
</script>
<style lang='less' scoped>
.upload{
<style lang="less" scoped>
.upload {
width: 100%;
height:100%;
background: #F2F2F2;
height: 100%;
background: #f2f2f2;
overflow: hidden;
}
.upload-left{
.upload-left {
width: 32%;
float: left;
height:100%;
height: 100%;
// overflow: hidden;
}
.upload-right{
.upload-right {
width: 67%;
float: left;
overflow-y: auto;
overflow-x: hidden;
height: 100%;
background:rgb(255,255,255)
background: rgb(255, 255, 255);
}
.detailUload{
.detailUload {
width: 100%;
margin-top: 3px;
}
.leftcontrentFotter{
.leftcontrentFotter {
width: 100%;
float: left;
height: 70%;
overflow: hidden;
}
.contentMASSAGE{
width:96%;
height:67px;
margin-top:0px;
.contentMASSAGE {
width: 96%;
height: 67px;
margin-top: 0px;
margin-left: 2%;
background: white;
border-radius: 5px
border-radius: 5px;
}
.detailTW{
.detailTW {
height: 30px;
width: 370px;
position: relative;
......@@ -560,179 +746,179 @@ export default {
left: 20px;
/* display: block */
}
.detailTB{
background:#F4F4F4;
color:black;
.detailTB {
background: #f4f4f4;
color: black;
position: relative;
top:20px;
left: 390px
top: 20px;
left: 390px;
}
.format{
.format {
position: relative;
top: 60px;
left: 30px;
}
.number{
.number {
position: relative;
top: 90px;
left: 160px
left: 160px;
}
.clickUpload{
.clickUpload {
position: relative;
top: 120px;
left: 190px
left: 190px;
}
.upload-pageBottom{
.upload-pageBottom {
width: 26.2%;
text-align: center;
height:40px;
height: 40px;
position: fixed;
bottom:0px;
background:rgba(0,176,160,0.7)
bottom: 0px;
background: rgba(0, 176, 160, 0.7);
}
.uploadC{
.uploadC {
height: 30%;
width:100%;
width: 100%;
float: left;
.upload-title{
.upload-title {
height: 100%;
.nativeInput{
display:none
.nativeInput {
display: none;
}
}
.contentTips{
.contentTips {
// margin:20px 10px 30px 10px;
.p{
.p {
// margin:10px;
}
}
.title{
float:right
.title {
float: right;
}
.process{
margin-top:10px;
.process {
margin-top: 10px;
}
}
.personalInformation{
width:860px;
.personalInformation {
width: 860px;
height: 300px;
float: left;
}
.personalInformation-left{
.personalInformation-left {
width: 400px;
height:260px;
height: 260px;
margin-left: 30px;
float: left;
font-size: 14px
font-size: 14px;
}
.personalInformation-left p{
line-height: 28px
.personalInformation-left p {
line-height: 28px;
}
.personalInformation-right{
.personalInformation-right {
width: 400px;
height:260px;
height: 260px;
font-size: 14px;
float: left;
}
.personalInformation-right p{
line-height: 28px
.personalInformation-right p {
line-height: 28px;
}
.workExperience{
.workExperience {
width: 860px;
float: left;
}
.workExperience-detail{
.workExperience-detail {
width: 860px;
float: left;
margin-top: 20px;
}
.workExperience-top{
.workExperience-top {
width: 860px;
height: 56px;
background: rgba(246,246,246,1);
background: rgba(246, 246, 246, 1);
}
.workExperience-bottom{
width:640px;
.workExperience-bottom {
width: 640px;
margin-left: 71px;
margin-top: 20px;
line-height: 24px
line-height: 24px;
}
.projectExperience{
.projectExperience {
width: 860px;
margin-top: 30px;
float: left;
}
.projectExperience-detail{
.projectExperience-detail {
width: 860px;
float: left;
margin-top: 20px;
}
.projectExperience-top{
.projectExperience-top {
width: 860px;
height: 34px;
line-height: 34px;
background: rgba(246,246,246,1);
background: rgba(246, 246, 246, 1);
}
.projectExperience-bottom{
width:640px;
.projectExperience-bottom {
width: 640px;
margin-left: 71px;
margin-top: 20px;
line-height: 24px
line-height: 24px;
}
.internshipExperience{
.internshipExperience {
width: 860px;
margin-top: 30px;
float: left;
}
.internshipExperience-detail{
.internshipExperience-detail {
width: 860px;
float: left;
margin-top: 20px;
}
.internshipExperience-top{
.internshipExperience-top {
width: 860px;
height: 56px;
line-height: 34px;
background: rgba(246,246,246,1);
background: rgba(246, 246, 246, 1);
}
.internshipExperience-bottom{
width:640px;
.internshipExperience-bottom {
width: 640px;
margin-left: 71px;
margin-top: 20px;
line-height: 24px
line-height: 24px;
}
.educationalExperience{
.educationalExperience {
width: 860px;
float: left;
}
.educationalExperience-left{
.educationalExperience-left {
width: 430px;
float: left;
margin-left: 30px;
font-size: 14px
font-size: 14px;
}
.educationalExperience-right{
.educationalExperience-right {
width: 380px;
float: left;
font-size: 14px
font-size: 14px;
}
.Self-evaluation{
.Self-evaluation {
width: 860px;
float: left;
}
.evaluation-content{
.evaluation-content {
width: 720px;
margin-left:30px;
margin-left: 30px;
float: left;
margin-top: 30px;
line-height: 30px;
margin-bottom: 20px
margin-bottom: 20px;
}
.bestmessage{
.bestmessage {
width: 860px;
height: 24px;
float: left;
margin-top: 20px
margin-top: 20px;
}
</style>
import Vue from 'vue'
import Router from 'vue-router'
import Vue from "vue";
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 login = r => require.ensure([], () => r(require('@/page/login/login.vue')), 'login')
const update = r => require.ensure([], () => r(require('@/page/login/update.vue')), 'update')
const pdfdetail = r => require.ensure([], () => r(require('@/page/resume/pdfdetail.vue')), 'pdfdetail')
const resumeDetail = r => require.ensure([], () => 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')
const login = r =>
require.ensure([], () => r(require("@/page/login/login.vue")), "login");
const update = r =>
require.ensure([], () => r(require("@/page/login/update.vue")), "update");
const pdfdetail = r =>
require.ensure(
[],
() => r(require("@/page/resume/pdfdetail.vue")),
"pdfdetail"
);
const resumeDetail = r =>
require.ensure(
[],
() => 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注释
Vue.use(Router)
Vue.use(Router);
export default new Router({
mode: 'history',
mode: "history",
routes: [
{
path: '/',
redirect: '/home'
}, {
path: '/login',
name: 'login',
path: "/",
redirect: "/home"
},
{
path: "/login",
name: "login",
component: login,
meta: {
allowBack: false
}
},
{
path: '/sweepCode',
name: 'sweepCode',
path: "/sweepCode",
name: "sweepCode",
component: sweepCode
},
{
path: '/update',
name: 'update',
path: "/update",
name: "update",
component: update
},
{
path: '/getimage',
name: 'getimage',
path: "/getimage",
name: "getimage",
component: getimage
},
{
path: '/resumeDetail',
name: 'resumeDetail',
path: "/resumeDetail",
name: "resumeDetail",
component: resumeDetail
},
{
path: '/pdfdetail',
name: 'pdfdetail',
path: "/pdfdetail",
name: "pdfdetail",
component: pdfdetail
},
{
path: '/editor',
name: 'editor',
path: "/editor",
name: "editor",
component: editor
},
{
path: '/home',
name: 'home',
path: "/home",
name: "home",
component: home,
children: [
{
path: '/interview',
name: 'interview',
path: "/interview",
name: "interview",
component: interview
},
{
path: '/allResume',
name: 'allResume',
path: "/allResume",
name: "allResume",
component: allResume
},
{
path: '/channel/:channelname',
name: 'channel',
path: "/channel/:channelname",
name: "channel",
component: channel
},
{
path: '/account',
name: 'account',
path: "/account",
name: "account",
component: account
},
{
path: '/emailMange',
name: 'emailMange',
path: "/emailMange",
name: "emailMange",
component: emailMange
},
{
path: '/QRcode',
name: 'QRcode',
path: "/QRcode",
name: "QRcode",
component: QRcode
},
{
path: '/upload',
name: 'upload',
path: "/upload",
name: "upload",
component: upload
}
]
}
]
})
});
// https://github.com/ElemeFE/element/blob/dev/packages/upload/src/ajax.js
import axios from './http.service.js'
function getError (action, option, xhr) {
const msg = `fail to post ${action} ${xhr.status}'`
const err = new Error(msg)
err.status = xhr.status
err.method = 'post'
err.url = action
return err
import axios from "./http.service.js";
function getError(action, option, xhr) {
const msg = `fail to post ${action} ${xhr.status}'`;
const err = new Error(msg);
err.status = xhr.status;
err.method = "post";
err.url = action;
return err;
}
function getBody (xhr) {
const text = xhr.responseText || xhr.response
function getBody(xhr) {
const text = xhr.responseText || xhr.response;
if (!text) {
return text
return text;
}
try {
return JSON.parse(text)
return JSON.parse(text);
} catch (e) {
return text
return text;
}
}
export function uploadFile (option) {
const action = option.action
const formData = new FormData()
export function uploadFile(option) {
const action = option.action;
const formData = new FormData();
if (option.data) {
option.data.map(item => {
formData.append(option.appendFile, item.data)
})
formData.append(option.appendFile, item.data);
});
}
formData.append(option.appendName, option.batchNum)
axios.post(action, formData, {
onUploadProgress: function (progressEvent) {
formData.append(option.appendName, option.batchNum);
axios
.post(action, formData, {
onUploadProgress: function(progressEvent) {
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) {
if (typeof XMLHttpRequest === 'undefined') {
return
export default function upload(option) {
if (typeof XMLHttpRequest === "undefined") {
return;
}
const xhr = new XMLHttpRequest()
const action = option.action
const xhr = new XMLHttpRequest();
const action = option.action;
if (xhr.upload) {
xhr.upload.onprogress = function progress (e) {
xhr.upload.onprogress = function progress(e) {
if (e.total > 0) {
e.percent = (e.loaded / e.total * 100 - 10)
}
option.onProgress(e)
e.percent = (e.loaded / e.total) * 100 - 10;
}
option.onProgress(e);
};
}
const formData = new FormData()
const formData = new FormData();
if (option.data) {
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) {
option.onError(e)
}
xhr.onerror = function error(e) {
option.onError(e);
};
xhr.onload = function onload () {
xhr.onload = function onload() {
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)
if ('withCredentials' in xhr) {
xhr.withCredentials = true
xhr.open("post", action, true);
if ("withCredentials" in xhr) {
xhr.withCredentials = true;
}
const headers = option.headers || {}
const headers = option.headers || {};
if (headers['X-Requested-With'] !== null) {
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest')
if (headers["X-Requested-With"] !== null) {
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
}
for (const item in headers) {
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 {
set: function (name, value) { Cookie.set(name, value) },
get: function (name) {
return Cookie.get(name)
set: function(name, value) {
Cookie.set(name, value);
},
remove: function (name) { Cookie.remove(name) }
}
get: function(name) {
return Cookie.get(name);
},
remove: function(name) {
Cookie.remove(name);
}
};
import axios from 'axios'
import Promise from './promise.service.js'
import { Notice } from 'iview'
import Vue from 'vue'
import router from '../router/index.js'
import store from '../store'
import axios from "axios";
import Promise from "./promise.service.js";
import { Notice } from "iview";
import Vue from "vue";
import router from "../router/index.js";
import store from "../store";
var instance = axios.create({})
instance.defaults.timeout = 3600000
instance.defaults.withCredentials = true
var instance = axios.create({});
instance.defaults.timeout = 3600000;
instance.defaults.withCredentials = true;
instance.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'
instance.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'
let needLoadingRequestCount = 0
function startLoading () {
store.state.loading = true
instance.defaults.headers.post["Content-Type"] =
"application/x-www-form-urlencoded";
instance.defaults.headers["X-Requested-With"] = "XMLHttpRequest";
let needLoadingRequestCount = 0;
function startLoading() {
store.state.loading = true;
}
function endLoading () {
store.state.loading = false
function endLoading() {
store.state.loading = false;
}
function showFullScreenLoading () {
function showFullScreenLoading() {
if (needLoadingRequestCount === 0) {
startLoading()
startLoading();
}
needLoadingRequestCount++
needLoadingRequestCount++;
}
function tryHideFullScreenLoading () {
if (needLoadingRequestCount <= 0) return
needLoadingRequestCount--
function tryHideFullScreenLoading() {
if (needLoadingRequestCount <= 0) return;
needLoadingRequestCount--;
if (needLoadingRequestCount === 0) {
setTimeout(() => {
endLoading()
}, 200)
endLoading();
}, 200);
}
}
const needLoading = ['resume/findListByQueryVO', 'sendMail/sendEmailTemplate', 'resume/forwardResume', 'interview/findListByQueryVO', 'resume/delete']
instance.interceptors.request.use(function (config) {
const needLoading = [
"resume/findListByQueryVO",
"sendMail/sendEmailTemplate",
"resume/forwardResume",
"interview/findListByQueryVO",
"resume/delete"
];
instance.interceptors.request.use(
function(config) {
// 在发送请求之前做些什么
if (!config.headers['Content-Type']) {
config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
if (!config.headers["Content-Type"]) {
config.headers["Content-Type"] = "application/x-www-form-urlencoded";
}
const url = config.url.split('api/')[1]
const headers = config.headers
if (headers.status != 'init' && needLoading.includes(url)) {
showFullScreenLoading()
const url = config.url.split("api/")[1];
const headers = config.headers;
if (headers.status != "init" && needLoading.includes(url)) {
showFullScreenLoading();
}
delete headers.status
return config
}, function (error) {
delete headers.status;
return config;
},
function(error) {
// 对请求错误做些什么
return Promise.reject(error)
})
instance.interceptors.response.use(function (response) {
return Promise.reject(error);
}
);
instance.interceptors.response.use(
function(response) {
// 在发送请求之前做些什么
const errorInfo = {
900: 'cookie已失效,请重新登录',
901: '',
902: '您的账号已在其他地方登录,如不是您个人操作,请及时修改密码'
}
tryHideFullScreenLoading()
900: "cookie已失效,请重新登录",
901: "",
902: "您的账号已在其他地方登录,如不是您个人操作,请及时修改密码"
};
tryHideFullScreenLoading();
if (response.status >= 200 && response.status < 300) {
const code = response.data && response.data.body && response.data.body.code || ''
if (code == '900' || code == '901' || code == '902') {
if (!store.state.cookieTips && code != '901') {
store.dispatch('cookieTipsShow', true)
const code =
(response.data && response.data.body && response.data.body.code) || "";
if (code == "900" || code == "901" || code == "902") {
if (!store.state.cookieTips && code != "901") {
store.dispatch("cookieTipsShow", true);
Notice.error({
render: (h) => {
return h('div', {
render: h => {
return h(
"div",
{
style: {
paddingRight: '5px',
fontSize: '14px',
lineHeight: '20px',
color: '#17233d'
paddingRight: "5px",
fontSize: "14px",
lineHeight: "20px",
color: "#17233d"
}
}, errorInfo[code])
},
errorInfo[code]
);
}
})
});
setTimeout(() => {
store.dispatch('cookieTipsHide', false)
}, 2000)
store.dispatch("cookieTipsHide", false);
}, 2000);
}
router.replace({ name: 'login' })
router.replace({ name: "login" });
}
if (response.data.success) {
return Promise.resolve(response)
return Promise.resolve(response);
} else {
return Promise.resolve(response)
return Promise.resolve(response);
}
} else {
// return Promise.resolve(response);
}
return response
}, error => {
tryHideFullScreenLoading()
return response;
},
error => {
tryHideFullScreenLoading();
// Notice.error({desc:`${error.response.data.body.message}`})
})
export default instance
}
);
export default instance;
// export default axios
import localstorage from './localstorage.service.js'
import localstorage from "./localstorage.service.js";
export default {
init: function (router) {
init: function(router) {
router.beforeEach((to, form, next) => {
const token = localstorage.get('token')
if (to.meta && !to.meta.allowBack && window.history && window.history.pushState) { // 登录页面不能后退
history.pushState(null, null, document.URL)
const token = localstorage.get("token");
if (
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') {
next()
return
if (
to.name == "login" ||
to.name == "update" ||
to.name == "sweepCode" ||
to.name == "resumeDetail" ||
to.name == "pdfdetail"
) {
next();
return;
}
if (!token) {
window.location.href = `${window.location.origin}/login`
return
window.location.href = `${window.location.origin}/login`;
return;
}
next()
})
next();
});
}
}
};
export default {
set: function (name, value) { window.localStorage.setItem(name, value) },
get: function (name) {
return window.localStorage.getItem(name)
set: function(name, value) {
window.localStorage.setItem(name, value);
},
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) {
let timer = null
delay = delay || 200
export function _debounce(fn, delay) {
let timer = null;
delay = delay || 200;
return function () {
const args = arguments
return function() {
const args = arguments;
if (timer) {
clearTimeout(timer)
clearTimeout(timer);
}
timer = setTimeout(function () {
timer = null
fn.apply(this, args)
}.bind(this), delay)
}
timer = setTimeout(
function() {
timer = null;
fn.apply(this, args);
}.bind(this),
delay
);
};
}
export function _throttle (fn, interval) {
let last = null
let timer = null
interval = interval || 200
return function () {
const self = this
const args = arguments
const now = +new Date()
export function _throttle(fn, interval) {
let last = null;
let timer = null;
interval = interval || 200;
return function() {
const self = this;
const args = arguments;
const now = +new Date();
if (last && now - last < interval) {
clearTimeout(timer)
timer = setTimeout(function () {
last = now
fn.apply(self, args)
}, interval)
clearTimeout(timer);
timer = setTimeout(function() {
last = now;
fn.apply(self, args);
}, interval);
} else {
last = now
fn.apply(self, args)
}
last = now;
fn.apply(self, args);
}
};
}
export function emailValidata (rule, value, callback) {
const field = rule.field
const reg = rule.pattern
export function emailValidata(rule, value, callback) {
const field = rule.field;
const reg = rule.pattern;
switch (field) {
case 'receiveEmail':
case "receiveEmail":
if (!value) {
this.tip = true
this.isDisable = false
callback(new Error('收件人不能为空'))
this.tip = true;
this.isDisable = false;
callback(new Error("收件人不能为空"));
} else if (rule.pattern && !rule.pattern.test(value)) {
this.tip = true
this.isDisable = false
callback(new Error('请输入正确收件人地址'))
this.tip = true;
this.isDisable = false;
callback(new Error("请输入正确收件人地址"));
} else {
this.tip = false
this.isDisable = true
callback()
this.tip = false;
this.isDisable = true;
callback();
}
break
case 'theme':
break;
case "theme":
if (!value) {
this.isDisable = false
callback(new Error('主题能为空'))
this.isDisable = false;
callback(new Error("主题能为空"));
} else {
this.isDisable = true
callback()
this.isDisable = true;
callback();
}
break
case 'copyname':
break;
case "copyname":
if (value && reg && !reg.test(value)) {
this.isDisable = false
callback(new Error('请输入正确抄送地址'))
this.isDisable = false;
callback(new Error("请输入正确抄送地址"));
} else {
this.isDisable = true
callback()
this.isDisable = true;
callback();
}
break
case 'UpdateOWER':
break;
case "UpdateOWER":
if (!value) {
this.isDisable = false
callback(new Error('邀约人不能为空'))
this.isDisable = false;
callback(new Error("邀约人不能为空"));
} else {
this.isDisable = true
callback()
this.isDisable = true;
callback();
}
break
case 'UpdateTIME':
break;
case "UpdateTIME":
if (!value) {
this.isDisable = false
callback(new Error('面试时间不能为空'))
this.isDisable = false;
callback(new Error("面试时间不能为空"));
} else {
this.isDisable = true
callback()
this.isDisable = true;
callback();
}
break
case 'UpdateVIEW':
break;
case "UpdateVIEW":
if (!value) {
this.isDisable = false
callback(new Error('面试官不能为空'))
this.isDisable = false;
callback(new Error("面试官不能为空"));
} else {
this.isDisable = true
callback()
this.isDisable = true;
callback();
}
break
break;
default:
callback()
break
callback();
break;
}
}
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 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) {
if (this.emailMassage == true) {
callback(new Error('你尚未选择简历,请先选择简历'))
callback(new Error("你尚未选择简历,请先选择简历"));
} else if (this.allEmailVilitor == true) {
callback(new Error('不能选择多份简历,请选择单份简历'))
callback(new Error("不能选择多份简历,请选择单份简历"));
} else {
callback()
callback();
}
}
export function validator (rule, value, callback) {
if (!value) this.$Notice.warning({ title: '提示', desc: '请输入您要通知的面试官' })
callback()
export function validator(rule, value, callback) {
if (!value)
this.$Notice.warning({ title: "提示", desc: "请输入您要通知的面试官" });
callback();
}
// // action.js
import * as types from './muationsType'
import * as types from "./muationsType";
const action = {
cookieTipsShow ({ commit }, value) {
commit(types.COOKIE_SHOW, value)
cookieTipsShow({ commit }, value) {
commit(types.COOKIE_SHOW, value);
},
addInterviewee ({ commit }, value) {
commit(types.ADD_INTERVIEWEE, value)
addInterviewee({ commit }, value) {
commit(types.ADD_INTERVIEWEE, value);
},
removeInterviewee ({ commit }, value) {
commit(types.REMOVE_INTERVIEWEE, value)
removeInterviewee({ commit }, value) {
commit(types.REMOVE_INTERVIEWEE, value);
},
clearInterviewee ({ commit }, value) {
commit(types.CLEAR_INTERVIEWEE, value)
clearInterviewee({ commit }, value) {
commit(types.CLEAR_INTERVIEWEE, value);
}
}
export default action
};
export default action;
import Vuex from 'vuex'
import Vue from 'vue'
import mutations from './mutations.js'
import actions from './actions.js'
import Vuex from "vuex";
import Vue from "vue";
import mutations from "./mutations.js";
import actions from "./actions.js";
Vue.use(Vuex)
Vue.use(Vuex);
const state = {
cookieTips: false,
interviewee: [],
channelInterviewee: [],
loading: false
}
};
export default new Vuex.Store({
mutations,
actions,
state
})
});
export const COOKIE_SHOW = 'COOKIE_SHOW'
export const COOKIE_HIDE = 'COOKIE_HIDE'
export const ADD_INTERVIEWEE = 'ADD_INTERVIEWEE'
export const REMOVE_INTERVIEWEE = 'REMOVE_INTERVIEWEE'
export const CLEAR_INTERVIEWEE = 'CLEAR_INTERVIEWEE'
export const COOKIE_SHOW = "COOKIE_SHOW";
export const COOKIE_HIDE = "COOKIE_HIDE";
export const ADD_INTERVIEWEE = "ADD_INTERVIEWEE";
export const REMOVE_INTERVIEWEE = "REMOVE_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 {
[COOKIE_SHOW] (state, value) {
state.cookieTips = value || true
[COOKIE_SHOW](state, value) {
state.cookieTips = value || true;
},
[COOKIE_HIDE] (state, value) {
state.cookieTips = value || false
[COOKIE_HIDE](state, value) {
state.cookieTips = value || false;
},
[ADD_INTERVIEWEE] (state, object) {
let flag = false
const data = object.data
if (object.type == 'channel') {
console.log(data)
[ADD_INTERVIEWEE](state, object) {
let flag = false;
const data = object.data;
if (object.type == "channel") {
console.log(data);
state.channelInterviewee.map(item => {
if (data && item.id == data.id) {
flag = true
flag = true;
}
})
});
if (!flag) {
state.channelInterviewee.push(data)
state.channelInterviewee.push(data);
}
} else {
state.interviewee.map(item => {
if (data && item.id == data.id) {
flag = true
flag = true;
}
})
});
if (!flag) {
state.interviewee.push(data)
state.interviewee.push(data);
}
}
},
[REMOVE_INTERVIEWEE] (state, object) {
const data = object.data
if (object.type == 'channel') {
[REMOVE_INTERVIEWEE](state, object) {
const data = object.data;
if (object.type == "channel") {
state.channelInterviewee.map((item, index) => {
if (data && item.id == data.id) {
state.channelInterviewee.splice(index, 1)
state.channelInterviewee.splice(index, 1);
}
})
});
} else {
state.interviewee.map((item, index) => {
if (data && item.id == data.id) {
state.interviewee.splice(index, 1)
state.interviewee.splice(index, 1);
}
})
});
}
},
[CLEAR_INTERVIEWEE] (state, object) {
const type = object.type
if (type == 'channel') {
state.channelInterviewee = []
console.log('===')
[CLEAR_INTERVIEWEE](state, object) {
const type = object.type;
if (type == "channel") {
state.channelInterviewee = [];
console.log("===");
} 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