CD配唱片
2025-05-07 1b56e5ca59f20aebc5add65a6a76d9a5f2b1b03b
钣金冗余工单联调
已修改10个文件
358 ■■■■■ 文件已修改
.env.development 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/basicData/sheetMetalConfig/sheetMetalConfig.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/i18n/locales/common/index.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/i18n/locales/plan/index.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/bom/index.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/processRouteDataPreparate/index.vue 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/sheetMetalParamConfig/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/sheetMetalOrderManage/index.vue 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/sheetMetalRedundantReport/index.vue 240 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mainPlan/sheetMetalSupplyGap/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.development
@@ -10,4 +10,4 @@
# 配合后端服务
# VITE_APP_LOCAL = 'int'
# VITE_APP_LOCAL = 'zhl'
VITE_APP_LOCAL = 'hjy'
VITE_APP_LOCAL = 'cxl'
src/api/basicData/sheetMetalConfig/sheetMetalConfig.js
@@ -23,3 +23,12 @@
    params: query
  });
}
//  钣金冗余工单报表 apsPlatePlan/redundantOrderList
export function redundantOrderList(query) {
  return request({
    url: `/aps/apsPlatePlan/redundantOrderList`,
    method: "get",
    params: query
  });
}
src/utils/i18n/locales/common/index.js
@@ -19,7 +19,8 @@
    save: "保存",
    cancel: "取消",
    placeholder:"请输入",
    view:"查看"
    view:"查看",
    viewDetails:"查看详情"
  },
};
export const en = {
@@ -43,6 +44,7 @@
    save: "Save",
    cancel: "Cancel",
    placeholder:"Please enter the ",
    view:"View"
    view:"View",
    viewDetails:"View details"
  },
};
src/utils/i18n/locales/plan/index.js
@@ -156,7 +156,8 @@
    requirementPlanCompletionDate:"需求计划完工日",
    processRouteWorkingHours:"工艺路线工时",
    demandQuantity:"需求数量",
    netRequirement:"净需求量"
    netRequirement:"净需求量",
    bomItemID: "项 ID"
  },
};
export const en = {
@@ -317,6 +318,7 @@
    requirementPlanCompletionDate:"Requirement plan completion date",
    processRouteWorkingHours:"Process route working hours",
    demandQuantity:"Demand Quantity",
    netRequirement:"Net Requirement"
    netRequirement:"Net Requirement",
    bomItemID:"Item ID"
  },
};
src/views/basicData/bom/index.vue
@@ -9,8 +9,8 @@
        v-show="showSearch"
        :label-width="locale === 'zh' ? '90px' : '160px'"
      >
        <el-row :gutter="20">
          <el-col :span="9">
        <!-- <el-row :gutter="20">
          <el-col :span="10"> -->
            <el-form-item :label="$t('plan.query.itemNumber')" prop="itemCode">
              <el-input
                style="width: 210px"
@@ -22,8 +22,8 @@
                @keyup.enter="handleQuery"
              />
            </el-form-item>
          </el-col>
          <el-col :span="9">
        <!-- </el-col>
          <el-col :span="10"> -->
            <el-form-item
              :label="$t('plan.table.applicableFactories')"
              prop="orgCode"
