diff --git a/src/api/plan/PlanYearDemandHdr/index.ts b/src/api/plan/PlanYearDemandHdr/index.ts index f702471..df8ef6b 100644 --- a/src/api/plan/PlanYearDemandHdr/index.ts +++ b/src/api/plan/PlanYearDemandHdr/index.ts @@ -3,7 +3,8 @@ import { defHttp } from '/@/utils/http/axios'; import { ErrorMessageMode } from '/#/axios'; enum Api { - Page = '/plan/planYearDemandHdr/page', + // Page = '/plan/planYearDemandHdr/page', + Page = '/magic-api/plan/planYearDemandHdrPageList', List = '/plan/planYearDemandHdr/list', Info = '/plan/planYearDemandHdr/info', LngPlanYearDemandHdr = '/plan/planYearDemandHdr', diff --git a/src/api/plan/PlanYearDemandHdrEc/index.ts b/src/api/plan/PlanYearDemandHdrEc/index.ts index 4bfad2e..d74a2d3 100644 --- a/src/api/plan/PlanYearDemandHdrEc/index.ts +++ b/src/api/plan/PlanYearDemandHdrEc/index.ts @@ -3,17 +3,65 @@ import { defHttp } from '/@/utils/http/axios'; import { ErrorMessageMode } from '/#/axios'; enum Api { - Page = '/plan/planYearDemandHdrEc/page', + // Page = '/plan/planYearDemandHdrEc/page', + Page = '/magic-api/plan/planYearDemandHdrEcPageList', List = '/plan/planYearDemandHdrEc/list', Info = '/plan/planYearDemandHdrEc/info', + yearTip ='/magic-api/plan/planYearDemandHdrSelectDate', LngPlanYearDemandHdr = '/plan/planYearDemandHdrEc', + save = '/plan/planYearDemandHdrEc/save', + saveAndSubmit = '/plan/planYearDemandHdrEc/saveAndSubmit', + toChange = '/plan/planYearDemandHdrEc/toChange', Export = '/plan/planYearDemandHdrEc/export', } - +export async function getUpdateLngPlanYearDemandHdr(id: String, mode: ErrorMessageMode = 'modal') { + return defHttp.get( + { + url: Api.toChange, + params: { id }, + }, + { + errorMessageMode: mode, + }, + ); +} +export async function saveAndSubmitLngPlanYearDemandHdr(lngPlanYearDemandHdr: Recordable, mode: ErrorMessageMode = 'modal') { + return defHttp.post( + { + url: Api.saveAndSubmit, + params: lngPlanYearDemandHdr, + }, + { + errorMessageMode: mode, + }, + ); +} +export async function saveLngPlanYearDemandHdr(lngPlanYearDemandHdr: Recordable, mode: ErrorMessageMode = 'modal') { + return defHttp.post( + { + url: Api.save, + params: lngPlanYearDemandHdr, + }, + { + errorMessageMode: mode, + }, + ); +} +export async function getPlanYearTip( mode: ErrorMessageMode = 'modal') { + return defHttp.get( + { + url: Api.yearTip, + + }, + { + errorMessageMode: mode, + }, + ); +} /** * @description: 查询LngPlanYearDemandHdr分页列表 */ diff --git a/src/router/routes/basic.ts b/src/router/routes/basic.ts index 1f8418f..bc9cabb 100644 --- a/src/router/routes/basic.ts +++ b/src/router/routes/basic.ts @@ -414,6 +414,14 @@ export const PAGE_CUSTOM_ROUTE: AppRouteRecordRaw[] = [{ title: (route) => (route.query.formName) } }, + { + path: '/plan/PlanYearDemandHdr/createForm', + name: 'PlanYearDemandHdr', + component: () => import('/@/views/plan/PlanYearDemandHdr/components/createForm.vue'), + meta: { + title: (route) => (route.query.formName) + } + }, ] diff --git a/src/views/plan/PlanYearDemandHdr/components/createForm.vue b/src/views/plan/PlanYearDemandHdr/components/createForm.vue new file mode 100644 index 0000000..bead24c --- /dev/null +++ b/src/views/plan/PlanYearDemandHdr/components/createForm.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/src/views/plan/PlanYearDemandHdr/index.vue b/src/views/plan/PlanYearDemandHdr/index.vue index b10211d..d902a1b 100644 --- a/src/views/plan/PlanYearDemandHdr/index.vue +++ b/src/views/plan/PlanYearDemandHdr/index.vue @@ -180,9 +180,16 @@ } function handleView(record: Recordable) { - - dbClickRow(record); - + router.push({ + path: '/plan/PlanYearDemandHdr/createForm', + query: { + formPath: 'plan/PlanYearDemandHdr', + formName: '查看' + formName, + formId: currentRoute.value.meta.formId, + id: record.id, + type: 'view', + }, + }); } function handleReject (record: Recordable) { curData.value = record diff --git a/src/views/plan/PlanYearDemandHdrEc/components/createForm.vue b/src/views/plan/PlanYearDemandHdrEc/components/createForm.vue index 8b68801..e618a71 100644 --- a/src/views/plan/PlanYearDemandHdrEc/components/createForm.vue +++ b/src/views/plan/PlanYearDemandHdrEc/components/createForm.vue @@ -20,7 +20,8 @@ - + +
{{ formState.planYear }}
@@ -44,23 +45,30 @@ + @@ -77,7 +85,9 @@ import type { Rule } from 'ant-design-vue/es/form'; import { getDictionary } from '/@/api/sales/Customer'; import { useModal } from '/@/components/Modal'; - import { addLngPlanYearDemandHdr,updateLngPlanYearDemandHdr, getLngPlanYearDemandHdr, getContractScPageList} from '/@/api/plan/PlanYearDemandHdrEc'; + import ImportModal from '/@/components/Import/src/ImportModal.vue'; + import { saveLngPlanYearDemandHdr,saveAndSubmitLngPlanYearDemandHdr,getUpdateLngPlanYearDemandHdr, getLngPlanYearDemandHdr, exportLngPlanYearDemandHdr} from '/@/api/plan/PlanYearDemandHdrEc'; + import { downloadByData } from '/@/utils/file/download'; import dayjs from 'dayjs'; import { getAppEnvConfig } from '/@/utils/env'; import { message } from 'ant-design-vue'; @@ -108,6 +118,7 @@ const formId = ref(currentRoute.value?.params?.id); const pageType = ref(currentRoute.value.query?.type); const pageId = ref(currentRoute.value.query?.id) + const dataList = ref([]) const curIdx = ref(null) const curIndex = ref(null) @@ -130,6 +141,7 @@ { title: t('LNG(万方)(气化率1400)'), dataIndex: 'lngNum'}, { title: t('小计(万方)'), dataIndex: 'total'}, ]); + formState.cuCode = currentRoute.value.query?.cuCode const layout = { labelCol: { span: 8 }, wrapperCol: { span: 16 }, @@ -182,51 +194,115 @@ async function getInfo(id) { spinning.value = true try { - let data = await getLngPlanYearDemandHdr(id) - - Object.assign(formState, {...data}) - - spinning.value = false - dataList.value = data?.lngContractSalesPngPointPurList || [] - + let request = pageType.value=='update' ? getUpdateLngPlanYearDemandHdr : getLngPlanYearDemandHdr + let data = await request(id) + spinning.value = false + Object.assign(formState, {...data}) + updateData(data) } catch (error) { spinning.value = false } } - const numCount = (val, record) => { - if (!val) return - // LNG(万方)=LNG(吨)*气化率/10000; - record.lngNum = Number(record.lng || 0) * Number(rateTonM3.value || 0)/10000 - // 小计=管道气(万方)+LNG(万方); - record.total = Number(record.qty || 0) + Number(record.lngNum || 0) + const updateData = (data)=> { + let arr = data?.lngPlanYearDemandList || []; + let objPng = {} + let objLng = {} + arr.forEach(v=> { + if (v.catCode == 'PNG') { + objPng = {...v} + } + if (v.catCode == 'LNG') { + objLng = {...v} + } + }) + for(let k in objPng) { + if (k.includes('qty')) { + dataList.value.push({'qty': objPng[k]}) + } + } + let lngkeys = [] + for(let k in objLng) { + if (k.includes('qty')) { + lngkeys.push({lng: k, value : objLng[k]}) + } + } + lngkeys.forEach((i,idx)=> { + dataList.value[idx].lng = i.value + }) + let totalObj = {month: '合计'} + dataList.value.splice(12,0,totalObj) + dataList.value.forEach((v,idx)=> { + + if (idx<12) { + v.month = (idx+1)+'月' + } + if (idx>12) { + let a = null + if (idx==13)a=1 + if (idx==14)a=2 + if (idx==15)a=3 + v.month = '次年'+a+'月' + } + }) + setTimeout(() => { + numCount() + }, 500); + } + const numCount = (record) => { + if (record) { + // LNG(万方)=LNG(吨)*气化率/10000; + record.lngNum = Number(record.lng || 0) * Number(rateTonM3.value || 0)/10000 + // 小计=管道气(万方)+LNG(万方); + record.total = Number(record.qty || 0) + Number(record.lngNum || 0) + } let qytTotal = 0 let lngTotal = 0 let lngNumTotal = 0 let subtotal= 0 let index = null - dataList.value.forEach((v, idx)=> { - if (idx<12) { - qytTotal+=(Number(v.qty)||0) - lngTotal+=(Number(v.lng)||0) - lngNumTotal+=(Number(v.lngNum)||0) - subtotal+=(Number(v.total)||0) - } - if (v.month == '合计') { - index = idx - } - }) + setTimeout(() => { - dataList.value[index].qty = qytTotal - dataList.value[index].lng = lngTotal - dataList.value[index].lngNum = lngNumTotal - dataList.value[index].total = subtotal - - dataList.value = DataFormat.format(dataList.value, [ - FormatOption.createQty('lngNum'), - FormatOption.createQty('total'), - ]); + dataList.value.forEach((v, idx)=> { + if (!record) { + v.lngNum = Number(v.lng || 0) * Number(rateTonM3.value || 0)/10000 + v.total = Number(v.qty || 0) + Number(v.lngNum || 0) + } + if (idx<12) { + qytTotal+=(Number(v.qty)||0) + lngTotal+=(Number(v.lng)||0) + lngNumTotal+=(Number(v.lngNum)||0) + subtotal+=(Number(v.total)||0) + } + if (v.month == '合计') { + index = idx + } + }) + dataList.value[index].qty = qytTotal?.toFixed(3) + dataList.value[index].lng = lngTotal?.toFixed(3) + dataList.value[index].lngNum = lngNumTotal?.toFixed(3) + dataList.value[index].total = subtotal?.toFixed(3) }, 100); } + const [registerImportModal, { openModal: openImportModal }] = useModal(); + + async function handleDownloadTemplate() { + const res = await exportLngPlanYearDemandHdr({ isTemplate: true }); + downloadByData(res.data, '年度需求模板.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); + } + + function handleImport() { + openImportModal(true, { + title: '导入', + downLoadUrl: '/plan/planYearDemandHdrEc/export', + }); + } + + function handleImportSuccess() { + if (pageId.value) { + getInfo(pageId.value); + } + } + async function getOption() { optionSelect.approCodeList = await getDictionary('LNG_APPRO2') } @@ -242,9 +318,33 @@ } async function handleSubmit(type) { try { + let objLng = {catCode:'LNG'} + let objPng = {catCode:'PNG'} + dataList.value.forEach((v,idx)=> { + let k = '' + if (idx<12) { + k = 'qty'+(idx<9 ? ('0'+(idx+1)) : idx+1) + } + if (idx>12) { + let a = null + if (idx==13)a=1 + if (idx==14)a=2 + if (idx==15)a=3 + k = 'qtyn'+a + } + if (idx!=12) { + objPng[k] = v.qty + objLng[k] = v.lng + } + }) + let arr = [objLng, objPng] spinning.value = true; - let request = !pageId.value ? addLngPlanYearDemandHdr : updateLngPlanYearDemandHdr - let obj = {} + let request = type == 'save' ? saveLngPlanYearDemandHdr : saveAndSubmitLngPlanYearDemandHdr + let obj = { + ...formState, + planYear: formState.planYear ? dayjs(formState.planYear).format('YYYY') : null, + lngPlanYearDemandList: arr + } await request(obj) spinning.value = false; notification.success({ diff --git a/src/views/plan/PlanYearDemandHdrEc/index.vue b/src/views/plan/PlanYearDemandHdrEc/index.vue index b4f5bd1..140417c 100644 --- a/src/views/plan/PlanYearDemandHdrEc/index.vue +++ b/src/views/plan/PlanYearDemandHdrEc/index.vue @@ -13,7 +13,8 @@ {{ button.name }} - + +