小小儁爺
2025-10-30 b01acc5451b09593762522e9baff2615120696ec
1.新增 订单开启、工单开启功能  2.新增顶级物料字段
已修改11个文件
851 ■■■■■ 文件已修改
src/api/WorkOrder.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/styles/global.css 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/basicSettings/powerDivider.vue 76 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/kanbanManager/cj.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/kanbanManager/ckgl.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/kanbanManager/zhkb.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/workOrder/produceOrderList.vue 319 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/workOrder/workOrderClose.vue 326 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/workOrder/workOrderList.vue 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/workOrder/workOrderSend.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/WorkOrder.js
@@ -43,6 +43,15 @@
  })
}
// ERP订单反关闭
export function ReverseClosedErpOrder(data) {
  return request({
    url: 'WorkOrder/ReverseClosedErpOrder',
    method: 'post',
    params: data
  })
}
// ERP订单删除
export function DeleteErpOrder(data) {
  return request({
@@ -61,6 +70,16 @@
  })
}
// MES工单启动提交
export function MesOrderBitchReverseClosedSeave(data) {
  return request({
    url: 'WorkOrder/MesOrderBitchReverseClosedSeave',
    method: 'post',
    data
  })
}
// MES报废补单工单查询
export function MesBadOrderSearch(data) {
  return request({
src/styles/global.css
@@ -179,22 +179,22 @@
定义滚动条高宽及背景
高宽分别对应横竖滚动条的尺寸
*/
::-webkit-scrollbar {
  width: 7px;
  height: 7px;
  /*background-color: white;*/
  background-color: #f8f8fa;
}
/*::-webkit-scrollbar {*/
/*  width: 7px;*/
/*  height: 7px;*/
/*  !*background-color: white;*!*/
/*  background-color: #f8f8fa;*/
/*}*/
::-webkit-scrollbar-thumb {
  /*box-shadow: inset 0 0 0px white;*/
  box-shadow: inset 0 0 0px #f8f8fa;
  /*-webkit-box-shadow: inset 0 0 0px white;*/
  -webkit-box-shadow: inset 0 0 0px #f8f8fa;
  background-color: rgb(193, 193, 193);
  /*滚动条的背景颜色*/
  border-radius: 20px;
}
/*::-webkit-scrollbar-thumb {*/
/*  !*box-shadow: inset 0 0 0px white;*!*/
/*  box-shadow: inset 0 0 0px #f8f8fa;*/
/*  !*-webkit-box-shadow: inset 0 0 0px white;*!*/
/*  -webkit-box-shadow: inset 0 0 0px #f8f8fa;*/
/*  background-color: rgb(193, 193, 193);*/
/*  !*滚动条的背景颜色*!*/
/*  border-radius: 20px;*/
/*}*/
/*解决表格固定列时的压样式问题*/
.el-table__fixed {
src/views/basicSettings/powerDivider.vue
@@ -64,7 +64,7 @@
                  @mouseover="isScroll='left'"
                >
                  <div style=" ">
                    <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 菜单权限
                    <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}"/> 菜单权限
                  </div>
                  <el-tree
@@ -131,36 +131,36 @@
                <!--                </div>-->
              </div>
            </el-tab-pane>
<!--            <el-tab-pane label="APP端" name="APP">-->
<!--              <div style="display: flex;">-->
<!--                <div-->
<!--                  ref="scrollLeft"-->
<!--                  style="border-right: 1px solid rgba(0,0,0,0.2);width:100%;-->
<!--                                overflow-y: auto;overflow-x:hidden;"-->
<!--                  :style="{height:(tableHeight-40)+'px'}"-->
<!--                  @scroll="scrollLeftScroll()"-->
<!--                  @mouseover="isScroll='left'"-->
<!--                >-->
<!--                  <div style=" ">-->
<!--                    <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 菜单权限-->
<!--                  </div>-->
            <!--            <el-tab-pane label="APP端" name="APP">-->
            <!--              <div style="display: flex;">-->
            <!--                <div-->
            <!--                  ref="scrollLeft"-->
            <!--                  style="border-right: 1px solid rgba(0,0,0,0.2);width:100%;-->
            <!--                                overflow-y: auto;overflow-x:hidden;"-->
            <!--                  :style="{height:(tableHeight-40)+'px'}"-->
            <!--                  @scroll="scrollLeftScroll()"-->
            <!--                  @mouseover="isScroll='left'"-->
            <!--                >-->
            <!--                  <div style=" ">-->
            <!--                    <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 菜单权限-->
            <!--                  </div>-->
<!--                  <el-tree-->
<!--                    ref="treeCenterAPPRef"-->
<!--                    style="padding-top: 10px;"-->
<!--                    :data="treeCenter"-->
<!--                    highlight-current-->
<!--                    :props="defaultPropsCenter"-->
<!--                    show-checkbox-->
<!--                    node-key="menucode"-->
<!--                    :default-expand-all="true"-->
<!--                    @check-change="handleTreeCenterCheckChange"-->
<!--                    @check="handleTreeCenterCheck"-->
<!--                    @node-click="getLeftTreeNode"-->
<!--                  />-->
<!--                </div>-->
<!--              </div>-->
<!--            </el-tab-pane>-->
            <!--                  <el-tree-->
            <!--                    ref="treeCenterAPPRef"-->
            <!--                    style="padding-top: 10px;"-->
            <!--                    :data="treeCenter"-->
            <!--                    highlight-current-->
            <!--                    :props="defaultPropsCenter"-->
            <!--                    show-checkbox-->
            <!--                    node-key="menucode"-->
            <!--                    :default-expand-all="true"-->
            <!--                    @check-change="handleTreeCenterCheckChange"-->
            <!--                    @check="handleTreeCenterCheck"-->
            <!--                    @node-click="getLeftTreeNode"-->
            <!--                  />-->
            <!--                </div>-->
            <!--              </div>-->
            <!--            </el-tab-pane>-->
            <!--            <el-tab-pane label="工控端" name="工控端">工控端</el-tab-pane>-->
          </el-tabs>
@@ -185,7 +185,7 @@
export default {
  name: 'PowerDivider',
  directives: { waves },
  directives: {waves},
  data() {
    return {
      mainHeight: 0,
@@ -234,7 +234,7 @@
    // 获取角色权限查询角色
    async getRolePermissionSearchRole() {
      const { data: res } = await RolePermissionSearchRole()
      const {data: res} = await RolePermissionSearchRole()
      this.treeLeft = res
      let rolecode = ''
@@ -262,12 +262,12 @@
    // 获取菜单权限对应的按钮
    async getRolePermissionSearchRoleMenuButton(rolecode) {
      const { data: res } = await RolePermissionSearchRoleMenuButton({ rolecode, type: this.activeName })
      const {data: res} = await RolePermissionSearchRoleMenuButton({rolecode, type: this.activeName})
      this.allButtonData = res.length > 0 ? JSON.parse(res[0].jsondate) : []
    },
    // 获取菜单权限
    async getRolePermissionSearchRoleMenu(rolecode) {
      const { data: res } = await RolePermissionSearchRoleMenu({ rolecode, type: this.activeName })
      const {data: res} = await RolePermissionSearchRoleMenu({rolecode, type: this.activeName})
      // 拿到数组list转换成树形tree
      const result = arrayToTree(res, {
@@ -277,7 +277,7 @@
      })
      this.treeCenter = [
        { menucode: '-1', menuname: '全部', children: result }
        {menucode: '-1', menuname: '全部', children: result}
      ]
      this.treeCenter[0].children.sort((a, b) => a.menu_seq - b.menu_seq)
@@ -429,7 +429,7 @@
      this.$forceUpdate()
    },
    // 处理中间树形勾选
    handleTreeCenterCheck(obj, { checkedNodes, checkedKeys, halfCheckedNodes, halfCheckedKeys }) {
    handleTreeCenterCheck(obj, {checkedNodes, checkedKeys, halfCheckedNodes, halfCheckedKeys}) {
      // console.log(obj, checkedNodes, checkedKeys, halfCheckedNodes, halfCheckedKeys, '加多宝')
      if (checkedKeys.length === 0) { // 树形菜单全不选的情况下
@@ -513,6 +513,10 @@
        this.$notify.success(rolename + '的角色权限提交成功!')
        await this.getRolePermissionSearchRoleMenuButton(rolecode)
        this.$store.state.app.buttonIsDisabled = false
        setTimeout(() => {
          location.reload()
        }, 2000)
      }
    },
    // 获取页面高度
src/views/kanbanManager/cj.vue
@@ -6,7 +6,7 @@
      <div class="kb_header">
        <div class="kb_headTime" style="top: 35px;left:  20px">
          <span>浙江寅寅科技有限公司</span>
          <span>浙江阿鲁克健身器材有限公司</span>
        </div>
        <div class="kb_headTime kb_header_text" style="top: 35px;left:  828px">
src/views/kanbanManager/ckgl.vue
@@ -5,7 +5,7 @@
      <div class="kb_backgroundCustom" />
      <div class="kb_header">
        <div class="kb_headTime" style="top: 35px;left:  20px">
          <span>浙江寅寅科技有限公司</span>
          <span>浙江阿鲁克健身器材有限公司</span>
        </div>
        <div class="kb_headTime kb_header_text" style="top: 35px;left:  800px">
src/views/kanbanManager/zhkb.vue
@@ -6,7 +6,7 @@
      <div class="kb_header">
        <div class="kb_headTime" style="top: 35px;left:  20px">
          <span>浙江寅寅科技有限公司</span>
          <span>浙江阿鲁克健身器材有限公司</span>
        </div>
        <div class="kb_headTime kb_header_text" style="top: 35px;left:  800px">
src/views/workOrder/produceOrderList.vue
@@ -7,10 +7,17 @@
      >
        <div style="font-weight: bolder;">订单状态</div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus===''}" @click="statusChange('')">全部</div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='NEW'}" @click="statusChange('NEW')">新订单</div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='CREATING'}" @click="statusChange('CREATING')">部分下达</div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='CREATED'}" @click="statusChange('CREATED')">全部下达</div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='CLOSED'}" @click="statusChange('CLOSED')">已关闭</div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='NEW'}" @click="statusChange('NEW')">新订单
        </div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='CREATING'}"
             @click="statusChange('CREATING')">部分下达
        </div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='CREATED'}"
             @click="statusChange('CREATED')">全部下达
        </div>
        <div class="statusItem" :class="{statusItemLight:form.erporderstus==='CLOSED'}" @click="statusChange('CLOSED')">
          已关闭
        </div>
      </div>
      <div class="bodyTopButtonGroup" style="justify-content: space-between;margin-top: 5px;">
@@ -74,22 +81,22 @@
              </el-select>
            </el-form-item>
            <el-form-item label="订单编号" style=" display: flex;">
              <el-input v-model="form.erpordercode" placeholder="请输入" style="width: 200px" />
              <el-input v-model="form.erpordercode" placeholder="请输入" style="width: 200px"/>
            </el-form-item>
            <el-form-item label="销售订单" style=" display: flex;">
              <el-input v-model="form.saleordercode" style="width: 200px" placeholder="请输入" />
              <el-input v-model="form.saleordercode" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="产品编码" style=" display: flex;">
              <el-input v-model="form.partcode" style="width: 200px" placeholder="请输入" />
              <el-input v-model="form.partcode" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="产品名称" style=" display: flex;">
              <el-input v-model="form.partname" style="width: 200px" placeholder="请输入" />
              <el-input v-model="form.partname" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="产品规格" style=" display: flex;">
              <el-input v-model="form.partspec" style="width: 200px" placeholder="请输入" />
              <el-input v-model="form.partspec" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <DateType
@@ -237,7 +244,7 @@
          <el-table-column
            show-tooltip-when-overflow
            prop="saleOrderCode"
            label="销售订单"
            label="销售订单/预测单"
            sortable="custom"
            width="150"
          >
@@ -273,6 +280,30 @@
            </template>
          </el-table-column>
          <el-table-column
            prop="TopInventoryCode"
            label="顶级物料编码"
            sortable="custom"
            show-tooltip-when-overflow
            min-width="130"
          >
            <template slot-scope="{row}">
              <div v-if="row.TopInventoryCode">{{ row.TopInventoryCode }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="TopInventoryName"
            label="顶级物料名称"
            sortable="custom"
            show-tooltip-when-overflow
            min-width="130"
          >
            <template slot-scope="{row}">
              <div v-if="row.TopInventoryName">{{ row.TopInventoryName }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="qty"
            label="订单数量"
            width="150"
@@ -286,66 +317,66 @@
            width="150"
            sortable="custom"
          />
<!--          <el-table-column-->
<!--            prop="priuserdefnvc1"-->
<!--            label="客户名称"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc1 ? row.priuserdefnvc1 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc6"-->
<!--            label="客户编码"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc6 ? row.priuserdefnvc6 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc2"-->
<!--            label="对内名称"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc2 ? row.priuserdefnvc2 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc3"-->
<!--            label="CTP日期"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc3 ? row.priuserdefnvc3 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc4"-->
<!--            label="钢刀编号"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc4 ? row.priuserdefnvc4 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc5"-->
<!--            label="盒型"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc5 ? row.priuserdefnvc5 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc1"-->
          <!--            label="客户名称"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc1 ? row.priuserdefnvc1 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc6"-->
          <!--            label="客户编码"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc6 ? row.priuserdefnvc6 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc2"-->
          <!--            label="对内名称"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc2 ? row.priuserdefnvc2 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc3"-->
          <!--            label="CTP日期"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc3 ? row.priuserdefnvc3 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc4"-->
          <!--            label="钢刀编号"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc4 ? row.priuserdefnvc4 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc5"-->
          <!--            label="盒型"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc5 ? row.priuserdefnvc5 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <el-table-column
            prop="clerkuser"
            label="销售业务员"
@@ -473,12 +504,21 @@
                    @click="edit('edit',row)"
                  />
                </el-tooltip>
                <el-tooltip v-del-tab-index class="item" effect="dark" content="订单关闭" placement="top">
                <el-tooltip v-del-tab-index class="item" effect="dark" :content="row.status!=='CLOSED'?'订单关闭':'订单启动'" placement="top">
                  <i
                    v-if="row.status!=='CLOSED'"
                    class="el-icon-switch-button"
                    :style="{color:'red'}"
                    style="cursor: pointer;margin-left: 15px"
                    @click="orderClose(row)"
                  />
                  <i
                    v-if="row.status==='CLOSED'"
                    class="el-icon-thumb"
                    :style="{color:$store.state.settings.theme}"
                    style="cursor: pointer;margin-left: 15px"
                    @click="orderClose(row.id)"
                    @click="orderOpen(row)"
                  />
                </el-tooltip>
@@ -519,26 +559,35 @@
    >
      <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="106px">
        <el-form-item label="订单编号" prop="erpordercode">
          <el-input v-model="dialogForm.erpordercode" disabled style="width: 200px" />
          <el-input v-model="dialogForm.erpordercode" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="产品编码" prop="partcode">
          <el-input v-model="dialogForm.partcode" disabled style="width: 200px" />
          <el-input v-model="dialogForm.partcode" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="产品名称" prop="partname">
          <el-input v-model="dialogForm.partname" disabled style="width: 200px" />
          <el-input v-model="dialogForm.partname" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="产品规格" prop="partspec">
          <el-input v-model="dialogForm.partspec" disabled style="width: 200px" />
          <el-input v-model="dialogForm.partspec" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="顶级物料编码" prop="TopInventoryCode">
          <el-input v-model="dialogForm.TopInventoryCode" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="顶级物料名称" prop="TopInventoryName">
          <el-input v-model="dialogForm.TopInventoryName" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="生产车间" prop="wkshopname">
          <el-input v-model="dialogForm.wkshopname" disabled style="width: 200px" />
          <el-input v-model="dialogForm.wkshopname" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="所属仓库" prop="warehousename">
          <el-input v-model="dialogForm.warehousename" disabled style="width: 200px" />
          <el-input v-model="dialogForm.warehousename" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="订单数量" prop="erpqty">
          <el-input v-model="dialogForm.erpqty" disabled style="width: 200px" />
          <el-input v-model="dialogForm.erpqty" disabled style="width: 200px"/>
        </el-form-item>
        <el-form-item label="已下单数" prop="relse_qty">
          <el-input
@@ -636,7 +685,7 @@
<script>
import Pagination from '@/components/Pagination'
import { handleDatetime } from '@/utils/global'
import {handleDatetime} from '@/utils/global'
import elDragDialog from '@/directive/el-drag-dialog'
import waves from '@/directive/waves'
import {
@@ -644,10 +693,10 @@
  DeleteErpOrder,
  ErpOrderSearch,
  MarkBatchSaveErpOrder,
  MarkSaveErpOrder
  MarkSaveErpOrder, ReverseClosedErpOrder
} from '@/api/WorkOrder'
import { SeaveSearchErpOrder } from '@/api/ErpSyncMes'
import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
import {SeaveSearchErpOrder} from '@/api/ErpSyncMes'
import {PrentOrganizationNoCompany} from '@/api/GeneralBasicData'
import DateType from '@/components/DateType'
const SER_HZ = /^[\u4e00-\u9fa5]+$/
@@ -656,7 +705,7 @@
  components: {
    Pagination, DateType
  },
  directives: { elDragDialog, waves },
  directives: {elDragDialog, waves},
  data() {
    const validateName = (rule, value, callback) => {
      if (!value) {
@@ -698,10 +747,10 @@
      },
      erporderstusArr: [
        { code: 'NEW', name: '新订单' },
        { code: 'CREATING', name: '部分下达' },
        { code: 'CREATED', name: '全部下达' },
        { code: 'CLOSED', name: '已关闭' }
        {code: 'NEW', name: '新订单'},
        {code: 'CREATING', name: '部分下达'},
        {code: 'CREATED', name: '全部下达'},
        {code: 'CLOSED', name: '已关闭'}
      ],
      wkshopcodeArr: [],
      total: 10,
@@ -729,6 +778,10 @@
        ordernum: '', // 下单单数
        relse_qty: '', // 已下单数量
        idTopInventory: '', // 顶级物料id
        TopInventoryCode: '', // 顶级物料编码
        TopInventoryName: '', // 顶级物料名称
        clerkuser: '', // 销售业务员
        saleOrderDeliveryDate: '', // 预计交付日期
@@ -745,13 +798,13 @@
        //   { required: true, validator: validateName, trigger: ['blur', 'change'] }
        // ],
        markqty: [
          { required: true, message: '请输入下单数量', trigger: ['blur', 'change'] }
          {required: true, message: '请输入下单数量', trigger: ['blur', 'change']}
        ],
        ordernum: [
          { required: true, message: '请输入下单单数', trigger: ['blur', 'change'] }
          {required: true, message: '请输入下单单数', trigger: ['blur', 'change']}
        ],
        saleOrderDeliveryDate: [
          { required: true, message: '请选择预计交付日期', trigger: ['blur', 'change'] }
          {required: true, message: '请选择预计交付日期', trigger: ['blur', 'change']}
        ]
      },
@@ -804,7 +857,7 @@
    },
    async getPrentOrganizationNoCompany() {
      const { data: res } = await PrentOrganizationNoCompany()
      const {data: res} = await PrentOrganizationNoCompany()
      this.wkshopcodeArr = res
    },
    async getErpOrderSearch() {
@@ -853,7 +906,7 @@
      this.total = res.count
    },
    // 排序改变时
    sortChange({ column, prop, order }) {
    sortChange({column, prop, order}) {
      if (order === 'descending') {
        order = 'desc'
      } else if (order === 'ascending') {
@@ -939,7 +992,7 @@
              cancelButtonText: '取消',
              type: 'warning'
            }).then(() => {
              DeleteErpOrder({ erpordercode: item.wo, erporderid: id }).then(res => {
              DeleteErpOrder({erpordercode: item.wo, erporderid: id}).then(res => {
                if (res.code === '200') {
                  this.$message.success('订单删除成功!')
                  this.getErpOrderSearch()
@@ -953,28 +1006,41 @@
      })
    },
    // 订单关闭
    async orderClose(id) {
      this.tableData.forEach(item => {
        if (item.id === id) {
          if (item.status !== 'NEW') {
            return this.$message.info('此订单非新订单,无法关闭!')
          } else {
            this.$confirm('是否确认关闭订单?', '提示', {
              confirmButtonText: '确定',
              cancelButtonText: '取消',
              type: 'warning'
            }).then(() => {
              ClosedErpOrder({ erpordercode: item.wo, erporderid: id }).then(res => {
                if (res.code === '200') {
                  this.$message.success('订单关闭成功!')
                  this.getErpOrderSearch()
                }
              })
            }).catch(() => {
              this.$message.info('已取消关闭!')
            })
    async orderClose(row) {
      if (row.status !== 'NEW') {
        return this.$message.info('此订单非新订单,无法关闭!')
      } else {
        this.$confirm('是否确认关闭订单?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          ClosedErpOrder({erpordercode: row.wo, erporderid: row.id}).then(res => {
            if (res.code === '200') {
              this.$message.success('订单关闭成功!')
              this.getErpOrderSearch()
            }
          })
        }).catch(() => {
          this.$message.info('已取消关闭!')
        })
      }
    },
    // 订单开启
    async orderOpen(row) {
      this.$confirm('是否确认启动订单,该订单下的所有工单将会开启!', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        ReverseClosedErpOrder({erpordercode: row.wo, erporderid: row.id}).then(res => {
          if (res.code === '200') {
            this.$message.success('订单启动成功!')
            this.getErpOrderSearch()
          }
        }
        })
      }).catch(() => {
        this.$message.info('已取消关闭!')
      })
    },
    batchHandle() {
@@ -1065,6 +1131,11 @@
        this.dialogForm.markqty = parseFloat(row.qty) - parseFloat(row.relse_qty)
        this.dialogForm.ordernum = 1
        this.dialogForm.relse_qty = row.relse_qty
        this.dialogForm.idTopInventory = row.idTopInventory
        this.dialogForm.TopInventoryCode = row.TopInventoryCode
        this.dialogForm.TopInventoryName = row.TopInventoryName
        this.dialogForm.clerkuser = row.clerkuser
        this.dialogForm.paystartdate = row.planstartdate
@@ -1093,6 +1164,10 @@
        markqty: '', // 下单数量
        ordernum: '', // 下单单数
        relse_qty: '', // 已下单数量
        idTopInventory: '', // 顶级物料id
        TopInventoryCode: '', // 顶级物料编码
        TopInventoryName: '', // 顶级物料名称
        payenddate: '', // 预计完工日期
        paystartdate: '', // 预计开工日期
@@ -1130,6 +1205,11 @@
            'partcode': this.dialogForm.partcode,
            'wkshopcode': this.dialogForm.wkshopcode,
            'warehousecode': this.dialogForm.warehousecode,
            'idTopInventory': this.dialogForm.idTopInventory,
            'TopInventoryCode': this.dialogForm.TopInventoryCode,
            'TopInventoryName': this.dialogForm.TopInventoryName,
            'clerkuser': this.dialogForm.clerkuser,
            'erpqty': this.dialogForm.erpqty,
            'markqty': this.dialogForm.markqty,
@@ -1162,11 +1242,11 @@
        this.$refs.tableDataRef.doLayout()
      })
    },
    tableRowClassName({ row, rowIndex }) {
    tableRowClassName({row, rowIndex}) {
      return 'custom-row'
    },
    getSummaries(param) {
      const { columns, data } = param
      const {columns, data} = param
      const sums = []
      const i = 7
      columns.forEach((column, index) => {
@@ -1363,12 +1443,13 @@
  padding: 10px 10px 0 10px;
}
.statusItem{
.statusItem {
  margin-left: 20px;
  cursor: pointer;
  color: #a7a7a7;
}
.statusItemLight{
.statusItemLight {
  font-weight: bolder;
  color: #42b983;
}
src/views/workOrder/workOrderClose.vue
@@ -3,7 +3,8 @@
    <div class="body" :style="{height:mainHeight+'px'}">
      <div class="bodyTopButtonGroup">
        <el-button v-waves icon="el-icon-switch-button" type="success" @click="orderClose()">工单关闭</el-button>
        <el-button v-waves icon="el-icon-switch-button" type="danger" @click="orderClose()">工单关闭</el-button>
        <el-button v-waves icon="el-icon-thumb" type="success" @click="orderOpen()">工单启动</el-button>
      </div>
      <div class="bodyTopFormGroup">
@@ -49,13 +50,13 @@
              </el-select>
            </el-form-item>
            <el-form-item label="工单编号" style=" display: flex;">
              <el-input v-model="form.mesordercode" placeholder="请输入" style="width: 200px" />
              <el-input v-model="form.mesordercode" placeholder="请输入" style="width: 200px"/>
            </el-form-item>
            <el-form-item label="源单单号" style="display: flex;">
              <el-input v-model="form.sourceorder" style="width: 200px" placeholder="请输入" />
              <el-input v-model="form.sourceorder" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="销售订单" style="display: flex;">
              <el-input v-model="form.saleordercode" style="width: 200px" placeholder="请输入" />
              <el-input v-model="form.saleordercode" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="单据类型" style=" display: flex;">
              <el-select
@@ -74,16 +75,16 @@
              </el-select>
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="产品编码" style=" display: flex;">
              <el-input v-model="form.partcode" style="width: 200px" placeholder="请输入" />
              <el-input v-model="form.partcode" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="产品名称" style=" display: flex;">
              <el-input v-model="form.partname" style="width: 200px" placeholder="请输入" />
              <el-input v-model="form.partname" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="产品规格" style=" display: flex;">
              <el-input v-model="form.partspec" style="width: 200px" placeholder="请输入" />
              <el-input v-model="form.partspec" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="创建人员" style=" display: flex;">
              <el-input v-model="form.creatuser" style="width: 200px" placeholder="请输入" />
              <el-input v-model="form.creatuser" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item v-show="isExpandForm" label="创建时间" style=" display: flex;">
              <!--              <el-date-picker-->
@@ -154,8 +155,8 @@
          <el-table-column
            type="selection"
            width="50"
            :selectable="selected"
          />
<!--          :selectable="selected"-->
          <el-table-column
            prop="rowNum"
            width="50"
@@ -202,7 +203,7 @@
          </el-table-column>
          <el-table-column
            prop="saleOrderCode"
            label="销售订单"
            label="销售订单/预测单"
            sortable="custom"
            show-tooltip-when-overflow
            min-width="160"
@@ -258,66 +259,66 @@
            show-tooltip-when-overflow
            width="100"
          />
<!--          <el-table-column-->
<!--            prop="priuserdefnvc1"-->
<!--            label="客户名称"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc1 ? row.priuserdefnvc1 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc6"-->
<!--            label="客户编码"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc6 ? row.priuserdefnvc6 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc2"-->
<!--            label="对内名称"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc2 ? row.priuserdefnvc2 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc3"-->
<!--            label="CTP日期"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc3 ? row.priuserdefnvc3 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc4"-->
<!--            label="钢刀编号"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc4 ? row.priuserdefnvc4 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
<!--          <el-table-column-->
<!--            prop="priuserdefnvc5"-->
<!--            label="盒型"-->
<!--            width="110"-->
<!--            sortable="custom"-->
<!--          >-->
<!--            <template slot-scope="{row}">-->
<!--              {{ row.priuserdefnvc5 ? row.priuserdefnvc5 : '/' }}-->
<!--            </template>-->
<!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc1"-->
          <!--            label="客户名称"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc1 ? row.priuserdefnvc1 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc6"-->
          <!--            label="客户编码"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc6 ? row.priuserdefnvc6 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc2"-->
          <!--            label="对内名称"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc2 ? row.priuserdefnvc2 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc3"-->
          <!--            label="CTP日期"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc3 ? row.priuserdefnvc3 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc4"-->
          <!--            label="钢刀编号"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc4 ? row.priuserdefnvc4 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <!--          <el-table-column-->
          <!--            prop="priuserdefnvc5"-->
          <!--            label="盒型"-->
          <!--            width="110"-->
          <!--            sortable="custom"-->
          <!--          >-->
          <!--            <template slot-scope="{row}">-->
          <!--              {{ row.priuserdefnvc5 ? row.priuserdefnvc5 : '/' }}-->
          <!--            </template>-->
          <!--          </el-table-column>-->
          <el-table-column
            prop="wkshp_name"
            label="生产车间"
@@ -405,12 +406,20 @@
                  />
                </el-tooltip>
                <el-tooltip class="item" effect="dark" content="工单关闭" placement="top">
                <el-tooltip class="item" effect="dark" :content="row.status!=='CLOSED'?'工单关闭':'工单启动'" placement="top">
                  <i
                    v-if="row.status!=='CLOSED'"
                    class="el-icon-switch-button"
                    style="cursor: pointer;margin-left: 15px"
                    :style="{color:$store.state.settings.theme}"
                    :style="{color:'red'}"
                    @click.stop="orderClose(row)"
                  />
                  <i
                    v-if="row.status==='CLOSED'"
                    class="el-icon-thumb"
                    style="cursor: pointer;margin-left: 15px"
                    :style="{color:$store.state.settings.theme}"
                    @click.stop="orderOpen(row)"
                  />
                </el-tooltip>
@@ -589,7 +598,7 @@
        <el-form-item label="工单编号" prop="mesordercode">
          <!--          <el-input v-model="dialogForm.mesordercode" :disabled="operation!=='add'" style="width: 200px" />-->
          <el-input v-model="dialogForm.mesordercode" disabled style="width: 200px" />
          <el-input v-model="dialogForm.mesordercode" disabled style="width: 200px"/>
        </el-form-item>
        <!--        <div style="display: flex">-->
        <el-form-item label="工单类型" prop="mesorderstus">
@@ -670,7 +679,7 @@
        <!--          <el-input v-model="dialogForm.partcode" disabled style="width: 200px" />-->
        <!--        </el-form-item>-->
        <el-form-item label="产品规格" prop="partspec">
          <el-input v-model="dialogForm.partspec" disabled style="width: 200px" />
          <el-input v-model="dialogForm.partspec" disabled style="width: 200px"/>
        </el-form-item>
        <!--        :disabled="dialogForm.partcode===''"-->
        <el-form-item label="所属车间" prop="wkshopcode">
@@ -1011,20 +1020,20 @@
              </el-select>
            </el-form-item>
            <el-form-item label="工单编号" style=" display: flex;">
              <el-input v-model="sourceForm.sourceorder" placeholder="请输入" style="width: 200px" />
              <el-input v-model="sourceForm.sourceorder" placeholder="请输入" style="width: 200px"/>
            </el-form-item>
            <el-form-item label="产品编码" style=" display: flex;">
              <el-input v-model="sourceForm.partcode" style="width: 200px" placeholder="请输入" />
              <el-input v-model="sourceForm.partcode" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item v-show="isExpandDialog" label="产品名称" style=" display: flex;">
              <el-input v-model="sourceForm.partname" style="width: 200px" placeholder="请输入" />
              <el-input v-model="sourceForm.partname" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item v-show="isExpandDialog" label="产品规格" style=" display: flex;">
              <el-input v-model="sourceForm.partspec" style="width: 200px" placeholder="请输入" />
              <el-input v-model="sourceForm.partspec" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item v-show="isExpandDialog" label="创建人员" style=" display: flex;">
              <el-input v-model="sourceForm.creatuser" style="width: 200px" placeholder="请输入" />
              <el-input v-model="sourceForm.creatuser" style="width: 200px" placeholder="请输入"/>
            </el-form-item>
            <el-form-item
@@ -1348,9 +1357,9 @@
            justify-content: center;
            position: relative;"
          >
            <div id="qrCode0" ref="qrCodeDiv0" />
            <div id="qrCode0" ref="qrCodeDiv0"/>
          </div>
          <div style="background-color: #fff;width: 20px;height:120px; position: absolute;right: 0" />
          <div style="background-color: #fff;width: 20px;height:120px; position: absolute;right: 0"/>
          <div
            style="z-index: 10;background-color:transparent;width: 120px;height:120px; position: absolute;right: 21px"
          />
@@ -1381,7 +1390,7 @@
            align="center"
          >
            <template slot-scope="{row}">
              <div :id="'qrCode'+row.seq" :ref="'qrCodeDiv'+row.seq" class="tableColumn" />
              <div :id="'qrCode'+row.seq" :ref="'qrCodeDiv'+row.seq" class="tableColumn"/>
            </template>
          </el-table-column>
          <el-table-column
@@ -1915,11 +1924,11 @@
      @close="handleCloseRoute"
    >
      <div>
        <i class="el-icon-s-comment" style="color:#42b983;" /> 产品名称:{{ dialogFormRoute.projectName }}
        <i class="el-icon-s-comment" style="color:#42b983;"/> 产品名称:{{ dialogFormRoute.projectName }}
      </div>
      <el-divider />
      <el-divider/>
      <div style="margin-bottom: 10px">
        <i class="el-icon-s-operation" style="color:#42b983;" /> 工艺路线集合
        <i class="el-icon-s-operation" style="color:#42b983;"/> 工艺路线集合
      </div>
      <div class="myCheckboxGroup">
@@ -1943,9 +1952,9 @@
        </div>
      </div>
      <el-divider />
      <el-divider/>
      <div>
        <i class="el-icon-s-operation" style="color:#42b983;" /> 默认工艺路线
        <i class="el-icon-s-operation" style="color:#42b983;"/> 默认工艺路线
      </div>
      <div style="margin-top: 20px">
        <el-select
@@ -1963,9 +1972,9 @@
          />
        </el-select>
      </div>
      <el-divider />
      <el-divider/>
      <div style="margin-bottom: 10px">
        <i class="el-icon-s-operation" style="color:#42b983;" /> 工序列表
        <i class="el-icon-s-operation" style="color:#42b983;"/> 工序列表
      </div>
      <div style="overflow-y: scroll">
        <el-table
@@ -2001,11 +2010,11 @@
          >
            <template slot-scope="{row}">
              <div v-if="row.enable==='Y'">
                <svg-icon icon-class="circleYes" style="margin-right: 2px" />
                <svg-icon icon-class="circleYes" style="margin-right: 2px"/>
                是
              </div>
              <div v-if="row.enable==='N'">
                <svg-icon icon-class="circleNo" style="margin-right: 2px" />
                <svg-icon icon-class="circleNo" style="margin-right: 2px"/>
                否
              </div>
            </template>
@@ -2025,8 +2034,8 @@
<script>
import Pagination from '@/components/Pagination'
import { handleDatetime, handleDatetime2, validateCode } from '@/utils/global'
import { getCookie } from '@/utils/auth'
import {handleDatetime, handleDatetime2, validateCode} from '@/utils/global'
import {getCookie} from '@/utils/auth'
import QRCode from 'qrcodejs2'
import $ from 'jquery'
import elDragDialog from '@/directive/el-drag-dialog'
@@ -2036,20 +2045,20 @@
  AddUpdateMesOrder, DeleteMesOrder,
  MesBadOrderSearch, MesOrderDistribution,
  MesOrderClosedSearch,
  UpdateMesOrderStepSearch, MesOrderBitchClosedSeave
  UpdateMesOrderStepSearch, MesOrderBitchClosedSeave, MesOrderBitchReverseClosedSeave
} from '@/api/WorkOrder'
import { PartSelect } from '@/api/ProductModel'
import { PrentOrganization, PrentOrganizationNoCompany, StepData } from '@/api/GeneralBasicData'
import {PartSelect} from '@/api/ProductModel'
import {PrentOrganization, PrentOrganizationNoCompany, StepData} from '@/api/GeneralBasicData'
import Sortable from 'sortablejs'
import ElDragSelect from '@/components/DragSelect'
import { MesOrderPrintSearch } from '@/api/GridReport' // base on element-ui
import {MesOrderPrintSearch} from '@/api/GridReport' // base on element-ui
export default {
  name: 'WorkOrderClose',
  components: {
    Pagination, ElDragSelect
  },
  directives: { elDragDialog, waves },
  directives: {elDragDialog, waves},
  data() {
    return {
      mouseHoverType: 'mouseout',
@@ -2082,8 +2091,8 @@
        // { code: 'CREATED', name: '已关闭' }
        // { code: 'ALLO', name: '已派发' }
        // 已关闭:CLOSED  未关闭:NOCLOSED
        { code: 'NOCLOSED', name: '未关闭' },
        { code: 'CLOSED', name: '已关闭' }
        {code: 'NOCLOSED', name: '未关闭'},
        {code: 'CLOSED', name: '已关闭'}
        // { code: 'NOSCHED', name: '待排程' },
        // { code: 'SCHED', name: '已排程' }
      ],
@@ -2112,51 +2121,51 @@
        mesmaxqty: 0// 工单的最大值
      },
      ordertypeArr: [// 工单类型
        { code: 'PO', name: '标准工单' },
        { code: 'FO', name: '报废补单' }
        {code: 'PO', name: '标准工单'},
        {code: 'FO', name: '报废补单'}
      ],
      partArr: [], // 产品信息
      wkshopArr: [], // 生产车间数组
      routeArr: [], // 工艺路线数组
      orderlevArr: [
        { code: 1, name: '特级' },
        { code: 2, name: '紧急' },
        { code: 3, name: '正常' }
        {code: 1, name: '特级'},
        {code: 2, name: '紧急'},
        {code: 3, name: '正常'}
      ], // 工单等级数组
      operation: '',
      dialogFormRules: {
        mesorderstus: [
          { required: true, message: '请选择订单状态', trigger: ['blur', 'change'] }
          {required: true, message: '请选择订单状态', trigger: ['blur', 'change']}
        ],
        partcode: [
          { required: true, message: '请选择产品信息', trigger: ['blur', 'change'] }
          {required: true, message: '请选择产品信息', trigger: ['blur', 'change']}
        ],
        mesordercode: [
          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
          {required: true, validator: validateCode, trigger: ['blur', 'change']}
        ],
        mesqty: [
          { required: true, message: '请输入工单数量', trigger: ['blur', 'change'] }
          {required: true, message: '请输入工单数量', trigger: ['blur', 'change']}
        ],
        wkshopcode: [
          { required: true, message: '请选择生产车间', trigger: ['blur', 'change'] }
          {required: true, message: '请选择生产车间', trigger: ['blur', 'change']}
        ],
        deliverydate: [
          { required: true, message: '请选择预计交付日期', trigger: ['blur', 'change'] }
          {required: true, message: '请选择预计交付日期', trigger: ['blur', 'change']}
        ],
        planstartdate: [
          { required: true, message: '请选择开始时间', trigger: ['blur', 'change'] }
          {required: true, message: '请选择开始时间', trigger: ['blur', 'change']}
        ],
        planenddate: [
          { required: true, message: '请选择结束时间', trigger: ['blur', 'change'] }
          {required: true, message: '请选择结束时间', trigger: ['blur', 'change']}
        ],
        orderlev: [
          { required: true, message: '请选择工单等级', trigger: ['blur', 'change'] }
          {required: true, message: '请选择工单等级', trigger: ['blur', 'change']}
        ],
        isAps: [
          { required: true, message: '请选择是否排程', trigger: ['blur', 'change'] }
          {required: true, message: '请选择是否排程', trigger: ['blur', 'change']}
        ],
        bomId: [
          { required: true, message: '请选择物料清单', trigger: ['blur', 'change'] }
          {required: true, message: '请选择物料清单', trigger: ['blur', 'change']}
        ]
      },
@@ -2266,9 +2275,9 @@
      tableDataDetail: [], // 点击工单表的行 显示详细信息
      printSize: 0,
      printSizeSelectArr: [// 宽*高
        { code: 0, name: '80*50' },
        { code: 1, name: '78*60' },
        { code: 2, name: '60*40' }
        {code: 0, name: '80*50'},
        {code: 1, name: '78*60'},
        {code: 2, name: '60*40'}
        // { code: 2, name: '50*60' },
        // { code: 3, name: '50*40' },
        // { code: 4, name: '50*80' },
@@ -2299,7 +2308,7 @@
  watch: {
    'stepSelectedValue': {
      // deep: true,
      handler: function(val) {
      handler: function (val) {
        // do something with the new and old value of stepSelectedValue
        console.log(val, 1)
        const arr = JSON.parse(JSON.stringify(this.stepTableData))
@@ -2338,7 +2347,7 @@
      const el = this.$refs.stepTableDataRef.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0]
      this.sortable = Sortable.create(el, {
        ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
        setData: function(dataTransfer) {
        setData: function (dataTransfer) {
          // to avoid Firefox bug
          // Detail see : https://github.com/RubaXa/Sortable/issues/1012
          dataTransfer.setData('Text', '')
@@ -2354,7 +2363,7 @@
        }
      })
    },
    tableRowClassName({ row, rowIndex }) {
    tableRowClassName({row, rowIndex}) {
      return 'custom-row'
    },
    handleRequest() {
@@ -2366,7 +2375,7 @@
      })
    },
    async getPrentOrganizationNoCompany() {
      const { data: res } = await PrentOrganizationNoCompany()
      const {data: res} = await PrentOrganizationNoCompany()
      this.wkshopcodeArr = res
    },
    async getMesOrderClosedSearch() {
@@ -2397,19 +2406,19 @@
      this.total = res.count
      // this.form.createdate = tempDate
      return { code: res.code }
      return {code: res.code}
    },
    async getSelect() {
      // 获取产品信息
      const { data: res1 } = await PartSelect()
      const {data: res1} = await PartSelect()
      this.partArr = res1
      // 获取组织
      const { data: res2 } = await PrentOrganization()
      const {data: res2} = await PrentOrganization()
      this.wkshopArr = res2
      // 获取工序
      const { data: res3 } = await StepData()
      const {data: res3} = await StepData()
      this.stepSelectArr = res3
    },
    // 订单状态改变时
@@ -2417,7 +2426,7 @@
      this.form.mesorderstus = val
    },
    // 排序改变时
    sortChange({ column, prop, order }) {
    sortChange({column, prop, order}) {
      if (order === 'descending') {
        order = 'desc'
      } else if (order === 'ascending') {
@@ -2429,7 +2438,7 @@
      this.form.prop = prop
      this.getMesOrderClosedSearch()
    },
    sourceSortChange({ column, prop, order }) {
    sourceSortChange({column, prop, order}) {
      if (order === 'descending') {
        order = 'desc'
      } else if (order === 'ascending') {
@@ -2463,7 +2472,7 @@
    },
    // 新增按钮
    async add(operation) {
      const { data: res } = await AddMesOrderCodeSearch()
      const {data: res} = await AddMesOrderCodeSearch()
      this.dialogForm.mesordercode = res
      this.operation = operation
      this.dialogVisible = true
@@ -2488,7 +2497,8 @@
      this.dialogVisibleTask = false
    },
    handleSelectionChange(val) {
      this.multipleSelection = val.map(i => i.wo_code)
      // this.multipleSelection = val.map(i => i.wo_code)
      this.multipleSelection = val
    },
    selected(row, index) {
@@ -2567,7 +2577,7 @@
        wocode: this.dialogForm.mesordercode,
        data_sources: this.dialogForm.data_sources
      }
      const { data: res } = await UpdateMesOrderStepSearch(data)
      const {data: res} = await UpdateMesOrderStepSearch(data)
      this.dialogForm.mesmaxqty = res.canupdate_qty
      this.stepTableData = res.stepdata
      // res.stepdata.forEach(i => {
@@ -2585,17 +2595,47 @@
    },
    // 工单关闭事件
    async orderClose(row) {
      this.$confirm('是否确认删除?', '提示', {
      this.$confirm('是否确认关闭?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        if (row) { // 行关闭工单
          this.multipleSelection = [row.wo_code]
        let data = null
        if (row) { // 行启动工单
          data = [row.wo_code]
        } else {
          data = this.multipleSelection.filter(i => i.status === 'CLOSED').map(i => i.wo_code)
        }
        MesOrderBitchClosedSeave(this.multipleSelection).then(res => {
        MesOrderBitchClosedSeave(data).then(res => {
          if (res.code === '200') {
            this.$notify.success('关闭成功!')
            // if (this.form.page > 1 && this.tableData.length === 1) {
            //   this.form.page--
            // }
            this.getMesOrderClosedSearch()
          }
        })
      }).catch(() => {
        this.$notify.info('已取消删除!')
      })
    },
    // 工单启动事件
    async orderOpen(row) {
      this.$confirm('是否确认启动?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        let data = null
        if (row) { // 行启动工单
          data = [row.wo_code]
        } else {
          data = this.multipleSelection.filter(i => i.status === 'CLOSED').map(i => i.wo_code)
        }
        MesOrderBitchReverseClosedSeave(data).then(res => {
          if (res.code === '200') {
            this.$notify.success('启动成功!')
            // if (this.form.page > 1 && this.tableData.length === 1) {
            //   this.form.page--
            // }
@@ -2735,7 +2775,7 @@
        return this.$message.info('请先选择工艺路线!')
      }
      this.dialogVisibleSearch = true
      const { data: res } = await SelectRouteStep({ routecode: this.dialogForm.routecode })
      const {data: res} = await SelectRouteStep({routecode: this.dialogForm.routecode})
      this.searchTableData = res
    },
    dialogVisibleSearchBack() {
@@ -2890,7 +2930,7 @@
    },
    // 补打生产入库条码
    async getProductInHouseLabCode(ordercode) {
      const res = await ProductInHouseLabCode({ ordercode })
      const res = await ProductInHouseLabCode({ordercode})
      console.log(res)
      this.isLastPrint = true
@@ -3051,7 +3091,7 @@
      this.dialogFormRoute.projectCode = row.partcode
      this.dialogFormRoute.projectName = row.partname
      this.dialogVisibleRoute = true
      const { data: res } = await InventoryFileAssociationRoute({ partcode: this.dialogFormRoute.projectCode })
      const {data: res} = await InventoryFileAssociationRoute({partcode: this.dialogFormRoute.projectCode})
      this.dialogFormRoute.routeOperationArr = res
      this.dialogFormRoute.routeOperationArr.forEach((item, index) => {
@@ -3093,7 +3133,7 @@
      const data = []
      this.dialogFormRoute.routeOperationArr.forEach(item => {
        if (item.isSelected2) {
          data.push({ code: item.code, name: item.name })
          data.push({code: item.code, name: item.name})
        }
      })
@@ -3136,7 +3176,7 @@
        wocode: row.wo_code,
        data_sources: row.data_sources
      }
      const { data: res } = await UpdateMesOrderStepSearch(data)
      const {data: res} = await UpdateMesOrderStepSearch(data)
      this.tableDataDetail = res.stepdata
    },
    // 工序删除
@@ -3157,10 +3197,10 @@
    },
    printMe2StylePadding(val) {
      if (val === 0) {
        return { paddingLeft: '10px', paddingTop: '5px' }
        return {paddingLeft: '10px', paddingTop: '5px'}
      }
      if (val === 5) {
        return { paddingLeft: '15px', paddingTop: '7px' }
        return {paddingLeft: '15px', paddingTop: '7px'}
      }
    },
src/views/workOrder/workOrderList.vue
@@ -225,7 +225,7 @@
          </el-table-column>
          <el-table-column
            prop="saleOrderCode"
            label="销售订单"
            label="销售订单/预测单"
            sortable="custom"
            show-tooltip-when-overflow
            min-width="160"
@@ -288,7 +288,30 @@
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="TopInventoryCode"
            label="顶级物料编码"
            sortable="custom"
            show-tooltip-when-overflow
            min-width="130"
          >
            <template slot-scope="{row}">
              <div v-if="row.TopInventoryCode">{{ row.TopInventoryCode }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="TopInventoryName"
            label="顶级物料名称"
            sortable="custom"
            show-tooltip-when-overflow
            min-width="130"
          >
            <template slot-scope="{row}">
              <div v-if="row.TopInventoryName">{{ row.TopInventoryName }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="plan_qty"
            label="工单数"
@@ -782,6 +805,14 @@
        <!--        </el-form-item>-->
        <el-form-item label="产品规格" prop="partspec">
          <el-input v-model="dialogForm.partspec" disabled style="width: 200px" />
        </el-form-item>
        <el-form-item v-if="operation!=='add'" label="顶级物料编码" prop="TopInventoryCode">
          <el-input v-model="dialogForm.TopInventoryCode" disabled style="width: 200px" />
        </el-form-item>
        <el-form-item v-if="operation!=='add'" label="顶级物料名称" prop="TopInventoryName">
          <el-input v-model="dialogForm.TopInventoryName" disabled style="width: 200px" />
        </el-form-item>
        <!--        :disabled="dialogForm.partcode===''"-->
@@ -1502,6 +1533,9 @@
                  <el-form-item label="产品规格:" class="formContent">
                    {{ formApprove.partspec }}
                  </el-form-item>
                  <el-form-item label="顶级物料:" class="formContent">
                    {{ formApprove.TopInventoryName }}
                  </el-form-item>
                  <el-form-item label="工单数量:" class="formContent">
                    {{ formApprove.plan_qty }}
                  </el-form-item>
@@ -1599,22 +1633,29 @@
            <el-table-column
              id="column4"
              prop="good_qty"
              width="100"
              width="60"
              align="center"
              label="合格数量"
              label="合格"
            />
            <el-table-column
              id="column5"
              width="100"
              width="60"
              prop="ng_qty"
              align="center"
              label="不良数量"
              label="不良"
            />
            <el-table-column
              id="column6"
              prop="desc"
              align="center"
              width="120"
              width="100"
              label="检验员"
            />
            <el-table-column
              id="column6"
              prop="desc"
              align="center"
              width="100"
              label="备注"
            />
          </el-table>
@@ -2770,7 +2811,9 @@
        deliverydate: '', // 交付时间
        data_sources: '', // 数据来源
        idTopInventory: '', // 顶级物料id
        TopInventoryCode: '', // 顶级物料编码
        TopInventoryName: '', // 顶级物料名称
        routecode: '', // 工艺路线
        mesmaxqty: 0, // 工单的最大值
@@ -2863,6 +2906,7 @@
        partname: '',
        partspec: '',
        plan_qty: '',
        TopInventoryName: '',
        routename: '',
        lm_date: '',
        priuserdefnvc1: '',
@@ -3660,6 +3704,9 @@
      this.dialogForm.routecode = row.route_code
      this.dialogForm.deliverydate = row.saleOrderDeliveryDate.substring(0, 11)
      this.dialogForm.mesqty = row.plan_qty
      this.dialogForm.TopInventoryCode = row.TopInventoryCode
      this.dialogForm.TopInventoryName = row.TopInventoryName
      this.dialogForm.idTopInventory = row.idTopInventory
      this.dialogForm.mesqtyinit = row.plan_qty
@@ -3872,7 +3919,9 @@
        mesqty: '', // 工单数量
        wkshopcode: '', // 生产车间编码
        wkshopname: '', // 生产车间名称
        idTopInventory: '', // 顶级物料id
        TopInventoryCode: '', // 顶级物料编码
        TopInventoryName: '', // 顶级物料名称
        deliverydate: '', // 交付时间
        data_sources: '' // 数据来源
      }
@@ -4028,6 +4077,8 @@
      this.formApprove.priuserdefnvc5 = row.priuserdefnvc5 ? row.priuserdefnvc5 : '/'
      this.formApprove.priuserdefnvc6 = row.priuserdefnvc6 ? row.priuserdefnvc6 : '/'
      this.formApprove.TopInventoryName = row.TopInventoryName || '/'
      this.formApprove.saleOrderCode = this.formApprove.saleOrderCode !== '' ? this.formApprove.saleOrderCode : saleOrderCode
      const data2 = {
        mesordercode: wo_code || this.dialogForm.mesordercode
@@ -4138,7 +4189,7 @@
      this.formApprove.plan_qty = ''
      this.formApprove.routename = ''
      this.formApprove.lm_date = ''
      this.formApprove.TopInventoryName = ''
      this.formApprove.priuserdefnvc1 = ''
      this.formApprove.priuserdefnvc2 = ''
      this.formApprove.priuserdefnvc3 = ''
src/views/workOrder/workOrderSend.vue
@@ -209,7 +209,7 @@
          </el-table-column>
          <el-table-column
            prop="saleOrderCode"
            label="销售订单"
            label="销售订单/预测单"
            sortable="custom"
            show-tooltip-when-overflow
            min-width="160"
vue.config.js
@@ -52,7 +52,7 @@
    },
    proxy: {
      [process.env.VUE_APP_BASE_API]: {
        target: 'http://121.196.36.24:8042', // 本地
        target: 'http://121.196.36.24:8048', // 本地
        // target: 'http://192.168.1.21:9000', // 阿鲁克(新)
        changeOrigin: true, // 请求跨域时,需 配置此项
        pathRewrite: { // 路径重写,替换target中的请求地址