From 4079d1c5a3efb6b31879d9f80dd067cc01b11e91 Mon Sep 17 00:00:00 2001
From: CD配唱片 <CD配唱片>
Date: 星期三, 07 五月 2025 11:28:02 +0800
Subject: [PATCH] 对接bom静态页及联调接口

---
 .env.development                                        |    2 
 src/views/mainPlan/sheetMetalOrderManage/index.vue      |  164 +++--
 src/views/basicData/processRouteDataPreparate/index.vue |  525 ++++---------------
 src/utils/i18n/locales/basic/index.js                   |   28 
 src/api/basicData/bom/bom.js                            |   17 
 src/utils/i18n/locales/common/index.js                  |    6 
 vite.config.js                                          |   88 +-
 src/views/basicData/bom/index copy.vue                  |  210 ++++++++
 src/views/basicData/bom/index.vue                       |  491 ++++++++++++------
 9 files changed, 851 insertions(+), 680 deletions(-)

diff --git a/.env.development b/.env.development
index a4a0a7d..605a602 100644
--- a/.env.development
+++ b/.env.development
@@ -10,4 +10,4 @@
 # 閰嶅悎鍚庣鏈嶅姟
 # VITE_APP_LOCAL = 'int'
 # VITE_APP_LOCAL = 'zhl'
-VITE_APP_LOCAL = 'cxl'
\ No newline at end of file
+VITE_APP_LOCAL = 'hjy'
\ No newline at end of file
diff --git a/src/api/basicData/bom/bom.js b/src/api/basicData/bom/bom.js
index 958f630..644724e 100644
--- a/src/api/basicData/bom/bom.js
+++ b/src/api/basicData/bom/bom.js
@@ -1,5 +1,20 @@
 import request from '@/utils/request'
-
+// /ApsBomHeader/list
+export function listApsBomHeaderList(query) {
+  return request({
+    url: '/aps/ApsBomHeader/list',
+    method: 'get',
+    params: query
+  })
+}
+// /ApsBom/list
+export function listApsBomLineList(query) {
+  return request({
+    url: '/aps/ApsBom/list',
+    method: 'get',
+    params: query
+  })
+}
 // 鏌ヨBOM鏁版嵁绠$悊鍒楄〃
 export function listApsBom(query) {
   return request({
diff --git a/src/utils/i18n/locales/basic/index.js b/src/utils/i18n/locales/basic/index.js
index f6c7e6d..06640e5 100644
--- a/src/utils/i18n/locales/basic/index.js
+++ b/src/utils/i18n/locales/basic/index.js
@@ -1,13 +1,33 @@
 export const zh = {
   query: {},
   upload: {},
-  table: {},
-  table: {},
+  table: {
+    processRouteID:"宸ヨ壓璺嚎ID",
+    processRouteVersion:"宸ヨ壓璺嚎鐗堟湰",
+    effectiveDate:"鐢熸晥鏃ユ湡",
+    expiringDate:"澶辨晥鏃ユ湡",
+    integrationDate:"闆嗘垚鏃ユ湡",
+    applicableFactories:"閫傜敤宸ュ巶",
+    parentPartNumber:"鐖剁骇鏂欏彿",
+    parentMaterialDescription:"鐖剁骇鐗╂枡鎻忚堪",
+    materialDescription:"鐗╂枡鎻忚堪",
+    usage:"鐢ㄩ噺"
+  }
 };
 
 export const en = {
   query: {},
   upload: {},
-  table: {},
-  table: {},
+  table: {
+    processRouteID:"Process route ID",
+    processRouteVersion:"Process route version",
+    effectiveDate:"effective date",
+    expiringDate:"expiring date",
+    integrationDate:"Integration date",
+    applicableFactories:"Applicable factories",
+    parentPartNumber:"Parent part number",
+    parentMaterialDescription:"Parent material description",
+    materialDescription:"Material Description",
+    usage:"usage"
+  }
 };
diff --git a/src/utils/i18n/locales/common/index.js b/src/utils/i18n/locales/common/index.js
index d15fd0c..4173e34 100644
--- a/src/utils/i18n/locales/common/index.js
+++ b/src/utils/i18n/locales/common/index.js
@@ -18,7 +18,8 @@
     edit: "缂栬緫",
     save: "淇濆瓨",
     cancel: "鍙栨秷",
-    placeholder:"璇疯緭鍏�"
+    placeholder:"璇疯緭鍏�",
+    view:"鏌ョ湅"
   },
 };
 export const en = {
@@ -41,6 +42,7 @@
     edit: "Edit",
     save: "Save",
     cancel: "Cancel",
-    placeholder:"Please enter the "
+    placeholder:"Please enter the ",
+    view:"View"
   },
 };
