Browse Source

上传文件

ZaiZai 11 months ago
parent
commit
c58c294b1b
4 changed files with 23 additions and 73 deletions
  1. 1 1
      package.json
  2. 15 45
      src/views/system/menu.vue
  3. 3 23
      src/views/user/index.vue
  4. 4 4
      yarn.lock

+ 1 - 1
package.json

@@ -19,7 +19,7 @@
         "dayjs": "^1.11.10",
         "echarts": "^5.5.0",
         "element-plus": "2.6.1",
-        "hc-vue3-ui": "^3.5.9",
+        "hc-vue3-ui": "^3.6.0",
         "js-base64": "^3.7.7",
         "js-fast-way": "^0.4.7",
         "js-md5": "^0.8.3",

+ 15 - 45
src/views/system/menu.vue

@@ -136,7 +136,7 @@
                             <template #label>
                                 <div class="hc-form-item-label">
                                     <div class="title-content">
-                                        <span class="title">菜单备注:</span>
+                                        <span class="title">菜单视频:</span>
                                         <span content="text">(只能上传MP4格式,且不能用QQ录屏,推荐使用win10自带录屏录制,文件大小限制50兆)</span>
                                     </div>
                                     <div class="right-content">
@@ -144,7 +144,7 @@
                                     </div>
                                 </div>
                             </template>
-                            <hc-form-upload :src="formModel.videoUrl" :num="1" @upload="videoUpload" />
+                            <hc-form-upload v-model="formModel.videoUrl" :upload="{ options: videoUpload }" />
                         </el-form-item>
                     </el-col>
                     <el-col :span="24">
@@ -157,7 +157,7 @@
                                     </div>
                                 </div>
                             </template>
-                            <hc-form-upload :src="formModel.excelUrl" :num="1" @upload="excelUpload" />
+                            <hc-form-upload v-model="formModel.excelUrl" :upload="{ options: excelUpload }" />
                         </el-form-item>
                     </el-col>
                 </el-row>
@@ -170,9 +170,6 @@
 
         <!-- 图标选择 -->
         <hc-menu-icon v-model="isIconShow" @finish="menuIconFinish" />
-
-        <!-- 上传文件 -->
-        <hc-upload-file ref="uploadRef" :echo-params="uploadParams" :options="uploadOptions" @success="uploadSuccess" />
     </hc-card>
 </template>
 
@@ -180,7 +177,7 @@
 import { nextTick, onActivated, ref } from 'vue'
 import { useRoute, useRouter } from 'vue-router'
 import { arrToId, formValidate, getArrValue, getObjValue } from 'js-fast-way'
-import { HcDelMsg, getHeader } from 'hc-vue3-ui'
+import { HcDelMsg } from 'hc-vue3-ui'
 import { reloadPage } from '~uti/tools'
 import { getClinetAll } from '~api/other'
 import mainApi from '~api/system/menu'
@@ -434,47 +431,20 @@ const delClick = () => {
     })
 }
 
