| | |
| | | ref="queryRef" |
| | | :inline="true" |
| | | v-show="showSearch" |
| | | :label-width="locale === 'zh' ? '68px' : '134px'" |
| | | label-position="left" |
| | | > |
| | | <el-row type="flex" justify="left"> |
| | | <el-form-item :label="$t('plan.query.statistical')"> |
| | | <el-select |
| | | v-model="queryParams.searchType" |
| | | style="width: 200px" |
| | | placeholder="Select" |
| | | @change="handleChangeSelectType" |
| | | > |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item :label="$t('plan.query.selectDateRange')"> |
| | | <div v-if="!dayCom"> |
| | | <el-date-picker |
| | | v-model="queryParams.monthRange" |
| | | type="monthrange" |
| | | :range-separator="$t('plan.placeholder.to')" |
| | | :start-placeholder="$t('plan.placeholder.startMonth')" |
| | | :end-placeholder="$t('plan.placeholder.endMonth')" |
| | | /> |
| | | </div> |
| | | <div v-else> |
| | | <el-date-picker |
| | | v-model="queryParams.monthDays" |
| | | type="month" |
| | | :placeholder="$t('plan.placeholder.selectMonth')" |
| | | /> |
| | | </div> |
| | | </el-form-item> |
| | | |
| | | <el-form-item class="column-with-margin"> |
| | | <el-button type="primary" icon="Search" @click="handleQuery">{{ |
| | | $t("common.common.query") |
| | | }}</el-button> |
| | | <el-button icon="Refresh" @click="resetQuery">{{ |
| | | $t("common.common.reset") |
| | | }}</el-button> |
| | | </el-form-item> |
| | | </el-row> |
| | | <el-form |
| | | class="responsive-form" |
| | | :model="queryParams" |
| | | ref="queryRef" |
| | | :inline="true" |
| | | v-show="showSearch" |
| | | label-position="left" |
| | | > |
| | | <el-row :gutter="20"> |
| | | <el-col :span="6"> |
| | | <el-form-item |
| | | :label="$t('plan.query.statistical')" |
| | | :style="{ width: '100%' }" |
| | | > |
| | | <el-select |
| | | v-model="queryParams.searchType" |
| | | placeholder="Select" |
| | | @change="handleChangeSelectType" |
| | | > |
| | | <el-option |
| | | v-for="item in options" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item |
| | | :style="{ width: '100%' }" |
| | | :label=" |
| | | !dayCom |
| | | ? $t('plan.query.selectDateRange') |
| | | : $t('plan.query.selectDateMonth') |
| | | " |
| | | > |
| | | <div v-if="!dayCom"> |
| | | <el-date-picker |
| | | :style="{ width: '250px' }" |
| | | v-model="queryParams.monthRange" |
| | | type="monthrange" |
| | | :range-separator="$t('plan.placeholder.to')" |
| | | :start-placeholder="$t('plan.placeholder.startMonth')" |
| | | :end-placeholder="$t('plan.placeholder.endMonth')" |
| | | /> |
| | | </div> |
| | | <div v-else> |
| | | <el-date-picker |
| | | :style="{ width: '100%' }" |
| | | v-model="queryParams.monthDays" |
| | | type="month" |
| | | :placeholder="$t('plan.placeholder.selectMonth')" |
| | | /> |
| | | </div> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6" v-if="dayCom"> |
| | | <el-form-item |
| | | :label="$t('basic.table.applicableFactories')" |
| | | prop="plant" |
| | | :style="{ width: '100%' }" |
| | | > |
| | | <el-select |
| | | clearable |
| | | v-model="queryParams.applicableFactory" |
| | | :placeholder="$t('basic.table.applicableFactories')" |
| | | > |
| | | <el-option |
| | | v-for="item in aps_factory" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- <el-col :span="6" style="text-align:right;"> |
| | | <el-form-item class="column-with-margin"> |
| | | <el-button type="primary" icon="Search" @click="handleQuery">{{ |
| | | $t("common.common.query") |
| | | }}</el-button> |
| | | <el-button icon="Refresh" @click="resetQuery">{{ |
| | | $t("common.common.reset") |
| | | }}</el-button> |
| | | </el-form-item> |
| | | </el-col> --> |
| | | </el-row> |
| | | </el-form> |
| | | </el-form> |
| | | <el-row :gutter="10" class="mb8"> |
| | | <el-col :span="1.5"> |
| | |
| | | >{{ $t("common.common.update") }}</el-button |
| | | > |
| | | </el-col> |
| | | <right-toolbar @queryTable="handleQuery" :search="false"></right-toolbar> |
| | | <right-toolbar |
| | | v-model:showSearch="showSearch" |
| | | @queryTable="handleQuery" |
| | | @resetTable="resetQuery" |
| | | ></right-toolbar> |
| | | </el-row> |
| | | <!-- <div class="box_container"> --> |
| | | <!-- <div class="title_text">管路规划产能负载统计</div> --> |
| | |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup name="gasProduceStatics"> |
| | | <script setup name="PipeProduceStatics"> |
| | | import { |
| | | listUpdateGasProduceStatics, |
| | | listGasProduceStatics, |
| | |
| | | import { useI18n } from "vue-i18n"; //要在js中使用国际化 |
| | | const { t, locale } = useI18n(); |
| | | const { proxy } = getCurrentInstance(); |
| | | |
| | | const { aps_factory } = proxy.useDict("aps_factory"); |
| | | const loading = ref(false); |
| | | const gridRef = ref(); |
| | | const height = ref(document.documentElement.clientHeight - 180 + "px;"); |
| | |
| | | }, |
| | | ]; |
| | | queryParams.value.searchType = t("plan.options.monthlyStatic"); |
| | | handleQuery(); |
| | | if ( |
| | | (!queryParams.value.monthRange && dayCom.value == false) || |
| | | (!queryParams.value.monthDays && dayCom.value == true) |
| | | ) { |
| | | return; |
| | | } |
| | | // queryParams.value.pageNum = 1; |
| | | getPipeList(); |
| | | }, |
| | | { immediate: true, deep: true } |
| | | ); |
| | |
| | | eYearMonth: `${eYear}-${eMonth.toString().padStart(2, "0")}`, |
| | | }; |
| | | } |
| | | const formatTypeLabelPlant = (list) => { |
| | | if (list) { |
| | | return list |
| | | .map((type) => { |
| | | const item = aps_factory.value.find((item) => item.value === type); |
| | | return item ? item.label : type; |
| | | }) |
| | | .join(""); |
| | | } |
| | | return ""; |
| | | }; |
| | | /** 查询零件统计表列表 */ |
| | | function getPipeList() { |
| | | let rowKey = 0; |
| | |
| | | major: "piping", |
| | | }).then((response) => { |
| | | const colList = []; |
| | | let headersOne = []; |
| | | let headersTwo = []; |
| | | // let headersOne = []; |
| | | // let headersTwo = []; |
| | | if (response.code == "200") { |
| | | if (!response.data.planTitle) { |
| | | loading.value = false; |
| | | return; |
| | | } |
| | | headersOne.push(t("plan.table.dateYearMonth")); |
| | | headersTwo.push(t("plan.table.processName")); |
| | | colList.push({ |
| | | field: "dateCol", |
| | | title: t("plan.table.dateYearMonth"), |
| | | fixed: "left", |
| | | children: [ |
| | | { |
| | | field: `resourceName`, |
| | | title: t("plan.table.processName"), |
| | | width: 250, |
| | | type: "html", |
| | | }, |
| | | ], |
| | | width: 160, |
| | | }); |
| | | // headersOne.push(t("plan.table.dateYearMonth")); |
| | | // headersTwo.push(t("plan.table.processName")); |
| | | if (!dayCom.value) { |
| | | colList.push({ |
| | | field: "dateCol", |
| | | title: t("plan.table.dateYearMonth"), |
| | | fixed: "left", |
| | | children: [ |
| | | { |
| | | field: `resourceName`, |
| | | title: t("plan.table.processName"), |
| | | width: 250, |
| | | type: "html", |
| | | }, |
| | | { |
| | | field: `resourceGroupName`, |
| | | title: t("plan.table.applicableFactories"), |
| | | width: 250, |
| | | type: "html", |
| | | }, |
| | | ], |
| | | width: 160, |
| | | }); |
| | | } else { |
| | | colList.push({ |
| | | field: "dateCol", |
| | | title: t("plan.table.dateYearMonth"), |
| | | fixed: "left", |
| | | children: [ |
| | | { |
| | | field: `resourceName`, |
| | | title: t("plan.table.processName"), |
| | | width: 250, |
| | | type: "html", |
| | | }, |
| | | ], |
| | | width: 160, |
| | | }); |
| | | } |
| | | response.data.planTitle.forEach((item) => { |
| | | headersOne.push(item); |
| | | headersOne.push(""); |
| | | headersOne.push(""); |
| | | headersTwo.push(t("plan.table.designWorkingHours")); |
| | | headersTwo.push(t("plan.table.requiredWorkingHours")); |
| | | headersTwo.push(t("plan.table.capacityLoad")); |
| | | colKey++; |
| | | colList.push({ |
| | | field: `dateColTime${colKey}`, |
| | |
| | | width: 160, |
| | | }); |
| | | }); |
| | | |
| | | headers.value.push(headersOne); |
| | | headers.value.push(headersTwo); |
| | | |
| | | const columnList = [...tableColumn, ...colList]; |
| | | const dataList = []; |
| | | let startCol = 1; |
| | | |
| | | //获取map |
| | | response.data.planTable.map((mapItem) => { |
| | | rowKey++; |
| | | let lastCol = startCol + 2; |
| | | merges.push({ s: { r: 0, c: startCol }, e: { r: 0, c: lastCol } }); |
| | | startCol = lastCol + 1; |
| | | let data = []; |
| | | const item = { |
| | | id: `${rowKey}`, |
| | | }; |
| | | for (const [key, listValue] of Object.entries(mapItem)) { |
| | | data.push(key); |
| | | |
| | | let tableKey = 0; |
| | | let flag = false; |
| | | listValue.forEach((listItem) => { |
| | |
| | | listItem.requireTimes, |
| | | listItem.capacityLoad |
| | | ); |
| | | // 0-100 绿色,101-120黄色,大于120红色 |
| | | // listItem.capacityLoad <= 100 |
| | | // ? `<font color="red">${listItem.capacityLoad}%</font>` |
| | | // : listItem.capacityLoad + "%"; |
| | | data.push(listItem.designTimes); |
| | | data.push(listItem.requireTimes); |
| | | data.push(listItem.capacityLoad + "%"); |
| | | // if (listItem.capacityLoad > 100) { |
| | | // flag = true; |
| | | // } |
| | | }); |
| | | |
| | | // item[`resourceName`] = flag |
| | | // ? `<div class='el-badge'><sup class="el-badge__content is-fixed is-dot"></sup>${key}</div>` |
| | | // : key; |
| | | item[`resourceName`] = key; |
| | | if (!dayCom.value) { |
| | | const lastIndex = key.lastIndexOf("_"); |
| | | item[`resourceName`] = key.slice(0, lastIndex); |
| | | item[`resourceGroupName`] = formatTypeLabelPlant([ |
| | | key.slice(lastIndex + 1), |
| | | ]); |
| | | } else { |
| | | item[`resourceName`] = key; |
| | | } |
| | | } |
| | | exportData.value.push(data); |
| | | dataList.push(item); |
| | | }); |
| | | |
| | |
| | | // getList(); |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .column-with-margin { |
| | | margin-right: 0px; |
| | | } |
| | | .box_container { |
| | | width: 100%; |
| | | margin: 20px auto; |