From a07f90d6106971923e8f761f253a9b4d30a60752 Mon Sep 17 00:00:00 2001
From: CD配唱片 <CD配唱片>
Date: 星期二, 06 五月 2025 15:37:30 +0800
Subject: [PATCH] Merge branch 'feature-i18n' into dev

---
 src/views/partPlan/index.vue | 1099 +++++++++++++++++++++++++++++++--------------------------
 1 files changed, 595 insertions(+), 504 deletions(-)

diff --git a/src/views/partPlan/index.vue b/src/views/partPlan/index.vue
index 45fc0a9..91e48ac 100644
--- a/src/views/partPlan/index.vue
+++ b/src/views/partPlan/index.vue
@@ -1,67 +1,84 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="90px">
-      <el-row :gutter="20">
+    <el-form
+      :model="queryParams"
+      ref="queryRef"
+      :inline="true"
+      v-show="showSearch"
+      :label-width="locale === 'zh' ? '90px' : '180px'"
+      label-position="left"
+    >
+      <el-row :gutter="10" class="mb8">
+        <!-- <el-col
+          :span="6"> -->
+        <el-form-item :label="$t('plan.query.daterangePlanStartDay')">
+          <el-date-picker
+            style="width: 240px"
+            v-model="daterangePlanStartDay"
+            value-format="YYYY-MM-DD"
+            type="daterange"
+            range-separator="-"
+            :start-placeholder="$t('plan.placeholder.startDate')"
+            :end-placeholder="$t('plan.placeholder.endDate')"
+          ></el-date-picker>
+        </el-form-item>
+        <!-- </el-col>
+        <el-col :span="6"> -->
+        <el-form-item :label="$t('plan.query.daterangePlanEndDay')">
+          <el-date-picker
+            style="width: 240px"
+            v-model="daterangePlanEndDay"
+            value-format="YYYY-MM-DD"
+            type="daterange"
+            range-separator="-"
+            :start-placeholder="$t('plan.placeholder.startDate')"
+            :end-placeholder="$t('plan.placeholder.endDate')"
+          ></el-date-picker>
+        </el-form-item>
+        <!-- </el-col>
         <el-col
-          :span="6">
-          <el-form-item label="璁″垝寮�宸ユ棩" style="width: 100%;">
-            <el-date-picker
-              v-model="daterangePlanStartDay"
-              value-format="YYYY-MM-DD"
-              type="daterange"
-              range-separator="-"
-              start-placeholder="寮�濮嬫棩鏈�"
-              end-placeholder="缁撴潫鏃ユ湡"
-            ></el-date-picker>
-          </el-form-item>
-        </el-col>
-        <el-col   :span="6">
-          <el-form-item label="璁″垝瀹屽伐鏃�" style="width: 100%;">
-            <el-date-picker
-              v-model="daterangePlanEndDay"
-              value-format="YYYY-MM-DD"
-              type="daterange"
-              range-separator="-"
-              start-placeholder="寮�濮嬫棩鏈�"
-              end-placeholder="缁撴潫鏃ユ湡"
-            ></el-date-picker>
-          </el-form-item>
-        </el-col>
-        <el-col
-          :span="6">
-          <el-form-item label="鍗曟嵁鍙�" prop="documentNumber" style="width: 100%;">
-            <el-input
-              v-model="queryParams.documentNumber"
-              placeholder="璇疯緭鍏ュ崟鎹彿"
-              clearable
-              @keyup.enter="handleQuery"
-            />
-          </el-form-item>
-        </el-col>
-        <el-col
-          :span="6">
-          <el-form-item label="瀹㈡埛鍚嶇О" prop="customer" style="width: 100%;">
-            <el-input
-              v-model="queryParams.customer"
-              placeholder="璇疯緭鍏ュ鎴峰悕绉�"
-              clearable
-              @keyup.enter="handleQuery"
-            />
-          </el-form-item>
-        </el-col>
+          :span="6"> -->
+        <el-form-item
+          :label="$t('plan.query.documentNumber')"
+          prop="documentNumber"
+        >
+          <el-input
+            v-model="queryParams.documentNumber"
+            :placeholder="$t('plan.placeholder.documentNumber')"
+            clearable
+            style="width: 240px"
+            @keyup.enter="handleQuery"
+          />
+        </el-form-item>
+        <!-- </el-col>
+       <el-col
+          :span="6"> -->
+        <el-form-item :label="$t('plan.query.customer')" prop="customer">
+          <el-input
+            style="width: 240px"
+            v-model="queryParams.customer"
+            :placeholder="$t('plan.placeholder.customer')"
+            clearable
+            @keyup.enter="handleQuery"
+          />
+        </el-form-item>
+        <!-- </el-col>
         <el-col
           :span="24"
