From 8c613f17337c8e7fc68a12d02cafa05d0dca81ba Mon Sep 17 00:00:00 2001 From: zhanghl <253316343@qq.com> Date: 星期五, 25 四月 2025 14:20:50 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- src/views/mainPlan/gasPlanning/index.vue | 578 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 495 insertions(+), 83 deletions(-) diff --git a/src/views/mainPlan/gasPlanning/index.vue b/src/views/mainPlan/gasPlanning/index.vue index 3f10796..14dffdf 100644 --- a/src/views/mainPlan/gasPlanning/index.vue +++ b/src/views/mainPlan/gasPlanning/index.vue @@ -1,89 +1,501 @@ <template> - <HxlhTable - style="width: 100%" - :columns="columns" - :data="gasPlanList" - :loading="loading" - :height="height" + <div class="app-container"> + <el-form + class="responsive-form" + :model="queryParams" + ref="queryRef" + :inline="true" + label-width="68px" > - </HxlhTable> + <el-row type="flex" justify="left"> + <el-col :span="6"> + <el-form-item label="閫夋嫨鏈堜唤" prop="description"> + <el-date-picker + clearable + v-model="queryParams.date" + type="month" + value-format="YYYY-MM" + placeholder="閫夋嫨鏈堜唤" + > + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="18" style="text-align: right"> + <el-form-item class="column-with-margin"> + <el-button type="primary" icon="Search" @click="handleQuery" + >鏌ヨ</el-button + > + <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-col> + </el-row> + </el-form> + <div class="box_container"> + <div class="title_text">绠¤矾瑙勫垝浜ц兘</div> + <div class="tabel_container"> + <!-- <HxlhTable + style="width: 100%" + :columns="columns" + :data="routePlanList" + :loading="loading" + :height="height" + :editConfig="editConfig" + > + <template #edit_role="{ row }"> + <vxe-select + v-model="row.dayProduceType" + :options="dayProduceTypeOptions" + filterable + ></vxe-select> + </template> + </HxlhTable> --> + <vxe-table + border + ref="xTable" + show-overflow + :loading="loading" + :height="height" + :edit-config="{ mode: 'row', trigger: 'click', showStatus: true }" + :data="routePlanList" + @cell-click="cellClickEvent" + > + <vxe-column field="processName" title="鏍囧噯宸ュ簭鍚嶇О" min-width="150"> + </vxe-column> + <!-- :edit-render="sexEditRender" --> + <vxe-column + field="dayProduceType" + title="鏃ヤ骇鍑虹被鍨�" + min-width="160" + :edit-render="{ }" + > + <template #edit="{ row }"> + <vxe-select v-model="row.dayProduceType" :options="dayProduceTypeOptions"></vxe-select> + </template> + <template #default="{ row }"> + <span>{{ formatTypeLabel([row.dayProduceType]) }}</span> + </template> + </vxe-column> + <vxe-column + field="dayProduceNum" + title="鏃ヤ骇鍑烘暟閲�" + min-width="200" + :edit-render="{ autoFocus: 'input' }" + > + <template #edit="{ row }"> + <el-input-number + v-model="row.dayProduceNum" + size="mini" + /> + </template> + </vxe-column> + <vxe-column + field="dayProduceUnit" + title="鏃ヤ骇鍑哄崟浣�" + min-width="200" + :edit-render="{ autoFocus: 'input' }" + > + <template #edit="{ row }"> + <el-input v-model="row.dayProduceUnit" /> + </template> + </vxe-column> + <vxe-column + field="personnelNumber" + title="浜哄憳鏁伴噺" + min-width="200" + :edit-render="{ autoFocus: 'input' }" + > + <template #edit="{ row }"> + <el-input-number + v-model="row.personnelNumber" + /> + </template> + </vxe-column> + <vxe-column + field="dayProduceAllNum" + title="鏃ヤ骇鍑烘�绘暟閲�" + min-width="200" + :edit-render="{ autoFocus: 'input' }" + > + <template #edit="{ row }"> + <el-input-number + v-model="row.dayProduceAllNum" + disabled + /> + </template> + </vxe-column> + <vxe-column + field="days" + title="澶╂暟" + min-width="200" + :edit-render="{ autoFocus: 'input' }" + > + <template #edit="{ row }"> + <el-input-number v-model="row.days" /> + </template> + </vxe-column> + <vxe-column + field="monthProduceAllNum" + title="鏈堜骇鍑烘暟閲�" + min-width="200" + :edit-render="{ autoFocus: 'input' }" + > + <template #edit="{ row }"> + <el-input-number v-model="row.monthProduceAllNum" disabled/> + </template> + </vxe-column> + <vxe-column + field="remark" + title="澶囨敞" + min-width="200" + :edit-render="{ autoFocus: 'input' }" + > + <template #edit="{ row }"> + <el-input type="textarea" v-model="row.remark" /> + </template> + </vxe-column> + </vxe-table> + </div> + </div> + <div class="box_container"> + <div class="title_text">姘斾綋瑙勫垝浜ц兘</div> + <div class="tabel_container"> + <!-- <HxlhTable + style="width: 100%" + :columns="columns" + :data="gasPlanList" + :loading="loading" + :height="height" + > + </HxlhTable> --> + <vxe-table + border + ref="xTable" + show-overflow + :loading="loading" + :height="height" + :edit-config="{ mode: 'row', trigger: 'click', showStatus: true }" + :data="gasPlanList" + @cell-click="cellClickEvent" + > + <vxe-column field="processName" title="鏍囧噯宸ュ簭鍚嶇О" min-width="150"> + </vxe-column> + <!-- :edit-render="sexEditRender" --> + <vxe-column + field="dayProduceType" + title="鏃ヤ骇鍑虹被鍨�" + min-width="160" + :edit-render="{ }" + > + <template #edit="{ row }"> + <vxe-select v-model="row.dayProduceType" :options="dayProduceTypeOptions"></vxe-select> + </template> + <template #default="{ row }"> + <span>{{ formatTypeLabel([row.dayProduceType]) }}</span> + </template> + </vxe-column> + <vxe-column + field="dayProduceNum" + title="鏃ヤ骇鍑烘暟閲�" + min-width="200" + :edit-render="{ autoFocus: 'input' }" + > + <template #edit="{ row }"> + <el-input-number + v-model="row.dayProduceNum" + size="mini" + /> + </template> + </vxe-column> + <vxe-column + field="dayProduceUnit" + title="鏃ヤ骇鍑哄崟浣�" + min-width="200" + :edit-render="{ autoFocus: 'input' }" + > + <template #edit="{ row }"> + <el-input v-model="row.dayProduceUnit" /> + </template> + </vxe-column> + <vxe-column + field="personnelNumber" + title="浜哄憳鏁伴噺" + min-width="200" + :edit-render="{ autoFocus: 'input' }" + > + <template #edit="{ row }"> + <el-input-number + v-model="row.personnelNumber" + /> + </template> + </vxe-column> + <vxe-column + field="dayProduceAllNum" + title="鏃ヤ骇鍑烘�绘暟閲�" + min-width="200" + :edit-render="{ autoFocus: 'input' }" + > + <template #edit="{ row }"> + <el-input-number + v-model="row.dayProduceAllNum" + /> + </template> + </vxe-column> + <vxe-column + field="days" + title="澶╂暟" + min-width="200" + :edit-render="{ autoFocus: 'input' }" + > + <template #edit="{ row }"> + <el-input-number v-model="row.days" /> + </template> + </vxe-column> + <vxe-column + field="monthProduceAllNum" + title="鏈堜骇鍑烘暟閲�" + min-width="200" + :edit-render="{ autoFocus: 'input' }" + > + <template #edit="{ row }"> + <el-input-number v-model="row.monthProduceAllNum" /> + </template> + </vxe-column> + <vxe-column + field="remark" + title="澶囨敞" + min-width="200" + :edit-render="{ autoFocus: 'input' }" + > + <template #edit="{ row }"> + <el-input type="textarea" v-model="row.remark" /> + </template> + </vxe-column> + </vxe-table> + <div class="btn_center"> + <el-button type="primary" @click="handleSave">淇濆瓨</el-button> + </div> + </div> + </div> + </div> + + <!-- --> </template> <script setup> -const height = ref(document.documentElement.clientHeight - 270 + "px;"); -const loading = ref(true); +import HxlhTable from "@/components/HxlhTable"; +import { ElMessage } from "element-plus"; +import { listGasPlan, getGasPlanSave } from "@/api/mainPlan/gasPlanning"; +const height = ref(document.documentElement.clientHeight - 400 + "px;"); +const loading = ref(false); +const data = reactive({ + queryParams: { + date: "", + }, +}); +const { queryParams } = toRefs(data); const gasPlanList = ref([]); -// 琛ㄦ牸閰嶇疆 -const columns = ref([ - { - title: "涓讳欢鏂欏彿", - field: "mainPartNumber", - width: 150, - }, - { - title: "涓氬姟绫诲瀷", - field: "businessType", - }, - { - title: "鍗曟嵁鍙�", - field: "documentNumber", - width: 100, - }, - { - title: "褰撳墠宸ュ簭鍙�", - field: "currentProcessNumberTxt", - width: 100, - }, - { - title: "闇�姹傚垎绫�", - field: "requirementType", - width: 80, - }, - { - title: "鍗曟嵁鐘舵��", - field: "documentStatus", - width: 80, - }, - { - title: "褰撳墠宸ュ簭", - field: "workCenter", - width: 80, - }, - { - title: "璁″垝寮�宸ユ棩", - field: "processPlanStartDaytxt", - width: 140, - type: "html", - }, - { - title: "鏂欏彿", - field: "itemNumber", - width: 140, - type: "html", - }, - { - title: "鍥惧彿", - field: "drawingNo", - width: 120, - // format: 'YYYY-MM-DD' - }, - { - title: "鐗堟湰鍙�", - field: "versionNumber", - width: 140, - type: "html", - }, - { - title: "鐢熶骇鏁伴噺", - field: "productionQuantity", - width: 140, - type: "html", - }, - { - title: "璁″垝瀹屽伐鏃�", - field: "planEndDay", - width: 140, - format: "YYYY-MM-DD hh:mm:ss", - }, +const routePlanList = ref([]); +const dayProduceTypeOptions = ref([ + { label: "鍗曚汉鏃ヤ骇鍑�", value: "1" }, + { label: "鍥哄畾鏃ヤ骇鍑�", value: "2" }, ]); - -</script> \ No newline at end of file +const formatTypeLabel = (list) => { + if (list) { + return list.map(type => { + const item = dayProduceTypeOptions.value.find(item => item.value === type) + return item ? item.label : type + }).join(',') + } + return '' +} +// 琛ㄦ牸閰嶇疆 +// const columns = ref([ +// // { +// // title: "瑙勫垝骞翠唤", +// // field: "year", +// // width: 150, +// // }, +// // { +// // title: "瑙勫垝鏈堜唤", +// // field: "month", +// // }, +// // { +// // title: "涓撲笟", +// // field: "major", +// // width: 100, +// // }, +// { +// title: "鏍囧噯宸ュ簭鍚嶇О", +// field: "processName", +// width: 100, +// }, +// { +// title: "鏃ヤ骇鍑虹被鍨�", +// field: "dayProduceType", +// width: 140, +// editRender: {}, +// slots: { edit: "edit_role", default: "default_role" }, +// }, +// { +// title: "鏃ヤ骇鍑烘暟閲�", +// field: "dayProduceNum", +// width: 140, +// // editRender: { autoFocus: "input" }, +// // slots: { edit: "edit_name", default: "default_name" }, +// }, +// { +// title: "鏃ヤ骇鍑烘暟閲忓崟浣�", +// field: "dayProduceUnit", +// width: 140, +// }, +// { +// title: "浜哄憳鏁伴噺", +// field: "personnelNumber", +// width: 140, +// type: "html", +// }, +// { +// title: "鏃ヤ骇鍑烘�绘暟閲�", +// field: "dayProduceAllNum", +// width: 140, +// type: "html", +// }, +// { +// title: "澶╂暟", +// field: "days", +// width: 120, +// // format: 'YYYY-MM-DD' +// }, +// { +// title: "鏈堜骇鍑烘�绘暟閲�", +// field: "monthProduceAllNum", +// width: 140, +// type: "html", +// }, +// { +// title: "澶囨敞", +// field: "remark", +// width: 140, +// type: "html", +// }, +// ]); +async function getRouteList(year, month) { + const res = await listGasPlan({ + major: "绠¤矾", + year, + month, + }); + console.log(res.rows, "getList"); + routePlanList.value = res.rows; + routePlanList.value = routePlanList.value.map((item, index) => { + return { + ...item, + dayProduceType: item.dayProduceType == null ? "" : item.dayProduceType, + dayProduceNum: item.dayProduceNum == null ? "0" : item.dayProduceNum, + dayProduceUnit: item.dayProduceUnit == null ? "涓�" : item.dayProduceUnit, + personnelNumber: + item.personnelNumber == null ? "1" : item.personnelNumber, + dayProduceAllNum: + item.dayProduceAllNum == null ? "0" : item.dayProduceNum*item.personnelNumber, + days: item.days == null ? "22" : item.days, + monthProduceAllNum: + item.monthProduceAllNum == null ? "0" : item.dayProduceAllNum*item.days, + }; + }); + loading.value = false; +} +async function getGasList(year, month) { + const res = await listGasPlan({ + major: "姘斾綋", + year, + month, + }); + console.log(res.rows, "getList"); + gasPlanList.value = res.rows; + gasPlanList.value = gasPlanList.value.map((item, index) => { + return { + ...item, + dayProduceType: item.dayProduceType == null ? "" : item.dayProduceType, + dayProduceNum: item.dayProduceNum == null ? "0" : item.dayProduceNum, + dayProduceUnit: item.dayProduceUnit == null ? "涓�" : item.dayProduceUnit, + personnelNumber: + item.personnelNumber == null ? "1" : item.personnelNumber, + dayProduceAllNum: + item.dayProduceAllNum == null ? "0" : item.dayProduceNum*item.personnelNumber, + days: item.days == null ? "22" : item.days, + monthProduceAllNum: + item.monthProduceAllNum == null ? "0" : item.dayProduceAllNum*item.days, + }; + }); + loading.value = false; +} +function cellClickEvent ({ row, column }){ + console.log(column,row) + row.dayProduceAllNum = row.dayProduceNum*row.personnelNumber + row.monthProduceAllNum = row.dayProduceAllNum*row.days +} +function handleQuery() { + console.log(queryParams.value.date, "scsciciisc"); + const year = queryParams.value.date.split("-")[0]; + const month = parseInt(queryParams.value.date.split("-")[1]); + getRouteList(year, month); + getGasList(year, month); +} +async function handleSave() { + const year = queryParams.value.date.split("-")[0]; + const month = parseInt(queryParams.value.date.split("-")[1]); + gasPlanList.value = gasPlanList.value.map((item)=>{ + return { + ...item, + major: "姘斾綋", + year, + month + } + }) + routePlanList.value = routePlanList.value.map((item)=>{ + return { + ...item, + major: "绠¤矾", + year, + month + } + }) + const res = await getGasPlanSave([ + ...gasPlanList.value, + ...routePlanList.value + ]) + ElMessage({ + message: "鏁版嵁淇濆瓨鎴愬姛", + type: "success", + }); + handleQuery() + console.log(res,"akiwjciwj") +} +onMounted(() => { + // getRouteList(); + // getGasList(); +}); +</script> +<style lang="scss" scoped> +.box_container { + width: 100%; + margin: 20px auto; + background: #fff; + border-radius: 5px; + box-shadow: 1px 1px 1px 4px#f1f1f1; + .title_text { + padding-top: 20px; + margin-left: 20px; + } + .tabel_container { + width: 98%; + margin: 20px auto; + } +} +.btn_center{ + display: flex; + justify-content: center; + align-items: center; + margin-top:20px; + padding-bottom:20px; +} +</style> -- Gitblit v1.9.3