Преглед изворни кода

材料计量单接口调用

duy пре 1 година
родитељ
комит
a28a0a1ebf

+ 103 - 16
src/views/debit-pay/material/components/order/dataModal.vue

@@ -4,7 +4,7 @@
             <div id="hc_modal_tree">
                 <hc-card-item scrollbar>
                     <!-- <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" /> -->
-                    <HcDataTree :h-props="treeProps" :datas="treeLoadNode" />
+                    <HcDataTree :h-props="treeProps" :datas="treeLoadNode" @nodeTap="treeClick" />
                 </hc-card-item>
             </div>
             <div id="hc_modal_form">
@@ -23,7 +23,7 @@
                             </el-col>
                             <el-col :span="8">
                                 <el-form-item label="计量期:">
-                                    <el-select v-model="baseForm.meterPeriodId" placeholder="选择计量期" filterable clearable block @change="searchKey1Click">
+                                    <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>
@@ -56,8 +56,8 @@
                             <el-col :span="8">
                                 <el-form-item label="材料是否符合要求:">
                                     <el-select v-model="baseForm.materialConform" block>
-                                        <el-option label="是" value="1" />
-                                        <el-option label="否" value="2" />
+                                        <el-option label="是" :value="1" />
+                                        <el-option label="否" :value="0" />
                                     </el-select>
                                 </el-form-item>
                             </el-col>
@@ -74,8 +74,8 @@
                             <el-col :span="8">
                                 <el-form-item label="存储方法是否符合要求:">
                                     <el-select v-model="baseForm.storageConform" block>
-                                        <el-option label="是" value="1" />
-                                        <el-option label="否" value="0" />
+                                        <el-option label="是" :value="1" />
+                                        <el-option label="否" :value="0" />
                                     </el-select>
                                 </el-form-item>
                             </el-col>
@@ -96,14 +96,15 @@
                         <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>
-                    <el-form :model="baseForm" label-position="top">
+                    <el-form :model="baseForm" label-position="top" style="overflow-y: auto;height: 100px;">
                         <el-form-item label="">
-                            <hc-form-upload type="list" :src="baseForm.key11" />
+                            <hc-form-upload type="list" :src="fileName" @upload="formItemUpload" />
                         </el-form-item>
                     </el-form>
                 </hc-card-item>
             </div>
         </div>
+        <HcUploadFile ref="HcUploadFileRef" @finish="HcUploadFileFinish" />
     </hc-new-dialog>
 </template>
 
@@ -112,29 +113,47 @@ import { nextTick, ref, watch } from 'vue'
 import { useAppStore } from '~src/store'
 import contractApi from '~api/debit-pay/material/contract.js'
 import periodApi from '~api/debit-pay/material/periods.js'
-import { getArrValue } from 'js-fast-way'
+import orderApi from '~api/debit-pay/material/order.js'
+import { arrToKey, getArrValue, getObjValue } from 'js-fast-way'
 const props = defineProps({
     ids: {
         type: [String, Number],
         default: '',
     },
+    infoData:{
+        type: Object,
+        default: () => ({}),
+    },
 })
 //事件
 const emit = defineEmits(['close'])
 const useAppState = useAppStore()
 const contractId = ref(useAppState.getContractId)
-
+const projectId = ref(useAppState.getProjectId)
+const infoData = ref(props.infoData)
+const ids = ref(props.ids)
 //双向绑定
 // eslint-disable-next-line no-undef
 const isShow = defineModel('modelValue', {
     default: false,
 })
-
+const baseForm = ref({})
+const fileName = ref('')
 //监听
 watch(() => [
     props.ids,
-], ([ids]) => {
-    console.log('ids', ids)
+    props.infoData,
+], ([Id, info]) => {
+    ids.value = Id
+    infoData.value = info
+
+    if (Id.length > 0) {
+        baseForm.value = info
+        console.log( fileName.value, ' fileName.value')
+    } else {
+        baseForm.value = {}
+        fileName.value = ''
+    }
 }, { immediate: true })
 
 //监听
@@ -188,14 +207,82 @@ const getTreeData = async ()=>{
         treeLoadNode.value = []
     }
 }
+const treeItem = ref({})
+const treeClick = ({ node, data, keys })=>{
+    treeItem.value = data
+    if (key1Data.value.length > 0) {
+        baseForm.value.meterPeriodId = key1Data.value[0].id
+    }
+}
+
+
+
 //基础表单
 const baseFormRef = ref(null)
-const baseForm = ref({})
+// const baseForm = ref({})
 const baseFormRules = {}
