YLouie
2025-09-28 32477dff99d0ed1d8acee453861be96428d8befc
src/views/plan/customerorder/index.vue
@@ -8,40 +8,26 @@
        :prelang="prelang"
        :options="options"
        :ajaxFun="ajaxFun"
        :toolbarMaxLength="4"
        :paramArr="type"
        ref="customerOrderTable"
      >
        <template #toolbar>
          <!-- <el-dropdown
            v-if="permissions.customerorder_state_change"
            @command="handleCommand"
          >
            <el-button>
              状态改变<i class="el-icon-arrow-down el-icon--right"></i>
            </el-button>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item
                :command="item.command"
                v-for="item in stateTagArr"
                :disabled="item.disabled">
                {{ item.label }}
              </el-dropdown-item>
            </el-dropdown-menu>
          </el-dropdown> -->
          <el-dropdown
            v-if="permissions.customerorder_doc_relate"
            @command="documentHandle"
            style="margin-left: 10px"
          >
            <el-button>
            <el-button style="padding: 9px 14px;">
              工艺文件<i class="el-icon-arrow-down el-icon--right"></i>
            </el-button>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item
                :key="index"
                :command="item.command"
                v-for="(item,index) in documentTagArr"
                :disabled="item.disabled">
                v-for="(item, index) in documentTagArr"
                :disabled="item.disabled"
              >
                {{ item.label }}
              </el-dropdown-item>
            </el-dropdown-menu>
@@ -52,48 +38,47 @@
            @command="handleCommitCommand"
            style="margin-left: 10px"
          >
            <el-button>
            <el-button style="padding: 9px 14px;">
              审核状态改变<i class="el-icon-arrow-down el-icon--right"></i>
            </el-button>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item
                :key="index"
                :command="item.command"
                v-for="(item,index) in commitStateTagArr"
                v-for="(item, index) in commitStateTagArr"
                :disabled="item.disabled"
                >{{ item.label }}</el-dropdown-item
              >
            </el-dropdown-menu>
          </el-dropdown>
          <!-- <el-button
            v-if="permissions.customerorder_push_otc"
            style="margin-left:10px;"
            type="primary"
            @click="pushOtc"
            >推送ERP</el-button
          > -->
          <!-- <el-button
            style="margin-left:10px;"
            type="primary"
            @click="importOutPutBatch"
            >导入产出批次</el-button
          > -->
          <el-button
            style="margin-left:10px;"
            style="margin-left: 10px;padding: 9px 14px;"
            type="primary"
            @click="()=>exportDialogVisible=true"
            @click="() => (exportDialogVisible = true)"
            >导出台账</el-button
          >
          <el-button
            v-if="permissions.plan_customerorder_return"
            style="margin-left:10px;"
            style="margin-left: 10px;padding: 9px 14px;"
            type="primary"
            @click="returnOrder"
            >订单退回</el-button
            v-if="permissions.plan_customerorder_check"
            @click="handleCheck"
            >审核</el-button
          >
          <el-button
            style="margin-left: 10px;padding: 9px 14px;"
            type="primary"
            v-if="permissions.plan_customerorder_check"
            @click="syncPLM"
            >同步PLM</el-button
          >
          <!-- <el-button
            style="margin-left: 10px"
            type="primary"
            @click="() => ($refs.technology.init())"
            >编写技术交底单</el-button
          > -->
        </template>
      </ttable>
      <!-- 弹窗, 日期选择 -->
      <ConfirmPullCustomerorder
        v-if="showPullCustomerOrderVisible"
@@ -157,7 +142,7 @@
          <div>
            <div>
              <el-upload
                style="margin-left:8px;display: inline;"
                style="margin-left: 8px; display: inline"
                class="upload-demo"
                drag
                :headers="headers"
@@ -178,7 +163,7 @@
                <div class="el-upload__tip" slot="tip">
                  只能上传xlsx/xls文件,且不超过10M<el-button
                    type="text"
                    style="font-size:12px;"
                    style="font-size: 12px"
                    @click="downDataTemplate"
                    >下载模板</el-button
                  >
