From 04340161cc724c158a860db3b05d997765512fde Mon Sep 17 00:00:00 2001 From: CD配唱片 <CD配唱片> Date: 星期四, 24 四月 2025 10:06:13 +0800 Subject: [PATCH] 钣金计划大表页面新建 --- .env.dev | 3 src/views/mainPlan/platePlanList/index.vue | 353 ++++++++++++++++++++++++++++++++ src/api/ApsPlateProcessShopStat/ApsPlateProcessShopStat.js | 44 ++++ src/views/mainPlan/platePlanList/index copy.vue | 233 +++++++++++++++++++++ vite.config.js | 9 5 files changed, 641 insertions(+), 1 deletions(-) diff --git a/.env.dev b/.env.dev index 945be41..bd1b5ff 100644 --- a/.env.dev +++ b/.env.dev @@ -9,4 +9,5 @@ # 鏍囪瘑鏈湴寮�鍙戞湇鍔★紝鐢ㄤ簬GateWay杞彂鍒版湰鍦版湇鍔� # 閰嶅悎鍚庣鏈嶅姟 # VITE_APP_LOCAL = 'int' -VITE_APP_LOCAL = 'hjy' +# VITE_APP_LOCAL = 'hjy' +VITE_APP_LOCAL = 'zhl' \ No newline at end of file diff --git a/src/api/ApsPlateProcessShopStat/ApsPlateProcessShopStat.js b/src/api/ApsPlateProcessShopStat/ApsPlateProcessShopStat.js new file mode 100644 index 0000000..23bad94 --- /dev/null +++ b/src/api/ApsPlateProcessShopStat/ApsPlateProcessShopStat.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 鏌ヨ閽i噾杞﹂棿缁熻鍒楄〃 +export function listApsPlateProcessShopStat(query) { + return request({ + url: '/plateProcessShopStat/list', + method: 'get', + params: query + }) +} + +// 鏌ヨ閽i噾杞﹂棿缁熻璇︾粏 +export function getApsPlateProcessShopStat(id) { + return request({ + url: '/ApsPlateProcessShopStat/ApsPlateProcessShopStat/' + id, + method: 'get' + }) +} + +// 鏂板閽i噾杞﹂棿缁熻 +export function addApsPlateProcessShopStat(data) { + return request({ + url: '/ApsPlateProcessShopStat/ApsPlateProcessShopStat', + method: 'post', + data: data + }) +} + +// 淇敼閽i噾杞﹂棿缁熻 +export function updateApsPlateProcessShopStat(data) { + return request({ + url: '/ApsPlateProcessShopStat/ApsPlateProcessShopStat', + method: 'put', + data: data + }) +} + +// 鍒犻櫎閽i噾杞﹂棿缁熻 +export function delApsPlateProcessShopStat(id) { + return request({ + url: '/ApsPlateProcessShopStat/ApsPlateProcessShopStat/' + id, + method: 'delete' + }) +} diff --git a/src/views/mainPlan/platePlanList/index copy.vue b/src/views/mainPlan/platePlanList/index copy.vue new file mode 100644 index 0000000..785b128 --- /dev/null +++ b/src/views/mainPlan/platePlanList/index copy.vue @@ -0,0 +1,233 @@ +<template> + <div class="app-container"> + <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> + <el-form-item> + <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button> + <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button> + </el-form-item> + </el-form> + + <el-row :gutter="10" class="mb8"> + <el-col :span="1.5"> + <el-button + type="primary" + plain + icon="Plus" + @click="handleAdd" + v-hasPermi="['ApsPlateProcessShopStat:ApsPlateProcessShopStat:add']" + >鏂板</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="success" + plain + icon="Edit" + :disabled="single" + @click="handleUpdate" + v-hasPermi="['ApsPlateProcessShopStat:ApsPlateProcessShopStat:edit']" + >淇敼</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="danger" + plain + icon="Delete" + :disabled="multiple" + @click="handleDelete" + v-hasPermi="['ApsPlateProcessShopStat:ApsPlateProcessShopStat:remove']" + >鍒犻櫎</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="warning" + plain + icon="Download" + @click="handleExport" + v-hasPermi="['ApsPlateProcessShopStat:ApsPlateProcessShopStat:export']" + >瀵煎嚭</el-button> + </el-col> + <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> + </el-row> + + <el-table v-loading="loading" :data="ApsPlateProcessShopStatList" @selection-change="handleSelectionChange"> + <el-table-column type="selection" width="55" align="center" /> + <el-table-column label="${comment}" align="center" prop="id" /> + <el-table-column label="鍗曟嵁鍙�" align="center" prop="docNo" /> + <el-table-column label="杞﹂棿缂栫爜" align="center" prop="shopCode" /> + <el-table-column label="杞﹂棿鍚嶇О" align="center" prop="shopName" /> + <el-table-column label="璁″垝寮�濮嬫椂闂�" align="center" prop="planStartDate" /> + <el-table-column label="璁″垝缁撴潫鏃ユ湡" align="center" prop="planEndDate" /> + <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> + <template #default="scope"> + <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['ApsPlateProcessShopStat:ApsPlateProcessShopStat:edit']">淇敼</el-button> + <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['ApsPlateProcessShopStat:ApsPlateProcessShopStat:remove']">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + + <pagination + v-show="total>0" + :total="total" + v-model:page="queryParams.pageNum" + v-model:limit="queryParams.pageSize" + @pagination="getList" + /> + + <!-- 娣诲姞鎴栦慨鏀归挘閲戣溅闂寸粺璁″璇濇 --> + <el-dialog :title="title" v-model="open" width="500px" append-to-body> + <el-form ref="ApsPlateProcessShopStatRef" :model="form" :rules="rules" label-width="80px"> + </el-form> + <template #footer> + <div class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </template> + </el-dialog> + </div> +</template> + +<script setup name="ApsPlateProcessShopStat"> +import { listApsPlateProcessShopStat, getApsPlateProcessShopStat, delApsPlateProcessShopStat, addApsPlateProcessShopStat, updateApsPlateProcessShopStat } from "@/api/ApsPlateProcessShopStat/ApsPlateProcessShopStat"; + +const { proxy } = getCurrentInstance(); + +const ApsPlateProcessShopStatList = ref([]); +const open = ref(false); +const loading = ref(true); +const showSearch = ref(true); +const ids = ref([]); +const single = ref(true); +const multiple = ref(true); +const total = ref(0); +const title = ref(""); + +const data = reactive({ + form: {}, + queryParams: { + pageNum: 1, + pageSize: 10, + docNo: null, + shopCode: null, + shopName: null, + planStartDate: null, + planEndDate: null, + }, + rules: { + } +}); + +const { queryParams, form, rules } = toRefs(data); + +/** 鏌ヨ閽i噾杞﹂棿缁熻鍒楄〃 */ +function getList() { + loading.value = true; + listApsPlateProcessShopStat(queryParams.value).then(response => { + ApsPlateProcessShopStatList.value = response.rows; + total.value = response.total; + loading.value = false; + }); +} + +// 鍙栨秷鎸夐挳 +function cancel() { + open.value = false; + reset(); +} + +// 琛ㄥ崟閲嶇疆 +function reset() { + form.value = { + id: null, + docNo: null, + shopCode: null, + shopName: null, + planStartDate: null, + planEndDate: null, + delFlag: null, + createBy: null, + createTime: null, + updateBy: null, + updateTime: null + }; + proxy.resetForm("ApsPlateProcessShopStatRef"); +} + +/** 鎼滅储鎸夐挳鎿嶄綔 */ +function handleQuery() { + queryParams.value.pageNum = 1; + getList(); +} + +/** 閲嶇疆鎸夐挳鎿嶄綔 */ +function resetQuery() { + proxy.resetForm("queryRef"); + handleQuery(); +} + +// 澶氶�夋閫変腑鏁版嵁 +function handleSelectionChange(selection) { + ids.value = selection.map(item => item.id); + single.value = selection.length != 1; + multiple.value = !selection.length; +} + +/** 鏂板鎸夐挳鎿嶄綔 */ +function handleAdd() { + reset(); + open.value = true; + title.value = "娣诲姞閽i噾杞﹂棿缁熻"; +} + +/** 淇敼鎸夐挳鎿嶄綔 */ +function handleUpdate(row) { + reset(); + const _id = row.id || ids.value + getApsPlateProcessShopStat(_id).then(response => { + form.value = response.data; + open.value = true; + title.value = "淇敼閽i噾杞﹂棿缁熻"; + }); +} + +/** 鎻愪氦鎸夐挳 */ +function submitForm() { + proxy.$refs["ApsPlateProcessShopStatRef"].validate(valid => { + if (valid) { + if (form.value.id != null) { + updateApsPlateProcessShopStat(form.value).then(response => { + proxy.$modal.msgSuccess("淇敼鎴愬姛"); + open.value = false; + getList(); + }); + } else { + addApsPlateProcessShopStat(form.value).then(response => { + proxy.$modal.msgSuccess("鏂板鎴愬姛"); + open.value = false; + getList(); + }); + } + } + }); +} + +/** 鍒犻櫎鎸夐挳鎿嶄綔 */ +function handleDelete(row) { + const _ids = row.id || ids.value; + proxy.$modal.confirm('鏄惁纭鍒犻櫎閽i噾杞﹂棿缁熻缂栧彿涓�"' + _ids + '"鐨勬暟鎹」锛�').then(function() { + return delApsPlateProcessShopStat(_ids); + }).then(() => { + getList(); + proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }).catch(() => {}); +} + +/** 瀵煎嚭鎸夐挳鎿嶄綔 */ +function handleExport() { + proxy.download('ApsPlateProcessShopStat/ApsPlateProcessShopStat/export', { + ...queryParams.value + }, `ApsPlateProcessShopStat_${new Date().getTime()}.xlsx`) +} + +getList(); +</script> diff --git a/src/views/mainPlan/platePlanList/index.vue b/src/views/mainPlan/platePlanList/index.vue new file mode 100644 index 0000000..d2169d9 --- /dev/null +++ b/src/views/mainPlan/platePlanList/index.vue @@ -0,0 +1,353 @@ +<template> + <div class="app-container"> + <el-row :gutter="20"> + <el-col> + <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="90px"> + <el-row :gutter="20"> + <el-col :span="12"> + <el-form-item label="宸ュ崟鍙�" prop="num"> + <el-input + v-model="queryParams.workOrderNo" + placeholder="璇疯緭鍏ラ挘閲戣鍒掑伐鍗曞彿" + clearable + @keyup.enter="handleQuery" + /> + </el-form-item> + </el-col> + <el-col :span="12" style="text-align: right;"> + <el-form-item> + <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> + </el-col> + </el-row> + <el-row :gutter="10" class="mb8"> + + <el-col :span="1.5"> + <el-button + type="warning" + plain + icon="Download" + @click="handleExport" + v-hasPermi="['apsPlateProcessStat:export']" + >瀵煎嚭</el-button> + </el-col> + <el-col :span="1.5"> + <el-button + type="success" + plain + icon="Edit" + @click="handleUpdate" + v-hasPermi="['apsPlateProcessStat:edit']" + >鏇存柊</el-button> + </el-col> + + <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> + </el-row> + + <HxlhTable + style="width: 100%" + :columns="columns" + :data="aps_plate_process_statList" + :loading="loading" + :height="height" + > + </HxlhTable> + <!-- 娣诲姞鎴栦慨鏀归挘閲戠粺璁″璇濇 --> + <el-dialog :title="title" v-model="open" width="500px" append-to-body> + <el-form ref="aps_plate_process_statRef" :model="form" :rules="rules" label-width="80px"> + <el-form-item label="鎺掑簭" prop="num"> + <el-input v-model="form.num" placeholder="璇疯緭鍏ユ帓搴�" /> + </el-form-item> + <el-form-item label="鐢熶骇鏁伴噺" prop="productionQuantity"> + <el-input v-model="form.productionQuantity" placeholder="璇疯緭鍏ョ敓浜ф暟閲�" /> + </el-form-item> + <el-form-item label="鏍囧噯宸ユ椂" prop="standardTime"> + <el-input v-model="form.standardTime" placeholder="璇疯緭鍏ユ爣鍑嗗伐鏃�" /> + </el-form-item> + <el-form-item label="宸ュ簭鎬诲伐鏃�" prop="processTotalTime"> + <el-input v-model="form.processTotalTime" placeholder="璇疯緭鍏ュ伐搴忔�诲伐鏃�" /> + </el-form-item> + <el-form-item label="璁捐宸ユ椂" prop="designTimes"> + <el-input v-model="form.designTimes" placeholder="璇疯緭鍏ヨ璁″伐鏃�" /> + </el-form-item> + </el-form> + <template #footer> + <div class="dialog-footer"> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + <el-button @click="cancel">鍙� 娑�</el-button> + </div> + </template> + </el-dialog> + </div> +</template> + +<script setup name="Aps_plate_process_stat"> +import { listPlateStat,updateStat } from "@/api/mainPlan/plateProcessStat"; +import HxlhTable from "@/components/HxlhTable/index.vue"; +import { getToken } from "@/utils/auth"; +import { ref } from "vue"; +import {ElMessage} from "element-plus"; +const { proxy } = getCurrentInstance(); + +const aps_plate_process_statList = ref([]); +const open = ref(false); +const loading = ref(true); +const showSearch = ref(true); +const single = ref(true); +const multiple = ref(true); +const total = ref(0); +const title = ref(""); +const height = ref(document.documentElement.clientHeight - 270 + "px;") + + +const data = reactive({ + form: {}, + queryParams: { + pageNum: 1, + pageSize: 10, + workOrderNo: null, + processName: null, + num: null, + routeProcessNumber: null, + currentProcessNumber: null, + productionQuantity: null, + standardTime: null, + processTotalTime: null, + processPlanEndDay: null, + computePlanEndDay: null, + designTimes: null, + batchNumber: null, + }, + rules: { + } +}); + +const { queryParams, form, rules } = toRefs(data); + + +// 琛ㄦ牸閰嶇疆 +const columns = ref([ +/* { type: 'seq', title: '搴忓彿', width: 60 },*/ + { + title: '宸ュ崟鍙�', + field: 'workOrderNo', + width: 150, + } , + { + title: '宸ュ簭鍚嶇О', + field: 'processName', + }, + { + title: '宸ュ簭鍙�', + field: 'routeProcessNumberTxt', + width: 100, + }, + { + title: '褰撳墠宸ュ簭鍙�', + field: 'currentProcessNumberTxt', + width: 100, + }, + { + title: '鐢熶骇鏁伴噺', + field: 'productionQuantity', + width: 80, + }, + { + title: '鏍囧噯宸ユ椂', + field: 'standardTime', + width: 80, + }, + { + title: '宸ュ簭鎬诲伐鏃�', + field: 'processTotalTime', + width: 80, + + }, + { + title: '璁″垝寮�宸ユ棩', + field: 'processPlanStartDaytxt', + width: 140, + type:'html' + }, + { + title: '璁″垝瀹屽伐鏃�', + field: 'processPlanEndDaytxt', + width: 140, + type:'html' + }, + { + title: '璁㈠崟瀹屽伐鏃�', + field: 'orderPlanEndDay', + width: 120, + format: 'YYYY-MM-DD' + } +]); + + + +/** 鏌ヨ閽i噾缁熻鍒楄〃 */ +function getList() { + loading.value = true; + listPlateStat(queryParams.value).then(response => { + const listValue = response.rows; + listValue.forEach(listItem => { + listItem[`processPlanStartDaytxt`]= listItem.warning? `<font color="red">${listItem.processPlanStartDay}</font>` :listItem.processPlanStartDay; + listItem[`processPlanEndDaytxt`]= listItem.warning? `<font color="red">${listItem.processPlanEndDay}</font>` :listItem.processPlanEndDay; + listItem[`routeProcessNumberTxt`]= listItem.routeProcessNumber.toString().padStart(3, '0'); + listItem[`currentProcessNumberTxt`]= listItem.currentProcessNumber.toString().padStart(3, '0'); + + + }); + aps_plate_process_statList.value =listValue + debugger; + total.value = response.total; + loading.value = false; + }); +} + +// 鍙栨秷鎸夐挳 +function cancel() { + open.value = false; + reset(); +} + +// 琛ㄥ崟閲嶇疆 +function reset() { + form.value = { + id: null, + workOrderNo: null, + processName: null, + num: null, + routeProcessNumber: null, + currentProcessNumber: null, + productionQuantity: null, + standardTime: null, + processTotalTime: null, + processPlanEndDay: null, + computePlanEndDay: null, + designTimes: null, + batchNumber: null, + createBy: null, + delFlag: null + }; + proxy.resetForm("aps_plate_process_statRef"); +} + +/** 鎼滅储鎸夐挳鎿嶄綔 */ +function handleQuery() { + queryParams.value.pageNum = 1; + getList(); +} + +/** 閲嶇疆鎸夐挳鎿嶄綔 */ +function resetQuery() { + queryParams.value.workOrderNo =''; + proxy.resetForm("queryRef"); + handleQuery(); +} + +// 澶氶�夋閫変腑鏁版嵁 +function handleSelectionChange(selection) { + ids.value = selection.map(item => item.id); + single.value = selection.length != 1; + multiple.value = !selection.length; +} + +/** 鏂板鎸夐挳鎿嶄綔 */ +function handleAdd() { + reset(); + open.value = true; + title.value = "娣诲姞閽i噾缁熻"; +} + +/** 淇敼鎸夐挳鎿嶄綔 */ +function handleUpdate(row) { + reset(); + updateStat().then(response => { + form.value = response.data; + ElMessage({ + message: '鏁版嵁鏇存柊鎴愬姛', + type: 'success', + }) + getList(); + }); +} + +/** 鎻愪氦鎸夐挳 */ +function submitForm() { + proxy.$refs["aps_plate_process_statRef"].validate(valid => { + if (valid) { + if (form.value.id != null) { + updateAps_plate_process_stat(form.value).then(response => { + proxy.$modal.msgSuccess("淇敼鎴愬姛"); + open.value = false; + getList(); + }); + } else { + addAps_plate_process_stat(form.value).then(response => { + proxy.$modal.msgSuccess("鏂板鎴愬姛"); + open.value = false; + getList(); + }); + } + } + }); +} + +/** 鍒犻櫎鎸夐挳鎿嶄綔 */ +function handleDelete(row) { + const _ids = row.id || ids.value; + proxy.$modal.confirm('鏄惁纭鍒犻櫎閽i噾缁熻缂栧彿涓�"' + _ids + '"鐨勬暟鎹」锛�').then(function() { + return delAps_plate_process_stat(_ids); + }).then(() => { + getList(); + proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛"); + }).catch(() => {}); +} + +/** 瀵煎嚭鎸夐挳鎿嶄綔 */ +function handleExport() { + proxy.download('/aps/plateProcessStat/export', { + ...queryParams.value + }, `aps_plate_process_stat_${new Date().getTime()}.xlsx`) +} +const headerCellClassName = ({ column }) => { + if (column.field === 'name') { + return 'col-blue' + } + return null +} +const rowClassName = ({ rowIndex }) => { + if ([2, 3, 5].includes(rowIndex)) { + return 'row-green' + } + return null +} +const cellClassName = ({ row, column }) => { + if (column.field === 'processPlanStartDay'||column.field === 'processPlanEndDay') { + if (row.warning) { + return 'col-orange' + } + } + return null +} +getList(); +</script> +<style lang="scss" scoped> +::v-deep(.mytable-style.vxe-table .vxe-body--row.row-green) { + background-color: #187; + color: #fff; +} +::v-deep(.mytable-style.vxe-table .vxe-header--column.col-blue) { + background-color: #2db7f5; + color: #fff; +} +::v-deep(.mytable-style.vxe-table .vxe-body--column.col-red) { + background-color: red; + color: #fff; +} +</style> \ No newline at end of file diff --git a/vite.config.js b/vite.config.js index b9f1c2a..b7d4434 100644 --- a/vite.config.js +++ b/vite.config.js @@ -15,6 +15,13 @@ console.log(VITE_APP_BASE_API, VITE_API_URL); // 鏍规嵁鐜鍙橀噺鍔ㄦ�佽缃唬鐞� const proxyConfig = () => { + const personProxy = { + "/prod-api": { + target: "http://192.168.50.13:8080", // 寮�鍙戠幆澧冪殑鍚庣鍦板潃 + changeOrigin: true, + rewrite: (path) => path.replace(/^\/prod-api/, ""), + }, + }; const devProxy = { "/prod-api": { target: "http://192.168.50.160:8080", // 寮�鍙戠幆澧冪殑鍚庣鍦板潃 @@ -44,6 +51,8 @@ return devProxy; case "staging": return testProxy; + case "dev": + return personProxy; default: // 榛樿寮�鍙戠幆澧� return prodProxy; } -- Gitblit v1.9.3