zouyu
2024-03-06 aa8684dfcf2ddbbadbd045770ff540e64c26bbee
src/views/plan/customerorder/index.vue
@@ -8,26 +8,11 @@
        :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"
@@ -38,10 +23,10 @@
            </el-button>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item
                :key="index"
                :command="item.command"
                v-for="item in documentTagArr"
                :disabled="item.disabled"
              >
                v-for="(item,index) in documentTagArr"
                :disabled="item.disabled">
                {{ item.label }}
              </el-dropdown-item>
            </el-dropdown-menu>
@@ -57,42 +42,21 @@
            </el-button>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item
                :key="index"
                :command="item.command"
                v-for="item 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;"
            type="primary"
            @click="exportStandBook"
            >导出台账</el-button
          >
          <el-button
            v-if="permissions.plan_customerorder_return"
            style="margin-left:10px;"
            type="primary"
            @click="returnOrder"
            >订单退回</el-button
          >
            @click="()=>exportDialogVisible=true"
            >导出台账</el-button>
        </template>
      </ttable>
      <!-- 弹窗, 日期选择 -->
      <ConfirmPullCustomerorder
        v-if="showPullCustomerOrderVisible"
@@ -189,6 +153,26 @@
        </span>
        <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-form-item label="日期" prop="exportTime">
              <el-date-picker
                v-model="dataForm.exportTime"
                type="datetime"
                style="width:100%"
                placeholder="选择日期时间"
                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>
      <!-- 箱码信息导出 -->
      <el-dialog
        title="箱码信息导出"
@@ -240,28 +224,53 @@
      </el-dialog>
    </basic-container>
    <el-dialog title="选择同步日期" :visible.sync="syncDateVisible" width="30%">
    <el-dialog title="选择同步日期" :visible.sync="syncDateVisible" width="20%">
      <div style="display: flex;justify-content: center">
        <el-date-picker
          v-model="syncDate"
          type="daterange"
          value-format="yyyy-MM-dd"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          :picker-options="pickerOptions"
        >
        </el-date-picker>
        <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">
            </el-date-picker>
          </el-form-item>
        </el-form>
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="syncDateVisible = false">取 消</el-button>
        <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>
  </div>