diff --git a/src/views/basicData/bom/index copy.vue b/src/views/basicData/bom/index copy.vue
new file mode 100644
index 0000000..5f530bf
--- /dev/null
+++ b/src/views/basicData/bom/index copy.vue
@@ -0,0 +1,210 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :rules="rules" :inline="true" v-show="showSearch" label-width="68px">
+      <el-row :gutter="20">
+        <el-col :span="6">
+          <el-form-item label="鏂欏彿" prop="itemCode">
+            <el-input
+              v-model="queryParams.itemCode"
+              placeholder="璇疯緭鍏ユ枡鍙�"
+              clearable
+              @keyup.enter="handleQuery"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="18" 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>
+
+    <HxlhTable
+        style="width: 100%"
+        :columns="columns"
+        :data="bomList"
+        :loading="loading"
+        :height="height"
+        :treeConfig="treeConfig"
+        :row-style="getRowStyle"
+    >
+    </HxlhTable>
+  </div>
+</template>
+
+<script setup name="ApsBom">
+import { listApsBom } from "@/api/basicData/bom/bom";
+import { listAll_plant } from "@/api/basicData/plant";
+import axios from 'axios';
+import HxlhTable from '@/components/HxlhTable'
+
+const { proxy } = getCurrentInstance();
+
+const bomList = ref([]);
+const open = ref(false);
+const loading = ref(false);
+const showSearch = ref(true);
+
+const treeConfig= {
+  transform: true,
+  rowField: 'bomId',
+  parentField: 'parentBomId'
+}
+
+const data = reactive({
+  form: {},
+  queryParams: {
+    itemCode: null,
+  },
+  rules: {
+    itemCode: [
+      { required: true, message: "鏂欏彿涓嶈兘涓虹┖", trigger: "blur" }
+    ],
+  }
+});
+
+// 琛ㄦ牸閰嶇疆 
+const columns = ref([
+  {
+    title: 'bomId',
+    field: 'bomId',
+    minWidth: 20, treeNode: true
+  },
+  {
+    title: 'parentBomId',
+    field: 'parentBomId',
+  },
+  {
+    title: '鏂欏彿',
+    field: 'itemCode',
+  },
+  {
+    title: '鐗╂枡鎻忚堪',
+    field: 'itemName',
+  },
+  {
+    title: '鐢熸晥鏃ユ湡',
+    field: 'startDate',
+  },
+  {
+    title: '澶辨晥鏃ユ湡',
+    field: 'endDate',
+  },
+  {
+    title: '閫傜敤宸ュ巶',
+    field: 'orgCode',
+    formatter: (({ cellValue, row, column }) => {
+      if (cellValue) {
+        for(let i=0;i<plantList.value.length;i++){
+          if(cellValue===plantList.value[i].plantCode){
+            return plantList.value[i].plantName
+          }
+        }
+      }
+      return '';
+    })
+  },
+  {
+    title: '鍒涘缓鏃堕棿',
+    field: 'createTime',
+  },
+]);
+
+// 瀹氫箟涓�涓嚱鏁版潵鑾峰彇琛岀殑灞傜骇
+const getRowLevel = (row, dataMap) => {
+  let level = 0
+  let parentBomId = row.parentBomId
+  while (parentBomId!== null) {
+    const parentRow = dataMap.get(parentBomId)
+    if (parentRow) {
+      level++
+      parentBomId = parentRow.parentBomId
+    } else {
+      break
+    }
+  }
+  return level
+}
+
+// 瀹氫箟涓�涓嚱鏁版潵璁剧疆琛岀殑鏍峰紡
+const getRowStyle = (row, rowIndex) => {
+  if (!Array.isArray(bomList.value)) {
+    console.error('bomList 涓嶆槸涓�涓暟缁勭被鍨�');
+    return {};
+  }
+  const dataMap = new Map(bomList.value.map(item => [item.bomId, item]))
+  const level = getRowLevel(row.row, dataMap)
+  const colors = ['#f0f9ff', '#e6f7ff', '#bae7ff', '#91d5ff', '#69c0ff']
+  return {
+    backgroundColor: colors[level % colors.length]
+  }
+}
+
+const { queryParams, form, rules } = toRefs(data);
+
+const queryPlants = ref({status: 1});
+const plantList = ref([]);
+const height = ref(document.documentElement.clientHeight - 180 + "px;")
+
+/** 鏌ヨBOM鏁版嵁绠$悊鍒楄〃 */
+function getList() {
+  loading.value = true;
+  axios.all([
+      listAll_plant(queryPlants.value),
+      listApsBom(queryParams.value)
+    ])
+    .then(axios.spread((response1, response2) => {
+      plantList.value = response1.data;
+      bomList.value = response2.rows;
+      loading.value = false;
+    }))
+    .catch(error => {
+      console.error('璇锋眰鍑洪敊:', error);
+    });
+}
+
+// 鍙栨秷鎸夐挳
+function cancel() {
+  open.value = false;
+  reset();
+}
+
+// 琛ㄥ崟閲嶇疆
+function reset() {
+  form.value = {
+    id: null,
+    bomId: null,
+    parentBomId: null,
+    itemCode: null,
+    itemName: null,
+    startDate: null,
+    endDate: null,
+    orgCode: null,
+    delFlag: null,
+    createBy: null,
+    createTime: null,
+    updateBy: null,
+    updateTime: null
+  };
+  proxy.resetForm("ApsBomRef");
+}
+
+/** 鎼滅储鎸夐挳鎿嶄綔 */
+function handleQuery() {
+  proxy.$refs["queryRef"].validate(valid => {
+    if (valid) {
+        getList();
+      }
+  });
+}
+
+/** 閲嶇疆鎸夐挳鎿嶄綔 */
+function resetQuery() {
+  proxy.resetForm("queryRef");
+  bomList.value = null;
+}
+
+console.log("123");
+</script>
diff --git a/src/views/basicData/bom/index.vue b/src/views/basicData/bom/index.vue
index 5f530bf..1f8c94e 100644
--- a/src/views/basicData/bom/index.vue
+++ b/src/views/basicData/bom/index.vue
@@ -1,210 +1,369 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryRef" :rules="rules" :inline="true" v-show="showSearch" label-width="68px">
-      <el-row :gutter="20">
-        <el-col :span="6">
-          <el-form-item label="鏂欏彿" prop="itemCode">
-            <el-input
-              v-model="queryParams.itemCode"
-              placeholder="璇疯緭鍏ユ枡鍙�"
-              clearable
-              @keyup.enter="handleQuery"
-            />
-          </el-form-item>
-        </el-col>
-        <el-col :span="18" 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-row :gutter="20">
+      <el-form
+        :model="queryParams"
+        ref="queryRef"
+        :rules="rules"
+        :inline="true"
+        v-show="showSearch"
+        :label-width="locale === 'zh' ? '90px' : '120px'"
+      >
+        <el-row :gutter="20">
+          <el-col :span="10">
+            <el-form-item :label="$t('plan.query.itemNumber')" prop="itemCode">
+              <el-input
+                style="width: 240px"
+                v-model="queryParams.itemCode"
+                :placeholder="`${$t('common.common.placeholder')}${$t(
+                  'plan.query.itemNumber'
+                )}`"
+                clearable
+                @keyup.enter="handleQuery"
+              />
             </el-form-item>
-        </el-col>
-      </el-row>
-    </el-form>
+          </el-col>
+          <el-col :span="8">
+            <el-form-item
+              label="閫傜敤宸ュ巶"
+              prop="orgCode"
+            >
+              <el-select
+                clearable
+                v-model="queryParams.orgCode"
+                style="width: 160px"
+                placeholder="璇疯緭鍏ラ�傜敤宸ュ巶"
+              >
+                <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-form>
+    </el-row>
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="Refresh"
+          @click="handleRefresh"
+          v-hasPermi="['apsPartRouteStat:edit']"
+          >{{ $t("common.common.update") }}</el-button
+        >
+      </el-col>
+      <right-toolbar
+        v-model:showSearch="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
 
     <HxlhTable
-        style="width: 100%"
-        :columns="columns"
-        :data="bomList"
-        :loading="loading"
-        :height="height"
-        :treeConfig="treeConfig"
-        :row-style="getRowStyle"
+      style="width: 100%"
+      :columns="columns"
+      :data="bomList"
+      :loading="loading"
+      :height="height"
+      @on-checkbox="handleCheckboxChange"
+      :page="page"
+      @changePageNo="changePageNo"
+      @changePageSize="changePageSize"
     >
+      <!--       :expand-config="expandConfig"
+      :subGridOptions="subGridOptions" -->
+      <template #buttons="{ row }">
+        <el-button
+          type="primary"
+          link
+          @click="handleCheckView(row)"
+          v-hasPermi="['aps:calendar:update']"
+          >鏌ョ湅</el-button
+        >
+      </template>
     </HxlhTable>
+    <el-dialog :title="title" v-model="openDialog" width="900px" append-to-body>
+      <HxlhTable
+        style="width: 100%"
+        :columns="subGridOptions"
+        :data="subList"
+        :loading="loadingSub"
+        :height="heightSub"
+      >
+      </HxlhTable>
+    </el-dialog>
   </div>
 </template>
 
-<script setup name="ApsBom">
-import { listApsBom } from "@/api/basicData/bom/bom";
+<script setup name="ApsPlatePlan">
+import {
+  listApsBomHeaderList,
+  listApsBomLineList,
+} from "@/api/basicData/bom/bom.js";
 import { listAll_plant } from "@/api/basicData/plant";
-import axios from 'axios';
-import HxlhTable from '@/components/HxlhTable'
-
+import HxlhTable from "@/components/HxlhTable/index.vue";
+import { ElMessage } from "element-plus";
+import { useI18n } from "vue-i18n"; //瑕佸湪js涓娇鐢ㄥ浗闄呭寲
+const { t, locale } = useI18n();
 const { proxy } = getCurrentInstance();
-
+// 鍒嗛〉灞炴��
+const page = ref({
+  total: 0,
+  current: 1,
+  size: 10,
+});
+const plantList = ref([]);
 const bomList = ref([]);
-const open = ref(false);
+const subList = ref([]);
 const loading = ref(false);
+const loadingSub = ref(false);
 const showSearch = ref(true);
-
-const treeConfig= {
-  transform: true,
-  rowField: 'bomId',
-  parentField: 'parentBomId'
-}
-
+const total = ref(0);
+const height = ref(document.documentElement.clientHeight - 270 + "px;");
+const heightSub = ref(document.documentElement.clientHeight - 320 + "px;");
+// 琛ㄦ牸閰嶇疆
+const columns = ref([]);
+const subGridOptions = ref([]);
+const openDialog = ref(false);
 const data = reactive({
-  form: {},
   queryParams: {
+    pageNum: 1,
+    pageSize: 10,
     itemCode: null,
+    orgCode:""
   },
-  rules: {
-    itemCode: [
-      { required: true, message: "鏂欏彿涓嶈兘涓虹┖", trigger: "blur" }
-    ],
-  }
+  rules: {},
 });
 
-// 琛ㄦ牸閰嶇疆 
-const columns = ref([
-  {
-    title: 'bomId',
-    field: 'bomId',
-    minWidth: 20, treeNode: true
-  },
-  {
-    title: 'parentBomId',
-    field: 'parentBomId',
-  },
-  {
-    title: '鏂欏彿',
-    field: 'itemCode',
-  },
-  {
-    title: '鐗╂枡鎻忚堪',
-    field: 'itemName',
-  },
-  {
-    title: '鐢熸晥鏃ユ湡',
-    field: 'startDate',
-  },
-  {
-    title: '澶辨晥鏃ユ湡',
-    field: 'endDate',
-  },
-  {
-    title: '閫傜敤宸ュ巶',
-    field: 'orgCode',
-    formatter: (({ cellValue, row, column }) => {
-      if (cellValue) {
-        for(let i=0;i<plantList.value.length;i++){
-          if(cellValue===plantList.value[i].plantCode){
-            return plantList.value[i].plantName
+const { queryParams, rules } = toRefs(data);
+watch(
+  locale,
+  (newLocale) => {
+    rules.value = {
+      itemCode: [
+        {
+          required: true,
+          message: `${t("common.common.placeholder")}${t(
+            "plan.query.itemNumber"
+          )}`,
+          trigger: "blur",
+        },
+      ],
+    };
+    columns.value = [
+      // {
+      //   field: "expand",
+      //   type: "expand",
+      //   width: 60,
+      //   align: "center",
+      //   slots: { content: "expandContent" },
+      // },
+      // { type: "checkbox", width: 60, align: "center" },
+      {
+        title: "BOM_Header_ID",
+        field: "bomHeaderId",
+      },
+      {
+        title: t("basic.table.parentPartNumber"),
+        field: "itemCode",
+      },
+      {
+        title: t("basic.table.parentMaterialDescription"),
+        field: "itemName",
+      },
+      {
+        title: t("basic.table.effectiveDate"),
+        field: "startDate",
+      },
+      {
+        title: t("basic.table.expiringDate"),
+        field: "endDate",
+      },
+      {
+        title: t("basic.table.integrationDate"),
+        field: "createTime",
+      },
+      {
+        title: t("basic.table.applicableFactories"),
+        field: "orgCode",
+        formatter: ({ cellValue, row, column }) => {
+          if (cellValue) {
+            for (let i = 0; i < plantList.value.length; i++) {
+              if (cellValue === plantList.value[i].plantCode) {
+                return plantList.value[i].plantName;
+              }
+            }
           }
-        }
-      }
-      return '';
-    })
+        },
+      },
+      {
+        title: "鎿嶄綔",
+        width: 100,
+        fixed: "right",
+        slots: { default: "buttons" },
+        align: "center",
+      },
+    ];
+    subGridOptions.value = [
+      {
+        title: "BOM_Line_ID",
+        field: "bomLineId",
+        width: 150,
+        align: "center",
+      },
+      {
+        title: "BOM_Header_ID",
+        field: "bomHeaderId",
+        width: 150,
+        align: "center",
+      },
+      {
+        title: t("plan.table.itemNumber"),
+        field: "itemCode",
+        width: 100,
+        align: "center",
+      },
+      {
+        title: t("basic.table.materialDescription"),
+        field: "itemName",
+        width: 100,
+        align: "center",
+      },
+      {
+        title: t("basic.table.usage"),
+        field: "num",
+        width: 100,
+        align: "center",
+      },
+      {
+        title: t("basic.table.effectiveDate"),
+        field: "startDate",
+        width: 150,
+        align: "center",
+      },
+      {
+        title: t("basic.table.expiringDate"),
+        field: "endDate",
+        width: 200,
+        align: "center",
+      },
+      {
+        title: t("basic.table.integrationDate"),
+        field: "createTime",
+        width: 200,
+        align: "center",
+      },
+      {
+        title: t("basic.table.applicableFactories"),
+        field: "orgCode",
+        width: 90,
+        align: "center",
+        formatter: ({ cellValue, row, column }) => {
+          if (cellValue) {
+            for (let i = 0; i < plantList.value.length; i++) {
+              if (cellValue === plantList.value[i].plantCode) {
+                return plantList.value[i].plantName;
+              }
+            }
+          }
+        },
+      },
+    ];
   },
-  {
-    title: '鍒涘缓鏃堕棿',
-    field: 'createTime',
-  },
-]);
+  { immediate: true, deep: true }
+);
 
-// 瀹氫箟涓�涓嚱鏁版潵鑾峰彇琛岀殑灞傜骇
-const getRowLevel = (row, dataMap) => {
-  let level = 0
-  let parentBomId = row.parentBomId
-  while (parentBomId!== null) {
-    const parentRow = dataMap.get(parentBomId)
-    if (parentRow) {
-      level++
-      parentBomId = parentRow.parentBomId
-    } else {
-      break
-    }
-  }
-  return level
+function changePageNo(currentPage) {
+  queryParams.value.pageNum = currentPage;
+  page.value.current = currentPage;
+  getList();
+}
+function changePageSize(pageSize) {
+  page.value.current = 1;
+  queryParams.value.pageNum = 1;
+  queryParams.value.pageSize = pageSize;
+  getList();
 }
 
-// 瀹氫箟涓�涓嚱鏁版潵璁剧疆琛岀殑鏍峰紡
-const getRowStyle = (row, rowIndex) => {
-  if (!Array.isArray(bomList.value)) {
-    console.error('bomList 涓嶆槸涓�涓暟缁勭被鍨�');
-    return {};
-  }
-  const dataMap = new Map(bomList.value.map(item => [item.bomId, item]))
-  const level = getRowLevel(row.row, dataMap)
-  const colors = ['#f0f9ff', '#e6f7ff', '#bae7ff', '#91d5ff', '#69c0ff']
-  return {
-    backgroundColor: colors[level % colors.length]
-  }
-}
-
-const { queryParams, form, rules } = toRefs(data);
-
-const queryPlants = ref({status: 1});
-const plantList = ref([]);
-const height = ref(document.documentElement.clientHeight - 180 + "px;")
-
-/** 鏌ヨBOM鏁版嵁绠$悊鍒楄〃 */
+/** 鏌ヨ闆朵欢璁″垝绠$悊鍒楄〃 */
 function getList() {
+  page.value.current = 1;
+  queryParams.value.pageNum = 1;
   loading.value = true;
-  axios.all([
-      listAll_plant(queryPlants.value),
-      listApsBom(queryParams.value)
-    ])
-    .then(axios.spread((response1, response2) => {
-      plantList.value = response1.data;
-      bomList.value = response2.rows;
+  listApsBomHeaderList(queryParams.value)
+    .then((response) => {
+      console.log(response, "listApsBomHeaderList");
+      bomList.value = response.rows;
+      page.value.total = response.total;
       loading.value = false;
-    }))
-    .catch(error => {
-      console.error('璇锋眰鍑洪敊:', error);
+    })
+    .catch(() => {
+      loading.value = false;
     });
-}
-
-// 鍙栨秷鎸夐挳
-function cancel() {
-  open.value = false;
-  reset();
-}
-
-// 琛ㄥ崟閲嶇疆
-function reset() {
-  form.value = {
-    id: null,
-    bomId: null,
-    parentBomId: null,
-    itemCode: null,
-    itemName: null,
-    startDate: null,
-    endDate: null,
-    orgCode: null,
-    delFlag: null,
-    createBy: null,
-    createTime: null,
-    updateBy: null,
-    updateTime: null
-  };
-  proxy.resetForm("ApsBomRef");
 }
 
 /** 鎼滅储鎸夐挳鎿嶄綔 */
 function handleQuery() {
-  proxy.$refs["queryRef"].validate(valid => {
+  proxy.$refs["queryRef"].validate((valid) => {
     if (valid) {
-        getList();
-      }
+      getList();
+    }
   });
 }
 
 /** 閲嶇疆鎸夐挳鎿嶄綔 */
 function resetQuery() {
+  page.value.current = 1;
+  page.value.total = 0;
+  queryParams.value.pageNum = 1;
   proxy.resetForm("queryRef");
-  bomList.value = null;
+  bomList.value = [];
+  subList.value = [];
 }
 
-console.log("123");
+function handleCheckView(row) {
+  openDialog.value = true;
+  listApsBomLineList({ bomHeaderId: row.bomHeaderId }).then((data) => {
+    console.log(data, "listApsBomLineList");
+    subList.value = data.rows;
+  });
+}
+
+// /*瀹氫箟涓嬫媺浜岀骇琛�*/
+// const expandConfig = ref({
+//   lazy: true,
+//   loadMethod({ row }) {
+//     // 璋冪敤鎺ュ彛
+//     return listProcessRoute({ workOrderNo: row.documentNumber }).then(
+//       (data) => {
+//         row.subList = data.rows;
+//       }
+//     );
+//   },
+// });
+
+onMounted(async () => {
+  const res = await listAll_plant({});
+  plantList.value = res.data;
+});
 </script>
+<style lang="css" scoped>
+h4 {
+  font-weight: bold;
+}
+</style>
diff --git a/src/views/basicData/processRouteDataPreparate/index.vue b/src/views/basicData/processRouteDataPreparate/index.vue
index 61cebba..f30c099 100644
--- a/src/views/basicData/processRouteDataPreparate/index.vue
+++ b/src/views/basicData/processRouteDataPreparate/index.vue
@@ -15,9 +15,9 @@
               <el-input
                 style="width: 240px"
                 v-model="queryParams.itemCode"
-                 :placeholder="`${$t('common.common.placeholder')}${$t(
-                'plan.query.itemNumber'
-              )}`"
+                :placeholder="`${$t('common.common.placeholder')}${$t(
+                  'plan.query.itemNumber'
+                )}`"
                 clearable
                 @keyup.enter="handleQuery"
               />
@@ -25,14 +25,12 @@
           </el-col>
           <el-col :span="18" style="text-align: right">
             <el-form-item>
-              <el-button type="primary" icon="Search" @click="handleQuery"
-                >{{
-              $t("common.common.query")
-            }}</el-button
-              >
+              <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>
+                $t("common.common.reset")
+              }}</el-button>
             </el-form-item>
           </el-col>
         </el-row>
@@ -46,7 +44,7 @@
           icon="Refresh"
           @click="handleRefresh"
           v-hasPermi="['apsPartRouteStat:edit']"
-          >{{$t("common.common.update")}}</el-button
+          >{{ $t("common.common.update") }}</el-button
         >
       </el-col>
       <right-toolbar
@@ -65,10 +63,33 @@
       :page="page"
       @changePageNo="changePageNo"
       @changePageSize="changePageSize"
-      :expand-config="expandConfig"
-      :subGridOptions="subGridOptions"
     >
+      <!--       :expand-config="expandConfig"
+      :subGridOptions="subGridOptions" -->
+      <template #buttons="{ row }">
+        <el-button
+          type="primary"
+          link
+          @click="handleCheckView(row)"
+          v-hasPermi="['aps:calendar:update']"
+          >鏌ョ湅</el-button
+        >
+      </template>
     </HxlhTable>
+    <el-dialog :title="title" v-model="openDialog" width="900px" append-to-body>
+      <HxlhTable
+        style="width: 100%"
+        :columns="subGridOptions"
+        :data="subList"
+        :loading="loading"
+        :height="heightSub"
+        @on-checkbox="handleCheckboxChange"
+        :page="page"
+        @changePageNo="changePageNo"
+        @changePageSize="changePageSize"
+      >
+      </HxlhTable>
+    </el-dialog>
   </div>
 </template>
 
@@ -83,13 +104,14 @@
 import { ref } from "vue";
 import { getToken } from "@/utils/auth.js";
 import { ElMessage } from "element-plus";
-
+import { useI18n } from "vue-i18n"; //瑕佸湪js涓娇鐢ㄥ浗闄呭寲
+const { t, locale } = useI18n();
 const { proxy } = getCurrentInstance();
 // 鍒嗛〉灞炴��
 const page = ref({
   total: 0,
   current: 1,
-  size: 10
+  size: 10,
 });
 const {
   aps_is_suspended,
@@ -103,264 +125,18 @@
   "aps_business_type"
 );
 
-const exampleList = ref([]);
 const planList = ref([]);
+const subList = ref([]);
 const loading = ref(true);
 const showSearch = ref(true);
 const single = ref(true);
 const total = ref(0);
-const daterangePlanStartDay = ref([]);
-const daterangePlanEndDay = ref([]);
 
 const height = ref(document.documentElement.clientHeight - 270 + "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({
-  // 鏄惁鏄剧ず寮瑰嚭灞傦紙鐢ㄦ埛瀵煎叆锛�
-  open: false,
-  // 寮瑰嚭灞傛爣棰橈紙鐢ㄦ埛瀵煎叆锛�
-  title: "",
-  // 鏄惁绂佺敤涓婁紶
-  isUploading: false,
-  // 鏄惁鏇存柊宸茬粡瀛樺湪鐨勭敤鎴锋暟鎹�
-  updateSupport: 0,
-  // 璁剧疆涓婁紶鐨勮姹傚ご閮�
-  headers: { Authorization: "Bearer " + getToken(), local: "zhl" },
-  // 涓婁紶鐨勫湴鍧�
-  url: import.meta.env.VITE_APP_BASE_API + "/aps/apsPlatePlan/importData",
-});
-
+const heightSub = ref(document.documentElement.clientHeight - 320 + "px;");
 // 琛ㄦ牸閰嶇疆
-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: 180,
-  },
-  {
-    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([
-  {
-    field: "expand",
-    type: "expand",
-    width: 60,
-    align: "center",
-    slots: { content: "expandContent" },
-  },
-  { type: "checkbox", width: 60, align: "center" },
-  {
-    title: "宸ヨ壓璺嚎ID",
-    field: "mainPartNumber",
-  },
-  {
-    title: "宸ヨ壓璺嚎鐗堟湰",
-    field: "businessType",
-  },
-  {
-    title: "鏂欏彿",
-    field: "documentNumber",
-  },
-  {
-    title: "鐢熸晥鏃ユ湡",
-    field: "requirementType",
-  },
-  {
-    title: "澶辨晥鏃ユ湡",
-    field: "documentStatus",
-  },
-  {
-    title: "闆嗘垚鏃ユ湡",
-    field: "itemNumber",
-  },
-  {
-    title: "閫傜敤宸ュ巶",
-    field: "drawingNo",
-  },
-]);
-
+const columns = ref([]);
+const openDialog = ref(false);
 const data = reactive({
   form: {},
   queryParams: {
@@ -371,11 +147,70 @@
     itemCode: null,
   },
   rules: {
-    itemCode: [{ required: true, message: "璇疯緭鍏ユ枡鍙�", trigger: "blur" }],
+    itemCode: [
+      {
+        required: true,
+        message: `${t("common.common.placeholder")}${t(
+          "plan.query.itemNumber"
+        )}`,
+        trigger: "blur",
+      },
+    ],
   },
 });
 
 const { queryParams, form, rules } = toRefs(data);
+watch(
+  locale,
+  (newLocale) => {
+    columns.value = [
+      // {
+      //   field: "expand",
+      //   type: "expand",
+      //   width: 60,
+      //   align: "center",
+      //   slots: { content: "expandContent" },
+      // },
+      // { type: "checkbox", width: 60, align: "center" },
+      {
+        title: t("basic.table.processRouteVersion"),
+        field: "mainPartNumber",
+      },
+      {
+        title: t("basic.table.processRouteVersion"),
+        field: "businessType",
+      },
+      {
+        title: t("plan.table.itemNumber"),
+        field: "documentNumber",
+      },
+      {
+        title: t("basic.table.effectiveDate"),
+        field: "requirementType",
+      },
+      {
+        title: t("basic.table.expiringDate"),
+        field: "documentStatus",
+      },
+      {
+        title: t("basic.table.integrationDate"),
+        field: "itemNumber",
+      },
+      {
+        title: t("basic.table.applicableFactories"),
+        field: "drawingNo",
+      },
+      {
+        title: "鎿嶄綔",
+        width: 100,
+        fixed: "right",
+        slots: { default: "buttons" },
+        align: "center",
+      },
+    ];
+  },
+  { immediate: true, deep: true }
+);
 function changePageNo(currentPage) {
   queryParams.value.pageNum = currentPage;
   page.value.current = currentPage;
@@ -387,32 +222,11 @@
   queryParams.value.pageSize = pageSize;
   getList();
 }
-/** 鏌ヨ閽i噾璁″垝涓存椂绠$悊鍒楄〃 */
-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() {
   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 != daterangePlanEndDay && "" !== daterangePlanEndDay) {
-    queryParams.value.params["beginPlanEndDay"] = daterangePlanEndDay.value[0];
-    queryParams.value.params["endPlanEndDay"] = daterangePlanEndDay.value[1];
-  }
   listPlan(queryParams.value).then((response) => {
     planList.value = response.rows;
     loading.value = false;
@@ -430,117 +244,21 @@
 
 /** 閲嶇疆鎸夐挳鎿嶄綔 */
 function resetQuery() {
-  daterangePlanStartDay.value = [];
-  daterangePlanEndDay.value = [];
   proxy.resetForm("queryRef");
   handleQuery();
 }
 
-// 澶氶�夋閫変腑鏁版嵁
-const handleCheckboxChange = (data) => {
-  console.log(data);
-};
-
-/** 鎵归噺淇敼璁″垝寮�宸ユ棩鎸夐挳鎿嶄綔 */
-function plannedStart() {}
-
-/** 鎵归噺淇敼璁″垝瀹屽伐鏃ユ寜閽搷浣� */
-function plannedEnd() {}
-
-/** 瀵煎叆鎸夐挳鎿嶄綔 */
-function handleImport() {
-  upload.title = "閽i噾璁″垝鏁版嵁涓婁紶";
-  upload.open = true;
+function handleCheckView(row) {
+  openDialog.value = true;
+  listProcessRoute({ workOrderNo: row.documentNumber }).then(
+      (data) => {
+        subList.value = data.rows;
+      })
 }
 
-/** 瀵煎嚭鎸夐挳鎿嶄綔 */
-function handleExport() {
-  proxy.download(
-    "aps/apsPlatePlan/export",
-    {
-      ...queryParams.value,
-    },
-    `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;
-  upload.isUploading = false;
-}
-/*瀹氫箟涓嬫媺浜岀骇琛�*/
-
-const subGridOptions = reactive({
-  border: true,
-  showOverflow: true,
-  columns: [
+const subGridOptions = ref([
     {
       title: "宸ヨ壓璺嚎ID",
       field: "itemNo",
@@ -601,19 +319,18 @@
       width: 160,
       align: "center",
     },
-  ],
-});
-const expandConfig = ref({
-  lazy: true,
-  loadMethod({ row }) {
-    // 璋冪敤鎺ュ彛
-    return listProcessRoute({ workOrderNo: row.documentNumber }).then(
-      (data) => {
-        row.subList = data.rows;
-      }
-    );
-  },
-});
+  ])
+// const expandConfig = ref({
+//   lazy: true,
+//   loadMethod({ row }) {
+//     // 璋冪敤鎺ュ彛
+//     return listProcessRoute({ workOrderNo: row.documentNumber }).then(
+//       (data) => {
+//         row.subList = data.rows;
+//       }
+//     );
+//   },
+// });
 
 getList();
 </script>