@@ -31,8 +31,10 @@
              <el-select
                clearable
                v-model="queryParams.orgCode"
                :style="{width: locale=='zh'?'160px':'250px'}"
                :placeholder="`${$t('common.common.placeholder')}${$t('plan.table.applicableFactories')}`"
            style="width: 160px"
            :placeholder="`${$t('common.common.placeholder')}${$t(
              'plan.table.applicableFactories'
            )}`"
              >
                <el-option
                  v-for="plant in plantList"
@@ -43,8 +45,8 @@
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="6" style="text-align: right">
        <!-- </el-col>
          <el-col :span="4" style="text-align: right"> -->
            <el-form-item>
              <el-button type="primary" icon="Search" @click="handleQuery">{{
                $t("common.common.query")
@@ -53,8 +55,8 @@
                $t("common.common.reset")
              }}</el-button>
            </el-form-item>
          </el-col>
        </el-row>
        <!-- </el-col>
        </el-row> -->
      </el-form>
    </el-row>
    <el-row :gutter="10" class="mb8">
@@ -97,7 +99,12 @@
        >
      </template>
    </HxlhTable>
    <el-dialog :title="title" v-model="openDialog" width="900px" append-to-body>
    <el-dialog
      :title="$t('common.common.viewDetails')"
      v-model="openDialog"
      width="900px"
      append-to-body
    >
      <HxlhTable
        style="width: 100%"
        :columns="subGridOptions"
@@ -106,6 +113,13 @@
        :height="heightSub"
      >
      </HxlhTable>
      <template #footer>
        <span class="dialog-footer">
          <el-button @click="openDialog = false">{{
            $t("common.common.cancel")
          }}</el-button>
        </span>
      </template>
    </el-dialog>
  </div>
</template>
@@ -134,7 +148,7 @@
const loadingSub = ref(false);
const showSearch = ref(true);
const total = ref(0);
const height = ref(document.documentElement.clientHeight - 270 + "px;");
const height = ref(document.documentElement.clientHeight - 210 + "px;");
const heightSub = ref(document.documentElement.clientHeight - 320 + "px;");
// 表格配置
const columns = ref([]);
@@ -145,7 +159,7 @@
    pageNum: 1,
    pageSize: 10,
    itemCode: null,
    orgCode:""
    orgCode: "",
  },
  rules: {},
});
@@ -175,7 +189,7 @@
      // },
      // { type: "checkbox", width: 60, align: "center" },
      {
        title: "BOM_Header_ID",
        title: "BOM ID",
        field: "bomHeaderId",
      },
      {
@@ -221,13 +235,13 @@
    ];
    subGridOptions.value = [
      {
        title: "BOM_Line_ID",
        title: t("plan.table.bomItemID"),
        field: "bomLineId",
        width: 150,
        align: "center",
      },
      {
        title: "BOM_Header_ID",
        title: "BOM ID",
        field: "bomHeaderId",
        width: 150,
        align: "center",
src/views/basicData/processRouteDataPreparate/index.vue
@@ -95,11 +95,16 @@
          link
          @click="handleCheckView(row)"
          v-hasPermi="['aps:calendar:update']"
          >查看</el-button
          >{{ $t("common.common.view") }}</el-button
        >
      </template>
    </HxlhTable>
    <el-dialog :title="title" v-model="openDialog" width="900px" append-to-body>
    <el-dialog
      :title="$t('common.common.viewDetails')"
      v-model="openDialog"
      width="900px"
      append-to-body
    >
      <HxlhTable
        style="width: 100%"
        :columns="subGridOptions"
@@ -108,6 +113,13 @@
        :height="heightSub"
      >
      </HxlhTable>
      <template #footer>
        <span class="dialog-footer">
          <el-button @click="openDialog = false">{{
            $t("common.common.cancel")
          }}</el-button>
        </span>
      </template>
    </el-dialog>
  </div>
</template>
@@ -142,7 +154,7 @@
const single = ref(true);
const total = ref(0);
const height = ref(document.documentElement.clientHeight - 270 + "px;");
const height = ref(document.documentElement.clientHeight - 210 + "px;");
const heightSub = ref(document.documentElement.clientHeight - 320 + "px;");
// 表格配置
const columns = ref([]);
@@ -155,8 +167,7 @@
    itemCode: null,
  },
  rules: {
    itemCode: [
    ],
    itemCode: [],
  },
});
@@ -329,10 +340,12 @@
function getList() {
  loading.value = true;
  queryParams.value.params = {};
  apsStandardProcessRouteHeaderList(queryParams.value).then((response) => {
  apsStandardProcessRouteHeaderList(queryParams.value)
    .then((response) => {
    processRouteList.value = response.rows;
    loading.value = false;
  }).catch(()=>{
    })
    .catch(() => {
    loading.value = false;
  });
}
src/views/basicData/sheetMetalParamConfig/index.vue
@@ -45,7 +45,7 @@
onMounted(async () => {
  let config = await queryConfigParams("plate_plan_param");
  console.log(config.data, "configwudhuhfuw");
  ruleForm.value.days = config.data[0].dictValue * 1;
  ruleForm.value.days = parseInt(config.data[0].dictValue);
  configParams.value = config.data[0];
  // console.log(plate_plan_param.value[0].value,'plate_plan_paramplate_plan_param')
});
src/views/mainPlan/sheetMetalOrderManage/index.vue
@@ -125,6 +125,21 @@
      >
      </HxlhTable>
    </el-dialog>
    <el-dialog
      :title="'批量更新工单计划日期'"
      v-model="openBatchDialog"
      width="900px"
      append-to-body
    >
      <HxlhTable
        style="width: 100%"
        :columns="subGridOptions"
        :data="subList"
        :loading="loading"
        :height="heightSub"
      >
      </HxlhTable>
    </el-dialog>
  </div>
</template>
@@ -145,6 +160,7 @@
const { t, locale } = useI18n();
const { proxy } = getCurrentInstance();
const openDialog = ref(false);
const openBatchDialog = ref(false);
const subGridOptions = ref([]);
// const tableRef = ref();
const calendarList = ref([]);
@@ -410,7 +426,7 @@
  }
);
function handleBatchUpdatePlanDate(){
  openBatchDialog.value = true
}
function handleCheckView(row) {
  openDialog.value = true;
src/views/mainPlan/sheetMetalRedundantReport/index.vue
@@ -10,13 +10,10 @@
    >
      <el-row type="flex" justify="left">
        <el-col :span="locale === 'zh' ? 5 : 10">
          <el-form-item
            :label="$t('plan.query.requireTraceID')"
            prop="description"
          >
          <el-form-item :label="$t('plan.query.itemNumber')" prop="itemNumber">
            <el-input
              :style="{ width: locale === 'zh' ? '140px' : '300px' }"
              v-model="queryParams.description"
              v-model="queryParams.itemNumber"
              :placeholder="`${$t('plan.placeholder.requireTraceID')}`"
              clearable
              @keyup.enter="handleQuery"
@@ -24,10 +21,13 @@
          </el-form-item>
        </el-col>
        <el-col :span="locale === 'zh' ? 8 : 9">
          <el-form-item :label="$t('plan.query.itemNumber')" prop="description">
          <el-form-item
            :label="$t('plan.query.workOrderNo')"
            prop="documentNumber"
          >
            <el-input
              :style="{ width: locale === 'zh' ? '140px' : '210px' }"
              v-model="queryParams.description"
              v-model="queryParams.documentNumber"
              :placeholder="`${$t('common.common.placeholder')}${$t(
                'plan.query.itemNumber'
              )}`"
@@ -56,7 +56,7 @@
          plain
          icon="Download"
          @click="handleExport"
          v-hasPermi="['core:calendar:export']"
          v-hasPermi="['Aps:apsPlatePlan:redundantOrderListExport']"
          >{{ $t("common.common.export") }}</el-button
        >
      </el-col>
@@ -68,7 +68,7 @@
    <HxlhTable
      style="width: 100%"
      :columns="columns"
      :data="calendarList"
      :data="orderList"
      :loading="loading"
      :height="height"
      ref="tableRef"
@@ -91,6 +91,7 @@
  addCalendar,
  updateCalendar,
} from "@/api/basicData/calendar";
import { redundantOrderList } from "@/api/basicData/sheetMetalConfig/sheetMetalConfig";
import axios from "axios";
import { listAll_plant } from "@/api/basicData/plant";
import { listAll_shop, listAps_shop } from "@/api/basicData/shop";
@@ -99,7 +100,7 @@
const { t, locale } = useI18n();
const { proxy } = getCurrentInstance();
const tableRef = ref();
const calendarList = ref([]);
const orderList = ref([]);
const loading = ref(true);
const showSearch = ref(true);
const ids = ref([]);
@@ -114,14 +115,8 @@
  queryParams: {
    pageNum: 1,
    pageSize: 10,
    description: null,
    type: null,
    effectiveDate: null,
    expiringDate: null,
    content: null,
    applicableFactory: null,
    applicableWorkshop: null,
    applicableProcess: null,
    documentNumber: null,
    itemNumber: null,
  },
});
const { queryParams, form, rules } = toRefs(data);
@@ -145,31 +140,31 @@
    columns.value = [
      {
        title: t("plan.table.workOrderNo"),
        field: "description",
        field: "documentNumber",
        width: 150,
        align: "center",
      },
      {
        title: t("plan.table.subItemPartNumber"),
        field: "type",
        field: "itemNumber",
        width: 200,
        align: "center",
      },
      {
        title: t("plan.table.productionQuantity"),
        field: "effectiveDate",
        field: "productionQuantity",
        width: 200,
        align: "center",
      },
      {
        title: t("plan.table.mismatchedProductionQuantity"),
        field: "expiringDate",
        field: "unmatchedQuantity",
        width: 200,
        align: "center",
      },
      {
        title: t("plan.table.applicableFactories"),
        field: "applicableFactory",
        field: "plant",
        width: 200,
        align: "center",
        formatter: ({ cellValue, row, column }) => {
@@ -184,25 +179,25 @@
      },
      {
        title: t("plan.table.productionBase"),
        field: "expiringDate",
        field: "productionBase",
        width: 200,
        align: "center",
      },
      {
        title: t("plan.table.planStartDay"),
        field: "createTime",
        field: "planStartDay",
        width: 200,
        align: "center",
      },
      {
        title: t("plan.table.planEndDayDate"),
        field: "updateTime",
        field: "planEndDay",
        width: 100,
        align: "center",
      },
      {
        title: t("plan.table.workorderCreationTime"),
        field: "updateTime",
        field: "orderCreateTime",
        width: 100,
        align: "center",
      },
@@ -213,59 +208,24 @@
/** 查询日历管理列表 */
function getList() {
  loading.value = true;
  listCalendar(queryParams.value).then((response) => {
    calendarList.value = response.rows;
  redundantOrderList(queryParams.value).then((response) => {
    orderList.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;
  }).catch(()=>{
        loading.value = false;
      })
    )
    .catch((error) => {
      console.error("请求出错:", error);
    });
}
// 取消按钮
function cancel() {
  open.value = false;
  reset();
}
// 表单重置
function reset() {
  form.value = {
    id: null,
    description: null,
    type: "1",
    effectiveDate: null,
    expiringDate: null,
    content: null,
    applicableFactory: null,
    applicableWorkshop: null,
    applicableProcess: null,
    createBy: null,
    createTime: null,
    updateBy: null,
    updateTime: null,
  };
  proxy.resetForm("calendarRef");
  proxy.resetForm("queryRef");
}
/** 搜索按钮操作 */
function handleQuery() {
  queryParams.value.pageNum = 1;
  page.value.current = 1;
  getList();
}
@@ -275,143 +235,15 @@
  handleQuery();
}
// 多选框选中数据
function handleSelectionChange(selection) {
  ids.value = selection.map((item) => item.id);
  single.value = selection.length != 1;
  multiple.value = !selection.length;
}
/** 新增按钮操作 */
async function handleAdd() {
  reset();
  open.value = true;
  title.value = "添加日历管理";
}
/** 选择工厂后事件 加载车间 和 工序 **/
function changePlant(plant) {
  listAps_shop({ plantCode: plant }).then((response) => {
    shopList.value = response.rows;
  });
  selectProcessNameList({ orgCode: plant }).then((response) => {
    processList.value = response.rows;
  });
}
/** 修改按钮操作 */
function handleUpdate(row) {
  reset();
  const _id = row.id || ids.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;
    }
    open.value = true;
    title.value = "修改日历管理";
  });
}
/** 提交按钮 */
function submitForm() {
  proxy.$refs["calendarRef"].validate((valid) => {
    if (valid) {
      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,
            content: {
              holidays: holidays.value,
            },
            applicableWorkshop: form.value.applicableWorkshop,
            applicableProcess: form.value.applicableProcess,
          }).then((response) => {
            proxy.$modal.msgSuccess("修改成功");
            open.value = false;
            getList();
          });
        }
      } 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: {
              holidays: holidays.value,
            },
          }).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",
    "aps/apsPlatePlan/redundantOrderListExport",
    {
      ...queryParams.value,
    },
    `calendar_${new Date().getTime()}.xlsx`
    `redundantOrderList_${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;
@@ -424,14 +256,16 @@
  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();
  /** 查询工厂列表 */
  listAll_plant({})
    .then((response) => {
      plantList.value = response.data;
    })
    .catch((error) => {
      console.error("请求出错:", error);
    });
});
</script>
<style lang="scss" scoped>
src/views/mainPlan/sheetMetalSupplyGap/index.vue
@@ -56,7 +56,7 @@
          plain
          icon="Download"
          @click="handleExport"
          v-hasPermi="['core:calendar:export']"
          v-hasPermi="['Aps:ApsPlateStandardRequire:supplyGapListExport']"
          >{{ $t("common.common.export") }}</el-button
        >
      </el-col>