关联主合同优化

This commit is contained in:
‘huanghaiixia’
2026-03-11 13:47:57 +08:00
parent 68e301ca25
commit 4f9a410c5c
12 changed files with 124 additions and 199 deletions

View File

@ -12,8 +12,19 @@ enum Api {
queryAllCurrency ='/magic-api/mdm/queryAllCurrency',
queryAllUser ='/magic-api/mdm/queryAllUser',
queryBankByCode ='/magic-api/sales/queryBankByCode',
PageModal ='/magic-api/contract/lngContractFact/page/modal'
PageModal ='/magic-api/contract/lngContractFact/page/modal',
MainContractById = '/magic-api/contract/getMainContractById',
}
export async function getMainContractById(id: String,bizType: String, mode: ErrorMessageMode = 'modal') {
return defHttp.get<LngContractFactPageModel>(
{
url: Api.MainContractById,
params: { id,bizType },
},
{
errorMessageMode: mode,
},
);
}
export async function getLngContractFactPageModal(params: LngContractFactPageParams, mode: ErrorMessageMode = 'modal') {
return defHttp.get<LngContractFactPageResult>(

View File

@ -221,7 +221,7 @@
import { getDictionary } from '/@/api/sales/Customer';
import { useModal } from '/@/components/Modal';
import { addLngContract,updateLngContract, getLngContract,getParameter } from '/@/api/contract/ContractProc';
import { getLngContractFact } from '/@/api/contract/ContractFact';
import { getMainContractById } from '/@/api/contract/ContractFact';
import { getLngAppro,getCompDept } from '/@/api/approve/Appro';
import dayjs from 'dayjs';
import { h } from 'vue';
@ -577,10 +577,10 @@
a.push(v)
}
})
if(a.length == 1) {
if(a.length >= 1) {
spinning.value = true
try {
const res = await getLngContractFact(a[0].kFactId)
const res = await getMainContractById(a[0].kFactId, 'S')
spinning.value = false
formState.kNo = formState.kNo ? formState.kNo : res?.kNo
formState.kName = formState.kName ? formState.kName : res?.kName
@ -588,19 +588,8 @@
formState.curCode = formState.curCode ? formState.curCode : res?.curCode
formState.dateFrom = formState.dateFrom ? formState.dateFrom : (res?.dateFrom ? dayjs(res?.dateFrom) : null)
formState.dateTo = formState.dateTo ? formState.dateTo : (res?.dateTo ? dayjs(res?.dateTo) : null)
let arr = res?.lngContractFactCpList || []
let arrSales = []
let arrSupplier = []
arr.forEach(v=> {
if (v.cpTableName == 'lng_customer') {
arrSales.push(v)
}
if (v.cpTableName == 'lng_supplier') {
arrSupplier.push(v)
}
})
formState.cpName = formState.cpName ? formState.cpName : arrSupplier[0]?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : arrSupplier[0]?.cpCode
formState.cpName = formState.cpName ? formState.cpName : res?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : res?.cpCode
} catch (error) {
spinning.value = false

View File

@ -285,7 +285,7 @@
import { getDictionary } from '/@/api/sales/Customer';
import { useModal } from '/@/components/Modal';
import { addLngContract,updateLngContract, getLngContract, getAllPriceTerm} from '/@/api/contract/ContractPurInt';
import { getLngContractFact } from '/@/api/contract/ContractFact';
import { getMainContractById } from '/@/api/contract/ContractFact';
import { getAllCurrency } from '/@/api/contract/ContractFact';
import { getLngAppro,getCompDept } from '/@/api/approve/Appro';
import dayjs from 'dayjs';
@ -631,10 +631,10 @@
a.push(v)
}
})
if(a.length == 1) {
if(a.length >= 1) {
spinning.value = true
try {
const res = await getLngContractFact(a[0].kFactId)
const res = await getMainContractById(a[0].kFactId, 'S')
spinning.value = false
formState.kNo = formState.kNo ? formState.kNo : res?.kNo
formState.kName = formState.kName ? formState.kName : res?.kName
@ -642,19 +642,8 @@
formState.curCode = formState.curCode ? formState.curCode : res?.curCode
formState.dateFrom = formState.dateFrom ? formState.dateFrom : (res?.dateFrom ? dayjs(res?.dateFrom) : null)
formState.dateTo = formState.dateTo ? formState.dateTo : (res?.dateTo ? dayjs(res?.dateTo) : null)
let arr = res?.lngContractFactCpList || []
let arrSales = []
let arrSupplier = []
arr.forEach(v=> {
if (v.cpTableName == 'lng_customer') {
arrSales.push(v)
}
if (v.cpTableName == 'lng_supplier') {
arrSupplier.push(v)
}
})
formState.cpName = formState.cpName ? formState.cpName : arrSupplier[0]?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : arrSupplier[0]?.cpCode
formState.cpName = formState.cpName ? formState.cpName : res?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : res?.cpCode
} catch (error) {
spinning.value = false

View File

@ -127,7 +127,7 @@
import { getDictionary } from '/@/api/sales/Customer';
import { useModal } from '/@/components/Modal';
import { addLngContract,updateLngContract, getLngContract} from '/@/api/contract/ContractPurLng';
import { getLngContractFact } from '/@/api/contract/ContractFact';
import { getMainContractById } from '/@/api/contract/ContractFact';
import { getAllCurrency } from '/@/api/contract/ContractFact';
import { getLngAppro,getCompDept } from '/@/api/approve/Appro';
import dayjs from 'dayjs';
@ -394,10 +394,10 @@
a.push(v)
}
})
if(a.length == 1) {
if(a.length >= 1) {
spinning.value = true
try {
const res = await getLngContractFact(a[0].kFactId)
const res = await getMainContractById(a[0].kFactId, 'S')
spinning.value = false
formState.kNo = formState.kNo ? formState.kNo : res?.kNo
formState.kName = formState.kName ? formState.kName : res?.kName
@ -405,19 +405,8 @@
formState.curCode = formState.curCode ? formState.curCode : res?.curCode
formState.dateFrom = formState.dateFrom ? formState.dateFrom : (res?.dateFrom ? dayjs(res?.dateFrom) : null)
formState.dateTo = formState.dateTo ? formState.dateTo : (res?.dateTo ? dayjs(res?.dateTo) : null)
let arr = res?.lngContractFactCpList || []
let arrSales = []
let arrSupplier = []
arr.forEach(v=> {
if (v.cpTableName == 'lng_customer') {
arrSales.push(v)
}
if (v.cpTableName == 'lng_supplier') {
arrSupplier.push(v)
}
})
formState.cpName = formState.cpName ? formState.cpName : arrSupplier[0]?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : arrSupplier[0]?.cpCode
formState.cpName = formState.cpName ? formState.cpName : res?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : res?.cpCode
} catch (error) {
spinning.value = false

View File

@ -187,7 +187,7 @@
import { getDictionary } from '/@/api/sales/Customer';
import { useModal } from '/@/components/Modal';
import { addLngContract,updateLngContract, getLngContract } from '/@/api/contract/ContractPurPng';
import { getLngContractFact } from '/@/api/contract/ContractFact';
import { getMainContractById } from '/@/api/contract/ContractFact';
import { getLngAppro,getCompDept } from '/@/api/approve/Appro';
import dayjs from 'dayjs';
import { h } from 'vue';
@ -526,29 +526,18 @@
a.push(v)
}
})
if(a.length == 1) {
if(a.length >= 1) {
spinning.value = true
try {
const res = await getLngContractFact(a[0].id || a[0].idNew)
const res = await getMainContractById(a[0].id || a[0].idNew, 'S')
spinning.value = false
formState.kNo = formState.kNo ? formState.kNo : res?.kNo
formState.kName = formState.kName ? formState.kName : res?.kName
formState.kPeriod = formState.kPeriod ? formState.kPeriod : res?.periodTypeCode
formState.dateFrom = formState.dateFrom ? formState.dateFrom : (res?.dateFrom ? dayjs(res?.dateFrom) : null)
formState.dateTo = formState.dateTo ? formState.dateTo : (res?.dateTo ? dayjs(res?.dateTo) : null)
let arr = res?.lngContractFactCpList || []
let arrSales = []
let arrSupplier = []
arr.forEach(v=> {
if (v.cpTableName == 'lng_customer') {
arrSales.push(v)
}
if (v.cpTableName == 'lng_supplier') {
arrSupplier.push(v)
}
})
formState.cpName = formState.cpName ? formState.cpName : arrSupplier[0]?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : arrSupplier[0]?.cpCode
formState.cpName = formState.cpName ? formState.cpName : res?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : res?.cpCode
} catch (error) {
spinning.value = false

View File

@ -189,7 +189,7 @@
import { getDictionary } from '/@/api/sales/Customer';
import { useModal } from '/@/components/Modal';
import { addLngContract,updateLngContract, getLngContract, getTransList, getPurList } from '/@/api/contract/ContractSales';
import { getLngContractFact } from '/@/api/contract/ContractFact';
import { getMainContractById } from '/@/api/contract/ContractFact';
import { getLngAppro,getCompDept } from '/@/api/approve/Appro';
import dayjs from 'dayjs';
import { getAppEnvConfig } from '/@/utils/env';
@ -557,29 +557,18 @@
a.push(v)
}
})
if(a.length == 1) {
if(a.length >= 1) {
spinning.value = true
try {
const res = await getLngContractFact(a[0].kFactId)
const res = await getMainContractById(a[0].kFactId, 'C')
spinning.value = false
formState.kNo = formState.kNo ? formState.kNo : res?.kNo
formState.kName = formState.kName ? formState.kName : res?.kName
formState.kPeriod = formState.kPeriod ? formState.kPeriod : res?.periodTypeCode
formState.dateFrom = formState.dateFrom ? formState.dateFrom : (res?.dateFrom ? dayjs(res?.dateFrom) : null)
formState.dateTo = formState.dateTo ? formState.dateTo : (res?.dateTo ? dayjs(res?.dateTo) : null)
let arr = res?.lngContractFactCpList || []
let arrSales = []
let arrSupplier = []
arr.forEach(v=> {
if (v.cpTableName == 'lng_customer') {
arrSales.push(v)
}
if (v.cpTableName == 'lng_supplier') {
arrSupplier.push(v)
}
})
formState.cpName = formState.cpName ? formState.cpName : arrSales[0]?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : arrSales[0]?.cpCode
formState.cpName = formState.cpName ? formState.cpName : res?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : res?.cpCode
} catch (error) {
spinning.value = false

View File

@ -286,7 +286,7 @@
import { useModal } from '/@/components/Modal';
import {getAllPriceTerm} from '/@/api/contract/ContractPurInt';
import { addLngContract,updateLngContract, getLngContract} from '/@/api/contract/ContractSalesInt';
import { getLngContractFact } from '/@/api/contract/ContractFact';
import { getMainContractById } from '/@/api/contract/ContractFact';
import { getAllCurrency } from '/@/api/contract/ContractFact';
import { getLngAppro,getCompDept } from '/@/api/approve/Appro';
import dayjs from 'dayjs';
@ -633,10 +633,10 @@
a.push(v)
}
})
if(a.length == 1) {
if(a.length >= 1) {
spinning.value = true
try {
const res = await getLngContractFact(a[0].kFactId)
const res = await getMainContractById(a[0].kFactId, 'C')
spinning.value = false
formState.kNo = formState.kNo ? formState.kNo : res?.kNo
formState.kName = formState.kName ? formState.kName : res?.kName
@ -644,19 +644,8 @@
formState.curCode = formState.curCode ? formState.curCode : res?.curCode
formState.dateFrom = formState.dateFrom ? formState.dateFrom : (res?.dateFrom ? dayjs(res?.dateFrom) : null)
formState.dateTo = formState.dateTo ? formState.dateTo : (res?.dateTo ? dayjs(res?.dateTo) : null)
let arr = res?.lngContractFactCpList || []
let arrSales = []
let arrSupplier = []
arr.forEach(v=> {
if (v.cpTableName == 'lng_customer') {
arrSales.push(v)
}
if (v.cpTableName == 'lng_supplier') {
arrSupplier.push(v)
}
})
formState.cpName = formState.cpName ? formState.cpName : arrSales[0]?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : arrSales[0]?.cpCode
formState.cpName = formState.cpName ? formState.cpName : res?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : res?.cpCode
} catch (error) {
spinning.value = false

View File

@ -164,7 +164,7 @@
import { getDictionary } from '/@/api/sales/Customer';
import { useModal } from '/@/components/Modal';
import { addLngContract,updateLngContract, getLngContract, getTransList, getPurList } from '/@/api/contract/ContractSalesLng';
import { getLngContractFact } from '/@/api/contract/ContractFact';
import { getMainContractById } from '/@/api/contract/ContractFact';
import { getLngAppro,getCompDept } from '/@/api/approve/Appro';
import dayjs from 'dayjs';
import { getAppEnvConfig } from '/@/utils/env';
@ -482,29 +482,18 @@
a.push(v)
}
})
if(a.length == 1) {
if(a.length >= 1) {
spinning.value = true
try {
const res = await getLngContractFact(a[0].id || a[0].idNew)
const res = await getMainContractById(a[0].id || a[0].idNew, 'C')
spinning.value = false
formState.kNo = formState.kNo ? formState.kNo : res?.kNo
formState.kName = formState.kName ? formState.kName : res?.kName
formState.kPeriod = formState.kPeriod ? formState.kPeriod : res?.periodTypeCode
formState.dateFrom = formState.dateFrom ? formState.dateFrom : (res?.dateFrom ? dayjs(res?.dateFrom) : null)
formState.dateTo = formState.dateTo ? formState.dateTo : (res?.dateTo ? dayjs(res?.dateTo) : null)
let arr = res?.lngContractFactCpList || []
let arrSales = []
let arrSupplier = []
arr.forEach(v=> {
if (v.cpTableName == 'lng_customer') {
arrSales.push(v)
}
if (v.cpTableName == 'lng_supplier') {
arrSupplier.push(v)
}
})
formState.cpName = formState.cpName ? formState.cpName : arrSales[0]?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : arrSales[0]?.cpCode
formState.cpName = formState.cpName ? formState.cpName : res?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : res?.cpCode
} catch (error) {
spinning.value = false

View File

@ -225,7 +225,7 @@
import { getDictionary } from '/@/api/sales/Customer';
import { useModal } from '/@/components/Modal';
import { addLngContract,updateLngContract, getLngContract } from '/@/api/contract/ContractTransPng';
import { getLngContractFact } from '/@/api/contract/ContractFact';
import { getMainContractById } from '/@/api/contract/ContractFact';
import { getLngAppro,getCompDept } from '/@/api/approve/Appro';
import dayjs from 'dayjs';
import { h } from 'vue';
@ -595,10 +595,10 @@
a.push(v)
}
})
if(a.length == 1) {
if(a.length >= 1) {
spinning.value = true
try {
const res = await getLngContractFact(a[0].kFactId)
const res = await getMainContractById(a[0].kFactId, 'S')
spinning.value = false
formState.kNo = formState.kNo ? formState.kNo : res?.kNo
formState.kName = formState.kName ? formState.kName : res?.kName
@ -606,19 +606,8 @@
formState.curCode = formState.curCode ? formState.curCode : res?.curCode
formState.dateFrom = formState.dateFrom ? formState.dateFrom : (res?.dateFrom ? dayjs(res?.dateFrom) : null)
formState.dateTo = formState.dateTo ? formState.dateTo : (res?.dateTo ? dayjs(res?.dateTo) : null)
let arr = res?.lngContractFactCpList || []
let arrSales = []
let arrSupplier = []
arr.forEach(v=> {
if (v.cpTableName == 'lng_customer') {
arrSales.push(v)
}
if (v.cpTableName == 'lng_supplier') {
arrSupplier.push(v)
}
})
formState.cpName = formState.cpName ? formState.cpName : arrSupplier[0]?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : arrSupplier[0]?.cpCode
formState.cpName = formState.cpName ? formState.cpName : res?.cpName
formState.cpCode = formState.cpCode ? formState.cpCode : res?.cpCode
} catch (error) {
spinning.value = false

View File

@ -1,16 +1,8 @@
<template>
<BasicModal v-bind="$attrs" @register="registerModal" width="85%" :title="getTitle" @ok="handleSubmit" @visible-change="handleVisibleChange">
<a-spin :spinning="spinning" tip="加载中...">
<div class="page-bg-wrap formViewStyle pdcss">
<div class="top-toolbar">
<a-button style="margin-right: 10px" @click="close">
<slot name="icon"><close-outlined /></slot>取消
</a-button>
<a-button style="margin-right: 10px" type="primary" @click="checkBtn">
<slot name="icon"><save-outlined /></slot>保存
</a-button>
</div>
<searchForm @search="onSearch" @reset="onReset" ></searchForm>
<BasicTable @register="registerTable">
<BasicTable @register="registerTable" v-if="showTable">
<template #bodyCell="{ column, record }">
<template v-if="column.dataIndex === 'qtySalesGj'">
{{ Number.format(Number.parse(record.qtySalesGj),numFormat) }}
@ -26,19 +18,21 @@
</template>
</template>
</BasicTable>
</div>
</a-spin>
</BasicModal>
</template>
<script lang="ts" setup>
import { useRouter } from 'vue-router';
import { ref, computed, onMounted, onBeforeMount, nextTick, defineAsyncComponent, reactive, defineComponent, watch} from 'vue';
import { ref, computed, unref, nextTick } from 'vue';
import { SaveOutlined, } from '@ant-design/icons-vue';
import { useMessage } from '/@/hooks/web/useMessage';
import { useI18n } from '/@/hooks/web/useI18n';
import { useMultipleTabStore } from '/@/store/modules/multipleTab';
import useEventBus from '/@/hooks/event/useEventBus';
import { useModal } from '/@/components/Modal';
import { BasicModal, useModalInner, useModal } from '/@/components/Modal';
import dayjs from 'dayjs';
import { message } from 'ant-design-vue';
import { useUserStore } from '/@/store/modules/user';
@ -60,17 +54,19 @@
const spinning = ref(false);
const { t } = useI18n();
const formState = ref({});
const [register, { openModal:openModal}] = useModal();
onMounted(() => {
const isUpdate = ref(true);
const showTable = ref(false)
const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
showTable.value = true
setModalProps({ confirmLoading: false });
setPagination({'limit': 1,'size': 10,'page': 1});
isUpdate.value = !!data?.isUpdate;
});
const emit = defineEmits(['success', 'register']);
const { notification } = useMessage();
const selectedKeys = ref<string[]>([]);
const selectedValues = ref([]);
const [registerTable, { reload }] = useTable({
const [registerTable, { reload,setPagination }] = useTable({
title: t('管道气计量新增列表'),
api: getLngPngMeasureSalesPurPageAdd,
columns: columns,
@ -83,15 +79,28 @@
showResetButton: false,
showSubmitButton: false
},
immediate: true,
immediate: false,
beforeFetch: (params) => {
return { ...params,...formState.value};
return { ...params,...formState.value,page:params.limit};
},
rowSelection: {
type: 'checkbox',
onChange: onSelectChange
},
});
const getTitle = computed(() => (!unref(isUpdate) ? t('管道气计量新增列表') : t('')));
const handleVisibleChange = async (visible: boolean) => {
if (visible) {
showTable.value = false
await nextTick();
await nextTick();
await nextTick();
nextTick(() => {
reload({searchInfo:{'limit':1,'size':10,'page':1}});
});
}
};
function onSelectChange(rowKeys: string[], e) {
selectedKeys.value = rowKeys;
selectedValues.value = e
@ -107,7 +116,7 @@
function close() {
tabStore.closeTab(currentRoute.value, router);
}
async function checkBtn() {
async function handleSubmit() {
if (!selectedValues.value.length) {
message.warn('请选择数据')
return
@ -121,10 +130,8 @@
message: 'Tip',
description: '保存成功'
});
setTimeout(() => {
bus.emit(FORM_LIST_MODIFIED, {});
close();
}, 500);
closeModal();
emit('success', selectedValues.value);
}catch (errorInfo) {
spinning.value = false;
}
@ -133,18 +140,6 @@
</script>
<style lang="less" scoped>
.page-bg-wrap {
background-color: #fff;
}
.top-toolbar {
min-height: 44px;
margin-bottom: 12px;
border-bottom: 1px solid #eee;
}
.pdcss {
padding:0px 12px 6px 12px !important;
}
:deep(.ant-table-title) {
display: none !important;
}

View File

@ -3,7 +3,7 @@
<a-row>
<a-col :span="6">
<a-form-item label="计量日期" name="dateMea" >
<a-range-picker v-model:value="formState.dateMea" />
<RangePicker v-model:value="formState.dateMea" />
</a-form-item>
</a-col>
<a-col :span="7">
@ -61,6 +61,7 @@
<script lang="ts" setup>
import { useRouter } from 'vue-router';
import { RangePicker } from '/@/components/RangePicker';
import { ref, computed, onMounted, onBeforeMount, nextTick, defineAsyncComponent, reactive, defineComponent, watch} from 'vue';
import { useMessage } from '/@/hooks/web/useMessage';
import { useI18n } from '/@/hooks/web/useI18n';

View File

@ -54,6 +54,7 @@
</BasicTable>
<PngMeasureSalesPurModal @register="registerModal" @success="handleSuccess" />
<createFormModal @register="registerModalForm" @success="handleSuccessForm"/>
<ImportModal @register="registerImportModal" importUrl="/dayPlan/pngMeasureSalesPur/import" @success="handleImportSuccess"/>
<DataLog :logId="logId" :logPath="logPath" v-model:visible="modalVisible"/>
@ -93,6 +94,7 @@
import { DeleteOutlined } from '@ant-design/icons-vue';
import searchForm from './components/searchForm.vue'
import NP from 'number-precision';
import createFormModal from './components/createForm.vue'
const { bus, CREATE_FLOW, FLOW_PROCESSED, FORM_LIST_MODIFIED } = useEventBus();
const numFormat = "###,###,###,###,###,###.000"
@ -160,6 +162,7 @@
const curIdx = ref()
const [registerModal, { openModal }] = useModal();
const [registerModalForm, { openModal: openModalForm }] = useModal();
const [registerImportModal, { openModal: openImportModal }] = useModal();
const tableId = '';
const tableName = 'PngMeasureSalesPur';
@ -218,21 +221,24 @@
downloadByUrl({ url, fileName: fileName});
};
const numChange = (record, index) => {
record.rateM3Gj = Number(record.qtyMeaGj) ? (Number(record.qtyMeaM3) || 0 ) / Number(record.qtyMeaGj) : '0'
record.rateM3Gj = record.rateM3Gj.toFixed(6)
record.rateM3Gj = Number(record.qtyMeaGj) ? (Number(record.qtyMeaM3) || 0 ) / Number(record.qtyMeaGj) : 0
record.rateM3Gj = record.rateM3Gj ? Number(record.rateM3Gj).toFixed(6) : 0
tableData.value[index] = record
}
function handleAdd() {
router.push({
path: '/dayPlan/PngMeasureSalesPur/createForm',
query: {
formPath: 'dayPlan/PngMeasureSalesPur',
formName: "新建"+formName,
formId:currentRoute.value.meta.formId,
type:'add'
const handleSuccessForm = (val) => {
handleSuccess()
}
});
function handleAdd() {
openModalForm(true,{isUpdate: false});
// router.push({
// path: '/dayPlan/PngMeasureSalesPur/createForm',
// query: {
// formPath: 'dayPlan/PngMeasureSalesPur',
// formName: "新建"+formName,
// formId:currentRoute.value.meta.formId,
// type:'add'
// }
// });
}
async function handleReject() {