Kaynağa Gözat

首件工程处理

iZaiZaiA 2 yıl önce
ebeveyn
işleme
becf1d966f

+ 19 - 10
src/views/other/components/HcUpload.vue

@@ -13,7 +13,7 @@
 </template>
 
 <script setup>
-import {ref,watch} from "vue";
+import {nextTick, ref, watch} from "vue";
 import {isSize} from "vue-utils-plus"
 import {genFileId} from "element-plus";
 import {getTokenHeader} from '~src/api/request/header';
@@ -23,27 +23,37 @@ const props = defineProps({
         type: Array,
         default: () => ([])
     },
-    datas: {
-        type: Object,
-        default: () => ({})
+    pkeyId: {
+        type: [String,Number],
+        default: ''
     },
 })
 
 //变量
 const uploadRef = ref(null)
-const uploadData = ref(props.datas)
 const fileListData = ref(props.fileList)
 const uploadDisabled = ref(false)
+
+const uploadData = ref({})
 const action = '/api/blade-manager/first/add-first-buss-file'
 const accept = 'image/png,image/jpg,image/jpeg,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel,application/pdf,.doc,.docx,application/msword'
 
 //监听
 watch(() => [
     props.fileList,
-    props.datas,
-], ([fileList, datas]) => {
-    uploadData.value = datas
+    props.pkeyId,
+], ([fileList, pkeyId]) => {
     fileListData.value = fileList
+    uploadData.value = {
+        pkeyId: pkeyId + ''
+    }
+})
+
+//渲染完成
+nextTick(()=> {
+    uploadData.value = {
+        pkeyId: props.pkeyId + ''
+    }
 })
 
 //事件
