|
@@ -3,7 +3,7 @@
|
|
|
<div class="relative h-full flex">
|
|
|
<div :id="`hc_tree_card_${uuid}`" class="hc_tree_card_border relative">
|
|
|
<hc-body scrollbar padding="0px">
|
|
|
- <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
|
|
|
+ <hc-lazy-tree :h-props="treeProps" tree-key="id" :auto-expand-keys="treeAutoExpandKeys" @load="treeLoadNode" @nodeTap="treeNodeTap" />
|
|
|
</hc-body>
|
|
|
</div>
|
|
|
<div :id="`hc_table_card_${uuid}`" class="relative flex-1">
|
|
@@ -14,57 +14,59 @@
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="计量期:">
|
|
|
- <el-input v-model="baseForm.key1" disabled />
|
|
|
+ <el-select v-model="baseForm.contractPeriodId" placeholder="选择计量期" filterable block @change="periodChange">
|
|
|
+ <el-option v-for="item in period" :key="item.id" :label="item.periodName" :value="item.id" />
|
|
|
+ </el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="计量单编号:">
|
|
|
- <el-input v-model="baseForm.key2" disabled />
|
|
|
+ <el-input v-model="baseForm.meterNumber" disabled />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="业务日期:">
|
|
|
- <el-date-picker v-model="baseForm.key3" class="block" format="YYYY-MM-DD" type="date" value-format="YYYY-MM-DD" disabled />
|
|
|
+ <el-date-picker v-model="baseForm.businessDate" class="block" format="YYYY-MM-DD" type="date" value-format="YYYY-MM-DD" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="16">
|
|
|
<el-form-item label="工程划分:">
|
|
|
- <el-input v-model="baseForm.key4" disabled />
|
|
|
+ <el-input v-model="baseForm.engineerDivide" disabled />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="部位名称:">
|
|
|
- <el-input v-model="baseForm.key5" />
|
|
|
+ <el-input v-model="baseForm.partName" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="交工证书编号:">
|
|
|
- <el-input v-model="baseForm.key7" />
|
|
|
+ <el-input v-model="baseForm.certificateNumber" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="计量金额:">
|
|
|
- <el-input v-model="baseForm.key6" disabled />
|
|
|
+ <el-input v-model="baseForm.meterMoney" disabled />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="变更令:">
|
|
|
- <el-input v-model="baseForm.key6" disabled />
|
|
|
+ <el-input v-model="baseForm.kchangeTokenNumberey6" disabled />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="8">
|
|
|
<el-form-item label="收方单:">
|
|
|
- <el-input v-model="baseForm.key6" disabled />
|
|
|
+ <el-input v-model="baseForm.debitFormId" disabled />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="16">
|
|
|
<el-form-item label="草图文件:">
|
|
|
- <hc-form-upload :src="baseForm.key9" />
|
|
|
+ <hc-form-upload :src="baseForm.pictureUrl" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="24">
|
|
|
<el-form-item label="计算式:">
|
|
|
- <el-input v-model="baseForm.key10" :autosize="{ minRows: 4, maxRows: 8 }" type="textarea" />
|
|
|
+ <el-input v-model="baseForm.calculateFormula" :autosize="{ minRows: 4, maxRows: 8 }" type="textarea" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
@@ -83,23 +85,23 @@
|
|
|
</el-button>
|
|
|
</template>
|
|
|
<hc-table is-new :index-style="{ width: 60 }" :column="addTableColumn" :datas="addTableData">
|
|
|
- <template #key3="{ row }">
|
|
|
- <hc-table-input v-model="row.key3" disabled />
|
|
|
+ <template #currentPrice="{ row }">
|
|
|
+ <hc-table-input v-model="row.currentPrice" disabled />
|
|
|
</template>
|
|
|
- <template #key5="{ row }">
|
|
|
- <hc-table-input v-model="row.key5" disabled />
|
|
|
+ <template #changeTotal="{ row }">
|
|
|
+ <hc-table-input v-model="row.changeTotal" disabled />
|
|
|
</template>
|
|
|
- <template #key6="{ row }">
|
|
|
- <hc-table-input v-model="row.key6" />
|
|
|
+ <template #currentMeterTotal="{ row }">
|
|
|
+ <hc-table-input v-model="row.currentMeterTotal" />
|
|
|
</template>
|
|
|
- <template #key7="{ row }">
|
|
|
- <hc-table-input v-model="row.key7" />
|
|
|
+ <template #containChangeTotal="{ row }">
|
|
|
+ <hc-table-input v-model="row.containChangeTotal" />
|
|
|
</template>
|
|
|
- <template #key8="{ row }">
|
|
|
- <hc-table-input v-model="row.key8" disabled />
|
|
|
+ <template #currentMeterMoney="{ row }">
|
|
|
+ <hc-table-input v-model="row.currentMeterMoney" disabled />
|
|
|
</template>
|
|
|
- <template #key9="{ row }">
|
|
|
- <hc-table-input v-model="row.key9" disabled />
|
|
|
+ <template #allMeterTotal="{ row }">
|
|
|
+ <hc-table-input v-model="row.allMeterTotal" disabled />
|
|
|
</template>
|
|
|
<template #action="{ row }">
|
|
|
<el-link type="danger">删除</el-link>
|
|
@@ -123,16 +125,7 @@
|
|
|
</hc-new-dialog>
|
|
|
|
|
|
<!-- 添加分解清单 -->
|
|
|
- <HcBillBaseModal v-model="addBillBaseModalShow" />
|
|
|
-
|
|
|
- <!-- 关联变更令 -->
|
|
|
- <HcLinkAlterModal v-model="linkAlterModal" />
|
|
|
-
|
|
|
- <!-- 关联收方单 -->
|
|
|
- <HcLinkDebitModal v-model="linkDebitModal" />
|
|
|
-
|
|
|
- <!-- 关联质保资料 -->
|
|
|
- <HcLinkWarranty v-model="linkWarrantyModal" />
|
|
|
+ <HcBillBaseModal v-model="addBillBaseModalShow" :ids="billBaseIds" />
|
|
|
|
|
|
<!-- 文件上传组件 -->
|
|
|
<hc-upload-file ref="HcUploadFileRef" />
|
|
@@ -140,13 +133,34 @@
|
|
|
|
|
|
<script setup>
|
|
|
import { nextTick, ref, watch } from 'vue'
|
|
|
-import HcBillBaseModal from '../addBillBaseModal.vue'
|
|
|
-import HcLinkAlterModal from './linkAlterModal.vue'
|
|
|
-import HcLinkDebitModal from './linkDebitModal.vue'
|
|
|
-import HcLinkWarranty from './linkWarranty.vue'
|
|
|
-import { getRandom } from 'js-fast-way'
|
|
|
+import { getStoreValue } from '~src/utils/storage'
|
|
|
+import HcBillBaseModal from './addBillBaseModal.vue'
|
|
|
+import { arrToId, getArrValue, getObjValue, getRandom } from 'js-fast-way'
|
|
|
+
|
|
|
+import unitApi from '~api/project/debit/contract/unit'
|
|
|
+import mainApi from '~api/debit-pay/admin/middlepay'
|
|
|
|
|
|
const props = defineProps({
|
|
|
+ type: {
|
|
|
+ type: String,
|
|
|
+ default: 'add',
|
|
|
+ },
|
|
|
+ projectId: {
|
|
|
+ type: [String, Number],
|
|
|
+ default: '',
|
|
|
+ },
|
|
|
+ contractId: {
|
|
|
+ type: [String, Number],
|
|
|
+ default: '',
|
|
|
+ },
|
|
|
+ allPeriods: {
|
|
|
+ type: Array,
|
|
|
+ default: () => ([]),
|
|
|
+ },
|
|
|
+ periodId: {
|
|
|
+ type: [String, Number],
|
|
|
+ default: '',
|
|
|
+ },
|
|
|
ids: {
|
|
|
type: [String, Number],
|
|
|
default: '',
|
|
@@ -157,6 +171,12 @@ const props = defineProps({
|
|
|
const emit = defineEmits(['finish', 'close'])
|
|
|
|
|
|
const uuid = getRandom(4)
|
|
|
+const dataId = ref(props.ids)
|
|
|
+const dataType = ref(props.type)
|
|
|
+const period = ref(props.allPeriods)
|
|
|
+const period_id = ref(props.periodId)
|
|
|
+const pid = ref(props.projectId)
|
|
|
+const cid = ref(props.contractId)
|
|
|
|
|
|
//双向绑定
|
|
|
// eslint-disable-next-line no-undef
|
|
@@ -167,14 +187,26 @@ const isShow = defineModel('modelValue', {
|
|
|
//监听
|
|
|
watch(() => [
|
|
|
props.ids,
|
|
|
-], ([ids]) => {
|
|
|
- console.log('ids', ids)
|
|
|
-}, { immediate: true })
|
|
|
+ props.type,
|
|
|
+ props.projectId,
|
|
|
+ props.contractId,
|
|
|
+ props.allPeriods,
|
|
|
+ props.periodId,
|
|
|
+], ([id, type, projectId, contractId, periods, periodId]) => {
|
|
|
+ dataId.value = id
|
|
|
+ dataType.value = type
|
|
|
+ period.value = periods
|
|
|
+ pid.value = projectId
|
|
|
+ cid.value = contractId
|
|
|
+ period_id.value = periodId
|
|
|
+ setBasePeriodForm(periodId)
|
|
|
+}, { deep: true })
|
|
|
|
|
|
//监听
|
|
|
watch(isShow, (val) => {
|
|
|
if (val) {
|
|
|
setSplitRef()
|
|
|
+ setBasePeriodForm(period_id.value)
|
|
|
}
|
|
|
})
|
|
|
|
|
@@ -190,9 +222,6 @@ const setSplitRef = () => {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
-//文件上传
|
|
|
-const HcUploadFileRef = ref(null)
|
|
|
-
|
|
|
//基础表单
|
|
|
const baseFormRef = ref(null)
|
|
|
const baseForm = ref({})
|
|
@@ -200,68 +229,88 @@ const baseFormRules = {}
|
|
|
|
|
|
//数据格式
|
|
|
const treeProps = {
|
|
|
- label: 'name',
|
|
|
+ label: 'nodeName',
|
|
|
children: 'children',
|
|
|
- isLeaf: 'leaf',
|
|
|
+ isLeaf: 'notExsitChild',
|
|
|
}
|
|
|
|
|
|
//懒加载的数据
|
|
|
-const treeLoadNode = ({ level }, resolve) => {
|
|
|
- if (level === 0) {
|
|
|
- return resolve([{ name: 'region' }])
|
|
|
- }
|
|
|
- if (level > 3) {
|
|
|
- return resolve([])
|
|
|
+const treeAutoExpandKeys = ref(getStoreValue('middlepay-tree-auto-expand-keys') || [])
|
|
|
+const treeLoadNode = async ({ item, level }, resolve) => {
|
|
|
+ let id = 0
|
|
|
+ if (level !== 0) {
|
|
|
+ const nodeData = getObjValue(item)
|
|
|
+ id = nodeData?.id || ''
|
|
|
}
|
|
|
- setTimeout(() => {
|
|
|
- resolve([
|
|
|
- { name: 'leaf', leaf: true },
|
|
|
- { name: 'zone' },
|
|
|
- ])
|
|
|
- }, 500)
|
|
|
+ //获取数据
|
|
|
+ const { data } = await unitApi.lazyTree({
|
|
|
+ id: id,
|
|
|
+ contractId: cid.value,
|
|
|
+ contractPeriodId: period_id.value,
|
|
|
+ })
|
|
|
+ resolve(getArrValue(data))
|
|
|
}
|
|
|
|
|
|
-//收方清单列表
|
|
|
-const addTableColumn = ref([
|
|
|
- { key: 'key1', name: '清单编号', width: '120' },
|
|
|
- { key: 'key2', name: '清单名称', minWidth: '280' },
|
|
|
- { key: 'key3', name: '单价(元)', width: '100' },
|
|
|
- { key: 'key4', name: '分解数量', width: '100' },
|
|
|
- { key: 'key5', name: '变更后数量', width: '100' },
|
|
|
- { key: 'key6', name: '本期计量数量', width: '140' },
|
|
|
- { key: 'key7', name: '含变更数量', width: '100' },
|
|
|
- { key: 'key8', name: '本期计量金额', width: '120' },
|
|
|
- { key: 'key9', name: '累计计量量', width: '100' },
|
|
|
- { key: 'action', name: '操作', fixed: 'right', width: 80, align: 'center' },
|
|
|
-])
|
|
|
-const addTableData = ref([
|
|
|
- { key1: '101-1-a', key2: '按合同条款规定,提供建筑工程一切险' },
|
|
|
-])
|
|
|
+const treeNodeTap = ({ data }) => {
|
|
|
+ baseForm.value.contractUnitId = data.id
|
|
|
+ getNodeDivide(data.id)
|
|
|
+ getNodeToken(data.id)
|
|
|
+}
|
|
|
+
|
|
|
+//获取工程划分
|
|
|
+const getNodeDivide = async (nodeId) => {
|
|
|
+ const { data } = await mainApi.getNodeDivide({ nodeId: nodeId })
|
|
|
+ baseForm.value.engineerDivide = data ?? ''
|
|
|
+}
|
|
|
|
|
|
-//关联变更令
|
|
|
-const linkAlterModal = ref(false)
|
|
|
-const linkAlterClick = () => {
|
|
|
- linkAlterModal.value = true
|
|
|
+//获取变更令
|
|
|
+const getNodeToken = async (nodeId) => {
|
|
|
+ const { data } = await mainApi.getNodeToken({ nodeId: nodeId })
|
|
|
+ //baseForm.value.engineerDivide = data ?? ''
|
|
|
+ console.log(data)
|
|
|
}
|
|
|
|
|
|
-//关联质保资料
|
|
|
-const linkWarrantyModal = ref(false)
|
|
|
-const linkWarrantyClick = () => {
|
|
|
- linkWarrantyModal.value = true
|
|
|
+//计量期被改变
|
|
|
+const periodChange = () => {
|
|
|
+ setBasePeriodForm(baseForm.value.contractPeriodId)
|
|
|
}
|
|
|
|
|
|
-//关联收方单
|
|
|
-const linkDebitModal = ref(false)
|
|
|
-const linkDebitClick = () => {
|
|
|
- linkDebitModal.value = true
|
|
|
+//计量期相关的数据
|
|
|
+const setBasePeriodForm = (periodId) => {
|
|
|
+ const periods = period.value
|
|
|
+ baseForm.value.contractPeriodId = periodId
|
|
|
+ const periodData = periods.find((item) => item.id === periodId)
|
|
|
+ baseForm.value.meterNumber = ''
|
|
|
+ baseForm.value.businessDate = periodData.endDate ?? null
|
|
|
}
|
|
|
|
|
|
+//收方清单列表
|
|
|
+const addTableColumn = ref([
|
|
|
+ { key: 'formNumber', name: '清单编号', width: '120' },
|
|
|
+ { key: 'formName', name: '清单名称', minWidth: '280' },
|
|
|
+ { key: 'currentPrice', name: '单价(元)', width: '100' },
|
|
|
+ { key: 'resolveTotal', name: '分解数量', width: '100' },
|
|
|
+ { key: 'changeTotal', name: '变更后数量', width: '100' },
|
|
|
+ { key: 'currentMeterTotal', name: '本期计量数量', width: '140' },
|
|
|
+ { key: 'containChangeTotal', name: '含变更数量', width: '100' },
|
|
|
+ { key: 'currentMeterMoney', name: '本期计量金额', width: '120' },
|
|
|
+ { key: 'allMeterTotal', name: '累计计量量', width: '100' },
|
|
|
+ { key: 'action', name: '操作', fixed: 'right', width: 80, align: 'center' },
|
|
|
+])
|
|
|
+const addTableData = ref([])
|
|
|
+
|
|
|
//添加分解单
|
|
|
const addBillBaseModalShow = ref(false)
|
|
|
+const billBaseIds = ref('')
|
|
|
const addBillBaseModalClick = () => {
|
|
|
addBillBaseModalShow.value = true
|
|
|
+ billBaseIds.value = arrToId(addTableData.value)
|
|
|
}
|
|
|
|
|
|
+//文件上传
|
|
|
+const HcUploadFileRef = ref(null)
|
|
|
+
|
|
|
+
|
|
|
const addModalSave = () => {
|
|
|
emit('finish')
|
|
|
addModalClose()
|