<style>
#app, #app * {transition: all .5s;}
#app li{width: 32%; margin-right: 2%; margin-bottom: 20px;}
#app li:nth-child(3n) {margin-right: 0;}
.w100 {width: 100% !important; margin-right: 0 !important;}
.flex {display: -webkit-flex; display: flex; flex-wrap: wrap;}
.flexJb {display: -webkit-flex; display: flex; flex-wrap: wrap; justify-content: space-between;}
#app li .input{width: 100%; height: 45px; border: 1px solid #ccc; padding: 0 5px;}
#app li .textarea{width: 100%; height: 145px; border: 1px solid #ccc; padding: 0 5px;}
#app li .select{width: 100%; height: 45px; border: 1px solid #ccc; padding: 0 5px; background: #fff;}
#app li .input:focus{border: 1px solid #0c4da2; box-shadow: none;}
#app li dl, #app li dt, #app li dd {width: 100%;}
#app li dl dt{font-size: 18px; line-height: 180%; margin-bottom: 15px;}
#app li dd input{width: 17% !important; margin-right: 1.25%; margin-bottom: 20px;}
#app li dd input:nth-child(5n) {margin-right: 0;}
#app li .inputs{flex-wrap: nowrap; width: 100%; align-items: center;}
#app li .inputs p{width: 100px;}
#app .button{width: 80px; height: 45px; background: #4369ab; border: 0; border-radius: 5px; font-size: 16px; color: #fff; margin-right: 20px;}
@media (max-width: 1300px) {
#app li{width: 100%; margin-right: 0;}
#app li:nth-child(3n) {margin-right: 0}
#app li dd input{width: 48% !important;}
#app li dd input:nth-child(5n){margin-right: 1.25% !important;}
}
</style>
<div class="n_jltd c" id="app">
<div class="n_jltd01">
<div class="n_jltd02">简历投递</div>
<div class="n_jltd03 jld">
<form method="POST" {$field.formhidden} action="{$field.action}" onsubmit="return checkForm();" autocomplete="off">
<ul class="flex">
<li class="flex" v-for="(item, k) in form" :class="item.type == 'arr' || item.type == 'textarea'?'w100':''">
<input class="input" type="text" :name="item.name" :placeholder="item.title" :maxlength="item.maxlength" v-if="!item.type" v-model="item.value">
<input class="input" type="number" :name="item.name" :placeholder="item.title" :maxlength="item.maxlength" v-if="item.type == 'number'" v-model="item.value">
<div class="flexJb inputs" v-if="item.type == 'date'">
<p>{{item.title}}</p><input class="input" type="date" :name="item.name" :placeholder="item.title" :maxlength="item.maxlength" v-model="item.value">
</div>
<select :name="item.name" class="select" v-if="item.type == 'select'" v-model="item.value">
<option v-for="item2 in item.options" :value="item2.value" :slected="item.value">{{item2.title}}</option>
</select>
<dl v-if="item.type == 'arr'">
<dt>
{{item.title}}
</dt>
<dd class="flex" v-for="(item2, k2) in item.elements">
<input class="input" type="text" v-for="(item3, k3) in item2" :name="item.name" :placeholder="item3.title" v-model="item3.value">
<button type="button" class="button" @click="delThisRow(k, k2)" style="margin-left: 20px">删除</button>
</dd>
<button type="button" class="button" @click="addRow(k)" style="margin-top: 20px;">新增</button>
</dl>
<dl v-if="item.type == 'textarea'">
<dt>{{item.title}}</dt>
<dd class="flex w100">
<textarea class="textarea" type="date" :name="item.name" :placeholder="item.title" :maxlength="item.maxlength" v-if="item.type == 'textarea'" v-model="item.value"></textarea>
</dd>
</dl>
</li>
</ul>
<input type="button" class="tjiao" value=" 提交 " @click="submit">
<input class="qxiao" type="reset" name="reset" value=" 重置 ">
</form>
</div>
</div>
</div>
<script>
new Vue({
el: '#app',
data: {
isLoading: 1,
form: [
{name: 'title', title: '申请职位', maxlength: 50, value: '', required: 1},
{name: 'mobile', title: '手机号', type: 'number', maxlength: 11, value: '', required: 1, valid: /^1\d{10}$/},
{name: 'cname', title: '中文名', maxlength: 10, value: '', required: 1},
{name: 'ename', title: '英文名', maxlength: 10, value: '', required: 1},
{name: 'sex', title: '性别', type: 'select', value: '', 'options': [{title: '请选择性别', value: ''}, {title: '男', value: '男'}, {title: '女', value: '女'} ], value: '', required: 1},
{name: 'birthname', title: '出生日期', type: 'date', value: '', maxlength: 10, required: 1},
{name: 'age', title: '年龄', type: 'number', value: '', maxlength: 3, required: 1},
{name: 'race', title: '民族', value: '', maxlength: 20, required: 1},
{name: 'ms', title: '婚姻状况', value: '', maxlength: 1, required: 1},
{name: 'height', title: '身高(cm)', type: 'number', value: '', maxlength: 10, required: 1},
{name: 'weight', title: '体重(kg)', type: 'number', value: '', maxlength: 10, required: 1},
{name: 'leye', title: '视力(左)', type: 'number', value: '', maxlength: 5, required: 1},
{name: 'reye', title: '视力(右)', type: 'number', value: '', maxlength: 5, required: 1},
{name: 'colorblind', title: '是否色盲', type: 'select', 'options': [{title: '请选择是否色盲', value: ''}, {title: '否', value: '否'}, {title: '是', value: '是'} ], value: '', maxlength: 1, required: 1},
{name: 'city', title: '出生城市', maxlength: 50, value: '', maxlength: 50, required: 1},
{name: 'passport_no', title: '护照号码', maxlength: 50, value: '', maxlength: 30, required: 0},
{name: 'issue', title: '签发日期', type: 'date', maxlength: 50, value: '', maxlength: 10, required: 0},
{name: 'de', title: '有效期至', type: 'date', maxlength: 50, value: '', maxlength: 10, required: 0},
{name: 'idcard', title: '身份证号码', maxlength: 50, value: '', required: 1},
{name: 'edus', title: '教育经历', type: 'arr', elements: [], template: [{title: '毕业学校', value: ''}, {title: '开始时间', value: ''}, {title: '截止时间', value: ''}, {title: '专业', value: ''}, {title: '学历', value: ''}], required: 0},
{name: 'works', title: '工作经历', type: 'arr', elements: [], template: [{title: '工作单位', value: ''}, {title: '开始时间', value: ''}, {title: '截止时间', value: ''}, {title: '行业', value: ''}, {title: '职位', value: ''}, {title: '工作职责', value: '', type: 'textarea'}], required: 0},
{name: 'skills', title: '技能', type: 'textarea', maxlength: 150, value: '', required: 0},
{name: 'self', title: '自我评价', type: 'textarea', maxlength: 150, value: '', required: 0}
]
},
mounted() {
},
methods: {
reset() {
this.form = [
{name: 'title', title: '申请职位', maxlength: 50, value: '', required: 1},
{name: 'mobile', title: '手机号', type: 'number', maxlength: 11, value: '', required: 1, valid: /^1\d{10}$/},
{name: 'cname', title: '中文名', maxlength: 10, value: '', required: 1},
{name: 'ename', title: '英文名', maxlength: 10, value: '', required: 1},
{name: 'sex', title: '性别', type: 'select', value: '', 'options': [{title: '请选择性别', value: ''}, {title: '男', value: '男'}, {title: '女', value: '女'} ], value: '', required: 1},
{name: 'birthname', title: '出生日期', type: 'date', value: '', maxlength: 10, required: 1},
{name: 'age', title: '年龄', type: 'number', value: '', maxlength: 3, required: 1},
{name: 'race', title: '民族', value: '', maxlength: 20, required: 1},
{name: 'ms', title: '婚姻状况', value: '', maxlength: 1, required: 1},
{name: 'height', title: '身高(cm)', type: 'number', value: '', maxlength: 10, required: 1},
{name: 'weight', title: '体重(kg)', type: 'number', value: '', maxlength: 10, required: 1},
{name: 'leye', title: '视力(左)', type: 'number', value: '', maxlength: 5, required: 1},
{name: 'reye', title: '视力(右)', type: 'number', value: '', maxlength: 5, required: 1},
{name: 'colorblind', title: '是否色盲', type: 'select', 'options': [{title: '请选择是否色盲', value: ''}, {title: '否', value: '否'}, {title: '是', value: '是'} ], value: '', maxlength: 1, required: 1},
{name: 'city', title: '出生城市', maxlength: 50, value: '', maxlength: 50, required: 1},
{name: 'passport_no', title: '护照号码', maxlength: 50, value: '', maxlength: 30, required: 0},
{name: 'issue', title: '签发日期', type: 'date', maxlength: 50, value: '', maxlength: 10, required: 0},
{name: 'de', title: '有效期至', type: 'date', maxlength: 50, value: '', maxlength: 10, required: 0},
{name: 'idcard', title: '身份证号码', maxlength: 50, value: '', required: 1},
{name: 'edus', title: '教育经历', type: 'arr', elements: [], template: [{title: '毕业学校', value: ''}, {title: '开始时间', value: ''}, {title: '截止时间', value: ''}, {title: '专业', value: ''}, {title: '学历', value: ''}], required: 0},
{name: 'works', title: '工作经历', type: 'arr', elements: [], template: [{title: '工作单位', value: ''}, {title: '开始时间', value: ''}, {title: '截止时间', value: ''}, {title: '行业', value: ''}, {title: '职位', value: ''}, {title: '工作职责', value: '', type: 'textarea'}], required: 0},
{name: 'skills', title: '技能', type: 'textarea', maxlength: 150, value: '', required: 0},
{name: 'self', title: '自我评价', type: 'textarea', maxlength: 150, value: '', required: 0}
];
},
addRow(k) {
var template = JSON.parse(JSON.stringify(this.form[k].template));
this.form[k].elements.push(template);
},
delThisRow(k, k2) {
var t = this;
var elements = [];
t.form[k]['elements'].forEach(function (item, i) {
if(k2 != i) {
elements.push(t.form[k]['elements'][i]);
}
});
t.$set(t.form[k], 'elements', elements);
},
submit: function () {
var t = this;
var isError = 0;
t.form.forEach(function (item, k) {
if(item.required == 1) {
if(isError == 0) {
if(item.value == '') {
isError = 1;
document.querySelector('input[name='+item.name+']').focus();
layer.msg('请输入'+item.title);
return false;
}
if(item.valid != undefined) {
if(!item.valid.test(item.value)) {
isError = 1;
document.querySelector('input[name='+item.name+']').focus();
layer.msg('请输入正确的'+item.title);
return false;
}
}
}
}
})
if(isError == 0) {
$.ajax({
url: "{:url('api/Ajax/resume_post')}",
type: 'post',
dataType: 'JSON',
data: {_ajax: 1, data: t.form},
success: function(res){
if(res.code == 0) {
layer.msg(res.msg);
return;
}else {
t.reset();
layer.msg('您的简历已成功提交');
}
}
});
}
}
}
})
</script>
/**
* 提交简历
* @return [type] [description]
*/
public function resume_post()
{
if (IS_AJAX) {
$post = input('post.');
$datas = $post['data'];
if(empty($datas)) $this->error('请填写完整的简历信息');
if(empty($datas[0]['value'])) {
$this->error('请填写'.$datas[0]['title']);
}
foreach($datas as $k => $v) {
if($k != 0) {
if($v['required'] == 1 && empty($v['value'])) {
$this->error('请填写'.$v['title']);
}
switch($v['type']) {
case 'arr':
$data2[$v['name']] = !empty($v['elements'])?serialize($v['elements']):'';
break;
default:
$data2[$v['name']] = $v['value'];
break;
}
}
}
$add_time = time();
$click = 0;
$data['typeid'] = 18;
$data['title'] = $datas[0]['value'];
$data['channel'] = 118;
$data['add_time'] = time();
$data['update_time'] = time();
$id = M('archives')->insertGetId($data);
if($id) {
$data2['aid'] = $id;
$data2['add_time'] = time();
$data2['update_time'] = time();
@M('jianli_content')->insert($data2);
$this->clear_cache();
$this->success('');
}else {
$this->error('提交失败,请重试');
}
}
abort(404);
}