|
@@ -10,98 +10,52 @@
|
|
|
:rules="rules"
|
|
|
label-width="15rem"
|
|
|
class="fillIn-contain-form"
|
|
|
+ style="padding-right:30px;"
|
|
|
>
|
|
|
<el-row>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item
|
|
|
- label="访客名称"
|
|
|
- prop="visitorName"
|
|
|
- :rules="rules.visitorName"
|
|
|
- >
|
|
|
- <el-input
|
|
|
- placeholder="请输入访客名称"
|
|
|
- v-model="form.visitorName"
|
|
|
- disabled
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="性别" prop="sex">
|
|
|
- <el-select v-model="form.sex" placeholder="请选择性别" style="width: 100%" disabled>
|
|
|
- <el-option
|
|
|
-
|
|
|
- v-for="item in options"
|
|
|
- :key="item.value"
|
|
|
- :label="item.label"
|
|
|
- :value="item.value"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="身份证号码" prop="identityCardNo">
|
|
|
- <el-input
|
|
|
- placeholder="请输入身份证号码"
|
|
|
- v-model="form.identityCardNo"
|
|
|
- disabled
|
|
|
- ></el-input>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="手机号码" prop="mobilePhone">
|
|
|
+ <el-form-item label="被访人姓名" :rules="rules.targetPeopleName">
|
|
|
<el-input
|
|
|
- placeholder="请输入手机号码"
|
|
|
- v-model="form.mobilePhone"
|
|
|
+ placeholder="请输入被访人姓名"
|
|
|
+ v-model="form.targetPeopleName"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="访客公司" >
|
|
|
+ <el-form-item label="被访人手机号码" prop="targetPeoplePhone">
|
|
|
<el-input
|
|
|
- placeholder="请输入访客公司"
|
|
|
- v-model="form.visitorCompany"
|
|
|
+ placeholder="请输入被访人手机号码"
|
|
|
+ v-model="form.targetPeoplePhone"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
-
|
|
|
<el-col :span="12">
|
|
|
<el-form-item
|
|
|
class="el-form-pack-12"
|
|
|
- label="随行人数"
|
|
|
- prop="accompanyNum"
|
|
|
+ label="来访事由"
|
|
|
+ :rules="rules.visitorReasonCode"
|
|
|
>
|
|
|
<el-input
|
|
|
- placeholder="请输入随行人数"
|
|
|
- v-model="form.accompanyNum"
|
|
|
- min="0"
|
|
|
+ placeholder="请输入拜访事由"
|
|
|
+ v-model="form.visitorReasonCode"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item
|
|
|
class="el-form-pack-12"
|
|
|
- label="被访部门"
|
|
|
- prop="intervieweeDepartId"
|
|
|
+ label="来访人数"
|
|
|
+ :rules="rules.visitorNumber"
|
|
|
>
|
|
|
- <el-tree-select
|
|
|
- v-model="form.intervieweeDepartId"
|
|
|
- :data="departData"
|
|
|
- :render-after-expand="false"
|
|
|
- style="width: 100%"
|
|
|
- @change="departChange"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- <el-col :span="12">
|
|
|
- <el-form-item label="被访人手机号码" prop="intervieweeMobile">
|
|
|
<el-input
|
|
|
- placeholder="请输入被访人手机号码"
|
|
|
- v-model="form.intervieweeMobile"
|
|
|
+ placeholder="请输入来访人数"
|
|
|
+ v-model="form.visitorNumber"
|
|
|
+ min="1"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <!-- <el-col :span="16">
|
|
|
- <el-form-item label="到访起止时间" style="width: 100%">
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="到访起止时间" style="width: 100%" :rules="rules.dateRange">
|
|
|
<el-date-picker
|
|
|
v-model="dateRange"
|
|
|
:default-time="[new Date(2000, 1, 1), new Date(2000, 2, 1)]"
|
|
@@ -112,16 +66,55 @@
|
|
|
end-placeholder="结束时间"
|
|
|
></el-date-picker>
|
|
|
</el-form-item>
|
|
|
- </el-col> -->
|
|
|
- <el-col :span="12">
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
<el-form-item
|
|
|
- class="el-form-pack-12"
|
|
|
- label="拜访事由"
|
|
|
- prop="reason"
|
|
|
+ label="访客名称"
|
|
|
+ :rules="rules.peopleName"
|
|
|
>
|
|
|
<el-input
|
|
|
- placeholder="请输入拜访事由"
|
|
|
- v-model="form.reason"
|
|
|
+ placeholder="请输入访客名称"
|
|
|
+ v-model="form.visitorPersonList.peopleName"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item
|
|
|
+ label="访客手机号"
|
|
|
+ :rules="rules.peopleName"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ placeholder="请输入访客手机号"
|
|
|
+ v-model="form.visitorPersonList.peoplePhone"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="性别" prop="sex">
|
|
|
+ <el-select v-model="form.visitorPersonList.sex" placeholder="请选择性别" style="width: 100%" >
|
|
|
+ <el-option
|
|
|
+
|
|
|
+ v-for="item in sex"
|
|
|
+ :key="item.value"
|
|
|
+ :label="item.label"
|
|
|
+ :value="item.value"
|
|
|
+ />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="身份证号码" :rules="rules.cardId">
|
|
|
+ <el-input
|
|
|
+ placeholder="请输入身份证号码"
|
|
|
+ v-model="form.visitorPersonList.cardId"
|
|
|
+ ></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="来访单位" :rules="rules.callerCorpName">
|
|
|
+ <el-input
|
|
|
+ placeholder="请输入来访单位"
|
|
|
+ v-model="form.visitorPersonList.callerCorpName"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
@@ -153,7 +146,7 @@ import { useRouter } from "vue-router";
|
|
|
/*----------------------------------组件引入-----------------------------------*/
|
|
|
import layout from "@/components/layout/index.vue";
|
|
|
/*----------------------------------接口引入-----------------------------------*/
|
|
|
-import { getOrganization, getCustomer, addVisitor } from "@/api/index";
|
|
|
+import { addVisitor } from "@/api/index";
|
|
|
/*----------------------------------公共变量-----------------------------------*/
|
|
|
const router = useRouter();
|
|
|
const { proxy } = getCurrentInstance();
|
|
@@ -164,25 +157,67 @@ const departData = ref(); //组织列表
|
|
|
const phoneArray = ref([]); //人员电话号码合集
|
|
|
const data = reactive({
|
|
|
form: {
|
|
|
- idType: 0,//证件类型(身份证)
|
|
|
- visitorRegisterType: 0,//访客登记类型(现场登记)
|
|
|
- reservedField1: 1,//登记来源(访客机)
|
|
|
- registrationPlace:"共进大厦一楼",//登记地点
|
|
|
- visitorStartTime: "",
|
|
|
- vistorEndTime: "",
|
|
|
- mobilePhone: "",
|
|
|
+ targetPeoplePhone:"",//被访人手机号
|
|
|
+ targetPeopleName:"",//被访人姓名 .
|
|
|
+ visitorReasonCode:"",//来访事由编码 .
|
|
|
+ visitorReasonInfo:"",//来访事由 .
|
|
|
+ visitorNumber:"",//来访人数 .
|
|
|
+ startTime:"", //开始时间 .
|
|
|
+ endTime:"", //结束时间 .
|
|
|
+ visitorPersonList:{
|
|
|
+ peopleName:"",//访客姓名 .
|
|
|
+ peoplePhone:"",//访客手机号 .
|
|
|
+ sex:"",//访客性别 .
|
|
|
+ cardId:"341282199208123456",//证件号 .
|
|
|
+ cardType:"2",//证件类型 .
|
|
|
+ plates:"2",//车牌号 .
|
|
|
+ callerCorpName:"",//来访单位 .
|
|
|
+ signInOutState:"non",//签到/离状态 .
|
|
|
+ } //访客信息列表 .
|
|
|
},
|
|
|
+ visitorReasonCodeList:[
|
|
|
+ {label:"亲友拜访",value:"family_friends_visitor"},
|
|
|
+ {label:"外卖配送",value:"courier_delivery"},
|
|
|
+ {label:"受邀面试",value:"interview"},
|
|
|
+ {label:"商务洽谈",value:"business_talks"},
|
|
|
+ {label:"预约服务",value:"reservation_service"},
|
|
|
+ {label:"其他",value:"other"}
|
|
|
+ ],
|
|
|
+ visitorReasonInfoList:[
|
|
|
+ {label:"亲友拜访",value:"family_friends_visitor"},
|
|
|
+ {label:"外卖配送",value:"ourier_delivery"},
|
|
|
+ {label:"受邀面试",value:"interview"},
|
|
|
+ {label:"商务洽谈",value:"business_talks"},
|
|
|
+ {label:"预约服务",value:"reservation_service"},
|
|
|
+ {label:"其他",value:"other"}
|
|
|
+ ],
|
|
|
+ sex:[
|
|
|
+ {label:"女",value:"man"},
|
|
|
+ {label:"男",value:"woman"},
|
|
|
+ {label:"未知",value:"unknown"},
|
|
|
+ ],
|
|
|
rules: {
|
|
|
- visitorName: [
|
|
|
- { required: true, message: "请输入访客名称", trigger: "blur" },
|
|
|
+ targetPeopleName: [
|
|
|
+ { required: true, message: "请输入被访人姓名", trigger: "blur" },
|
|
|
],
|
|
|
- identityCardNo: [
|
|
|
+ visitorReasonCode: [
|
|
|
+ { required: true, message: "请选择来访事由", trigger: "change" },
|
|
|
+ ],
|
|
|
+ visitorNumber: [
|
|
|
+ { required: true, message: "请输入来访人数", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ peopleName: [
|
|
|
+ { required: true, message: "请输入访客姓名", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ peoplePhone:proxy.regex.Phone(true, "请输入访客手机号码"),
|
|
|
+ sex: [
|
|
|
+ { required: true, message: "请选择性别", trigger: "blur" },
|
|
|
+ ],
|
|
|
+ cardId: [
|
|
|
{ required: true, message: "请输入访客身份证号码", trigger: "blur" },
|
|
|
],
|
|
|
- mobilePhone: proxy.regex.Phone(true, "请输入手机号码"),
|
|
|
-
|
|
|
- intervieweeMobile: proxy.regex.CheckMobile(
|
|
|
- { required: true, message: "被访人手机号码不能为空" },
|
|
|
+ mobilePhone:proxy.regex.CheckMobile(
|
|
|
+ { required: true, message: "访客手机号码不能为空" },
|
|
|
{
|
|
|
trigger: "blur",
|
|
|
validator: (rule, value, callback) =>
|
|
@@ -194,42 +229,33 @@ const data = reactive({
|
|
|
),
|
|
|
}
|
|
|
),
|
|
|
-
|
|
|
- intervieweeDepartId: [
|
|
|
- { required: true, message: "请选择被访部门", trigger: "change" },
|
|
|
+ callerCorpName: [
|
|
|
+ { required: true, message: "请输入来访单位", trigger: "blur" },
|
|
|
],
|
|
|
+ dateRange:[{ required: true, message: "请选择到访起止时间", trigger: "blur" },]
|
|
|
},
|
|
|
dateRange: [],
|
|
|
});
|
|
|
const timer = ref(null);
|
|
|
-const options = [
|
|
|
- {
|
|
|
- value: '1',
|
|
|
- label: '女',
|
|
|
- },
|
|
|
- {
|
|
|
- value: '2',
|
|
|
- label: '男',
|
|
|
- }]
|
|
|
const certificateData = ref({});
|
|
|
-const { form, rules, dateRange } = toRefs(data);
|
|
|
+const { form, rules, dateRange, visitorReasonCodeList, visitorReasonInfoList, sex } = toRefs(data);
|
|
|
/*----------------------------------方法声明-----------------------------------*/
|
|
|
|
|
|
|
|
|
/** 身份证数据读取 */
|
|
|
function getData() {
|
|
|
- timer.value = setInterval(() => {
|
|
|
- axios
|
|
|
- .get(
|
|
|
- "http://127.0.0.1:24010/ZKIDROnline/ScanReadIdCardInfo?OP-DEV=1&CMD-URL=4&REPEAT=1&READTYPE=1&TIMEOUT=4"
|
|
|
- )
|
|
|
- .then((response) => {
|
|
|
- form.value.visitorName = response.data.Certificate.Name;
|
|
|
- form.value.sex = response.data.Certificate.Sex=='女'?'1':'2';
|
|
|
- form.value.identityCardNo = response.data.Certificate.IDNumber;
|
|
|
- })
|
|
|
- .catch((error) => {});
|
|
|
- }, 3000);
|
|
|
+ // timer.value = setInterval(() => {
|
|
|
+ // axios
|
|
|
+ // .get(
|
|
|
+ // "http://127.0.0.1:24010/ZKIDROnline/ScanReadIdCardInfo?OP-DEV=1&CMD-URL=4&REPEAT=1&READTYPE=1&TIMEOUT=4"
|
|
|
+ // )
|
|
|
+ // .then((response) => {
|
|
|
+ // form.value.visitorName = response.data.Certificate.Name;
|
|
|
+ // form.value.sex = response.data.Certificate.Sex=='女'?'1':'2';
|
|
|
+ // form.value.identityCardNo = response.data.Certificate.IDNumber;
|
|
|
+ // })
|
|
|
+ // .catch((error) => {});
|
|
|
+ // }, 3000);
|
|
|
}
|
|
|
|
|
|
/** 新增访客表单提交 */
|
|
@@ -273,49 +299,8 @@ function submitForm() {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-/** 获取访客部门树结构数据 */
|
|
|
-function getDepartData() {
|
|
|
- getOrganization({
|
|
|
- pageIndex: 1,
|
|
|
- maxResultCount: 10,
|
|
|
- }).then((request) => {
|
|
|
- if (request.success == true) {
|
|
|
- departData.value = JSON.parse(
|
|
|
- JSON.stringify(request.result.item)
|
|
|
- .replace(/name/g, "label")
|
|
|
- .replace(/id/g, "value")
|
|
|
- );
|
|
|
- } else {
|
|
|
- ElMessage.error(request.msg);
|
|
|
- }
|
|
|
- });
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * @部门下拉chage事件
|
|
|
- */
|
|
|
-function departChange(val) {
|
|
|
- getCustomer({
|
|
|
- pageIndex: 1,
|
|
|
- maxResultCount: 10,
|
|
|
- queryDto: {
|
|
|
- orgIds: [val],
|
|
|
- },
|
|
|
- }).then((request) => {
|
|
|
- if (request.success == true) {
|
|
|
- var dataArray = request.result.item;
|
|
|
- dataArray.forEach(function (item, index) {
|
|
|
- phoneArray.value.push(item.mobile1);
|
|
|
- });
|
|
|
- } else {
|
|
|
- ElMessage.error(request.msg);
|
|
|
- }
|
|
|
- });
|
|
|
-}
|
|
|
-
|
|
|
onMounted(() => {
|
|
|
getData();
|
|
|
- getDepartData();
|
|
|
});
|
|
|
|
|
|
onUnmounted(() => {
|