diff --git a/src/views/mainPlan/sheetMetalOrderManage/index.vue b/src/views/mainPlan/sheetMetalOrderManage/index.vue
index 544f05e..e989511 100644
--- a/src/views/mainPlan/sheetMetalOrderManage/index.vue
+++ b/src/views/mainPlan/sheetMetalOrderManage/index.vue
@@ -8,80 +8,85 @@
       v-show="showSearch"
       label-width="110px"
     >
-        <el-form-item label="宸ュ崟鍙�" prop="description">
-            <el-input
-              style="width: 140px"
-              v-model="queryParams.description"
-              placeholder="璇疯緭鍏ラ渶姹傝拷婧疘D"
-              clearable
-              @keyup.enter="handleQuery"
-            />
-          </el-form-item>
+      <el-form-item label="宸ュ崟鍙�" prop="description">
+        <el-input
+          style="width: 140px"
+          v-model="queryParams.description"
+          placeholder="璇疯緭鍏ラ渶姹傝拷婧疘D"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
       <!-- <el-row type="flex" justify="left">
         <el-col :span="5"> -->
-          <el-form-item label="闇�姹傝拷婧疘D" prop="description">
-            <el-input
-              style="width: 140px"
-              v-model="queryParams.description"
-              placeholder="璇疯緭鍏ラ渶姹傝拷婧疘D"
-              clearable
-              @keyup.enter="handleQuery"
-            />
-          </el-form-item>
-        <!-- </el-col>
+      <el-form-item label="闇�姹傝拷婧疘D" prop="description">
+        <el-input
+          style="width: 140px"
+          v-model="queryParams.description"
+          placeholder="璇疯緭鍏ラ渶姹傝拷婧疘D"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <!-- </el-col>
         <el-col :span="5"> -->
