You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
295 lines
8.8 KiB
295 lines
8.8 KiB
<script>
|
|
import { show as templateShow } from "@/api/unifiedRecruitment/template";
|
|
import { show, save } from "@/api/unifiedRecruitment/recruit";
|
|
|
|
export default {
|
|
render(h) {
|
|
return (
|
|
<Modal
|
|
title={this.type === "add" ? "新增统招生" : "编辑统招生"}
|
|
width="54"
|
|
value={this.isShow}
|
|
on={{
|
|
["on-visible-change"]: (e) => this.$emit("update:isShow", e),
|
|
}}
|
|
scopedSlots={{
|
|
footer: () => {
|
|
return (
|
|
<div>
|
|
<Button
|
|
on={{
|
|
["click"]: (e) => {
|
|
this.$emit("update:isShow", false);
|
|
},
|
|
}}
|
|
>
|
|
取消
|
|
</Button>
|
|
<Button type="primary" on={{ ["click"]: (e) => {
|
|
this.$refs["oriElForm"].validate().then((res) => {
|
|
if (res) {
|
|
this.$refs["elForm"].validate().then((res) => {
|
|
Object.defineProperty(this.originalForm, "fileds", {
|
|
enumerable: true,
|
|
writable: true,
|
|
configurable: false,
|
|
value: this.form,
|
|
});
|
|
|
|
save(this.originalForm).then((res) => {
|
|
this.$message({
|
|
type: "success",
|
|
message: res.msg,
|
|
});
|
|
this.$emit("refresh");
|
|
this.$emit("update:isShow", false);
|
|
});
|
|
});
|
|
}
|
|
});
|
|
} }}>
|
|
确认
|
|
</Button>
|
|
</div>
|
|
);
|
|
},
|
|
}}
|
|
>
|
|
<el-form
|
|
ref="oriElForm"
|
|
label-width="100px"
|
|
props={{ model: this.originalForm }}
|
|
rules={this.originalRules}
|
|
>
|
|
<el-col span={12}>
|
|
<el-form-item label="年份" prop="year">
|
|
<el-date-picker
|
|
clearable={true}
|
|
placeholder="请选择年份"
|
|
v-model={this.originalForm.year}
|
|
type="year"
|
|
value-format="yyyy"
|
|
on={{
|
|
["change"]: (e) => {
|
|
this.getTemplate();
|
|
},
|
|
}}
|
|
></el-date-picker>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col span={12}>
|
|
<el-form-item label="省份" prop="province_id">
|
|
<el-select
|
|
clearable={true}
|
|
v-model={this.originalForm.province_id}
|
|
placeholder="请选择省份"
|
|
>
|
|
{this.province_ids.map((item) => {
|
|
return (
|
|
<el-option
|
|
value={item.id}
|
|
label={item.name}
|
|
key={item.id}
|
|
></el-option>
|
|
);
|
|
})}
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col span={12}>
|
|
<el-form-item label="姓名" prop="name">
|
|
<el-input
|
|
clearable={true}
|
|
v-model={this.originalForm.name}
|
|
placeholder="请输入姓名"
|
|
></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col span={12}>
|
|
<el-form-item label="身份证号" prop="idcard">
|
|
<el-input
|
|
clearable={true}
|
|
v-model={this.originalForm.idcard}
|
|
placeholder="请输入身份证号"
|
|
></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col span={12}>
|
|
<el-form-item label="考生号" prop="candidate_no">
|
|
<el-input
|
|
clearable={true}
|
|
v-model={this.originalForm.candidate_no}
|
|
placeholder="请输入考生号"
|
|
></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
|
|
<el-col span={12}>
|
|
<el-form-item label="准考证号" prop="allow_no">
|
|
<el-input
|
|
clearable={true}
|
|
v-model={this.originalForm.allow_no}
|
|
placeholder="请输入准考证号"
|
|
></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-form>
|
|
|
|
<el-form
|
|
ref="elForm"
|
|
props={{ model: this.form }}
|
|
rules={this.rules}
|
|
label-width="100px"
|
|
>
|
|
{this.formInfo.map((item) => {
|
|
return (
|
|
<el-col span={12}>
|
|
<el-form-item label={item.name} prop={item.en}>
|
|
{(() => {
|
|
switch (item.type) {
|
|
case 1:
|
|
return (
|
|
<el-input
|
|
clearable={true}
|
|
placeholder={`请输入${item.name}`}
|
|
v-model={this.form[item.en]}
|
|
// style={{ width: "300px" }}
|
|
on={{
|
|
["input"]: (e) => {
|
|
this.$forceUpdate();
|
|
},
|
|
}}
|
|
></el-input>
|
|
);
|
|
case 2:
|
|
return (
|
|
<el-date-picker
|
|
placeholder="请选择"
|
|
v-model={this.form[item.en]}
|
|
type="year"
|
|
value-format="yyyy"
|
|
// style={{ width: "300px" }}
|
|
on={{
|
|
["input"]: (e) => {
|
|
this.$forceUpdate();
|
|
},
|
|
}}
|
|
></el-date-picker>
|
|
);
|
|
}
|
|
})()}
|
|
</el-form-item>
|
|
</el-col>
|
|
);
|
|
})}
|
|
</el-form>
|
|
</Modal>
|
|
);
|
|
},
|
|
props: {
|
|
isShow: {
|
|
type: Boolean,
|
|
default: false,
|
|
},
|
|
province_ids: Array,
|
|
},
|
|
data() {
|
|
let idcardValidate = (rule, value, callback) => {
|
|
let IDRe18 =
|
|
/^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
|
|
let IDre15 =
|
|
/^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/;
|
|
if (IDre15.test(value) || IDRe18.test(value)) {
|
|
callback();
|
|
} else {
|
|
callback(new Error("身份证格式错误"));
|
|
}
|
|
};
|
|
return {
|
|
type: "",
|
|
|
|
//自定义
|
|
formInfo: [],
|
|
form: {},
|
|
rules: {},
|
|
//固定
|
|
originalForm: {
|
|
year: `${new Date().getFullYear()}`,
|
|
province_id: "",
|
|
name: "",
|
|
idcard: "",
|
|
candidate_no: "",
|
|
allow_no: "",
|
|
template_id: "",
|
|
},
|
|
originalRules: {
|
|
year: [{ required: true, message: "请选择年份", trigger: "blur" }],
|
|
province_id: [
|
|
{ required: true, message: "请选择省份", trigger: "blur" },
|
|
],
|
|
name: [{ required: true, message: "请填写姓名", trigger: "blur" }],
|
|
idcard: [
|
|
{ required: true, message: "请填写身份证号", trigger: "blur" },
|
|
{ validator: idcardValidate, trigger: "blur" },
|
|
],
|
|
candidate_no: [
|
|
{ required: true, message: "请填写考生号", trigger: "blur" },
|
|
],
|
|
allow_no: [
|
|
{ required: true, message: "请填写准考证号", trigger: "blur" },
|
|
],
|
|
},
|
|
};
|
|
},
|
|
methods: {
|
|
async getTemplate() {
|
|
const res = await templateShow(
|
|
{
|
|
year: this.originalForm.year,
|
|
},
|
|
true
|
|
);
|
|
if (res?.fileds) {
|
|
res?.fileds.forEach((item) => {
|
|
Object.defineProperty(this.form, item.en, {
|
|
value: "",
|
|
writable: true,
|
|
enumerable: true,
|
|
configurable: false,
|
|
});
|
|
//this.form[item.en] = "";
|
|
this.rules[item.en] = {
|
|
validator: (rule, value, callback) => {
|
|
if (!this.form[item.en]) {
|
|
callback(new Error("未填写"));
|
|
} else {
|
|
callback();
|
|
}
|
|
},
|
|
trigger: "blur",
|
|
required: true,
|
|
};
|
|
});
|
|
}
|
|
|
|
this.formInfo = res?.fileds ?? [];
|
|
this.$forceUpdate();
|
|
},
|
|
},
|
|
watch: {
|
|
async isShow(newVal) {
|
|
if (newVal) {
|
|
await this.getTemplate();
|
|
}
|
|
},
|
|
},
|
|
created() {
|
|
//this.getTemplate()
|
|
},
|
|
};
|
|
</script>
|