This commit is contained in:
2021-01-18 09:16:14 +08:00
parent 324767e6c2
commit 92a419cdb6
21 changed files with 10842 additions and 12199 deletions

12019
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,10 @@
"lint": "vue-cli-service lint"
},
"dependencies": {
"axios": "^0.21.0",
"core-js": "^3.6.5",
"element-ui": "^2.14.1",
"postcss": "^8.1.10",
"vue": "^2.6.11",
"vue-router": "^3.2.0",
"vuex": "^3.4.0"

View File

@@ -1,32 +1,3 @@
<template>
<div id="app">
<div id="nav">
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link>
</div>
<router-view />
</div>
</template>
<style lang="less">
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
#nav {
padding: 30px;
a {
font-weight: bold;
color: #2c3e50;
&.router-link-exact-active {
color: #42b983;
}
}
}
</style>
</template>

11
src/assets/css/base.css Normal file
View File

@@ -0,0 +1,11 @@
html,body {
width: 100%;
height: 100%;
margin: 0;
padding:0;
}
.el-step__title {
font-size: 12px;
}

BIN
src/assets/wzx.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

BIN
src/assets/wzx2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

View File

@@ -0,0 +1,59 @@
<template>
<div>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>正在查看 <i class="redz">xxxxxx</i> 入职资料</span>
</div>
<el-form ref="form" label-width="100px">
<el-form-item label="身份证:">
<a href="../assets/wzx.jpg"> <img src="../assets/wzx.jpg" alt="" class="pic"/></a>
<a href="../assets/wzx.jpg"> <img src="../assets/wzx.jpg" alt="" class="pic"/></a>
</el-form-item>
<el-form-item label="银行卡:">
<a href="../assets/wzx.jpg"> <img src="../assets/wzx.jpg" alt=""/></a>
</el-form-item>
<el-form-item label="学籍证明:">
<a href="../assets/wzx.jpg"> <img src="../assets/wzx.jpg" alt=""/></a>
</el-form-item>
<el-form-item label="其他:">
<a href="../assets/wzx.jpg"> <img src="../assets/wzx.jpg" alt=""/></a>
<a href="../assets/wzx.jpg"> <img src="../assets/wzx.jpg" alt=""/></a>
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
export default {
data() {
return {
idCard: "", //身份证
bankCard: "", //银行卡
studentStatusCertificate: "" //学籍证明
};
}
};
</script>
<style>
img {
width: 250px;
height: 150px;
margin-right: 15px;
}
.box-card {
margin-top: 20px;
}
.redz {
color: lightcoral;
font-style: normal;
}
.clearfix {
margin-bottom: 20px;
}
.rightbutton {
float: right;
}
</style>

View File