-          <el-form-item label="鏂欏彿" prop="description">
-            <el-input
-              style="width: 140px"
-              v-model="queryParams.description"
-              placeholder="璇疯緭鍏ユ枡鍙�"
-              clearable
-              @keyup.enter="handleQuery"
-            />
-          </el-form-item>
-          <el-form-item label="寤惰繜椋庨櫓鏍囪瘑" prop="description">
-            <el-input
-              style="width: 140px"
-              v-model="queryParams.description"
-              placeholder="璇疯緭鍏ユ枡鍙�"
-              clearable
-              @keyup.enter="handleQuery"
-            />
-          </el-form-item>
-        <!-- </el-col>
+      <el-form-item label="鏂欏彿" prop="description">
+        <el-input
+          style="width: 140px"
+          v-model="queryParams.description"
+          placeholder="璇疯緭鍏ユ枡鍙�"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="寤惰繜椋庨櫓鏍囪瘑" prop="description">
+        <el-input
+          style="width: 140px"
+          v-model="queryParams.description"
+          placeholder="璇疯緭鍏ユ枡鍙�"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <!-- </el-col>
         <el-col :span="14" style="text-align: right"> -->
-          <el-form-item class="column-with-margin">
-            <el-button type="primary" icon="Search" @click="handleQuery"
-              >鏌ヨ</el-button
-            >
-            <el-button icon="Refresh" @click="resetQuery">閲嶇疆</el-button>
-          </el-form-item>
-        <!-- </el-col>
+      <el-form-item class="column-with-margin">
+        <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-row :gutter="10" class="mb8">
       <el-col :span="1.5">
         <el-button
