gaoluyang
2025-12-04 cec42fd188b00a2f8fe8f6902ccfc58381d2a481
1.润泰生物、安佑农牧-生产管控:生产派工需要新增派工产线及生产人
已添加2个文件
已修改14个文件
1193 ■■■■ 文件已修改
src/api/lavorissce/issue.js 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicData/product/index.vue 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/dispatchLog/index.vue 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/issueManagement/index.vue 104 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/receiptManagement/index.vue 108 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/stockManagement/index.vue 110 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/productionManagement/LineManagement/index.vue 412 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/productionManagement/operationScheduling/components/formDia.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/productionManagement/operationScheduling/index.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/productionManagement/productionCosting/index.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/productionManagement/productionDispatching/components/autoDispatchDia.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/productionManagement/productionDispatching/components/formDia.vue 65 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/productionManagement/productionDispatching/index.vue 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/productionManagement/productionReporting/components/formDia.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/productionManagement/productionReporting/index.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/salesManagement/salesLedger/index.vue 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/lavorissce/issue.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
import request from '@/utils/request'
// èŽ·å–äº§çº¿æ ‘å½¢ç»“æž„
export function getDeptPositionTree() {
  return request({
    url: '/productionLine/listTree',
    method: 'get'
  })
}
// æ–°å¢žäº§çº¿æˆ–工序
export function addDeptPosition(data) {
  return request({
    url: '/productionLine/add',
    method: 'post',
    data: data
  })
}
// ä¿®æ”¹äº§çº¿æˆ–工序
export function updateDeptPosition(data) {
  return request({
    url: '/productionLine/update',
    method: 'post',
    data: data
  })
}
// åˆ é™¤äº§çº¿æˆ–工序
export function deleteDeptPosition(id) {
  return request({
    url: '/productionLine/delete',
    method: 'delete',
    data: id
  })
}
// æŸ¥è¯¢å·¥åºåˆ—表(根据parentId)
export function laborConfListPage(query) {
    return request({
        url: '/productionLine/pageList',
        method: 'get',
        params: query
    })
}
src/views/basicData/product/index.vue
@@ -165,24 +165,24 @@
            </el-form-item>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="24">
            <el-form-item label="绑定机器:" prop="speculativeTradingName">
              <el-select
                v-model="modelForm.speculativeTradingName"
                placeholder="请选择绑定机器"
                multiple
                clearable
                style="width: 100%"
              >
                <el-option label="炒机1" value="炒机1" />
                <el-option label="炒机2" value="炒机2" />
                <el-option label="炒机3" value="炒机3" />
                <el-option label="炒机4" value="炒机4" />
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
<!--        <el-row>-->
<!--          <el-col :span="24">-->
<!--            <el-form-item label="绑定机器:" prop="speculativeTradingName">-->
<!--              <el-select-->
<!--                v-model="modelForm.speculativeTradingName"-->
<!--                placeholder="请选择绑定机器"-->
<!--                multiple-->
<!--                clearable-->
<!--                style="width: 100%"-->
<!--              >-->
<!--                <el-option label="炒机1" value="炒机1" />-->
<!--                <el-option label="炒机2" value="炒机2" />-->
<!--                <el-option label="炒机3" value="炒机3" />-->
<!--                <el-option label="炒机4" value="炒机4" />-->
<!--              </el-select>-->
<!--            </el-form-item>-->
<!--          </el-col>-->
<!--        </el-row>-->
      </el-form>
      <template #footer>
        <div class="dialog-footer">