-          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>
-        
-        
+          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 :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
@@ -71,7 +88,8 @@
           :disabled="single"
           @click="plannedStart"
           v-hasPermi="['partPlan:add']"
-        >鎵归噺淇敼璁″垝寮�宸ユ棩</el-button>
+          >{{ $t("plan.btns.batchPlanStartDay") }}</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -81,16 +99,18 @@
           :disabled="single"
           @click="plannedEnd"
           v-hasPermi="['partPlan:edit']"
-        >鎵归噺淇敼璁″垝瀹屽伐鏃�</el-button>
+          >{{ $t("plan.btns.batchPlanEndDay") }}</el-button
+        >
       </el-col>
       <el-col :span="1.5">
-        <el-button 
-          type="info" 
-          plain 
-          icon="Upload" 
-          @click="handleImport" 
+        <el-button
+          type="info"
+          plain
+          icon="Upload"
+          @click="handleImport"
           v-hasPermi="['partPlan:import']"
-          >瀵煎叆</el-button>
+          >{{ $t("common.common.import") }}</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -99,30 +119,42 @@
           icon="Download"
           @click="handleExport"
           v-hasPermi="['partPlan:export']"
-        >瀵煎嚭</el-button>
+          >{{ $t("common.common.export") }}</el-button
+        >
       </el-col>
-      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar
+        v-model:showSearch="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
     </el-row>
 
     <HxlhTable
-        style="width: 100%"
-        :columns="columns"
-        :data="planList"
-        :loading="loading"
-        :height="height"
-        @on-checkbox="handleCheckboxChange"
+      style="width: 100%"
+      :columns="columns"
+      :data="planList"
+      :loading="loading"
+      :height="height"
+      @on-checkbox="handleCheckboxChange"
     >
     </HxlhTable>
 
     <!-- 瀵煎叆瀵硅瘽妗� -->
-    <el-dialog :title="upload.title" v-model="upload.open" width="90%" append-to-body @close="dialogCancel">
+    <el-dialog
+      :title="upload.title"
+      v-model="upload.open"
+      width="90%"
+      append-to-body
+      @close="dialogCancel"
+    >
       <el-row :gutter="10">
         <el-col>
-          <div style="border-bottom: 1px solid #ccc;" >
-            <p>涓婁紶Excel鏂囦欢锛屽寘鍚浂浠跺伐鍗曚俊鎭�傜郴缁熷皢瑙f瀽鏁版嵁骞朵繚瀛樺埌鏈湴锛岀敤浜庡叧鑱斿埌闆朵欢璁″垝涓��</p>
+          <div style="border-bottom: 1px solid #ccc">
+            <p>
+              {{ $t("plan.upload.info") }}
+            </p>
           </div>
         </el-col>
-        <el-col >
+        <el-col>
           <div></div>
         </el-col>
         <!-- <el-col>
@@ -133,7 +165,7 @@
         </el-col> -->
       </el-row>
 
-      <el-row :gutter="10" style="margin-top: 20px;">
+      <el-row :gutter="10" style="margin-top: 20px">
         <!-- <el-col :span="1.5">
           <el-button
             type="primary"
@@ -162,15 +194,29 @@
       </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-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>
+            <div class="el-upload__text">
+              {{ $t("plan.upload.prevText")
+              }}<em>{{ $t("plan.upload.uploadText") }}</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>
+                <span>{{ $t("plan.upload.fileTypeImport") }}</span>
                 <!-- <el-link type="primary" :underline="false" style="font-size: 12px; vertical-align: baseline" @click="importTemplate">涓嬭浇妯℃澘</el-link> -->
               </div>
             </template>
