hookehuyr

新增添加参观者页面

...@@ -18,6 +18,8 @@ declare module '@vue/runtime-core' { ...@@ -18,6 +18,8 @@ declare module '@vue/runtime-core' {
18 VanField: typeof import('vant/es')['Field'] 18 VanField: typeof import('vant/es')['Field']
19 VanForm: typeof import('vant/es')['Form'] 19 VanForm: typeof import('vant/es')['Form']
20 VanIcon: typeof import('vant/es')['Icon'] 20 VanIcon: typeof import('vant/es')['Icon']
21 + VanPicker: typeof import('vant/es')['Picker']
22 + VanPopup: typeof import('vant/es')['Popup']
21 VanRadio: typeof import('vant/es')['Radio'] 23 VanRadio: typeof import('vant/es')['Radio']
22 VanRadioGroup: typeof import('vant/es')['RadioGroup'] 24 VanRadioGroup: typeof import('vant/es')['RadioGroup']
23 VanRow: typeof import('vant/es')['Row'] 25 VanRow: typeof import('vant/es')['Row']
......
...@@ -37,6 +37,7 @@ ...@@ -37,6 +37,7 @@
37 "vite-plugin-mp": "^1.6.1", 37 "vite-plugin-mp": "^1.6.1",
38 "vue": "^3.2.36", 38 "vue": "^3.2.36",
39 "weixin-js-sdk": "^1.6.0", 39 "weixin-js-sdk": "^1.6.0",
40 + "xctc-check": "^0.0.2",
40 "xijs": "^1.2.6" 41 "xijs": "^1.2.6"
41 }, 42 },
42 "devDependencies": { 43 "devDependencies": {
......
1 <!-- 1 <!--
2 * @Date: 2023-06-13 13:26:46 2 * @Date: 2023-06-13 13:26:46
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2024-01-15 13:15:13 4 + * @LastEditTime: 2024-01-15 17:46:14
5 * @FilePath: /xysBooking/src/App.vue 5 * @FilePath: /xysBooking/src/App.vue
6 * @Description: 启动页 6 * @Description: 启动页
7 --> 7 -->
...@@ -93,4 +93,9 @@ body { ...@@ -93,4 +93,9 @@ body {
93 .zIndex { 93 .zIndex {
94 z-index: 4500 !important; 94 z-index: 4500 !important;
95 } 95 }
96 +
97 +input::placeholder,
98 +textarea::placeholder {
99 + color: #9C9A9A; /* 设置占位符的颜色 */
100 +}
96 </style> 101 </style>
......
1 /* 1 /*
2 * @Date: 2023-06-13 13:26:46 2 * @Date: 2023-06-13 13:26:46
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2024-01-15 16:26:34 4 + * @LastEditTime: 2024-01-15 17:40:55
5 * @FilePath: /xysBooking/src/route.js 5 * @FilePath: /xysBooking/src/route.js
6 * @Description: 文件描述 6 * @Description: 文件描述
7 */ 7 */
...@@ -35,6 +35,13 @@ export default [ ...@@ -35,6 +35,13 @@ export default [
35 }, 35 },
36 }, 36 },
37 { 37 {
38 + path: '/addVisitor',
39 + component: () => import('@/views/addVisitor.vue'),
40 + meta: {
41 + title: '添加参观者',
42 + },
43 + },
44 + {
38 path: '/auth', 45 path: '/auth',
39 component: () => import('@/views/auth.vue'), 46 component: () => import('@/views/auth.vue'),
40 meta: { 47 meta: {
......
1 +<!--
2 + * @Date: 2024-01-15 17:39:29
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2024-01-15 18:25:20
5 + * @FilePath: /xysBooking/src/views/addVisitor.vue
6 + * @Description: 文件描述
7 +-->
8 +<template>
9 + <div class="add-visitor-page">
10 + <div class="input-item">
11 + <div>姓名</div>
12 + <div>
13 + <input type="text" v-model="username" placeholder="请输入参观者真实姓名" @blur="checkUsername">
14 + </div>
15 + </div>
16 + <div class="input-item">
17 + <div>证件类型</div>
18 + <div @click="idTypeChange">
19 + {{ fieldValue }}&nbsp;<van-icon name="arrow-down" />
20 + </div>
21 + </div>
22 + <div class="input-item">
23 + <div>证件号码</div>
24 + <div>
25 + <input type="text" v-model="idCode" placeholder="请输入证件号码" @blur="checkIdCode" maxlength="18" style="width: 100%;">
26 + </div>
27 + </div>
28 + <div style="color:#A67939; font-size: 0.85rem;">
29 + <van-icon name="warning-o" />&nbsp;温馨提示:账号实名认证信息一经填写将无法修改
30 + </div>
31 + <div class="save-wrapper">
32 + <div class="save-btn" @click="addVisitor">保存</div>
33 + </div>
34 +
35 + <van-popup v-model:show="showPicker" position="bottom">
36 + <van-picker
37 + :columns="columns"
38 + @cancel="showPicker = false"
39 + @confirm="onConfirm"
40 + />
41 + </van-popup>
42 + </div>
43 +</template>
44 +
45 +<script setup>
46 +import { ref } from 'vue'
47 +import { useRoute, useRouter } from 'vue-router'
48 +import xctcCheck from "xctc-check"
49 +import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@/utils/generatePackage.js'
50 +//import { } from '@/utils/generateModules.js'
51 +//import { } from '@/utils/generateIcons.js'
52 +//import { } from '@/composables'
53 +import { showSuccessToast, showFailToast } from 'vant';
54 +
55 +const $route = useRoute();
56 +const $router = useRouter();
57 +useTitle($route.meta.title);
58 +
59 +const username = ref('');
60 +const idCode = ref('');
61 +const isError = ref(false);
62 +
63 +const checkUsername = () => {
64 + let flag = true;
65 + if (username.value) {
66 +
67 + } else {
68 + showFailToast('参观者名称不能为空');
69 + flag = false;
70 + }
71 + return flag;
72 +}
73 +const checkIdCode = () => {
74 + const res = xctcCheck.checkIdCard(idCode.value);
75 + let flag = true;
76 + if (res.status) {
77 +
78 + } else {
79 + showFailToast(res.msg);
80 + flag = false;
81 + }
82 + return flag;
83 +}
84 +
85 +const addVisitor = () => {
86 + if (checkUsername() && checkIdCode()) {
87 + console.warn(0);
88 + }
89 +}
90 +
91 +const showPicker = ref(false);
92 +const idTypeChange = () => {
93 + showPicker.value = !showPicker.value;
94 +}
95 +const columns = [
96 + { text: '身份证', value: '0' },
97 + { text: '其他证件', value: '1' },
98 +];
99 +const fieldValue = ref('身份证');
100 +
101 +const onConfirm = ({ selectedOptions }) => {
102 + showPicker.value = false;
103 + fieldValue.value = selectedOptions[0].text;
104 +};
105 +</script>
106 +
107 +<style lang="less" scoped>
108 +.add-visitor-page {
109 + padding: 1rem;
110 + position: relative;
111 + .input-item {
112 + display: flex;
113 + align-items: center;
114 + justify-content: space-between;
115 + background-color: #fff;
116 + padding: 1rem;
117 + border-radius: 8px;
118 + margin-bottom: 1rem;
119 + input {
120 + border: 0;
121 + text-align: right;
122 + }
123 + }
124 + .save-wrapper {
125 + background-color: #FFF;
126 + position: fixed;
127 + width: 100vw;
128 + bottom: 0;
129 + left: 0;
130 + height: 5rem;
131 + display: flex;
132 + align-items: center;
133 + justify-content: center;
134 + .save-btn {
135 + background-color: #A67939;
136 + padding: 0.8rem 8rem;
137 + color: #FFF;
138 + border-radius: 5px;
139 + }
140 + }
141 +}
142 +</style>
...@@ -3735,6 +3735,11 @@ wrappy@1: ...@@ -3735,6 +3735,11 @@ wrappy@1:
3735 resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 3735 resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
3736 integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 3736 integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
3737 3737
3738 +xctc-check@^0.0.2:
3739 + version "0.0.2"
3740 + resolved "https://mirrors.cloud.tencent.com/npm/xctc-check/-/xctc-check-0.0.2.tgz#92df3e52097bfe4d44d6b545d4ca66cfb992cb9d"
3741 + integrity sha512-+eUeA9N2ST9gFae4SHT+27U2bszSdvqy0uwnAZmej8RHUCoyp8y7Ny1EZao2+ob/shcpuCy6gpxDMoWd2HFhIg==
3742 +
3738 xijs@^1.2.6: 3743 xijs@^1.2.6:
3739 version "1.2.6" 3744 version "1.2.6"
3740 resolved "https://mirrors.cloud.tencent.com/npm/xijs/-/xijs-1.2.6.tgz" 3745 resolved "https://mirrors.cloud.tencent.com/npm/xijs/-/xijs-1.2.6.tgz"
......