Browse Source

中间支付申请

ZaiZai 1 year ago
parent
commit
0984cf2615

+ 68 - 0
src/api/modules/debit-pay/admin/certificate.js

@@ -0,0 +1,68 @@
+import { HcApi } from '../../../request/index'
+//  中期支付证书
+export default {
+    //分页
+    async getPage(form, msg = false) {
+        return HcApi({
+            url: '/api/blade-meter/interimPayCertificate/page',
+            method: 'get',
+            params: form,
+        }, msg)
+    },
+    //修改
+    async edit(form, msg = false) {
+        return HcApi({
+            url: '/api/blade-meter/interimPayCertificate/update',
+            method: 'post',
+            data: form,
+        }, msg)
+    },
+    //新增
+    async add(form, msg = false) {
+        return HcApi({
+            url: '/api/blade-meter/interimPayCertificate/add',
+            method: 'post',
+            data: form,
+        }, msg)
+    },
+    //删除
+    async remove(form, msg = false) {
+        return HcApi({
+            url: '/api/blade-meter/interimPayCertificate/delete',
+            method: 'post',
+            params: form,
+        }, msg)
+    },
+    //获取详情
+    async getDetail(form, msg = false) {
+        return HcApi({
+            url: '/api/blade-meter/interimPayCertificate/detail',
+            method: 'get',
+            params: form,
+        }, msg)
+    },
+    //锁定
+    async setLocking(form, msg = false) {
+        return HcApi({
+            url: '/api/blade-meter/interimPayCertificate/locking',
+            method: 'get',
+            params: form,
+        }, msg)
+    },
+    //合同计量期
+    async getAllPeriod(form, msg = false) {
+        return HcApi({
+            url: '/api/blade-meter/contractMeterPeriod/conditionPeriod',
+            method: 'get',
+            params: form,
+        }, msg)
+    },
+    //材料计量期
+    async getMeterPeriod(form, msg = true) {
+        return HcApi({
+            url: '/api/blade-meter/meterPeriod/allPeriod',
+            method: 'get',
+            params: form,
+        }, msg)
+    },
+}

+ 12 - 12
src/api/modules/debit-pay/admin/middlepay.js

