浏览代码

头像必传

lifanagju_citu 5 月之前
父节点
当前提交
4560564c8a

+ 69 - 0
layout/components/authModal/necessaryInfo/index.vue

@@ -11,6 +11,17 @@
         label-width="86px"
         label-width="86px"
         labelAlign="center"
         labelAlign="center"
       >
       >
+        <uni-forms-item label="头像" name="avatar" class="f-straight" required>
+          <view style="display: flex;flex-wrap: wrap;">
+            <view class="upload-img" v-if="formData?.avatar">
+              <uni-icons size="35" type="clear" color="#fe574a" style="position: absolute;right: -15px; top: -15px; z-index: 9" @click="formData.avatar = ''"></uni-icons>
+              <image :src="formData?.avatar" mode="contain" style="width: 200rpx;height: 200rpx;" @click="handlePreviewImage"></image>
+            </view>
+            <view v-else class="upload-file" @click="uploadPhotos">
+              <uni-icons type="plusempty" size="50" color="#f1f1f1"></uni-icons>
+            </view>
+          </view>
+        </uni-forms-item>
         <uni-forms-item name="name" label="姓名" required>
         <uni-forms-item name="name" label="姓名" required>
           <uni-easyinput placeholder="请输入姓名" v-model="formData.name" :inputBorder="false" type="text"></uni-easyinput>
           <uni-easyinput placeholder="请输入姓名" v-model="formData.name" :inputBorder="false" type="text"></uni-easyinput>
         </uni-forms-item>
         </uni-forms-item>
@@ -65,6 +76,7 @@ import { dictObj } from '@/utils/position.js'
 import { savePersonSimpleInfo } from '@/api/user'
 import { savePersonSimpleInfo } from '@/api/user'
 import { showAuthModal } from '@/hooks/useModal'
 import { showAuthModal } from '@/hooks/useModal'
 import { userStore } from '@/store/user'; const useUserStore = userStore()
 import { userStore } from '@/store/user'; const useUserStore = userStore()
