Files
sgt_ca_app/src/views/CA/UserApply.vue
zhangqi 59320849a2 update:个人CA申请入口打开 新增查询接口
update:法人CA使用vue3.0组合式api
2021-01-31 23:21:58 +08:00

191 lines
5.4 KiB
Vue

<template>
<div class="ca-apply">
<Form
ref="ruleForm"
:model="form"
:label-col="labelCol"
:wrapper-col="wrapperCol"
:rules="rules"
>
<FormItem label="真实姓名" name="idCardName">
<Input v-model:value="form.idCardName" :disabled="disableEdit" />
</FormItem>
<FormItem label="身份证号码" name="idCardNo">
<Input v-model:value="form.idCardNo" :disabled="disableEdit" />
</FormItem>
<FormItem label="所在单位名称" name="unitName">
<Select v-model:value="form.unitName" :disabled="disableEdit">
<Option
v-for="organize in organizeList"
:key="organize.id"
:value="organize.name"
>{{ organize.name }}</Option
>
</Select>
</FormItem>
<FormItem label="手机号码" name="phone">
<Input v-model:value="form.phone" :disabled="disableEdit" />
</FormItem>
<FormItem :wrapperCol="{ span: 10, offset: 8 }">
<Button type="primary" @click="onSubmit" v-if="!disableEdit"
>前往申领</Button
>
<Button type="primary" @click="getStatus" v-if="disableEdit"
>继续申领流程</Button
>
<Button style="margin-left: 10px" @click="showDrawer"
>历史申领记录</Button
>
</FormItem>
</Form>
</div>
<Drawer
title="历史申领记录"
placement="right"
:closable="false"
v-model:visible="drawVisible"
>
<p v-for="userApply in userApplyList" :key="userApply.id">
{{ `${userApply.idCardName}-${userApply.phone}-${userApply.unitName}` }}
</p>
</Drawer>
</template>
<style lang="less" scoped>
.ca-apply {
width: 600px;
}
</style>
<script>
import { Form, Input, Button, Select, message, Drawer } from "ant-design-vue";
import { get, post } from "@/services/http";
import regex from "@/services/regex";
export default {
data() {
return {
labelCol: { span: 8 },
wrapperCol: { span: 10 },
form: {
idCardNo: "",
idCardName: "",
unitName: "",
phone: ""
},
rules: {
idCardNo: [
{ required: true, message: "请输入18位身份证号码", trigger: "blur" },
{
pattern: regex.IdCardNo,
message: "输入正确的18位身份证号码",
trigger: "blur"
}
],
idCardName: [
{ required: true, message: "请输入真实姓名", trigger: "blur" }
],
unitName: [
{ required: true, message: "请选择你的单位名称", trigger: "change" }
],
phone: [
{ required: true, message: "请输入你的手机号码", trigger: "blur" },
{
pattern: regex.Phone,
message: "请输入正确的11位手机号码",
trigger: "blur"
}
]
},
userApplyList: [],
organizeList: [],
drawVisible: false,
disableEdit: true,
currentApplyId: 0
};
},
methods: {
showDrawer() {
this.drawVisible = true;
},
async onSubmit() {
try {
await this.$refs.ruleForm.validate();
} catch (error) {
console.log("error", error);
return;
}
const resp = await post("/api2/CA/createUserApply", this.form);
if (resp.errorCode != 0) {
message.error(resp.errorMsg);
} else {
this.currentApplyId = resp.data;
message.success(
"录入完成即将进入申请页面",
(onclose = () => this.goCertUrl())
);
}
},
async goCertUrl() {
const res = await get("/api2/CA/GetRedirectUrl", {
applyId: this.currentApplyId
});
if (res.errorCode == 0) {
// window.open(res.data);
location.href = res.data;
} else {
message.error(res.errorMsg);
}
},
async getStatus() {
const res = await get("/api2/CA/UserApplyGetStatus", {
id: this.currentApplyId
});
if (res.errorCode == 0) {
const status = res.data;
message.info(
"当前状态:" +
[
"待审核,请耐心等待结果",
"审核通过,请等待授权通过",
"已授权,请等待证书发放",
"已发放,申领已完成",
"已拒绝,请重新申请或联系管理员"
][status]
);
} else {
await this.goCertUrl();
}
}
},
components: {
Form,
Input,
FormItem: Form.Item,
Button,
Select,
Option: Select.Option,
Drawer
},
created: async function() {
//获取所在组织信息和个人数字认证信息
const organizeInfo = await get("/api2/UserInfo/Organize");
const userApplyList = await get("/api2/CA/UserApplyList");
console.log(userApplyList);
if (organizeInfo.errorCode !== 0 || userApplyList.errorCode !== 0) {
message.error("数据异常请稍后重试");
return;
}
this.organizeList = organizeInfo.data;
this.userApplyList = userApplyList.data;
var current = this.userApplyList.find(p => p.status === null);
if (current) {
this.form.idCardName = current.idCardName;
this.form.idCardNo = current.idCardNo;
this.form.unitName = current.unitName;
this.form.phone = current.phone;
this.currentApplyId = current.id;
} else {
this.disableEdit = false;
}
}
};
</script>