@@ -191,25 +176,36 @@
        <span slot="footer" class="dialog-footer"> </span>
      </el-dialog>
      <!-- 导出 -->
      <el-dialog title="导出台账" :visible.sync="exportDialogVisible" width="20%">
        <div style="display: flex;justify-content: center">
          <el-form :model="dataForm" :inline="true" :rules="dataRule" ref="exportForm" class="l-mes">
      <el-dialog
        title="导出台账"
        :visible.sync="exportDialogVisible"
        width="20%"
      >
        <div style="display: flex; justify-content: center">
          <el-form
            :model="dataForm"
            :inline="true"
            :rules="dataRule"
            ref="exportForm"
            class="l-mes"
          >
            <el-form-item label="日期" prop="exportTime">
              <el-date-picker
                v-model="dataForm.exportTime"
                type="datetime"
                style="width:100%"
                style="width: 100%"
                placeholder="选择日期时间"
                value-format="yyyy-MM-dd HH:mm:ss">
                value-format="yyyy-MM-dd HH:mm:ss"
              >
              </el-date-picker>
            </el-form-item>
          </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="exportDialogVisible=false">取 消</el-button>
        <el-button type="primary" @click="exportStandBook">确 定</el-button>
      </span>
    </el-dialog>
        </div>
        <span slot="footer" class="dialog-footer">
          <el-button @click="exportDialogVisible = false">取 消</el-button>
          <el-button type="primary" @click="exportStandBook">确 定</el-button>
        </span>
      </el-dialog>
      <!-- 箱码信息导出 -->
      <el-dialog
        title="箱码信息导出"
@@ -222,7 +218,7 @@
          ref="packageExportForm"
          label-width="70px"
          class="l-mes"
          style="padding:0 20px"
          style="padding: 0 20px"
        >
          <el-form-item label="订单号">
            <el-input v-model="packageExport.form.customerOrderNo" disabled />
@@ -262,14 +258,21 @@
    </basic-container>
    <el-dialog title="选择同步日期" :visible.sync="syncDateVisible" width="20%">
      <div style="display: flex;justify-content: center">
        <el-form :model="dataForm" :inline="true" :rules="dataRule" ref="dataForm" class="l-mes">
      <div style="display: flex; justify-content: center">
        <el-form
          :model="dataForm"
          :inline="true"
          :rules="dataRule"
          ref="dataForm"
          class="l-mes"
        >
          <el-form-item label="日期">
            <el-date-picker
              v-model="dataForm.selectTime"
              type="datetime"
              placeholder="选择日期时间"
              value-format="yyyy-MM-dd HH:mm:ss">
              value-format="yyyy-MM-dd HH:mm:ss"
            >
            </el-date-picker>
          </el-form-item>
        </el-form>
@@ -279,12 +282,104 @@
        <el-button type="primary" @click="startSync">确 定</el-button>
      </span>
    </el-dialog>
    <el-dialog
      title="已关联销售订单"
      :visible.sync="showInterrelatedOrderDialog"
      width="60%"
    >
      <el-table border height="100" :data="interrelatedOrderData">
        <el-table-column
          type="index"
          align="center"
          label="序号"
        ></el-table-column>
        <el-table-column
          prop="contractNo"
          show-overflow-tooltip
          align="center"
          label="合同编号"
        ></el-table-column>
        <el-table-column
          prop="entityName"
          show-overflow-tooltip
          align="center"
          label="工程名称"
        ></el-table-column>
        <el-table-column
          prop="sourceId"
          show-overflow-tooltip
          align="center"
          label="添加来源"
        >
          <template scope="scope">
            <el-tag v-if="scope.row.sourceId == 0" type="success">同步</el-tag>
            <el-tag v-if="scope.row.sourceId == 1" type="info">手动</el-tag>
          </template>
        </el-table-column>
        <el-table-column
          prop="placeOrderDate"
          show-overflow-tooltip
          align="center"
          label="下单日期"
        ></el-table-column>
        <el-table-column
          prop="customerName"
          show-overflow-tooltip
          align="center"
          label="客户名称"
        ></el-table-column>
        <el-table-column
          prop="coState"
          min-width="100"
          show-overflow-tooltip
          align="center"
          label="销售订单状态"
        ></el-table-column>
        <el-table-column
          prop="partNo"
          show-overflow-tooltip
          align="center"
          label="产品编号"
        ></el-table-column>
        <el-table-column
          prop="productName"
          show-overflow-tooltip
          align="center"
          label="产品名称"
        ></el-table-column>
        <el-table-column
          prop="productType"
          show-overflow-tooltip
          align="center"
          label="隶属品牌"
        ></el-table-column>
        <el-table-column
          prop="otcUnit"
          show-overflow-tooltip
          align="center"
          label="单位"
        ></el-table-column>
        <el-table-column
          prop="buyQtyDue"
          show-overflow-tooltip
          align="center"
          label="数量"
        ></el-table-column>
      </el-table>
    </el-dialog>
    <technology-form ref="technology"></technology-form>
  </div>