</template>
<script>
import {interrelatedOrder,getInterrelatedOrder,checkHanderOrder} from '@/api/plan/customerOrderInterrelated'
import ConfirmPullCustomerorder from './confirm-pull-customerorder'
import TableForm from './customerorder-form'
import TableFormDEesc from './customerorder-form-desc'
@@ -273,6 +282,7 @@
import MpsRequirements from './mps-requirements'
import SalesPartBatchDialog from './sales-part-batch.vue'
import CustomerorderReturnDialog from './customerorder-return.vue'
import { otcCustomerOrderSync } from '@/api/plan/customerorder'
import {
  delCustomerOrder,
  fetchListCustomerOrder,
@@ -288,7 +298,9 @@
  exportCustomerOrder,
  exportCustomerOrderSplit,
  syncOrder,
  dropByContractNo
  dropByContractNo,
  downloadProduct,
  downloadWordFile
} from '../../../api/plan/customerorder'
import DocumentTable from '@/views/common/document.vue'
import { remote } from '@/api/admin/dict'
@@ -300,6 +312,17 @@
export default {
  data() {
    return {
      interrelatedOrderId: null,
      interrelatedOrderData: [],
      showInterrelatedOrderDialog: false,
      uniqueStateArr: [],
      dataForm: {
        selectTime: null,
        exportTime: null
      },
      dataRule: {
        exportTime:[{required:true,message:'导出日期不能为空',trigger:'change'}]
      },
      pickerOptions: {
        onPick: ({ maxDate, minDate }) => {
          if (minDate && this.pickerMinDate) {
@@ -318,6 +341,7 @@
          return false
        }
      },
      exportDialogVisible: false,
      syncDateVisible: false,
      syncDate: [],
      showCustomerorderReturn: false,
@@ -406,7 +430,7 @@
        isRefresh: true, // 是否显示刷新按钮
        isShowHide: true, // 是否显示显影按钮H
        isSearch: true, // 高级查询按钮
        defaultOrderBy: { column: 'createTime', direction: 'desc' },
        defaultOrderBy: { column: 'placeOrderDate', direction: 'desc' },
        cancelRunCreated: true
      },
      table: {
@@ -419,9 +443,8 @@
          {
            minWidth: '100',
            width: '100px',
            prop: 'customerOrderNo',
            prop: 'contractNo',
            label: '合同编号',
            // label: '订单号',
            sort: true,
            isTrue: true,
            isSearch: true,
@@ -431,8 +454,7 @@
          {
            minWidth: '120',
            prop: 'entityName',
            label: '合同主题',
            sort: false,
            label: '工程名称',
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
@@ -445,6 +467,19 @@
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '100',
            prop: 'sourceId',
            label: '添加来源',
            isTag: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'select',
            formatter: this.getSourceId,
            optList: () => {
              return this.sourceIdList
            }
          },
          {
            minWidth: '200',
@@ -460,42 +495,13 @@
          {
            minWidth: '120',
            prop: 'placeOrderDate',
            label: '签订日期',
            label: '下单日期',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text',
            formatter: this.formatDutyDate
          },
          {
            minWidth: '120',
            prop: 'factoryPlaceOrderDate',
            label: '开始日期',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text',
            formatter: this.formatDutyDate
          },
          {
            minWidth: '120',
            prop: 'endTime',
            label: '终止日期',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text',
            formatter: this.formatDutyDate
          },
          // {
          //   minWidth: '120',
          //   prop: 'customerNo',
          //   label: '客户编号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          {
            minWidth: '120',
            prop: 'customerName',
@@ -505,16 +511,6 @@
            isSearch: true,
            searchInfoType: 'text'
          },
          // {
          //   minWidth: '120',
          //   prop: 'customerContractNo',
          //   label: '客户订单号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          {
            minWidth: '120',
            prop: 'coState',
@@ -531,7 +527,7 @@
          {
            minWidth: '120',
            prop: 'isAudit',
            label: '审核状态',
            label: 'PLM审核状态',
            sort: true,
            isTrue: true,
            isSearch: true,
@@ -542,107 +538,23 @@
            }
          },
          {
            minWidth: '80',
            prop: 'ifsDeliveryNo',
            label: '合同分类',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '80',
            prop: 'ifsLineItemNo',
            label: '合同来源',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '80',
            prop: 'returnStatus',
            label: '合同状态',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '80',
            prop: 'originalContractStatus',
            label: '出库状态',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '120',
            prop: 'ifsSalesUnit',
            label: '启用状态',
            prop: 'isPass',
            label: '审核通过状态',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
            searchInfoType: 'select',
            formatter: this.checkIsPass,
            optList: () => {
                return this.isPassList
            }
          },
          // {
          //   minWidth: '120',
          //   prop: 'coLineNo',
          //   label: 'GSM行号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          // {
          //   minWidth: '120',
          //   prop: 'otcLineNo',
          //   label: 'OTC行号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          // // 状态
          // {
          //   minWidth: '120',
          //   prop: 'otcPartSync',
          //   label: 'OTC推送状态',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'select',
          //   optList: () => {
          //     return this.getOtcPartSyncOptionList()
          //   },
          //   formatter: (row, column, cellValue) => {
          //     var formatVal
          //     if (cellValue == null) {
          //       formatVal = ''
          //     } else if (cellValue) {
          //       formatVal = '已同步'
          //     } else {
          //       formatVal = '未同步'
          //     }
          //     return formatVal
          //   }
          // },
          // {
          //   minWidth: '120',
          //   prop: 'verifyDate',
          //   label: 'OTC审核时间',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'datetimerange'
          // },
          {
            minWidth: '120',
            width: '100px',
            prop: 'partNo',
            label: '零件号',
            label: '产品编号',
            sort: true,
            isTrue: true,
            isSearch: true,
@@ -651,8 +563,8 @@
          {
            minWidth: '120',
            width: '100px',
            prop: 'customerPartName',
            label: '零件名称',
            prop: 'productName',
            label: '产品名称',
            sort: true,
            isTrue: true,
            isSearch: true,
@@ -662,7 +574,7 @@
            minWidth: '120',
            width: '100px',
            prop: 'productType',
            label: '型号',
            label: '隶属品牌',
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
@@ -671,7 +583,7 @@
            minWidth: '120',
            width: '100px',
            prop: 'otcUnit',
            label: '零件属性',
            label: '单位',
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
@@ -688,45 +600,8 @@
          },
          {
            minWidth: '120',
            width: '100px',
            prop: 'outerColor',
            label: '外护颜色',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '120',
            prop: 'otcQuantity',
            label: '销售数量',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '80',
            prop: 'otcUnit',
            label: '销售单位',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '120',
            prop: 'buyQtyDue',
            label: '库存数量',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '80',
            prop: 'unit',
            label: '零件单位',
            label: '数量',
            sort: true,
            isTrue: true,
            isSearch: true,
@@ -734,253 +609,6 @@
          },
          {
            minWidth: '140',
            prop: 'requireNumber',
            label: '已下发数量',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'customerPartSpec',
            label: '客户零件规格',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'finalCustomerName',
            label: '最终客户名称',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'productGroup',
            label: '产品分组',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'productType',
            label: '产品类型',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'centralizedMiningProperty',
            label: '采集性质',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'orderDescription',
            label: '订单说明',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'division',
            label: '事业部',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'printType',
            label: '印字方式',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'printingRequirements',
            label: '印字要求',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'printContent',
            label: '印字内容',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'packageRequire',
            label: '包装要求',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'qualityRequire',
            label: '质量要求',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'otherProductRequire',
            label: '生产需求说明',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'divisionSystem',
            label: '系统',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'shippingAddress',
            label: '收货地址',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'salesmanName',
            label: '业务员',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'lengthRequirement',
            label: '盘长要求',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'remark',
            label: '订单行备注',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'comment',
            label: '订单头备注',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          // {
          //   minWidth: '80',
          //   prop: 'ifsLineNo',
          //   label: 'IFS行号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          // {
          //   minWidth: '80',
          //   prop: 'ifsDeliveryNo',
          //   label: 'IFS交货号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          // {
          //   minWidth: '80',
          //   prop: 'ifsLineItemNo',
          //   label: 'IFS行项号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          {
            minWidth: '80',
            prop: 'salesPartNo',
            label: '销售件号',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '80',
            prop: 'salesPartName',
            label: '销售件描述',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            width: '120',
            prop: 'wantedDeliveryDate',
            label: '期望交货时间',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'datetimerange',
            formatter: this.formatDutyDate
          },
          {
            minWidth: '200',
            width: '120',
            prop: 'plannedDeliveryDate',
            label: '计划交货时间',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'datetimerange',
            formatter: this.formatDutyDate
          },
          {
            minWidth: '120',
            prop: 'manufactureAttr',
            label: '制造属性',
            sort: true,
@@ -989,43 +617,98 @@
            searchInfoType: 'select',
            formatter: this.getManufactureAttr,
            optList: () => {
              return this.manufactureAttrs
              return this.manufactureAttrList
            }
          }
          // {
          //   minWidth: '200',
          //   width: '120',
          //   prop: 'createTime',
          //   label: '创建时间',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'datetimerange',
          //   formatter: this.formatDutyDate
          // }
          },
          {
            minWidth: '140',
            prop: 'customerPartSpec',
            label: '规格型号',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'returnStatus',
            label: '合同正本状态',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'originalContractStatus',
            label: '正本状态',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            prop: 'salesMan',
            label: '业务员',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '140',
            width: '120',
            prop: 'deliveryDate',
            label: '交货时间',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'datetimerange',
            formatter: this.formatDutyDate
          },
        ],
        toolbar: [],
        operator: [
          // {
          //   text: '订单说明',
          //   type: 'text',
          //   size: 'small',
          //   fun: this.openCustomerOrder
          // },
          // {
          //   text: '查看库存',
          //   type: 'text',
          //   size: 'small',
          //   fun: this.stockHandle
          // },
          // {
          //   text: '箱码信息导出',
          //   type: 'text',
          //   size: 'small',
          //   fun: this.packageExportHandle
          // },
          {
            text: '订单说明',
            text: '审核',
            type: 'text',
            size: 'small',
            fun: this.openCustomerOrder
            fun: this.checkHandOrder,
            showFun: (row)=>{return row.sourceId==='1'},
            show: {
              val: [
                false,
              ],
              key: 'isPass'
            }
          },
          {
            text: '查看库存',
            text: '已关联订单',
            type: 'text',
            size: 'small',
            fun: this.stockHandle
            fun: this.showInterrelatedOrder,
          },
          {
            text: '箱码信息导出',
            type: 'text',
            size: 'small',
            fun: this.packageExportHandle
          },
          {
            text: '作废',
            text: '删除',
            type: 'text',
            size: 'small',
            fun: this.cancelHandle,
@@ -1043,8 +726,8 @@
        operatorConfig: {
          fixed: 'right',
          label: '操作',
          width: 260,
          minWidth: 100
          width: 200,
          minWidth: 200
        }
      },
      addOrUpdateVisible: false,
@@ -1074,6 +757,16 @@
          label: '订单编辑'
        }
      ],
      manufactureAttrList: [{
        label: '普通',
        value: 'N'
      },{
        label: '样品',
        value: 'S'
      },{
        label: '研发',
        value: 'D'
      }],
      isAuditList: [
        {
          value: '01draft',
@@ -1092,6 +785,13 @@
          label: '退回'
        }
      ],
      sourceIdList: [{
        label: '同步',
        value: "0"
      },{
        label: '手动',
        value: "1"
      }],
      stockVisible: false,
      partName: null,
      showPullCustomerOrderVisible: false,
@@ -1133,7 +833,8 @@
        }
      ],
      showSalesPartBatch: false,
      addOrUpdateEescVisible: false
      addOrUpdateEescVisible: false,
      isPassList: [{label:'未通过',value: false},{label: '通过',value: true}]
    }
  },
  components: {
@@ -1153,6 +854,11 @@
    ...mapGetters(['permissions'])
  },
  watch: {
    exportDialogVisible(newVal) {
      if (!newVal) {
        this.$refs.exportForm.resetFields()
      }
    },
    coState: {
      handler(newValue, oldValue) {
        if (newValue) {
@@ -1160,44 +866,25 @@
        }
      },
      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() {
    this.initQueryParams()
  },
  created() {
    this.getManufactureAttrs()
    // 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',
@@ -1205,14 +892,6 @@
      disabled: false,
      permitArr: []
    })
    // this.table.toolbar.push({
    //   text: '同步ERP',
    //   type: 'primary',
    //   fun: this.syncERP,
    //   loading: false,
    //   disabled: false,
    //   permitArr: []
    // })
    if (this.permissions.customerorder_from_otc) {
      this.table.toolbar.push({
        text: '获取销售订单',
@@ -1220,16 +899,6 @@
        fun: this.syncERP,
        disabled: false,
        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) {
@@ -1247,18 +916,131 @@
        text: '设置销售件',
        type: 'primary',
        fun: this.setSalesPart,
        disabled: false
        disabled: false,
        permitArr: []
      })
    }
    this.table.toolbar.push({
        text: '下载工艺文件',
        disabled: false,
        type: 'primary',
        fun: this.downloadWord,
        permitArr: ['03plan','04planed'],
    })
    this.table.toolbar.push({
        text: '下载排产单',
        disabled: false,
        type: 'primary',
        permitArr: [],
        fun: this.downloadProductionScheduling,
    })
    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(){
        let ids = this.multipleSelection.map(obj => obj.id)
        if(ids.length<1){
            this.$message.error("请选择一条数据")
            return
        }
        downloadProduct({ids: ids}).then(res=>{
            if(res.status===200){
                transform(res)
            }
        }).catch(error=>{
            console.error(error)
        })
    },
    //下载工艺文件
    downloadWord(){
        let 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"]
          let 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
    },
@@ -1267,9 +1049,9 @@
      queryParam.push(
        Object.assign({
          prop: 'coState',
          searchInfoType: 'select',
          searchInfoType: 'select'
          // propVal: '01partUnCheck'
          propVal: '02technologyUnCheck'
          // propVal: '02technologyUnCheck'
        })
      )
      this.$refs.customerOrderTable.setQueryParam(queryParam)
@@ -1292,14 +1074,14 @@
        if (this.judgeCoState(this.multipleSelection)) {
          // 判断一下剩余数量是否大于0
          for (let i = 0, len = this.multipleSelection.length; i < len; i++) {
            if (
              this.multipleSelection[i].buyQtyDue -
                this.multipleSelection[i].requireNumber <=
              0
            ) {
              this.$message.error('请选库存数量大于已下发数量的销售订单')
              return
            }
            // if (
            //   this.multipleSelection[i].buyQtyDue -
            //     this.multipleSelection[i].requireNumber <=
            //   0
            // ) {
            //   this.$message.error('请选库存数量大于已下发数量的销售订单')
            //   return
            // }
            if (
              !(
                this.multipleSelection[i].isAudit != null &&
@@ -1323,6 +1105,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)
@@ -1334,16 +1128,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)
      })
    },
    // 打开日期选择框
