From db6e95062dfb57bcd1fb1cacdbb3cb4372c576b0 Mon Sep 17 00:00:00 2001
From: chengxiangling <291105840@qq.com>
Date: 星期三, 14 五月 2025 17:34:00 +0800
Subject: [PATCH] 钣金页面表格样式;

---
 src/views/mainPlan/platePlanList/index.vue |  616 +++++++++++++++++++++++++++++++++----------------------
 1 files changed, 366 insertions(+), 250 deletions(-)

diff --git a/src/views/mainPlan/platePlanList/index.vue b/src/views/mainPlan/platePlanList/index.vue
index d2169d9..be15403 100644
--- a/src/views/mainPlan/platePlanList/index.vue
+++ b/src/views/mainPlan/platePlanList/index.vue
@@ -1,75 +1,98 @@
 <template>
   <div class="app-container">
-    <el-row :gutter="20">
+    <!-- <el-row :gutter="20">
       <el-col>
-        <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="90px">
+        <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"
+                  v-model="queryParams.workOrderNo"
+                  placeholder="璇疯緭鍏ラ挘閲戣鍒掑伐鍗曞彿"
+                  clearable
+                  @keyup.enter="handleQuery"
                 />
               </el-form-item>
             </el-col>
-            <el-col  :span="12"  style="text-align: right;">
+            <el-col :span="12" style="text-align: right">
               <el-form-item>
-                <el-button type="primary" icon="Search" @click="handleQuery">鎼滅储</el-button>
+                <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> -->
     <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>