</template>
<script>
import {
  interrelatedOrder,
  getInterrelatedOrder,
  checkHanderOrder
} from '@/api/plan/customerOrderInterrelated'
import ConfirmPullCustomerorder from './confirm-pull-customerorder'
import TableForm from './customerorder-form'
import TechnologyForm from './technology-form.vue'
import TableFormDEesc from './customerorder-form-desc'
import SampleTableForm from './sample-customerorder-form'
import { mapGetters } from 'vuex'
@@ -310,7 +405,10 @@
  exportCustomerOrder,
  exportCustomerOrderSplit,
  syncOrder,
  dropByContractNo
  dropByContractNo,
  downloadProduct,
  downloadWordFile,
  syncPlm
} from '../../../api/plan/customerorder'
import DocumentTable from '@/views/common/document.vue'
import { remote } from '@/api/admin/dict'
@@ -322,12 +420,19 @@
export default {
  data() {
    return {
      interrelatedOrderId: null,
      interrelatedOrderData: [],
      showInterrelatedOrderDialog: false,
      technologyDialog: true,
      uniqueStateArr: [],
      dataForm: {
        selectTime: null,
        exportTime: null
      },
      dataRule: {
        exportTime:[{required:true,message:'导出日期不能为空',trigger:'change'}]
        exportTime: [
          { required: true, message: '导出日期不能为空', trigger: 'change' }
        ]
      },
      pickerOptions: {
        onPick: ({ maxDate, minDate }) => {
@@ -436,8 +541,9 @@
        isRefresh: true, // 是否显示刷新按钮
        isShowHide: true, // 是否显示显影按钮H
        isSearch: true, // 高级查询按钮
        defaultOrderBy: { column: 'createTime', direction: 'desc' },
        cancelRunCreated: true
        defaultOrderBy: { column: 'placeOrderDate', direction: 'desc' },
        cancelRunCreated: true,
        reserveSelection: true // 是否保留之前选择的数据
      },
      table: {
        total: 0,
@@ -475,7 +581,7 @@
            searchInfoType: 'text'
          },
          {
            minWidth: '120',
            minWidth: '100',
            prop: 'sourceId',
            label: '添加来源',
            isTag: true,
@@ -505,7 +611,7 @@
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text',
            searchInfoType: 'datetimerange',
            formatter: this.formatDutyDate
          },
          {
@@ -533,7 +639,7 @@
          {
            minWidth: '120',
            prop: 'isAudit',
            label: '审核状态',
            label: 'PLM审核状态',
            sort: true,
            isTrue: true,
            isSearch: true,
@@ -543,15 +649,32 @@
              return this.isAuditList
            }
          },
          // {
          //   minWidth: '80',
          //   prop: 'sourceId',
          //   label: '订单来源',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          {
            minWidth: '120',
            prop: 'isPass',
            label: '审核通过状态',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'select',
            formatter: this.checkIsPass,
            optList: () => {
              return this.isPassList
            }
          },
          {
            minWidth: '120',
            prop: 'isOa',
            label: '是否提交oa',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'select',
            formatter: this.checkIsOa,
            optList: () => {
              return this.isOaList
            }
          },
          {
            minWidth: '120',
            width: '100px',
@@ -668,7 +791,7 @@
            isSearch: true,
            searchInfoType: 'datetimerange',
            formatter: this.formatDutyDate
          },
          }
        ],
        toolbar: [],
        operator: [
@@ -690,8 +813,27 @@
          //   size: 'small',
          //   fun: this.packageExportHandle
          // },
          //   {
          //     text: '审核',
          //     type: 'text',
          //     size: 'small',
          //     fun: this.checkHandOrder,
          //     showFun: (row) => {
          //       return row.sourceId === '1'
          //     },
          //     show: {
          //       val: [false],
          //       key: 'isPass',
          //     },
          //   },
          {
            text: '作废',
            text: '已关联订单',
            type: 'text',
            size: 'small',
            fun: this.showInterrelatedOrder
          },
          {
            text: '删除',
            type: 'text',
            size: 'small',
            fun: this.cancelHandle,
@@ -709,8 +851,8 @@
        operatorConfig: {
          fixed: 'right',
          label: '操作',
          width: 100,
          minWidth: 100
          width: 200,
          minWidth: 200
        }
      },
      addOrUpdateVisible: false,
@@ -740,16 +882,20 @@
          label: '订单编辑'
        }
      ],
      manufactureAttrList: [{
        label: '普通',
        value: 'N'
      },{
        label: '样品',
        value: 'S'
      },{
        label: '研发',
        value: 'D'
      }],
      manufactureAttrList: [
        {
          label: '普通',
          value: 'N'
        },
        {
          label: '样品',
          value: 'S'
        },
        {
          label: '研发',
          value: 'D'
        }
      ],
      isAuditList: [
        {
          value: '01draft',
@@ -768,13 +914,16 @@
          label: '退回'
        }
      ],
      sourceIdList: [{
        label: '同步',
        value: '0'
      },{
        label: '手动',
        value: '1'
      }],
      sourceIdList: [
        {
          label: '同步',
          value: '0'
        },
        {
          label: '手动',
          value: '1'
        }
      ],
      stockVisible: false,
      partName: null,
      showPullCustomerOrderVisible: false,
