Showing
7 changed files
with
234 additions
and
1 deletions
| ... | @@ -13,6 +13,7 @@ | ... | @@ -13,6 +13,7 @@ |
| 13 | "lodash": "^4.17.21", | 13 | "lodash": "^4.17.21", |
| 14 | "moment": "^2.29.1", | 14 | "moment": "^2.29.1", |
| 15 | "mui-player": "^1.6.0", | 15 | "mui-player": "^1.6.0", |
| 16 | + "uuid": "^8.3.2", | ||
| 16 | "vant": "^4.0.0-alpha.0", | 17 | "vant": "^4.0.0-alpha.0", |
| 17 | "vue": "^3.2.31", | 18 | "vue": "^3.2.31", |
| 18 | "weixin-js-sdk": "^1.6.0" | 19 | "weixin-js-sdk": "^1.6.0" |
| ... | @@ -1578,6 +1579,14 @@ | ... | @@ -1578,6 +1579,14 @@ |
| 1578 | "base64-arraybuffer": "^1.0.2" | 1579 | "base64-arraybuffer": "^1.0.2" |
| 1579 | } | 1580 | } |
| 1580 | }, | 1581 | }, |
| 1582 | + "node_modules/uuid": { | ||
| 1583 | + "version": "8.3.2", | ||
| 1584 | + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", | ||
| 1585 | + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", | ||
| 1586 | + "bin": { | ||
| 1587 | + "uuid": "dist/bin/uuid" | ||
| 1588 | + } | ||
| 1589 | + }, | ||
| 1581 | "node_modules/vant": { | 1590 | "node_modules/vant": { |
| 1582 | "version": "4.0.0-alpha.0", | 1591 | "version": "4.0.0-alpha.0", |
| 1583 | "resolved": "https://registry.npmjs.org/vant/-/vant-4.0.0-alpha.0.tgz", | 1592 | "resolved": "https://registry.npmjs.org/vant/-/vant-4.0.0-alpha.0.tgz", |
| ... | @@ -2847,6 +2856,11 @@ | ... | @@ -2847,6 +2856,11 @@ |
| 2847 | "base64-arraybuffer": "^1.0.2" | 2856 | "base64-arraybuffer": "^1.0.2" |
| 2848 | } | 2857 | } |
| 2849 | }, | 2858 | }, |
| 2859 | + "uuid": { | ||
| 2860 | + "version": "8.3.2", | ||
| 2861 | + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", | ||
| 2862 | + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" | ||
| 2863 | + }, | ||
| 2850 | "vant": { | 2864 | "vant": { |
| 2851 | "version": "4.0.0-alpha.0", | 2865 | "version": "4.0.0-alpha.0", |
| 2852 | "resolved": "https://registry.npmjs.org/vant/-/vant-4.0.0-alpha.0.tgz", | 2866 | "resolved": "https://registry.npmjs.org/vant/-/vant-4.0.0-alpha.0.tgz", | ... | ... |
| ... | @@ -14,6 +14,7 @@ | ... | @@ -14,6 +14,7 @@ |
| 14 | "lodash": "^4.17.21", | 14 | "lodash": "^4.17.21", |
| 15 | "moment": "^2.29.1", | 15 | "moment": "^2.29.1", |
| 16 | "mui-player": "^1.6.0", | 16 | "mui-player": "^1.6.0", |
| 17 | + "uuid": "^8.3.2", | ||
| 17 | "vant": "^4.0.0-alpha.0", | 18 | "vant": "^4.0.0-alpha.0", |
| 18 | "vue": "^3.2.31", | 19 | "vue": "^3.2.31", |
| 19 | "weixin-js-sdk": "^1.6.0" | 20 | "weixin-js-sdk": "^1.6.0" | ... | ... |
| ... | @@ -117,6 +117,14 @@ export default [{ | ... | @@ -117,6 +117,14 @@ export default [{ |
| 117 | }, | 117 | }, |
| 118 | children: [] | 118 | children: [] |
| 119 | }, { | 119 | }, { |
| 120 | + path: '/me/addUser', | ||
| 121 | + name: '新增儿童', | ||
| 122 | + component: () => import('./views/me/addUser.vue'), | ||
| 123 | + meta: { | ||
| 124 | + title: '新增儿童' | ||
| 125 | + }, | ||
| 126 | + children: [] | ||
| 127 | +}, { | ||
| 120 | path: '/image', | 128 | path: '/image', |
| 121 | name: 'html转图片', | 129 | name: 'html转图片', |
| 122 | component: () => import('./views/html2canvas.vue'), | 130 | component: () => import('./views/html2canvas.vue'), | ... | ... |
src/views/me/addUser.vue
0 → 100644
| 1 | +<template> | ||
| 2 | + <div class="add-user-page"> | ||
| 3 | + <p style="color: #713610; font-size: 1.25rem; padding: 1rem; text-align: center; font-weight: bold;">请录入儿童的信息</p> | ||
| 4 | + <div style=""> | ||
| 5 | + <van-config-provider :theme-vars="themeVars"> | ||
| 6 | + <van-form @submit="onSubmit"> | ||
| 7 | + <van-cell-group inset> | ||
| 8 | + <van-field v-model="user_info.kindergarten" name="幼儿园" label="幼儿园" placeholder="" disabled /> | ||
| 9 | + <van-field v-model="user_info.job" name="儿童姓名" label="儿童姓名" placeholder="请输入儿童姓名" /> | ||
| 10 | + <van-row style="padding: 2vh 0;"> | ||
| 11 | + <van-col span="7"><span style="font-size: 14px; color: #323233; margin-left: 2vh;">儿童头像</span></van-col> | ||
| 12 | + <van-col span="17"><span style="font-size: 12px; color: #B0B0B0;">请上传一张清晰的儿童照片</span></van-col> | ||
| 13 | + </van-row> | ||
| 14 | + <van-row style="padding-bottom: 2vh;"> | ||
| 15 | + <van-col span="16" offset="8"> | ||
| 16 | + <van-uploader v-model="fileList" :after-read="afterRead" :before-delete="beforeDelete" :max-count="1" /> | ||
| 17 | + </van-col> | ||
| 18 | + </van-row> | ||
| 19 | + </van-cell-group> | ||
| 20 | + <div style="margin: 2vh;"> | ||
| 21 | + <van-button v-if="lock_btn" loading type="primary" loading-text="上传中..." style="width: 100%;" round></van-button> | ||
| 22 | + <van-button v-else @click="saveInfo" :disabled="lock_btn" type="primary" native-type="submit" style="width: 100%;" round>保存</van-button> | ||
| 23 | + </div> | ||
| 24 | + </van-form> | ||
| 25 | + </van-config-provider> | ||
| 26 | + </div> | ||
| 27 | + </div> | ||
| 28 | +</template> | ||
| 29 | + | ||
| 30 | +<script setup> | ||
| 31 | +import { v4 as uuidv4 } from 'uuid'; | ||
| 32 | +import { ref, reactive, onMounted } from 'vue' | ||
| 33 | +import { useRoute, useRouter } from 'vue-router' | ||
| 34 | +import axios from '@/utils/axios'; | ||
| 35 | +import qs from 'Qs' | ||
| 36 | +import $ from 'jquery' | ||
| 37 | +import { Toast } from 'vant'; | ||
| 38 | +const $route = useRoute(); | ||
| 39 | +const $router = useRouter(); | ||
| 40 | + | ||
| 41 | +const themeVars = { | ||
| 42 | + buttonPrimaryBackground: '#F9D95C', | ||
| 43 | + buttonPrimaryBorderColor: '#F9D95C', | ||
| 44 | + buttonPrimaryColor: '#713610', | ||
| 45 | +}; | ||
| 46 | + | ||
| 47 | +const onSubmit = (values) => { | ||
| 48 | + // console.log('submit', values); | ||
| 49 | +}; | ||
| 50 | + | ||
| 51 | +// const uuid = () => { | ||
| 52 | +// let s = []; | ||
| 53 | +// let hexDigits = '0123456789abcdef'; | ||
| 54 | +// for (var i = 0; i < 36; i++) { | ||
| 55 | +// s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1); | ||
| 56 | +// } | ||
| 57 | +// s[14] = '4'; // bits 12-15 of the time_hi_and_version field to 0010 | ||
| 58 | +// s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01 | ||
| 59 | +// s[8] = s[13] = s[18] = s[23] = '-'; | ||
| 60 | + | ||
| 61 | +// var uuid = s.join(''); | ||
| 62 | +// return uuid; | ||
| 63 | +// } | ||
| 64 | + | ||
| 65 | +// 图片模块 | ||
| 66 | +let lock_btn = ref(false); // 保存按钮锁 | ||
| 67 | +let fileList = ref([]); | ||
| 68 | +let upload_image = reactive({ meta_id: '' }); | ||
| 69 | +const afterRead = (res) => { | ||
| 70 | + lock_btn.value = true; // 上传开始, 不能保存 | ||
| 71 | + let affix = uuidv4(); | ||
| 72 | + // let affix = uuid(); | ||
| 73 | + // 此时可以自行将文件上传至服务器 | ||
| 74 | + let dataURL = res.content; | ||
| 75 | + let base64url = dataURL.slice(dataURL.indexOf(',') + 1); // 截取前缀的base64 data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAnoAAAJeCAYAA....... | ||
| 76 | + // 获取七牛token | ||
| 77 | + axios.post('/srv/?f=shzl_comment&a=upload', | ||
| 78 | + qs.stringify({ | ||
| 79 | + filename: `${affix}_${res.file.name}`, | ||
| 80 | + file: base64url | ||
| 81 | + })) | ||
| 82 | + .then(res => { | ||
| 83 | + if (res.statusText === 'OK') { | ||
| 84 | + let config = { | ||
| 85 | + headers: { | ||
| 86 | + 'Content-Type': 'application/octet-stream', | ||
| 87 | + 'Authorization': 'UpToken ' + res.data.token, // UpToken后必须有一个 ' '(空格) | ||
| 88 | + } | ||
| 89 | + } | ||
| 90 | + // 上传七牛服务器 | ||
| 91 | + axios.post('http://upload.qiniup.com/putb64/-1/key/' + res.data.key, base64url, config) | ||
| 92 | + .then(res => { | ||
| 93 | + if (res.data.filekey) { | ||
| 94 | + let info = res.data; | ||
| 95 | + axios.post('/srv/?f=shzl_comment&a=upload&t=save_file', | ||
| 96 | + qs.stringify({ | ||
| 97 | + format: info.image_info.format, | ||
| 98 | + hash: info.hash, | ||
| 99 | + height: info.image_info.height, | ||
| 100 | + width: info.image_info.width, | ||
| 101 | + filekey: info.filekey, | ||
| 102 | + })) | ||
| 103 | + .then(res => { | ||
| 104 | + upload_image.meta_id = res.data.data.meta_id; | ||
| 105 | + lock_btn.value = false; // 头像上传完成, 打开锁 | ||
| 106 | + }) | ||
| 107 | + .catch(err => { | ||
| 108 | + console.error(err); | ||
| 109 | + }) | ||
| 110 | + } else { | ||
| 111 | + console.warn(res); | ||
| 112 | + Toast({ | ||
| 113 | + icon: 'close', | ||
| 114 | + message: res.data.msg | ||
| 115 | + }); | ||
| 116 | + } | ||
| 117 | + }) | ||
| 118 | + .catch(err => { | ||
| 119 | + console.error(err); | ||
| 120 | + Toast({ | ||
| 121 | + icon: 'close', | ||
| 122 | + message: res.data.msg | ||
| 123 | + }); | ||
| 124 | + }) | ||
| 125 | + } else { | ||
| 126 | + console.warn(res); | ||
| 127 | + } | ||
| 128 | + }) | ||
| 129 | + .catch(err => { | ||
| 130 | + console.error(err); | ||
| 131 | + }) | ||
| 132 | +}; | ||
| 133 | +const beforeDelete = () => { // 删除图片回调 | ||
| 134 | + user_info.meta_id = ''; | ||
| 135 | + upload_image.meta_id = ''; | ||
| 136 | + return true; | ||
| 137 | +} | ||
| 138 | + | ||
| 139 | +let user_info = reactive({ | ||
| 140 | + kindergarten: '杨浦民办科技幼稚园', | ||
| 141 | + name: '', | ||
| 142 | + meta_id: '' | ||
| 143 | +}); | ||
| 144 | + | ||
| 145 | +onMounted(() => { | ||
| 146 | + // | ||
| 147 | + $('.content-section').height($(document).height() - $('.title-section').height()); | ||
| 148 | +}) | ||
| 149 | + | ||
| 150 | +// 保存用户信息 | ||
| 151 | +const saveInfo = () => { | ||
| 152 | + axios.post('/srv/?f=shzl_comment&a=user&t=edit', | ||
| 153 | + qs.stringify({ | ||
| 154 | + kindergarten: user_info.kindergarten, | ||
| 155 | + name: user_info.name, | ||
| 156 | + meta_id: upload_image.meta_id ? upload_image.meta_id : user_info.meta_id, | ||
| 157 | + })) | ||
| 158 | + .then(res => { | ||
| 159 | + if (res.data.code === 1) { | ||
| 160 | + Toast.success({ | ||
| 161 | + message: '保存成功', | ||
| 162 | + duration: 1000, | ||
| 163 | + onClose: () => { | ||
| 164 | + goBack(); | ||
| 165 | + } | ||
| 166 | + }); | ||
| 167 | + } else { | ||
| 168 | + console.warn(res); | ||
| 169 | + Toast({ | ||
| 170 | + icon: 'close', | ||
| 171 | + message: res.data.msg | ||
| 172 | + }); | ||
| 173 | + } | ||
| 174 | + }) | ||
| 175 | + .catch(err => { | ||
| 176 | + console.error(err); | ||
| 177 | + }) | ||
| 178 | +} | ||
| 179 | +</script> | ||
| 180 | + | ||
| 181 | +<script> | ||
| 182 | +import mixin from 'common/mixin'; | ||
| 183 | + | ||
| 184 | +export default { | ||
| 185 | + mixins: [mixin.init], | ||
| 186 | + data () { | ||
| 187 | + return { | ||
| 188 | + | ||
| 189 | + } | ||
| 190 | + }, | ||
| 191 | + mounted () { | ||
| 192 | + | ||
| 193 | + }, | ||
| 194 | + methods: { | ||
| 195 | + | ||
| 196 | + } | ||
| 197 | +} | ||
| 198 | +</script> | ||
| 199 | + | ||
| 200 | +<style lang="less" scoped> | ||
| 201 | +.add-user-page { | ||
| 202 | + padding: 1rem; | ||
| 203 | +} | ||
| 204 | +</style> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -47,7 +47,7 @@ | ... | @@ -47,7 +47,7 @@ |
| 47 | <my-button type="custom" :custom-style="styleObject1" @on-click="goTo('/me/verifyUser')">实名认证</my-button> | 47 | <my-button type="custom" :custom-style="styleObject1" @on-click="goTo('/me/verifyUser')">实名认证</my-button> |
| 48 | </div> | 48 | </div> |
| 49 | <div> | 49 | <div> |
| 50 | - <my-button type="custom" :custom-style="styleObject2" @on-click="">新增儿童</my-button> | 50 | + <my-button type="custom" :custom-style="styleObject2" @on-click="goTo('/me/addUser')">新增儿童</my-button> |
| 51 | </div> | 51 | </div> |
| 52 | </div> | 52 | </div> |
| 53 | 53 | ... | ... |
| ... | @@ -40,6 +40,7 @@ | ... | @@ -40,6 +40,7 @@ |
| 40 | 40 | ||
| 41 | <script setup> | 41 | <script setup> |
| 42 | import MyButton from '@/components/MyButton/index.vue' | 42 | import MyButton from '@/components/MyButton/index.vue' |
| 43 | + | ||
| 43 | import { wxInfo } from '@/utils/tools'; | 44 | import { wxInfo } from '@/utils/tools'; |
| 44 | import qs from 'Qs' | 45 | import qs from 'Qs' |
| 45 | import { ref, reactive, onMounted } from 'vue' | 46 | import { ref, reactive, onMounted } from 'vue' | ... | ... |
| ... | @@ -939,6 +939,11 @@ | ... | @@ -939,6 +939,11 @@ |
| 939 | dependencies: | 939 | dependencies: |
| 940 | "base64-arraybuffer" "^1.0.2" | 940 | "base64-arraybuffer" "^1.0.2" |
| 941 | 941 | ||
| 942 | +"uuid@^8.3.2": | ||
| 943 | + "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" | ||
| 944 | + "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" | ||
| 945 | + "version" "8.3.2" | ||
| 946 | + | ||
| 942 | "vant@^4.0.0-alpha.0": | 947 | "vant@^4.0.0-alpha.0": |
| 943 | "integrity" "sha512-D1J0YZBZmVx8Ft2phhJ4x88sxPGylsyMmJJvWT5GDyusC5kU1ik8qe77Dwtp3fiaZSxs8Fb5Hv4LQmjeqxtMLQ==" | 948 | "integrity" "sha512-D1J0YZBZmVx8Ft2phhJ4x88sxPGylsyMmJJvWT5GDyusC5kU1ik8qe77Dwtp3fiaZSxs8Fb5Hv4LQmjeqxtMLQ==" |
| 944 | "resolved" "https://registry.npmjs.org/vant/-/vant-4.0.0-alpha.0.tgz" | 949 | "resolved" "https://registry.npmjs.org/vant/-/vant-4.0.0-alpha.0.tgz" | ... | ... |
-
Please register or login to post a comment