@@ -178,19 +224,31 @@
         </el-col>
       </el-row>
       <el-row>
-        <el-col style="margin-top: 20px;">
+        <el-col style="margin-top: 20px">
           <div v-show="isVisible">
-            <el-alert icon="Check" :show-icon="true" title="闆朵欢宸ュ崟鏁版嵁宸叉垚鍔熻В鏋�" type="success" :closable="false"/>
+            <el-alert
+              icon="Check"
+              :show-icon="true"
+              :title="$t('plan.message.dataWorkorderSuccess')"
+              type="success"
+              :closable="false"
+            />
           </div>
           <div v-show="isError">
-            <el-alert icon="Close" :show-icon="true" title="闆朵欢宸ュ崟鏁版嵁宸茶В鏋愬け璐�" type="error" :closable="false"/>
+            <el-alert
+              icon="Close"
+              :show-icon="true"
+              :title="$t('plan.message.dataWorkorderSuccess')"
+              type="error"
+              :closable="false"
+            />
           </div>
         </el-col>
       </el-row>
       <el-row v-show="isVisible">
         <el-col>
           <div>
-            <h2>鏁版嵁棰勮</h2>
+            <h2>{{$t("plan.upload.dataPreview")}}</h2>
           </div>
           <HxlhTable
             style="width: 100%"
@@ -203,8 +261,11 @@
           </HxlhTable>
         </el-col>
         <el-col>
-          <div style="text-align: right;">
-            <h4>鍏变笂浼�<span style="color: blue;">{{ total }}</span>鏉¢浂浠跺伐鍗曟暟鎹�</h4>
+          <div style="text-align: right">
+            <h4>
+              {{$t("plan.upload.totalUpload")}}<span style="color: blue">{{ total }}</span
+              >{{$t("plan.upload.itemUpload")}}
+            </h4>
           </div>
         </el-col>
       </el-row>
@@ -212,14 +273,15 @@
         <div class="dialog-footer">
           <!-- <el-button type="primary" @click="submitFileForm">纭� 瀹�</el-button> -->
           <el-button
-              type="success"
-              plain
-              icon="Check"
-              :disabled="planned"
-              @click="uploadParse"
-              v-hasPermi="['partPlan:confirmPart']"
-            >纭涓婁紶</el-button>
-          <el-button @click="dialogCancel">鍙� 娑�</el-button>
+            type="success"
+            plain
+            icon="Check"
+            :disabled="planned"
+            @click="uploadParse"
+            v-hasPermi="['partPlan:confirmPart']"
+            >{{$t("plan.upload.confirmUpload")}}</el-button
+          >
+          <el-button @click="dialogCancel">{{$t("plan.upload.cancel")}}</el-button>
         </div>
       </template>
     </el-dialog>
@@ -227,14 +289,21 @@
 </template>
 
 <script setup name="Plan">
-import { listPlan, examplePlan, confirmPart, addPlan, updatePlan } from "@/api/partPlan/plan";
-import HxlhTable from '@/components/HxlhTable'
+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'
+import { ElMessage } from "element-plus";
 
 const { proxy } = getCurrentInstance();
-
+import { useI18n } from "vue-i18n"; //瑕佸湪js涓娇鐢ㄥ浗闄呭寲
+const { t, locale } = useI18n();
 const exampleList = ref([]);
 const planList = ref([]);
 const loading = ref(true);
@@ -243,7 +312,7 @@
 const total = ref(0);
 const daterangePlanStartDay = ref([]);
 const daterangePlanEndDay = ref([]);
-const height = ref(document.documentElement.clientHeight - 270 + "px;")
+const height = ref(document.documentElement.clientHeight - 270 + "px;");
 const isVisible = ref(false);
 const isError = ref(false);
 const planned = ref(true);
@@ -264,396 +333,404 @@
   // 璁剧疆涓婁紶鐨勮姹傚ご閮�
   headers: { Authorization: "Bearer " + getToken() },
   // 涓婁紶鐨勫湴鍧�
-  url: import.meta.env.VITE_APP_BASE_API + "/aps/partPlan/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 exampleColumns = ref([]);
 