-
-const modalSave = () => {
+const modalSaving = ref(false)
+const modalSave = async () => {
+    if (!treeItem.value?.id && ids.value.length < 1) {
+        window.$message.warning('请先选择左侧节点')
+        return
+    }
+    modalSaving.value = true
+    if (ids.value.length < 1) {
+        const { error, code, msg } = await orderApi.add({
+        ...baseForm.value,
+        contractId:contractId.value,
+        contractMaterialId:treeItem.value?.id,
+        projectId:projectId.value,
+        })
+        //判断状态
+        modalSaving.value = false
+        if (!error && code === 200) {
+            window?.$message?.success(msg)
+            
+         
+        }
+    } else if (ids.value.length > 0) {
+        const { error, code, msg } = await orderApi.update({
+        ...baseForm.value,
+        contractId:contractId.value,
+        contractMaterialId:treeItem.value?.id,
+        projectId:projectId.value,
+        })
+        //判断状态
+        modalSaving.value = false
+        if (!error && code === 200) {
+            window?.$message?.success(msg)
+            
+         
+        }
+    }
+   
     modalClose()
 }
+const HcUploadFileRef = ref(null)
+// const fileName = ref('')
+// 文件全部上传完成
+const HcUploadFileFinish = (res) => {
+ let arr = []
+ res.forEach((ele)=>{
+    arr.push(ele.resData)
+ })
+ arr.forEach((ele)=>{
+    ele.fileName = ele.originalName
+    ele.fileUrl = ele.link
+    ele.filePdfUrl = ele.pdfUrl
+ })
+ baseForm.value.fileList = arr
+fileName.value = arrToKey(arr, 'originalName', ',')
+
+  HcUploadFileRef?.value.setModalShow(false)
+}
+//上传
+const formItemUpload = () => {
+    HcUploadFileRef.value?.selectFile()
+}
+
 
 const modalClose = () => {
     isShow.value = false

+ 40 - 10
src/views/debit-pay/material/order.vue

@@ -29,7 +29,7 @@
                     >
                         <template #action="{ row }">
                             <el-link type="success" @click="rowEditClick(row)">修改</el-link>
-                            <el-link type="danger">删除</el-link>
+                            <el-link type="danger" @click="delRowClick(row)">删除</el-link>
                         </template>
                     </hc-table>
                     <template #action>
@@ -87,16 +87,17 @@
                     </hc-info-table>
                     <div class="mt-5">附件列表</div>
                     <div class="mt-3">
-                        <el-check-tag v-for="item in infoData?.fileList" checked class="mr-2">{{ item.fileName }}</el-check-tag>
-                        <el-check-tag checked class="mr-2">文件名称2.jpg</el-check-tag>
-                        <el-check-tag checked class="mr-2">文件名称3.jpg</el-check-tag>
-                        <el-check-tag checked class="mr-2">文件名称4.jpg</el-check-tag>
+                        <template v-if="infoData?.fileList?.length > 0">
+                            <el-check-tag v-for="item in infoData?.fileList" :key="item.id" checked class="mr-2">{{ item.fileName }}</el-check-tag>
+                        </template>
+                       
+                        <HcNoData v-else />
                     </div>
                 </hc-card-item>
             </div>
         </div>
         <!-- 新增/修改 -->
-        <HcDataModal v-model="isDataModal" />
+        <HcDataModal v-model="isDataModal" :info-data="infoData" :ids="editId" @close="finishData" />
 
         <!-- 上报弹窗 -->
         <hc-report-dialog v-model="isReport" />
@@ -108,11 +109,12 @@ import { onActivated, onMounted, ref } from 'vue'
 import HcDataModal from './components/order/dataModal.vue'
 import mainApi from '~api/debit-pay/material/order.js'
 import periodApi from '~api/debit-pay/material/periods.js'
-import { getArrValue, getObjValue, getYearList } from 'js-fast-way'
+import { getArrValue, getObjValue } from 'js-fast-way'
 import { useAppStore } from '~src/store'
 const useAppState = useAppStore()
 const contractId = ref(useAppState.getContractId)
 const projectId = ref(useAppState.getProjectId)
+import { delMessageV2 } from '~com/message/index.js'
 
 defineOptions({
     name: 'DebitPayMaterialOrder',
@@ -187,7 +189,7 @@ const getTableData = async () => {
     }
 }
 const hanleRow = ({ row })=>{
-    getDetail(id)
+    getDetail(row.id)
 }
 //获取详情
 const infoData = ref({})
@@ -211,13 +213,41 @@ const tableCheckChange = () => {
 const isDataModal = ref(false)
 const addModalClick = () => {
     isDataModal.value = true
+    editId.value = ''
+}
+const finishData = ()=>{
+    isDataModal.value = false
+    getTableData()
 }
-
 //修改
+const editId = ref('')
 const rowEditClick = (row) => {
     isDataModal.value = true
+    editId.value = row.id
+    
+}
+const delRowClick = async (row)=>{
+    delMessageV2(async (action, instance, done) => {
+            if (action === 'confirm') {
+                instance.confirmButtonLoading = true
+                removeProPay(row.id)
+                instance.confirmButtonLoading = false
+                done()
+            } else {
+                done()
+            }
+    })
+}
+const removeProPay = async (id) => {
+    const { error, code } = await mainApi.remove({
+        id: id, 
+    })
+    if (!error && code === 200) {
+        window?.$message?.success('删除成功')
+       getTableData()
+       rowViewId.value = ''
+    }
 }
-
 //是否上报
 const isReport = ref(false)
 const reportClick = () => {