@@ -1404,15 +1205,15 @@
          let flag = true
          const ids = []
          this.multipleSelection.forEach((item) => {
            if (item.salesPartNo != null && item.salesPartNo !== '') {
            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)
            checkOA(this.multipleSelection.map((e) => e.id),{}).then((res) => {
              if (!res.data.data.success) {
                this.$confirm(`${res.data.data.message}`, '提示', {
                  confirmButtonText: '确定',
@@ -1461,7 +1262,6 @@
    // 箱码信息导出
    packageExportHandle(row) {
      console.log(row.otcQuantity)
      if (row.otcQuantity) {
        this.packageExport.visible = true
        this.packageExport.form = {
@@ -1498,13 +1298,13 @@
    },
    // 作废
    cancelHandle(row) {
      this.$confirm('是否确认作废销售订单号为' + row.customerOrderNo + '提示', {
      this.$confirm('确认作废id为【' + row.id + '】的数据?','提示' , {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        closeOnClickModal: false,
        type: 'warning'
      }).then(() => {
        dropByContractNo(row.customerOrderNo).then((res) => {
        dropByContractNo({id:row.id}).then((res) => {
          if (res.data.code === 0) {
            this.$message.success('作废成功')
            this.getData()
@@ -1577,6 +1377,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) {
@@ -1587,23 +1402,31 @@
      })
      return cellValue
    },
    getManufactureAttr(row, column, cellValue) {
      this.manufactureAttrs.forEach((obj) => {
    getSourceId(row, column, cellValue) {
      this.sourceIdList.forEach((obj) => {
        if (obj.value === cellValue) {
          cellValue = obj.label
        }
      })
      return cellValue
    },
    getManufactureAttrs() {
      remote('manufacture_attr_type').then((response) => {
        if (response.data.code === 0) {
          this.manufactureAttrs = response.data.data
        } else {
          this.manufactureAttrs = []
    getManufactureAttr(row, column, cellValue) {
      this.manufactureAttrList.forEach((obj) => {
        if (obj.value === cellValue) {
          cellValue = obj.label
        }
      })
      return cellValue
    },
    // getManufactureAttrs() {
    //   remote('manufacture_attr_type').then((response) => {
    //     if (response.data.code === 0) {
    //       this.manufactureAttrs = response.data.data
    //     } else {
    //       this.manufactureAttrs = []
    //     }
    //   })
    // },
    getTitles() {
      remote('order_export_title_type').then((response) => {
        if (response.data.code === 0) {
@@ -1744,6 +1567,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) {
@@ -1752,7 +1579,7 @@
                  '存在销售订单已关联工艺文件,如需更改,请先解除关联'
                )
              }
              if (item.salesPartNo == null || item.salesPartNo === '') {
              if (item.partNo == null || item.partNo === '') {
                status = true
                this.$message.error('存在销售订单未绑定销售件,请先绑定')
              }
@@ -1882,7 +1709,6 @@
    },
    // 导出台账
    exportStandBook() {
      // console.log(this.$refs.customerOrderTable.getQueryParam(),"SSS")
      // if (this.multipleSelection.length > 0) {
      //   let ids = ''
      //   this.multipleSelection.forEach((item) => {
@@ -1907,11 +1733,18 @@
      // } else {
      //   this.$message.error('请选择至少一条销售订单')
      // }
      exportCustomerOrder(this.$refs.customerOrderTable.getQueryParam())
        .then((response) => {
          transform(response)
        })
        .catch(() => {})
      this.$refs['exportForm'].validate(valid => {
        if(valid){
          const exportTime = this.dataForm.exportTime
          let queryParam=this.$refs.customerOrderTable.getQueryParam();
          queryParam.selectTime = exportTime
          exportCustomerOrder(queryParam)
            .then((response) => {
              transform(response)
            })
            .catch(() => {})
        }
      })
    },
    setSalesPart() {
      if (this.multipleSelection.length > 0) {
@@ -1942,28 +1775,37 @@
      this.syncDateVisible = false
      this.table.toolbar.find((e) => e.text === '获取销售订单').loading = true
      syncOrder({
        startTime: this.syncDate[0],
        endTime: this.syncDate[1]
      })
        .then((res) => {
          this.table.toolbar.find(
            (e) => e.text === '获取销售订单'
          ).loading = false
          const resData = res.data
          if (resData.code === 0) {
            this.$message.success(resData.data)
            this.getData()
          } else {
            this.$message.error('同步失败')
          }
      if (this.dataForm.selectTime != null && this.dataForm.selectTime != '') {
        otcCustomerOrderSync({
          selectTime: this.dataForm.selectTime,
          pathCode: '1'
        })
        .catch((e) => {
          this.table.toolbar.find(
            (e) => e.text === '获取销售订单'
          ).loading = false
          this.$forceUpdate()
        })
          .then((response) => {
            this.table.toolbar.find(
              (e) => e.text === '获取销售订单'
            ).loading = false
            const resData = response.data
            if (resData.code === 0) {
              this.$message.success('拉取销售订单成功;' + resData.msg)
              this.dataForm.selectTime = null
              this.$emit('refreshDataList')
              this.getData()
            } else {
              this.$message.success('拉取销售订单失败')
            }
          })
          .catch((e) => {
            this.table.toolbar.find(
              (e) => e.text === '获取销售订单'
            ).loading = false
            this.$forceUpdate()
          })
      } else {
        this.table.toolbar.find(
          (e) => e.text === '获取销售订单'
        ).loading = false
        this.$message.error('请先选择日期')
      }
    }
  }
}