From 52e3605766d85b04f2952b537b3f6d8d6bd96a8b Mon Sep 17 00:00:00 2001
From: chengxiangling <291105840@qq.com>
Date: 星期四, 15 五月 2025 12:22:36 +0800
Subject: [PATCH] 提交计划运行的搜索样优化

---
 src/views/mainPlan/pipeProduceStatics/index.vue        |   17 
 src/views/mainPlan/workOrderJobLog/index.vue           |   21 
 src/views/demand/planManage/index.vue                  | 1494 +++++++++++++++++++++++++++++++++++++++++
 src/views/mainPlan/sheetMetalOrderManage/index.vue     |   30 
 src/views/mainPlan/sheetMetalSupplyGap/index.vue       |   14 
 src/views/mainPlan/plateProcessStat/index.vue          |    8 
 src/views/mainPlan/gasPiping/index.vue                 |   28 
 src/views/mainPlan/gasProduceStatics/index.vue         |   17 
 .env.development                                       |    2 
 /dev/null                                              |    0 
 src/views/mainPlan/weldSeamEcharts/index.vue           |   17 
 src/views/mainPlan/abnormalPartNumberReport/index.vue  |   14 
 src/views/mainPlan/gasPlanning/index.vue               |    8 
 src/views/partPlan/index.vue                           |  150 ++--
 src/views/mainPlan/platePlan/index.vue                 |   34 
 src/views/basicData/calendar/index.vue                 |  280 +++++--
 src/views/mainPlan/sheetMetalRedundantReport/index.vue |   13 
 17 files changed, 1,873 insertions(+), 274 deletions(-)

diff --git a/.env.development b/.env.development
index 605a602..9028dae 100644
--- a/.env.development
+++ b/.env.development
@@ -10,4 +10,4 @@
 # 閰嶅悎鍚庣鏈嶅姟
 # VITE_APP_LOCAL = 'int'
 # VITE_APP_LOCAL = 'zhl'
-VITE_APP_LOCAL = 'hjy'
\ No newline at end of file
+VITE_APP_LOCAL = 'int'
\ No newline at end of file
diff --git a/dist.zip b/dist.zip
deleted file mode 100644
index 8b6f1a4..0000000
--- a/dist.zip
+++ /dev/null
Binary files differ
diff --git a/src/views/basicData/calendar/index.vue b/src/views/basicData/calendar/index.vue
index 1857d29..0e0d7af 100644
--- a/src/views/basicData/calendar/index.vue
+++ b/src/views/basicData/calendar/index.vue
@@ -261,7 +261,10 @@
           prop="applicableFactory"
           class="factory_use_item"
         > -->
-        <div class="select_factory select_factory_dis">閫傜敤宸ュ巶/杞﹂棿/宸ュ簭</div>
+        <div class="select_factory select_factory_dis">
+          <span class="error_require">*</span>
+          <span>閫傜敤宸ュ巶/杞﹂棿/宸ュ簭</span>
+        </div>
         <!-- <el-row :gutter="20" class="select_factory"> -->
         <div
           class="select_factory_dis"
@@ -390,11 +393,16 @@
                 <div>閫傜敤宸ュ巶锛�&nbsp;</div>
                 <div class="flex_item_dis">
                   <div
+                    class="flex_item"
                     v-for="(item, index) in form.applicableTranslate"
                     :key="index"
                   >
-                    {{ item.factory }} - {{ item.workshop }} -
-                    {{ item.process }}
+                    {{ item }}
+                    <div v-if="item[0].factory">{{ item[0].factory }}</div>
+                    <div v-if="item[2].workshop">-</div>
+                    <div v-if="item[2].workshop">{{ item[2].workshop }}</div>
+                    <div v-if="item[1].process">-</div>
+                    <div v-if="item[1].process">{{ item[1].process }}</div>
                   </div>
                 </div>
               </div>
@@ -501,7 +509,11 @@
                 <el-form-item
                   label="鑺傚亣鏃ユ弿杩�"
                   :prop="'holidays.' + index + '.describe'"
-                  :rules="{ required: true, message: '璇疯緭鍏ヨ妭鍋囨棩鎻忚堪', trigger: 'blur' }"
+                  :rules="{
+                    required: true,
+                    message: '璇疯緭鍏ヨ妭鍋囨棩鎻忚堪',
+                    trigger: 'blur',
+                  }"
                 >
                   <el-input
                     style="width: 130px"
@@ -512,7 +524,11 @@
                 <el-form-item
                   label="寮�濮嬫椂闂�"
                   :prop="'holidays.' + index + '.startdate'"
-                  :rules="{ required: true, message: '璇疯緭鍏ュ紑濮嬫椂闂�', trigger: 'blur' }"
+                  :rules="{
+                    required: true,
+                    message: '璇疯緭鍏ュ紑濮嬫椂闂�',
+                    trigger: 'blur',
+                  }"
                 >
                   <el-date-picker
                     style="width: 130px"
@@ -528,7 +544,11 @@
                 <el-form-item
                   label="缁撴潫鏃堕棿"
                   :prop="'holidays.' + index + '.enddate'"
-                  :rules="{ required: true, message: '璇疯緭鍏ョ粨鏉熸椂闂�', trigger: 'blur' }"
+                  :rules="{
+                    required: true,
+                    message: '璇疯緭鍏ョ粨鏉熸椂闂�',
+                    trigger: 'blur',
+                  }"
                 >
                   <el-date-picker
                     style="width: 130px"
@@ -607,6 +627,7 @@
         process: "",
       },
     ],
