|
|
@@ -12,10 +12,11 @@
|
|
|
<el-button type="text" @click="addClick(props.scope.row, 2)"
|
|
|
>详情</el-button
|
|
|
>
|
|
|
- <el-button type="text" @click="addClick(props.scope.row, 0)"
|
|
|
- >邀请</el-button
|
|
|
- >
|
|
|
- <el-button type="text" @click="del(props.scope.row)">删除</el-button>
|
|
|
+ <el-button type="text" v-if="props.scope.row.status==0" @click="addClick(props.scope.row, 0)">邀请</el-button>
|
|
|
+ <el-button type="text" v-if="props.scope.row.status==0" @click="addClick(props.scope.row, 1)">拒绝</el-button>
|
|
|
+ <el-button type="text" v-if="props.scope.row.status==1" >已邀请</el-button>
|
|
|
+ <el-button type="text" v-if="props.scope.row.status==3" >已谢绝</el-button>
|
|
|
+ <el-button type="text" v-if="props.scope.row.status==2" >已确定</el-button>
|
|
|
</template>
|
|
|
</table-list>
|
|
|
<pagination
|
|
|
@@ -25,70 +26,7 @@
|
|
|
@handleSizeChange="handleSizeChange"
|
|
|
@handleCurrentChange="handleCurrentChange"
|
|
|
/>
|
|
|
- <el-dialog
|
|
|
- :visible.sync="dialogVisible"
|
|
|
- width="560px"
|
|
|
- :show-close="false"
|
|
|
- :before-close="close"
|
|
|
- >
|
|
|
- <div slot="title" class="hearders">
|
|
|
- <div class="leftTitle">
|
|
|
- {{ statusPop === 1 ? "添加" : statusPop === 0 ? "修改" : "详情" }}
|
|
|
- </div>
|
|
|
- <div class="rightBoxs">
|
|
|
- <img src="@/assets/images/Close@2x.png" alt="" @click="close" />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <el-form
|
|
|
- label-position="right"
|
|
|
- label-width="80px"
|
|
|
- :model="listData"
|
|
|
- :rules="rules"
|
|
|
- ref="listData"
|
|
|
- >
|
|
|
- <el-form-item
|
|
|
- v-for="(items, indexs) in listitem"
|
|
|
- :key="indexs"
|
|
|
- :label="items.label"
|
|
|
- :prop="items.prop"
|
|
|
- >
|
|
|
- <el-radio-group
|
|
|
- v-if="items.scope === 'status'"
|
|
|
- v-model="listData[items.prop]"
|
|
|
- >
|
|
|
- <el-radio
|
|
|
- v-for="(item, index) in items.options"
|
|
|
- :key="index"
|
|
|
- :label="item.value"
|
|
|
- :disabled="statusPop === 2"
|
|
|
- >{{ item.label }}</el-radio
|
|
|
- >
|
|
|
- </el-radio-group>
|
|
|
- <el-input
|
|
|
- :disabled="statusPop === 2"
|
|
|
- v-else-if="items.scope === 'textarea'"
|
|
|
- type="textarea"
|
|
|
- v-model="listData[items.prop]"
|
|
|
- ></el-input>
|
|
|
- <el-input
|
|
|
- :disabled="statusPop === 2"
|
|
|
- v-else
|
|
|
- v-model="listData[items.prop]"
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-form>
|
|
|
- </div>
|
|
|
- <span slot="footer" class="dialog-footer">
|
|
|
- <el-button @click="close">取 消</el-button>
|
|
|
- <el-button
|
|
|
- type="primary"
|
|
|
- v-if="statusPop !== 2"
|
|
|
- @click="submit('listData')"
|
|
|
- >确 定</el-button
|
|
|
- >
|
|
|
- </span>
|
|
|
- </el-dialog>
|
|
|
+
|
|
|
<el-dialog
|
|
|
:visible.sync="calendarDialogVisible"
|
|
|
width="30%"
|
|
|
@@ -111,33 +49,71 @@
|
|
|
<div>{{item.timeStr}}</div>
|
|
|
<div style="display: flex;margin-left: 30px">
|
|
|
<div v-for="(item_c, index_c) in item.list">
|
|
|
- {{item_c.job}}-{{item_c.realName}}<span v-if="index_c<item.list.length-1">,</span>
|
|
|
+ {{item_c.job}}-{{item_c.recruitResumeVo.realname}}<span v-if="index_c<item.list.length-1">,</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div>
|
|
|
- <el-form ref="form" :model="form" label-width="80px">
|
|
|
- <el-form-item label="公司">
|
|
|
- <el-input v-model="form.company_name"></el-input>
|
|
|
+ <el-form :model="form" :rules="rules" label-width="80px" ref="inviteForm">
|
|
|
+ <el-form-item label="公司" prop="companyName">
|
|
|
+ <el-input v-model="form.companyName"></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="时间">
|
|
|
- <el-date-picker type="datetime" placeholder="选择时间" v-model="form.date" value-format="timestamp"></el-date-picker>
|
|
|
+ <el-form-item label="时间" prop="resumeTime">
|
|
|
+ <el-date-picker type="datetime" placeholder="选择时间" v-model="form.resumeTime" value-format="timestamp"></el-date-picker>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="地点">
|
|
|
- <el-input v-model="form.company_name"></el-input>
|
|
|
+ <el-form-item label="地点" prop="address">
|
|
|
+ <el-input v-model="form.address" ></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="电话">
|
|
|
- <el-input v-model="form.company_name"></el-input>
|
|
|
+ <el-form-item label="电话" prop="linkTel">
|
|
|
+ <el-input v-model="form.linkTel"></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="联系人">
|
|
|
- <el-input v-model="form.company_name"></el-input>
|
|
|
+ <el-form-item label="联系人" prop="linkMan">
|
|
|
+ <el-input v-model="form.linkMan"></el-input>
|
|
|
</el-form-item>
|
|
|
</el-form>
|
|
|
</div>
|
|
|
</div>
|
|
|
<span slot="footer" class="dialog-footer">
|
|
|
<el-button @click="calendarDialogVisible = false">取 消</el-button>
|
|
|
- <el-button type="primary" @click="calendarDialogVisible = false">发送邀请</el-button>
|
|
|
+ <el-button type="primary" @click="submitForm(0)">发送邀请</el-button>
|
|
|
+ </span>
|
|
|
+ </el-dialog>
|
|
|
+ <el-dialog
|
|
|
+ :visible.sync="refuseDialogVisible"
|
|
|
+ width="30%"
|
|
|
+ center>
|
|
|
+ <div style="min-width: 360px">
|
|
|
+ <div style="margin-top: 30px">
|
|
|
+ <div style="width: 100%">
|
|
|
+ <el-radio v-model="radio" label="1">
|
|
|
+ <el-input
|
|
|
+ type="textarea"
|
|
|
+ :rows="2"
|
|
|
+ placeholder="请输入内容"
|
|
|
+ :disabled="radio=='2'"
|
|
|
+ v-model="refuseText1">
|
|
|
+ </el-input>
|
|
|
+ </el-radio>
|
|
|
+ </div>
|
|
|
+ <div style="margin-top: 30px">
|
|
|
+ <el-radio v-model="radio" label="2">
|
|
|
+ 自定义原因
|
|
|
+ </el-radio>
|
|
|
+ <div style="margin-left: 25px;margin-top: 10px;width: 90%">
|
|
|
+ <el-input
|
|
|
+ type="textarea"
|
|
|
+ :rows="2"
|
|
|
+ :disabled="radio=='1'"
|
|
|
+ placeholder="请输入内容"
|
|
|
+ v-model="refuseText2">
|
|
|
+ </el-input>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <span slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="refuseDialogVisible = false">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="submitForm(1)">确认</el-button>
|
|
|
</span>
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
@@ -151,6 +127,13 @@ export default {
|
|
|
components: { searchBox, tableList, pagination },
|
|
|
data() {
|
|
|
return {
|
|
|
+ radio:'1',
|
|
|
+ refuseText1:'您的简历已经纳入我们公司的人才储备库,如果有适合您的岗位,我们会第一时间通知您,祝您求职成功,心想事成。',
|
|
|
+ refuseText2:'',
|
|
|
+ refuseForm:{
|
|
|
+ refuse:''
|
|
|
+ },
|
|
|
+ refuseDialogVisible: false,
|
|
|
dayValue: new Date(),
|
|
|
calendarDialogVisible: false,
|
|
|
weekDay:['一','二','三','四','五','六','日'],
|
|
|
@@ -160,8 +143,11 @@ export default {
|
|
|
recruitList:[],
|
|
|
dayInterviewVos:[],
|
|
|
form:{
|
|
|
- company_name:'',
|
|
|
- date:''
|
|
|
+ companyName:'',
|
|
|
+ linkMan:'',
|
|
|
+ linkTel:'',
|
|
|
+ address:'',
|
|
|
+ resumeTime:''
|
|
|
},
|
|
|
peopleNum:0,
|
|
|
loading: false, //当前表单加载是否加载动画
|
|
|
@@ -219,7 +205,7 @@ export default {
|
|
|
tableSet: [
|
|
|
{
|
|
|
label: "姓名",
|
|
|
- prop: "realName",
|
|
|
+ prop: "resumeRealName",
|
|
|
hidden: true,
|
|
|
},
|
|
|
{
|
|
|
@@ -335,20 +321,11 @@ export default {
|
|
|
dialogVisible: false,
|
|
|
//表单验证
|
|
|
rules: {
|
|
|
- dictName: [
|
|
|
- { required: true, message: "请输入字典名称", trigger: "blur" },
|
|
|
- {
|
|
|
- min: 2,
|
|
|
- max: 10,
|
|
|
- message: "长度在 2 到 10 个字符",
|
|
|
- trigger: "blur",
|
|
|
- },
|
|
|
- ],
|
|
|
- dictType: [
|
|
|
- { required: true, message: "请输入字典类型", trigger: "blur" },
|
|
|
- ],
|
|
|
- status: [{ required: true, message: "请选择状态", trigger: "change" }],
|
|
|
- remark: [{ required: true, message: "请填写备注", trigger: "blur" }],
|
|
|
+ linkTel: [{ required: true, message: "请填写联系电话", trigger: "blur" }],
|
|
|
+ address: [{ required: true, message: "请填写面试地址", trigger: "blur" }],
|
|
|
+ companyName: [{ required: true, message: "请填写公司名称", trigger: "blur" }],
|
|
|
+ linkMan: [{ required: true, message: "请填写联系人", trigger: "blur" }],
|
|
|
+ resumeTime: [{ required: true, message: "请选择面试时间", trigger: "blur" }],
|
|
|
},
|
|
|
companyGMdata:[],//公司规模
|
|
|
companyLXdata:[],//公司类型
|
|
|
@@ -363,6 +340,65 @@ export default {
|
|
|
this.getNowTime()
|
|
|
},
|
|
|
methods: {
|
|
|
+ editrecruitinterviewRefuse(refuse){
|
|
|
+ let data = JSON.parse(JSON.stringify(this.refuseForm));
|
|
|
+ data.status = 3
|
|
|
+ data.refuse = refuse
|
|
|
+ let that = this
|
|
|
+ this.$api.editrecruitinterview(data).then((res) => {
|
|
|
+ if(res.code==200){
|
|
|
+ that.calendarDialogVisible = false
|
|
|
+ that.refuseDialogVisible = false
|
|
|
+ that.search();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ editrecruitinterview(){
|
|
|
+ let data = JSON.parse(JSON.stringify(this.form));
|
|
|
+ data.status = 1
|
|
|
+ data.resumeTime = parseInt(data.resumeTime/1000)
|
|
|
+ let that = this
|
|
|
+ this.$api.editrecruitinterview(data).then((res) => {
|
|
|
+ if(res.code==200){
|
|
|
+ that.calendarDialogVisible = false
|
|
|
+ that.search();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ submitForm(type){
|
|
|
+ if(type==0){
|
|
|
+ this.$refs['inviteForm'].validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ this.editrecruitinterview()
|
|
|
+ } else {
|
|
|
+ console.log('error submit!!');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if(type==1){
|
|
|
+ let refuse = ''
|
|
|
+ if(this.radio=='1'){
|
|
|
+ if(this.refuseText1==''){
|
|
|
+ this.$message({
|
|
|
+ message: '请输入拒绝原因',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ refuse = this.refuseText1
|
|
|
+ }
|
|
|
+ if(this.radio=='2'){
|
|
|
+ if(this.refuseText2==''){
|
|
|
+ this.$message({
|
|
|
+ message: '请输入拒绝原因',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ }
|
|
|
+ refuse = this.refuseText2
|
|
|
+ }
|
|
|
+ this.editrecruitinterviewRefuse(refuse)
|
|
|
+ }
|
|
|
+ },
|
|
|
getNowTime(){
|
|
|
let t = new Date();
|
|
|
let newTime = t.getTime()-(t.getMinutes()*60+t.getSeconds())*1000+3600*1000
|
|
|
@@ -370,7 +406,7 @@ export default {
|
|
|
this.dayValue = t
|
|
|
},
|
|
|
makeRecruitList(quantumList){
|
|
|
- this.form.date = this.dayValue.getTime()
|
|
|
+ this.form.resumeTime = this.dayValue.getTime()
|
|
|
this.recruitList = []
|
|
|
this.peopleNum = 0
|
|
|
for(let i =0;i<quantumList.length;i++){
|
|
|
@@ -446,6 +482,7 @@ export default {
|
|
|
let item = that.tableData[i]
|
|
|
item.sexLabel = item.sex==1?'男':'女'
|
|
|
item.wantIncomeLabel = item.recruitResumeVo.wantIncomeStart+'-'+item.recruitResumeVo.wantIncomeEnd
|
|
|
+ item.resumeRealName = item.recruitResumeVo.realname
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
@@ -455,48 +492,21 @@ export default {
|
|
|
init() {
|
|
|
this.search();
|
|
|
},
|
|
|
- del(v) {
|
|
|
- this.$confirm("此操作将删除该字典类型, 是否继续?", "提示", {
|
|
|
- confirmButtonText: "确定",
|
|
|
- cancelButtonText: "取消",
|
|
|
- type: "warning",
|
|
|
- })
|
|
|
- .then(() => {
|
|
|
- this.$message.success("删除成功");
|
|
|
- })
|
|
|
- .catch(() => {
|
|
|
- this.$message({
|
|
|
- type: "info",
|
|
|
- message: "已取消删除",
|
|
|
- });
|
|
|
- });
|
|
|
- },
|
|
|
addClick(v, int) {
|
|
|
- this.calendarDialogVisible = true
|
|
|
- return
|
|
|
- if (v === undefined) {
|
|
|
- this.statusPop = 1;
|
|
|
- this.listData = {};
|
|
|
- } else {
|
|
|
- this.statusPop = int;
|
|
|
- var data = v.dictId;
|
|
|
- this.listData = {
|
|
|
- createBy: "admin",
|
|
|
- createTime: "2021-05-08 14:45:46",
|
|
|
- dictId: 1,
|
|
|
- dictName: "用户性别",
|
|
|
- dictType: "sys_user_sex",
|
|
|
- pageNum: null,
|
|
|
- pageSize: null,
|
|
|
- params: {},
|
|
|
- remark: "用户性别列表",
|
|
|
- status: "1",
|
|
|
- statusArray: null,
|
|
|
- updateBy: "admin",
|
|
|
- updateTime: "2021-06-09 15:55:04",
|
|
|
- };
|
|
|
+ if(int==0){
|
|
|
+ this.calendarDialogVisible = true
|
|
|
+ this.form.companyName = v.companyName
|
|
|
+ this.form.address = v.city+' '+v.district+' '+v.companyAddress
|
|
|
+ this.form.linkMan = v.linkMan
|
|
|
+ this.form.linkTel = v.linkTel
|
|
|
+ this.form.interviewId = v.interviewId
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if(int==1){
|
|
|
+ this.refuseDialogVisible = true
|
|
|
+ this.refuseForm.interviewId = v.interviewId
|
|
|
+ return
|
|
|
}
|
|
|
- this.dialogVisible = true;
|
|
|
},
|
|
|
submit(formName) {
|
|
|
this.$refs[formName].validate((valid) => {
|
|
|
@@ -545,6 +555,9 @@ export default {
|
|
|
};
|
|
|
</script>
|
|
|
<style>
|
|
|
+.el-cascader-node>.el-radio, .el-radio:last-child{
|
|
|
+ width: 90%;
|
|
|
+}
|
|
|
#resumeCenter .el-dialog{
|
|
|
min-width: 400px !important;
|
|
|
}
|