| | |
| | | <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="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" |
| | | 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 { ElInputNumber } 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> |
| | | 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 |
| | | ]) |
| | | proxy.$modal.msgSuccess("ä¿åæå"); |
| | | 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> |