+import { uploadFile } from '@/api/file'
 
 
 const baseInfoRef = ref()
 const baseInfoRef = ref()
 const formData = ref({ // 必填项目
 const formData = ref({ // 必填项目
@@ -94,6 +106,9 @@ onMounted(() => {
 })
 })
 
 
 const formRules = {
 const formRules = {
+	avatar:{
+		rules: [{required: true, errorMessage: '请上传头像' }]
+	},
 	name:{
 	name:{
 		rules: [{required: true, errorMessage: '请输入姓名' }]
 		rules: [{required: true, errorMessage: '请输入姓名' }]
 	},
 	},
@@ -135,6 +150,43 @@ const handleLogoutConfirm = async () => {
   showAuthModal()
   showAuthModal()
 }
 }
 
 
+// 图片预览
+const handlePreviewImage = () => {
+  uni.previewImage({
+    current: 0,
+    urls: [formData.value.avatar]
+  })
+}
+// 选择头像
+const uploadPhotos = () => {
+  wx.chooseImage({
+    count: 1,
+    sizeType: ['original', 'compressed'],
+    sourceType: ['album', 'camera'],
+    success: function(res){
+      const size = res.tempFiles[0]?.size || 0
+      if (size >= 31457280) {
+        uni.showToast({
+          icon: 'none',
+          title: '头像上传大小不得超过 20MB !',
+          duration: 2000
+        })
+        return
+      }
+      const path = res.tempFilePaths[0]
+      uploadFile(path, 'img').then(res => {
+        formData.value.avatar = res.data
+      }).catch(error => {
+        uni.showToast({
+          icon: 'error',
+          title: '图片上传失败!',
+          duration: 2000
+        })
+      })
+    }
+  })
+}
+
 const dealQuery = () => {
 const dealQuery = () => {
   const interestedList = [{ positionId: formData.value.interestedPositionId || null }]
   const interestedList = [{ positionId: formData.value.interestedPositionId || null }]
   const workExpList = [{
   const workExpList = [{
@@ -176,4 +228,21 @@ const submit = async () => {
   line-height: 26px;
   line-height: 26px;
   margin-bottom: 40rpx;
   margin-bottom: 40rpx;
 }
 }
+.upload-img{
+  position: relative;
+  width: 200rpx;
+  height: 200rpx;
+  border: 1px solid #f1f1f1;
+  margin: 10rpx;
+}
+.upload-file{
+  width: 200rpx;
+  height: 200rpx;
+  border: 1px solid #f1f1f1;
+  margin: 10rpx;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  border-radius: 10rpx;
+}
 </style>
 </style>

+ 4 - 1
pagesA/resumeOnline/baseInfoEdit.vue

@@ -1,7 +1,7 @@
 <template>
 <template>
 	<view class="f-straight wrapper">
 	<view class="f-straight wrapper">
 		<uni-forms ref="form" :modelValue="formData" :rules="rules" validateTrigger="bind" label-width="105px" label-align="right">
 		<uni-forms ref="form" :modelValue="formData" :rules="rules" validateTrigger="bind" label-width="105px" label-align="right">
-			<uni-forms-item label="头像" name="avatar" class="f-straight">
+			<uni-forms-item label="头像" name="avatar" class="f-straight" required>
         <view style="display: flex;flex-wrap: wrap;">
         <view style="display: flex;flex-wrap: wrap;">
           <view class="upload-img" v-if="formData?.avatar">
           <view class="upload-img" v-if="formData?.avatar">
             <uni-icons size="35" type="clear" color="#fe574a" style="position: absolute;right: -15px; top: -15px; z-index: 9" @click="formData.avatar = ''"></uni-icons>
             <uni-icons size="35" type="clear" color="#fe574a" style="position: absolute;right: -15px; top: -15px; z-index: 9" @click="formData.avatar = ''"></uni-icons>
@@ -144,6 +144,9 @@ const uploadPhotos = () => {
 }
 }
 
 
 const rules = {
 const rules = {
+	avatar:{
+		rules: [{required: true, errorMessage: '请上传头像' }]
+	},
 	name:{
 	name:{
 		rules: [{required: true, errorMessage: '请输入姓名' }]
 		rules: [{required: true, errorMessage: '请输入姓名' }]
 	},
 	},

+ 34 - 7
unpackage/dist/cache/.vite/deps/_metadata.json

@@ -2,36 +2,63 @@
   "hash": "4e51a6e8",
   "hash": "4e51a6e8",
   "configHash": "fe45daba",
   "configHash": "fe45daba",
   "lockfileHash": "ae20d0a2",
   "lockfileHash": "ae20d0a2",
-  "browserHash": "5f9fe7fa",
+  "browserHash": "d323c82a",
   "optimized": {
   "optimized": {
     "pinia-plugin-persistedstate": {
     "pinia-plugin-persistedstate": {
       "src": "../../../../../node_modules/pinia-plugin-persistedstate/dist/index.js",
       "src": "../../../../../node_modules/pinia-plugin-persistedstate/dist/index.js",
       "file": "pinia-plugin-persistedstate.js",
       "file": "pinia-plugin-persistedstate.js",
-      "fileHash": "db2a8aec",
+      "fileHash": "a6b7a0cc",
       "needsInterop": false
       "needsInterop": false
     },
     },
     "luch-request": {
     "luch-request": {
       "src": "../../../../../node_modules/luch-request/src/lib/luch-request.js",
       "src": "../../../../../node_modules/luch-request/src/lib/luch-request.js",
       "file": "luch-request.js",
       "file": "luch-request.js",
-      "fileHash": "502c9e5c",
+      "fileHash": "8b38c832",
       "needsInterop": false
       "needsInterop": false
     },
     },
     "qs": {
     "qs": {
       "src": "../../../../../node_modules/qs/lib/index.js",
       "src": "../../../../../node_modules/qs/lib/index.js",
       "file": "qs.js",
       "file": "qs.js",
-      "fileHash": "57cf2354",
+      "fileHash": "97b521b9",
       "needsInterop": true
       "needsInterop": true
     },
     },
     "js-sha256": {
     "js-sha256": {
       "src": "../../../../../node_modules/js-sha256/src/sha256.js",
       "src": "../../../../../node_modules/js-sha256/src/sha256.js",
       "file": "js-sha256.js",
       "file": "js-sha256.js",
-      "fileHash": "fba4401d",
+      "fileHash": "d5456d1a",
       "needsInterop": true
       "needsInterop": true
+    },
+    "js-base64": {
+      "src": "../../../../../node_modules/js-base64/base64.mjs",
+      "file": "js-base64.js",
+      "fileHash": "c6c345a4",
+      "needsInterop": false
+    },
+    "wukongimjssdk": {
+      "src": "../../../../../node_modules/wukongimjssdk/lib/wukongimjssdk.esm.js",
+      "file": "wukongimjssdk.js",
+      "fileHash": "661a449c",
+      "needsInterop": false
+    },
+    "dayjs": {
+      "src": "../../../../../node_modules/dayjs/dayjs.min.js",
+      "file": "dayjs.js",
+      "fileHash": "ce3d9f8d",
+      "needsInterop": true
+    },
+    "lodash-es": {
+      "src": "../../../../../node_modules/lodash-es/lodash.js",
+      "file": "lodash-es.js",
+      "fileHash": "2b4fbfbe",
+      "needsInterop": false
     }
     }
   },
   },
   "chunks": {
   "chunks": {
-    "chunk-Y2F7D3TJ": {
-      "file": "chunk-Y2F7D3TJ.js"
+    "chunk-VKT5GLMM": {
+      "file": "chunk-VKT5GLMM.js"
+    },
+    "chunk-BQWMX7FD": {
+      "file": "chunk-BQWMX7FD.js"
     }
     }
   }
   }
 }
 }