@@ -75,9 +85,8 @@ const uploadprogress = () => {
 
 //上传完成
 const uploadSuccess = (res) => {
-    console.log(res)
     uploadDisabled.value = false
-    emit('finish', {type: 'success'})
+    emit('finish', {type: 'success', res})
     emit('progress', false)
 }
 

+ 69 - 11
src/views/other/first-item.vue

@@ -116,7 +116,7 @@
                 <div class="node-file">
                     <div class="title">上传总结报告</div>
                     <div class="node-upload-box" v-if="contractId && isTableForm">
-                        <HcUpload :fileList="fileListData" :datas="uploadData" @finish='uploadChange'/>
+                        <HcUpload :fileList="fileListData" :pkeyId="pkeyIds" @finish='uploadChange'/>
                     </div>
                     <div class="node-upload-box" v-else>
                         <el-alert title="表单异常,暂时无法使用上传" type="warning" show-icon :closable="false"/>
@@ -133,7 +133,7 @@
                 </div>
             </div>
             <div class="node-action">
-                <el-button type="primary" hc-btn :disabled="!contractId || !isTableForm"  @click="saveBussData">
+                <el-button type="primary" hc-btn :disabled="!contractId || !isTableForm" :loading="tableFormSaveLoading" @click="saveBussData">
                     <HcIcon name="save"/>
                     <span>保存</span>
                 </el-button>
@@ -151,6 +151,10 @@
                 </el-button>
             </div>
         </HcDrawer>
+
+        <!--上报审批-->
+        <HcReportModal title="上报审批" url="informationWriteQuery/taskOne" :show="showReportModal" :projectId="projectId" :contractId="contractId"
+                       :taskName="reportTaskName" :ids="reportIds" @hide="showReportModal = false" @finish="showReportFinish"/>
     </div>
 </template>
 
@@ -377,6 +381,7 @@ const FirstReportDrawerClose = () => {
 //获取表单
 const statusDesc = ref('')
 const isTableForm = ref(false)
+const pkeyIds = ref('')
 const getFirstExcelHtml = async () => {
     const cid = contractId.value;
     const { error, code, data } = await firstApi.getFirstExcelHtml({
@@ -385,8 +390,8 @@ const getFirstExcelHtml = async () => {
     //处理数据
     const temp = isString(data?.data) ? data?.data || '' : ''
     if (!error && code === 200 && temp) {
-        let pkeyId = data?.data?.id ?? null
-        uploadData.value = {pkeyId: pkeyId}
+        let pkeyId = data?.id || ''
+        pkeyIds.value = pkeyId
         setHTableForm(temp, cid, tableFormData.value)
         getFirstBussDataInfo(pkeyId)
     } else {
@@ -425,7 +430,7 @@ const getFirstBussDataInfo = async (pkeyId) => {
     if (pkeyId) {
         const { data } = await firstApi.getFirstBussDataInfo({
             contractId: contractId.value || '',
-            pkeyId: pkeyId + ''
+            firstId: pkeyId + ''
         }, false)
         const info = getObjValue(data)
         if (getObjNullValue(info)) {
@@ -441,11 +446,24 @@ const getFirstBussDataInfo = async (pkeyId) => {
 
 //上传变量
 const fileListData = ref([]);
-const uploadData = ref({})
-
+const finishFile = ref({
+    sourceUrl: '', pdfUrl: '', firstFileName: ''
+})
 //上传文件
-const uploadChange = async ({type}) => {
-    console.log(type)
+const uploadChange = async ({type, res}) => {
+    if (type === 'success') {
+        const {code, data, msg} = res
+        if (code === 200) {
+            finishFile.value = {
+                sourceUrl: data?.sourceUrl,
+                pdfUrl: data?.pdfUrl,
+                firstFileName: data?.fileName,
+            }
+            window.$message?.success(msg);
+        } else {
+            window.$message?.error(msg || '上传失败');
+        }
+    }
 }
 
 //文件附件列表
@@ -478,8 +496,11 @@ const saveBussData = async () => {
 }
 
 //保存请求
+const tableFormSaveLoading = ref(false)
 const saveExcelBussData = async (pkeyId) => {
     const { primaryKeyId } = treeItem.value
+    tableFormSaveLoading.value = true
+    const linkIds = rowsToArr(tableFileData.value);
     const { error, code } = await firstApi.saveBussData({
         ...tableFormData.value,
         projectId: projectId.value,
@@ -487,9 +508,12 @@ const saveExcelBussData = async (pkeyId) => {
         firstNodeId: primaryKeyId,
         pkeyId: pkeyId,
         classify: '1',
-        isFirst: 1
+        isFirst: 1,
+        linkProcessList: linkIds,
+        ...finishFile.value
     }, false)
     //判断状态
+    tableFormSaveLoading.value = false
     if (!error && code === 200) {
         window.$message?.success('保存成功')
         return true
@@ -519,10 +543,32 @@ const getBussPdfInfo = async (pkeyId) => {
     }
 }
 
-
 //上报审批
+const reportIds = ref('')
+const showReportModal = ref(false)
+const reportTaskName = ref('')
+const reportAddition = ref({})
 const reportModalClick = () => {
+    const { primaryKeyId, contractIdRelation } = treeItem.value
+    const rows = tableFileData.value
+    if (rows.length > 0) {
+        reportIds.value = rowsToId(rows)
+        reportTaskName.value = rows.length > 1?`${rows[0].name}等${rows.length}个文件`:rows[0].name
+        reportAddition.value = {
+            classify: 1,
+            isFirst: 1,
+            primaryKeyId: primaryKeyId,
+            contractIdRelation: contractIdRelation ?? contractId.value,
+        }
+        showReportModal.value = true
+    } else {
+        window.$message?.warning('暂无相关数据')
+    }
+}
 
+//上报完成
+const showReportFinish = () => {
+    showReportModal.value = false
 }
 
 //拼接ID
@@ -532,6 +578,18 @@ const rowsToId = (rows) => {
     }).join(",")
 }
 
+//处理数据
+const rowsToArr = (rows) => {
+    let newArr = [];
+    for (let i = 0; i < rows.length; i++) {
+        newArr.push({
+            id: rows[i]?.id,
+            name: rows[i]?.name
+        })
+    }
+    return newArr
+}
+
 //左右拖动,改变树形结构宽度
 const leftWidth = ref(382)
 const onmousedown = () => {