@@ -816,7 +965,15 @@
        }
      ],
      showSalesPartBatch: false,
      addOrUpdateEescVisible: false
      addOrUpdateEescVisible: false,
      isPassList: [
        { label: '未通过', value: false },
        { label: '通过', value: true }
      ],
      isOaList: [
        { label: '未提交', value: false },
        { label: '已提交', value: true }
      ]
    }
  },
  components: {
@@ -830,7 +987,8 @@
    SampleTableForm,
    SalesPartBatchDialog,
    TableFormDEesc,
    CustomerorderReturnDialog
    CustomerorderReturnDialog,
    TechnologyForm
  },
  computed: {
    ...mapGetters(['permissions'])
@@ -848,6 +1006,19 @@
        }
      },
      immediate: true
    },
    interrelatedOrderId(newVal) {
      if (newVal) {
        getInterrelatedOrder(newVal)
          .then((res) => {
            if (res.status === 200) {
              this.interrelatedOrderData = res.data.data
            }
          })
          .catch((error) => {
            console.error(error)
          })
      }
    }
  },
  mounted() {
@@ -856,51 +1027,15 @@
  created() {
    // this.getManufactureAttrs()
    this.getTitles()
    /**
     * {
            text: '获取销售订单',
            type: 'primary',
            fun: this.pullCustomerOrder,
            disabled: false,
            permitArr: []
          },
          {
            text: '获取IFS行号',
            type: 'primary',
            fun: this.pullIfsLineNo,
            disabled: false,
            permitArr: [],
            loading: false
          },
          {
            text: '提交审核',
            type: 'primary',
            fun: this.auditCustomerOrder,
            disabled: false,
            permitArr: [],
            loading: false
          },
          {
            text: '主生产计划',
            disabled: false,
            fun: this.masterPlanHandle
          }
     */
    this.table.toolbar.push({
      text: '新增销售订单',
      type: 'primary',
      fun: this.addSampleCustomerOrder,
      disabled: false,
      permitArr: []
    })
    // this.table.toolbar.push({
    //   text: '同步ERP',
    //   type: 'primary',
    //   fun: this.syncERP,
    //   loading: false,
    //   disabled: false,
    //   permitArr: []
    // })
    if (this.permissions.plan_customerorder_add) {
      this.table.toolbar.push({
        text: '新增销售订单',
        type: 'primary',
        fun: this.addSampleCustomerOrder,
        disabled: false,
        permitArr: []
      })
    }
    if (this.permissions.customerorder_from_otc) {
      this.table.toolbar.push({
        text: '获取销售订单',
@@ -910,19 +1045,9 @@
        permitArr: []
      })
    }
    // if (this.permissions.customerorder_ifs_line) {
    //   this.table.toolbar.push({
    //     text: '获取ERP行号',
    //     type: 'primary',
    //     fun: this.pullIfsLineNo,
    //     disabled: false,
    //     permitArr: [],
    //     loading: false
    //   })
    // }
    if (this.permissions.customerorder_submit_oa) {
      this.table.toolbar.push({
        text: '提交审核',
        text: '提交OA',
        type: 'primary',
        fun: this.auditCustomerOrder,
        disabled: false,
@@ -935,18 +1060,147 @@
        text: '设置销售件',
        type: 'primary',
        fun: this.setSalesPart,
        disabled: false
        disabled: false,
        permitArr: []
      })
    }
    if (this.permissions.plan_download_process_file) {
      this.table.toolbar.push({
        text: '下载工艺文件',
        disabled: false,
        type: 'primary',
        fun: this.downloadWord,
        permitArr: ['03plan', '04planed']
      })
    }
    if (this.permissions.plan_download_product_file) {
      this.table.toolbar.push({
        text: '下载排产单',
        disabled: false,
        type: 'primary',
        permitArr: [],
        fun: this.downloadProductionScheduling
      })
    }
    if (this.permissions.plan_relevance_order) {
      this.table.toolbar.push({
        text: '关联订单',
        disabled: false,
        type: 'primary',
        fun: this.interrelatedOrderFun,
        permitArr: []
      })
    }
    if (this.permissions.customerorder_create_masterplan) {
      this.table.toolbar.push({
        text: '主生产计划',
        disabled: false,
        fun: this.masterPlanHandle
        fun: this.masterPlanHandle,
        permitArr: []
      })
    }
  },
  methods: {
    checkHandOrder(val) {
      this.$confirm('确认审核通过该销售订单吗?', '提示', {
        confirmButtonText: '通过',
        cancelButtonText: '取消',
        type: 'warning'
      })
        .then(() => {
          checkHanderOrder(val)
            .then((res) => {
              if (res.status === 200) {
                this.$message.success('审核通过')
                this.getData()
              }
            })
            .catch((error) => {
              console.error(error)
            })
        })
        .catch(() => {})
    },
    interrelatedOrderFun() {
      if (this.multipleSelection.length != 2) {
        this.$message.error('请选择两条销售订单')
        return
      }
      let autoId = null
      let handId = null
      this.multipleSelection.forEach((ele) => {
        if (ele.sourceId == 0) {
          autoId = ele.id
        } else if (ele.sourceId == 1) {
          handId = ele.id
        }
      })
      if (autoId == null || handId == null) {
        this.$message.error('添加来源须为手动和同步')
        return
      }
      interrelatedOrder({
        customerOrderAutoId: autoId,
        customerOrderHandId: handId
      })
        .then((res) => {
          if (res.status === 200) {
            this.$message.success('关联成功')
          }
        })
        .catch((error) => {
          console.error(error)
        })
    },
    // 展示已关联订单
    showInterrelatedOrder(currentOrder) {
      this.interrelatedOrderId = currentOrder.id
      this.showInterrelatedOrderDialog = true
    },
    // 下载排产通知单
    downloadProductionScheduling() {
      const ids = this.multipleSelection.map((obj) => obj.id)
      if (ids.length < 1) {
        this.$message.error('请选择一条数据')
        return
      }
      downloadProduct(ids)
        .then((res) => {
          if (res.status === 200) {
            transform(res)
          }
        })
        .catch((error) => {
          console.error(error)
        })
    },
    // 下载工艺文件
    downloadWord() {
      const ids = this.multipleSelection.map((ele) => ele.id)
      if (ids.length < 1) {
        this.$message.error('请选择一条数据')
        return
      }
      downloadWordFile(ids)
        .then((response) => {
          // 处理返回的文件流
          const blob = response.data
          const link = document.createElement('a')
          link.href = URL.createObjectURL(blob)
          const disposition = response.headers['content-disposition']
          const temp = disposition.substring(disposition.lastIndexOf('=') + 1)
          link.download = decodeURI(temp)
          document.body.appendChild(link)
          link.click()
          window.setTimeout(function() {
            URL.revokeObjectURL(blob)
            document.body.removeChild(link)
          }, 0)
        })
        .catch((error) => {
          console.error(error)
        })
    },
    getOtcPartSyncOptionList() {
      return this.otcPartSyncOptionList
    },
@@ -964,8 +1218,9 @@
      this.getData()
    },
    getData() {
      this.$refs.customerOrderTable.getDataList()
    async getData() {
      await this.$refs.customerOrderTable.getDataList()
      this.$refs.customerOrderTable.toggleRowExpansion()
    },
    // 获取数据列表去除已完成状态的
    handleDataList(command) {
@@ -976,8 +1231,6 @@
    },
    // 创建主生产计划
    masterPlanHandle() {
      console.log(this.multipleSelection);
      if (this.multipleSelection && this.multipleSelection.length > 0) {
        if (this.judgeCoState(this.multipleSelection)) {
          // 判断一下剩余数量是否大于0
@@ -1013,6 +1266,18 @@
        this.$message.error('请选择销售订单')
      }
    },
    checkIsPass(row, column, cellValue) {
      this.isPassList.forEach((obj) => {
        if (obj.value === cellValue) {
          if (obj.value) {
            cellValue = "<span style='color:#34BD66;'>" + obj.label + '</span>'
          } else {
            cellValue = "<span style='color:#E84738;'>" + obj.label + '</span>'
          }
        }
      })
      return cellValue
    },
    formatDutyDate(row, column, cellValue) {
      if (cellValue) {
        const dutyDateList = /\d{4}-\d{1,2}-\d{1,2}/g.exec(cellValue)
@@ -1024,16 +1289,23 @@
    },
    // 新增 / 修改
    addOrUpdateHandle(row) {
      this.addOrUpdateVisible = true
      this.$nextTick(() => {
        this.$refs.addOrUpdate.init(row ? row.id : row)
      })
      if (row.isPass) {
        this.addOrUpdateVisible = true
        this.$nextTick(() => {
          this.$refs.addOrUpdate.init(row ? row.id : row)
        })
      } else {
        this.addSampleVisible = true
        this.$nextTick(() => {
          this.$refs.addSampleForm.init(row ? row.contractNo : null)
        })
      }
    },
    // 新增样品订单
    addSampleCustomerOrder() {
      this.addSampleVisible = true
      this.$nextTick(() => {
        this.$refs.addSampleForm.init(0)
        this.$refs.addSampleForm.init(null)
      })
    },
    // 打开日期选择框
@@ -1090,46 +1362,34 @@
    // 审核销售订单
    auditCustomerOrder() {
      if (this.multipleSelection.length > 0) {
        if (this.judgeCoState(this.multipleSelection)) {
          let flag = true
          const ids = []
          this.multipleSelection.forEach((item) => {
            if (item.partNo != null && item.partNo !== '') {
              ids.push(item.id)
            } else {
              flag = false
            }
          })
          if (flag) {
            checkOA(this.multipleSelection.map((e) => e.id)).then((res) => {
              console.log(res)
              if (!res.data.data.success) {
                this.$confirm(`${res.data.data.message}`, '提示', {
                  confirmButtonText: '确定',
                  cancelButtonText: '取消',
                  closeOnClickModal: false,
                  type: 'warning'
                }).then(() => {
                  this.auditCustomerOrderSure(ids)
                })
              } else {
        let flag = true
        const ids = []
        this.multipleSelection.forEach((item) => {
          if (item.partNo != null && item.partNo !== '') {
            ids.push(item.id)
          } else {
            flag = false
          }
        })
        if (flag) {
          checkOA(this.multipleSelection.map((e) => e.id))
            .then((res) => {
              if (res.data.data.success) {
                this.auditCustomerOrderSure(ids)
              }
            })
          } else {
            this.$message.error('存在销售订单未绑定销售件!')
          }
            .catch((error) => {
              this.$message.error(error.message)
            })
        } else {
          this.$message.error('销售订单审核状态为作废,不可进行操作!')
          this.$message.error('存在销售订单未绑定零件号!')
        }
      } else {
        this.$message.error('请先勾选销售订单!')
      }
    },
    auditCustomerOrderSure(ids) {
      const toolbar = this.table.toolbar.find(
        (item) => item.text === '提交审核'
      )
      const toolbar = this.table.toolbar.find((item) => item.text === '提交OA')
      if (toolbar) {
        toolbar.loading = true
        auditCustomerOrder(ids)
@@ -1139,7 +1399,7 @@
              this.$message.success(resData.msg)
              this.getData()
            } else {
              this.$message.error('提交审核失败!')
              this.$message.error('提交OA失败!')
            }
            toolbar.loading = false
          })
@@ -1151,7 +1411,6 @@
    // 箱码信息导出
    packageExportHandle(row) {
      console.log(row.otcQuantity)
      if (row.otcQuantity) {
        this.packageExport.visible = true
        this.packageExport.form = {
@@ -1188,13 +1447,13 @@
    },
    // 作废
    cancelHandle(row) {
      this.$confirm('确认作废销售订单号为【' + row.contractNo + '】的数据?','提示' , {
      this.$confirm('确认作废id为【' + row.id + '】的数据?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        closeOnClickModal: false,
        type: 'warning'
      }).then(() => {
        dropByContractNo({contractNo:row.contractNo}).then((res) => {
        dropByContractNo({ id: row.id }).then((res) => {
          if (res.data.code === 0) {
            this.$message.success('作废成功')
            this.getData()
@@ -1267,6 +1526,21 @@
          this.stateTagArr[i].disabled = true
        }
      }
      // 循环表头按钮,判断每个按钮的permitArr是否完全包含选中状态,若完全包含,则按钮亮,否则按钮灰
      var toolbar = this.table.toolbar
      for (var j = 0; j < toolbar.length; j++) {
        if (
          uniqueStateArr.every((val) =>
            toolbar[j].permitArr.length <= 0
              ? true
              : toolbar[j].permitArr.includes(val)
          )
        ) {
          toolbar[j].disabled = false
        } else {
          toolbar[j].disabled = true
        }
      }
      this.multipleSelection = val
    },
    getCustomerCoState(row, column, cellValue) {
@@ -1313,6 +1587,14 @@
    },
    getIsAudit(row, column, cellValue) {
      this.isAuditList.forEach((obj) => {
        if (obj.value === cellValue) {
          cellValue = obj.label
        }
      })
      return cellValue
    },
    checkIsOa(row, column, cellValue) {
      this.isOaList.forEach((obj) => {
        if (obj.value === cellValue) {
          cellValue = obj.label
        }
@@ -1442,6 +1724,10 @@
      } else {
        if (this.judgeCoState(this.multipleSelection)) {
          if (event == 'RELEVANCE') {
            if (!this.multipleSelection[0].isPass) {
              this.$message.error('请先审核通过,再关联工艺文件')
              return
            }
            const firstPartNo = this.multipleSelection[0].partNo
            this.multipleSelection.forEach((item) => {
              if (item.isDocument) {
@@ -1580,7 +1866,6 @@
    },
    // 导出台账
    exportStandBook() {
      // console.log(this.$refs.customerOrderTable.getQueryParam(),"SSS")
      // if (this.multipleSelection.length > 0) {
      //   let ids = ''
      //   this.multipleSelection.forEach((item) => {
@@ -1605,10 +1890,10 @@
      // } else {
      //   this.$message.error('请选择至少一条销售订单')
      // }
      this.$refs['exportForm'].validate(valid => {
        if(valid){
      this.$refs.exportForm.validate((valid) => {
        if (valid) {
          const exportTime = this.dataForm.exportTime
          let queryParam=this.$refs.customerOrderTable.getQueryParam();
          const queryParam = this.$refs.customerOrderTable.getQueryParam()
          queryParam.selectTime = exportTime
          exportCustomerOrder(queryParam)
            .then((response) => {
@@ -1678,6 +1963,70 @@
        ).loading = false
        this.$message.error('请先选择日期')
      }
    },
    handleCheck() {
      if (this.multipleSelection.length > 0) {
        for (let i = 0; i < this.multipleSelection.length; i++) {
          if (this.multipleSelection[i].sourceId == 0) {
            this.$message.error('请选择手动输入的销售订单')
            return
          }
          if (this.multipleSelection[i].isPass) {
            this.$message.error('请选择未审核通过的销售订单')
            return
          }
        }
        this.$confirm('确认审核通过选中的销售订单吗?', '提示', {
          confirmButtonText: '通过',
          cancelButtonText: '取消',
          type: 'warning'
        })
          .then(() => {
            checkHanderOrder(this.multipleSelection)
              .then((res) => {
                if (res.status === 200) {
                  this.$message.success('审核通过')
                  this.getData()
                }
              })
              .catch((error) => {
                console.error(error)
              })
          })
          .catch(() => {})
      } else {
        this.$message.error('请选择至少一条销售订单')
      }
    },
    syncPLM() {
      if (this.multipleSelection.length > 0) {
        this.$confirm('确认同步选中的销售订单吗?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        })
          .then(() => {
            syncPlm(
              this.multipleSelection.map((item) => ({
                id: item.id, // 传递id字段
                partNo: item.partNo // 传递partNo字段
              }))
            )
              .then((res) => {
                if (res.status === 200) {
                  this.$message.success('同步成功')
                  this.getData()
                }
              })
              .catch((error) => {
                console.error(error)
              })
          })
          .catch(() => {})
      } else {
        this.$message.error('请选择至少一条销售订单')
      }
    }
  }
}