+          type="warning"
+          plain
+          icon="Download"
+          @click="handleExport"
+          v-hasPermi="['plateProcessShopStat:export']"
+          >{{ $t(`common.common.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>
+          type="success"
+          plain
+          icon="Refresh"
+          @click="handleUpdate"
+          :disabled="loading"
+          v-hasPermi="['plateProcessShopStat:update']"
+          >{{ $t(`common.common.update`) }}</el-button
+        >
       </el-col>
 
-      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar :search="false" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <HxlhTable
-        style="width: 100%"
-        :columns="columns"
-        :data="aps_plate_process_statList"
-        :loading="loading"
-        :height="height"
+      style="width: 100%"
+      ref="xGrid"
+      :key="columnsVersion"
+      :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-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-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-input
+            v-model="form.processTotalTime"
+            placeholder="璇疯緭鍏ュ伐搴忔�诲伐鏃�"
+          />
         </el-form-item>
         <el-form-item label="璁捐宸ユ椂" prop="designTimes">
           <el-input v-model="form.designTimes" placeholder="璇疯緭鍏ヨ璁″伐鏃�" />
@@ -81,261 +104,354 @@
           <el-button @click="cancel">鍙� 娑�</el-button>
         </div>
       </template>
-    </el-dialog>
+    </el-dialog> -->
   </div>
 </template>
 
-<script setup name="Aps_plate_process_stat">
-import { listPlateStat,updateStat } from "@/api/mainPlan/plateProcessStat";
+<script setup name="ApsPlatePlanList">
+import {
+  listApsPlateProcessShopStat,
+  listApsPlateProcessShopStatUpdate,
+} from "@/api/mainPlan/apsPlatePlanList";
 import HxlhTable from "@/components/HxlhTable/index.vue";
 import { getToken } from "@/utils/auth";
-import { ref } from "vue";
-import {ElMessage} from "element-plus";
+import { nextTick, onMounted, ref } from "vue";
+// import { ElMessage } from "element-plus";
+import { useI18n } from "vue-i18n"; //瑕佸湪js涓娇鐢ㄥ浗闄呭寲
+// import i18n from "@/utils/i18n";
+// const t = i18n.global.t
+const { t, locale } = useI18n();
 const { proxy } = getCurrentInstance();
-
+// console.log(proxy.$i18n.locale, "indexPlanList");
 const aps_plate_process_statList = ref([]);
+const dynamicList = ref([]);
+const generateColumnList = ref([]);
 const open = ref(false);
-const loading = ref(true);
+const loading = ref(false);
 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 height = ref(document.documentElement.clientHeight - 180 + "px;");
+const columnsVersion = ref(0);
 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: {
-  }
+  // 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 columns = ref([]);
+const xGrid = ref();
 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'
-  }
-]);
-
-
-
+watch(locale, (newLocale) => {
+  // 閲嶆柊鑾峰彇缈昏瘧鏂囨湰
+  // 琛ㄦ牸閰嶇疆
+  columns.value = [
+    /*  { type: 'seq', title: '搴忓彿', width: 60 },*/
+    {
+      title: t("plan.table.mainPartCustomer"),
+      field: "customer",
+      width: "200",
+      fixed: "left",
+    },
+    {
+      title: t("plan.table.mainPartNumber"),
+      field: "mainPartNumber",
+      width: "120",
+      fixed: "left",
+    },
+    {
+      title: t("plan.table.businessType"),
+      field: "businessType",
+      width: "auto",
+      fixed: "left",
+    },
+    {
+      title: t("plan.table.documentNumber"),
+      field: "documentNumber",
+      width: "180",
+      fixed: "left",
+    },
+    {
+      title: t("plan.table.requirementType"),
+      field: "requirementType",
+      width: "auto",
+      fixed: "left",
+    },
+    {
+      title: t("plan.table.documentStatus"),
+      field: "documentStatus",
+      width: "auto",
+      fixed: "left",
+    },
+    // {
+    //   title: t("plan.table.updateBy"),
+    //   field: "updateBy",
+    //   width: "auto",
+    // },
+    {
+      title: t("plan.table.workCenter"),
+      field: "workCenter",
+      width: "180",
+    },
+    {
+      title: t("plan.table.department"),
+      field: "department",
+      width: "auto",
+    },
+    {
+      title: t("plan.table.opStatus"),
+      field: "opStatus",
+      width: "auto",
+    },
+    {
+      title: t("plan.table.nextOpName"),
+      field: "nextOpName",
+      width: "auto",
+    },
+    {
+      title: t("plan.table.nextProcessDeparment"),
+      field: "nextProcessDeparment",
+      width: "auto",
+    },
+    {
+      title: t("plan.table.itemNumber"),
+      field: "itemNumber",
+      type: "html",
+    },
+    {
+      title: t("plan.table.drawingNo"),
+      field: "drawingNo",
+      width: "auto",
+      // format: 'YYYY-MM-DD'
+    },
+    {
+      title: t("plan.table.versionNumber"),
+      field: "versionNumber",
+      width: "auto",
+      type: "html",
+    },
+    {
+      title: t("plan.table.cheaperCode"),
+      field: "cheaperCode",
+      width: "auto",
+    },
+    {
+      title: t("plan.table.productionQuantity"),
+      field: "productionQuantity",
+      width: "auto",
+      type: "html",
+    },
+    {
+      title: t("plan.table.workorderCreationTime"),
+      field: "orderCreateTime",
+      width: "160",
+    },
+    {
+      title: t("plan.table.workOrderReviewTime"),
+      field: "approveOn",
+      width: "160",
+    },
+    {
+      title: t("plan.table.workOrderStartTime"),
+      field: "startWorkDate",
+      width: "auto",
+    },
+    // {
+    //   title: t("plan.table.planworkOrderTime"),
+    //   field: "planworkOrderTime",
+    //   width: 200,
+    // },
+    {
+      title: t("plan.table.planEndDay"),
+      field: "planEndDay",
+      width: "auto",
+      format: "YYYY-MM-DD hh:mm:ss",
+    },
+  ]
+},{immediate:true, deep:true});
 /** 鏌ヨ閽i噾缁熻鍒楄〃 */
-function getList() {
+async 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;
-  });
+  const response = await listApsPlateProcessShopStat();
+  let listValue = response.data;
+  dynamicList.value = response.shopNames;
+  aps_plate_process_statList.value = listValue;
+  console.log(aps_plate_process_statList.value,"aps_plate_process_statList")
+  total.value = response.total;
+  loading.value = false;
+  await nextTick();
+  aps_plate_process_statList.value = aps_plate_process_statList.value.map(
+    (item, index) => {
+      item.deptPlans.map((n, i) => {
+        item[`${i}_startDate`] = n.planStartDate;
+        item[`${i}_endDate`] = n.planEndDate;
+      });
+      return {
+        ...item,
+      };
+    }
+  );
+  let newArray = [];
+  newArray = dynamicList.value.flatMap((item, index) => [
+    {
+      title: `${item}寮�宸ユ椂闂碻,
+      field: `${index}_startDate`,
+      width: 140,
+      formatter: ({ cellValue, row, column }) => {
+        let dateStr = "";
+        if (cellValue) {
+          row.deptPlans.map((n, i) => {
+            if (item === n.shopName) {
+              // console.log(
+              //   item,
+              //   n.shopName,
+              //   n.planStartDate,
+              //   `${item}寮�濮嬫椂闂碻,
+              //   "planStartDate"
+              // );
+              dateStr = n.planStartDate;
+            }
+          });
+        }
+        return dateStr;
+      },
+    },
+    {
+      title: `${item}瀹屽伐鏃堕棿`,
+      field: `${index}_endDate`,
+      width: 140,
+      formatter: ({ cellValue, row, column }) => {
+        let dateStr = "";
+        if (cellValue) {
+          row.deptPlans.map((n, i) => {
+            if (item === n.shopName) {
+              // console.log(
+              //   item,
+              //   n.shopName,
+              //   n.planStartDate,
+              //   `${item}寮�濮嬫椂闂碻,
+              //   "planStartDate"
+              // );
+              dateStr = n.planEndDate;
+            }
+          });
+        }
+        return dateStr;
+      },
+    },
+  ]);
+  // newArray.splice(2, 0, {
+  //   title: "鐒婃帴浠堕綈濂楀紑濮嬫椂闂�",
+  //   field: "hanjie_startDate",
+  //   width: 140,
+  // });
+  columns.value = [
+    ...columns.value,
+    ...newArray.filter(
+      (item) => !columns.value.some((col) => col.field === item.field)
+    ),
+  ];
+  
+  // columns.value = columns.value
 }
 