-
-//上传文件
-const uploadRef = ref(null)
-const uploadParams = ref({})
-const uploadOptions = ref({
-    url: '/api/blade-resource/oss/endpoint/put-file2',
-    headers: getHeader(),
+//菜单视频
+const videoUpload = {
     multiple: false,
-})
-
-//上传视频
-const videoUpload = () => {
-    uploadParams.value = { type: '视频文件' }
-    uploadOptions.value.accept = 'video/mp4'
-    uploadOptions.value.accept_tip = '只能上传MP4格式,且不能用QQ录屏,推荐使用win10自带录屏录制,文件大小限制50兆'
-    uploadOptions.value.size = 50
-    nextTick(() => {
-        uploadRef.value?.selectFile()
-    })
+    accept: 'video/mp4',
+    accept_tip: '只能上传MP4格式,且不能用QQ录屏,推荐使用win10自带录屏录制,文件大小限制50兆',
+    size: 100,
 }
 
-//上传文档
-const excelUpload = () => {
-    uploadParams.value = { type: '文档文件' }
-    uploadOptions.value.accept = null
-    uploadOptions.value.accept_tip = null
-    uploadOptions.value.size = null
-    nextTick(() => {
-        uploadRef.value?.selectFile()
-    })
-}
-
-// 文件上传成功的回调
-const uploadSuccess = ({ echoParams, resData }) => {
-    if (echoParams.type === '视频文件') {
-        formModel.value.videoUrl = resData
-    } else if (echoParams.type === '文档文件') {
-        formModel.value.excelUrl = resData
-    }
-    //关闭弹窗
-    uploadRef.value?.setModalShow(false)
+//文档信息
+const excelUpload = {
+    multiple: false,
+    accept: 'image/png,image/jpg,image/jpeg,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel,application/pdf,.doc,.docx,application/msword',
+    accept_tip: '图片(png、jpg、jpeg)<br/>Excel(xls、xlsx)<br/>PDF<br/>Word(doc、docx)',
+    size: 100,
 }
 
 //提交表单

+ 3 - 23
src/views/user/index.vue

@@ -5,7 +5,7 @@
                 <div class="relative w-[460px] p-4">
                     <el-form ref="formUserRef" :model="formUserModel" :rules="formUserRules" label-position="top">
                         <el-form-item label="头像图片:" prop="avatar">
-                            <hc-form-upload type="preview" :src="formUserModel.avatar" :num="1" @upload="avatarUpload" />
+                            <hc-form-upload v-model="formUserModel.avatar" :options="{ type: 'preview' }" :upload="{ options: uploadOptions }" />
                         </el-form-item>
                         <el-form-item label="姓名:" prop="name">
                             <el-input v-model="formUserModel.name" />
@@ -38,10 +38,6 @@
                 </div>
             </el-tab-pane>
         </el-tabs>
-
-        <!-- 上传文件 -->
-        <hc-upload-file ref="uploadRef" :options="uploadOptions" @success="uploadSuccess" />
-
         <template #action>
             <el-button hc-btn @click="resetClick">重置</el-button>
             <el-button hc-btn type="primary" :loading="submitLoading" @click="submitClick">提交</el-button>
@@ -51,7 +47,6 @@
 
 <script setup>
 import { onActivated, ref } from 'vue'
-import { getHeader } from 'hc-vue3-ui'
 import { deepClone, formValidate, getObjValue, isPhone } from 'js-fast-way'
 import mainApi from '~api/system/user'
 import { reloadPage } from '~uti/tools.js'
@@ -146,27 +141,12 @@ const formPasswordRules = {
     },
 }
 
-
 //上传文件
-const uploadRef = ref(null)
-const uploadOptions = ref({
-    url: '/api/blade-resource/oss/endpoint/put-file2',
-    headers: getHeader(),
-    multiple: false,
+const uploadOptions = {
     accept: '.png,.jpg,.jpeg,.gif,.awebp,.webp',
     accept_tip: '只能上传png/jpg/jpeg/gif/awebp/webp格式的图片文件',
+    multiple: false,
     size: 30,
-})
-
-//上传头像
-const avatarUpload = () => {
-    uploadRef.value?.selectFile()
-}
-
-// 文件上传成功的回调
-const uploadSuccess = ({ resData }) => {
-    formUserModel.value.avatar = resData
-    uploadRef.value?.setModalShow(false)
 }
 
 //重置

+ 4 - 4
yarn.lock

@@ -2040,10 +2040,10 @@ has-flag@^4.0.0:
   resolved "http://39.108.216.210:9000/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
   integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
 
-hc-vue3-ui@^3.5.9:
-  version "3.5.9"
-  resolved "http://39.108.216.210:9000/hc-vue3-ui/-/hc-vue3-ui-3.5.9.tgz#64d63d86ac06796c367afba9e9dcd2c2853de284"
-  integrity sha512-f+s4aNFjeBrPvEo1mt0WJ6ZsSLEGMRT878BiUV/Xk0z6k7ZbbltbDWmY0f02I3hxjz2W/lDnhNdVfd4pP/glIg==
+hc-vue3-ui@^3.6.0:
+  version "3.6.0"
+  resolved "http://39.108.216.210:9000/hc-vue3-ui/-/hc-vue3-ui-3.6.0.tgz#a30f5a17db870157e565c39d4dd906bfa4c6b2b8"
+  integrity sha512-JEILlanI4zwiTtGB3IghgU2kedOHAT8FxNClUvJvhjre55ZRh7JO9jFebwPuvuJSWkZHOCz9GJgPGs1T1hB9Tg==
   dependencies:
     axios "^1.6.8"
     dayjs "^1.11.10"