-            type="primary"
-            plain
-            icon="Plus"
-            :disabled="single"
-            @click="handleUpdate"
-            v-hasPermi="['apsPlatePlan:edit']"
-        >鎵归噺鏇存柊宸ュ崟璁″垝鏃ユ湡</el-button>
+          type="primary"
+          plain
+          icon="Plus"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['apsPlatePlan:edit']"
+          >鎵归噺鏇存柊宸ュ崟璁″垝鏃ユ湡</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
-            type="success"
-            plain
-            icon="Edit"
-            :disabled="single"
-            @click="handleUpdate"
-            v-hasPermi="['apsPlatePlan:edit']"
-        >鐢熸垚閽i噾璁″垝宸ュ崟</el-button>
+          type="success"
+          plain
+          icon="Edit"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['apsPlatePlan:edit']"
+          >鐢熸垚閽i噾璁″垝宸ュ崟</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%"
@@ -96,7 +101,30 @@
       @on-checkbox="handleCheckboxChange"
       class="auto-height-grid"
     >
+      <template #buttons="{ row }">
+        <el-button
+          type="primary"
+          link
+          @click="handleCheckView(row)"
+          v-hasPermi="['aps:calendar:update']"
+          >鏌ョ湅闇�姹�</el-button
+        >
+      </template>
     </HxlhTable>
