From 3a61bac8079ae9cad52ecd4ceda99d9105d18647 Mon Sep 17 00:00:00 2001
From: dy <dingyang@lnfxkj.tech>
Date: 星期四, 10 四月 2025 15:08:17 +0800
Subject: [PATCH] 零件页面代码提交
---
src/views/partPlan/index.vue | 435 +++++++++++++++++++++++++++++++++++++++++++++++++----
src/api/partPlan/plan.js | 18 ++
2 files changed, 417 insertions(+), 36 deletions(-)
diff --git a/src/api/partPlan/plan.js b/src/api/partPlan/plan.js
index 7aff9fc..426cc3b 100644
--- a/src/api/partPlan/plan.js
+++ b/src/api/partPlan/plan.js
@@ -42,3 +42,21 @@
method: 'delete'
})
}
+
+// 鏌ヨ闆朵欢璁″垝绠$悊鍒楄〃
+export function examplePlan(query) {
+ return request({
+ url: '/aps/partPlanTemp/list',
+ method: 'get',
+ params: query
+ })
+}
+
+// 鏌ヨ闆朵欢璁″垝绠$悊鍒楄〃
+export function confirmPart(data) {
+ return request({
+ url: '/aps/partPlan/confirmPart',
+ method: 'post',
+ data: data
+ })
+}
\ No newline at end of file
diff --git a/src/views/partPlan/index.vue b/src/views/partPlan/index.vue
index 2b62880..3184793 100644
--- a/src/views/partPlan/index.vue
+++ b/src/views/partPlan/index.vue
@@ -100,24 +100,117 @@
</HxlhTable>
<!-- 鐢ㄦ埛瀵煎叆瀵硅瘽妗� -->
- <el-dialog :title="upload.title" v-model="upload.open" width="400px" append-to-body>
- <el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag>
- <el-icon class="el-icon--upload"><upload-filled /></el-icon>
- <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
- <template #tip>
- <div class="el-upload__tip text-center">
- <div class="el-upload__tip">
- <el-checkbox v-model="upload.updateSupport" />鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
- </div>
- <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span>
- <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="importTemplate">涓嬭浇妯℃澘</el-link>
+ <el-dialog :title="upload.title" v-model="upload.open" width="90%" append-to-body>
+ <el-row :gutter="10">
+ <el-col>
+ <div style="border-bottom: 1px solid #ccc;" >
+ <p>涓婁紶Excel鏂囦欢锛屽寘鍚浂浠跺伐鍗曚俊鎭�傜郴缁熷皢瑙f瀽鏁版嵁骞朵繚瀛樺埌鏈湴锛岀敤浜庡叧鑱斿埌闆朵欢璁″垝涓��</p>
</div>
- </template>
- </el-upload>
+ </el-col>
+ <el-col >
+ <div></div>
+ </el-col>
+ <!-- <el-col>
+ <div>
+ <h2>Excel妯℃澘</h2>
+ <h4>璇蜂笅杞藉苟浣跨敤姝ゆā鏉垮~鍐欏伐鑹鸿矾绾挎暟鎹�</h4>
+ </div>
+ </el-col> -->
+ </el-row>
+
+ <el-row :gutter="10" style="margin-top: 20px;">
+ <!-- <el-col :span="1.5">
+ <el-button
+ type="primary"
+ plain
+ icon="Download"
+ @click="importTemplate"
+ v-hasPermi="['partPlan:add']"
+ >涓嬭浇Excel妯℃澘</el-button>
+ </el-col> -->
+ <!-- <el-col :span="1.5">
+ <el-button
+ type="success"
+ plain
+ icon="Edit"
+ @click="buildEexample"
+ v-hasPermi="['partPlan:edit']"
+ >鐢熸垚绀轰緥鏁版嵁</el-button>
+ </el-col> -->
+ </el-row>
+ <!-- <el-row>
+ <el-col>
+ <div>
+ <h2>鏂囦欢涓婁紶</h2>
+ </div>
+ </el-col>
+ </el-row> -->
+ <el-row>
+ <el-col>
+ <el-upload ref="uploadRef" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="true" drag>
+ <el-icon class="el-icon--upload"><upload-filled /></el-icon>
+ <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div>
+ <template #tip>
+ <div class="el-upload__tip">
+ <!-- <div class="el-upload__tip">
+ <el-checkbox v-model="upload.updateSupport" />鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
+ </div> -->
+ <span>浠呭厑璁稿鍏ls銆亁lsx鏍煎紡鏂囦欢銆�</span>
+ <!-- <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="importTemplate">涓嬭浇妯℃澘</el-link> -->
+ </div>
+ </template>
+ </el-upload>
+ </el-col>
+ </el-row>
+ <el-row style="margin-top: 20px;">
+ <el-col>
+ <div>
+ <el-button
+ type="success"
+ plain
+ icon="Check"
+ :disabled="planned"
+ @click="uploadParse"
+ v-hasPermi="['partPlan:edit']"
+ >涓婁紶骞惰В鏋�</el-button>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row>
+ <el-col style="margin-top: 20px;">
+ <div v-show="isVisible">
+ <el-alert icon="Check" :show-icon="true" title="闆朵欢宸ュ崟鏁版嵁宸叉垚鍔熻В鏋�" type="success" :closable="false"/>
+ </div>
+ <div v-show="isError">
+ <el-alert icon="Close" :show-icon="true" title="闆朵欢宸ュ崟鏁版嵁宸茶В鏋愬け璐�" type="error" :closable="false"/>
+ </div>
+ </el-col>
+ </el-row>
+ <el-row v-show="isVisible">
+ <el-col>
+ <div>
+ <h2>鏁版嵁棰勮</h2>
+ </div>
+ <HxlhTable
+ style="width: 100%"
+ :columns="exampleColumns"
+ :data="exampleList"
+ :loading="loading"
+ :maxHeight="exampleHeight"
+ @on-checkbox="handleCheckboxChange"
+ >
+ </HxlhTable>
+ </el-col>
+ <el-col>
+ <div style="text-align: right;">
+ <h4>鍏变笂浼�<span style="color: blue;">{{ total }}</span>鏉¢浂浠跺伐鍗曟暟鎹�</h4>
+ </div>
+ </el-col>
+ </el-row>
<template #footer>
<div class="dialog-footer">
- <el-button type="primary" @click="submitFileForm">纭� 瀹�</el-button>
- <el-button @click="upload.open = false">鍙� 娑�</el-button>
+ <!-- <el-button type="primary" @click="submitFileForm">纭� 瀹�</el-button> -->
+ <el-button @click="dialogCancel">鍙� 娑�</el-button>
</div>
</template>
</el-dialog>
@@ -125,12 +218,15 @@
</template>
<script setup name="Plan">
-import { listPlan, getPlan, delPlan, addPlan, updatePlan } from "@/api/partPlan/plan";
+import { listPlan, examplePlan, confirmPart, addPlan, updatePlan } from "@/api/partPlan/plan";
import HxlhTable from '@/components/HxlhTable'
import { getToken } from "@/utils/auth";
+import { ref } from "vue";
+import { ElMessage } from 'element-plus'
const { proxy } = getCurrentInstance();
+const exampleList = ref([]);
const planList = ref([]);
const loading = ref(true);
const showSearch = ref(true);
@@ -138,8 +234,13 @@
const total = ref(0);
const daterangePlanStartDay = ref([]);
const daterangePlanEndDay = ref([]);
-const vxeTable = ref(null);
const height = ref(document.documentElement.clientHeight - 260 + "px;")
+const isVisible = ref(false);
+const isError = ref(false);
+const planned = ref(true);
+const batchNumber = ref(null);
+const exampleHeight = ref("500px");
+const uploadRef = ref();
/*** 鐢ㄦ埛瀵煎叆鍙傛暟 */
const upload = reactive({
@@ -154,8 +255,193 @@
// 璁剧疆涓婁紶鐨勮姹傚ご閮�
headers: { Authorization: "Bearer " + getToken() },
// 涓婁紶鐨勫湴鍧�
- url: import.meta.env.VITE_APP_BASE_API + "/system/user/importData"
+ url: import.meta.env.VITE_APP_BASE_API + "/aps/partPlan/importData"
});
+
+// 琛ㄦ牸閰嶇疆
+const exampleColumns = ref([
+ { type: 'seq', title: '搴忓彿', width: 60 },
+ {
+ title: '涓昏鍒掑憳',
+ field: 'masterPlanner',
+ width: 100,
+ },
+ {
+ title: '鍛ㄦ棩',
+ field: 'weekDay',
+ width: 100,
+ formatter: (({ cellValue, row, column }) => {
+ if (cellValue) {
+ const weekDay = new Date(cellValue);
+ const year = weekDay.getFullYear();
+ const month = String(weekDay.getMonth() + 1).padStart(2, '0');
+ const day = String(weekDay.getDate()).padStart(2, '0');
+ return `${month}-${day}`;
+ }
+ return '';
+ })
+ },
+ {
+ title: '鍛ㄥ害',
+ field: 'weekCycle',
+ width: 80,
+ },
+ {
+ title: '涓讳欢鏂欏彿',
+ field: 'mainPartNumber',
+ width: 150,
+ },
+ {
+ title: '涓讳欢鍥惧彿',
+ field: 'mainPartDrawingNumber',
+ width: 150,
+ },
+ {
+ title: '瀹㈡埛鍚嶇О',
+ field: 'customer',
+ width: 200,
+ },
+ {
+ title: '涓氬姟绫诲瀷',
+ field: 'businessType',
+ width: 150,
+ },
+ {
+ title: '鍗曟嵁鍙�',
+ field: 'documentNumber',
+ width: 150,
+ },
+ {
+ title: '闇�姹傚垎绫�',
+ field: 'requirementType',
+ width: 150,
+ },
+ {
+ title: '鍗曟嵁鐘舵��',
+ field: 'documentStatus',
+ width: 100,
+ },
+ {
+ title: '鏂欏彿',
+ field: 'itemNumber',
+ width: 150,
+ },
+ {
+ title: '鍥惧彿',
+ field: 'drawingNo',
+ width: 150,
+ },
+ {
+ title: '鐗堟湰鍙�',
+ field: 'versionNumber',
+ width: 100,
+ },
+ {
+ title: '鐢熶骇鏁伴噺',
+ field: 'productionQuantity',
+ width: 100,
+ },
+ {
+ title: '鑹搧鏁伴噺',
+ field: 'goodProductsQuantity',
+ width: 100,
+ },
+ {
+ title: '宸ュ簭鍙�',
+ field: 'processNumber',
+ width: 150,
+ },
+ {
+ title: '宸ヤ綔涓績',
+ field: 'workCenter',
+ width: 150,
+ },
+ {
+ title: '鎵�灞為儴闂�',
+ field: 'department',
+ width: 100,
+ },
+ {
+ title: '璁″垝寮�宸ユ棩',
+ field: 'planStartDay',
+ width: 100,
+ },
+ {
+ title: '璁″垝瀹屽伐鏃�',
+ field: 'planEndDay',
+ width: 100,
+ },
+ {
+ title: '澶囨枡鏂欏彿',
+ field: 'standbyNumber',
+ width: 100,
+ },
+ {
+ title: '澶囨枡鍚嶇О',
+ field: 'standbyName',
+ width: 200,
+ },
+ {
+ title: '澶囨枡搴撳瓨',
+ field: 'standbyStock',
+ width: 100,
+ },
+ {
+ title: '涓嬮亾宸ュ簭鎵�灞為儴闂�',
+ field: 'nextProcessDeparment',
+ width: 150,
+ },
+ {
+ title: '鏄惁鎸傝捣',
+ field: 'isSuspended',
+ width: 100,
+ },
+ {
+ title: '澶栧崗鏍囪瘑',
+ field: 'isOutsourcing',
+ width: 100,
+ },
+ {
+ title: '璐﹀',
+ field: 'account',
+ width: 100,
+ },
+ {
+ title: '涓婇樁鐗╂枡',
+ field: 'advancedMaterials',
+ width: 100,
+ },
+ {
+ title: '涓婇樁鍗曟嵁鍙�',
+ field: 'advancedDocumentNumber',
+ width: 100,
+ },
+ {
+ title: '涓婇樁闇�姹傛棩鏈�',
+ field: 'advancedRequirementDay',
+ width: 150,
+ },
+ {
+ title: '璁″垝榻愬',
+ field: 'isPlanComplete',
+ width: 100,
+ },
+ {
+ title: '搴撳瓨榻愬',
+ field: 'isStockComplete',
+ width: 100,
+ },
+ {
+ title: '鏄惁鏈夋姌杩斿伐搴�',
+ field: 'hasTurnback',
+ width: 150,
+ },
+ {
+ title: '椋庨櫓鏍囪瘑',
+ field: 'hasRisk',
+ width: 100,
+ },
+]);
// 琛ㄦ牸閰嶇疆
const columns = ref([
@@ -204,17 +490,17 @@
{
title: '涓氬姟绫诲瀷',
field: 'businessType',
- width: 100,
+ width: 150,
},
{
title: '鍗曟嵁鍙�',
field: 'documentNumber',
- width: 100,
+ width: 150,
},
{
title: '闇�姹傚垎绫�',
field: 'requirementType',
- width: 100,
+ width: 150,
},
{
title: '鍗曟嵁鐘舵��',
@@ -224,12 +510,12 @@
{
title: '鏂欏彿',
field: 'itemNumber',
- width: 100,
+ width: 150,
},
{
title: '鍥惧彿',
field: 'drawingNo',
- width: 100,
+ width: 150,
},
{
title: '鐗堟湰鍙�',
@@ -249,12 +535,12 @@
{
title: '宸ュ簭鍙�',
field: 'processNumber',
- width: 100,
+ width: 150,
},
{
title: '宸ヤ綔涓績',
field: 'workCenter',
- width: 100,
+ width: 150,
},
{
title: '鎵�灞為儴闂�',
@@ -279,7 +565,7 @@
{
title: '澶囨枡鍚嶇О',
field: 'standbyName',
- width: 100,
+ width: 200,
},
{
title: '澶囨枡搴撳瓨',
@@ -289,7 +575,7 @@
{
title: '涓嬮亾宸ュ簭鎵�灞為儴闂�',
field: 'nextProcessDeparment',
- width: 100,
+ width: 150,
},
{
title: '鏄惁鎸傝捣',
@@ -319,7 +605,7 @@
{
title: '涓婇樁闇�姹傛棩鏈�',
field: 'advancedRequirementDay',
- width: 100,
+ width: 150,
},
{
title: '璁″垝榻愬',
@@ -334,7 +620,7 @@
{
title: '鏄惁鏈夋姌杩斿伐搴�',
field: 'hasTurnback',
- width: 100,
+ width: 150,
},
{
title: '椋庨櫓鏍囪瘑',
@@ -345,14 +631,25 @@
const data = reactive({
queryParams: {
- pageNum: 1,
- pageSize: 10,
documentNumber: null,
customer: null,
+ batchNumber: null,
}
});
const { queryParams } = toRefs(data);
+
+/** 鏌ヨ闆朵欢璁″垝涓存椂绠$悊鍒楄〃 */
+function getExampleList() {
+ loading.value = true;
+ queryParams.value = {};
+ queryParams.value.batchNumber = batchNumber.value;
+ examplePlan(queryParams.value).then(response => {
+ exampleList.value = response.rows;
+ total.value = response.total;
+ loading.value = false;
+ });
+}
/** 鏌ヨ闆朵欢璁″垝绠$悊鍒楄〃 */
function getList() {
@@ -368,7 +665,6 @@
}
listPlan(queryParams.value).then(response => {
planList.value = response.rows;
- total.value = response.total;
loading.value = false;
});
}
@@ -393,18 +689,18 @@
};
/** 鎵归噺淇敼璁″垝寮�宸ユ棩鎸夐挳鎿嶄綔 */
-function plannedStart(row) {
+function plannedStart() {
}
/** 鎵归噺淇敼璁″垝瀹屽伐鏃ユ寜閽搷浣� */
-function plannedEnd(row) {
-
+function plannedEnd() {
+
}
/** 瀵煎叆鎸夐挳鎿嶄綔 */
function handleImport() {
- upload.title = "瀵煎叆";
+ upload.title = "闆朵欢宸ュ崟鏁版嵁涓婁紶";
upload.open = true;
};
@@ -415,5 +711,72 @@
}, `plan_${new Date().getTime()}.xlsx`)
}
+/** 涓嬭浇妯℃澘鎿嶄綔 */
+function importTemplate() {
+ proxy.download("system/user/importTemplate", {
+ }, `user_template_${new Date().getTime()}.xlsx`);
+};
+
+/** buildEexample */
+function buildEexample() {
+ proxy.$refs["uploadRef"].submit();
+};
+
+/**鏂囦欢涓婁紶涓鐞� */
+const handleFileUploadProgress = (event, file, fileList) => {
+ upload.isUploading = true;
+};
+
+/** 鏂囦欢涓婁紶鎴愬姛澶勭悊 */
+const handleFileSuccess = (response, file, fileList) => {
+ if(response.code == '200'){
+ batchNumber.value = response.data;
+ isVisible.value = true;
+ planned.value = false;
+ isError.value = false;
+ getExampleList();
+ }else{
+ isError.value = true;
+ proxy.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "瀵煎叆缁撴灉", { dangerouslyUseHTMLString: true });
+ }
+ proxy.$refs["uploadRef"].handleRemove(file);
+ upload.isUploading = false;
+};
+
+/** 涓婁紶骞惰В鏋愭寜閽搷浣� */
+function uploadParse() {
+ queryParams.value.params = {};
+ queryParams.value.params["batchNumber"] = batchNumber.value;
+ confirmPart(queryParams.value).then(response => {
+ exampleList.value = response.rows;
+ loading.value = false;
+ isVisible.value = false;
+ isError.value = false;
+ planned.value = true;
+ upload.open = false;
+ ElMessage({
+ message: '闆朵欢宸ュ崟鏁版嵁宸叉垚鍔熶笂浼犲拰瑙f瀽',
+ type: 'success',
+ })
+ getList();
+ });
+}
+
+/** dialog鍙栨秷 */
+function dialogCancel(){
+ if (uploadRef.value) {
+ uploadRef.value.clearFiles();
+ }
+ isVisible.value = false;
+ isError.value = false;
+ planned.value = true;
+ upload.open = false;
+}
+
getList();
</script>
+<style lang="css" scoped>
+h4 {
+ font-weight: bold;
+}
+</style>
\ No newline at end of file
--
Gitblit v1.9.3