@@ -230,10 +230,10 @@
    label: "单位",
    prop: "unit",
  },
  {
    label: "绑定机器",
    prop: "speculativeTradingName",
  },
  // {
  //   label: "绑定机器",
  //   prop: "speculativeTradingName",
  // },
  {
    dataType: "action",
    label: "操作",
src/views/inventoryManagement/dispatchLog/index.vue
@@ -1,7 +1,7 @@
<template>
    <div class="app-container">
        <el-tabs v-model="activeTab" @tab-change="handleTabChange">
            <el-tab-pane label="生产出库" name="production">
            <el-tab-pane label="成品出库" name="production">
                <div class="search_form">
                    <div>
<!--                        <span class="search_title">客户名称:</span>-->
@@ -137,74 +137,74 @@
                </div>
            </el-tab-pane>
            <el-tab-pane label="自定义出库" name="manual">
                <div class="search_form">
                    <div>
<!--                        <span class="search_title">供应商名称:</span>-->
<!--                        <el-input-->
<!--                            v-model="searchForm.supplierName"-->
<!--                            style="width: 240px"-->
<!--                            placeholder="请输入"-->
<!--                            @change="handleQuery"-->
<!--            <el-tab-pane label="自定义出库" name="manual">-->
<!--                <div class="search_form">-->
<!--                    <div>-->
<!--&lt;!&ndash;                        <span class="search_title">供应商名称:</span>&ndash;&gt;-->
<!--&lt;!&ndash;                        <el-input&ndash;&gt;-->
<!--&lt;!&ndash;                            v-model="searchForm.supplierName"&ndash;&gt;-->
<!--&lt;!&ndash;                            style="width: 240px"&ndash;&gt;-->
<!--&lt;!&ndash;                            placeholder="请输入"&ndash;&gt;-->
<!--&lt;!&ndash;                            @change="handleQuery"&ndash;&gt;-->
<!--&lt;!&ndash;                            clearable&ndash;&gt;-->
<!--&lt;!&ndash;                            prefix-icon="Search"&ndash;&gt;-->
<!--&lt;!&ndash;                        />&ndash;&gt;-->
<!--                        <span class="search_title ml10">出库日期:</span>-->
<!--                        <el-date-picker-->
<!--                            v-model="searchForm.timeStr"-->
<!--                            type="date"-->
<!--                            placeholder="请选择日期"-->
<!--                            value-format="YYYY-MM-DD"-->
<!--                            format="YYYY-MM-DD"-->
<!--                            clearable-->
<!--                            prefix-icon="Search"-->
<!--                            @change="handleQuery"-->
<!--                        />-->
                        <span class="search_title ml10">出库日期:</span>
                        <el-date-picker
                            v-model="searchForm.timeStr"
                            type="date"
                            placeholder="请选择日期"
                            value-format="YYYY-MM-DD"
                            format="YYYY-MM-DD"
                            clearable
                            @change="handleQuery"
                        />
                        <el-button type="primary" @click="handleQuery" style="margin-left: 10px">搜索</el-button>
                    </div>
                    <div>
                        <el-button @click="handleOut">导出</el-button>
                        <el-button type="danger" plain @click="handleDelete">删除</el-button>
                        <el-button type="primary" plain @click="handlePrint">打印</el-button>
                    </div>
                </div>
                <div class="table_list">
                    <el-table
                        :data="tableData"
                        border
                        v-loading="tableLoading"
                        @selection-change="handleSelectionChange"
                        :expand-row-keys="expandedRowKeys"
                        :row-key="(row) => row.id"
                        show-summary
                        style="width: 100%"
                        :summary-method="summarizeMainTable"
                        height="calc(100vh - 18.5em)"
                    >
                        <el-table-column align="center" type="selection" width="55" />
                        <el-table-column align="center" label="序号" type="index" width="60" />
                        <el-table-column label="出库日期" prop="createTime" show-overflow-tooltip />
                        <!-- <el-table-column label="供应商名称" prop="supplierName" width="250" show-overflow-tooltip /> -->
                        <el-table-column label="产品大类" prop="productCategory" show-overflow-tooltip />
                        <el-table-column label="规格型号" prop="specificationModel" show-overflow-tooltip />
                        <el-table-column label="单位" prop="unit" show-overflow-tooltip />
                        <el-table-column label="物品类型" prop="itemType" show-overflow-tooltip />
                        <el-table-column label="出库数量" prop="inboundNum" show-overflow-tooltip />
<!--                        <el-table-column label="含税单价(元)" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />-->
<!--                        <el-table-column label="含税总价(元)" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />-->
<!--                        <el-table-column label="税率(%)" prop="taxRate" width="100" show-overflow-tooltip />-->
<!--                        <el-table-column label="不含税总价(元)" prop="taxExclusiveTotalPrice" width="180" show-overflow-tooltip />-->
                        <el-table-column label="出库人" prop="createBy" show-overflow-tooltip />
                    </el-table>
                    <pagination
                        v-show="total > 0"
                        :total="total"
                        layout="total, sizes, prev, pager, next, jumper"
                        :page="page.current"
                        :limit="page.size"
                        @pagination="paginationChange"
                    />
                </div>
            </el-tab-pane>
<!--                        <el-button type="primary" @click="handleQuery" style="margin-left: 10px">搜索</el-button>-->
<!--                    </div>-->
<!--                    <div>-->
<!--                        <el-button @click="handleOut">导出</el-button>-->
<!--                        <el-button type="danger" plain @click="handleDelete">删除</el-button>-->
<!--                        <el-button type="primary" plain @click="handlePrint">打印</el-button>-->
<!--                    </div>-->
<!--                </div>-->
<!--                <div class="table_list">-->
<!--                    <el-table-->
<!--                        :data="tableData"-->
<!--                        border-->
<!--                        v-loading="tableLoading"-->
<!--                        @selection-change="handleSelectionChange"-->
<!--                        :expand-row-keys="expandedRowKeys"-->
<!--                        :row-key="(row) => row.id"-->
<!--                        show-summary-->
<!--                        style="width: 100%"-->
<!--                        :summary-method="summarizeMainTable"-->
<!--                        height="calc(100vh - 18.5em)"-->
<!--                    >-->
<!--                        <el-table-column align="center" type="selection" width="55" />-->
<!--                        <el-table-column align="center" label="序号" type="index" width="60" />-->
<!--                        <el-table-column label="出库日期" prop="createTime" show-overflow-tooltip />-->
<!--                        &lt;!&ndash; <el-table-column label="供应商名称" prop="supplierName" width="250" show-overflow-tooltip /> &ndash;&gt;-->
<!--                        <el-table-column label="产品大类" prop="productCategory" show-overflow-tooltip />-->
<!--                        <el-table-column label="规格型号" prop="specificationModel" show-overflow-tooltip />-->
<!--                        <el-table-column label="单位" prop="unit" show-overflow-tooltip />-->
<!--                        <el-table-column label="物品类型" prop="itemType" show-overflow-tooltip />-->
<!--                        <el-table-column label="出库数量" prop="inboundNum" show-overflow-tooltip />-->
<!--&lt;!&ndash;                        <el-table-column label="含税单价(元)" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />&ndash;&gt;-->
<!--&lt;!&ndash;                        <el-table-column label="含税总价(元)" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />&ndash;&gt;-->
<!--&lt;!&ndash;                        <el-table-column label="税率(%)" prop="taxRate" width="100" show-overflow-tooltip />&ndash;&gt;-->
<!--&lt;!&ndash;                        <el-table-column label="不含税总价(元)" prop="taxExclusiveTotalPrice" width="180" show-overflow-tooltip />&ndash;&gt;-->
<!--                        <el-table-column label="出库人" prop="createBy" show-overflow-tooltip />-->
<!--                    </el-table>-->
<!--                    <pagination-->
<!--                        v-show="total > 0"-->
<!--                        :total="total"-->
<!--                        layout="total, sizes, prev, pager, next, jumper"-->
<!--                        :page="page.current"-->
<!--                        :limit="page.size"-->
<!--                        @pagination="paginationChange"-->
<!--                    />-->
<!--                </div>-->
<!--            </el-tab-pane>-->
        </el-tabs>
        
        <!-- æ‰“印预览弹窗 -->
src/views/inventoryManagement/issueManagement/index.vue
@@ -1,7 +1,7 @@
<template>
  <div class="app-container">
    <el-tabs v-model="activeTab" @tab-change="handleTabChange">
      <el-tab-pane label="生产出库" name="production">
      <el-tab-pane label="成品出库" name="production">
        <div class="search_form">
          <div>
<!--            <span class="search_title">客户名称:</span>-->
@@ -102,57 +102,57 @@
        </div>
      </el-tab-pane>
      <el-tab-pane label="自定义出库" name="manual">
        <div class="search_form">
          <div>
<!--            <span class="search_title">供应商名称:</span>-->
<!--            <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="请输入" @change="handleQuery"-->
<!--              clearable prefix-icon="Search" />-->
            <span class="search_title ml10">入库日期:</span>
            <el-date-picker
              v-model="searchForm.timeStr"
              type="date"
              placeholder="请选择日期"
              value-format="YYYY-MM-DD"
              format="YYYY-MM-DD"
              clearable
              @change="handleQuery"
            />
            <el-button type="primary" @click="handleQuery" style="margin-left: 10px">搜索</el-button>
          </div>
          <div>
            <el-button @click="handleOut">导出</el-button>
          </div>
        </div>
        <div class="table_list">
          <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"
            :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%"
            :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">
            <el-table-column align="center" type="selection" width="55" />
            <el-table-column align="center" label="序号" type="index" width="60" />
            <el-table-column label="入库时间" prop="inboundDate" width="100" show-overflow-tooltip />
            <el-table-column label="入库批次" prop="inboundBatches" width="160" show-overflow-tooltip />
            <!-- <el-table-column label="供应商名称" prop="supplierName" width="240" show-overflow-tooltip /> -->
            <el-table-column label="产品大类" prop="productCategory" show-overflow-tooltip />
            <el-table-column label="规格型号" prop="specificationModel" show-overflow-tooltip />
            <el-table-column label="单位" prop="unit" width="70" show-overflow-tooltip />
            <el-table-column label="物品类型" prop="itemType" show-overflow-tooltip />
            <el-table-column label="入库数量" prop="inboundNum" show-overflow-tooltip />
<!--            <el-table-column label="含税单价" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="含税总价" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="税率(%)" prop="taxRate" width="80" show-overflow-tooltip />-->
<!--            <el-table-column label="不含税总价" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />-->
            <el-table-column label="入库人" prop="createBy" show-overflow-tooltip />
            <el-table-column fixed="right" label="操作" width="100" align="center">
              <template #default="scope">
                <el-button link type="primary" size="small" @click="openForm(scope.row);">领用</el-button>
              </template>
            </el-table-column>
          </el-table>
          <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper"
            :page="page.current" :limit="page.size" @pagination="paginationChange" />
        </div>
      </el-tab-pane>
<!--      <el-tab-pane label="自定义出库" name="manual">-->
<!--        <div class="search_form">-->
<!--          <div>-->
<!--&lt;!&ndash;            <span class="search_title">供应商名称:</span>&ndash;&gt;-->
<!--&lt;!&ndash;            <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="请输入" @change="handleQuery"&ndash;&gt;-->
<!--&lt;!&ndash;              clearable prefix-icon="Search" />&ndash;&gt;-->
<!--            <span class="search_title ml10">入库日期:</span>-->
<!--            <el-date-picker-->
<!--              v-model="searchForm.timeStr"-->
<!--              type="date"-->
<!--              placeholder="请选择日期"-->
<!--              value-format="YYYY-MM-DD"-->
<!--              format="YYYY-MM-DD"-->
<!--              clearable-->
<!--              @change="handleQuery"-->
<!--            />-->
<!--            <el-button type="primary" @click="handleQuery" style="margin-left: 10px">搜索</el-button>-->
<!--          </div>-->
<!--          <div>-->
<!--            <el-button @click="handleOut">导出</el-button>-->
<!--          </div>-->
<!--        </div>-->
<!--        <div class="table_list">-->
<!--          <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"-->
<!--            :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%"-->
<!--            :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">-->
<!--            <el-table-column align="center" type="selection" width="55" />-->
<!--            <el-table-column align="center" label="序号" type="index" width="60" />-->
<!--            <el-table-column label="入库时间" prop="inboundDate" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="入库批次" prop="inboundBatches" width="160" show-overflow-tooltip />-->
<!--            &lt;!&ndash; <el-table-column label="供应商名称" prop="supplierName" width="240" show-overflow-tooltip /> &ndash;&gt;-->
<!--            <el-table-column label="产品大类" prop="productCategory" show-overflow-tooltip />-->
<!--            <el-table-column label="规格型号" prop="specificationModel" show-overflow-tooltip />-->
<!--            <el-table-column label="单位" prop="unit" width="70" show-overflow-tooltip />-->
<!--            <el-table-column label="物品类型" prop="itemType" show-overflow-tooltip />-->
<!--            <el-table-column label="入库数量" prop="inboundNum" show-overflow-tooltip />-->
<!--&lt;!&ndash;            <el-table-column label="含税单价" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />&ndash;&gt;-->
<!--&lt;!&ndash;            <el-table-column label="含税总价" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />&ndash;&gt;-->
<!--&lt;!&ndash;            <el-table-column label="税率(%)" prop="taxRate" width="80" show-overflow-tooltip />&ndash;&gt;-->
<!--&lt;!&ndash;            <el-table-column label="不含税总价" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />&ndash;&gt;-->
<!--            <el-table-column label="入库人" prop="createBy" show-overflow-tooltip />-->
<!--            <el-table-column fixed="right" label="操作" width="100" align="center">-->
<!--              <template #default="scope">-->
<!--                <el-button link type="primary" size="small" @click="openForm(scope.row);">领用</el-button>-->
<!--              </template>-->
<!--            </el-table-column>-->
<!--          </el-table>-->
<!--          <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper"-->
<!--            :page="page.current" :limit="page.size" @pagination="paginationChange" />-->
<!--        </div>-->
<!--      </el-tab-pane>-->
    </el-tabs>
    <el-dialog v-model="dialogFormVisible" :title="'新增出库'" width="40%" @close="closeDia">
      <el-form :model="form" label-width="140px" label-position="top" :rules="rules" ref="formRef">
src/views/inventoryManagement/receiptManagement/index.vue
@@ -1,7 +1,7 @@
<template>
  <div class="app-container">
    <el-tabs v-model="activeTab" @tab-change="handleTabChange">
      <el-tab-pane label="生产入库" name="production">
      <el-tab-pane label="成品入库" name="production">
        <div class="search_form">
          <div>
<!--            <span class="search_title">客户名称:</span>-->
@@ -99,59 +99,59 @@
        </div>
      </el-tab-pane>
      
      <el-tab-pane label="自定义入库" name="manual">
        <div class="search_form">
          <div>
<!--            <span class="search_title">供应商名称:</span>-->
<!--            <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="请输入" @change="handleQuery"-->
<!--              clearable prefix-icon="Search" />-->
            <span class="search_title ml10">入库日期:</span>
            <el-date-picker
              v-model="searchForm.timeStr"
              type="date"
              placeholder="请选择日期"
              value-format="YYYY-MM-DD"
              format="YYYY-MM-DD"
              clearable
              @change="handleQuery"
            />
            <el-button type="primary" @click="handleQuery" style="margin-left: 10px">搜索</el-button>
          </div>
          <div>
            <el-button type="primary" @click="openForm('add', 'manual')">新增入库</el-button>
            <el-button @click="handleOut">导出</el-button>
            <el-button type="danger" plain @click="handleDelete">删除</el-button>
          </div>
        </div>
        <div class="table_list">
          <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"
            :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%"
            :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">
            <el-table-column align="center" type="selection" width="55" />
            <el-table-column align="center" label="序号" type="index" width="60" />
            <el-table-column label="入库时间" prop="inboundDate" width="100" show-overflow-tooltip />
            <el-table-column label="入库批次" prop="inboundBatches" show-overflow-tooltip />
            <!-- <el-table-column label="供应商名称" prop="supplierName" width="240" show-overflow-tooltip /> -->
            <el-table-column label="产品大类" prop="productCategory" show-overflow-tooltip />
            <el-table-column label="规格型号" prop="specificationModel" show-overflow-tooltip />
            <el-table-column label="单位" prop="unit" width="70" show-overflow-tooltip />
            <el-table-column label="物品类型" prop="itemType" show-overflow-tooltip />
            <el-table-column label="入库数量" prop="inboundNum" show-overflow-tooltip />
<!--            <el-table-column label="含税单价" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="含税总价" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="税率(%)" prop="taxRate" width="80" show-overflow-tooltip />-->
<!--            <el-table-column label="不含税总价" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />-->
            <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />
            <el-table-column fixed="right" label="操作" width="100" align="center">
              <template #default="scope">
                <el-button link type="primary" size="small" @click="openForm('edit', scope.row, 'manual');">编辑</el-button>
              </template>
            </el-table-column>
          </el-table>
          <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper"
            :page="page.current" :limit="page.size" @pagination="paginationChange" />
        </div>
      </el-tab-pane>
<!--      <el-tab-pane label="自定义入库" name="manual">-->
<!--        <div class="search_form">-->
<!--          <div>-->
<!--&lt;!&ndash;            <span class="search_title">供应商名称:</span>&ndash;&gt;-->
<!--&lt;!&ndash;            <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="请输入" @change="handleQuery"&ndash;&gt;-->
<!--&lt;!&ndash;              clearable prefix-icon="Search" />&ndash;&gt;-->
<!--            <span class="search_title ml10">入库日期:</span>-->
<!--            <el-date-picker-->
<!--              v-model="searchForm.timeStr"-->
<!--              type="date"-->
<!--              placeholder="请选择日期"-->
<!--              value-format="YYYY-MM-DD"-->
<!--              format="YYYY-MM-DD"-->
<!--              clearable-->
<!--              @change="handleQuery"-->
<!--            />-->
<!--            <el-button type="primary" @click="handleQuery" style="margin-left: 10px">搜索</el-button>-->
<!--          </div>-->
<!--          <div>-->
<!--            <el-button type="primary" @click="openForm('add', 'manual')">新增入库</el-button>-->
<!--            <el-button @click="handleOut">导出</el-button>-->
<!--            <el-button type="danger" plain @click="handleDelete">删除</el-button>-->
<!--          </div>-->
<!--        </div>-->
<!--        <div class="table_list">-->
<!--          <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"-->
<!--            :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%"-->
<!--            :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">-->
<!--            <el-table-column align="center" type="selection" width="55" />-->
<!--            <el-table-column align="center" label="序号" type="index" width="60" />-->
<!--            <el-table-column label="入库时间" prop="inboundDate" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="入库批次" prop="inboundBatches" show-overflow-tooltip />-->
<!--            &lt;!&ndash; <el-table-column label="供应商名称" prop="supplierName" width="240" show-overflow-tooltip /> &ndash;&gt;-->
<!--            <el-table-column label="产品大类" prop="productCategory" show-overflow-tooltip />-->
<!--            <el-table-column label="规格型号" prop="specificationModel" show-overflow-tooltip />-->
<!--            <el-table-column label="单位" prop="unit" width="70" show-overflow-tooltip />-->
<!--            <el-table-column label="物品类型" prop="itemType" show-overflow-tooltip />-->
<!--            <el-table-column label="入库数量" prop="inboundNum" show-overflow-tooltip />-->
<!--&lt;!&ndash;            <el-table-column label="含税单价" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />&ndash;&gt;-->
<!--&lt;!&ndash;            <el-table-column label="含税总价" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />&ndash;&gt;-->
<!--&lt;!&ndash;            <el-table-column label="税率(%)" prop="taxRate" width="80" show-overflow-tooltip />&ndash;&gt;-->
<!--&lt;!&ndash;            <el-table-column label="不含税总价" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />&ndash;&gt;-->
<!--            <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />-->
<!--            <el-table-column fixed="right" label="操作" width="100" align="center">-->
<!--              <template #default="scope">-->
<!--                <el-button link type="primary" size="small" @click="openForm('edit', scope.row, 'manual');">编辑</el-button>-->
<!--              </template>-->
<!--            </el-table-column>-->
<!--          </el-table>-->
<!--          <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper"-->
<!--            :page="page.current" :limit="page.size" @pagination="paginationChange" />-->
<!--        </div>-->
<!--      </el-tab-pane>-->
    </el-tabs>
    <form-dia ref="formDia" @close="handleQuery" @success="handleQuery"></form-dia>
src/views/inventoryManagement/stockManagement/index.vue
@@ -1,7 +1,7 @@
<template>
  <div class="app-container">
    <el-tabs v-model="activeTab" @tab-change="handleTabChange">
      <el-tab-pane label="生产入库" name="production">
      <el-tab-pane label="成品入库" name="production">
        <div class="search_form">
          <div>
<!--            <span class="search_title">客户名称:</span>-->
@@ -110,60 +110,60 @@
        </div>
      </el-tab-pane>
      <el-tab-pane label="自定义入库" name="manual">
        <div class="search_form">
          <div>
<!--            <span class="search_title">供应商名称:</span>-->
<!--            <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="请输入" @change="handleQuery"-->
<!--              clearable prefix-icon="Search" />-->
            <span class="search_title ml10">入库日期:</span>
            <el-date-picker
              v-model="searchForm.timeStr"
              type="date"
              placeholder="请选择日期"
              value-format="YYYY-MM-DD"
              format="YYYY-MM-DD"
              clearable
              @change="handleQuery"
            />
            <el-button type="primary" @click="handleQuery" style="margin-left: 10px">搜索</el-button>
          </div>
          <div>
            <el-button @click="handleOut">导出</el-button>
            <el-button type="danger" plain @click="handleDelete">删除</el-button>
          </div>
        </div>
        <div class="table_list">
          <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"
            :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%"
            :row-class-name="tableRowClassName"
            :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">
            <el-table-column align="center" type="selection" width="55" />
            <el-table-column align="center" label="序号" type="index" width="60" />
            <el-table-column label="入库日期" prop="createTime" width="100" show-overflow-tooltip />
<!--            <el-table-column label="供应商名称" prop="supplierName" width="240" show-overflow-tooltip />-->
            <el-table-column label="产品大类" prop="productCategory" show-overflow-tooltip />
            <el-table-column label="规格型号" prop="specificationModel" show-overflow-tooltip />
            <el-table-column label="单位" prop="unit" width="80" show-overflow-tooltip />
            <el-table-column label="物品类型" prop="itemType" width="120" show-overflow-tooltip />
                        <el-table-column label="库存数量" prop="inboundNum" width="100" show-overflow-tooltip />
                        <el-table-column label="已出库数量" prop="totalInboundNum" width="100" show-overflow-tooltip />
                        <el-table-column label="待出库数量" prop="inboundNum0" width="100" show-overflow-tooltip />
<!--            <el-table-column label="含税单价" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="含税总价" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="税率(%)" prop="taxRate" width="100" show-overflow-tooltip />-->
<!--            <el-table-column label="不含税总价" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />-->
            <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />
            <el-table-column fixed="right" label="操作" width="100" align="center">
              <template #default="scope">
                <el-button link type="primary" size="small" @click="openForm('edit', scope.row);">编辑</el-button>
              </template>
            </el-table-column>
          </el-table>
          <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper"
            :page="page.current" :limit="page.size" @pagination="paginationChange" />
        </div>
      </el-tab-pane>
<!--      <el-tab-pane label="自定义入库" name="manual">-->
<!--        <div class="search_form">-->
<!--          <div>-->
<!--&lt;!&ndash;            <span class="search_title">供应商名称:</span>&ndash;&gt;-->
<!--&lt;!&ndash;            <el-input v-model="searchForm.supplierName" style="width: 240px" placeholder="请输入" @change="handleQuery"&ndash;&gt;-->
<!--&lt;!&ndash;              clearable prefix-icon="Search" />&ndash;&gt;-->
<!--            <span class="search_title ml10">入库日期:</span>-->
<!--            <el-date-picker-->
<!--              v-model="searchForm.timeStr"-->
<!--              type="date"-->
<!--              placeholder="请选择日期"-->
<!--              value-format="YYYY-MM-DD"-->
<!--              format="YYYY-MM-DD"-->
<!--              clearable-->
<!--              @change="handleQuery"-->
<!--            />-->
<!--            <el-button type="primary" @click="handleQuery" style="margin-left: 10px">搜索</el-button>-->
<!--          </div>-->
<!--          <div>-->
<!--            <el-button @click="handleOut">导出</el-button>-->
<!--            <el-button type="danger" plain @click="handleDelete">删除</el-button>-->
<!--          </div>-->
<!--        </div>-->
<!--        <div class="table_list">-->
<!--          <el-table :data="tableData" border v-loading="tableLoading" @selection-change="handleSelectionChange"-->
<!--            :expand-row-keys="expandedRowKeys" :row-key="row => row.id" show-summary style="width: 100%"-->
<!--            :row-class-name="tableRowClassName"-->
<!--            :summary-method="summarizeMainTable" height="calc(100vh - 18.5em)">-->
<!--            <el-table-column align="center" type="selection" width="55" />-->
<!--            <el-table-column align="center" label="序号" type="index" width="60" />-->
<!--            <el-table-column label="入库日期" prop="createTime" width="100" show-overflow-tooltip />-->
<!--&lt;!&ndash;            <el-table-column label="供应商名称" prop="supplierName" width="240" show-overflow-tooltip />&ndash;&gt;-->
<!--            <el-table-column label="产品大类" prop="productCategory" show-overflow-tooltip />-->
<!--            <el-table-column label="规格型号" prop="specificationModel" show-overflow-tooltip />-->
<!--            <el-table-column label="单位" prop="unit" width="80" show-overflow-tooltip />-->
<!--            <el-table-column label="物品类型" prop="itemType" width="120" show-overflow-tooltip />-->
<!--                        <el-table-column label="库存数量" prop="inboundNum" width="100" show-overflow-tooltip />-->
<!--                        <el-table-column label="已出库数量" prop="totalInboundNum" width="100" show-overflow-tooltip />-->
<!--                        <el-table-column label="待出库数量" prop="inboundNum0" width="100" show-overflow-tooltip />-->
<!--&lt;!&ndash;            <el-table-column label="含税单价" prop="taxInclusiveUnitPrice" width="100" show-overflow-tooltip />&ndash;&gt;-->
<!--&lt;!&ndash;            <el-table-column label="含税总价" prop="taxInclusiveTotalPrice" width="100" show-overflow-tooltip />&ndash;&gt;-->
<!--&lt;!&ndash;            <el-table-column label="税率(%)" prop="taxRate" width="100" show-overflow-tooltip />&ndash;&gt;-->
<!--&lt;!&ndash;            <el-table-column label="不含税总价" prop="taxExclusiveTotalPrice" width="100" show-overflow-tooltip />&ndash;&gt;-->
<!--            <el-table-column label="入库人" prop="createBy" width="80" show-overflow-tooltip />-->
<!--            <el-table-column fixed="right" label="操作" width="100" align="center">-->
<!--              <template #default="scope">-->
<!--                <el-button link type="primary" size="small" @click="openForm('edit', scope.row);">编辑</el-button>-->
<!--              </template>-->
<!--            </el-table-column>-->
<!--          </el-table>-->
<!--          <pagination v-show="total > 0" :total="total" layout="total, sizes, prev, pager, next, jumper"-->
<!--            :page="page.current" :limit="page.size" @pagination="paginationChange" />-->
<!--        </div>-->
<!--      </el-tab-pane>-->
    </el-tabs>
    <el-dialog v-model="dialogFormVisible" :title="operationType === 'add' ? '新增库存' : '编辑库存'" width="70%"
      @close="closeDia">
src/views/productionManagement/LineManagement/index.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,412 @@
<template>
    <div class="app-container line-management">
        <div class="config-wrap">
            <div class="left">
                <div class="header">
                    <div>产线管理</div>
                    <div>
                        <el-button size="small" type="primary" @click="addLine">新增产线</el-button>
                    </div>
                </div>
                <el-tree
                        :data="lineTree"
                        node-key="id"
                        :props="{ label: 'name' }"
                        @node-click="onNodeClick"
                        highlight-current
                        class="tree"
                    >
                        <template #default="{ data }">
                <span>
                  <el-tag size="small" type="warning" effect="plain" style="margin-right:4px;">
                    äº§çº¿
                  </el-tag>
                  {{ data.name }}
                </span>
                            <span class="ops">
                  <el-button link size="small" type="primary" @click.stop="openRenameDialog(data)">重命名</el-button>
                  <el-button link size="small" type="danger" @click.stop="confirmRemoveNode(data)">删除</el-button>
                </span>
                        </template>
                    </el-tree>
            </div>
            <div class="right">
                    <div v-if="currentLine" class="process-config">
                        <div class="title">
                            <span>工序管理:{{ currentLine.label }}</span>
                        </div>
                        <div class="q-toolbar">
                            <el-button size="small" type="primary" @click="openAddProcessDialog">新增工序</el-button>
                        </div>
                        <el-table :data="processList" border size="small" v-loading="processLoading">
                        <el-table-column label="工序名称" prop="name" />
                        <el-table-column label="操作" width="160" align="center">
                            <template #default="scope">
                                <el-button link type="primary" size="small" @click="openEditProcessDialog(scope.row)">编辑</el-button>
                                <el-button link type="danger" size="small" @click="onDeleteProcess(scope.row)">删除</el-button>
                            </template>
                        </el-table-column>
                    </el-table>
                    <div class="pagination-container">
                        <el-pagination
                            v-model:current-page="processQueryParams.current"
                            v-model:page-size="processQueryParams.size"
                            :page-sizes="[10, 20, 50, 100]"
                            :layout="'total, sizes, prev, pager, next, jumper'"
                            :total="total"
                            @size-change="handleProcessSizeChange"
                            @current-change="handleProcessCurrentChange"
                        />
                    </div>
                    </div>
                    <div v-else class="empty">请选择左侧产线进行工序配置</div>
                </div>
        </div>
        <!-- æ–°å¢žäº§çº¿å¼¹çª— -->
        <el-dialog v-model="addDialogVisible" :title="addDialogTitle" width="420px">
            <el-form :model="addForm" :rules="addRules" ref="addFormRef" label-width="80px">
                <el-form-item label="产线名称" prop="name">
                    <el-input v-model="addForm.name" placeholder="请输入产线名称" />
                </el-form-item>
            </el-form>
            <template #footer>
                <el-button @click="onCancelAdd">取 æ¶ˆ</el-button>
                <el-button type="primary" @click="onConfirmAdd" :loading="addLoading">ç¡® è®¤</el-button>
            </template>
        </el-dialog>
        <!-- é‡å‘½åå¼¹çª— -->
        <el-dialog v-model="renameDialogVisible" :title="renameDialogTitle" width="420px">
            <el-form :model="renameForm" :rules="addRules" ref="renameFormRef" label-width="80px">
                <el-form-item label="产线名称" prop="name">
                    <el-input v-model="renameForm.name" placeholder="请输入产线名称" />
                </el-form-item>
            </el-form>
            <template #footer>
                <el-button @click="onCancelRename">取 æ¶ˆ</el-button>
                <el-button type="primary" @click="onConfirmRename" :loading="renameLoading">ç¡® è®¤</el-button>
            </template>
        </el-dialog>
        <!-- æ–°å¢ž/编辑工序弹窗 -->
        <el-dialog v-model="addProcessDialogVisible" :title="addProcessDialogTitle" width="420px">
            <el-form :model="addProcessForm" label-width="80px">
                <el-form-item label="工序名称" prop="name">
                    <el-input v-model="addProcessForm.name" placeholder="请输入工序名称" />
                </el-form-item>
            </el-form>
            <template #footer>
                <el-button @click="onCancelAddProcess">取 æ¶ˆ</el-button>
                <el-button type="primary" :loading="addProcessSaving" @click="onConfirmAddProcess">保 å­˜</el-button>
            </template>
        </el-dialog>
    </div>
</template>
<script setup>
import { ref, reactive, computed, watch, onMounted } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { getDeptPositionTree, addDeptPosition, updateDeptPosition, deleteDeptPosition, laborConfListPage } from '@/api/lavorissce/issue'
// ç»“构:产线列表
const lines = reactive([]) // [{id,name,processes:[{id,processName,processCode,standardTime,status}]}]
// åŠ è½½äº§çº¿åˆ—è¡¨
async function loadLineTree() {
    try {
        const res = await getDeptPositionTree()
        const data = res.data
        lines.splice(0, lines.length, ...data)
    } catch (e) {
        // é™é»˜å¤±è´¥ï¼Œä¿ç•™æœ¬åœ°ç¤ºä¾‹æ•°æ®
    }
}
const lineTree = computed(() => lines)
const currentLine = ref(null)
// å³ä¾§ï¼šå½“前产线的工序列表
const processList = ref([])
const processLoading = ref(false)
// å·¥åºåˆ†é¡µå‚æ•°
const processQueryParams = reactive({
    current: 1,
    size: 10
})
const total = ref(0)
// åŠ è½½å·¥åºåˆ—è¡¨
async function loadProcessList(lineId) {
    if (!lineId) {
        if (!currentLine.value) return
        lineId = currentLine.value.id
    }
    try {
        processLoading.value = true
        const res = await laborConfListPage({
            id: lineId,
            current: processQueryParams.current,
            size: processQueryParams.size
        })
        // æ–°æŽ¥å£è¿”回的是树形结构,直接使用返回的数据
        processList.value = res.data.records.map(it => ({
            ...it,
            id: it.id,
            name: it.name
        }))
        total.value = res.data.total
    } finally {
        processLoading.value = false
    }
}
// å·¥åºåˆ†é¡µäº‹ä»¶å¤„理
function handleProcessSizeChange(val) {
    processQueryParams.size = val
    processQueryParams.current = 1
    loadProcessList()
}
function handleProcessCurrentChange(val) {
    processQueryParams.current = val
    loadProcessList()
}
// æ–°å¢žå·¥åºå¼¹çª—状态与逻辑(供模板使用)
const addProcessDialogVisible = ref(false)
const addProcessDialogTitle = ref('新增工序')
const addProcessSaving = ref(false)
const addProcessForm = reactive({ id: undefined, name: '' })
function openAddProcessDialog() {
    if (!currentLine.value) return
    addProcessDialogTitle.value = '新增工序'
    addProcessForm.id = undefined
    addProcessForm.name = ''
    addProcessDialogVisible.value = true
}
function openEditProcessDialog(row) {
    if (!currentLine.value || !row) return
    addProcessDialogTitle.value = '编辑工序'
    addProcessForm.id = row.id
    addProcessForm.name = row.name
    addProcessDialogVisible.value = true
}
function onCancelAddProcess() {
    addProcessDialogVisible.value = false
}
async function onConfirmAddProcess() {
    if (!currentLine.value.id) {
        ElMessage.error('请先选择产线')
        return
    }
    addProcessSaving.value = true
    try {
        if (addProcessForm.id) {
            // ç¼–辑工序
            await updateDeptPosition({
                id: addProcessForm.id,
                name: addProcessForm.name,
                type: 2 // å·¥åºç±»åž‹
            })
        } else {
            // æ–°å¢žå·¥åº
            await addDeptPosition({
                parentId: currentLine.value.id,
                name: addProcessForm.name,
                type: 2 // å·¥åºç±»åž‹
            })
        }
        // é‡æ–°åŠ è½½å·¥åºåˆ—è¡¨
        await loadProcessList()
        addProcessDialogVisible.value = false
        ElMessage.success('保存成功')
    } catch (e) {
        ElMessage.error((e && (e.msg || e.message)) || '保存失败')
    } finally {
        addProcessSaving.value = false
    }
}
async function onDeleteProcess(row) {
    if (!currentLine.value || !row) return
    try {
        await ElMessageBox.confirm('确定删除该工序吗?', '提示', { type: 'warning' })
    } catch {
        return
    }
    try {
        await deleteDeptPosition([row.id])
        // é‡æ–°åŠ è½½å·¥åºåˆ—è¡¨
        await loadProcessList()
        ElMessage.success('删除成功')
    } catch (e) {
        ElMessage.error((e && (e.msg || e.message)) || '删除失败')
    }
}
// æ–°å¢žäº§çº¿å¼¹çª—状态
const addDialogVisible = ref(false)
const addDialogTitle = ref('新增产线')
const addLoading = ref(false)
const addFormRef = ref()
const addForm = reactive({ name: '', type: 1, parentId: undefined })
const addRules = { name: [{ required: true, message: '请输入产线名称', trigger: 'blur' }] }
// é‡å‘½åäº§çº¿å¼¹çª—状态
const renameDialogVisible = ref(false)
const renameLoading = ref(false)
const renameFormRef = ref()
const renameForm = reactive({ id: undefined, type: 1, name: '' })
const renameDialogTitle = ref('重命名产线')
function newLine() {
    return {
        id: Date.now(),
        label: '新产线',
        hrPositionId: undefined,
        processes: []
    }
}
async function addLine() {
    openAddDialog()
}
function openAddDialog() {
    addForm.name = ''
    addForm.type = 1
    addForm.parentId = undefined
    addDialogTitle.value = '新增产线'
    addDialogVisible.value = true
}
function onCancelAdd() {
    addDialogVisible.value = false
}
async function onConfirmAdd() {
    addFormRef.value?.validate(async (valid) => {
        if (!valid) return
        try {
            addLoading.value = true
            const payload = { name: addForm.name, type: addForm.type, parentId: 0 }
            await addDeptPosition(payload)
            addDialogVisible.value = false
            await loadLineTree()
        } finally {
            addLoading.value = false
        }
    })
}
function onNodeClick(node) {
    console.log(node);
    currentLine.value = node
        // é€‰æ‹©äº§çº¿æ—¶ï¼ŒåŠ è½½å·¥åºåˆ—è¡¨
        loadProcessList()
}
function openRenameDialog(node) {
    renameForm.id = node.id
    renameForm.type = 1
    renameForm.name = node.name
    renameDialogTitle.value = '重命名产线'
    renameDialogVisible.value = true
}
function onCancelRename() {
    renameDialogVisible.value = false
}
async function onConfirmRename() {
    renameFormRef.value?.validate(async (valid) => {
        if (!valid) return
        try {
            renameLoading.value = true
            await updateDeptPosition({ id: renameForm.id, name: renameForm.name, type: renameForm.type })
            renameDialogVisible.value = false
            await loadLineTree()
        } finally {
            renameLoading.value = false
        }
    })
}
async function confirmRemoveNode(node) {
    const id = node.id
    // ç®€å•确认
    try {
        await deleteDeptPosition([id])
        await loadLineTree()
    } catch (e) {
        // ignore errors
    }
}
onMounted(() => {
    loadLineTree()
})
</script>
<style scoped>
.labor-issue {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.config-wrap {
    display: flex;
    gap: 16px;
    align-items: stretch;
}
.left, .right {
    background: #fff;
    border: 1px solid var(--el-border-color, #ebeef5);
    border-radius: 8px;
    box-shadow: var(--el-box-shadow-light, 0 2px 12px 0 rgba(0,0,0,.1));
}
.left { width: 340px; padding: 12px; }
.right { flex: 1; padding: 14px; }
.header {
    display: flex;
    align-items: flex-start;
    margin-bottom: 10px;
    flex-direction: column;
}
.header :deep(.el-button+.el-button) { margin-left: 8px; }
.tree {
    max-height: calc(100vh - 300px);
    overflow: auto;
    padding: 6px;
    border-radius: 6px;
    background: #fafafa;
}
.ops { margin-left: 8px; opacity: 0.6; transition: opacity .2s; }
:deep(.el-tree-node__content):hover .ops { opacity: 1; }
.q-toolbar { margin-bottom: 10px; }
.empty { color: #999; padding: 48px; text-align: center; }
.summary-wrap { display: flex; flex-direction: column; gap: 16px; }
.people, .summary {
    background: #fff;
    border: 1px solid var(--el-border-color, #ebeef5);
    border-radius: 8px;
    padding: 12px;
    box-shadow: var(--el-box-shadow-light, 0 2px 12px 0 rgba(0,0,0,.06));
}
.summary .header {
    font-weight: 600;
    margin-bottom: 12px;
}
</style>
src/views/productionManagement/operationScheduling/components/formDia.vue
@@ -21,7 +21,20 @@
        </el-table-column>
        <el-table-column label="工序" prop="process" width="150">
          <template #default="scope">
                        <el-input v-model="scope.row.process" placeholder="请输入工序" />
                            <el-select
                                v-model="scope.row.process"
                                placeholder="选择工序"
                                style="width: 100%;"
                filterable
                clearable
                            >
                                <el-option
                                    v-for="process in processList"
                                    :key="process.id"
                                    :label="process.name"
                                    :value="process.name"
                                />
                            </el-select>
          </template>
        </el-table-column>
        <el-table-column label="单位" prop="unit" width="90">
@@ -47,7 +60,7 @@
                        />
          </template>
        </el-table-column>
        <el-table-column label="工时定额" width="200" prop="workHours">
        <el-table-column label="工资" width="200" prop="workHours">
          <template #default="scope">
                        <el-input-number
                            v-model="scope.row.workHours"
@@ -109,6 +122,7 @@
import {ref, getCurrentInstance} from "vue";
import {userListNoPageByTenantId} from "@/api/system/user.js";
import {processScheduling} from "@/api/productionManagement/operationScheduling.js";
import {laborConfListPage} from "@/api/lavorissce/issue.js";
const { proxy } = getCurrentInstance()
const { work_step } = proxy.useDict("work_step")
const emit = defineEmits(['close'])
@@ -121,7 +135,10 @@
const specificationModelFromRow = ref('');
const pendingNum = ref(0);
const userList = ref([])
const processList = ref([])
const receive = ref('')
const productionLineIdFromRow = ref('');
const productionUserIdFromRow = ref('');
// æ‰“开弹框
const openDialog = (type, row) => {
@@ -130,10 +147,18 @@
    userListNoPageByTenantId().then((res) => {
        userList.value = res.data;
    });
    // æ ¹æ®é€‰ä¸­æ•°æ®çš„productionLineId查询工序列表
    if (row?.productionLineId) {
        laborConfListPage({ id: row.productionLineId, current: -1, size: -1 }).then((res) => {
            processList.value = res.data.records || [];
        });
    }
    pendingNum.value = row?.pendingNum ?? 0;
    unitFromRow.value = row?.unit ?? '';
    idFromRow.value = row?.id ?? '';
    specificationModelFromRow.value = row?.specificationModel ?? '';
    productionLineIdFromRow.value = row?.productionLineId ?? '';
    productionUserIdFromRow.value = row?.productionUserId ?? '';
    tableData.value = [createRow()];
}
@@ -173,12 +198,14 @@
        proxy.$modal.msgError('排产数量合计不能超过待排产数量');
        return;
    }
    // 3. å°† receive å­—段添加到每条数据中,并移除 loss å­—段
    // 3. å°† receive、productionLineId、productionUserId å­—段添加到每条数据中,并移除 loss å­—段
    const submitData = tableData.value.map(row => {
        const { loss, ...rest } = row;
        return {
            ...rest,
            receive: receive.value
            receive: receive.value,
            productionLineId: productionLineIdFromRow.value,
            productionUserId: productionUserIdFromRow.value
        };
    });
    processScheduling(submitData).then((res) => {
src/views/productionManagement/operationScheduling/index.vue
@@ -92,6 +92,16 @@
        },
    },
    {
        label: "产线",
        prop: "productionLineName",
        width: 120,
    },
    {
        label: "生产人",
        prop: "productionUserName",
        width: 120,
    },
    {
        label: "派工日期",
        prop: "schedulingDate",
        width: 120,
@@ -130,11 +140,11 @@
        prop: "specificationModel",
        width: 150,
    },
    {
        label: "绑定机器",
        prop: "speculativeTradingName",
        width: 220,
    },
    // {
    //     label: "绑定机器",
    //     prop: "speculativeTradingName",
    //     width: 220,
    // },
    {
        label: "单位",
        prop: "unit",
src/views/productionManagement/productionCosting/index.vue
@@ -100,15 +100,15 @@
        width: 100,
    },
    {
        label: "工时定额",
        label: "工资",
        prop: "workHours",
        width: 100,
    },
    {
        label: "工资",
        prop: "wages",
        width: 100,
    },
    // {
    //     label: "工资",
    //     prop: "wages",
    //     width: 100,
    // },
]);
const tableData = ref([]);
const tableLoading = ref(false);
src/views/productionManagement/productionDispatching/components/autoDispatchDia.vue
@@ -21,7 +21,7 @@
          <el-table-column label="项目名称" prop="projectName" width="250" />
          <el-table-column label="产品大类" prop="productCategory" width="150" />
          <el-table-column label="规格型号" prop="specificationModel" width="200" />
          <el-table-column label="绑定机器" prop="speculativeTradingName" width="120" />
<!--          <el-table-column label="绑定机器" prop="speculativeTradingName" width="120" />-->
          <el-table-column label="总数量" prop="quantity" width="100" align="right" />
          <el-table-column label="已排产" prop="schedulingNum" width="100" align="right" fixed="right" />
          <el-table-column label="待排产" prop="pendingQuantity" width="100" align="right" fixed="right" />
src/views/productionManagement/productionDispatching/components/formDia.vue
@@ -25,25 +25,23 @@
              <el-input v-model="form.specificationModel" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="绑定机器:" prop="speculativeTradingName">
              <el-input v-model="form.speculativeTradingName" placeholder="自动获取" clearable disabled/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
<!--          <el-col :span="12">-->
<!--            <el-form-item label="绑定机器:" prop="speculativeTradingName">-->
<!--              <el-input v-model="form.speculativeTradingName" placeholder="自动获取" clearable disabled/>-->
<!--            </el-form-item>-->
<!--          </el-col>-->
          <el-col :span="12">
            <el-form-item label="总数量:" prop="quantity">
              <el-input v-model="form.quantity" placeholder="请输入" clearable disabled/>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
                        <el-form-item label="待排产数量:" prop="pendingQuantity">
                            <el-input v-model="form.pendingQuantity" placeholder="请输入" clearable disabled/>
                        </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
                        <el-form-item label="本次排产数量:" prop="schedulingNum">
                            <el-input-number
@@ -56,6 +54,46 @@
                                @change="changeNum"
                                style="width: 100%"
                            />
                        </el-form-item>
                    </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="产线:" prop="lineId">
              <el-select
                v-model="form.lineId"
                placeholder="选择产线"
                style="width: 100%;"
                filterable
                clearable
              >
                <el-option
                  v-for="line in lineList"
                  :key="line.id"
                  :label="line.name"
                  :value="line.id"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="生产人:" prop="productionUserId">
              <el-select
                v-model="form.productionUserId"
                placeholder="选择生产人"
                style="width: 100%;"
                filterable
                default-first-option
                :reserve-keyword="false"
                clearable
              >
                <el-option
                  v-for="user in userList"
                  :key="user.userId"
                  :label="user.nickName"
                  :value="user.userId"
                />
              </el-select>
                        </el-form-item>
          </el-col>
        </el-row>
@@ -109,6 +147,7 @@
import {getStaffJoinInfo, staffJoinAdd, staffJoinUpdate} from "@/api/personnelManagement/onboarding.js";
import {userListNoPageByTenantId} from "@/api/system/user.js";
import {productionDispatch} from "@/api/productionManagement/productionOrder.js";
import {getDeptPositionTree} from "@/api/lavorissce/issue.js";
import useUserStore from "@/store/modules/user.js";
import dayjs from "dayjs";
const { proxy } = getCurrentInstance()
@@ -127,15 +166,20 @@
        schedulingDate: "",
        pendingQuantity: "",
        speculativeTradingName: "", // ç»‘定机器名称
        lineId: "", // äº§çº¿ID
        productionUserId: "", // ç”Ÿäº§äººID
  },
  rules: {
        schedulingNum: [{ required: true, message: "请输入", trigger: "blur" },],
        schedulingUserId: [{ required: true, message: "请选择", trigger: "change" },],
        schedulingDate: [{ required: true, message: "请选择", trigger: "change" },],
        lineId: [{ required: true, message: "请选择产线", trigger: "change" },],
        productionUserId: [{ required: true, message: "请选择生产人", trigger: "change" },],
  },
});
const { form, rules } = toRefs(data);
const userList = ref([])
const lineList = ref([])
const userStore = useUserStore()
@@ -146,6 +190,9 @@
    userListNoPageByTenantId().then((res) => {
        userList.value = res.data;
    });
    getDeptPositionTree().then((res) => {
        lineList.value = res.data;
    });
    form.value = {...row}
    form.value.schedulingNum = 0
    form.value.schedulingUserId = userStore.id