@@ -2,7 +2,7 @@ import { HcApi } from '../../../request/index'
 //  中间计量申请
 export default {
     //分页
-    async getPage(form, msg = true) {
+    async getPage(form, msg = false) {
         return HcApi({
             url: '/api//blade-meter/middleMeterApply/page',
             method: 'get',
@@ -10,7 +10,7 @@ export default {
         }, msg)
     },
     //修改
-    async edit(form, msg = true) {
+    async edit(form, msg = false) {
         return HcApi({
             url: '/api/blade-meter/middleMeterApply/update',
             method: 'post',
@@ -18,7 +18,7 @@ export default {
         }, msg)
     },
     //新增
-    async add(form, msg = true) {
+    async add(form, msg = false) {
         return HcApi({
             url: '/api/blade-meter/middleMeterApply/add',
             method: 'post',
@@ -26,7 +26,7 @@ export default {
         }, msg)
     },
     //删除
-    async remove(form, msg = true) {
+    async remove(form, msg = false) {
         return HcApi({
             url: '/api/blade-meter/middleMeterApply/remove',
             method: 'post',
@@ -34,7 +34,7 @@ export default {
         }, msg)
     },
     //获取详情
-    async getDetail(form, msg = true) {
+    async getDetail(form, msg = false) {
         return HcApi({
             url: '/api/blade-meter/middleMeterApply/detail',
             method: 'get',
@@ -42,7 +42,7 @@ export default {
         }, msg)
     },
     //获取清单明细
-    async getFormDetail(form, msg = true) {
+    async getFormDetail(form, msg = false) {
         return HcApi({
             url: '/api/blade-meter/middleMeterApply/formDetail',
             method: 'get',
@@ -50,7 +50,7 @@ export default {
         }, msg)
     },
     //添加清单
-    async addFormList(form, msg = true) {
+    async addFormList(form, msg = false) {
         return HcApi({
             url: '/api/blade-meter/middleMeterApply/addFormList',
             method: 'get',
@@ -58,7 +58,7 @@ export default {
         }, msg)
     },
     //添加分解清单
-    async addResolveForm(form, msg = true) {
+    async addResolveForm(form, msg = false) {
         return HcApi({
             url: '/api/blade-meter/middleMeterApply/addResolveForm',
             method: 'get',
@@ -66,7 +66,7 @@ export default {
         }, msg)
     },
     //获取当前节点工程划分
-    async getNodeDivide(form, msg = true) {
+    async getNodeDivide(form, msg = false) {
         return HcApi({
             url: '/api/blade-meter/middleMeterApply/getNodeDivide',
             method: 'get',
@@ -74,7 +74,7 @@ export default {
         }, msg)
     },
     //获取当前节点变更令
-    async getNodeToken(form, msg = true) {
+    async getNodeToken(form, msg = false) {
         return HcApi({
             url: '/api/blade-meter/middleMeterApply/getNodeToken',
             method: 'get',
@@ -82,7 +82,7 @@ export default {
         }, msg)
     },
     //获取计量单编号
-    async getMeterNumber(form, msg = true) {
+    async getMeterNumber(form, msg = false) {
         return HcApi({
             url: '/api/blade-meter/middleMeterApply/getMeterNumber',
             method: 'get',
@@ -90,7 +90,7 @@ export default {
         }, msg)
     },
     //合同计量期列表-全部
-    async getAllPeriod(form, msg = true) {
+    async getAllPeriod(form, msg = false) {
         return HcApi({
             url: '/api/blade-meter/contractMeterPeriod/allPeriod',
             method: 'get',

+ 35 - 19
src/views/debit-pay/admin/certificate.vue

@@ -22,13 +22,13 @@
             <template #action>
                 <hc-pages :pages="searchForm" @change="pageChange" />
             </template>
+        </hc-new-card>
 
-            <!-- 中间计量新增 -->
-            <HcAddModal v-model="addModalShow" />
+        <!-- 中间计量新增 -->
+        <HcAddModal v-model="addModalShow" />
 
-            <!-- 中间计量新增 -->
-            <HcEditModal v-model="editModalShow" />
-        </hc-new-card>
+        <!-- 中间计量编辑 -->
+        <HcEditModal v-model="editModalShow" />
 
         <!-- 查看报表 -->
         <hc-view-report v-model="isReportDrawer" />
@@ -36,9 +36,16 @@
 </template>
 
 <script setup>
+import { getArrValue } from 'js-fast-way'
 import { onMounted, ref } from 'vue'
+import { useAppStore } from '~src/store'
 import HcAddModal from './components/certificate/addModal.vue'
 import HcEditModal from './components/certificate/editModal.vue'
+import mainApi from '~api/debit-pay/admin/certificate'
+
+const useAppState = useAppStore()
+const projectId = ref(useAppState.getProjectId || '')
+const contractId = ref(useAppState.getContractId || '')
 
 defineOptions({
     name: 'DebitPayAdminCertificate',
@@ -46,37 +53,46 @@ defineOptions({
 
 //渲染完成
 onMounted(() => {
-
+    getTableData()
 })
 
 const isReportDrawer = ref(false)
 
 //搜索表单
-const searchForm = ref({
-    current: 1, size: 10, total: 0,
-})
+const searchForm = ref({ current: 1, size: 10, total: 0 })
 
 //分页
 const pageChange = ({ current, size }) => {
     searchForm.value.current = current
     searchForm.value.size = size
+    getTableData()
 }
 
 //表格数据
 const tableLoading = ref(false)
 const tableColumn = ref([
-    { key: 'key1', name: '期号' },
-    { key: 'key2', name: '证书编号' },
-    { key: 'key3', name: '开始日期' },
-    { key: 'key4', name: '结束日期' },
-    { key: 'key5', name: '打印日期' },
-    { key: 'key6', name: '重新计算时间' },
-    { key: 'key7', name: '支付金额' },
+    { key: 'periodNumber', name: '期号' },
+    { key: 'certificateNumber', name: '证书编号' },
+    { key: 'startDate', name: '开始日期' },
+    { key: 'endDate', name: '结束日期' },
+    { key: 'printDate', name: '打印日期' },
+    { key: 'calculateDate', name: '重新计算时间' },
+    { key: 'payMoney', name: '支付金额' },
     { key: 'action', name: '操作', width: 260 },
 ])
-const tableData = ref([
-    { key1: '1111' },
-])
+const tableData = ref([])
+const getTableData = async () => {
+    tableData.value = []
+    tableLoading.value = true
+    const { data } = await mainApi.getPage({
+        ...searchForm.value,
+        projectId: projectId.value,
+        contractId: contractId.value,
+    })
+    tableData.value = getArrValue(data['records'])
+    searchForm.value.total = data.total || 0
+    tableLoading.value = false
+}
 
 //新增
 const addModalShow = ref(false)

+ 73 - 32
src/views/debit-pay/admin/components/certificate/addModal.vue

@@ -1,58 +1,103 @@
 <template>
     <hc-new-dialog widths="30rem" :show="isShow" title="新增中期支付证书" @save="addModalSave" @close="addModalClose">
         <el-form ref="formRef" class="p-2" label-position="top" :model="formModel" :rules="formRules" size="large">
-            <el-form-item label="计量期:" prop="key1">
-                <el-select v-model="formModel.key1" block>
-                    <el-option label="第一期" :value="1" />
+            <el-form-item label="计量期:" prop="contractPeriodId">
+                <el-select v-model="formModel.contractPeriodId" block>
+                    <el-option v-for="item in allPeriodData" :key="item.id" :label="item.periodNumber" :value="item.id" />
                 </el-select>
             </el-form-item>
-            <el-form-item label="证书编号:" prop="key2">
-                <el-input v-model="formModel.key2" />
+            <el-form-item label="证书编号:" prop="certificateNumber">
+                <el-input v-model="formModel.certificateNumber" />
             </el-form-item>
-            <el-form-item label="材料计量期:" prop="key3">
-                <div class="form-item-div">
-                    <el-radio-group v-model="formModel.key3">
-                        <el-radio :label="3">第一期</el-radio>
-                        <el-radio :label="6">第二期</el-radio>
-                        <el-radio :label="9">第三期</el-radio>
+            <el-form-item label="材料计量期:" prop="materialPeriodIds">
+                <div v-if="meterPeriodData.length > 0" class="form-item-div">
+                    <el-radio-group v-model="formModel.materialPeriodIds">
+                        <template v-for="item in meterPeriodData" :key="item.id">
+                            <el-radio v-if="item.periodNumber" :label="item.periodNumber">{{ item.periodName }}</el-radio>
+                        </template>
                     </el-radio-group>
                 </div>
+                <div v-else class="form-item-div text-orange">无材料计量期可进行关联</div>
             </el-form-item>
-            <el-form-item label="开工预付计量期:" prop="key4">
-                <div class="form-item-div text-orange">无开工计量期可进行关联</div>
+            <el-form-item label="开工预付计量期:" prop="startPeriodIds">
+                <div v-if="startPeriodData.length > 0" class="form-item-div">
+                    <el-radio-group v-model="formModel.startPeriodIds">
+                        <template v-for="item in startPeriodData" :key="item.id">
+                            <el-radio v-if="item.periodNumber" :label="item.periodNumber">{{ item.periodName }}</el-radio>
+                        </template>
+                    </el-radio-group>
+                </div>
+                <div v-else class="form-item-div text-orange">无开工计量期可进行关联</div>
             </el-form-item>
             <el-form-item label="打印日期:">
-                <el-date-picker v-model="formModel.key5" class="block" format="YYYY-MM-DD" type="date" value-format="YYYY-MM-DD" />
+                <el-date-picker v-model="formModel.printDate" class="block" format="YYYY-MM-DD" type="date" value-format="YYYY-MM-DD" />
             </el-form-item>
         </el-form>
     </hc-new-dialog>
 </template>
 
 <script setup>
-import { ref, watch } from 'vue'
-
-const props = defineProps({
-    ids: {
-        type: [String, Number],
-        default: '',
-    },
-})
+import { getArrValue } from 'js-fast-way'
+import { onMounted, ref, watch } from 'vue'
+import { useAppStore } from '~src/store'
+import mainApi from '~api/debit-pay/admin/certificate'
 
 //事件
 const emit = defineEmits(['finish', 'close'])
 
+//变量
+const useAppState = useAppStore()
+const projectId = ref(useAppState.getProjectId || '')
+const contractId = ref(useAppState.getContractId || '')
+
 //双向绑定
 // eslint-disable-next-line no-undef
 const isShow = defineModel('modelValue', {
     default: false,
 })
 
-//监听
-watch(() => [
-    props.ids,
-], ([ids]) => {
-    console.log('ids', ids)
-}, { immediate: true })
+//渲染完成
+onMounted(() => {
+    getAllPeriod()
+    getMeterPeriod()
+    getStartPeriod()
+})
+
+//获取合同计量期
+const allPeriodData = ref([])
+const getAllPeriod = async () => {
+    const { data } = await mainApi.getAllPeriod({
+        projectId: projectId.value,
+        contractId: contractId.value,
+    })
+    allPeriodData.value = getArrValue(data)
+    formModel.value.contractPeriodId = allPeriodData.value[ allPeriodData.value.length - 1].id
+}
+
+//获取材料计量期
+const meterPeriodData = ref([])
+const getMeterPeriod = async () => {
+    const { data } = await mainApi.getMeterPeriod({
+        projectId: projectId.value,
+        contractId: contractId.value,
+        type: 1,
+    })
+    meterPeriodData.value = getArrValue(data)
+    //formModel.value.materialPeriodIds = meterPeriodData.value[ meterPeriodData.value.length - 1].id
+}
+
+//获取开工计量期
+const startPeriodData = ref([])
+const getStartPeriod = async () => {
+    const { data } = await mainApi.getMeterPeriod({
+        projectId: projectId.value,
+        contractId: contractId.value,
+        type: 2,
+    })
+    startPeriodData.value = getArrValue(data)
+    //formModel.value.startPeriodIds = startPeriodData.value[ startPeriodData.value.length - 1].id
+}
+
 
 //监听
 watch(isShow, (val) => {
@@ -78,7 +123,3 @@ const addModalClose = () => {
     emit('close')
 }
 </script>
-
-<style scoped lang="scss">
-
-</style>

+ 1 - 1
src/views/debit-pay/admin/components/middlepay/detailsModal.vue

@@ -110,7 +110,7 @@ const awayClick = (row) => {
 
 const tableColumn1 = [
     { key: 'index-key', name: '序号', width: 90, align: 'center' },
-    { key: 'key1', name: '凭证编号(暂无此字段)', width: 100, align: 'center' },
+    { key: 'meterNumber', name: '凭证编号', width: 100, align: 'center' },
     { key: 'meterPeriodName', name: '计量期', width: 100, align: 'center' },
     { key: 'engineerDivide', name: '工程部位' },
     { key: 'approveStatusName', name: '审核状态', width: 120, align: 'center' },

+ 0 - 1
src/views/debit-pay/admin/middlepay.vue

@@ -112,7 +112,6 @@ const getKey1Data = async ()=>{
        contractId:contractId.value,
        type:1,
     })
-    tableLoading.value = false
     if (!error && code === 200) {
         key1Data.value = getArrValue(data)
         searchForm.value.contractPeriodId = key1Data.value[ key1Data.value.length - 1].id