Showing
6 changed files
with
164 additions
and
2 deletions
| ... | @@ -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: { | ... | ... |
src/views/addVisitor.vue
0 → 100644
| 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 }} <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" /> 温馨提示:账号实名认证信息一经填写将无法修改 | ||
| 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" | ... | ... |
-
Please register or login to post a comment