Переглянути джерело

上传文件和更新依赖

ZaiZai 1 рік тому
батько
коміт
23887ee8fa

+ 1 - 1
package.json

@@ -21,7 +21,7 @@
         "dayjs": "^1.11.10",
         "echarts": "^5.5.0",
         "element-plus": "2.6.2",
-        "hc-vue3-ui": "^3.7.0",
+        "hc-vue3-ui": "^3.7.3",
         "js-base64": "^3.7.7",
         "js-fast-way": "^0.4.7",
         "js-md5": "^0.8.3",

+ 19 - 28
src/views/alter/admin/components/order/addModal.vue

@@ -145,7 +145,18 @@
                         </template>
                         <el-form :model="baseForm" label-position="left" label-width="auto">
                             <el-form-item label="上传附件">
-                                <hc-form-upload type="list" :src="baseForm.fileList" :h-props="uploadFormProps" @upload="attachmentUpload" @change="attachmentUploadChange" />
+                                <hc-form-upload
+                                    v-model="baseForm.fileList"
+                                    is-success
+                                    :options="{
+                                        type: 'list',
+                                        props: uploadFormProps,
+                                        isArr: true,
+                                        num: 0,
+                                    }"
+                                    :upload="{ options: { multiple: false } }"
+                                    @success="uploadFileSuccess"
+                                />
                             </el-form-item>
                         </el-form>
                     </hc-card-item>
@@ -155,9 +166,6 @@
 
         <!-- 变更申请清单 -->
         <ChangeRequest v-model="isChangeShow" :ids="changeIds" :tree-id="changeNodeItem.id" :contract-id="contractId" @finish="changeNodeFinish" />
-
-        <!-- 文件上传组件 -->
-        <hc-upload-file ref="uploadFileRef" :options="uploadFileOptions" @success="uploadFileSuccess" />
     </hc-new-dialog>
 </template>
 
@@ -169,7 +177,6 @@ import { arrIndex, arrToKey, formValidate, getArrValue, getObjValue, isArray, is
 import ChangeRequest from './changeRequest.vue'
 import unitApi from '~api/project/debit/contract/unit'
 import mainApi from '~api/alter/admin/order'
-import { getHeader } from 'hc-vue3-ui'
 import BigNumber from 'bignumber.js'
 
 const props = defineProps({
@@ -437,35 +444,19 @@ const uploadFormProps = {
     name: 'fileName',
 }
 
-const attachmentUpload = () => {
-    uploadFileRef.value?.selectFile()
-}
-const attachmentUploadChange = (a, b, fileList) => {
-    baseForm.value.fileList = getArrValue(fileList)
-}
-
-//文件上传
-const uploadFileRef = ref(null)
-const uploadFileOptions = ref({
-    headers: getHeader(),
-    multiple: false,
-})
-
 // 文件上传成功的回调
-const uploadFileSuccess = ({ resData }) => {
-    const { pdfUrl } = resData
-    if (isNullES(pdfUrl)) {
+const uploadFileSuccess = ({ res }, resolve) => {
+    if (isNullES(res.pdfUrl)) {
         window.$message.warning('该文件不能生成pdf,请更换文件上传')
-        uploadFileRef.value?.setModalShow(false)
+        resolve()
         return
     }
-    baseForm.value.fileList.push({
+    resolve({
         contractId: contractId.value,
-        fileName: resData.originalName ?? '',
-        filePdfUrl: resData.pdfUrl ?? '',
-        fileUrl: resData.link ?? '',
+        fileName: res.originalName ?? '',
+        filePdfUrl: res.pdfUrl ?? '',
+        fileUrl: res.link ?? '',
     })
-    uploadFileRef.value?.setModalShow(false)
 }
 
 //保存

+ 10 - 1
src/views/alter/admin/order.vue

@@ -116,7 +116,16 @@
                     </hc-card-item>
                     <!-- 附件列表 -->
                     <hc-card-item class="mt-3" title="附件列表">
-                        <hc-form-upload class="table-info-file" type="list" :src="tableInfo.fileList" :h-props="uploadFormProps" />
+                        <hc-form-upload
+                            v-model="tableInfo.fileList"
+                            class="table-info-file"
+                            :options="{
+                                type: 'list',
+                                props: uploadFormProps,
+                                isArr: true,
+                            }"
+                            :upload="{ options: { multiple: false } }"
+                        />
                     </hc-card-item>
                 </el-scrollbar>
             </div>

+ 4 - 10
src/views/debit-pay/admin/components/apply/addModal.vue

@@ -54,7 +54,7 @@
                                 </el-col>
                                 <el-col :span="24">
                                     <el-form-item label="草图文件:">
-                                        <hc-form-upload :src="baseForm.key9" />
+                                        <hc-form-upload v-model="baseForm.key9" />
                                     </el-form-item>
                                 </el-col>
                                 <el-col :span="24">
@@ -69,7 +69,7 @@
                     <hc-card-item class="mt-3">
                         <template #header>
                             <span class="mr-3">收方清单列表</span>
-                            <span class="font-400 text-orange">温馨提示:超计,累计收方量> 变更后数量,分解清单超计整行红色</span>
+                            <span class="text-orange font-400">温馨提示:超计,累计收方量> 变更后数量,分解清单超计整行红色</span>
                         </template>
                         <template #extra>
                             <el-button type="primary" text @click="addBillBaseModalClick">
@@ -107,11 +107,11 @@
                     <!-- 附件列表 -->
                     <hc-card-item class="mt-3" title="附件列表">
                         <template #extra>
-                            <span class="font-400 text-orange">可上传 图片(png、jpg、jpeg)、Excel(xls、xlsx)、PDF、Word(doc、docx)文件</span>
+                            <span class="text-orange font-400">可上传 图片(png、jpg、jpeg)、Excel(xls、xlsx)、PDF、Word(doc、docx)文件</span>
                         </template>
                         <el-form :model="baseForm" label-position="left" label-width="auto">
                             <el-form-item label="上传附件">
-                                <hc-form-upload type="list" :src="baseForm.key11" />
+                                <hc-form-upload v-model="baseForm.key11" :options="{ type: 'list', num: 99 }" />
                             </el-form-item>
                         </el-form>
                     </hc-card-item>
@@ -122,9 +122,6 @@
 
     <!-- 添加分解清单 -->
     <HcBillBaseModal v-model="addBillBaseModalShow" />
-
-    <!-- 文件上传组件 -->
-    <hc-upload-file ref="HcUploadFileRef" />
 </template>
 
 <script setup>
@@ -175,9 +172,6 @@ const setSplitRef = () => {
     })
 }
 
-//文件上传
-const HcUploadFileRef = ref(null)
-
 //基础表单
 const baseFormRef = ref(null)
 const baseForm = ref({})

+ 65 - 78
src/views/debit-pay/admin/components/middlepay/addModal.vue

@@ -61,7 +61,25 @@
                                 </el-col>
                                 <el-col :span="8">
                                     <el-form-item label="草图文件:">
-                                        <hc-form-upload :src="baseForm.pictureList" :h-props="uploadFormProps" :disabled="isView" @upload="formUpload" @change="formUploadChange" />
+                                        <hc-form-upload
+                                            v-model="baseForm.pictureList"
+                                            :disabled="isView"
+                                            is-success
+                                            :options="{
+                                                type: 'list',
+                                                props: uploadFormProps,
+                                                isArr: true,
+                                            }"
+                                            :upload="{
+                                                options: {
+                                                    accept: '.png,.jpg,.jpeg',
+                                                    accept_tip: '图片(png、jpg、jpeg)',
+                                                    size: 50,
+                                                    multiple: false,
+                                                },
+                                            }"
+                                            @success="pictureUploadSuccess"
+                                        />
                                     </el-form-item>
                                 </el-col>
                                 <el-col :span="8">
@@ -124,12 +142,18 @@
                         <el-form :model="baseForm" label-position="left" label-width="auto">
                             <el-form-item label="上传附件">
                                 <hc-form-upload
-                                    type="list" 
-                                    :src="baseForm.fileList" 
-                                    :disabled="isView" 
-                                    :h-props="uploadFormProps"
+                                    v-model="baseForm.fileList"
+                                    disabled="isView"
+                                    is-del
+                                    is-success
+                                    :options="{
+                                        type: 'list',
+                                        props: uploadFormProps,
+                                        isArr: true,
+                                        num: 0,
+                                    }"
+                                    @success="fileUploadSuccess"
                                     @del="attachMentDel"
-                                    @upload="attachmentUpload" 
                                     @change="attachmentUploadChange"
                                 />
                             </el-form-item>
@@ -143,14 +167,6 @@
     <!-- 添加分解清单 -->
     <HcBillBaseModal v-model="addBillBaseModalShow" :data-id="dataId" :ids="billBaseIds" :idn="nodeId" :period-id="baseForm.contractPeriodId" :contract-id="cid" @finish="finishChange" />
 
-    <!-- 文件上传组件 -->
-    <hc-upload-file
-        ref="uploadFileRef"
-        :echo-params="uploadFileParams"
-        :options="uploadFileOptions"
-        @success="uploadFileSuccess"
-    />
-
     <!-- 关联质检资料 -->
     <qualityRleation :quality-moadal="qualityMoadal" :cid="cid" :period-id="period_id" :select-id="selectId" :is-remian-old-check="true" :disabled="baseForm?.isAutoBuild === 1" @close="closeQual" @finish="finishModal" />
 </template>
@@ -303,7 +319,7 @@ watch(() => baseForm.value.fileList, (list) => {
                     if (!ischangeByGetNode.value) {
                         ele.upPayRatio = ele.oldupPayRatio || '0.00'
                     }
-                        
+
             })
         }
     }