+    <el-dialog :title="title" v-model="openDialog" width="900px" append-to-body>
+      <HxlhTable
+        style="width: 100%"
+        :columns="subGridOptions"
+        :data="subList"
+        :loading="loading"
+        :height="heightSub"
+        @on-checkbox="handleCheckboxChange"
+        :page="page"
+        @changePageNo="changePageNo"
+        @changePageSize="changePageSize"
+      >
+      </HxlhTable>
+    </el-dialog>
   </div>
 </template>
 
@@ -114,6 +142,8 @@
 import { listAll_shop, listAps_shop } from "@/api/basicData/shop";
 import { selectProcessNameList } from "@/api/basicData/processRoute.js";
 const { proxy } = getCurrentInstance();
+const openDialog = ref(false);
+const subGridOptions = ref([]);
 const tableRef = ref();
 const calendarList = ref([]);
 const loading = ref(true);
@@ -231,6 +261,13 @@
     width: 100,
     align: "center",
   },
+  {
+    title: "鎿嶄綔",
+    width: 100,
+    fixed: "right",
+    slots: { default: "buttons" },
+    align: "center",
+  },
 ]);
 // 鍒嗛〉灞炴��
 const page = ref({
@@ -238,7 +275,12 @@
   current: 1,
   size: 10,
 });