-// 鍙栨秷鎸夐挳
-function cancel() {
-  open.value = false;
-  reset();
-}
+// // 鍙栨秷鎸夐挳
+// 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 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 handleQuery() {
+//   queryParams.value.pageNum = 1;
+//   getList();
+// }
 
 /** 閲嶇疆鎸夐挳鎿嶄綔 */
-function resetQuery() {
-  queryParams.value.workOrderNo ='';
-  proxy.resetForm("queryRef");
-  handleQuery();
-}
+// 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 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 handleAdd() {
+//   reset();
+//   open.value = true;
+//   title.value = "娣诲姞閽i噾缁熻";
+// }
 
 /** 淇敼鎸夐挳鎿嶄綔 */
 function handleUpdate(row) {
-  reset();
-  updateStat().then(response => {
-    form.value = response.data;
+  loading.value = true;
+  listApsPlateProcessShopStatUpdate().then((response) => {
+    // form.value = response.data;
     ElMessage({
-      message: '鏁版嵁鏇存柊鎴愬姛',
-      type: 'success',
-    })
+      message: t("plan.message.update"),
+      type: "success",
+    });
+    loading.value = false;
     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
+  proxy.download(
+    "/aps/plateProcessShopStat/export",
+    {},
+    `aps_plate_plan_list_${new Date().getTime()}.xlsx`
+  );
 }
 getList();
+// onMounted(async () => {
+//   await nextTick();
+  
+// });
 </script>
 <style lang="scss" scoped>
 ::v-deep(.mytable-style.vxe-table .vxe-body--row.row-green) {
@@ -350,4 +466,4 @@
   background-color: red;
   color: #fff;
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3