src/views/productionManagement/productionDispatching/index.vue
@@ -1,32 +1,32 @@
<template>
    <div class="app-container">
        <!-- ç‚’机1-4 å±•示(总量 / æ­£åœ¨ç”Ÿäº§é‡ / ç©ºä½™é‡ï¼‰ -->
        <div class="machines-grid">
            <div v-for="machine in machines" :key="machine.id" class="machine-card">
                <div class="machine-title">{{ machine.name }}</div>
                <div class="machine-metrics">
                <div class="machine-control">
                    <span>总量(kg):</span>
                    <el-input-number v-model="machineData[machine.name].workLoad" :min="0" :step="1" size="small" />
                </div>
                <div><span> é¢„计投入量(kg):</span><span>{{ machineData[machine.name].currentWorkLoad }}</span></div>
                <div><span>空余工作量(kg):</span><span>{{ machineData[machine.name].vacant }}</span></div>
            </div>
            </div>
            <div class="save-button-container">
                <div class="loss-rate-container">
                    <span class="loss-rate-label">损耗率(%):</span>
                    <el-select v-model="rate" placeholder="请选择损耗率" style="width: 120px" size="small">
                        <el-option label="6" :value="6" />
                        <el-option label="7" :value="7" />
                        <el-option label="8" :value="8" />
                        <el-option label="9" :value="9" />
                        <el-option label="10" :value="10" />
                    </el-select>
                </div>
                <el-button type="primary" @click="saveMachineTotals" size="small">保存设置</el-button>
            </div>
        </div>
<!--        <div class="machines-grid">-->
<!--            <div v-for="machine in machines" :key="machine.id" class="machine-card">-->
<!--                <div class="machine-title">{{ machine.name }}</div>-->
<!--                <div class="machine-metrics">-->
<!--                <div class="machine-control">-->
<!--                    <span>总量(kg):</span>-->
<!--                    <el-input-number v-model="machineData[machine.name].workLoad" :min="0" :step="1" size="small" />-->
<!--                </div>-->
<!--                <div><span> é¢„计投入量(kg):</span><span>{{ machineData[machine.name].currentWorkLoad }}</span></div>-->
<!--                <div><span>空余工作量(kg):</span><span>{{ machineData[machine.name].vacant }}</span></div>-->
<!--            </div>-->
<!--            </div>-->
<!--            <div class="save-button-container">-->
<!--                <div class="loss-rate-container">-->
<!--                    <span class="loss-rate-label">损耗率(%):</span>-->
<!--                    <el-select v-model="rate" placeholder="请选择损耗率" style="width: 120px" size="small">-->
<!--                        <el-option label="6" :value="6" />-->
<!--                        <el-option label="7" :value="7" />-->
<!--                        <el-option label="8" :value="8" />-->
<!--                        <el-option label="9" :value="9" />-->
<!--                        <el-option label="10" :value="10" />-->
<!--                    </el-select>-->
<!--                </div>-->
<!--                <el-button type="primary" @click="saveMachineTotals" size="small">保存设置</el-button>-->
<!--            </div>-->
<!--        </div>-->
        <div class="search_form">
            <div>
                <span class="search_title">客户名称:</span>
@@ -126,11 +126,11 @@
        prop: "specificationModel",
        width: 120,
    },
    {
        label: "绑定机器",
        prop: "speculativeTradingName",
        width: 220,
    },
    // {
    //     label: "绑定机器",
    //     prop: "speculativeTradingName",
    //     width: 220,
    // },
    {
        label: "单位",
        prop: "unit",
src/views/productionManagement/productionReporting/components/formDia.vue
@@ -113,6 +113,10 @@
        userList.value = res.data;
    });
    form.value = {...row}
    // ä¼˜å…ˆä½¿ç”¨é€‰ä¸­æ•°æ®çš„productionUserId作为生产人
    if (row?.productionUserId) {
        form.value.schedulingUserId = row.productionUserId;
    }
}
const changeNum = (value) => {
src/views/productionManagement/productionReporting/index.vue
@@ -228,11 +228,11 @@
        prop: "specificationModel",
        width: 150,
    },
    {
        label: "绑定机器",
        prop: "speculativeTradingName",
        width: 220,
    },
    // {
    //     label: "绑定机器",
    //     prop: "speculativeTradingName",
    //     width: 220,
    // },
    {
        label: "单位",
        prop: "unit",
@@ -246,11 +246,11 @@
    //     prop: "type",
    //     width: 150,
    // },
    {
        label: "损耗",
        prop: "loss",
        width: 150,
    },
    // {
    //     label: "损耗",
    //     prop: "loss",
    //     width: 150,
    // },
    {
        label: "排产数量",
        prop: "schedulingNum",
src/views/salesManagement/salesLedger/index.vue
@@ -169,7 +169,7 @@
          <el-table-column align="center" label="序号" type="index" width="60" />
          <el-table-column label="产品大类" prop="productCategory" />
          <el-table-column label="规格型号" prop="specificationModel" />
          <el-table-column label="绑定机器" prop="speculativeTradingName" />
<!--          <el-table-column label="绑定机器" prop="speculativeTradingName" />-->
          <el-table-column label="单位" prop="unit" />
          <el-table-column label="数量" prop="quantity" />
          <el-table-column label="税率(%)" prop="taxRate" />
@@ -237,13 +237,13 @@
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="24">
            <el-form-item label="绑定机器:">
              <el-input v-model="productForm.speculativeTradingName" placeholder="请先选择规格型号" clearable disabled />
            </el-form-item>
          </el-col>
        </el-row>
<!--        <el-row :gutter="30">-->
<!--          <el-col :span="24">-->
<!--            <el-form-item label="绑定机器:">-->
<!--              <el-input v-model="productForm.speculativeTradingName" placeholder="请先选择规格型号" clearable disabled />-->
<!--            </el-form-item>-->
<!--          </el-col>-->
<!--        </el-row>-->
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="单位:" prop="unit">