-
+function handleCheckView(row) {
+  openDialog.value = true;
+  // listProcessRoute({ workOrderNo: row.documentNumber }).then((data) => {
+  //   subList.value = data.rows;
+  // });
+}
 /** 鏌ヨ鏃ュ巻绠$悊鍒楄〃 */
 function getList() {
   loading.value = true;
diff --git a/vite.config.js b/vite.config.js
index f0fe6e1..15f197e 100644
--- a/vite.config.js
+++ b/vite.config.js
@@ -14,49 +14,49 @@
   const { VITE_APP_ENV, VITE_APP_BASE_API } = env;
   console.log(VITE_APP_BASE_API, VITE_APP_ENV);
   // 鏍规嵁鐜鍙橀噺鍔ㄦ�佽缃唬鐞�
-  const proxyConfig = () => {
-    const personProxy = {
-      "/prod-api": {
-        target: "http://192.168.50.160:8080",//"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", // 寮�鍙戠幆澧冪殑鍚庣鍦板潃
-        changeOrigin: true,
-        rewrite: (path) => path.replace(/^\/prod-api/, ""),
-      },
-    };
+  // const proxyConfig = () => {
+  //   const personProxy = {
+  //     "/prod-api": {
+  //       target: "http://192.168.50.160:8080",//"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", // 寮�鍙戠幆澧冪殑鍚庣鍦板潃
+  //       changeOrigin: true,
+  //       rewrite: (path) => path.replace(/^\/prod-api/, ""),
+  //     },
+  //   };
 
-    const testProxy = {
-      "/prod-api": {
-        target: "http://192.168.50.160:8080", // 娴嬭瘯鐜鐨勫悗绔湴鍧�
-        changeOrigin: true,
-        rewrite: (path) => path.replace(/^\/prod-api/, ""),
-      },
-    };
+  //   const testProxy = {
+  //     "/prod-api": {
+  //       target: "http://192.168.50.160:8080", // 娴嬭瘯鐜鐨勫悗绔湴鍧�
+  //       changeOrigin: true,
+  //       rewrite: (path) => path.replace(/^\/prod-api/, ""),
+  //     },
+  //   };
 
-    const prodProxy = {
-      "/prod-api": {
-        target: "http://192.168.50.160:8080", // 娴嬭瘯鐜鐨勫悗绔湴鍧�
-        changeOrigin: true,
-        rewrite: (path) => path.replace(/^\/prod-api/, ""),
-      },
-    };
+  //   const prodProxy = {
+  //     "/prod-api": {
+  //       target: "http://192.168.50.160:8080", // 娴嬭瘯鐜鐨勫悗绔湴鍧�
+  //       changeOrigin: true,
+  //       rewrite: (path) => path.replace(/^\/prod-api/, ""),
+  //     },
+  //   };
 
-    switch (VITE_APP_ENV) {
-      case "development":
-        return personProxy;
-      case "int":
-        return devProxy;
-      case "uat":
-        return testProxy;
-      default: // 榛樿寮�鍙戠幆澧�
-        return prodProxy;
-    }
-  };
+  //   switch (VITE_APP_ENV) {
+  //     case "development":
+  //       return personProxy;
+  //     case "int":
+  //       return devProxy;
+  //     case "uat":
+  //       return testProxy;
+  //     default: // 榛樿寮�鍙戠幆澧�
+  //       return prodProxy;
+  //   }
+  // };
   return {
     // 閮ㄧ讲鐢熶骇鐜鍜屽紑鍙戠幆澧冧笅鐨刄RL銆�
     // 榛樿鎯呭喌涓嬶紝vite 浼氬亣璁句綘鐨勫簲鐢ㄦ槸琚儴缃插湪涓�涓煙鍚嶇殑鏍硅矾寰勪笂
@@ -79,7 +79,13 @@
       port: 80,
       host: true,
       open: true,
-      proxy: proxyConfig(),
+      proxy: {
+        "/prod-api": {
+          target: "http://192.168.50.160:8080", // 娴嬭瘯鐜鐨勫悗绔湴鍧�
+          changeOrigin: true,
+          rewrite: (path) => path.replace(/^\/prod-api/, ""),
+        },
+      },
     },
     //fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file
     css: {

--
Gitblit v1.9.3