@@ -453,19 +469,6 @@ const getMeterNumber = async (periodId) => {
     baseForm.value.meterNumber = data ?? ''
 }
 
-
-//草图文件上传
-const formUpload = () => {
-    uploadFileParams.value = { type: '草图文件' }
-    uploadFileOptions.value.accept = 'image/png,image/jpg,image/jpeg'
-    uploadFileOptions.value.accept_tip = '图片(png、jpg、jpeg)'
-    uploadFileOptions.value.size = 50
-    uploadFileRef.value?.selectFile()
-}
-const formUploadChange = (url) => {
-    baseForm.value.pictureUrl = url
-}
-
 //收方清单列表
 const addTableColumn = ref([
     { key: 'formNumber', name: '清单编号', width: '120' },
@@ -693,70 +696,54 @@ const uploadFormProps = {
     name: 'fileName',
 }
 
-const attachmentUpload = () => {
-    uploadFileParams.value = { type: '附件文件' }
-    uploadFileOptions.value.accept = ''
-    uploadFileOptions.value.accept_tip = ''
-    uploadFileOptions.value.size = null
-    uploadFileRef.value?.selectFile()
-}
-const attachmentUploadChange = (name, index, fileList) => {
-
-    baseForm.value.fileList = getArrValue(fileList)
-    if (deleFile.value) {
-        baseForm.value.fileList.push(deleFile.value)
-    }
+const attachmentUploadChange = () => {
+    const fileList = getArrValue(baseForm.value.fileList)
     ischangeByGetNode.value = false
-    selectId.value = arrToKey( baseForm.value.fileList, 'selectId', ',')
+    selectId.value = arrToKey(fileList, 'selectId', ',')
 }
-const deleFile = ref(null)
-const attachMentDel = ({ index, file })=>{
+
+const attachMentDel = ({ file }, resolve)=>{
     const { selectId } = file
     if (selectId && baseForm.value.isAutoBuild === 1) {
         window.$message.warning('该文件不可删除')
-        deleFile.value = file
-        return
+        resolve(false)
     } else {
-        deleFile.value = null
+        resolve(true)
     }
 }
-//文件上传
-const uploadFileRef = ref(null)
-const uploadFileParams = ref({})
-const uploadFileOptions = ref({
-    headers: getHeader(),
-    multiple: false,
-})
 
-// 文件上传成功的回调
-const uploadFileSuccess = ({ echoParams, resData }) => {
-    const { pdfUrl } = resData
-    if (isNullES(pdfUrl)) {
+//草图文件上传成功的回调
+const pictureUploadSuccess = ({ res }, resolve) => {
+    if (isNullES(res.pdfUrl)) {
         window.$message.warning('该文件不能生成pdf,请更换文件上传')
-        uploadFileRef.value?.setModalShow(false)
+        resolve()
         return
     }
-    if (echoParams.type === '草图文件') {
-        baseForm.value.pictureUrl = resData.link ?? ''
-        baseForm.value.pictureName = resData.originalName ?? ''
-        baseForm.value.pictureList = [{
-            fileName: resData.originalName ?? '',
-            filePdfUrl: resData.pdfUrl ?? '',
-            fileUrl:  resData.link ?? '',
-        }]
-        uploadFileRef.value?.setModalShow(false)
-    } else if (echoParams.type === '附件文件') {
-        baseForm.value.fileList.push({
-            contractId: cid.value,
-            fileName: resData.originalName ?? '',
-            filePdfUrl: resData.pdfUrl ?? '',
-            fileUrl: resData.link ?? '',
-            fileType: 1,
-        })
-        uploadFileRef.value?.setModalShow(false)
-    }
+    baseForm.value.pictureUrl = res.link ?? ''
+    baseForm.value.pictureName = res.originalName ?? ''
+    resolve({
+        fileName: res.originalName ?? '',
+        filePdfUrl: res.pdfUrl ?? '',
+        fileUrl:  res.link ?? '',
+    })
     ischangeByGetNode.value = false
+}
 
+//附件上传成功的回调
+const fileUploadSuccess = ({ res }, resolve) => {
+    if (isNullES(res.pdfUrl)) {
+        window.$message.warning('该文件不能生成pdf,请更换文件上传')
+        resolve()
+        return
+    }
+    resolve({
+        contractId: cid.value,
+        fileName: res.originalName ?? '',
+        filePdfUrl: res.pdfUrl ?? '',
+        fileUrl: res.link ?? '',
+        fileType: 1,
+    })
+    ischangeByGetNode.value = false
 }
 
 //保存

+ 29 - 46
src/views/debit-pay/material/components/order/dataModal.vue

@@ -98,13 +98,23 @@
                     </div>
                     <el-form :model="baseForm" label-position="top" style="overflow-y: auto;height: 150px;">
                         <el-form-item label="">
-                            <hc-form-upload type="list" :src="fileName" :h-props="hProps" @upload="formItemUpload" @change="formItemChange" />
+                            <hc-form-upload
+                                v-model="baseForm.fileList"
+                                is-success
+                                :options="{
+                                    type: 'list',
+                                    props: hProps,
+                                    isArr: true,
+                                    num: 0,
+                                }"
+                                @success="uploadFileSuccess"
+                                @change="HcUploadFileFinish"
+                            />
                         </el-form-item>
                     </el-form>
                 </hc-card-item>
             </div>
         </div>
-        <HcUploadFile ref="HcUploadFileRef" @finish="HcUploadFileFinish" @success="uploadFileSuccess" />
     </hc-new-dialog>
 </template>
 
@@ -117,6 +127,7 @@ import orderApi from '~api/debit-pay/material/order.js'
 import { formValidate, getArrValue, isNullES } from 'js-fast-way'
 import { isNumberReg } from '~uti/tools'
 import BigNumber from 'bignumber.js'
+
 const props = defineProps({
     ids: {
         type: [String, Number],
@@ -152,11 +163,11 @@ const hProps = ref({
 watch(() => [
     props.ids,
     props.infoData,
-    
+
 ], ([Id, info]) => {
     ids.value = Id
     infoData.value = info
-  
+
 
     if (Id.length > 0) {
         baseForm.value = info
@@ -246,7 +257,7 @@ const getTreeData = async ()=>{
     })
     if (!error && code === 200) {
         treeLoadNode.value = getArrValue(data)
-   
+
     } else {
         treeLoadNode.value = []
     }
@@ -256,7 +267,7 @@ const treeClick = ({ node, data, keys })=>{
     treeItem.value = data
     baseForm.value.contractMaterialName = data.materialName
     baseForm.value.price = data.price
- 
+
 }
 
 
@@ -323,8 +334,8 @@ const modalSave = async () => {
             modalSaving.value = false
             if (!error && code === 200) {
                 window?.$message?.success(msg)
-                
-            
+
+
             } else {
                 window.$message.error(msg ?? '操作失败')
             }
@@ -339,57 +350,29 @@ const modalSave = async () => {
             modalSaving.value = false
             if (!error && code === 200) {
                 window?.$message?.success(msg)
-                
-            
+
+
             } else {
                 window.$message.error(msg ?? '操作失败')
             }
         }
         modalClose()
     }
-    
-   
-   
 }
-const HcUploadFileRef = ref(null)
-// 文件全部上传完成
-const HcUploadFileFinish = async (res) => {
- let arr = []
- res.forEach((ele)=>{
-    const { pdfUrl } = ele.resData
-    if (pdfUrl) {
-        arr.push(ele.resData)
-    }
-  
- })
- arr.forEach((ele)=>{
-    ele.fileName = ele.originalName
-    ele.fileUrl = ele.link
-    ele.filePdfUrl = ele.pdfUrl
-    baseForm.value.fileList.push(ele)
- })
-
-fileName.value = baseForm.value.fileList
 
-  HcUploadFileRef?.value.setModalShow(false)
+// 文件全部上传完成
+const HcUploadFileFinish = async (data) => {
+    fileName.value = data
 }
 
 // 文件上传成功的回调
-const uploadFileSuccess = ({ resData }) => {
-    const { pdfUrl } = resData
-    if (isNullES(pdfUrl)) {
+const uploadFileSuccess = ({ res }, resolve) => {
+    if (isNullES(res.pdfUrl)) {
         window.$message.warning('该文件不能生成pdf,请更换文件上传')
-        HcUploadFileRef?.value.setModalShow(false)
-        return
+        resolve()
+    } else {
+        resolve(res)
     }
-
-}
-//上传
-const formItemUpload = () => {
-    HcUploadFileRef.value?.selectFile()
-}
-const formItemChange = (src, index, list)=>{
-    baseForm.value.fileList = list
 }
 
 const modalClose = () => {

+ 29 - 47
src/views/debit-pay/start-work/components/order/dataModal.vue

@@ -4,7 +4,7 @@
             <hc-card-item>
                 <el-form ref="baseFormRef" :model="baseForm" :rules="baseFormRules" label-position="top" label-width="auto">
                     <el-form-item label="计量期:" prop="meterPeriodId">
-                        <el-select v-model="baseForm.meterPeriodId" placeholder="选择计量期" filterable clearable block> 
+                        <el-select v-model="baseForm.meterPeriodId" placeholder="选择计量期" filterable clearable block>
                             <el-option v-for="item in key1Data" :key="item.id" :label="item.periodName" :value="item.id" />
                         </el-select>
                     </el-form-item>
@@ -26,12 +26,22 @@
             <hc-card-item class="mt-3" title="附件列表" extra-text="可上传:图片、Excel、PDF、Word文件">
                 <el-form :model="baseForm" label-position="top">
                     <el-form-item label="">
-                        <hc-form-upload type="list" :src="fileName" :h-props="hProps" @upload="formItemUpload" @change="formItemChange" />
+                        <hc-form-upload
+                            v-model="baseForm.fileList"
+                            is-success
+                            :options="{
+                                type: 'list',
+                                props: hProps,
+                                isArr: true,
+                                num: 0,
+                            }"
+                            @success="uploadFileSuccess"
+                            @change="formItemChange"
+                        />
                     </el-form-item>
                 </el-form>
             </hc-card-item>
         </el-scrollbar>
-        <HcUploadFile ref="HcUploadFileRef" @finish="HcUploadFileFinish" @success="uploadFileSuccess" />
     </hc-new-dialog>
 </template>
 
@@ -70,13 +80,13 @@ const modalTitle = ref('开工预付款计量单新增')
 const getStartAmountData = async ()=>{
     const { error, code, data } = await orderApi.getStartAmount({
        contractId:contractId.value,
-    
+
     })
     if (!error && code === 200) {
         if (modalTitle.value === '开工预付款计量单新增') {
             baseForm.value.startPayAmount = Number(data)
         }
-       
+
     } else {
         baseForm.value.startPayAmount = 0
     }
@@ -94,7 +104,7 @@ watch(() => [
         fileName.value = info?.fileList
         modalTitle.value = '开工预付款计量单修改'
     } else {
-      
+
         baseForm.value = { fileList:[] }
         fileName.value = []
         modalTitle.value = '开工预付款计量单新增'
@@ -172,8 +182,8 @@ key1Data.value.forEach((ele)=>{
         modalSaving.value = false
         if (!error && code === 200) {
             window?.$message?.success(msg)
-            
-         
+
+
         } else {
             window.$message.error(msg ?? '操作失败')
         }
@@ -187,13 +197,13 @@ key1Data.value.forEach((ele)=>{
         modalSaving.value = false
         if (!error && code === 200) {
             window?.$message?.success(msg)
-            
-         
+
+
         } else {
             window.$message.error(msg ?? '操作失败')
         }
     }
-   
+
     modalClose()
 }
 
@@ -212,47 +222,19 @@ const changeMoney = (val)=>{
         baseForm.value.meterMoney = momey
     }
 }
-//上传
-const formItemUpload = () => {
-    HcUploadFileRef.value?.selectFile()
-}
-const formItemChange = (src, index, list)=>{
-    baseForm.value.fileList = list
-}
-const HcUploadFileRef = ref(null)
-
-// 文件全部上传完成
-// 文件全部上传完成
-const HcUploadFileFinish = async (res) => {
- let arr = []
- res.forEach((ele)=>{
-    const { pdfUrl } = ele.resData
-    if (pdfUrl) {
-        arr.push(ele.resData)
-    }
-  
- })
- arr.forEach((ele)=>{
-    ele.fileName = ele.originalName
-    ele.fileUrl = ele.link
-    ele.filePdfUrl = ele.pdfUrl
-    baseForm.value.fileList.push(ele)
- })
-
-fileName.value = baseForm.value.fileList
-
-  HcUploadFileRef?.value.setModalShow(false)
-}
 
 // 文件上传成功的回调
-const uploadFileSuccess = ({ resData }) => {
-    const { pdfUrl } = resData
-    if (isNullES(pdfUrl)) {
+const uploadFileSuccess = ({ res }, resolve) => {
+    if (isNullES(res.pdfUrl)) {
         window.$message.warning('该文件不能生成pdf,请更换文件上传')
-        HcUploadFileRef?.value.setModalShow(false)
-        return
+        resolve()
+    } else {
+        resolve(res)
     }
+}
 
+const formItemChange = (data)=>{
+    fileName.value = data
 }
 </script>
 

+ 2 - 8
src/views/periods/admin/components/middle/addModal.vue

@@ -59,7 +59,7 @@
                         </el-col>
                         <el-col :span="24">
                             <el-form-item label="草图文件:">
-                                <hc-form-upload :src="baseForm.key9" />
+                                <hc-form-upload v-model="baseForm.key9" />
                             </el-form-item>
                         </el-col>
                         <el-col :span="24">
@@ -116,7 +116,7 @@
                 </template>
                 <el-form :model="baseForm" label-position="left" label-width="auto">
                     <el-form-item label="上传附件">
-                        <hc-form-upload type="list" :src="baseForm.key11" />
+                        <hc-form-upload v-model="baseForm.key11" />
                     </el-form-item>
                 </el-form>
             </hc-card-item>
@@ -131,9 +131,6 @@
 
     <!-- 关联质保资料 -->
     <HcLinkWarranty v-model="linkWarrantyModal" />
-
-    <!-- 文件上传组件 -->
-    <hc-upload-file ref="HcUploadFileRef" />
 </template>
 
 <script setup>
@@ -172,9 +169,6 @@ watch(isShow, (val) => {
     }
 })
 
-//文件上传
-const HcUploadFileRef = ref(null)
-
 //基础表单
 const baseFormRef = ref(null)
 const baseForm = ref({})

+ 2 - 2
src/views/periods/material/components/order/dataModal.vue

@@ -91,11 +91,11 @@
                     <!-- 附件列表 -->
                     <div class="hc-flex my-5">
                         <div class="flex-1 text-[16px] text-blue">附件列表</div>
-                        <div class="font-400 text-orange">可上传 图片(png、jpg、jpeg)、Excel(xls、xlsx)、PDF、Word(doc、docx)文件</div>
+                        <div class="text-orange font-400">可上传 图片(png、jpg、jpeg)、Excel(xls、xlsx)、PDF、Word(doc、docx)文件</div>
                     </div>
                     <el-form :model="baseForm" label-position="top">
                         <el-form-item label="">
-                            <hc-form-upload type="list" :src="baseForm.key11" />
+                            <hc-form-upload v-model="baseForm.key11" />
                         </el-form-item>
                     </el-form>
                 </hc-card-item>

+ 1 - 1
src/views/periods/start-work/components/order/dataModal.vue

@@ -27,7 +27,7 @@
             <hc-card-item class="mt-3" title="附件列表" extra-text="可上传:图片、Excel、PDF、Word文件">
                 <el-form :model="baseForm" label-position="top">
                     <el-form-item label="">
-                        <hc-form-upload type="list" :src="baseForm.key11" />
+                        <hc-form-upload v-model="baseForm.key11" />
                     </el-form-item>
                 </el-form>
             </hc-card-item>

+ 23 - 28
src/views/tasks/components/hc-data/alter-form.vue

@@ -173,14 +173,26 @@
             </template>
             <el-form :model="baseForm" label-position="left" label-width="auto">
                 <el-form-item label="上传附件">
-                    <hc-form-upload type="list" :src="baseForm.fileList" :h-props="uploadFormProps" is-del @upload="attachmentUpload" @change="attachmentUploadChange" @del="attachmentUploadDel" />
+                    <hc-form-upload
+                        v-model="baseForm.fileList"
+                        is-del
+                        is-success
+                        :disabled="!isEdits || taskInfo.status === 2 || taskInfo.status === 3 || tableInfo.status === 1"
+                        :options="{
+                            type: 'list',
+                            props: uploadFormProps,
+                            isArr: true,
+                            num: 0,
+                        }"
+                        :upload="{ options: { multiple: false } }"
+                        @success="uploadFileSuccess"
+                        @del="attachmentUploadDel"
+                    />
                 </el-form-item>
             </el-form>
         </hc-card-item>
         <!-- 变更申请清单 -->
         <ChangeRequest v-model="isChangeShow" :info="changeNodeInfo" @finish="changeNodeFinish" />
-        <!-- 文件上传组件 -->
-        <hc-upload-file ref="uploadFileRef" :options="uploadFileOptions" @success="uploadFileSuccess" />
     </div>
 </template>
 
@@ -463,43 +475,25 @@ const totalInputBlur = async (row) => {
 }
 
 //文件上传
-const uploadFileRef = ref(null)
-const uploadFileOptions = ref({
-    headers: getHeader(),
-    multiple: false,
-})
 const uploadFormProps = {
     url: 'filePdfUrl',
     name: 'fileName',
 }
 
-const attachmentUpload = () => {
-    if (isEdits.value || tableInfo.value.status !== 2) {
-        uploadFileRef.value?.selectFile()
-    } else {
-        window.$message.error('当前状态不可上传')
-    }
-}
-const attachmentUploadChange = (a, b, fileList) => {
-    baseForm.value.fileList = getArrValue(fileList)
-}
-
 // 文件上传成功的回调
-const uploadFileSuccess = async ({ resData }) => {
-    const { pdfUrl } = resData
-    if (isNullES(pdfUrl)) {
+const uploadFileSuccess = async ({ res }, resolve) => {
+    if (isNullES(res.pdfUrl)) {
         window.$message.warning('该文件不能生成pdf,请更换文件上传')
-        uploadFileRef.value?.setModalShow(false)
+        resolve()
         return
     }
-    baseForm.value.fileList.push({
+    resolve({
         contractId: contractId.value,
-        fileName: resData.originalName ?? '',
-        filePdfUrl: resData.pdfUrl ?? '',
-        fileUrl: resData.link ?? '',
+        fileName: res.originalName ?? '',
+        filePdfUrl: res.pdfUrl ?? '',
+        fileUrl: res.link ?? '',
         taskId: taskInfo.value.id,
     })
-    uploadFileRef.value?.setModalShow(false)
     //发起请求
     const dataId = tableInfo.value.id
     const { error, code, msg } = await mainApi.taskUploadFile({
@@ -520,6 +514,7 @@ const uploadFileSuccess = async ({ resData }) => {
 const attachmentUploadDel = ({ file }, resolve) => {
     if (!isEdits.value) {
         window.$message.error('当前状态不可删除')
+        resolve(false)
         return
     }
     delMessage(async () => {

+ 23 - 29
src/views/tasks/components/hc-data/material-form.vue

@@ -60,12 +60,24 @@
             </template>
             <el-form :model="baseForm" label-position="left" label-width="auto">
                 <el-form-item label="上传附件">
-                    <hc-form-upload type="list" :src="baseForm.fileList" :h-props="uploadFormProps" is-del :disabled="taskInfo.status === 2 || taskInfo.status === 3 || tableInfo.status === 1" @upload="attachmentUpload" @change="attachmentUploadChange" @del="attachmentUploadDel" />
+                    <hc-form-upload
+                        v-model="baseForm.fileList"
+                        is-del
+                        is-success
+                        :disabled="!isEdits || taskInfo.status === 2 || taskInfo.status === 3 || tableInfo.status === 1"
+                        :options="{
+                            type: 'list',
+                            props: uploadFormProps,
+                            isArr: true,
+                            num: 0,
+                        }"
+                        :upload="{ options: { multiple: false } }"
+                        @success="uploadFileSuccess"
+                        @del="attachmentUploadDel"
+                    />
                 </el-form-item>
             </el-form>
         </hc-card-item>
-        <!-- 文件上传组件 -->
-        <hc-upload-file ref="uploadFileRef" :options="uploadFileOptions" @success="uploadFileSuccess" />
     </div>
 </template>
 
@@ -74,7 +86,6 @@ import { nextTick, onMounted, ref, watch } from 'vue'
 import { useAppStore } from '~src/store'
 import { getArrValue, getObjVal, getObjValue, isNullES } from 'js-fast-way'
 import { delMessage, isNumberReg } from '~uti/tools'
-import { getHeader } from 'hc-vue3-ui'
 import mainApi from '~api/tasks/hc-data'
 
 const props = defineProps({
@@ -200,43 +211,25 @@ const meterAmountInputBlur = async () => {
 }
 
 //文件上传
-const uploadFileRef = ref(null)
-const uploadFileOptions = ref({
-    headers: getHeader(),
-    multiple: false,
-})
 const uploadFormProps = {
     url: 'filePdfUrl',
     name: 'fileName',
 }
 
-const attachmentUpload = () => {
-    if (isEdits.value || tableInfo.value.status !== 2) {
-        uploadFileRef.value?.selectFile()
-    } else {
-        window.$message.error('当前状态不可上传')
-    }
-}
-const attachmentUploadChange = (a, b, fileList) => {
-    baseForm.value.fileList = getArrValue(fileList)
-}
-
 // 文件上传成功的回调
-const uploadFileSuccess = async ({ resData }) => {
-    const { pdfUrl } = resData
-    if (isNullES(pdfUrl)) {
+const uploadFileSuccess = async ({ res }, resolve) => {
+    if (isNullES(res.pdfUrl)) {
         window.$message.warning('该文件不能生成pdf,请更换文件上传')
-        uploadFileRef.value?.setModalShow(false)
+        resolve()
         return
     }
-    baseForm.value.fileList.push({
+    resolve({
         contractId: contractId.value,
-        fileName: resData.originalName ?? '',
-        filePdfUrl: resData.pdfUrl ?? '',
-        fileUrl: resData.link ?? '',
+        fileName: res.originalName ?? '',
+        filePdfUrl: res.pdfUrl ?? '',
+        fileUrl: res.link ?? '',
         taskId: taskInfo.value.id,
     })
-    uploadFileRef.value?.setModalShow(false)
     //发起请求
     const dataId = tableInfo.value.id
     const { error, code, msg } = await mainApi.taskUploadFile({
@@ -257,6 +250,7 @@ const uploadFileSuccess = async ({ resData }) => {
 const attachmentUploadDel = ({ file }, resolve) => {
     if (!isEdits.value) {
         window.$message.error('当前状态不可删除')
+        resolve(false)
         return
     }
     delMessage(async () => {

+ 24 - 40
src/views/tasks/components/hc-data/middlepay-form.vue

@@ -51,7 +51,7 @@
                     </el-col>
                     <el-col :span="16">
                         <el-form-item label="草图文件:">
-                            <hc-form-upload v-if="baseForm.pictureUrl" :src="baseForm.pictureUrl" />
+                            <hc-form-upload v-if="baseForm.pictureUrl" v-model="baseForm.pictureUrl" />
                             <div v-else class="form-item-div">暂无文件</div>
                         </el-form-item>
                     </el-col>
@@ -106,23 +106,26 @@
             </template>
             <el-form :model="baseForm" label-position="left" label-width="auto">
                 <el-form-item label="上传附件">
-                    <hc-form-upload 
-                        type="list" 
-                        :src="baseForm.fileList" 
-                        :h-props="uploadFormProps" 
-                        is-del 
-                        :disabled="taskInfo.status === 2 || taskInfo.status === 3 || tableInfo.status === 1" 
-                        @upload="attachmentUpload" 
-                        @change="attachmentUploadChange" 
-                        @del="attachmentUploadDel"
+                    <hc-form-upload
+                        v-model="baseForm.fileList"
+                        is-del
+                        is-success
+                        :disabled="!isEdits || taskInfo.status === 2 || taskInfo.status === 3 || tableInfo.status === 1"
+                        :options="{
+                            type: 'list',
+                            props: uploadFormProps,
+                            isArr: true,
+                            num: 0,
+                        }"
+                        :upload="{ options: { multiple: false } }"
+                        @success="uploadFileSuccess"
+                        @del="uploadFileDel"
                     />
                 </el-form-item>
             </el-form>
         </hc-card-item>
         <!-- 添加分解清单 -->
         <HcBillBase v-model="addBillBaseShow" :info="taskInfo" :table="tableInfo" :ids="billBaseIds" :project-id="projectId" :contract-id="contractId" @finish="finishChange" />
-        <!-- 文件上传组件 -->
-        <hc-upload-file ref="uploadFileRef" :options="uploadFileOptions" @success="uploadFileSuccess" />
     </div>
 </template>
 
@@ -132,7 +135,6 @@ import { useAppStore } from '~src/store'
 import HcBillBase from './addBillBase.vue'
 import mainApi from '~api/tasks/hc-data'
 import BigNumber from 'bignumber.js'
-import { getHeader } from 'hc-vue3-ui'
 import { delMessage, isNumberReg } from '~uti/tools'
 import { arrToId, getArrValue, getObjVal, getObjValue, isNullES } from 'js-fast-way'
 
@@ -178,7 +180,6 @@ onMounted(() => {
 const taskInfo = ref({})
 const tableInfo = ref({})
 const setTaskInfo = (table, row) => {
-  
     tableInfo.value = table
     taskInfo.value = row
     if (getObjVal(table) && getObjVal(row)) {
@@ -329,43 +330,25 @@ const finishChange = () => {
 }
 
 //文件上传
-const uploadFileRef = ref(null)
-const uploadFileOptions = ref({
-    headers: getHeader(),
-    multiple: false,
-})
 const uploadFormProps = {
     url: 'filePdfUrl',
     name: 'fileName',
 }
 
-const attachmentUpload = () => {
-    if (isEdits.value || tableInfo.value.status !== 2) {
-        uploadFileRef.value?.selectFile()
-    } else {
-        window.$message.error('当前状态不可上传')
-    }
-}
-const attachmentUploadChange = (a, b, fileList) => {
-    baseForm.value.fileList = getArrValue(fileList)
-}
-
 // 文件上传成功的回调
-const uploadFileSuccess = async ({ resData }) => {
-    const { pdfUrl } = resData
-    if (isNullES(pdfUrl)) {
+const uploadFileSuccess = async ({ res }, resolve) => {
+    if (isNullES(res.pdfUrl)) {
         window.$message.warning('该文件不能生成pdf,请更换文件上传')
-        uploadFileRef.value?.setModalShow(false)
+        resolve()
         return
     }
-    baseForm.value.fileList.push({
+    resolve({
         contractId: contractId.value,
-        fileName: resData.originalName ?? '',
-        filePdfUrl: resData.pdfUrl ?? '',
-        fileUrl: resData.link ?? '',
+        fileName: res.originalName ?? '',
+        filePdfUrl: res.pdfUrl ?? '',
+        fileUrl: res.link ?? '',
         taskId: taskInfo.value.id,
     })
-    uploadFileRef.value?.setModalShow(false)
     //发起请求
     const dataId = tableInfo.value.id
     const { error, code, msg } = await mainApi.taskUploadFile({
@@ -383,9 +366,10 @@ const uploadFileSuccess = async ({ resData }) => {
 }
 
 //删除文件
-const attachmentUploadDel = ({ file }, resolve) => {
+const uploadFileDel = ({ file }, resolve) => {
     if (!isEdits.value) {
         window.$message.error('当前状态不可删除')
+        resolve(false)
         return
     }
     delMessage(async () => {

+ 23 - 29
src/views/tasks/components/hc-data/start-work-form.vue

@@ -39,12 +39,24 @@
             </template>
             <el-form :model="baseForm" label-position="left" label-width="auto">
                 <el-form-item label="上传附件">
-                    <hc-form-upload type="list" :src="baseForm.fileList" :h-props="uploadFormProps" is-del @upload="attachmentUpload" @change="attachmentUploadChange" @del="attachmentUploadDel" />
+                    <hc-form-upload
+                        v-model="baseForm.fileList"
+                        is-del
+                        is-success
+                        :disabled="!isEdits || taskInfo.status !== 2"
+                        :options="{
+                            type: 'list',
+                            props: uploadFormProps,
+                            isArr: true,
+                            num: 0,
+                        }"
+                        :upload="{ options: { multiple: false } }"
+                        @success="uploadFileSuccess"
+                        @del="attachmentUploadDel"
+                    />
                 </el-form-item>
             </el-form>
         </hc-card-item>
-        <!-- 文件上传组件 -->
-        <hc-upload-file ref="uploadFileRef" :options="uploadFileOptions" @success="uploadFileSuccess" />
     </div>
 </template>
 
@@ -53,7 +65,6 @@ import { nextTick, onMounted, ref, watch } from 'vue'
 import { useAppStore } from '~src/store'
 import { delMessage, isNumberReg } from '~uti/tools'
 import { getArrValue, getObjVal, getObjValue, isNullES } from 'js-fast-way'
-import { getHeader } from 'hc-vue3-ui'
 import mainApi from '~api/tasks/hc-data'
 
 const props = defineProps({
@@ -171,43 +182,25 @@ const applyCauseInputBlur = async () => {
 }
 
 //文件上传
-const uploadFileRef = ref(null)
-const uploadFileOptions = ref({
-    headers: getHeader(),
-    multiple: false,
-})
 const uploadFormProps = {
     url: 'filePdfUrl',
     name: 'fileName',
 }
 
-const attachmentUpload = () => {
-    if (isEdits.value || tableInfo.value.status !== 2) {
-        uploadFileRef.value?.selectFile()
-    } else {
-        window.$message.error('当前状态不可上传')
-    }
-}
-const attachmentUploadChange = (a, b, fileList) => {
-    baseForm.value.fileList = getArrValue(fileList)
-}
-
 // 文件上传成功的回调
-const uploadFileSuccess = async ({ resData }) => {
-    const { pdfUrl } = resData
-    if (isNullES(pdfUrl)) {
+const uploadFileSuccess = async ({ res }, resolve) => {
+    if (isNullES(res.pdfUrl)) {
         window.$message.warning('该文件不能生成pdf,请更换文件上传')
-        uploadFileRef.value?.setModalShow(false)
+        resolve()
         return
     }
-    baseForm.value.fileList.push({
+    resolve({
         contractId: contractId.value,
-        fileName: resData.originalName ?? '',
-        filePdfUrl: resData.pdfUrl ?? '',
-        fileUrl: resData.link ?? '',
+        fileName: res.originalName ?? '',
+        filePdfUrl: res.pdfUrl ?? '',
+        fileUrl: res.link ?? '',
         taskId: taskInfo.value.id,
     })
-    uploadFileRef.value?.setModalShow(false)
     //发起请求
     const dataId = tableInfo.value.id
     const { error, code, msg } = await mainApi.taskUploadFile({
@@ -228,6 +221,7 @@ const uploadFileSuccess = async ({ resData }) => {
 const attachmentUploadDel = ({ file }, resolve) => {
     if (!isEdits.value) {
         window.$message.error('当前状态不可删除')
+        resolve(false)
         return
     }
     delMessage(async () => {

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

@@ -7,7 +7,7 @@
                         <div class="user-avatar">
                             <img class="avatar" :src="userInfo.avatar || avatarPng" alt="">
                             <div class="avatar-upload" @click="setModalShowClick">
-                                <HcIcon fill name="camera" />
+                                <hc-icon fill name="camera" />
                             </div>
                         </div>
                     </div>
@@ -55,36 +55,21 @@
                     </el-form>
                 </hc-card-item>
                 <hc-card-item v-if="menuKey === 'password'" title="密码设置">
-                    <el-form
-                        ref="formUserPassRef"
-                        :model="formUserPassModel"
-                        :rules="formUserPassRules"
-                        label-position="top" size="large"
-                        style="max-width: 400px; margin: auto;"
-                    >
+                    <el-form ref="formUserPassRef" :model="formUserPassModel" :rules="formUserPassRules" label-position="top" size="large" style="max-width: 400px; margin: auto;">
                         <el-form-item label="原始密码" prop="oldPassword">
-                            <el-input
-                                v-model="formUserPassModel.oldPassword" placeholder="请输入原始密码"
-                                show-password type="password"
-                            />
+                            <el-input v-model="formUserPassModel.oldPassword" placeholder="请输入原始密码" show-password type="password" />
                         </el-form-item>
                         <el-form-item label="新的密码" prop="newPassword">
-                            <el-input
-                                v-model="formUserPassModel.newPassword" placeholder="请输入新的密码"
-                                show-password type="password"
-                            />
+                            <el-input v-model="formUserPassModel.newPassword" placeholder="请输入新的密码" show-password type="password" />
                         </el-form-item>
                         <el-form-item label="确认新密码" prop="newPassword1">
-                            <el-input
-                                v-model="formUserPassModel.newPassword1" placeholder="请输入确认新密码"
-                                show-password type="password"
-                            />
+                            <el-input v-model="formUserPassModel.newPassword1" placeholder="请输入确认新密码" show-password type="password" />
                         </el-form-item>
                     </el-form>
                     <template #action>
                         <div class="hc-flex-center">
                             <el-button :loading="saveUserLoading" hc-btn type="primary" @click="saveUserInfoClick">
-                                <HcIcon name="save" />
+                                <hc-icon name="save" />
                                 <span>提交保存</span>
                             </el-button>
                         </div>
@@ -92,17 +77,15 @@
                 </hc-card-item>
             </div>
         </div>
-        <!-- 文件上传 -->
-        <hc-upload-file ref="HcUploadFileRef" :options="uploadFileOptions" @success="uploadFileSuccess" />
     </hc-new-card>
 </template>
 
 <script setup>
-import { onActivated, onMounted, ref } from 'vue'
+import { onActivated, ref } from 'vue'
 import { useAppStore } from '~src/store'
 import userApi from '~api/userInfo/index'
 import avatarPng from '~src/assets/images/avatar.png'
-import { getHeader } from 'hc-vue3-ui'
+import { HcUploadFileApi } from 'hc-vue3-ui'
 import { formValidate } from 'js-fast-way'
 const useState = useAppStore()
 import md5 from 'js-md5'
@@ -114,25 +97,28 @@ defineOptions({
 const userInfo = ref(useState.getUserInfo)
 
 onActivated(() => {
-    uploadFileOptions.value = {
-        headers: getHeader(),
-        url: '/api/blade-resource/oss/endpoint/put-file',
-        accept: 'image/png,image/jpg,image/jpeg',
-        accept_tip: '只能上传图片(png、jpg、jpeg)文件',
-        multiple: false,
-    }
     queryCurrentUserData()
 })
 
 //文件上传
-const HcUploadFileRef = ref(null)
-const uploadFileOptions = ref({})
 const setModalShowClick = () => {
-    HcUploadFileRef.value?.selectFile()
+    HcUploadFileApi({
+        url: '/api/blade-resource/oss/endpoint/put-file',
+        accept: 'image/png,image/jpg,image/jpeg',
+        accept_tip: '只能上传图片(png、jpg、jpeg)文件',
+        size: 50,
+        multiple: false,
+        success: (file, res) => {
+            uploadFileSuccess(res)
+        },
+        error: () => {
+            window?.$message?.error('上传失败')
+        },
+    })
 }
 //文件上传完成
-const uploadFileSuccess = async ({ resData }) => {
-    const link = resData?.link ?? ''
+const uploadFileSuccess = async (res) => {
+    const link = res?.link ?? ''
     const user_id = userInfo.value?.user_id ?? ''
     if (link) {
         const { error, code } = await userApi.updateUserInfo({

+ 4 - 4
yarn.lock

@@ -2024,10 +2024,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.7.0:
-  version "3.7.0"
-  resolved "http://39.108.216.210:9000/hc-vue3-ui/-/hc-vue3-ui-3.7.0.tgz#de8e6c68e6d5e6eb462deaea4ecaa59433aa54de"
-  integrity sha512-9IDkFn7LT9Cypopda1iS409TRSfiECxN7tuCB/uVlppRSu7f4+7tulQpFWklEQm2dQQcPD50E3nTyqfzmmIxCA==
+hc-vue3-ui@^3.7.3:
+  version "3.7.3"
+  resolved "http://39.108.216.210:9000/hc-vue3-ui/-/hc-vue3-ui-3.7.3.tgz#c6fa4d9855477b35a1cb1755091d08282115df1f"
+  integrity sha512-DGld1PCK8j4yH+Kx1rHT+RFPFpSIDQ3fyY2Fka66pD2tUQh7JcvJSfWjbpqmFVkXoXmr45AKbxPfFieUoQqkNw==
   dependencies:
     axios "^1.6.8"
     dayjs "^1.11.10"