@@ -0,0 +1,279 @@
<template>
<div class="isituation">
<el-page-header @back="goBack" content="入职情况"> </el-page-header>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>正在查看 <i class="redz">xxxxxx</i> 入职情况</span>
<div class="rightbutton">
<el-button type="danger" @click="add">添加入职情况</el-button>
</div>
</div>
<!-- 下方内容 -->
<div>
<el-table :data="tableData" border style="width: 100%">
<el-table-column prop="entryTime" label="入职时间" width="100">
</el-table-column>
<el-table-column prop="entrySalary" label="入职薪资" width="65">
</el-table-column>
<el-table-column prop="subsidy" label="补助" width="65">
</el-table-column>
<el-table-column prop="entryPosition" label="入职岗位" width="70">
</el-table-column>
<el-table-column
prop="emergencyContact"
label="紧急联系人"
width="65"
>
</el-table-column>
<el-table-column prop="name" label="姓名" width="65">
</el-table-column>
<el-table-column prop="telephone" label="电话"> </el-table-column>
<el-table-column prop="homeAddress" label="家庭住址">
</el-table-column>
<el-table-column prop="currentAddress" label="现住址">
</el-table-column>
<el-table-column prop="other" label="其他"> </el-table-column>
<el-table-column label="操作">
<template>
<el-button size="mini" type="danger" @click="edit"
>编辑</el-button
>
<el-button size="mini" type="danger" @click="viewEntryInformation"
>详情</el-button
>
</template>
</el-table-column>
</el-table>
</div>
</el-card>
<!-- 弹框 -->
<el-dialog
:title="this.title == false ? `编辑信息` : `添加入职情况`"
:visible.sync="aisDialogVisible"
center
>
<el-form ref="form" :model="form" label-width="100px">
<el-form-item label="入职时间">
<el-date-picker
type="date"
placeholder="确定面试者何时入职"
v-model="form.entryTime"
style="width: 100%"
></el-date-picker>
</el-form-item>
<el-form-item label="入职薪资">
<el-input v-model="form.entrySalary"></el-input>
</el-form-item>
<el-form-item label="补助">
<el-input v-model="form.subsidy"></el-input>
</el-form-item>
<el-form-item label="入职岗位">
<el-input v-model="form.entryPosition"></el-input>
</el-form-item>
<el-form-item label="入职资料">
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="entryInformation"
>
<el-button size="small" type="primary">点击上传身份证</el-button>
<div slot="tip" class="el-upload__tip">
只能上传jpg/png文件且不超过500kb
</div>
</el-upload>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="entryInformation"
>
<el-button size="small" type="primary">点击上传银行卡</el-button>
<div slot="tip" class="el-upload__tip">
只能上传jpg/png文件且不超过500kb
</div>
</el-upload>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="entryInformation"
>
<el-button size="small" type="primary">点击上传学籍证明</el-button>
<div slot="tip" class="el-upload__tip">
只能上传jpg/png文件且不超过500kb
</div>
</el-upload>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="entryInformation"
>
<el-button size="small" type="primary">点击上传其他资料</el-button>
<div slot="tip" class="el-upload__tip">
只能上传jpg/png文件且不超过500kb
</div>
</el-upload>
</el-form-item>
<el-form-item label="紧急联系人">
<el-input v-model="form.emergencyContact"></el-input>
</el-form-item>
<el-form-item label="姓名">
<el-input v-model="form.name"></el-input>
</el-form-item>
<el-form-item label="电话">
<el-input v-model="form.telephone"></el-input>
</el-form-item>
<el-form-item label="家庭住址">
<el-input v-model="form.homeAddress"></el-input>
</el-form-item>
<el-form-item label="现住址">
<el-input v-model="form.currentAddress"></el-input>
</el-form-item>
<el-form-item label="其他">
<el-input type="textarea" v-model="form.other"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="aisDialogVisible = false"> </el-button>
<el-button type="primary" @click="aisDialogVisible = false"
> </el-button
>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
title: false,
invitingPerson: "", //邀约人
typeOfInvitation: "", //邀约类型
invitationTime: "", //邀约时间
interviewPosition: "", //面试职位
invitationDetails: "", //邀约详情
whetherToFaceOrNot: "", //是否到面
remarks: "", //备注
// 添加面试情况弹框
aisDialogVisible: false,
// 弹框内容
form: {
entryTime: "", //入职时间
entrySalary: "", //入职薪资
subsidy: "", //补助
entryPosition: "", //入职岗位
emergencyContact: "", //紧急联系人
name: "", //姓名
telephone: "", //电话
homeAddress: "", //家庭住址
currentAddress: "", //现住址
other: "" //其他
},
entryInformation: [], //入职资料
// 展示列表
tableData: [
{
entryTime: "2020-11-12", //入职时间
entrySalary: "3000", //入职薪资
subsidy: "无", //补助
entryPosition: "前端", //入职岗位
emergencyContact: "谢谢谢", //紧急联系人
name: "蟹蟹蟹", //姓名
telephone: "13562691187", //电话
homeAddress: "山东省济南市历城区港沟街道小汉峪", //家庭住址
currentAddress: "山东省济南市历城区港沟街道小汉峪", //现住址
other:
"山东省济南市历城区港沟街道小汉峪山东省济南市历城区港沟街道小汉峪山东省济南市历城区港沟街道小汉峪山东省济南市历城区港沟街道小汉峪" //其他
}
]
};
},
methods: {
goBack() {
this.$router.push("/");
},
// 添加邀约情况
add() {
this.title = true;
this.aisDialogVisible = true;
},
// 编辑信息
edit() {
this.title = false;
this.aisDialogVisible = true;
},
// 上传入职资料
handleRemove(file, entryInformation) {
console.log(file, entryInformation);
},
handlePreview(file) {
console.log(file);
},
handleExceed(files, entryInformation) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${
files.length
} 个文件,共选择了 ${files.length + entryInformation.length} 个文件`
);
},
beforeRemove(file) {
return this.$confirm(`确定移除 ${file.name}`);
},
// 查看入职资料
viewEntryInformation() {
this.$router.push("/entryinformation");
}
}
};
</script>
<style lang="less" scoped>
.el-page-header__content {
font-size: 18px;
color: #f6f8fa;
}
.isituation {
height: 100%;
// background-image: url(../assets/wzx2.jpg);
// background-repeat: no-repeat; //不重复
// background-size: 100%; // 满屏
}
.box-card {
margin-top: 20px;
}
.redz {
color: lightcoral;
font-style: normal;
}
.clearfix {
margin-bottom: 20px;
}
.rightbutton {
float: right;
}
</style>

View File

@@ -1,114 +0,0 @@
<template>
<div class="hello">
<h1>{{ msg }}</h1>
<p>
For a guide and recipes on how to configure / customize this project,<br />
check out the
<a href="https://cli.vuejs.org" target="_blank" rel="noopener"
>vue-cli documentation</a
>.
</p>
<h3>Installed CLI Plugins</h3>
<ul>
<li>
<a
href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-babel"
target="_blank"
rel="noopener"
>babel</a
>
</li>
<li>
<a
href="https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-plugin-eslint"
target="_blank"
rel="noopener"
>eslint</a
>
</li>
</ul>
<h3>Essential Links</h3>
<ul>
<li>
<a href="https://vuejs.org" target="_blank" rel="noopener">Core Docs</a>
</li>
<li>
<a href="https://forum.vuejs.org" target="_blank" rel="noopener"
>Forum</a
>
</li>
<li>
<a href="https://chat.vuejs.org" target="_blank" rel="noopener"
>Community Chat</a
>
</li>
<li>
<a href="https://twitter.com/vuejs" target="_blank" rel="noopener"
>Twitter</a
>
</li>
<li>
<a href="https://news.vuejs.org" target="_blank" rel="noopener">News</a>
</li>
</ul>
<h3>Ecosystem</h3>
<ul>
<li>
<a href="https://router.vuejs.org" target="_blank" rel="noopener"
>vue-router</a
>
</li>
<li>
<a href="https://vuex.vuejs.org" target="_blank" rel="noopener">vuex</a>
</li>
<li>
<a
href="https://github.com/vuejs/vue-devtools#vue-devtools"
target="_blank"
rel="noopener"
>vue-devtools</a
>
</li>
<li>
<a href="https://vue-loader.vuejs.org" target="_blank" rel="noopener"
>vue-loader</a
>
</li>
<li>
<a
href="https://github.com/vuejs/awesome-vue"
target="_blank"
rel="noopener"
>awesome-vue</a
>
</li>
</ul>
</div>
</template>
<script>
export default {
name: "HelloWorld",
props: {
msg: String
}
};
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="less">
h3 {
margin: 40px 0 0;
}
ul {
list-style-type: none;
padding: 0;
}
li {
display: inline-block;
margin: 0 10px;
}
a {
color: #42b983;
}
</style>

View File

@@ -0,0 +1,341 @@
<template>
<div class="isituation">
<el-page-header @back="goBack" content="面试情况页面"> </el-page-header>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span
>正在查看
<i class="redz">{{ this.$route.query.uname }}</i> 的面试情况</span
>
<div class="rightbutton">
<el-button type="danger" @click="addInterviewSituation"
>添加面试情况</el-button
>
</div>
</div>
<!-- 下方内容 -->
<div>
<el-table :data="tableData" border style="width: 100%">
<el-table-column prop="arrivaltime" label="到面时间" width="180">
</el-table-column>
<el-table-column
prop="nameofinterviewer"
label="面试官姓名"
width="180"
>
</el-table-column>
<el-table-column prop="interviewdetails" label="面试详情">
</el-table-column>
<el-table-column prop="interviewresults" label="面试结果">
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button size="mini" type="danger" @click="edit(scope.row)"
>面试编辑</el-button
>
</template>
</el-table-column>
</el-table>
</div>
</el-card>
<!-- 弹框 -->
<el-dialog
:title="this.title == false ? `编辑信息` : `添加面试情况`"
:visible.sync="aisDialogVisible"
width="30%"
center
>
<el-form ref="form" :model="form" label-width="100px">
<el-form-item label="到面时间">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="form.arrivaltime"
style="width: 100%"
></el-date-picker>
</el-form-item>
<el-form-item label="面试官姓名">
<el-input v-model="form.nameofinterviewer"></el-input>
</el-form-item>
<el-form-item label="面试详情">
<el-input type="textarea" v-model="form.interviewdetails"></el-input>
</el-form-item>
<el-form-item label="面试结果">
<el-radio-group v-model="form.interviewresults">
<el-radio label="复试"></el-radio>
<el-radio label="待跟进"></el-radio>
<el-radio label="淘汰"></el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="aisDialogVisible = false"> </el-button>
<el-button type="primary" @click="addmian"
> </el-button
>
</span>
</el-dialog>
<!-- 试岗 -->
<el-card class="box-card">
<div slot="header" class="clearfix">
<div class="rightbutton">
<el-button type="danger" @click="addTrialPost"
>添加试岗情况</el-button
>
</div>
</div>
<!-- 下方内容 -->
<div>
<el-table :data="tableData2" border style="width: 100%">
<el-table-column prop="testtime" label="试岗时间"> </el-table-column>
<el-table-column prop="totry" label="是否试岗"> </el-table-column>
<el-table-column prop="trialdetails" label="试岗详情">
</el-table-column>
<el-table-column prop="testresults" label="试岗结果">
</el-table-column>
<el-table-column prop="toposition" label="是否到岗">
</el-table-column>
<el-table-column prop="positiontime" label="到岗时间">
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button size="mini" type="danger" @click="edit1(scope.row)"
>试岗编辑</el-button
>
</template>
</el-table-column>
</el-table>
</div>
</el-card>
<!-- 弹框 -->
<el-dialog
:title="this.title2 == false ? `编辑试岗信息` : `添加试岗情况`"
:visible.sync="aisDialogVisible2"
width="30%"
center
>
<el-form ref="form" :model="form2" label-width="100px">
<el-form-item label="试岗时间">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="form2.testtime"
style="width: 100%"
></el-date-picker>
</el-form-item>
<el-form-item label="是否试岗">
<el-radio label="1" v-model="form2.totry"></el-radio>
<el-radio label="0" v-model="form2.totry"></el-radio>
</el-form-item>
<el-form-item label="试岗详情">
<el-input type="textarea" v-model="form2.trialdetails"></el-input>
</el-form-item>
<el-form-item label="试岗结果">
<el-radio label="1" v-model="form2.testresults">入职</el-radio>
<el-radio label="0" v-model="form2.testresults">试岗失败</el-radio>
</el-form-item>
<el-form-item label="是否到岗">
<el-radio label="1" v-model="form2.toposition"></el-radio>
<el-radio label="0" v-model="form2.toposition"></el-radio>
</el-form-item>
<el-form-item label="到岗时间">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="form2.positiontime"
style="width: 100%"
></el-date-picker>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="aisDialogVisible2 = false"> </el-button>
<el-button type="primary" @click="subadd"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
// 标题
title: false,
title2: false,
// 添加面试情况弹框
aisDialogVisible: false,
aisDialogVisible2: false,
// 弹框内容
form: {
},
form2: {
testtime: "", //试岗时间
totry: "", //是否试岗
trialdetails: "", //试岗详情
testresults: "", //试岗结果
positiontime: "", //到岗时间
toposition: "", //是否到岗
},
tableData: [
],
tableData2: [
{
testTime: "2020-04-05", //试岗时间
toTry: "是", //是否试岗
trialDetails: "可以入职", //试岗详情
testResults: "试岗失败", //试岗结果
positionTime: "2020-04-05", //到岗时间
toPosition: "是", //是否到岗
},
],
};
},
methods: {
addmian(){
console.log(this.form);
this.form.interviewerid=this.$route.query.uid
if (
this.form.arrivaltime != "" &&
this.form.nameofinterviewer != "" &&
this.form.interviewdetails != "" &&
this.form.interviewresults != ""
) {
this.form.arrivaltime =
new Date(this.form.arrivaltime).getFullYear() +
"/" +
parseInt(new Date(this.form.arrivaltime).getMonth() + 1) +
"/" +
new Date(this.form.arrivaltime).getDate();
if(this.title){
this.$http("/insertInterviewResult",{params:this.form}).then((res)=>{
console.log(res)
if(res.data.code==200){
this.aisDialogVisible=false
}
})
}else{
this.$http("/updateInterviewResult",{params:this.form}).then((res)=>{
console.log(res)
if(res.data.code==200){
this.aisDialogVisible=false
}
})
}
}else{
this.$message({
type: "error",
message: "请先完善信息",
});
}
},
subadd() {
console.log(this.form2);
this.form2.interviewerid=this.$route.query.uid
if (
this.form2.testtime != "" &&
this.form2.totry != "" &&
this.form2.trialdetails != "" &&
this.form2.testresults != "" &&
this.form2.positiontime &&
this.form2.toposition
) {
this.form2.testtime =
new Date(this.form2.testtime).getFullYear() +
"/" +
parseInt(new Date(this.form2.testtime).getMonth() + 1) +
"/" +
new Date(this.form2.testtime).getDate();
this.form2.positiontime =
new Date(this.form2.positiontime).getFullYear() +
"/" +
parseInt(new Date(this.form2.positiontime).getMonth() + 1) +
"/" +
new Date(this.form2.positiontime).getDate();
if(this.title2){
this.$http("/insertTestResult",{params:this.form2}).then((res)=>{
console.log(res)
if(res.data.code==200){
this.aisDialogVisible2=false
}
})
}else{
this.$http("/updateTestResult",{params:this.form2}).then((res)=>{
console.log(res)
if(res.data.code==200){
this.aisDialogVisible2=false
}
})
}
}else{
this.$message({
type: "error",
message: "请先完善信息",
});
}
},
goBack() {
this.$router.push("/");
},
// 添加面试情况
addInterviewSituation() {
this.title = true;
this.aisDialogVisible = true;
},
// 编辑信息
edit(e) {
this.title = false;
this.form=e
console.log(this.form)
this.aisDialogVisible = true;
},
edit1(e) {
this.title = false;
this.form2=e
console.log(this.form2)
this.aisDialogVisible2 = true;
},
addTrialPost() {
this.title2 = true;
this.aisDialogVisible2 = true;
},
},
mounted() {
this.$http
.get("/findTestResults", {
params: { interviewerid: this.$route.query.uid },
})
.then((res) => {
console.log(res);
this.tableData2 = res.data.resp;
});
this.$http
.get("/findInterviewResults", {
params: { interviewerid: this.$route.query.uid },
})
.then((res) => {
console.log(res);
this.tableData = res.data.resp;
});
},
};
</script>
<style lang="less" scoped>
.box-card {
margin-top: 20px;
}
.redz {
color: lightcoral;
font-style: normal;
}
.clearfix {
margin-bottom: 20px;
}
.rightbutton {
float: right;
}
</style>

View File

@@ -0,0 +1,237 @@
<template>
<div class="isituation">
<el-page-header @back="goBack" content="邀约面试情况"> </el-page-header>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span
>正在查看
<i class="redz">{{ this.$route.query.uname }}</i> 邀约情况</span
>
<div class="rightbutton">
<el-button type="danger" @click="add">添加邀约情况</el-button>
</div>
</div>
<!-- 下方内容 -->
<div>
<el-table :data="tableData" border style="width: 100%">
<el-table-column prop="invitingperson" label="邀约人" width="180">
</el-table-column>
<el-table-column label="邀约类型" width="180">
<template slot-scope="scope">
<div>{{scope.row.typeofinvitation==1?'已面':'待跟进'}}</div>
</template>
</el-table-column>
<el-table-column label="邀约时间">
<template slot-scope="scope">
<div>
{{
new Date(scope.row.invitationtime).getFullYear() +
"-" +
parseInt(new Date(scope.row.invitationtime).getMonth() + 1) +
"-" +
new Date(scope.row.invitationtime).getDate()
}}
</div>
</template>
</el-table-column>
<el-table-column prop="interviewposition" label="面试职位">
</el-table-column>
<el-table-column prop="invitationdetails" label="邀约详情">
</el-table-column>
<el-table-column label="是否到面">
<template slot-scope="scope">
<div>{{scope.row.whethertofaceornot==1?'是':'否'}}</div>
</template>
</el-table-column>
<el-table-column prop="remarks" label="备注"> </el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button size="mini" type="danger" @click="edit(scope.row)"
>编辑</el-button
>
</template>
</el-table-column>
</el-table>
</div>
</el-card>
<!-- 弹框 -->
<el-dialog
:title="this.title == false ? `编辑信息` : `添加邀约情况`"
:visible.sync="aisDialogVisible"
width="30%"
center
>
<el-form ref="form" :model="form" label-width="100px">
<el-form-item label="邀约人">
<el-input v-model="form.invitingperson"></el-input>
</el-form-item>
<el-form-item label="邀约类型">
<el-radio-group v-model="form.typeofinvitation">
<el-radio label="1" v-model="form.typeofinvitation">以面</el-radio>
<el-radio label="0" v-model="form.typeofinvitation"
>待跟进</el-radio
>
</el-radio-group>
</el-form-item>
<el-form-item label="邀约时间">
<el-date-picker
type="date"
placeholder="确定面试者何时到场"
v-model="form.invitationtime"
style="width: 100%"
></el-date-picker>
</el-form-item>
<el-form-item label="面试职位">
<el-input v-model="form.interviewposition"></el-input>
</el-form-item>
<el-form-item label="邀约详情">
<el-input type="textarea" v-model="form.invitationdetails"></el-input>
</el-form-item>
<el-form-item label="是否到面">
<el-radio label="1" v-model="form.whethertofaceornot"></el-radio>
<el-radio label="0" v-model="form.whethertofaceornot"></el-radio>
</el-form-item>
<el-form-item label="备注">
<el-input type="textarea" v-model="form.remarks"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="aisDialogVisible = false"> </el-button>
<!-- aisDialogVisible = false" -->
<el-button type="primary" @click="addsub">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
title: false,
// 添加面试情况弹框
aisDialogVisible: false,
// 弹框内容
form: {
invitingperson: "", //邀约人
typeofinvitation: "", //邀约类型
invitationtime: "", //邀约时间
interviewposition: "", //面试职位
invitationdetails: "", //邀约详情
whethertofaceornot: "", //是否到面
remarks: "", //备注
},
// 展示列表
tableData: [],
};
},
methods: {
addsub() {
console.log(this.form);
if (
this.form.invitingperson != "" &&
this.form.typeofinvitation &&
this.form.invitationtime != "" &&
this.form.interviewposition != "" &&
this.form.invitationdetails != "" &&
this.whethertofaceornot != "" &&
this.form.remarks != ""
) {
this.form.interviewerid = this.$route.query.uid;
this.form.invitationtime =
new Date(this.form.invitationtime).getFullYear() +
"/" +
parseInt(new Date(this.form.invitationtime).getMonth() + 1) +
"/" +
new Date(this.form.invitationtime).getDate();
if (this.title) {
this.$http
.get("/insertInvitation", { params: this.form })
.then((res) => {
console.log(res);
if (res.data.code == 200) {
this.aisDialogVisible = false;
}
});
} else {
this.$http
.get("/updateInvitation", { params: this.form })
.then((res) => {
console.log(res);
if (res.data.code == 200) {
this.aisDialogVisible = false;
}
});
}
}else{
this.$message({
type: "error",
message: "请先完善信息",
});
}
},
goBack() {
this.$router.push("/");
},
// 添加邀约情况
add() {
this.title = true;
this.aisDialogVisible = true;
},
// 编辑信息
edit(e) {
this.title = false;
this.form = e;
this.aisDialogVisible = true;
// this.form.interviewerid=this.$route.query.uid
// this.form.invitationtime=new Date(this.form.invitationtime).getFullYear()+'/'+parseInt(new Date(this.form.invitationtime).getMonth()+1)+'/'+new Date(this.form.invitationtime).getDate()
// this.$http.get("/updateInvitation",{params:this.form}).then((res)=>{
// console.log(res)
// })
},
},
mounted() {
console.log(this.$route.query);
this.$http
.get("/findInvitations", {
params: { interviewerid: this.$route.query.uid },
})
.then((res) => {
console.log(res);
this.tableData = res.data.resp;
});
},
};
</script>
<style lang="less" scoped>
.isituation /deep/ .el-page-header__content {
// color:white
}
.el-page-header {
// color:white;
padding: 10px;
}
.el-page-header__content {
font-size: 18px;
color: #f6f8fa;
}
.isituation {
height: 100%;
background-repeat: no-repeat; //不重复
background-size: 100%; // 满屏
}
.box-card {
}
.redz {
color: lightcoral;
font-style: normal;
}
.clearfix {
margin-bottom: 20px;
}
.rightbutton {
float: right;
}
</style>

View File

@@ -0,0 +1,97 @@
<template >
<div class="tevaluation">
<el-page-header @back="goBack" content="老师评价页面"> </el-page-header>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>欢迎您xxxxx老师正在查看<i class="redz">xxxxxx</i>的评价</span>
<div class="rightbutton">
<el-button type="danger" @click="alaDialogVisible = true"
>添加学习评价</el-button
>
</div>
</div>
<!-- 下方内容 -->
<div>
<el-table :data="tableData" border style="width: 100%">
<el-table-column prop="date" label="老师姓名" width="180">
</el-table-column>
<el-table-column prop="name" label="评价时间" width="180">
</el-table-column>
<el-table-column prop="address" label="学习内容"> </el-table-column>
<el-table-column prop="address" label="学习评价"> </el-table-column>
</el-table>
</div>
</el-card>
<!-- 弹框 -->
<el-dialog
title="添加面试情况"
:visible.sync="alaDialogVisible"
width="30%"
center
>
<span>欢迎您xxxxx老师正在添加评价</span>
<hr/>
<el-form ref="form" :model="form" label-width="100px">
<el-form-item label="老师姓名">
<el-input v-model="form.tname"></el-input>
</el-form-item>
<el-form-item label="日期">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="form.data"
style="width: 100%"
></el-date-picker>
</el-form-item>
<el-form-item label="学习内容">
<el-input v-model="form.learningContent"></el-input>
</el-form-item>
<el-form-item label="评价">
<el-input type="evaluate" v-model="form.tinterview"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="alaDialogVisible = false"> </el-button>
<el-button type="primary" @click="alaDialogVisible = false"
> </el-button
>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
// 添加评价弹框
alaDialogVisible: false,
form: {
tname: "", //老师姓名
data: "", //日期
learningContent: "", //学习内容
tinterview: "", //评价
},
};
},
methods: {
goBack() {
this.$router.push("/");
},
},
};
</script>
<style lang="less" scoped>
.box-card {
margin-top: 20px;
}
.redz {
color: lightcoral;
font-style: normal;
}
.clearfix {
margin-bottom: 20px;
}
.rightbutton {
float: right;
}
</style>

484
src/components/UserList.vue Normal file
View File

@@ -0,0 +1,484 @@
<template>
<div class="userlist">
<el-card class="box-card searchcard">
<!-- 时间 -->
<div class="querytime">
<div>
<span class="demonstration">录入时间查询 </span>
<el-date-picker
v-model="inputTimeQuery"
type="daterange"
align="right"
unlink-panels
range-separator=""
start-placeholder="开始月份"
end-placeholder="结束月份"
:picker-options="inputTimeQueryPickerOptions"
>
</el-date-picker>
</div>
<div>
<span class="demonstration">邀约时间查询 </span>
<el-date-picker
v-model="invitationTimeInquiry"
type="daterange"
align="right"
unlink-panels
range-separator=""
start-placeholder="开始月份"
end-placeholder="结束月份"
:picker-options="invitationTimeInquiryPickerOptions"
>
</el-date-picker>
</div>
<!-- 面试 -->
<el-select v-model="searchinfo.invitationType" clearable placeholder="邀约类型">
<el-option
v-for="item in interviewTypeOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
<el-select v-model="searchinfo.interviewResults" clearable placeholder="面试结果">
<el-option
v-for="item in interviewResultsOptions"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</div>
<!-- 条件 -->
<div class="queryCriteria">
<div>
<span>是否到面</span>
<el-radio v-model="searchinfo.whethertofaceornot" label="1"></el-radio>
<el-radio v-model="searchinfo.whethertofaceornot" label="0"></el-radio>
</div>
<div class="midselect">
<span>是否试岗</span>
<el-radio v-model="searchinfo.totry" label="1"></el-radio>
<el-radio v-model="searchinfo.totry" label="0"></el-radio>
</div>
<div>
<span>是否到岗</span>
<el-radio v-model="searchinfo.toposition" label="1"></el-radio>
<el-radio v-model="searchinfo.toposition" label="0"></el-radio>
</div>
</div>
<div class="inputSearch">
<el-input
placeholder="按照姓名查找"
suffix-icon="el-icon-search"
v-model="searchinfo.searchByName"
>
</el-input>
<el-input
placeholder="按照学校查找"
suffix-icon="el-icon-search"
v-model="searchinfo.searchBySchool"
>
</el-input>
</div>
<!-- 搜索按钮 -->
<div class="operationButton">
<el-button class="screen" type="primary" round icon="el-icon-search"
@click="search"
>筛选</el-button
>
<!-- 导出按钮 -->
<el-button
class="screen"
type="success"
round
icon="el-icon-takeaway-box"
>导出</el-button
>
</div>
</el-card>
<el-card class="box-card">
<div slot="header" class="clearfix">
<el-button size="mini" type="danger" @click="addInterviewer"
>添加面试者</el-button
>
<el-upload
style="float: right; padding: 3px 0"
class="upload-demo"
ref="upload"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:file-list="fileList"
:auto-upload="false"
>
<el-button slot="trigger" size="small" type="primary"
>选取文件</el-button
>
<el-button
style="margin-left: 10px"
size="small"
type="success"
@click="submitUpload"
>上传到服务器</el-button
>
</el-upload>
</div>
<div>
<!-- 人员表 -->
<el-table :data="tableData" border style="width: 100%">
<el-table-column label="录入时间" width="100">
<template slot-scope="scope">
<div>
{{new Date(scope.row.entrytime).getFullYear()+"-"+(parseInt(new Date(scope.row.entrytime).getMonth()+1))+'-'+new Date(scope.row.entrytime).getDate()}}
</div>
</template>
</el-table-column>
<el-table-column prop="name" label="姓名" width="65">
</el-table-column>
<el-table-column prop="age" label="年龄" width="50">
</el-table-column>
<el-table-column prop="currentposition" label="籍贯" width="300">
</el-table-column>
<el-table-column prop="nativeplace" label="当前职位" width="80">
</el-table-column>
<el-table-column
prop="educationinformation"
label="学历信息"
width="200"
>
</el-table-column>
<el-table-column
label="电话/微信"
width="200"
>
<template slot-scope="scope">
<div>
<span>{{scope.row.telephone}}/{{scope.row.wechat}}</span>
</div>
</template>
</el-table-column>
<!-- <el-table-column prop="iresults" label="面试结果" width="80">
</el-table-column>
<el-table-column prop="tpost" label="是否试岗" width="50">
</el-table-column>
<el-table-column prop="tposition" label="是否到岗" width="50">
</el-table-column>
<el-table-column prop="iposition" label="面试岗位" width="150">
</el-table-column> -->
<el-table-column label="操作">
<template slot-scope="scope">
<!-- <el-button size="mini" type="danger" @click="viewDetails"
>查看详情</el-button
> -->
<div class="btns">
<el-button type="primary" round @click="modifyInformation(scope.row)"
>修改信息</el-button
>
<el-button type="success" round @click="invitation(scope.row)"
>邀约情况</el-button
>
</div>
<div class="btns">
<el-button type="warning" round @click="interviewSituation(scope.row)"
>面试情况</el-button
>
<el-button type="danger" round @click="entryStatus(scope.row)"
>入职情况</el-button
>
</div>
<!-- <el-button size="mini" type="danger" @click="modifyInformation"
>修改信息</el-button>
<el-button size="mini" type="danger" @click="invitation"
>邀约情况</el-button
>
<el-button size="mini" type="danger" @click="interviewSituation"
>面试情况</el-button
>
<el-button size="mini" type="danger" @click="entryStatus"
>入职情况</el-button
> -->
</template>
</el-table-column>
</el-table>
</div>
<!-- 分页区域 -->
<el-pagination
@current-change="handleCurrentChange"
:current-page="currentPage4"
:page-size="5"
layout="total, prev, pager, next, jumper"
:total="total"
>
</el-pagination>
</el-card>
<popUp v-if="Interviewerform" :title="newvalue" @close="colose" :Interviewerform="addinfo"/>
<!-- // 前面的value是你子组件接收的变量名字 后面的value是这个值在本组件的变量名 -->
</div>
</template>
<script>
import popUp from "../layout/components/popUp";
export default {
data() {
return {
total:0,
tableData:[],
newvalue: "",
inputTimeQuery:[],
invitationTimeInquiry:[],
searchinfo:{
searchByName:"",
searchBySchool:"",
entrytime01:"",
entrytime02:"",
invitationtime01:"",
invitationtime02:"",
invitationType:"",
whethertofaceornot:"",
interviewResults:"",
totry:"",
toposition:"",
pageNum:1,
// pageSize:7
},
addinfo: {
entryTime: "", //录入时间
name: "", //姓名
age: "", //年龄
nativePlace: "", //籍贯
currentPosition: "", //当前职位
educationInformation: "", //学历信息
telephone: "", //电话
weChat: "", //微信
},
currentPage4: 4,
interviewTypeOptions: [
{
value: 1,
label: "已约面",
},
{
value: 2,
label: "待跟进",
},
], //面试类型
interviewResultsOptions: [
{
value: 1,
label: "复试",
},
{
value: 2,
label: "待跟进",
},
{
value: 3,
label: "淘汰",
},
], //面试结果
// 录入时间查询:
inputTimeQueryPickerOptions: {
shortcuts: [{
text: '本月',
onClick(picker) {
picker.$emit('pick', [new Date(), new Date()]);
}
}, {
text: '今年至今',
onClick(picker) {
const end = new Date();
const start = new Date(new Date().getFullYear(), 0);
picker.$emit('pick', [start, end]);
}
}, {
text: '最近六个月',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setMonth(start.getMonth() - 6);
picker.$emit('pick', [start, end]);
}
}]
},
// 邀约时间查询:
invitationTimeInquiryPickerOptions: {
shortcuts: [
{
text: "本月",
onClick(picker) {
picker.$emit("pick", [new Date(), new Date()]);
},
},
{
text: "今年至今",
onClick(picker) {
const end = new Date();
const start = new Date(new Date().getFullYear(), 0);
picker.$emit("pick", [start, end]);
},
},
{
text: "最近六个月",
onClick(picker) {
const end = new Date();
const start = new Date();
start.setMonth(start.getMonth() - 6);
picker.$emit("pick", [start, end]);
},
},
],
},
// 上传文件
fileList: [
{
name: "food.jpeg",
url:
"https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
},
{
name: "food2.jpeg",
url:
"https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100",
},
],
// 表格
// 弹出框
// // 添加面试者
Interviewerform: false,
};
},
methods: {
search(){
this.searchinfo.entrytime01=this.inputTimeQuery[0]
this.searchinfo.entrytime02=this.inputTimeQuery[1]
this.searchinfo.invitationtime01=this.invitationTimeInquiry[0]
this.searchinfo.invitationtime02=this.invitationTimeInquiry[1]
console.log(this.searchinfo,"shaixuan")
this.$http.get("/getInterviewers",{params:this.searchinfo}).then((res)=>{
this.tableData=res.data.resp.list
});
},
handleSizeChange(e) {
console.log(e);
},
handleCurrentChange(e) {
this.searchinfo.pageNum=e;
this.$http.get("/getInterviewers",{params:this.searchinfo}).then((res)=>{
this.tableData=res.data.resp.list
});
console.log(e);
},
// 上传文件
submitUpload() {
this.$refs.upload.submit();
},
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
},
// 弹框
// 添加面试者
addInterviewer() {
this.Interviewerform = true; // 显示
this.newvalue = true; // 传值
},
// 修改信息
modifyInformation(e) {
console.log(e)
this.addinfo=e;
this.newvalue=false
this.Interviewerform = true; // 显示
},
// 关闭弹框
colose() {
this.Interviewerform = false; // 关闭
this.newvalue = false; // 传值
},
// 查看详情
viewDetails() {
this.$router.push("/vdetails");
},
// 面试情况
interviewSituation(e) {
this.$router.push({path:"/isituation",query:{uid:e.interviewerid,uname:e.name}});
},
// 邀约
invitation(e) {
this.$router.push({path:"/invitation",query: { uid: e.interviewerid ,uname:e.name}});
},
// 入职情况
entryStatus() {
this.$router.push("/entrystatus");
},
},
mounted() {
this.$http.get("/getInterviewers").then((res)=>{
this.tableData=res.data.resp.list
this.total=res.data.resp.total
});
},
// 组件
components: {
popUp: popUp,
},
};
</script>
<style lang="less" scoped>
.el-pagination {
margin-top: 20px;
}
.midselect {
position: relative;
left: -106px;
}
.el-select {
// top: 20px;
}
.el-button.is-round {
padding: 12px 11px;
}
.btns {
display: flex;
margin-top: 5px;
}
.box-card,
.inputSearch {
margin-top: 10px;
}
.querytime,
.queryCriteria,
.inputSearch {
margin-bottom: 10px;
}
.querytime,
.queryCriteria,
.inputSearch {
display: flex;
justify-content: space-between;
}
.inputSearch > .el-input {
width: 48%;
}
.screen {
margin-top: 10px;
display: block;
margin: 0 auto;
}
.operationButton {
display: flex;
}
</style>

239
src/components/VDetails.vue Normal file
View File

@@ -0,0 +1,239 @@
<template>
<div class="vdetails">
<el-page-header @back="goBack" content="面试者详情页面"> </el-page-header>
<el-card class="box-card">
<h3 class="Maintitle">面试者详细情况介绍</h3>
<el-form label-position="left" label-width="180px" :model="formdetails">
<el-form-item label="录入时间">
<el-input v-model="formdetails.date" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="姓名">
<el-input v-model="formdetails.name" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="面试邀约时间">
<el-input v-model="formdetails.iitime" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="邀约人">
<el-input v-model="formdetails.iperson" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="面试类型">
<el-input v-model="formdetails.itype" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="是否到面">
<el-input v-model="formdetails.toface" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="是否试岗">
<el-input v-model="formdetails.trialpost" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="是否到岗">
<el-input
v-model="formdetails.toposition"
:disabled="true"
></el-input>
</el-form-item>
<el-form-item label="性别">
<el-input v-model="formdetails.gender" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="年龄">
<el-input v-model="formdetails.age" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="面试岗位">
<el-input v-model="formdetails.iposition" :disabled="true"></el-input>
</el-form-item>-
<el-form-item label="目前职业">
<el-input
v-model="formdetails.currentOccupation"
:disabled="true"
></el-input>
</el-form-item>
<el-form-item label="毕业学校">
<el-input
v-model="formdetails.graduateSchool"
:disabled="true"
></el-input>
</el-form-item>
<el-form-item label="学历">
<el-input v-model="formdetails.education" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="毕业时间">
<el-input
v-model="formdetails.graduationTime"
:disabled="true"
></el-input>
</el-form-item>
<el-form-item label="专业">
<el-input v-model="formdetails.major" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="校企合作单位">
<el-input v-model="formdetails.secUnit" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="电话">
<el-input v-model="formdetails.telephone" :disabled="true"></el-input>
</el-form-item>
<!-- 上传照片 -->
<el-form-item label="照片" style="height: 200px">
<div class="uploade">
<el-upload
action="#"
list-type="picture-card"
@click="xianshi"
v-if="show"
:auto-upload="false"
>
<i slot="default" class="el-icon-plus"></i>
<div slot="file" slot-scope="{ file }">
<img
class="el-upload-list__item-thumbnail"
:src="file.url"
alt=""
/>
<span class="el-upload-list__item-actions">
<span
class="el-upload-list__item-preview"
@click="handlePictureCardPreview(file)"
>
<i class="el-icon-zoom-in"></i>
</span>
<span
v-if="!disabled"
class="el-upload-list__item-delete"
@click="handleDownload(file)"
>
<i class="el-icon-download"></i>
</span>
<span
v-if="!disabled"
class="el-upload-list__item-delete"
@click="handleRemove(file)"
>
<i class="el-icon-delete"></i>
</span>
</span>
</div>
</el-upload>
<el-dialog :visible.sync="dialogVisible">
<img width="100%" :src="dialogImageUrl" alt="" />
</el-dialog>
<el-button class="tijiao" type="primary" round size="mini"
>提交</el-button
>
</div>
</el-form-item>
</el-form>
</el-card>
</div>
</template>
<script>
export default {
data() {
return {
formdetails: {
date: "",//录入时间
name: "",//姓名
iitime: "",//面试邀约时间
iperson: "",//邀约人
itype: "",//面试类型
toface: "",//是否到面
trialpost: "",//是否试岗
toposition: "",//是否到岗
gender: "",//性别
age: "",//年龄
iposition: "",//面试岗位
currentOccupation: "",//目前职业
graduateSchool: "",//毕业学校
education: "",//学历
graduationTime: "",//毕业时间
major: "",//专业
secUnit: "",//校企合作单位
telephone: "",//电话
},
// 上传照片
dialogImageUrl: "",
show: true,
dialogVisible: false,
disabled: false,
};
},
methods: {
goBack() {
this.$router.push("/");
},
// 上传照片
// 是否显示上传框框
xianshi() {
console.log(this.show)
if (this.dialogImageUrl !== "") {
this.show = false;
}
},
// 删除
handleRemove(file) {
console.log(file);
console.log("11");
},
// 上传
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
// 下载
handleDownload(file) {
console.log(file);
console.log("aa");
},
},
};
</script>
<style lang="less" scoped>
.Maintitle {
margin: 0 auto;
margin-bottom: 50px;
}
.el-card {
width: 50%;
margin: 0 auto;
}
.el-card__body {
padding: 100px;
}
.el-input {
// width: 80%;
// float: right;
}
// 上传照片
.uploade {
width: 75%;
display: flex;
justify-content: space-around;
}
.avatar-uploader,
.el-upload {
width: 178px;
height: 178px;
border: 1px dashed #8c8989;
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
// background-color: #409eff;
}
.avatar-uploader .el-upload:hover {
border-color: #409eff;
}
.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
line-height: 178px;
text-align: center;
}
.avatar {
width: 178px;
height: 178px;
display: block;
}
.tijiao {
height: 50px;
}
</style>

View File

@@ -0,0 +1,206 @@
<template>
<div>
<!-- 弹出框编辑操作 -->
<el-dialog
:title="this.title == false ? `修改信息` : `添加面试者`"
:visible.sync="addInterviewer"
width="30%"
center
@close="handleColose"
>
<el-form :model="Interviewerform">
<el-form-item label="录入时间:" :label-width="formLabelWidth">
<el-date-picker
v-model="Interviewerform.entrytime"
align="right"
type="date"
placeholder="选择日期"
:picker-options="pickerOptions"
>
</el-date-picker>
</el-form-item>
<el-form-item label="姓名:" :label-width="formLabelWidth">
<el-input
v-model="Interviewerform.name"
autocomplete="off"
></el-input>
</el-form-item>
<el-form-item label="年龄:" :label-width="formLabelWidth">
<el-input v-model="Interviewerform.age" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="籍贯:" :label-width="formLabelWidth">
<el-input
placeholder="省/市/区/县"
v-model="Interviewerform.nativeplace"
autocomplete="off"
></el-input>
</el-form-item>
<el-form-item label="当前职位:" :label-width="formLabelWidth">
<el-input
v-model="Interviewerform.currentposition"
autocomplete="off"
></el-input>
</el-form-item>
<el-form-item label="学历信息:" :label-width="formLabelWidth">
<el-input
v-model="Interviewerform.educationinformation"
autocomplete="off"
></el-input>
</el-form-item>
<el-form-item label="联系方式:" :label-width="formLabelWidth">
<el-input
placeholder="电话"
v-model="Interviewerform.telephone"
autocomplete="off"
></el-input>
<el-input
placeholder="微信"
v-model="Interviewerform.wechat"
autocomplete="off"
></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="handleColose"> </el-button>
<!-- addInterviewer = false -->
<el-button type="primary" @click="add"> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
props: {
title: {
// 你要的值 和父组件中的 第一个value必须同名
type: Boolean, // 类型
default: false, // 默认值
},
Interviewerform: {
type: Object,
},
},
data() {
return {
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
},
shortcuts: [
{
text: "今天",
onClick(picker) {
picker.$emit("pick", new Date());
},
},
{
text: "昨天",
onClick(picker) {
const date = new Date();
date.setTime(date.getTime() - 3600 * 1000 * 24);
picker.$emit("pick", date);
},
},
{
text: "一周前",
onClick(picker) {
const date = new Date();
date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
picker.$emit("pick", date);
},
},
],
},
// 弹出框
// 添加面试者
addInterviewer: true, //控制弹框显示隐藏的属性让父元素的属性传给他
// Interviewerform: {
// entryTime: "", //录入时间
// name: "", //姓名
// age: "", //年龄
// nativePlace: "", //籍贯
// currentPosition: "", //当前职位
// educationInformation: "", //学历信息
// telephone: "", //电话
// weChat: "", //微信
// },
formLabelWidth: "120px", //框框的宽度
};
},
methods: {
add() {
console.log(this.Interviewerform, 9090);
this.Interviewerform.entrytime=new Date(this.Interviewerform.entrytime).getFullYear()+'/'+parseInt(new Date(this.Interviewerform.entrytime).getMonth()+1)+'/'+new Date(this.Interviewerform.entrytime).getDate()
if (
this.Interviewerform.name != "" &&
this.Interviewerform.age != "" &&
this.Interviewerform.entrytime != "" &&
this.Interviewerform.nativeplace &&
this.Interviewerform.currentposition &&
this.Interviewerform.educationinformation &&
this.Interviewerform.telephone != "" &&
this.Interviewerform.wechat
) {
console.log(this.title)
if(this.title){
this.$http
.get("/insertInterviewer", { params: this.Interviewerform })
.then((res) => {
console.log(res);
if(res.data.code==200){
this.addInterviewer=false
}
});
}else{
this.$http
.get("/updateInterviewer", { params: this.Interviewerform })
.then((res) => {
console.log(res);
if(res.data.code==200){
this.addInterviewer=false
}
});
}
} else {
this.$message({
type: "error",
message: "请先完善信息",
});
}
// if (this.title) {
// if (
// this.Interviewerform.name != "" &&
// this.Interviewerform.age != "" &&
// this.Interviewerform.entryTime != "" &&
// this.Interviewerform.nativePlace &&
// this.Interviewerform.currentPosition &&
// this.Interviewerform.educationInformation &&
// this.Interviewerform.telephone != "" &&
// this.Interviewerform.weChat
// ) {
// this.$http
// .get("/insertInterviewer", { params: this.Interviewerform })
// .then((res) => {
// console.log(res);
// });
// } else {
// this.$message({
// type: "error",
// message: "请先完善信息",
// });
// }
// }
},
//取消弹出框
handleColose() {
// 向父组件传递事件
// this.$emit() 是个方法 参数为事件名
this.$emit("close");
},
},
created() {},
};
</script>

View File

@@ -1,12 +1,50 @@
import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
Vue.config.productionTip = false;
new Vue({
router,
store,
render: h => h(App)
}).$mount("#app");
import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
// 配置elementUI
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);
Vue.config.productionTip = false;
// 引入全局基础css
import "./assets/css/base.css";
// 配置axios
import Axios from "axios";
Vue.prototype.$http = Axios;
//连接本地后台接口服务器
Axios.defaults.baseURL = "http://192.168.3.117:8090/personnal";
//格式化时间
// Vue.filter('dateFormat', (original) => {
// let date = new Date(original*1000);
// let year = date.getFullYear();
// let month = (date.getMonth() + 1).toString().padStart(2, '0');
// let day = date.getDate().toString().padStart(2, '0');
// let hour = date.getHours().toString().padStart(2, '0');
// let minutes = date.getMinutes().toString().padStart(2, '0');
// let seconds = date.getSeconds().toString().padStart(2, '0');
// return `${year}-${month}-${day} ${hour}:${minutes}:${seconds}`
// })
// 请求拦截器
// Axios.interceptors.request.use(
// function (config) {
// // Do something before request is sent
// // 当我们去获取需要权限的数据的时候 一定要把令牌传到服务器
// config.headers.Authorization = window.sessionStorage.getItem("token");
// return config;
// },
// function (error) {
// return Promise.reject(error);
// }
// );
new Vue({
router,
store,
render: h => h(App)
}).$mount("#app");

View File

@@ -8,16 +8,57 @@ const routes = [
{
path: "/",
name: "Home",
component: Home
component: Home,
children: [
{
path: "/",
redirect: "/users"
},
// 用户列表
{
path: "/users",
//组件的名称 应该使用大驼峰 每个单词的首字母要大写
// @ 代表的是 './src' 路由的别名
component: () => import("../components/UserList.vue")
},
// 查看详情
{
path: "/vdetails",
component: () => import("../components/VDetails.vue")
},
// 面试情况
{
path: "/isituation",
component: () => import("../components/ISituation.vue")
},
// 老师评价
{
path: "/tevaluation",
component: () => import("../components/TEvaluation.vue")
},
// 邀约
{
path: "/invitation",
component: () => import("../components/Invitation.vue")
},
//入职
{
path: "/entrystatus",
component: () => import("../components/EntryStatus.vue")
},
//入职
{
path: "/entryinformation",
component: () => import("../components/EntryInformation.vue")
}
]
},
{
path: "/about",
name: "About",
// route level code-splitting
// this generates a separate chunk (about.[hash].js) for this route
// which is lazy-loaded when the route is visited.
component: () =>
import(/* webpackChunkName: "about" */ "../views/About.vue")
path: "/login",
name: "login",
// 当访问 /login的时候 采取引入Login组件
component: () => import("../views/Login.vue")
}
];

View File

@@ -1,5 +0,0 @@
<template>
<div class="about">
<h1>This is an about page</h1>
</div>
</template>

View File

@@ -1,18 +1,104 @@
<template>
<div class="home">
<img alt="Vue logo" src="../assets/logo.png" />
<HelloWorld msg="Welcome to Your Vue.js App" />
</div>
<!-- contrainer 布局容器组件 -->
<el-container class="home">
<el-header class="header">
<h3>人事后台管理系统</h3>
<div class="right">
<span>欢迎您xxxxxxxxxx</span>
<el-button type="info" @click="handleLogOut">退出</el-button>
</div>
</el-header>
<el-container>
<el-main class="main">
<router-view></router-view>
</el-main>
</el-container>
</el-container>
</template>
<script>
// @ is an alias to /src
import HelloWorld from "@/components/HelloWorld.vue";
export default {
name: "Home",
components: {
HelloWorld
}
data() {
return {
};
},
methods: {
handleOpen(key, keyPath) {
console.log(key, keyPath);
},
handleClose(key, keyPath) {
console.log(key, keyPath);
},
//退出方法
handleLogOut: function () {
//清除浏览器中的令牌相当于 进了故宫把门票撕了
// window.sessionStorage.removeItem("token");
//跳转
this.$router.push("/login");
},
},
created () {
},
};
</script>
<style lang="less" scoped>
.home {
height: 100%;
}
.header {
background-color: #373d41;
user-select: none;
img {
float: left;
margin-top: 2px;
margin-right: 10px;
}
h3 {
margin: 0px;
float: left;
color: #fff;
font-weight: normal;
font-size: 22px;
line-height: 60px;
}
.right{
display: flex;
justify-content: space-around;
float: right;
margin-top: 10px;
span{
color: #fff;
width: 48%;
}
}
}
.aside {
background-color: #313541;
.toggle-aside {
background-color: #4a5064;
text-align: center;
height: 22px;
font-size: 12px;
color: #fff;
line-height: 20px;
letter-spacing: 1px;
user-select: none;
}
.el-menu {
border-right: none;
}
}
.main {
background-color: #eaedf1;
}
</style>

79
src/views/Login.vue Normal file
View File

@@ -0,0 +1,79 @@
<template>
<div class="login">
<!-- card 组件 -->
<el-card class="card">
<!-- 图片 -->
<div class="avatar">
<img src="../assets/logo.png" />
</div>
<!-- 表单 -->
<!-- :rules 表单校验规则对象 -->
<el-form class="login-form" ref="loginFormRef">
<!-- 账号/用户名 -->
<el-form-item prop="username">
<el-input>
<i slot="prefix" class="el-input__icon el-icon-user"></i>
</el-input>
</el-form-item>
<!-- 密码 -->
<el-form-item prop="password">
<el-input>
<i slot="prefix" class="el-input__icon el-icon-lock"></i>
</el-input>
</el-form-item>
<div class="clearfix">
<el-button type="primary" class="button-login">登录</el-button>
<el-button type="info" class="button-reset">重置</el-button>
</div>
</el-form>
</el-card>
</div>
</template>
<style lang="less" scoped>
.login {
width: 100%;
height: 100%;
background-color: #2b4b6b;
.card {
width: 450px;
height: 304px;
background-color: #fff;
border-radius: 4px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
// 这句话就是为了干掉 overflow:hidden 就和没写一样效果
overflow: initial;
}
.avatar {
width: 130px;
height: 130px;
border: 1px solid #eee;
border-radius: 50%;
padding: 8px;
box-shadow: 0 0 10px #eee;
position: absolute;
background-color: #fff;
left: 50%;
transform: translate(-50%, -60%);
overflow: hidden;
img {
width: 100%;
height: 100%;
border-radius: 50%;
background-color: #eee;
}
}
.login-form {
margin-top: 100px;
}
.button-reset {
float: right;
}
}
</style>

8610
yarn.lock Normal file

File diff suppressed because it is too large Load Diff