-// 琛ㄦ牸閰嶇疆 
-const columns = ref([
-  { type: 'checkbox', width: 60, align:"center"},
-  { 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([]);
 
 const data = reactive({
   queryParams: {
     documentNumber: null,
     customer: null,
     batchNumber: null,
-  }
+  },
 });
 
 const { queryParams } = toRefs(data);
-
+watch(
+  locale,
+  (newLocale) => {
+    columns.value = [
+      { type: "checkbox", width: 60, align: "center" },
+      { type: "seq", title: t("plan.table.seq"), width: 60 },
+      {
+        title: t("plan.table.masterPlanner"),
+        field: "masterPlanner",
+        width: 100,
+      },
+      {
+        title: t("plan.table.weekDay"),
+        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: t("plan.table.weekCycle"),
+        field: "weekCycle",
+        width: 80,
+      },
+      {
+        title: t("plan.table.mainPartNumber"),
+        field: "mainPartNumber",
+        width: 150,
+      },
+      {
+        title: t("plan.table.mainPartDrawingNumber"),
+        field: "mainPartDrawingNumber",
+        width: 150,
+      },
+      {
+        title: t("plan.table.customer"),
+        field: "customer",
+        width: 200,
+      },
+      {
+        title: t("plan.table.businessType"),
+        field: "businessType",
+        width: 150,
+      },
+      {
+        title: t("plan.table.documentNumber"),
+        field: "documentNumber",
+        width: 150,
+      },
+      {
+        title: t("plan.table.requirementType"),
+        field: "requirementType",
+        width: 150,
+      },
+      {
+        title: t("plan.table.documentStatus"),
+        field: "documentStatus",
+        width: 100,
+      },
+      {
+        title: t("plan.table.itemNumber"),
+        field: "itemNumber",
+        width: 150,
+      },
+      {
+        title: t("plan.table.drawingNo"),
+        field: "drawingNo",
+        width: 150,
+      },
+      {
+        title: t("plan.table.versionNumber"),
+        field: "versionNumber",
+        width: 100,
+      },
+      {
+        title: t("plan.table.productionQuantity"),
+        field: "productionQuantity",
+        width: 100,
+      },
+      {
+        title: t("plan.table.goodProductsQuantity"),
+        field: "goodProductsQuantity",
+        width: 100,
+      },
+      {
+        title: t("plan.table.processNumber"),
+        field: "processNumber",
+        width: 150,
+      },
+      {
+        title: t("plan.table.factoryCenter"),
+        field: "workCenter",
+        width: 150,
+      },
+      {
+        title: t("plan.table.dependencyDepartment"),
+        field: "department",
+        width: 100,
+      },
+      {
+        title: t("plan.table.planStartDay"),
+        field: "planStartDay",
+        width: 100,
+      },
+      {
+        title: t("plan.table.planEndDayDate"),
+        field: "planEndDay",
+        width: 100,
+      },
+      {
+        title: t("plan.table.standbyNumber"),
+        field: "standbyNumber",
+        width: 100,
+      },
+      {
+        title: t("plan.table.standbyName"),
+        field: "standbyName",
+        width: 200,
+      },
+      {
+        title: t("plan.table.standbyStock"),
+        field: "standbyStock",
+        width: 100,
+      },
+      {
+        title: t("plan.table.departmentToNextProcessBelongs"),
+        field: "nextProcessDeparment",
+        width: 150,
+      },
+      {
+        title: t("plan.table.isSuspended"),
+        field: "isSuspended",
+        width: 100,
+      },
+      {
+        title: t("plan.table.isOutsourcing"),
+        field: "isOutsourcing",
+        width: 100,
+      },
+      {
+        title: t("plan.table.account"),
+        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,
+      // },
+    ];
+    exampleColumns.value = [
+      { type: "seq", title: t("plan.table.seq"), width: 60 },
+      {
+        title: t("plan.table.masterPlanner"),
+        field: "masterPlanner",
+        width: 100,
+      },
+      {
+        title: t("plan.table.weekDay"),
+        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: t("plan.table.weekCycle"),
+        field: "weekCycle",
+        width: 80,
+      },
+      {
+        title: t("plan.table.mainPartNumber"),
+        field: "mainPartNumber",
+        width: 150,
+      },
+      {
+        title: t("plan.table.mainPartDrawingNumber"),
+        field: "mainPartDrawingNumber",
+        width: 150,
+      },
+      {
+        title: t("plan.table.customer"),
+        field: "customer",
+        width: 200,
+      },
+      {
+        title: t("plan.table.businessType"),
+        field: "businessType",
+        width: 150,
+      },
+      {
+        title: t("plan.table.documentNumber"),
+        field: "documentNumber",
+        width: 150,
+      },
+      {
+        title: t("plan.table.requirementType"),
+        field: "requirementType",
+        width: 150,
+      },
+      {
+        title: t("plan.table.documentStatus"),
+        field: "documentStatus",
+        width: 100,
+      },
+      {
+        title: t("plan.table.itemNumber"),
+        field: "itemNumber",
+        width: 150,
+      },
+      {
+        title: t("plan.table.drawingNo"),
+        field: "drawingNo",
+        width: 150,
+      },
+      {
+        title: t("plan.table.versionNumber"),
+        field: "versionNumber",
+        width: 100,
+      },
+      {
+        title: t("plan.table.productionQuantity"),
+        field: "productionQuantity",
+        width: 100,
+      },
+      {
+        title: t("plan.table.goodProductsQuantity"),
+        field: "goodProductsQuantity",
+        width: 100,
+      },
+      {
+        title: t("plan.table.processNumber"),
+        field: "processNumber",
+        width: 150,
+      },
+      {
+        title: t("plan.table.factoryCenter"),
+        field: "workCenter",
+        width: 150,
+      },
+      {
+        title: t("plan.table.dependencyDepartment"),
+        field: "department",
+        width: 100,
+      },
+      {
+        title: t("plan.table.planStartDay"),
+        field: "planStartDay",
+        width: 100,
+      },
+      {
+        title: t("plan.table.planEndDayDate"),
+        field: "planEndDay",
+        width: 100,
+      },
+      {
+        title: t("plan.table.standbyNumber"),
+        field: "standbyNumber",
+        width: 100,
+      },
+      {
+        title: t("plan.table.standbyName"),
+        field: "standbyName",
+        width: 200,
+      },
+      {
+        title: t("plan.table.standbyStock"),
+        field: "standbyStock",
+        width: 100,
+      },
+      {
+        title: t("plan.table.departmentToNextProcessBelongs"),
+        field: "nextProcessDeparment",
+        width: 150,
+      },
+      {
+        title: t("plan.table.isSuspended"),
+        field: "isSuspended",
+        width: 100,
+      },
+      {
+        title: t("plan.table.isOutsourcing"),
+        field: "isOutsourcing",
+        width: 100,
+      },
+      {
+        title: t("plan.table.account"),
+        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,
+      // },
+    ];
+    getList();
+  },
+  { immediate: true, deep: true }
+);
 /** 鏌ヨ闆朵欢璁″垝涓存椂绠$悊鍒楄〃 */
 function getExampleList() {
   loading.value = true;
   queryParams.value = {};
   queryParams.value.batchNumber = batchNumber.value;
-  examplePlan(queryParams.value).then(response => {
+  examplePlan(queryParams.value).then((response) => {
     exampleList.value = response.rows;
     total.value = response.total;
     loading.value = false;
@@ -664,15 +741,17 @@
 function getList() {
   loading.value = true;
   queryParams.value.params = {};
-  if (null != daterangePlanStartDay && '' != daterangePlanStartDay) {
-    queryParams.value.params["beginPlanStartDay"] = daterangePlanStartDay.value[0];
-    queryParams.value.params["endPlanStartDay"] = daterangePlanStartDay.value[1];
+  if (null != daterangePlanStartDay && "" != daterangePlanStartDay) {
+    queryParams.value.params["beginPlanStartDay"] =
+      daterangePlanStartDay.value[0];
+    queryParams.value.params["endPlanStartDay"] =
+      daterangePlanStartDay.value[1];
   }
-  if (null != daterangePlanEndDay && '' != daterangePlanEndDay) {
+  if (null != daterangePlanEndDay && "" != daterangePlanEndDay) {
     queryParams.value.params["beginPlanEndDay"] = daterangePlanEndDay.value[0];
     queryParams.value.params["endPlanEndDay"] = daterangePlanEndDay.value[1];
   }
-  listPlan(queryParams.value).then(response => {
+  listPlan(queryParams.value).then((response) => {
     planList.value = response.rows;
     loading.value = false;
   });
@@ -680,7 +759,7 @@
 
 /** 鎼滅储鎸夐挳鎿嶄綔 */
 function handleQuery() {
-  queryParams.value.pageNum = 1;
+  queryParams.value.planNum = 1;
   getList();
 }
 
@@ -698,38 +777,41 @@
 };
 
 /** 鎵归噺淇敼璁″垝寮�宸ユ棩鎸夐挳鎿嶄綔 */
-function plannedStart() {
-  
-}
+function plannedStart() {}
 
 /** 鎵归噺淇敼璁″垝瀹屽伐鏃ユ寜閽搷浣� */
-function plannedEnd() {
-
-}
+function plannedEnd() {}
 
 /** 瀵煎叆鎸夐挳鎿嶄綔 */
 function handleImport() {
-  upload.title = "闆朵欢宸ュ崟鏁版嵁涓婁紶";
+  upload.title = t("plan.upload.uploadPartWorkOrderData");
   upload.open = true;
-};
+}
 
 /** 瀵煎嚭鎸夐挳鎿嶄綔 */
 function handleExport() {
-  proxy.download('aps/partPlan/export', {
-    ...queryParams.value
-  }, `plan_${new Date().getTime()}.xlsx`)
+  proxy.download(
+    "aps/partPlan/export",
+    {
+      ...queryParams.value,
+    },
+    `plan_${new Date().getTime()}.xlsx`
+  );
 }
 
 /** 涓嬭浇妯℃澘鎿嶄綔 */
 function importTemplate() {
-  proxy.download("system/user/importTemplate", {
-  }, `user_template_${new Date().getTime()}.xlsx`);
-};
+  proxy.download(
+    "system/user/importTemplate",
+    {},
+    `user_template_${new Date().getTime()}.xlsx`
+  );
+}
 
 /** buildEexample */
 function buildEexample() {
   proxy.$refs["uploadRef"].submit();
-};
+}
 
 /**鏂囦欢涓婁紶涓鐞� */
 const handleFileUploadProgress = (event, file, fileList) => {
@@ -738,15 +820,24 @@
 
 /** 鏂囦欢涓婁紶鎴愬姛澶勭悊 */
 const handleFileSuccess = (response, file, fileList) => {
-  if(response.code == '200'){
+  if (response.code == "200") {
     batchNumber.value = response.data;
     isVisible.value = true;
     planned.value = false;
     isError.value = false;
     getExampleList();
-  }else{
+  } 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.$alert(
+      "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
+        response.msg +
+        "</div>",
+      t("plan.upload.errorResult"),
+      { dangerouslyUseHTMLString: true,
+        confirmButtonText: t("plan.btns.confirm"),
+        cancelButtonText: t("plan.btns.cancel"),
+       }
+    );
   }
   proxy.$refs["uploadRef"].handleRemove(file);
   upload.isUploading = false;
@@ -756,7 +847,7 @@
 function uploadParse() {
   queryParams.value.params = {};
   queryParams.value.params["batchNumber"] = batchNumber.value;
-  confirmPart(queryParams.value).then(response => {
+  confirmPart(queryParams.value).then((response) => {
     exampleList.value = response.rows;
     loading.value = false;
     isVisible.value = false;
@@ -764,15 +855,15 @@
     planned.value = true;
     upload.open = false;
     ElMessage({
-      message: '闆朵欢宸ュ崟鏁版嵁宸叉垚鍔熶笂浼犲拰瑙f瀽',
-      type: 'success',
-    })
+      message: t("plan.upload.uploadParsePartWorkOrderData"),
+      type: "success",
+    });
     getList();
   });
 }
 
 /** dialog鍙栨秷 */
-function dialogCancel(){
+function dialogCancel() {
   if (uploadRef.value) {
     uploadRef.value.clearFiles();
   }
@@ -783,10 +874,10 @@
   upload.isUploading = false;
 }
 
-getList();
+// getList();
 </script>
 <style lang="css" scoped>
 h4 {
   font-weight: bold;
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3