From 1b56e5ca59f20aebc5add65a6a76d9a5f2b1b03b Mon Sep 17 00:00:00 2001 From: CD配唱片 <CD配唱片> Date: 星期三, 07 五月 2025 17:53:01 +0800 Subject: [PATCH] 钣金冗余工单联调 --- src/api/basicData/sheetMetalConfig/sheetMetalConfig.js | 9 + .env.development | 2 src/views/basicData/sheetMetalParamConfig/index.vue | 2 src/views/mainPlan/sheetMetalOrderManage/index.vue | 18 ++ src/views/mainPlan/sheetMetalSupplyGap/index.vue | 2 src/utils/i18n/locales/plan/index.js | 6 src/views/basicData/processRouteDataPreparate/index.vue | 37 +++- src/utils/i18n/locales/common/index.js | 6 src/views/mainPlan/sheetMetalRedundantReport/index.vue | 242 ++++------------------------- src/views/basicData/bom/index.vue | 116 ++++++++------ 10 files changed, 165 insertions(+), 275 deletions(-) diff --git a/.env.development b/.env.development index 605a602..a4a0a7d 100644 --- a/.env.development +++ b/.env.development @@ -10,4 +10,4 @@ # 閰嶅悎鍚庣鏈嶅姟 # VITE_APP_LOCAL = 'int' # VITE_APP_LOCAL = 'zhl' -VITE_APP_LOCAL = 'hjy' \ No newline at end of file +VITE_APP_LOCAL = 'cxl' \ No newline at end of file diff --git a/src/api/basicData/sheetMetalConfig/sheetMetalConfig.js b/src/api/basicData/sheetMetalConfig/sheetMetalConfig.js index 442cb26..73bf5c4 100644 --- a/src/api/basicData/sheetMetalConfig/sheetMetalConfig.js +++ b/src/api/basicData/sheetMetalConfig/sheetMetalConfig.js @@ -23,3 +23,12 @@ params: query }); } + +// 閽i噾鍐椾綑宸ュ崟鎶ヨ〃 apsPlatePlan/redundantOrderList +export function redundantOrderList(query) { + return request({ + url: `/aps/apsPlatePlan/redundantOrderList`, + method: "get", + params: query + }); +} \ No newline at end of file diff --git a/src/utils/i18n/locales/common/index.js b/src/utils/i18n/locales/common/index.js index 4173e34..fa1ef70 100644 --- a/src/utils/i18n/locales/common/index.js +++ b/src/utils/i18n/locales/common/index.js @@ -19,7 +19,8 @@ save: "淇濆瓨", cancel: "鍙栨秷", placeholder:"璇疯緭鍏�", - view:"鏌ョ湅" + view:"鏌ョ湅", + viewDetails:"鏌ョ湅璇︽儏" }, }; export const en = { @@ -43,6 +44,7 @@ save: "Save", cancel: "Cancel", placeholder:"Please enter the ", - view:"View" + view:"View", + viewDetails:"View details" }, }; diff --git a/src/utils/i18n/locales/plan/index.js b/src/utils/i18n/locales/plan/index.js index cd246f7..c916b2b 100644 --- a/src/utils/i18n/locales/plan/index.js +++ b/src/utils/i18n/locales/plan/index.js @@ -156,7 +156,8 @@ requirementPlanCompletionDate:"闇�姹傝鍒掑畬宸ユ棩", processRouteWorkingHours:"宸ヨ壓璺嚎宸ユ椂", demandQuantity:"闇�姹傛暟閲�", - netRequirement:"鍑�闇�姹傞噺" + netRequirement:"鍑�闇�姹傞噺", + bomItemID: "椤� ID" }, }; export const en = { @@ -317,6 +318,7 @@ requirementPlanCompletionDate:"Requirement plan completion date", processRouteWorkingHours:"Process route working hours", demandQuantity:"Demand Quantity", - netRequirement:"Net Requirement" + netRequirement:"Net Requirement", + bomItemID:"Item ID" }, }; diff --git a/src/views/basicData/bom/index.vue b/src/views/basicData/bom/index.vue index 1ece0d6..a27ebfe 100644 --- a/src/views/basicData/bom/index.vue +++ b/src/views/basicData/bom/index.vue @@ -9,52 +9,54 @@ v-show="showSearch" :label-width="locale === 'zh' ? '90px' : '160px'" > - <el-row :gutter="20"> - <el-col :span="9"> - <el-form-item :label="$t('plan.query.itemNumber')" prop="itemCode"> - <el-input - style="width: 210px" - v-model="queryParams.itemCode" - :placeholder="`${$t('common.common.placeholder')}${$t( - 'plan.query.itemNumber' - )}`" - clearable - @keyup.enter="handleQuery" - /> - </el-form-item> - </el-col> - <el-col :span="9"> - <el-form-item - :label="$t('plan.table.applicableFactories')" - prop="orgCode" + <!-- <el-row :gutter="20"> + <el-col :span="10"> --> + <el-form-item :label="$t('plan.query.itemNumber')" prop="itemCode"> + <el-input + style="width: 210px" + v-model="queryParams.itemCode" + :placeholder="`${$t('common.common.placeholder')}${$t( + 'plan.query.itemNumber' + )}`" + clearable + @keyup.enter="handleQuery" + /> + </el-form-item> + <!-- </el-col> + <el-col :span="10"> --> + <el-form-item + :label="$t('plan.table.applicableFactories')" + prop="orgCode" + > + <el-select + clearable + v-model="queryParams.orgCode" + style="width: 160px" + :placeholder="`${$t('common.common.placeholder')}${$t( + 'plan.table.applicableFactories' + )}`" + > + <el-option + v-for="plant in plantList" + :key="plant.id" + :label="plant.plantName" + :value="plant.plantCode" > - <el-select - clearable - v-model="queryParams.orgCode" - :style="{width: locale=='zh'?'160px':'250px'}" - :placeholder="`${$t('common.common.placeholder')}${$t('plan.table.applicableFactories')}`" - > - <el-option - v-for="plant in plantList" - :key="plant.id" - :label="plant.plantName" - :value="plant.plantCode" - > - </el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="6" style="text-align: right"> - <el-form-item> - <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-option> + </el-select> + </el-form-item> + <!-- </el-col> + <el-col :span="4" style="text-align: right"> --> + <el-form-item> + <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-row> <el-row :gutter="10" class="mb8"> @@ -97,7 +99,12 @@ > </template> </HxlhTable> - <el-dialog :title="title" v-model="openDialog" width="900px" append-to-body> + <el-dialog + :title="$t('common.common.viewDetails')" + v-model="openDialog" + width="900px" + append-to-body + > <HxlhTable style="width: 100%" :columns="subGridOptions" @@ -106,6 +113,13 @@ :height="heightSub" > </HxlhTable> + <template #footer> + <span class="dialog-footer"> + <el-button @click="openDialog = false">{{ + $t("common.common.cancel") + }}</el-button> + </span> + </template> </el-dialog> </div> </template> @@ -134,7 +148,7 @@ const loadingSub = ref(false); const showSearch = ref(true); const total = ref(0); -const height = ref(document.documentElement.clientHeight - 270 + "px;"); +const height = ref(document.documentElement.clientHeight - 210 + "px;"); const heightSub = ref(document.documentElement.clientHeight - 320 + "px;"); // 琛ㄦ牸閰嶇疆 const columns = ref([]); @@ -145,7 +159,7 @@ pageNum: 1, pageSize: 10, itemCode: null, - orgCode:"" + orgCode: "", }, rules: {}, }); @@ -175,7 +189,7 @@ // }, // { type: "checkbox", width: 60, align: "center" }, { - title: "BOM_Header_ID", + title: "BOM ID", field: "bomHeaderId", }, { @@ -221,13 +235,13 @@ ]; subGridOptions.value = [ { - title: "BOM_Line_ID", + title: t("plan.table.bomItemID"), field: "bomLineId", width: 150, align: "center", }, { - title: "BOM_Header_ID", + title: "BOM ID", field: "bomHeaderId", width: 150, align: "center", diff --git a/src/views/basicData/processRouteDataPreparate/index.vue b/src/views/basicData/processRouteDataPreparate/index.vue index 7d87169..afce936 100644 --- a/src/views/basicData/processRouteDataPreparate/index.vue +++ b/src/views/basicData/processRouteDataPreparate/index.vue @@ -95,11 +95,16 @@ link @click="handleCheckView(row)" v-hasPermi="['aps:calendar:update']" - >鏌ョ湅</el-button + >{{ $t("common.common.view") }}</el-button > </template> </HxlhTable> - <el-dialog :title="title" v-model="openDialog" width="900px" append-to-body> + <el-dialog + :title="$t('common.common.viewDetails')" + v-model="openDialog" + width="900px" + append-to-body + > <HxlhTable style="width: 100%" :columns="subGridOptions" @@ -108,6 +113,13 @@ :height="heightSub" > </HxlhTable> + <template #footer> + <span class="dialog-footer"> + <el-button @click="openDialog = false">{{ + $t("common.common.cancel") + }}</el-button> + </span> + </template> </el-dialog> </div> </template> @@ -142,7 +154,7 @@ const single = ref(true); const total = ref(0); -const height = ref(document.documentElement.clientHeight - 270 + "px;"); +const height = ref(document.documentElement.clientHeight - 210 + "px;"); const heightSub = ref(document.documentElement.clientHeight - 320 + "px;"); // 琛ㄦ牸閰嶇疆 const columns = ref([]); @@ -155,8 +167,7 @@ itemCode: null, }, rules: { - itemCode: [ - ], + itemCode: [], }, }); @@ -164,7 +175,7 @@ watch( locale, (newLocale) => { - rules.value = { + rules.value = { itemCode: [ { required: true, @@ -329,12 +340,14 @@ function getList() { loading.value = true; queryParams.value.params = {}; - apsStandardProcessRouteHeaderList(queryParams.value).then((response) => { - processRouteList.value = response.rows; - loading.value = false; - }).catch(()=>{ - loading.value = false; - }); + apsStandardProcessRouteHeaderList(queryParams.value) + .then((response) => { + processRouteList.value = response.rows; + loading.value = false; + }) + .catch(() => { + loading.value = false; + }); } /** 鎼滅储鎸夐挳鎿嶄綔 */ diff --git a/src/views/basicData/sheetMetalParamConfig/index.vue b/src/views/basicData/sheetMetalParamConfig/index.vue index 839e84a..e1c8a6f 100644 --- a/src/views/basicData/sheetMetalParamConfig/index.vue +++ b/src/views/basicData/sheetMetalParamConfig/index.vue @@ -45,7 +45,7 @@ onMounted(async () => { let config = await queryConfigParams("plate_plan_param"); console.log(config.data, "configwudhuhfuw"); - ruleForm.value.days = config.data[0].dictValue * 1; + ruleForm.value.days = parseInt(config.data[0].dictValue); configParams.value = config.data[0]; // console.log(plate_plan_param.value[0].value,'plate_plan_paramplate_plan_param') }); diff --git a/src/views/mainPlan/sheetMetalOrderManage/index.vue b/src/views/mainPlan/sheetMetalOrderManage/index.vue index 232c9cd..1d441ba 100644 --- a/src/views/mainPlan/sheetMetalOrderManage/index.vue +++ b/src/views/mainPlan/sheetMetalOrderManage/index.vue @@ -125,6 +125,21 @@ > </HxlhTable> </el-dialog> + <el-dialog + :title="'鎵归噺鏇存柊宸ュ崟璁″垝鏃ユ湡'" + v-model="openBatchDialog" + width="900px" + append-to-body + > + <HxlhTable + style="width: 100%" + :columns="subGridOptions" + :data="subList" + :loading="loading" + :height="heightSub" + > + </HxlhTable> + </el-dialog> </div> </template> @@ -145,6 +160,7 @@ const { t, locale } = useI18n(); const { proxy } = getCurrentInstance(); const openDialog = ref(false); +const openBatchDialog = ref(false); const subGridOptions = ref([]); // const tableRef = ref(); const calendarList = ref([]); @@ -410,7 +426,7 @@ } ); function handleBatchUpdatePlanDate(){ - + openBatchDialog.value = true } function handleCheckView(row) { openDialog.value = true; diff --git a/src/views/mainPlan/sheetMetalRedundantReport/index.vue b/src/views/mainPlan/sheetMetalRedundantReport/index.vue index 0681d75..0585e63 100644 --- a/src/views/mainPlan/sheetMetalRedundantReport/index.vue +++ b/src/views/mainPlan/sheetMetalRedundantReport/index.vue @@ -10,13 +10,10 @@ > <el-row type="flex" justify="left"> <el-col :span="locale === 'zh' ? 5 : 10"> - <el-form-item - :label="$t('plan.query.requireTraceID')" - prop="description" - > + <el-form-item :label="$t('plan.query.itemNumber')" prop="itemNumber"> <el-input :style="{ width: locale === 'zh' ? '140px' : '300px' }" - v-model="queryParams.description" + v-model="queryParams.itemNumber" :placeholder="`${$t('plan.placeholder.requireTraceID')}`" clearable @keyup.enter="handleQuery" @@ -24,10 +21,13 @@ </el-form-item> </el-col> <el-col :span="locale === 'zh' ? 8 : 9"> - <el-form-item :label="$t('plan.query.itemNumber')" prop="description"> + <el-form-item + :label="$t('plan.query.workOrderNo')" + prop="documentNumber" + > <el-input :style="{ width: locale === 'zh' ? '140px' : '210px' }" - v-model="queryParams.description" + v-model="queryParams.documentNumber" :placeholder="`${$t('common.common.placeholder')}${$t( 'plan.query.itemNumber' )}`" @@ -56,7 +56,7 @@ plain icon="Download" @click="handleExport" - v-hasPermi="['core:calendar:export']" + v-hasPermi="['Aps:apsPlatePlan:redundantOrderListExport']" >{{ $t("common.common.export") }}</el-button > </el-col> @@ -68,7 +68,7 @@ <HxlhTable style="width: 100%" :columns="columns" - :data="calendarList" + :data="orderList" :loading="loading" :height="height" ref="tableRef" @@ -91,6 +91,7 @@ addCalendar, updateCalendar, } from "@/api/basicData/calendar"; +import { redundantOrderList } from "@/api/basicData/sheetMetalConfig/sheetMetalConfig"; import axios from "axios"; import { listAll_plant } from "@/api/basicData/plant"; import { listAll_shop, listAps_shop } from "@/api/basicData/shop"; @@ -99,7 +100,7 @@ const { t, locale } = useI18n(); const { proxy } = getCurrentInstance(); const tableRef = ref(); -const calendarList = ref([]); +const orderList = ref([]); const loading = ref(true); const showSearch = ref(true); const ids = ref([]); @@ -114,14 +115,8 @@ queryParams: { pageNum: 1, pageSize: 10, - description: null, - type: null, - effectiveDate: null, - expiringDate: null, - content: null, - applicableFactory: null, - applicableWorkshop: null, - applicableProcess: null, + documentNumber: null, + itemNumber: null, }, }); const { queryParams, form, rules } = toRefs(data); @@ -145,31 +140,31 @@ columns.value = [ { title: t("plan.table.workOrderNo"), - field: "description", + field: "documentNumber", width: 150, align: "center", }, { title: t("plan.table.subItemPartNumber"), - field: "type", + field: "itemNumber", width: 200, align: "center", }, { title: t("plan.table.productionQuantity"), - field: "effectiveDate", + field: "productionQuantity", width: 200, align: "center", }, { title: t("plan.table.mismatchedProductionQuantity"), - field: "expiringDate", + field: "unmatchedQuantity", width: 200, align: "center", }, { title: t("plan.table.applicableFactories"), - field: "applicableFactory", + field: "plant", width: 200, align: "center", formatter: ({ cellValue, row, column }) => { @@ -184,25 +179,25 @@ }, { title: t("plan.table.productionBase"), - field: "expiringDate", + field: "productionBase", width: 200, align: "center", }, { title: t("plan.table.planStartDay"), - field: "createTime", + field: "planStartDay", width: 200, align: "center", }, { title: t("plan.table.planEndDayDate"), - field: "updateTime", + field: "planEndDay", width: 100, align: "center", }, { title: t("plan.table.workorderCreationTime"), - field: "updateTime", + field: "orderCreateTime", width: 100, align: "center", }, @@ -213,59 +208,24 @@ /** 鏌ヨ鏃ュ巻绠$悊鍒楄〃 */ function getList() { loading.value = true; - listCalendar(queryParams.value).then((response) => { - calendarList.value = response.rows; + redundantOrderList(queryParams.value).then((response) => { + orderList.value = response.rows; page.value.total = response.total; loading.value = false; + }).catch(()=>{ + loading.value = false; }); - axios - .all([ - /** 鏌ヨ宸ュ巶鍒楄〃 */ - listAll_plant({}), - /** 鏌ヨ杞﹂棿鍒楄〃 */ - listAll_shop({}), - ]) - .then( - axios.spread((response1, response2) => { - plantList.value = response1.data; - shopList.value = response2.data; - loading.value = false; - }) - ) - .catch((error) => { - console.error("璇锋眰鍑洪敊:", error); - }); -} - -// 鍙栨秷鎸夐挳 -function cancel() { - open.value = false; - reset(); } // 琛ㄥ崟閲嶇疆 function reset() { - form.value = { - id: null, - description: null, - type: "1", - effectiveDate: null, - expiringDate: null, - content: null, - applicableFactory: null, - applicableWorkshop: null, - applicableProcess: null, - createBy: null, - createTime: null, - updateBy: null, - updateTime: null, - }; - proxy.resetForm("calendarRef"); + proxy.resetForm("queryRef"); } /** 鎼滅储鎸夐挳鎿嶄綔 */ function handleQuery() { queryParams.value.pageNum = 1; + page.value.current = 1; getList(); } @@ -275,143 +235,15 @@ handleQuery(); } -// 澶氶�夋閫変腑鏁版嵁 -function handleSelectionChange(selection) { - ids.value = selection.map((item) => item.id); - single.value = selection.length != 1; - multiple.value = !selection.length; -} - -/** 鏂板鎸夐挳鎿嶄綔 */ -async function handleAdd() { - reset(); - open.value = true; - title.value = "娣诲姞鏃ュ巻绠$悊"; -} -/** 閫夋嫨宸ュ巶鍚庝簨浠� 鍔犺浇杞﹂棿 鍜� 宸ュ簭 **/ -function changePlant(plant) { - listAps_shop({ plantCode: plant }).then((response) => { - shopList.value = response.rows; - }); - selectProcessNameList({ orgCode: plant }).then((response) => { - processList.value = response.rows; - }); -} -/** 淇敼鎸夐挳鎿嶄綔 */ -function handleUpdate(row) { - reset(); - const _id = row.id || ids.value; - getCalendar(_id).then((response) => { - form.value = response.data; - // form.value.content = JSON.parse(response.data.content.value); - if (form.value.type === "1") { - weekDaysSettingList.value = JSON.parse( - response.data.content.value - ).weekdays; - } else if (form.value.type === "2") { - holidays.value = JSON.parse(response.data.content.value).holidays; - } - - open.value = true; - title.value = "淇敼鏃ュ巻绠$悊"; - }); -} - -/** 鎻愪氦鎸夐挳 */ -function submitForm() { - proxy.$refs["calendarRef"].validate((valid) => { - if (valid) { - if (form.value.id != null) { - if (form.value.type === "1") { - updateCalendar({ - ...form.value, - content: { - weekdays: weekDaysSettingList.value, - }, - applicableWorkshop: form.value.applicableWorkshop, - applicableProcess: form.value.applicableProcess, - }).then((response) => { - proxy.$modal.msgSuccess("淇敼鎴愬姛"); - open.value = false; - getList(); - }); - } else if (form.value.type === "2") { - updateCalendar({ - ...form.value, - content: { - holidays: holidays.value, - }, - applicableWorkshop: form.value.applicableWorkshop, - applicableProcess: form.value.applicableProcess, - }).then((response) => { - proxy.$modal.msgSuccess("淇敼鎴愬姛"); - open.value = false; - getList(); - }); - } - } else { - if (form.value.type === "1") { - addCalendar({ - ...form.value, - content: { - weekdays: weekDaysSettingList.value, - }, - }).then((response) => { - proxy.$modal.msgSuccess("鏂板鎴愬姛"); - open.value = false; - getList(); - }); - } else if (form.value.type === "2") { - addCalendar({ - ...form.value, - content: { - holidays: holidays.value, - }, - }).then((response) => { - proxy.$modal.msgSuccess("鏂板鎴愬姛"); - open.value = false; - getList(); - }); - } - } - } - }); -} - -/** 鍒犻櫎鎸夐挳鎿嶄綔 */ -function handleDelete(row) { - const _ids = row.id || ids.value; - proxy.$modal - .confirm('鏄惁纭鍒犻櫎鏃ュ巻绠$悊缂栧彿涓�"' + _ids + '"鐨勬暟鎹」锛�') - .then(function () { - return delCalendar(_ids); - }) - .then(() => { - getList(); - proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛"); - }) - .catch(() => {}); -} - /** 瀵煎嚭鎸夐挳鎿嶄綔 */ function handleExport() { proxy.download( - "core/calendar/export", + "aps/apsPlatePlan/redundantOrderListExport", { ...queryParams.value, }, - `calendar_${new Date().getTime()}.xlsx` + `redundantOrderList_${new Date().getTime()}.xlsx` ); -} -function handleSwitchType(e) { - typeRadioNumber.value = e; - form.value.type = e; - form.value.effectiveDate = null; - form.value.expiringDate = null; - form.value.content = null; - form.value.applicableFactory = null; - form.value.applicableWorkshop = null; - form.value.applicableProcess = null; } function changePageNo(currentPage) { queryParams.value.pageNum = currentPage; @@ -424,14 +256,16 @@ queryParams.value.pageSize = pageSize; getList(); } -// 澶氶�夋閫変腑鏁版嵁 -const handleCheckboxChange = (data) => { - ids.value = data.records.map((item) => item.id); - single.value = data.records.length !== 1; - multiple.value = !data.records.length; -}; onMounted(() => { getList(); + /** 鏌ヨ宸ュ巶鍒楄〃 */ + listAll_plant({}) + .then((response) => { + plantList.value = response.data; + }) + .catch((error) => { + console.error("璇锋眰鍑洪敊:", error); + }); }); </script> <style lang="scss" scoped> diff --git a/src/views/mainPlan/sheetMetalSupplyGap/index.vue b/src/views/mainPlan/sheetMetalSupplyGap/index.vue index 0a2c021..af444f9 100644 --- a/src/views/mainPlan/sheetMetalSupplyGap/index.vue +++ b/src/views/mainPlan/sheetMetalSupplyGap/index.vue @@ -56,7 +56,7 @@ plain icon="Download" @click="handleExport" - v-hasPermi="['core:calendar:export']" + v-hasPermi="['Aps:ApsPlateStandardRequire:supplyGapListExport']" >{{ $t("common.common.export") }}</el-button > </el-col> -- Gitblit v1.9.3