+    applicableTranslate: [{ factory: "" }, { workshop: "" }, { process: "" }],
   },
   formHolidays: {
     holidays: [
@@ -903,6 +924,10 @@
 async function handleAdd() {
   open.value = true;
   form.value = {
+    type: "1",
+    description: "",
+    expiringDate: "",
+    effectiveDate: "",
     applicable: [
       {
         factory: "",
@@ -910,7 +935,45 @@
         process: "",
       },
     ],
+    applicableTranslate: [{ factory: "" }, { workshop: "" }, { process: "" }],
   };
+  weekDaysSettingList.value = [
+    {
+      day: "Monday",
+      chineseName: "鏄熸湡涓�",
+      work: "y",
+    },
+    {
+      day: "Tuesday",
+      chineseName: "鏄熸湡浜�",
+      work: "y",
+    },
+    {
+      day: "Wednesday",
+      chineseName: "鏄熸湡涓�",
+      work: "y",
+    },
+    {
+      day: "Thursday",
+      chineseName: "鏄熸湡鍥�",
+      work: "y",
+    },
+    {
+      day: "Friday",
+      chineseName: "鏄熸湡浜�",
+      work: "y",
+    },
+    {
+      day: "Saturday",
+      chineseName: "鏄熸湡鍏�",
+      work: "y",
+    },
+    {
+      day: "Sunday",
+      chineseName: "鏄熸湡鏃�",
+      work: "y",
+    },
+  ];
   title.value = "娣诲姞鏃ュ巻绠$悊";
 }
 /** 閫夋嫨宸ュ巶鍚庝簨浠� 鍔犺浇杞﹂棿 鍜� 宸ュ簭 **/
@@ -925,7 +988,7 @@
 }
 function changeWorkshop(workShop) {
   console.log(workShop.split(";")[0]);
-  listByWorkShop({ workShop: "姘旀煖" }).then((res) => {
+  listByWorkShop({ workShop: workShop.split(";")[0] }).then((res) => {
     console.log(res, "workShop");
     processList.value = res.rows;
   });
@@ -942,26 +1005,40 @@
 /** 淇敼鎸夐挳鎿嶄綔 */
 function handleUpdate(row) {
   const _id = row.id || ids.value;
+  open.value = true;
+  title.value = "淇敼鏃ュ巻绠$悊";
   getCalendar(_id).then((response) => {
     form.value = response.data;
-    // form.value.content = JSON.parse(response.data.content.value);
-    if (form.value.type === "1") {
-      weekDaysSettingList.value = JSON.parse(
-        response.data.content.value
-      ).weekdays;
-    } else if (form.value.type === "2") {
-      holidays.value = JSON.parse(response.data.content.value).holidays;
-    }
+    applicableSettingList.value = JSON.parse(response.data.applicableTranslate);
+    console.log(response.data, "response.data");
+    form.value.content = JSON.parse(response.data.content.value);
+    weekDaysSettingList.value = response.data.content.weekdays;
 
-    open.value = true;
-    title.value = "淇敼鏃ュ巻绠$悊";
+    //  else if (form.value.type === "2") {
+    //   holidays.value = JSON.parse(response.data.content.value).holidays;
+    // }
   });
 }
 // 璁剧疆鑺傚亣鏃�
 function handleSetHolidays(row) {
+  let applicableTranslateArr = JSON.parse(row.applicableTranslate).map(
+    (item) => {
+      return Object.keys(item).map((n) => {
+        console.log(item);
+        let arrObj = {};
+        if (item[n] && item[n].indexOf(";") > 0) {
+          arrObj[n] = item[n].split(";")[1];
+        } else {
+          arrObj[n] = item[n];
+        }
+        return arrObj;
+      });
+    }
+  );
+  console.log(applicableTranslateArr, "applicableTranslateArr");
   form.value = {
     ...row,
-    applicableTranslate: JSON.parse(row.applicableTranslate),
+    applicableTranslate: applicableTranslateArr,
   };
   if (!row.holidays) {
     formHolidays.value = {
@@ -976,7 +1053,7 @@
   } else {
     formHolidays.value.holidays = JSON.parse(row.holidays.value);
   }
-  console.log(formHolidays.value.holidays, "formHolidays.value");
+  // console.log(formHolidays.value.holidays, "formHolidays.value");
   openSetHolidays.value = true;
 }
 // 绂佺敤鏃ユ湡
@@ -1035,26 +1112,19 @@
 //     }
 //   });
 // };
+function checkFieldsEmpty(arr) {
+  let filteredArr = arr.filter((item) => {
+    return Object.values(item).some(
+      (value) => value == null || value == "" || value == undefined
+    );
+  });
+  return filteredArr;
+}
 // 鎻愪氦鑺傚亣鏃�
 function handleSaveHolidaysForm() {
-  const hasValidDates = formHolidays.value.holidays.some(
-    (item) => {
-      console.log(item,"some")
-      if(!item.describe !="" && item.startdate !="" && item.enddate!=="" ){
-        return true
-      }else{
-        return false
-      }
-      console.log(hasValidDates, "hasValidDates");
-    }
-  );
+  const hasValidDates = checkFieldsEmpty(formHolidays.value.holidays);
   console.log(hasValidDates, "hasValidDates");
-  // holidaysRef.value.validate((valid) => {
-  //   if (!valid) {
-  //     proxy.$modal.msgSuccess("蹇呭~椤逛笉鑳戒负绌�");
-  //   }
-  //if (valid) {
-  if (!hasValidDates) {
+  if (hasValidDates.length == 0) {
     updateCalendar({
       id: form.value.id,
       holidays: formHolidays.value.holidays.map((item) => {
@@ -1066,10 +1136,49 @@
       }),
     }).then((response) => {
       proxy.$modal.msgSuccess("鏂板鎴愬姛");
-      open.value = false;
+      openSetHolidays.value = false;
       getList();
     });
   }
+  // holidaysRef.value.validate((valid) => {
+  //   if (!valid) {
+  //     proxy.$modal.msgSuccess("蹇呭~椤逛笉鑳戒负绌�");
+  //   }
+  //   if (valid) {
+  // if (!hasValidDates) {
+  // updateCalendar({
+  //   id: form.value.id,
+  //   holidays: formHolidays.value.holidays.map((item) => {
+  //     return {
+  //       startdate: moment(item.startdate).format("YYYY-MM-DD"),
+  //       enddate: moment(item.enddate).format("YYYY-MM-DD"),
+  //       describe: item.describe,
+  //     };
+  //   }),
+  // }).then((response) => {
+  //   proxy.$modal.msgSuccess("鏂板鎴愬姛");
+  //   open.value = false;
+  //   getList();
+  // });
+  //   }
+  // });
+  //if (valid) {
+  // if (!hasValidDates) {
+  //   updateCalendar({
+  //     id: form.value.id,
+  //     holidays: formHolidays.value.holidays.map((item) => {
+  //       return {
+  //         startdate: moment(item.startdate).format("YYYY-MM-DD"),
+  //         enddate: moment(item.enddate).format("YYYY-MM-DD"),
+  //         describe: item.describe,
+  //       };
+  //     }),
+  //   }).then((response) => {
+  //     proxy.$modal.msgSuccess("鏂板鎴愬姛");
+  //     open.value = false;
+  //     getList();
+  //   });
+  // }
   // });
 }
 /** 鎻愪氦鎸夐挳 */
@@ -1084,33 +1193,44 @@
         return;
       }
       if (form.value.id != null) {
-        // if (form.value.type === "1") {
-        //   updateCalendar({
-        //     ...form.value,
-        //     content: {
-        //       weekdays: weekDaysSettingList.value,
-        //     },
-        //     applicableWorkshop: form.value.applicableWorkshop,
-        //     applicableProcess: form.value.applicableProcess,
-        //   }).then((response) => {
-        //     proxy.$modal.msgSuccess("淇敼鎴愬姛");
-        //     open.value = false;
-        //     getList();
-        //   });
-        // } else if (form.value.type === "2") {
         updateCalendar({
-          ...form.value,
+          // ...form.value,
+          id: form.value.id,
+          expiringDate: form.value.expiringDate,
+          effectiveDate: form.value.effectiveDate,
+          description: form.value.description,
           content: {
-            holidays: holidays.value,
+            weekdays: weekDaysSettingList.value,
           },
-          applicableWorkshop: form.value.applicableWorkshop.map((item) => {
+          // holidays: holidays.value,
+          applicable: applicableSettingList.value.map((item) => {
             return {
-              factory: item.factory.split(";")[0],
-              process: item.process.split(";")[0],
-              workshop: item.workshop.split(";")[0],
+              factory: item.factory
+                ? item.factory.indexOf(";") > 0
+                  ? item.factory.split(";")[0]
+                  : item.factory
+                : "",
+              process: item.process
+                ? item.process.indexOf(";") > 0
+                  ? item.process.split(";")[0]
+                  : item.process
+                : "",
+              workshop: item.workshop
+                ? item.workshop.indexOf(";") > 0
+                  ? item.workshop.split(";")[0]
+                  : item.workshop
+                : "",
             };
           }),
-          applicableProcess: form.value.applicableProcess,
+          applicableTranslate: JSON.stringify(
+            applicableSettingList.value.map((item) => {
+              return {
+                factory: item.factory ? item.factory : "",
+                process: item.process ? item.process : "",
+                workshop: item.workshop ? item.workshop : "",
+              };
+            })
+          ),
           type: "1",
         }).then((response) => {
           proxy.$modal.msgSuccess("淇敼鎴愬姛");
@@ -1119,18 +1239,6 @@
         });
         // }
       } else {
-        // if (form.value.type === "1") {
-        //   addCalendar({
-        //     ...form.value,
-        //     content: {
-        //       weekdays: weekDaysSettingList.value,
-        //     },
-        //   }).then((response) => {
-        //     proxy.$modal.msgSuccess("鏂板鎴愬姛");
-        //     open.value = false;
-        //     getList();
-        //   });
-        // } else if (form.value.type === "2") {
         addCalendar({
           ...form.value,
           content: {
@@ -1139,17 +1247,29 @@
           // holidays: holidays.value,
           applicable: applicableSettingList.value.map((item) => {
             return {
-              factory: item.factory.split(";")[0],
-              process: item.process.split(";")[0],
-              workshop: item.workshop.split(";")[0],
+              factory: item.factory
+                ? item.factory.indexOf(";") > 0
+                  ? item.factory.split(";")[0]
+                  : item.factory
+                : "",
+              process: item.process
+                ? item.process.indexOf(";") > 0
+                  ? item.process.split(";")[0]
+                  : item.process
+                : "",
+              workshop: item.workshop
+                ? item.workshop.indexOf(";") > 0
+                  ? item.workshop.split(";")[0]
+                  : item.workshop
+                : "",
             };
           }),
           applicableTranslate: JSON.stringify(
             applicableSettingList.value.map((item) => {
               return {
-                factory: item.factory.split(";")[1],
-                process: item.process.split(";")[1],
-                workshop: item.workshop.split(";")[1],
+                factory: item.factory ? item.factory : "",
+                process: item.process ? item.process : "",
+                workshop: item.workshop ? item.workshop : "",
               };
             })
           ),
@@ -1314,6 +1434,10 @@
     margin-left: 120px;
   }
 }
+.error_require {
+  color: #f56c6c;
+  margin-right: 5px;
+}
 .grey_bg {
   background: #f1f1f1;
   width: 100%;
@@ -1336,10 +1460,6 @@
       font-weight: 600;
       margin-left: 20px;
       margin-right: 10px;
-      .error_require {
-        color: #f56c6c;
-        margin-right: 5px;
-      }
     }
     .flex_item_dis {
       display: flex;
diff --git a/src/views/demand/planManage/index.vue b/src/views/demand/planManage/index.vue
new file mode 100644
index 0000000..41bfb19
--- /dev/null
+++ b/src/views/demand/planManage/index.vue
@@ -0,0 +1,1494 @@
+<template>
+  <div class="app-container">
+    <el-form
+      class="responsive-form"
+      :model="queryParams"
+      ref="queryRef"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+      label-position="left"
+    >
+      <el-row type="flex" justify="left" :gutter="20">
+        <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-col>
+        <el-col :span="19" 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-row>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="Plus"
+          @click="handleAdd"
+          v-hasPermi="['aps:calendar:add']"
+          >鏂板</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="Edit"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['aps:calendar:update']"
+          >淇敼</el-button
+        >
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="Delete"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['aps:calendar:remove']"
+          >鍒犻櫎</el-button
+        >
+      </el-col>
+      <!-- <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="Download"
+          @click="handleExport"
+          v-hasPermi="['core:calendar:export']"
+          >瀵煎嚭</el-button
+        >
+      </el-col> -->
+      <right-toolbar
+        v-model:showSearch="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
+    </el-row>
+    <HxlhTable
+      style="width: 100%"
+      :columns="columns"
+      :data="calendarList"
+      :loading="loading"
+      :height="height"
+      ref="tableRef"
+      :page="page"
+      @changePageNo="changePageNo"
+      @changePageSize="changePageSize"
+      @on-checkbox="handleCheckboxChange"
+      class="auto-height-grid"
+    >
+      <template #status="{ row }">
+        <vxe-tag v-if="row.type === '1'" status="primary">鍛ㄥ伐浣�</vxe-tag>
+        <vxe-tag v-if="row.type === '2'" status="success">鑺傚亣鏃�</vxe-tag>
+      </template>
+      <template #mark="{ row }">
+        <div v-if="row.type === '1'">
+          <span
+            v-for="(item, index) in JSON.parse(row.content.value).weekdays"
+            :key="index"
+          >
+            <span v-if="item.work === 'y'" status="success" class="mart5"
+              >{{ item.chineseName }}: 宸ヤ綔鏃�;&nbsp;</span
+            >
+            <span v-if="item.work === 'n'" status="info" class="mart5"
+              >{{ item.chineseName }}: 闈炲伐浣滄棩;&nbsp;</span
+            >
+          </span>
+          <!-- <div v-for="(item, index) in JSON.parse(row.content.value).weekdays" :key="index">
+              <vxe-tag v-if="item.work==='y'" status="success" class="mart5">{{item.chineseName}}: 宸ヤ綔鏃�;&nbsp;</vxe-tag>
+              <vxe-tag v-if="item.work==='n'" status="info" class="mart5">{{item.chineseName}}: 闈炲伐浣滄棩;&nbsp;</vxe-tag>
+            </div> -->
+        </div>
+        <div v-if="row.type === '2'">
+          <div>
+            {{ JSON.parse(row.content.value).holidays.startdate }}鑷硔{
+              JSON.parse(row.content.value).holidays.enddate
+            }}
+          </div>
+        </div>
+      </template>
+      <template #buttons="{ row }">
+        <el-button
+          type="primary"
+          size="small"
+          @click="handleUpdate(row)"
+          v-hasPermi="['aps:calendar:update']"
+          >淇敼</el-button
+        >
+        <el-button
+          type="default"
+          size="small"
+          @click="handleSetHolidays(row)"
+          v-hasPermi="['aps:calendar:remove']"
+          >璁″垝鍛ㄦ湡</el-button
+        >
+        <el-button
+          type="success"
+          size="small"
+          @click="handleSetHolidays(row)"
+          v-hasPermi="['aps:calendar:remove']"
+          >鐢熸垚璁″垝</el-button
+        >
+        <el-button
+          type="danger"
+          size="small"
+          @click="handleDelete(row)"
+          v-hasPermi="['aps:calendar:remove']"
+          >鍒犻櫎</el-button
+        >
+      </template>
+    </HxlhTable>
+
+    <!-- 娣诲姞鎴栦慨鏀规棩鍘嗙鐞嗗璇濇 -->
+    <el-dialog :title="title" v-model="open" width="80%" append-to-body>
+      <el-form
+        ref="calendarRef"
+        :model="form"
+        :rules="rules"
+        label-width="105px"
+      >
+        <el-form-item label="鏃ュ巻鎻忚堪" prop="description">
+          <el-input v-model="form.description" placeholder="璇疯緭鍏ユ弿杩�" />
+        </el-form-item>
+        <el-form-item label="鏃ュ巻绫诲瀷" prop="type">
+          <!-- <el-radio-group v-model="form.type" @change="handleSwitchType">
+            <el-radio :label="'1'">鍛ㄥ伐浣�</el-radio>
+            <el-radio :label="'2'">鑺傚亣鏃�</el-radio>
+          </el-radio-group> -->
+          <el-tag type="primary">鍛ㄥ伐浣�</el-tag>
+        </el-form-item>
+        <el-form-item label="鐢熸晥鏃堕棿" prop="effectiveDate">
+          <el-date-picker
+            clearable
+            v-model="form.effectiveDate"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="閫夋嫨鏃ユ湡"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="澶辨晥鏃堕棿" prop="expiringDate">
+          <el-date-picker
+            clearable
+            v-model="form.expiringDate"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="閫夋嫨鏃ユ湡"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <div>
+          <div class="title_bar_line">
+            <div class="line_short"></div>
+            <div>鍛ㄥ伐浣滆缃�</div>
+            <div class="line_long"></div>
+          </div>
+          <div
+            class="week_flex"
+            v-for="(item, index) in weekDaysSettingList"
+            :key="index"
+          >
+            <div class="week_flex_item">{{ item.chineseName }}</div>
+            <div class="week_flex_item">
+              <el-radio-group v-model="item.work">
+                <el-radio :label="'y'">宸ヤ綔鏃�</el-radio>
+                <el-radio :label="'n'">闈炲伐浣滄棩</el-radio>
+              </el-radio-group>
+            </div>
+          </div>
+        </div>
+        <div v-if="form.type === '2'">
+          <div class="title_bar_line">
+            <div class="line_short"></div>
+            <div>鑺傚亣鏃ヨ缃�</div>
+            <div class="line_long"></div>
+          </div>
+          <div class="week_flex mt20">
+            <div class="week_flex_item">鑺傛棩寮�濮嬫椂闂�</div>
+            <div class="week_flex_item">
+              <el-date-picker
+                clearable
+                v-model="holidays.startdate"
+                type="date"
+                value-format="YYYY-MM-DD"
+                placeholder="閫夋嫨鏃ユ湡"
+              >
+              </el-date-picker>
+            </div>
+          </div>
+          <div class="week_flex mt20">
+            <div class="week_flex_item">鑺傛棩缁撴潫鏃堕棿</div>
+            <div class="week_flex_item">
+              <el-date-picker
+                clearable
+                v-model="holidays.enddate"
+                type="date"
+                value-format="YYYY-MM-DD"
+                placeholder="閫夋嫨鏃ユ湡"
+              >
+              </el-date-picker>
+            </div>
+          </div>
+        </div>
+        <!-- <el-form-item
+          label="閫傜敤宸ュ巶"
+          prop="applicableFactory"
+          class="factory_use_item"
+        > -->
+        <div class="select_factory select_factory_dis">
+          <span class="error_require">*</span>
+          <span>閫傜敤宸ュ巶/杞﹂棿/宸ュ簭</span>
+        </div>
+        <!-- <el-row :gutter="20" class="select_factory"> -->
+        <div
+          class="select_factory_dis"
+          v-for="(item, index) in applicableSettingList"
+          :key="index"
+        >
+          <!-- <el-col :span="7"> -->
+          <el-select
+            class="select_content"
+            clearable
+            v-model="item.factory"
+            style="width: 160px"
+            placeholder="璇疯緭鍏ラ�傜敤宸ュ巶"
+            @change="changePlant($event)"
+          >
+            <el-option
+              v-for="plant in aps_factory"
+              :key="plant.value"
+              :label="plant.label"
+              :value="`${plant.value};${plant.label}`"
+            >
+            </el-option>
+          </el-select>
+          <!-- </el-col>
+              <el-col :span="7"> -->
+          <el-select
+            class="select_content"
+            clearable
+            v-model="item.workshop"
+            style="width: 160px"
+            placeholder="璇疯緭鍏ラ�傜敤杞﹂棿"
+            @change="changeWorkshop($event)"
+          >
+            <el-option
+              v-for="shop in shopList"
+              :key="shop.id"
+              :label="shop.shopName"
+              :value="`${shop.id};${shop.shopName}`"
+            >
+            </el-option>
+          </el-select>
+          <!-- </el-col>
+              <el-col :span="7"> -->
+          <el-select
+            class="select_content"
+            clearable
+            v-model="item.process"
+            style="width: 160px"
+            placeholder="璇疯緭鍏ラ�傜敤宸ュ簭"
+          >
+            <el-option
+              v-for="process in processList"
+              :key="process.processNumber"
+              :label="process.processName"
+              :value="`${process.processNumber};${process.processName}`"
+            >
+            </el-option>
+          </el-select>
+          <!-- </el-col>
+              <el-col :span="3"> -->
+          <el-button
+            class="select_content"
+            type="primary"
+            icon="Plus"
+            @click="handleAddFactory(item)"
+            circle
+            size="small"
+          />
+          <el-button
+            v-if="applicableSettingList.length > 1"
+            class="select_content"
+            type="primary"
+            icon="Minus"
+            @click="handleMinusFactory(item)"
+            circle
+            size="small"
+          />
+          <!-- </el-col> -->
+        </div>
+        <!-- </el-row> -->
+        <!-- </el-form-item> -->
+        <!-- <el-form-item
+          label="閫傜敤杞﹂棿"
+          prop="applicableWorkshop"
+          class="factory_use_item"
+        >
+        </el-form-item>
+        <el-form-item
+          label="閫傜敤宸ュ簭"
+          prop="applicableProcess"
+          class="factory_use_item"
+        >
+        </el-form-item> -->
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="cancel">鍙� 娑�</el-button>
+          <el-button type="primary" @click="submitForm">淇濆瓨</el-button>
+        </div>
+      </template>
+    </el-dialog>
+    <el-dialog
+      title="璁剧疆鑺傚亣鏃�"
+      v-model="openSetHolidays"
+      width="80%"
+      style="height: 570px"
+      append-to-body
+    >
+      <div class="height_dialog">
+        <div class="height_dialog_scroll">
+          <div class="grey_bg">
+            <div v-if="expand">
+              <div class="flex_item">
+                <div>宸ヤ綔鏃ュ巻锛�&nbsp;</div>
+                <div>{{ form.description }}</div>
+              </div>
+              <div class="flex_item">
+                <div>鐢熸晥鏃堕棿锛�&nbsp;</div>
+                <div>{{ form.effectiveDate }}</div>
+              </div>
+              <div class="flex_item">
+                <div>澶辨晥鏃堕棿锛�&nbsp;</div>
+                <div>{{ form.expiringDate }}</div>
+              </div>
+              <div class="flex_item">
+                <div>閫傜敤宸ュ巶锛�&nbsp;</div>
+                <div class="flex_item_dis">
+                  <div
+                    class="flex_item"
+                    v-for="(item, index) in form.applicableTranslate"
+                    :key="index"
+                  >
+                    {{ item }}
+                    <div v-if="item[0].factory">{{ item[0].factory }}</div>
+                    <div v-if="item[2].workshop">-</div>
+                    <div v-if="item[2].workshop">{{ item[2].workshop }}</div>
+                    <div v-if="item[1].process">-</div>
+                    <div v-if="item[1].process">{{ item[1].process }}</div>
+                  </div>
+                </div>
+              </div>
+            </div>
+            <div class="flex_item_expand_end" @click="handleToggleExpand">
+              <el-icon :size="18" v-if="expand"><ArrowUpBold /></el-icon>
+              <el-icon v-else><ArrowDownBold /></el-icon>
+            </div>
+          </div>
+          <div class="title_flex">
+            <div class="holiday_title">鑺傚亣鏃ュ垪琛�</div>
+            <el-button type="primary" size="small" @click="hanldeAddHolidays"
+              >娣诲姞鑺傚亣鏃�</el-button
+            >
+          </div>
+          <div class="grey_bg">
+            <div
+              class="flex_holidays_set"
+              v-for="(item, index) in formHolidays.holidays"
+              :key="index"
+            >
+              <div class="dis_error_wrap">
+                <div class="flex_item">
+                  <div class="flex_item_title">
+                    <span class="error_require">*</span><span>鑺傚亣鏃ユ弿杩�</span>
+                  </div>
+                  <div>
+                    <el-input
+                      style="width: 130px"
+                      v-model="item.describe"
+                      placeholder="璇疯緭鍏ユ弿杩�"
+                    />
+                  </div>
+                </div>
+                <div class="error_text" v-if="item.describe == ''">
+                  璇疯緭鍏ヨ妭鍋囨棩鎻忚堪
+                </div>
+              </div>
+              <div class="dis_error_wrap">
+                <div class="flex_item">
+                  <div class="flex_item_title">
+                    <span class="error_require">*</span><span>寮�濮嬫椂闂�</span>
+                  </div>
+                  <div>
+                    <el-date-picker
+                      style="width: 130px"
+                      clearable
+                      v-model="item.startdate"
+                      type="date"
+                      :disabled-date="handleDisabledDate"
+                      :default-value="form.effectiveDate"
+                      placeholder="閫夋嫨鏃ユ湡"
+                    >
+                    </el-date-picker>
+                  </div>
+                </div>
+                <div class="error_text" v-if="item.startdate == ''">
+                  璇疯緭鍏ュ紑濮嬫椂闂�
+                </div>
+              </div>
+              <div class="dis_error_wrap">
+                <div class="flex_item">
+                  <div class="flex_item_title">
+                    <span class="error_require">*</span><span>缁撴潫鏃堕棿</span>
+                  </div>
+                  <div>
+                    <el-date-picker
+                      style="width: 130px"
+                      clearable
+                      v-model="item.enddate"
+                      type="date"
+                      :disabled-date="handleDisabledDate"
+                      :default-value="form.expiringDate"
+                      placeholder="閫夋嫨鏃ユ湡"
+                    >
+                    </el-date-picker>
+                  </div>
+                </div>
+                <div class="error_text" v-if="item.enddate == ''">
+                  璇疯緭鍏ョ粨鏉熸椂闂�
+                </div>
+              </div>
+              <div class="dis_error_wrap">
+                <div class="flex_item">
+                  <el-button
+                    v-if="formHolidays.length > 1"
+                    type="danger"
+                    size="small"
+                    @click="handleDelSettingHolidays(item)"
+                    >鍒犻櫎</el-button
+                  >
+                </div>
+              </div>
+            </div>
+            <!-- <el-form
+              class="mart10"
+              ref="holidaysRef"
+              :model="item"
+              :rules="holidayRules"
+              :inline="true"
+              label-width="105px"
+            >
+              <div v-for="(item, index) in formHolidays.holidays" :key="index">
+                <el-form-item
+                  label="鑺傚亣鏃ユ弿杩�"
+                  :prop="'holidays.' + index + '.describe'"
+                  :rules="{
+                    required: true,
+                    message: '璇疯緭鍏ヨ妭鍋囨棩鎻忚堪',
+                    trigger: 'blur',
+                  }"
+                >
+                  <el-input
+                    style="width: 130px"
+                    v-model="item.describe"
+                    placeholder="璇疯緭鍏ユ弿杩�"
+                  />
+                </el-form-item>
+                <el-form-item
+                  label="寮�濮嬫椂闂�"
+                  :prop="'holidays.' + index + '.startdate'"
+                  :rules="{
+                    required: true,
+                    message: '璇疯緭鍏ュ紑濮嬫椂闂�',
+                    trigger: 'blur',
+                  }"
+                >
+                  <el-date-picker
+                    style="width: 130px"
+                    clearable
+                    v-model="item.startdate"
+                    type="date"
+                    :disabled-date="handleDisabledDate"
+                    :default-value="form.effectiveDate"
+                    placeholder="閫夋嫨鏃ユ湡"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+                <el-form-item
+                  label="缁撴潫鏃堕棿"
+                  :prop="'holidays.' + index + '.enddate'"
+                  :rules="{
+                    required: true,
+                    message: '璇疯緭鍏ョ粨鏉熸椂闂�',
+                    trigger: 'blur',
+                  }"
+                >
+                  <el-date-picker
+                    style="width: 130px"
+                    clearable
+                    v-model="item.enddate"
+                    type="date"
+                    placeholder="閫夋嫨鏃ユ湡"
+                    :disabled-date="handleDisabledDate"
+                    :default-value="form.expiringDate"
+                  >
+                  </el-date-picker>
+                </el-form-item>
+                <el-form-item label="" prop="">
+                  <el-button
+                    v-if="formHolidays.length > 1"
+                    type="danger"
+                    size="small"
+                    @click="handleDelSettingHolidays(item)"
+                    >鍒犻櫎</el-button
+                  >
+                </el-form-item>
+              </div>
+            </el-form> -->
+          </div>
+        </div>
+      </div>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button @click="openSetHolidays = false">鍙� 娑�</el-button>
+          <el-button type="primary" @click="handleSaveHolidaysForm"
+            >淇濆瓨</el-button
+          >
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="Calendar">
+import moment from "moment";
+import HxlhTable from "@/components/HxlhTable";
+import {
+  listCalendar,
+  getCalendar,
+  delCalendar,
+  addCalendar,
+  updateCalendar,
+} from "@/api/basicData/calendar";
+import axios from "axios";
+import { listAll_plant, listByWorkShop } from "@/api/basicData/plant";
+import { listAll_shop, listAps_shop } from "@/api/basicData/shop";
+import { selectProcessNameList } from "@/api/basicData/processRoute.js";
+import { ElMessage } from "element-plus";
+const { proxy } = getCurrentInstance();
+const holidaysRef = ref(null);
+const { aps_factory } = proxy.useDict("aps_factory");
+const tableRef = ref();
+const calendarList = ref([]);
+const open = ref(false);
+const openSetHolidays = ref(false);
+const expand = ref(true);
+const loading = ref(true);
+const showSearch = ref(true);
+const ids = ref([]);
+const single = ref(true);
+const multiple = ref(true);
+const total = ref(0);
+const title = ref("");
+const data = reactive({
+  form: {
+    type: "1",
+    applicable: [
+      {
+        factory: "",
+        workshop: "",
+        process: "",
+      },
+    ],
+    applicableTranslate: [{ factory: "" }, { workshop: "" }, { process: "" }],
+  },
+  formHolidays: {
+    holidays: [
+      {
+        enddate: "",
+        startdate: "",
+        describe: "",
+      },
+    ],
+  },
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+    description: null,
+    plant: null,
+    type: null,
+    effectiveDate: null,
+    expiringDate: null,
+    content: null,
+    applicableFactory: null,
+    applicableWorkshop: null,
+    applicableProcess: null,
+  },
+  rules: {
+    description: [
+      {
+        required: true,
+        message: "璇疯緭鍏ユ棩鍘嗘弿杩�",
+        trigger: "blur",
+      },
+    ],
+    // type: [
+    //   {
+    //     required: true,
+    //     message: "璇烽�夋嫨鏃ュ巻绫诲瀷",
+    //     trigger: "blur",
+    //   },
+    // ],
+    effectiveDate: [
+      {
+        required: true,
+        message: "璇烽�夋嫨鏃ュ巻鐢熸晥鏃堕棿",
+        trigger: "blur",
+      },
+    ],
+    expiringDate: [
+      {
+        required: true,
+        message: "璇烽�夋嫨鏃ュ巻澶辨晥鏃堕棿",
+        trigger: "blur",
+      },
+    ],
+  },
+  // holidayRules: {
+  //   describe: [
+  //     {
+  //       required: true,
+  //       message: "璇疯緭鍏ヨ妭鍋囨棩鎻忚堪",
+  //       trigger: "blur",
+  //     },
+  //   ],
+  //   startdate: [
+  //     {
+  //       required: true,
+  //       message: "璇疯緭鍏ュ紑濮嬫椂闂�",
+  //       trigger: "blur",
+  //     },
+  //   ],
+  //   enddate: [
+  //     {
+  //       required: true,
+  //       message: "璇疯緭鍏ョ粨鏉熸椂闂�",
+  //       trigger: "blur",
+  //     },
+  //   ],
+  // },
+});
+const holidayRules = {
+  holidays: [{ required: true, message: "鑺傚亣鏃ユ槸蹇呭~椤�", trigger: "blur" }],
+};
+const { queryParams, form, rules, formHolidays } = toRefs(data);
+const dateType = ref("鍛ㄥ伐浣�");
+const dateTypeList = ref([
+  {
+    name: "鍛ㄥ伐浣�",
+    label: "1",
+  },
+  {
+    name: "鑺傚亣鏃�",
+    label: "2",
+  },
+]);
+const typeRadioNumber = ref(1);
+const applicableSettingList = ref([
+  { factory: "", workshop: "", process: "", id: 0 },
+]);
+const weekDaysSettingList = ref([
+  {
+    day: "Monday",
+    chineseName: "鏄熸湡涓�",
+    work: "y",
+  },
+  {
+    day: "Tuesday",
+    chineseName: "鏄熸湡浜�",
+    work: "y",
+  },
+  {
+    day: "Wednesday",
+    chineseName: "鏄熸湡涓�",
+    work: "y",
+  },
+  {
+    day: "Thursday",
+    chineseName: "鏄熸湡鍥�",
+    work: "y",
+  },
+  {
+    day: "Friday",
+    chineseName: "鏄熸湡浜�",
+    work: "y",
+  },
+  {
+    day: "Saturday",
+    chineseName: "鏄熸湡鍏�",
+    work: "y",
+  },
+  {
+    day: "Sunday",
+    chineseName: "鏄熸湡鏃�",
+    work: "y",
+  },
+]);
+const holidays = ref({
+  startdate: "",
+  enddate: "",
+});
+const plantList = ref([]);
+const shopList = ref([]);
+const allShopList = ref([]);
+const processList = ref([]);
+const height = ref(document.documentElement.clientHeight - 220 + "px;");
+// 琛ㄦ牸閰嶇疆-鍒楄〃
+const columns = ref([
+//   { type: "checkbox", width: 60, align: "center" },
+  {
+    title: "婊氬姩鏂瑰紡",
+    field: "description",
+    width: 150,
+    align: "center",
+  },
+  {
+    title: "璁″垝鍛ㄦ湡",
+    field: "type",
+    width: 200,
+    align: "center",
+    slots: { default: "status" },
+  },
+  {
+    title: "鍛ㄦ湡寮�濮嬫椂闂�",
+    field: "effectiveDate",
+    width: 200,
+    align: "center",
+  },
+  {
+    title: "鍛ㄦ湡缁撴潫鏃堕棿",
+    field: "expiringDate",
+    width: 200,
+    align: "center",
+  },
+  {
+    title: "璁″垝ID",
+    field: "content",
+    width: 230,
+    align: "center",
+    slots: { default: "mark" },
+  },
+  // {
+  //   title: "閫傜敤宸ュ巶",
+  //   field: "applicableFactory",
+  //   width: 200,
+  //   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: "applicableWorkshop",
+  //   width: 200,
+  //   align: "center",
+  //   formatter: ({ cellValue, row, column }) => {
+  //     if (cellValue) {
+  //       for (let i = 0; i < shopList.value.length; i++) {
+  //         if (cellValue === shopList.value[i].id) {
+  //           return shopList.value[i].shopName;
+  //         }
+  //       }
+  //     }
+  //     return "";
+  //   },
+  // },
+  // {
+  //   title: "閫傜敤宸ュ簭",
+  //   field: "applicableProcess",
+  //   width: 200,
+  //   align: "center",
+  // },
+  {
+    title: "鍒涘缓鑰�",
+    field: "createBy",
+    width: 200,
+    align: "center",
+  },
+  {
+    title: "鍒涘缓鏃堕棿",
+    field: "createTime",
+    width: 200,
+    align: "center",
+  },
+    {
+    title: "鏇存柊鑰�",
+    field: "createBy",
+    width: 200,
+    align: "center",
+  },
+  {
+    title: "鏇存柊鏃堕棿",
+    field: "createTime",
+    width: 200,
+    align: "center",
+  },
+  {
+    title: "鎿嶄綔",
+    width: 330,
+    fixed: "right",
+    slots: { default: "buttons" },
+    align: "center",
+  },
+]);
+// 鍒嗛〉灞炴��
+const page = ref({
+  total: 0,
+  current: 1,
+  size: 10,
+});
+
+/** 鏌ヨ鏃ュ巻绠$悊鍒楄〃 */
+function getList() {
+  loading.value = true;
+  listCalendar(queryParams.value).then((response) => {
+    calendarList.value = response.rows;
+    page.value.total = response.total;
+    loading.value = false;
+  });
+  axios
+    .all([
+      /** 鏌ヨ宸ュ巶鍒楄〃 */
+      listAll_plant({}),
+      /** 鏌ヨ杞﹂棿鍒楄〃 */
+      listAll_shop({}),
+    ])
+    .then(
+      axios.spread((response1, response2) => {
+        plantList.value = response1.data;
+        shopList.value = response2.data;
+        loading.value = false;
+      })
+    )
+    .catch((error) => {
+      console.error("璇锋眰鍑洪敊:", error);
+    });
+}
+
+// 鍙栨秷鎸夐挳
+function cancel() {
+  open.value = false;
+}
+
+/** 鎼滅储鎸夐挳鎿嶄綔 */
+function handleQuery() {
+  queryParams.value.pageNum = 1;
+  getList();
+}
+
+/** 閲嶇疆鎸夐挳鎿嶄綔 */
+function resetQuery() {
+  proxy.resetForm("queryRef");
+  handleQuery();
+}
+
+// 澶氶�夋閫変腑鏁版嵁
+function handleSelectionChange(selection) {
+  ids.value = selection.map((item) => item.id);
+  single.value = selection.length != 1;
+  multiple.value = !selection.length;
+}
+
+/** 鏂板鎸夐挳鎿嶄綔 */
+async function handleAdd() {
+  open.value = true;
+  form.value = {
+    type: "1",
+    description: "",
+    expiringDate: "",
+    effectiveDate: "",
+    applicable: [
+      {
+        factory: "",
+        workshop: "",
+        process: "",
+      },
+    ],
+    applicableTranslate: [{ factory: "" }, { workshop: "" }, { process: "" }],
+  };
+  weekDaysSettingList.value = [
+    {
+      day: "Monday",
+      chineseName: "鏄熸湡涓�",
+      work: "y",
+    },
+    {
+      day: "Tuesday",
+      chineseName: "鏄熸湡浜�",
+      work: "y",
+    },
+    {
+      day: "Wednesday",
+      chineseName: "鏄熸湡涓�",
+      work: "y",
+    },
+    {
+      day: "Thursday",
+      chineseName: "鏄熸湡鍥�",
+      work: "y",
+    },
+    {
+      day: "Friday",
+      chineseName: "鏄熸湡浜�",
+      work: "y",
+    },
+    {
+      day: "Saturday",
+      chineseName: "鏄熸湡鍏�",
+      work: "y",
+    },
+    {
+      day: "Sunday",
+      chineseName: "鏄熸湡鏃�",
+      work: "y",
+    },
+  ];
+  title.value = "娣诲姞鏃ュ巻绠$悊";
+}
+/** 閫夋嫨宸ュ巶鍚庝簨浠� 鍔犺浇杞﹂棿 鍜� 宸ュ簭 **/
+function changePlant(plant) {
+  console.log(plant);
+  listAps_shop({ plantCode: plant.split(";")[0] }).then((response) => {
+    shopList.value = response.rows;
+  });
+  // selectProcessNameList({ orgCode: plant }).then((response) => {
+  //   processList.value = response.rows;
+  // });
+}
+function changeWorkshop(workShop) {
+  console.log(workShop.split(";")[0]);
+  listByWorkShop({ workShop: workShop.split(";")[0] }).then((res) => {
+    console.log(res, "workShop");
+    processList.value = res.rows;
+  });
+}
+function handleAddFactory(row) {
+  console.log(row);
+  applicableSettingList.value.push({ ...row, id: ++row.id });
+}
+function handleMinusFactory(row) {
+  applicableSettingList.value = applicableSettingList.value.filter(
+    (item, index) => item !== row
+  );
+}
+/** 淇敼鎸夐挳鎿嶄綔 */
+function handleUpdate(row) {
+  const _id = row.id || ids.value;
+  open.value = true;
+  title.value = "淇敼鏃ュ巻绠$悊";
+  getCalendar(_id).then((response) => {
+    form.value = response.data;
+    applicableSettingList.value = JSON.parse(response.data.applicableTranslate);
+    console.log(response.data, "response.data");
+    form.value.content = JSON.parse(response.data.content.value);
+    weekDaysSettingList.value = response.data.content.weekdays;
+
+    //  else if (form.value.type === "2") {
+    //   holidays.value = JSON.parse(response.data.content.value).holidays;
+    // }
+  });
+}
+// 璁剧疆鑺傚亣鏃�
+function handleSetHolidays(row) {
+  let applicableTranslateArr = JSON.parse(row.applicableTranslate).map(
+    (item) => {
+      return Object.keys(item).map((n) => {
+        console.log(item);
+        let arrObj = {};
+        if (item[n] && item[n].indexOf(";") > 0) {
+          arrObj[n] = item[n].split(";")[1];
+        } else {
+          arrObj[n] = item[n];
+        }
+        return arrObj;
+      });
+    }
+  );
+  console.log(applicableTranslateArr, "applicableTranslateArr");
+  form.value = {
+    ...row,
+    applicableTranslate: applicableTranslateArr,
+  };
+  if (!row.holidays) {
+    formHolidays.value = {
+      holidays: [
+        {
+          enddate: "",
+          startdate: "",
+          describe: "",
+        },
+      ],
+    };
+  } else {
+    formHolidays.value.holidays = JSON.parse(row.holidays.value);
+  }
+  // console.log(formHolidays.value.holidays, "formHolidays.value");
+  openSetHolidays.value = true;
+}
+// 绂佺敤鏃ユ湡
+function handleDisabledDate(date) {
+  const targetDate = moment(date).valueOf();
+  const startDate = moment(form.value.effectiveDate).valueOf();
+  const endDate = moment(form.value.expiringDate).valueOf();
+  return targetDate < startDate || targetDate > endDate;
+}
+// 鍒犻櫎鑺傚亣鏃ヨ缃�
+function handleDelSettingHolidays(row) {
+  formHolidays.value.holidays = formHolidays.value.holidays.filter((item) => {
+    return item != row;
+  });
+}
+// 娣诲姞鑺傚亣鏃�
+function hanldeAddHolidays() {
+  formHolidays.value.holidays.push({
+    enddate: "",
+    startdate: "",
+    describe: "",
+  });
+}
+function handleToggleExpand() {
+  expand.value = !expand.value;
+}
+// const confirmClick = () => {
+//     let formList = [predictionFormRef]
+//     let resultArr = [];
+//     let validate = (form) => {
+//         let result = new Promise((resolve, reject) => {
+//             form.value.validate(valid => {
+//                 if (valid) {
+//                     resolve()
+//                 } else {
+//                     reject()
+//                 }
+//             })
+//         })
+//         resultArr.push(result)
+//     }
+//     formList.forEach(item => {
+//         validate(item)
+//     })
+//     Promise.all(resultArr).then(() => {
+//         saveRule() // 鏍¢獙鎴愬姛涔嬪悗 淇濆瓨鏁版嵁鐨勬柟娉�
+//     })
+// }
+// const submitForm = () => {
+//   formRef.value.validate((valid) => {
+//     if (valid) {
+//       alert('submit!');
+//     } else {
+//       alert('Form is not valid.');
+//       return false;
+//     }
+//   });
+// };
+function checkFieldsEmpty(arr) {
+  let filteredArr = arr.filter((item) => {
+    return Object.values(item).some(
+      (value) => value == null || value == "" || value == undefined
+    );
+  });
+  return filteredArr;
+}
+// 鎻愪氦鑺傚亣鏃�
+function handleSaveHolidaysForm() {
+  const hasValidDates = checkFieldsEmpty(formHolidays.value.holidays);
+  console.log(hasValidDates, "hasValidDates");
+  if (hasValidDates.length == 0) {
+    updateCalendar({
+      id: form.value.id,
+      holidays: formHolidays.value.holidays.map((item) => {
+        return {
+          startdate: moment(item.startdate).format("YYYY-MM-DD"),
+          enddate: moment(item.enddate).format("YYYY-MM-DD"),
+          describe: item.describe,
+        };
+      }),
+    }).then((response) => {
+      proxy.$modal.msgSuccess("鏂板鎴愬姛");
+      openSetHolidays.value = false;
+      getList();
+    });
+  }
+  // holidaysRef.value.validate((valid) => {
+  //   if (!valid) {
+  //     proxy.$modal.msgSuccess("蹇呭~椤逛笉鑳戒负绌�");
+  //   }
+  //   if (valid) {
+  // if (!hasValidDates) {
+  // updateCalendar({
+  //   id: form.value.id,
+  //   holidays: formHolidays.value.holidays.map((item) => {
+  //     return {
+  //       startdate: moment(item.startdate).format("YYYY-MM-DD"),
+  //       enddate: moment(item.enddate).format("YYYY-MM-DD"),
+  //       describe: item.describe,
+  //     };
+  //   }),
+  // }).then((response) => {
+  //   proxy.$modal.msgSuccess("鏂板鎴愬姛");
+  //   open.value = false;
+  //   getList();
+  // });
+  //   }
+  // });
+  //if (valid) {
+  // if (!hasValidDates) {
+  //   updateCalendar({
+  //     id: form.value.id,
+  //     holidays: formHolidays.value.holidays.map((item) => {
+  //       return {
+  //         startdate: moment(item.startdate).format("YYYY-MM-DD"),
+  //         enddate: moment(item.enddate).format("YYYY-MM-DD"),
+  //         describe: item.describe,
+  //       };
+  //     }),
+  //   }).then((response) => {
+  //     proxy.$modal.msgSuccess("鏂板鎴愬姛");
+  //     open.value = false;
+  //     getList();
+  //   });
+  // }
+  // });
+}
+/** 鎻愪氦鎸夐挳 */
+function submitForm() {
+  proxy.$refs["calendarRef"].validate((valid) => {
+    if (valid) {
+      if (applicableSettingList.value[0].factory === "") {
+        ElMessage({
+          type: "error",
+          message: "鑷冲皯閫夋嫨涓�涓�傜敤宸ュ巶",
+        });
+        return;
+      }
+      if (form.value.id != null) {
+        updateCalendar({
+          // ...form.value,
+          id: form.value.id,
+          expiringDate: form.value.expiringDate,
+          effectiveDate: form.value.effectiveDate,
+          description: form.value.description,
+          content: {
+            weekdays: weekDaysSettingList.value,
+          },
+          // holidays: holidays.value,
+          applicable: applicableSettingList.value.map((item) => {
+            return {
+              factory: item.factory
+                ? item.factory.indexOf(";") > 0
+                  ? item.factory.split(";")[0]
+                  : item.factory
+                : "",
+              process: item.process
+                ? item.process.indexOf(";") > 0
+                  ? item.process.split(";")[0]
+                  : item.process
+                : "",
+              workshop: item.workshop
+                ? item.workshop.indexOf(";") > 0
+                  ? item.workshop.split(";")[0]
+                  : item.workshop
+                : "",
+            };
+          }),
+          applicableTranslate: JSON.stringify(
+            applicableSettingList.value.map((item) => {
+              return {
+                factory: item.factory ? item.factory : "",
+                process: item.process ? item.process : "",
+                workshop: item.workshop ? item.workshop : "",
+              };
+            })
+          ),
+          type: "1",
+        }).then((response) => {
+          proxy.$modal.msgSuccess("淇敼鎴愬姛");
+          open.value = false;
+          getList();
+        });
+        // }
+      } else {
+        addCalendar({
+          ...form.value,
+          content: {
+            weekdays: weekDaysSettingList.value,
+          },
+          // holidays: holidays.value,
+          applicable: applicableSettingList.value.map((item) => {
+            return {
+              factory: item.factory
+                ? item.factory.indexOf(";") > 0
+                  ? item.factory.split(";")[0]
+                  : item.factory
+                : "",
+              process: item.process
+                ? item.process.indexOf(";") > 0
+                  ? item.process.split(";")[0]
+                  : item.process
+                : "",
+              workshop: item.workshop
+                ? item.workshop.indexOf(";") > 0
+                  ? item.workshop.split(";")[0]
+                  : item.workshop
+                : "",
+            };
+          }),
+          applicableTranslate: JSON.stringify(
+            applicableSettingList.value.map((item) => {
+              return {
+                factory: item.factory ? item.factory : "",
+                process: item.process ? item.process : "",
+                workshop: item.workshop ? item.workshop : "",
+              };
+            })
+          ),
+          type: "1",
+          // applicableCn:
+          //},
+        }).then((response) => {
+          proxy.$modal.msgSuccess("鏂板鎴愬姛");
+          open.value = false;
+          getList();
+        });
+        // }
+      }
+    }
+  });
+}
+
+/** 鍒犻櫎鎸夐挳鎿嶄綔 */
+function handleDelete(row) {
+  const _ids = row.id || ids.value;
+  proxy.$modal
+    .confirm('鏄惁纭鍒犻櫎鏃ュ巻绠$悊缂栧彿涓�"' + _ids + '"鐨勬暟鎹」锛�')
+    .then(function () {
+      return delCalendar(_ids);
+    })
+    .then(() => {
+      getList();
+      proxy.$modal.msgSuccess("鍒犻櫎鎴愬姛");
+    })
+    .catch(() => {});
+}
+
+/** 瀵煎嚭鎸夐挳鎿嶄綔 */
+function handleExport() {
+  proxy.download(
+    "core/calendar/export",
+    {
+      ...queryParams.value,
+    },
+    `calendar_${new Date().getTime()}.xlsx`
+  );
+}
+function handleSwitchType(e) {
+  typeRadioNumber.value = e;
+  form.value.type = e;
+  form.value.effectiveDate = null;
+  form.value.expiringDate = null;
+  form.value.content = null;
+  form.value.applicableFactory = null;
+  form.value.applicableWorkshop = null;
+  form.value.applicableProcess = null;
+}
+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 handleCheckboxChange = (data) => {
+  ids.value = data.records.map((item) => item.id);
+  single.value = data.records.length !== 1;
+  multiple.value = !data.records.length;
+};
+onMounted(() => {
+  getList();
+});
+</script>
+<style lang="scss" scoped>
+.column-with-margin {
+  margin-right: 0px;
+}
+.title_bar_line {
+  display: flex;
+  justify-content: flex-start;
+  align-items: center;
+  color: #333;
+  margin-bottom: 10px;
+  .line_short {
+    width: 5%;
+    height: 1px;
+    margin-right: 20px;
+    border-top: 1px solid #ddd;
+  }
+  .line_long {
+    width: 60%;
+    height: 1px;
+    margin-left: 20px;
+    border-top: 1px solid #ddd;
+  }
+}
+.week_flex {
+  display: flex;
+  justify-content: flex-start;
+  align-content: center;
+  color: #606266;
+  font-weight: 700;
+  margin-left: 20px;
+  &.mt20 {
+    margin-top: 20px;
+    margin-left: 0 !important;
+  }
+  .week_flex_item {
+    &:nth-child(1) {
+      margin-top: 5px;
+    }
+    &:nth-child(2) {
+      margin-left: 20px;
+    }
+  }
+}
+.factory_use_item {
+  margin-top: 10px;
+}
+.select_factory {
+  font-weight: 800;
+  font-size: 14px;
+  color: #606266;
+}
+.select_factory_dis {
+  margin-left: 34px;
+}
+.select_content {
+  margin-right: 10px;
+  margin-top: 20px;
+  // &:nth-child(1) {
+  //   margin-left:34px;
+  // }
+}
+.mart5 {
+  margin-top: 5px;
+}
+.custom-height {
+  height: 200px; /* 鎴栬�呬娇鐢� min-height */
+}
+.auto-height-grid .xe-body .xe-body--row {
+  height: auto; /* 鎴栬�呬娇鐢� min-height */
+}
+.mart10 {
+  margin-top: 20px;
+}
+.h300 {
+}
+.height_dialog {
+  height: 400px;
+  overflow: hidden;
+  .height_dialog_scroll {
+    height: 100%;
+    overflow: auto;
+  }
+}
+.dis_error_wrap {
+  .error_text {
+    margin-left: 20px;
+    font-size: 12px;
+    color: #f56c6c;
+    margin-left: 120px;
+  }
+}
+.error_require {
+  color: #f56c6c;
+  margin-right: 5px;
+}
+.grey_bg {
+  background: #f1f1f1;
+  width: 100%;
+  padding: 10px;
+  box-sizing: border-box;
+  .flex_holidays_set {
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+  }
+  .flex_item {
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+    margin-top: 10px;
+    .flex_item_title {
+      width: 85px;
+      color: #606266;
+      font-size: 14px;
+      font-weight: 600;
+      margin-left: 20px;
+      margin-right: 10px;
+    }
+    .flex_item_dis {
+      display: flex;
+      flex-direction: column;
+      justify-content: center;
+      align-items: flex-start;
+      & div {
+        margin-bottom: 5px;
+      }
+    }
+  }
+  .flex_item_expand_end {
+    display: flex;
+    justify-content: flex-end;
+    align-items: center;
+    cursor: pointer;
+  }
+}
+.title_flex {
+  margin-top: 20px;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  margin-bottom: 20px;
+  .holiday_title {
+    font-size: 15px;
+    font-weight: 500;
+  }
+}
+</style>
diff --git a/src/views/mainPlan/abnormalPartNumberReport/index.vue b/src/views/mainPlan/abnormalPartNumberReport/index.vue
index edec6cb..73fc7c0 100644
--- a/src/views/mainPlan/abnormalPartNumberReport/index.vue
+++ b/src/views/mainPlan/abnormalPartNumberReport/index.vue
@@ -8,11 +8,10 @@
       v-show="showSearch"
       label-position="left"
     >
-      <el-row type="flex" justify="left">
-        <el-col :span="locale === 'zh' ?6 : 8">
-          <el-form-item :label-width="locale === 'zh' ? '48px' : '100px'" :label="$t('plan.query.itemNumber')" prop="itemNum">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <el-form-item :style="{ width: '100%'  }" :label="$t('plan.query.itemNumber')" prop="itemNum">
             <el-input
-              :style="{ width: locale === 'zh' ? '180px' : '210px' }"
               v-model="queryParams.itemNum"
               :placeholder="`${$t('common.common.placeholder')}${$t('plan.query.itemNumber')}`"
               clearable
@@ -20,14 +19,13 @@
             />
           </el-form-item>
         </el-col>
-        <el-col :span="locale === 'zh' ? 6:10">
+        <el-col :span="8">
           <el-form-item
-            :label-width="locale === 'zh' ? '68px' : '160px'"
+            :style="{ width: '100%'  }"
             :label="$t('plan.query.workOrderNo')"
             prop="docNum"
           >
             <el-input
-              :style="{ width: locale === 'zh' ? '220px' : '250px' }"
               v-model="queryParams.docNum"
               :placeholder="`${$t('common.common.placeholder')}${$t(
                 'plan.query.workOrderNo'
@@ -37,7 +35,7 @@
             />
           </el-form-item>
         </el-col>
-        <el-col :span="locale === 'zh' ? 12 : 6" style="text-align: right">
+        <el-col :span="8" style="text-align: right">
           <el-form-item class="column-with-margin">
             <el-button type="primary" icon="Search" @click="handleQuery">{{
               $t("common.common.query")
diff --git a/src/views/mainPlan/gasPiping/index.vue b/src/views/mainPlan/gasPiping/index.vue
index 4f5d3dd..653d7e2 100644
--- a/src/views/mainPlan/gasPiping/index.vue
+++ b/src/views/mainPlan/gasPiping/index.vue
@@ -8,10 +8,9 @@
       label-position="left"
     >
       <el-row :gutter="20">
-        <el-col :span="locale === 'zh' ? 12 : 12">
-          <el-form-item :label-width="locale === 'zh' ? '90px' : '140px'" :label="$t('plan.query.daterangePlanStartDay')">
+        <el-col :span="8">
+          <el-form-item :style="{ width: '100%' }" :label="$t('plan.query.daterangePlanStartDay')">
             <el-date-picker
-              :style="{ width: locale === 'zh' ? '220px' : '240px' }"
               v-model="daterangePlanStartDay"
               value-format="YYYY-MM-DD"
               type="daterange"
@@ -21,10 +20,9 @@
             ></el-date-picker>
           </el-form-item>
         </el-col>
-        <el-col :span="locale === 'zh' ? 12 : 12">
-          <el-form-item :label-width="locale === 'zh' ? '90px' : '140px'" :label="$t('plan.query.daterangePlanEndDay')">
+        <el-col :span="8">
+          <el-form-item :style="{ width: '100%' }" :label="$t('plan.query.daterangePlanEndDay')">
             <el-date-picker
-              :style="{ width: locale === 'zh' ? '220px' : '240px' }"
               v-model="daterangePlanEndDay"
               value-format="YYYY-MM-DD"
               type="daterange"
@@ -34,16 +32,13 @@
             ></el-date-picker>
           </el-form-item>
         </el-col>
-      </el-row>
-      <el-row :gutter="20">
-        <el-col :span="locale === 'zh' ? 12 : 12">
+        <el-col :span="8">
           <el-form-item
-            :label-width="locale === 'zh' ? '90px' : '140px'"
+            :style="{ width: '100%' }" 
             :label="$t('plan.query.documentNumber')"
             prop="documentNumber"
           >
             <el-input
-              :style="{ width: locale === 'zh' ? '220px' : '240px' }"
               v-model="queryParams.documentNumber"
               :placeholder="$t('plan.placeholder.documentNumber')"
               clearable
@@ -51,10 +46,11 @@
             />
           </el-form-item>
         </el-col>
-        <el-col :span="locale === 'zh' ? 12 : 12">
-          <el-form-item :label-width="locale === 'zh' ? '90px' : '140px'" :label="$t('plan.query.customer')" prop="customer">
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <el-form-item :style="{ width: '100%' }" :label="$t('plan.query.customer')" prop="customer">
             <el-input
-              :style="{ width: locale === 'zh' ? '220px' : '240px' }"
               v-model="queryParams.customer"
               :placeholder="$t('plan.placeholder.customer')"
               clearable
@@ -62,9 +58,7 @@
             />
           </el-form-item>
         </el-col>
-      </el-row>
-      <el-row>
-        <el-col :span="24" style="text-align: right">
+        <el-col :span="16" style="text-align: right">
           <el-form-item class="column-with-margin">
             <el-button type="primary" icon="Search" @click="handleQuery">{{
               $t("common.common.query")
diff --git a/src/views/mainPlan/gasPlanning/index.vue b/src/views/mainPlan/gasPlanning/index.vue
index decef5f..4ec31aa 100644
--- a/src/views/mainPlan/gasPlanning/index.vue
+++ b/src/views/mainPlan/gasPlanning/index.vue
@@ -5,14 +5,12 @@
       :model="queryParams"
       ref="queryRef"
       :inline="true"
-      :label-width="locale === 'zh' ? '68px' : '100px'"
       label-position="left"
     >
       <el-row type="flex" justify="left">
-        <el-col :span="locale === 'zh' ? 4 : 5">
-          <el-form-item :label="$t('plan.query.selectMonth')" prop="description">
+        <el-col :span="8">
+          <el-form-item :style="{ width: '100%' }" :label="$t('plan.query.selectMonth')" prop="description">
             <el-date-picker
-              :style="{ width: locale === 'zh' ? '200px' : '220px' }"
               clearable
               v-model="queryParams.date"
               type="month"
@@ -22,7 +20,7 @@
             </el-date-picker>
           </el-form-item>
         </el-col>
-        <el-col :span="locale === 'zh' ? 20 : 19" style="text-align: right">
+        <el-col :span="16" style="text-align: right">
           <el-form-item class="column-with-margin">
             <el-button type="primary" icon="Search" @click="handleQuery"
               >{{$t("common.common.query")}}</el-button
diff --git a/src/views/mainPlan/gasProduceStatics/index.vue b/src/views/mainPlan/gasProduceStatics/index.vue
index 6645b75..b3a5a46 100644
--- a/src/views/mainPlan/gasProduceStatics/index.vue
+++ b/src/views/mainPlan/gasProduceStatics/index.vue
@@ -6,14 +6,13 @@
       ref="queryRef"
       :inline="true"
       v-show="showSearch"
-      :label-width="locale === 'zh' ? '68px' : '134px'"
+      label-position="left"
     >
-      <el-row type="flex" justify="left">
-        <el-col :span="locale === 'zh' ? 5: 7">
-          <el-form-item :label="$t('plan.query.statistical')">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <el-form-item :label="$t('plan.query.statistical')" :style="{ width: '100%' }">
             <el-select
               v-model="queryParams.searchType"
-              :style="{ width: locale === 'zh' ? '120px' : '160px' }"
               placeholder="Select"
               @change="handleChangeSelectType"
             >
@@ -26,11 +25,10 @@
             </el-select>
           </el-form-item>
         </el-col>
-        <el-col :span="locale === 'zh' ? 5: 8">
-          <el-form-item :label="$t('plan.query.selectDateRange')">
+        <el-col :span="8">
+          <el-form-item :label="$t('plan.query.selectDateRange')" :style="{ width: '100%' }">
             <div v-if="!dayCom">
               <el-date-picker
-                :style="{ width: locale === 'zh' ? '200px' : '220px' }"
                 v-model="queryParams.monthRange"
                 type="monthrange"
                 :range-separator="$t('plan.placeholder.to')"
@@ -40,7 +38,6 @@
             </div>
             <div v-else>
               <el-date-picker
-                :style="{ width: locale === 'zh' ? '200px' : '220px' }"
                 v-model="queryParams.monthDays"
                 type="month"
                 :placeholder="$t('plan.placeholder.selectMonth')"
@@ -48,7 +45,7 @@
             </div>
           </el-form-item>
         </el-col>
-        <el-col :span="locale === 'zh' ? 14: 9" style="text-align:right;">
+        <el-col :span="8" style="text-align:right;">
           <el-form-item class="column-with-margin">
             <el-button type="primary" icon="Search" @click="handleQuery">{{
               $t("common.common.query")
diff --git a/src/views/mainPlan/pipeProduceStatics/index.vue b/src/views/mainPlan/pipeProduceStatics/index.vue
index 894df8b..d99e07c 100644
--- a/src/views/mainPlan/pipeProduceStatics/index.vue
+++ b/src/views/mainPlan/pipeProduceStatics/index.vue
@@ -6,14 +6,13 @@
       ref="queryRef"
       :inline="true"
       v-show="showSearch"
-      :label-width="locale === 'zh' ? '68px' : '134px'"
+      label-position="left"
     >
-      <el-row type="flex" justify="left">
-        <el-col :span="locale === 'zh' ? 5 : 7">
-          <el-form-item :label="$t('plan.query.statistical')">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <el-form-item :label="$t('plan.query.statistical')" :style="{ width: '100%' }">
             <el-select
               v-model="queryParams.searchType"
-              :style="{ width: locale === 'zh' ? '120px' : '160px' }"
               placeholder="Select"
               @change="handleChangeSelectType"
             >
@@ -26,11 +25,10 @@
             </el-select>
           </el-form-item>
         </el-col>
-        <el-col :span="locale === 'zh' ? 5 : 8">
-          <el-form-item :label="$t('plan.query.selectDateRange')">
+        <el-col :span="8">
+          <el-form-item :label="$t('plan.query.selectDateRange')" :style="{ width: '100%' }">
             <div v-if="!dayCom">
               <el-date-picker
-                :style="{ width: locale === 'zh' ? '200px' : '220px' }"
                 v-model="queryParams.monthRange"
                 type="monthrange"
                 :range-separator="$t('plan.placeholder.to')"
@@ -40,7 +38,6 @@
             </div>
             <div v-else>
               <el-date-picker
-                :style="{ width: locale === 'zh' ? '200px' : '220px' }"
                 v-model="queryParams.monthDays"
                 type="month"
                 :placeholder="$t('plan.placeholder.selectMonth')"
@@ -48,7 +45,7 @@
             </div>
           </el-form-item>
         </el-col>
-        <el-col :span="locale === 'zh' ? 14 : 9" style="text-align: right">
+        <el-col :span="8" style="text-align: right">
           <el-form-item class="column-with-margin">
             <el-button type="primary" icon="Search" @click="handleQuery">{{
               $t("common.common.query")
diff --git a/src/views/mainPlan/platePlan/index.vue b/src/views/mainPlan/platePlan/index.vue
index 04ed943..0cd0de8 100644
--- a/src/views/mainPlan/platePlan/index.vue
+++ b/src/views/mainPlan/platePlan/index.vue
@@ -9,13 +9,13 @@
       label-position="left"
     >
       <el-row :gutter="20">
-        <el-col :span="12">
+        <el-col :span="8">
           <el-form-item
-            :label-width="locale === 'zh' ? '90px' : '140px'"
             :label="$t('plan.query.daterangePlanStartDay')"
+            :style="{ width: '100%'  }"
           >
+          <!-- locale === 'zh' ? '220px' : '240px' -->
             <el-date-picker
-              :style="{ width: locale === 'zh' ? '220px' : '240px' }"
               v-model="daterangePlanStartDay"
               value-format="YYYY-MM-DD"
               type="daterange"
@@ -25,13 +25,12 @@
             ></el-date-picker>
           </el-form-item>
         </el-col>
-        <el-col :span="12">
+        <el-col :span="8">
           <el-form-item
-            :label-width="locale === 'zh' ? '90px' : '140px'"
+            :style="{ width: '100%'  }"
             :label="$t('plan.query.daterangePlanEndDay')"
           >
             <el-date-picker
-              :style="{ width: locale === 'zh' ? '220px' : '240px' }"
               v-model="daterangePlanEndDay"
               value-format="YYYY-MM-DD"
               type="daterange"
@@ -41,16 +40,13 @@
             ></el-date-picker>
           </el-form-item>
         </el-col>
-      </el-row>
-      <el-row :gutter="20">
-        <el-col :span="12">
+        <el-col :span="8">
           <el-form-item
-            :label-width="locale === 'zh' ? '90px' : '140px'"
+            :style="{ width: '100%'  }"
             :label="$t('plan.query.documentNumber')"
             prop="documentNumber"
           >
             <el-input
-              :style="{ width: locale === 'zh' ? '220px' : '240px' }"
               v-model="queryParams.documentNumber"
               :placeholder="$t('plan.placeholder.documentNumber')"
               clearable
@@ -58,10 +54,11 @@
             />
           </el-form-item>
         </el-col>
-        <el-col :span="12">
-          <el-form-item :label-width="locale === 'zh' ? '90px' : '140px'" :label="$t('plan.query.customer')" prop="customer">
+      </el-row>
+      <el-row>
+        <el-col :span="6">
+          <el-form-item :style="{ width: '100%'  }" :label="$t('plan.query.customer')" prop="customer">
             <el-input
-              :style="{ width: locale === 'zh' ? '220px' : '240px' }"
               v-model="queryParams.customer"
               :placeholder="$t('plan.placeholder.customer')"
               clearable
@@ -69,10 +66,8 @@
             />
           </el-form-item>
         </el-col>
-      </el-row>
-      <el-row>
-        <el-col :span="24" style="text-align: right">
-          <el-form-item>
+        <el-col :span="18" style="text-align: right">
+          <el-form-item class="column-with-margin">
             <el-button type="primary" icon="Search" @click="handleQuery">{{
               $t("common.common.query")
             }}</el-button>
@@ -1052,6 +1047,9 @@
 getList();
 </script>
 <style lang="css" scoped>
+.column-with-margin {
+  margin-right: 0px;
+}
 h4 {
   font-weight: bold;
 }
diff --git a/src/views/mainPlan/plateProcessStat/index.vue b/src/views/mainPlan/plateProcessStat/index.vue
index ead9f03..b6c5737 100644
--- a/src/views/mainPlan/plateProcessStat/index.vue
+++ b/src/views/mainPlan/plateProcessStat/index.vue
@@ -6,14 +6,12 @@
       ref="queryRef"
       :inline="true"
       v-show="showSearch"
-      :label-width="locale === 'zh' ? '60px' : '150px'"
       label-position="left"
     >
       <el-row :gutter="20">
-        <el-col :span="12">
-          <el-form-item :label="$t('plan.query.workOrderNo')" prop="num">
+        <el-col :span="8">
+          <el-form-item :style="{ width: '100%'  }" :label="$t('plan.query.workOrderNo')" prop="num">
             <el-input
-              :style="{ width: locale === 'zh' ? '180px' : '250px' }"
               v-model="queryParams.workOrderNo"
               :placeholder="`${$t('common.common.placeholder')}${$t(
                 'plan.query.workOrderNo'
@@ -23,7 +21,7 @@
             />
           </el-form-item>
         </el-col>
-        <el-col :span="12" style="text-align: right">
+        <el-col :span="16" style="text-align: right">
           <el-form-item class="column-with-margin">
             <el-button type="primary" icon="Search" @click="handleQuery">{{
               $t("common.common.query")
diff --git a/src/views/mainPlan/sheetMetalOrderManage/index.vue b/src/views/mainPlan/sheetMetalOrderManage/index.vue
index 3a5b4b2..e7118e0 100644
--- a/src/views/mainPlan/sheetMetalOrderManage/index.vue
+++ b/src/views/mainPlan/sheetMetalOrderManage/index.vue
@@ -8,15 +8,14 @@
       v-show="showSearch"
       label-position="left"
     >
-      <el-row type="flex" justify="left">
-        <el-col :span="12">
+      <el-row :gutter="20">
+        <el-col :span="8">
           <el-form-item
-            :label-width="locale == 'zh' ? '80px' : '160px'"
+            :style="{ width: '100%'  }"
             :label="$t('plan.query.workOrderNo')"
             prop="workOrderNo"
           >
             <el-input
-              :style="{ width: '280px' }"
               v-model="queryParams.workOrderNo"
               :placeholder="`${$t('common.common.placeholder')}${$t(
                 'plan.query.workOrderNo'
@@ -26,14 +25,13 @@
             />
           </el-form-item>
         </el-col>
-        <el-col :span="12">
+        <el-col :span="8">
           <el-form-item
-            :label-width="locale == 'zh' ? '100px' : '200px'"
+            :style="{ width: '100%'  }"
             :label="$t('plan.query.requireTraceID')"
             prop="requireTrackId"
           >
             <el-input
-              :style="{ width: '280px' }"
               v-model="queryParams.requireTrackId"
               :placeholder="`${$t('common.common.placeholder')}${$t(
                 'plan.query.requireTraceID'
@@ -43,16 +41,13 @@
             />
           </el-form-item>
         </el-col>
-      </el-row>
-      <el-row type="flex" justify="left">
-        <el-col :span="12">
+        <el-col :span="8">
           <el-form-item
-            :label-width="locale == 'zh' ? '80px' : '160px'"
+            :style="{ width: '100%'  }"
             :label="$t('plan.query.itemNumber')"
             prop="mainPartNumber"
           >
             <el-input
-              :style="{ width: '280px' }"
               v-model="queryParams.mainPartNumber"
               :placeholder="`${$t('common.common.placeholder')}${$t(
                 'plan.query.itemNumber'
@@ -62,9 +57,11 @@
             />
           </el-form-item>
         </el-col>
-        <el-col :span="12">
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="8">
           <el-form-item
-            :label-width="locale == 'zh' ? '100px' : '200px'"
+            :style="{ width: '100%'  }"
             :label="$t('plan.table.delayRiskIdentification')"
             prop="hasDelayRisk"
           >
@@ -80,7 +77,6 @@
             <el-select
               clearable
               v-model="queryParams.hasDelayRisk"
-              style="width: 280px"
             >
               <el-option
                 v-for="item in delayRiskOptions"
@@ -91,10 +87,8 @@
             </el-select>
           </el-form-item>
         </el-col>
-      </el-row>
-      <el-row>
         <el-col
-          :span="24"
+          :span="16"
           style="
             display: flex;
             justify-content: flex-end;
diff --git a/src/views/mainPlan/sheetMetalRedundantReport/index.vue b/src/views/mainPlan/sheetMetalRedundantReport/index.vue
index b5c295a..58a692f 100644
--- a/src/views/mainPlan/sheetMetalRedundantReport/index.vue
+++ b/src/views/mainPlan/sheetMetalRedundantReport/index.vue
@@ -8,11 +8,10 @@
       v-show="showSearch"
       label-position="left"
     >
-      <el-row type="flex" justify="left">
-        <el-col :span="locale === 'zh' ? 6 : 8">
-          <el-form-item :label-width="locale === 'zh' ? '48px' : '100px'" :label="$t('plan.query.itemNumber')" prop="itemNumber">
+      <el-row :gutter="20">
+        <el-col :span="8">
+          <el-form-item :style="{ width: '100%'  }" :label="$t('plan.query.itemNumber')" prop="itemNumber">
             <el-input
-             :style="{ width: locale === 'zh' ? '180px' : '210px' }"
               v-model="queryParams.itemNumber"
               :placeholder="`${$t('common.common.placeholder')}${$t(
                 'plan.query.itemNumber'
@@ -22,13 +21,13 @@
             />
           </el-form-item>
         </el-col>
-        <el-col :span="locale === 'zh' ? 6 : 8">
+        <el-col :span="8">
           <el-form-item
+            :style="{ width: '100%'  }"
             :label="$t('plan.query.workOrderNo')"
             prop="documentNumber"
           >
             <el-input
-              :style="{ width: locale === 'zh' ? '180px' : '280px' }"
               v-model="queryParams.documentNumber"
               :placeholder="`${$t('common.common.placeholder')}${$t(
                 'plan.query.workOrderNo'
@@ -38,7 +37,7 @@
             />
           </el-form-item>
         </el-col>
-        <el-col :span="locale === 'zh' ? 12 : 8" style="text-align: right">
+        <el-col :span="8" style="text-align: right">
           <el-form-item class="column-with-margin">
             <el-button type="primary" icon="Search" @click="handleQuery">{{
               $t("common.common.query")
diff --git a/src/views/mainPlan/sheetMetalSupplyGap/index.vue b/src/views/mainPlan/sheetMetalSupplyGap/index.vue
index 81960a4..a00451c 100644
--- a/src/views/mainPlan/sheetMetalSupplyGap/index.vue
+++ b/src/views/mainPlan/sheetMetalSupplyGap/index.vue
@@ -8,15 +8,14 @@
       v-show="showSearch"
       label-position="left"
     >
-      <el-row type="flex" justify="left">
-        <el-col :span="locale === 'zh' ?7 :9">
+      <el-row :gutter="20">
+        <el-col :span="8">
           <el-form-item
-            :label-width="locale === 'zh' ? '90px' : '130px'"
+            :style="{ width: '100%'  }" 
             :label="$t('plan.query.requireTraceID')"
             prop="requireTrackId"
           >
             <el-input
-              :style="{ width: locale === 'zh' ? '180px' : '230px' }"
               v-model="queryParams.requireTrackId"
               :placeholder="`${$t('common.common.placeholder')}${$t('plan.query.requireTraceID')}`"
               clearable
@@ -24,10 +23,9 @@
             />
           </el-form-item>
         </el-col>
-        <el-col :span="locale === 'zh' ? 7: 9">
-          <el-form-item :label-width="locale === 'zh' ? '48px' : '100px'" :label="$t('plan.query.itemNumber')" prop="bomLineCode">
+        <el-col :span="8">
+          <el-form-item :style="{ width: '100%'  }" :label="$t('plan.query.itemNumber')" prop="bomLineCode">
             <el-input
-              :style="{ width: locale === 'zh' ? '180px' : '210px' }"
               v-model="queryParams.bomLineCode"
               :placeholder="`${$t('common.common.placeholder')}${$t(
                 'plan.query.itemNumber'
@@ -37,7 +35,7 @@
             />
           </el-form-item>
         </el-col>
-        <el-col :span="locale === 'zh' ? 10:6" style="text-align: right">
+        <el-col :span="8" style="text-align: right">
           <el-form-item class="column-with-margin">
             <el-button type="primary" icon="Search" @click="handleQuery">{{
               $t("common.common.query")
diff --git a/src/views/mainPlan/weldSeamEcharts/index.vue b/src/views/mainPlan/weldSeamEcharts/index.vue
index 9fb72c7..543ab2d 100644
--- a/src/views/mainPlan/weldSeamEcharts/index.vue
+++ b/src/views/mainPlan/weldSeamEcharts/index.vue
@@ -7,10 +7,10 @@
                 </div>
             </el-col> -->
             <el-col>
-                <el-form :model="queryParams" ref="queryRef" :inline="true" label-width="90px">
+                <el-form :model="queryParams" ref="queryRef" :inline="true" label-position="left">
                     <el-row :gutter="20">
-                        <el-col :span="12">
-                            <el-form-item label="缁熻鏃ユ湡" style="width: 60%;">
+                        <el-col :span="8">
+                            <el-form-item label="缁熻鏃ユ湡" :style="{ width: '100%' }">
                                 <el-date-picker
                                     v-model="totalDay"
                                     value-format="YYYY-MM"
@@ -21,8 +21,8 @@
                                 ></el-date-picker>
                             </el-form-item>
                         </el-col>
-                        <el-col  :span="12"  style="text-align: right;">
-                            <el-form-item>
+                        <el-col  :span="16"  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>
@@ -165,4 +165,9 @@
             chartRef.value.innerHTML = '<div style="text-align: center;margin-top: 50px;color: #999;">鏆傛棤鏁版嵁</div>';
         }
     }
-</script>
\ No newline at end of file
+</script>
+<style scoped>
+.column-with-margin {
+  margin-right: 0px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/mainPlan/workOrderJobLog/index.vue b/src/views/mainPlan/workOrderJobLog/index.vue
index 2111f0e..e9dbdce 100644
--- a/src/views/mainPlan/workOrderJobLog/index.vue
+++ b/src/views/mainPlan/workOrderJobLog/index.vue
@@ -1,9 +1,9 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-position="left">
       <el-row :gutter="20">
 
-        <el-col :span="6">
+        <el-col :span="8">
           <el-form-item label="涓氬姟绫诲瀷" style="width: 100%;">
             <el-select v-model="queryParams.bizType" placeholder="璇烽�夋嫨">
               <el-option
@@ -16,7 +16,7 @@
           </el-form-item>
         </el-col>
 
-        <el-col :span="6">
+        <el-col :span="8">
           <el-form-item label="璇锋眰鏃堕棿" style="width: 100%;">
             <el-date-picker
                 v-model="createTimes"
@@ -40,7 +40,7 @@
           </el-form-item>
         </el-col>-->
 
-        <el-col :span="6">
+        <el-col :span="8">
           <el-form-item label="璇锋眰缁撴灉" prop="result">
             <el-input
                 v-model="queryParams.result"
@@ -50,7 +50,9 @@
             />
           </el-form-item>
         </el-col>
-        <el-col :span="6">
+      </el-row>
+      <el-row :gutter="20">
+        <el-col :span="8">
           <el-form-item label="鍝嶅簲鏁版嵁" prop="requestData">
             <el-input
                 v-model="queryParams.responseData"
@@ -61,9 +63,9 @@
           </el-form-item>
         </el-col>
         <el-col
-            :span="24"
+            :span="16"
             style="text-align: right;">
-          <el-form-item>
+          <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>
@@ -326,3 +328,8 @@
 
 getList();
 </script>
+<style scoped>
+.column-with-margin {
+  margin-right: 0px;
+}
+</style>
\ No newline at end of file
diff --git a/src/views/partPlan/index.vue b/src/views/partPlan/index.vue
index d208ab2..4c27aa8 100644
--- a/src/views/partPlan/index.vue
+++ b/src/views/partPlan/index.vue
@@ -8,79 +8,77 @@
       label-position="left"
     >
       <el-row :gutter="20" class="mb8">
-        <el-col
-          :span="12">
-        <el-form-item :label-width="locale === 'zh' ? '90px' : '140px'" :label="$t('plan.query.daterangePlanStartDay')">
-          <el-date-picker
-            :style="{ width: locale === 'zh' ? '220px' : '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 :span="8">
+          <el-form-item
+            :label="$t('plan.query.daterangePlanStartDay')"
+            :style="{ width: '100%' }"
+          >
+            <el-date-picker
+              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="12">
-        <el-form-item :label-width="locale === 'zh' ? '90px' : '140px'" :label="$t('plan.query.daterangePlanEndDay')">
-          <el-date-picker
-            :style="{ width: locale === 'zh' ? '220px' : '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 :span="8">
+          <el-form-item
+            :style="{ width: '100%' }"
+            :label="$t('plan.query.daterangePlanEndDay')"
+          >
+            <el-date-picker
+              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="8">
+          <el-form-item
+            :label="$t('plan.query.documentNumber')"
+            :style="{ width: '100%' }"
+            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-row>
       <el-row :gutter="20">
-        <el-col
-          :span="12">
-        <el-form-item
-          :label-width="locale === 'zh' ? '90px' : '140px'"
-          :label="$t('plan.query.documentNumber')"
-          prop="documentNumber"
-        >
-          <el-input
-            :style="{ width: locale === 'zh' ? '220px' : '240px' }"
-            v-model="queryParams.documentNumber"
-            :placeholder="$t('plan.placeholder.documentNumber')"
-            clearable
-            style="width: 240px"
-            @keyup.enter="handleQuery"
-          />
-        </el-form-item>
+        <el-col :span="8">
+          <el-form-item
+            :style="{ width: '100%' }"
+            :label="$t('plan.query.customer')"
+            prop="customer"
+          >
+            <el-input
+              v-model="queryParams.customer"
+              :placeholder="$t('plan.placeholder.customer')"
+              clearable
+              @keyup.enter="handleQuery"
+            />
+          </el-form-item>
         </el-col>
-       <el-col
-          :span="12">
-        <el-form-item :label-width="locale === 'zh' ? '90px' : '140px'" :label="$t('plan.query.customer')" prop="customer">
-          <el-input
-            :style="{ width: locale === 'zh' ? '220px' : '240px' }"
-            v-model="queryParams.customer"
-            :placeholder="$t('plan.placeholder.customer')"
-            clearable
-            @keyup.enter="handleQuery"
-          />
-        </el-form-item>
+        <el-col :span="16" style="text-align: right">
+          <el-form-item class="column-with-margin">
+            <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-row>
-        <el-col
-          :span="24"
-          style="text-align: right;">
-        <el-form-item class="column-with-margin">
-          <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>
 
@@ -253,7 +251,7 @@
       <el-row v-show="isVisible">
         <el-col>
           <div>
-            <h2>{{$t("plan.upload.dataPreview")}}</h2>
+            <h2>{{ $t("plan.upload.dataPreview") }}</h2>
           </div>
           <HxlhTable
             style="width: 100%"
@@ -268,8 +266,9 @@
         <el-col>
           <div style="text-align: right">
             <h4>
-              {{$t("plan.upload.totalUpload")}}<span style="color: blue">{{ total }}</span
-              >{{$t("plan.upload.itemUpload")}}
+              {{ $t("plan.upload.totalUpload")
+              }}<span style="color: blue">{{ total }}</span
+              >{{ $t("plan.upload.itemUpload") }}
             </h4>
           </div>
         </el-col>
@@ -284,9 +283,11 @@
             :disabled="planned"
             @click="uploadParse"
             v-hasPermi="['partPlan:confirmPart']"
-            >{{$t("plan.upload.confirmUpload")}}</el-button
+            >{{ $t("plan.upload.confirmUpload") }}</el-button
           >
-          <el-button @click="dialogCancel">{{$t("plan.upload.cancel")}}</el-button>
+          <el-button @click="dialogCancel">{{
+            $t("plan.upload.cancel")
+          }}</el-button>
         </div>
       </template>
     </el-dialog>
@@ -837,10 +838,11 @@
         response.msg +
         "</div>",
       t("plan.upload.errorResult"),
-      { dangerouslyUseHTMLString: true,
+      {
+        dangerouslyUseHTMLString: true,
         confirmButtonText: t("plan.btns.confirm"),
         cancelButtonText: t("plan.btns.cancel"),
-       }
+      }
     );
   }
   proxy.$refs["uploadRef"].handleRemove(file);

--
Gitblit v1.9.3