小小儁爺
2024-10-11 00c703b89dfa507f55de3677a24fb8006092a043
src/views/workOrder/workOrderList.vue
@@ -8,6 +8,8 @@
          <el-button v-waves type="success" icon="el-icon-connection" @click="send">派发</el-button>
        </div>
        <el-button v-waves type="primary" icon="el-icon-download" @click="download">导出</el-button>
        <!--        <el-button v-waves icon="el-icon-switch-button" @click="orderClose">关闭工单</el-button>-->
      </div>
@@ -168,6 +170,92 @@
            fixed
          />
          <el-table-column
            prop="injectnumber"
            label="注塑机号"
            show-tooltip-when-overflow
            width="110"
            sortable="custom"
          >
            <template slot-scope="{row}">{{ row.injectnumber?row.injectnumber:'/' }}</template>
          </el-table-column>
          <el-table-column
            prop="customername"
            label="客户名称"
            show-tooltip-when-overflow
            width="110"
            sortable="custom"
          >
            <template slot-scope="{row}">{{ row.customername?row.customername:'/' }}</template>
          </el-table-column>
          <el-table-column
            prop="partcode"
            label="产品编码"
            show-tooltip-when-overflow
            sortable="custom"
            min-width="120"
          />
          <el-table-column
            prop="partname"
            min-width="150"
            label="产品名称"
            show-tooltip-when-overflow
            sortable="custom"
          />
          <el-table-column
            prop="partspec"
            label="产品规格"
            sortable="custom"
            width="110"
            show-tooltip-when-overflow
          >
            <template slot-scope="{row}">
              <div v-if="row.partspec">{{ row.partspec }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="colour"
            label="颜色"
            show-tooltip-when-overflow
            width="110"
            sortable="custom"
          >
            <template slot-scope="{row}">{{ row.colour?row.colour:'/' }}</template>
          </el-table-column>
          <el-table-column
            prop="plan_qty"
            label="工单数"
            sortable="custom"
            show-tooltip-when-overflow
            width="100"
          />
          <el-table-column
            prop="saleOrderCode"
            label="销售订单"
            sortable="custom"
            show-tooltip-when-overflow
            min-width="160"
          >
            <template slot-scope="{row}">
              <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="clerkuser"
            label="销售业务员"
            sortable="custom"
            show-tooltip-when-overflow
            width="150"
          >
            <template slot-scope="{row}">
              <div v-if="row.clerkuser">{{ row.clerkuser }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="status"
            label="工单状态"
            sortable="custom"
@@ -185,6 +273,21 @@
              <div v-if="row.status==='SCHED'">已排程</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="wotype"
            label="单据类型"
            sortable="custom"
            show-tooltip-when-overflow
            min-width="120"
          >
            <template slot-scope="{row}">
              <div v-if="row.wotype==='PO'">标准工单</div>
              <div v-else-if="row.wotype==='FO'">报废补单</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="wo_code"
            label="工单编号"
@@ -204,76 +307,7 @@
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="saleOrderCode"
            label="销售订单"
            sortable="custom"
            show-tooltip-when-overflow
            min-width="160"
          >
            <template slot-scope="{row}">
              <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="wotype"
            label="单据类型"
            sortable="custom"
            show-tooltip-when-overflow
            min-width="120"
          >
            <template slot-scope="{row}">
              <div v-if="row.wotype==='PO'">标准工单</div>
              <div v-else-if="row.wotype==='FO'">报废补单</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="partcode"
            label="产品编码"
            show-tooltip-when-overflow
            sortable="custom"
            min-width="120"
          />
          <el-table-column
            prop="partname"
            min-width="150"
            label="产品名称"
            show-tooltip-when-overflow
            sortable="custom"
          />
          <el-table-column
            prop="partspec"
            label="产品规格"
            sortable="custom"
            width="110"
            show-tooltip-when-overflow
          >
            <template slot-scope="{row}">
              <div v-if="row.partspec">{{ row.partspec }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="plan_qty"
            label="工单数"
            sortable="custom"
            show-tooltip-when-overflow
            width="100"
          />
          <el-table-column
            prop="clerkuser"
            label="销售业务员"
            sortable="custom"
            show-tooltip-when-overflow
            width="150"
          >
            <template slot-scope="{row}">
              <div v-if="row.clerkuser">{{ row.clerkuser }}</div>
              <div v-else>/</div>
            </template>
          </el-table-column>
          <el-table-column
            prop="wkshp_name"
            label="生产车间"
@@ -348,7 +382,7 @@
                    :style="{color:$store.state.settings.theme}"
                    class="el-icon-printer"
                    style="cursor: pointer;margin-right: 15px"
                    @click.stop="handlePrint(row.wo_code)"
                    @click.stop="handlePrint(row)"
                  />
                </el-tooltip>
@@ -655,6 +689,29 @@
            placeholder="选择日期"
          />
          <!--          :disabled="dialogForm.deliverydate"-->
        </el-form-item>
        <el-form-item label="注塑机号">
          <el-input v-model="dialogForm.injectnumber" style="width: 200px" />
        </el-form-item>
        <el-form-item label="客户名称">
          <el-select
            v-model="dialogForm.customercode"
            filterable
            :popper-append-to-body="false"
            style="width: 200px;"
            placeholder="请选择客户"
          >
            <el-option
              v-for="item in customerArr"
              :key="item.code"
              :label="item.name"
              :value="item.code"
            />
          </el-select>
        </el-form-item>
        <el-form-item label="颜色">
          <el-input v-model="dialogForm.colour" style="width: 200px" />
        </el-form-item>
        <el-divider content-position="left">工序信息</el-divider>
@@ -1273,6 +1330,16 @@
                </el-form-item>
                <el-form-item label="工单数量:" class="formContent">
                  {{ formApprove.plan_qty }}
                </el-form-item>
                <el-form-item label="注塑机号:" class="formContent">
                  {{ formApprove.injectnumber }}
                </el-form-item>
                <el-form-item label="客户名称:" class="formContent">
                  {{ formApprove.customername }}
                </el-form-item>
                <el-form-item label="颜色:" class="formContent">
                  {{ formApprove.colour }}
                </el-form-item>
                <!--                <el-form-item label="工艺路线:" class="formContent">-->
                <!--                  {{ formApprove.routename }}-->
@@ -1981,15 +2048,16 @@
import {
  AddMesOrderCodeSearch,
  AddUpdateMesOrder, DeleteMesOrder,
  MesBadOrderSearch, MesOrderDistribution, MesOrderNewStepContent,
  MesBadOrderSearch, MesOrderDistribution, MesOrderExcelSearch, MesOrderNewStepContent,
  MesOrderSearch,
  UpdateMesOrderStepSearch
} from '@/api/WorkOrder'
import { PartSelect } from '@/api/ProductModel'
import { PrentOrganization, PrentOrganizationNoCompany, StepData } from '@/api/GeneralBasicData'
import { CustomerPermissions, 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'
import { GroupSalaryReportExcelSearch } from '@/api/ReportManager' // base on element-ui
export default {
  name: 'WorkOrderList',
@@ -2055,8 +2123,14 @@
        deliverydate: '', // 交付时间
        data_sources: '', // 数据来源
        injectnumber: '', // 注塑机号
        customercode: '', // 客户编码
        customername: '', // 客户名称
        colour: '', // 颜色
        mesmaxqty: 0// 工单的最大值
      },
      customerArr: [],
      ordertypeArr: [// 工单类型
        { code: 'PO', name: '标准工单' },
        { code: 'FO', name: '报废补单' }
@@ -2103,6 +2177,15 @@
        ],
        bomId: [
          { required: true, message: '请选择物料清单', trigger: ['blur', 'change'] }
        ],
        injectnumber: [
          { required: true, message: '请输入注塑机号', trigger: ['blur', 'change'] }
        ],
        customercode: [
          { required: true, message: '请选择客户', trigger: ['blur', 'change'] }
        ],
        colour: [
          { required: true, message: '请输入颜色', trigger: ['blur', 'change'] }
        ]
      },
@@ -2276,6 +2359,32 @@
    // })
  },
  methods: {
    async download() {
      // let tempDate = this.form.operdate
      // if (tempDate.length > 0) {
      //   tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
      // }
      const data = {
        wkshopcode: this.form.wkshopcode, // 车间编码
        mesorderstus: this.form.mesorderstus, // 工单状态码
        mesordercode: this.form.mesordercode, // 工单编号
        partcode: this.form.partcode, // 产品编码
        ordertype: this.form.ordertype, // ordertype
        sourceorder: this.form.sourceorder, // 源单单号
        saleordercode: this.form.saleordercode, // 销售订单
        partname: this.form.partname, // 产品名称
        partspec: this.form.partspec, // 产品规格
        creatuser: this.form.creatuser, // 创建人员
        createdate: this.form.createdate ? handleDatetime(this.form.createdate) : '' // 创建时间
      }
      const { data: res } = await MesOrderExcelSearch(data)
      window.location.href = res
    },
    async getCustomerPermissions() {
      const { data: res } = await CustomerPermissions()
      this.customerArr = res
    },
    setSort() {
      const el = this.$refs.stepTableDataRef.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0]
      this.sortable = Sortable.create(el, {
@@ -2304,6 +2413,7 @@
        if (res.code === '200') {
          this.getSelect()
          this.getPrentOrganizationNoCompany()
          this.getCustomerPermissions()
        }
      })
    },
@@ -2401,6 +2511,7 @@
      this.form.sourceorder = ''
      this.form.ordertype = ''
      this.form.createdate = ''
      this.form.saleordercode = ''
      this.getMesOrderSearch()
    },
    // 新增按钮
@@ -2504,6 +2615,10 @@
      this.dialogForm.deliverydate = row.saleOrderDeliveryDate.substring(0, 11)
      this.dialogForm.mesqty = row.plan_qty
      this.dialogForm.injectnumber = row.injectnumber
      this.dialogForm.customercode = row.customercode
      this.dialogForm.colour = row.colour
      const data = {
        sourceid: this.dialogForm.sourceorderid,
        sourcewo: this.dialogForm.sourceorder,
@@ -2601,7 +2716,11 @@
        wkshopname: '', // 生产车间名称
        deliverydate: '', // 交付时间
        data_sources: '' // 数据来源
        data_sources: '', // 数据来源
        injectnumber: '',
        customercode: '',
        colour: ''
      }
      this.stepSelectedValue = []
      this.stepTableData = []
@@ -2650,6 +2769,12 @@
            wkshopcode: this.dialogForm.wkshopcode,
            woqty: this.dialogForm.mesqty, // 工单数量
            deliverydate: this.dialogForm.deliverydate, // 交付时间
            injectnumber: this.dialogForm.injectnumber,
            customercode: this.dialogForm.customercode,
            customername: this.customerArr.find(i => i.code === this.dialogForm.customercode).name,
            colour: this.dialogForm.colour,
            data_sources: this.dialogForm.data_sources, // 数据来源
            isstep: workListSub.length > 0 ? 'Y' : 'N', //
            workListSub
@@ -2717,13 +2842,13 @@
      this.dialogVisibleSearch = false
    },
    // 处理打印
    handlePrint(wo_code) {
    handlePrint(row) {
      // const number = Math.random() * Math.random()
      // this.number = number === 0 ? (10 + Math.random()) : number
      // console.log(number)
      const data2 = {
        mesordercode: wo_code || this.dialogForm.mesordercode
        mesordercode: row.wo_code || this.dialogForm.mesordercode
      }
      MesOrderPrintSearch(data2).then(res2 => {
        if (res2.code === '200') {
@@ -2739,6 +2864,10 @@
          this.formApprove.routename = localStorage.getItem('username') // 打印人员
          this.formApprove.lm_date = res3[0].lm_date
          this.formApprove.injectnumber = row.injectnumber || '/'
          this.formApprove.customername = row.customername || '/'
          this.formApprove.colour = row.colour || '/'
          this.$nextTick(() => {
            res3.forEach(i => {
              this.bindQRCode(i.seq, i.stepqrcode, 'small')