chengxiangling
2025-05-15 52e3605766d85b04f2952b537b3f6d8d6bd96a8b
提交计划运行的搜索样优化
已修改15个文件
已添加1个文件
已删除1个文件
2147 ■■■■ 文件已修改
.env.development 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
dist.zip 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/calendar/index.vue 280 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/demand/planManage/index.vue 1494 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/abnormalPartNumberReport/index.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/gasPiping/index.vue 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/gasPlanning/index.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/gasProduceStatics/index.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/pipeProduceStatics/index.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/platePlan/index.vue 34 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/plateProcessStat/index.vue 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/sheetMetalOrderManage/index.vue 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/sheetMetalRedundantReport/index.vue 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/sheetMetalSupplyGap/index.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/weldSeamEcharts/index.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/workOrderJobLog/index.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/partPlan/index.vue 150 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.development
@@ -10,4 +10,4 @@
# é…åˆåŽç«¯æœåŠ¡
# VITE_APP_LOCAL = 'int'
# VITE_APP_LOCAL = 'zhl'
VITE_APP_LOCAL = 'hjy'
VITE_APP_LOCAL = 'int'
dist.zip
Binary files differ
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;
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>
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")
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")
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
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")
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")
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;
}
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")
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;
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")
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")
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>
</script>
<style scoped>
.column-with-margin {
  margin-right: 0px;
}
</style>
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>
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);