zss
2024-03-06 71790ef8fede50105a4e6dfc5430871b90a5c4b9
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,8 +23,9 @@
            </el-button>
            <el-dropdown-menu slot="dropdown">
              <el-dropdown-item
                :key="index"
                :command="item.command"
                v-for="item in documentTagArr"
                v-for="(item, index) in documentTagArr"
                :disabled="item.disabled"
              >
                {{ item.label }}
@@ -57,42 +43,22 @@
            </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;"
            style="margin-left: 10px"
            type="primary"
            @click="exportStandBook"
            @click="() => (exportDialogVisible = true)"
            >导出台账</el-button
          >
          <el-button
            v-if="permissions.plan_customerorder_return"
            style="margin-left:10px;"
            type="primary"
            @click="returnOrder"
            >订单退回</el-button
          >
        </template>
      </ttable>
      <!-- 弹窗, 日期选择 -->
      <ConfirmPullCustomerorder
        v-if="showPullCustomerOrderVisible"
@@ -156,7 +122,7 @@
          <div>
            <div>
              <el-upload
                style="margin-left:8px;display: inline;"
                style="margin-left: 8px; display: inline"
                class="upload-demo"
                drag
                :headers="headers"
@@ -177,7 +143,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
                  >
@@ -188,6 +154,37 @@
          </div>
        </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
@@ -201,7 +198,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 />
@@ -241,14 +238,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>
@@ -258,10 +262,100 @@
        <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'
@@ -289,7 +383,8 @@
  exportCustomerOrder,
  exportCustomerOrderSplit,
  syncOrder,
  dropByContractNo
  dropByContractNo,
  downloadWordFile,
} from '../../../api/plan/customerorder'
import DocumentTable from '@/views/common/document.vue'
import { remote } from '@/api/admin/dict'
@@ -301,10 +396,19 @@
export default {
  data() {
    return {
      interrelatedOrderId: null,
      interrelatedOrderData: [],
      showInterrelatedOrderDialog: false,
      uniqueStateArr: [],
      dataForm: {
        selectTime: null
        selectTime: null,
        exportTime: null,
      },
      dataRule: {},
      dataRule: {
        exportTime: [
          { required: true, message: '导出日期不能为空', trigger: 'change' },
        ],
      },
      pickerOptions: {
        onPick: ({ maxDate, minDate }) => {
          if (minDate && this.pickerMinDate) {
@@ -321,8 +425,9 @@
            )
          }
          return false
        }
        },
      },
      exportDialogVisible: false,
      syncDateVisible: false,
      syncDate: [],
      showCustomerorderReturn: false,
@@ -333,58 +438,58 @@
          label: '标记零件待选',
          command: '01partUnCheck',
          disabled: false,
          permitArr: []
          permitArr: [],
        },
        {
          label: '标记工艺文件待选',
          command: '02technologyUnCheck',
          disabled: false,
          permitArr: []
          permitArr: [],
        },
        {
          label: '标记待计划',
          command: '03plan',
          disabled: false,
          permitArr: []
          permitArr: [],
        },
        {
          label: '标记已下发',
          command: '04planed',
          disabled: false,
          permitArr: []
          permitArr: [],
        },
        {
          label: '标记已作废',
          command: '05cancel',
          disabled: false,
          permitArr: []
        }
          permitArr: [],
        },
      ],
      documentTagArr: [
        {
          label: '关联工艺文件',
          command: 'RELEVANCE',
          disabled: false
          disabled: false,
        },
        {
          label: '移除工艺文件',
          command: 'NORELEVANCE',
          disabled: false
        }
          disabled: false,
        },
      ],
      commitStateTagArr: [
        {
          label: '标记通过',
          command: 'PROCESSED',
          disabled: false,
          permitArr: ['01draft']
          permitArr: ['01draft'],
        },
        {
          label: '标记取消',
          command: 'CANCELED',
          disabled: false,
          permitArr: ['01draft']
        }
          permitArr: ['01draft'],
        },
      ],
      ajaxFun: fetchListCustomerOrder,
      events: '',
@@ -396,7 +501,7 @@
      uploadInfo: {
        // 是否展示上传EXCEL以及对应的url
        isShow: false,
        url: ''
        url: '',
      },
      prelang: 'operation',
      options: {
@@ -411,8 +516,8 @@
        isRefresh: true, // 是否显示刷新按钮
        isShowHide: true, // 是否显示显影按钮H
        isSearch: true, // 高级查询按钮
        defaultOrderBy: { column: 'createTime', direction: 'desc' },
        cancelRunCreated: true
        defaultOrderBy: { column: 'placeOrderDate', direction: 'desc' },
        cancelRunCreated: true,
      },
      table: {
        total: 0,
@@ -424,23 +529,21 @@
          {
            minWidth: '100',
            width: '100px',
            prop: 'customerOrderNo',
            prop: 'contractNo',
            label: '合同编号',
            // label: '订单号',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text',
            render: { fun: this.addOrUpdateHandle }
            render: { fun: this.addOrUpdateHandle },
          },
          {
            minWidth: '120',
            prop: 'entityName',
            label: '合同主题',
            sort: false,
            label: '工程名称',
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
            searchInfoType: 'text',
          },
          {
            minWidth: '120',
@@ -449,7 +552,20 @@
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
            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,47 +576,18 @@
            isTrue: true,
            isSearch: true,
            searchInfoType: 'datetimerange',
            formatter: this.formatDutyDate
            formatter: this.formatDutyDate,
          },
          {
            minWidth: '120',
            prop: 'placeOrderDate',
            label: '签订日期',
            label: '下单日期',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text',
            formatter: this.formatDutyDate
            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',
@@ -508,18 +595,8 @@
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
            searchInfoType: 'text',
          },
          // {
          //   minWidth: '120',
          //   prop: 'customerContractNo',
          //   label: '客户订单号',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'text'
          // },
          {
            minWidth: '120',
            prop: 'coState',
@@ -531,12 +608,12 @@
            formatter: this.getCustomerCoState,
            optList: () => {
              return this.coStateList
            }
            },
          },
          {
            minWidth: '120',
            prop: 'isAudit',
            label: '审核状态',
            label: 'PLM审核状态',
            sort: true,
            isTrue: true,
            isSearch: true,
@@ -544,142 +621,71 @@
            formatter: this.getIsAudit,
            optList: () => {
              return this.isAuditList
            }
            },
          },
          {
            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',
            prop: 'isOa',
            label: '是否提交oa',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'select',
            formatter: this.checkIsOa,
            optList: () => {
              return this.isOaList
            },
          },
          {
            minWidth: '120',
            width: '100px',
            prop: 'partNo',
            label: '零件号',
            label: '产品编号',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
            searchInfoType: 'text',
          },
          {
            minWidth: '120',
            width: '100px',
            prop: 'customerPartName',
            label: '零件名称',
            prop: 'productName',
            label: '产品名称',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
            searchInfoType: 'text',
          },
          {
            minWidth: '120',
            width: '100px',
            prop: 'productType',
            label: '型号',
            label: '隶属品牌',
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
            searchInfoType: 'text',
          },
          {
            minWidth: '120',
            width: '100px',
            prop: 'otcUnit',
            label: '零件属性',
            label: '单位',
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
            searchInfoType: 'text',
          },
          {
            minWidth: '120',
@@ -689,303 +695,19 @@
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            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'
            searchInfoType: 'text',
          },
          {
            minWidth: '120',
            prop: 'buyQtyDue',
            label: '库存数量',
            label: '数量',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
          },
          {
            minWidth: '80',
            prop: 'unit',
            label: '零件单位',
            sort: true,
            isTrue: true,
            isSearch: true,
            searchInfoType: 'text'
            searchInfoType: 'text',
          },
          {
            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,
@@ -994,20 +716,56 @@
            searchInfoType: 'select',
            formatter: this.getManufactureAttr,
            optList: () => {
              return this.manufactureAttrs
            }
          }
          // {
          //   minWidth: '200',
          //   width: '120',
          //   prop: 'createTime',
          //   label: '创建时间',
          //   sort: true,
          //   isTrue: true,
          //   isSearch: true,
          //   searchInfoType: 'datetimerange',
          //   formatter: this.formatDutyDate
          // }
              return this.manufactureAttrList
            },
          },
          {
            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: [
@@ -1030,7 +788,26 @@
          //   fun: this.packageExportHandle
          // },
          {
            text: '作废',
            text: '审核',
            type: 'text',
            size: 'small',
            fun: this.checkHandOrder,
            showFun: (row) => {
              return row.sourceId === '1'
            },
            show: {
              val: [false],
              key: 'isPass',
            },
          },
          {
            text: '已关联订单',
            type: 'text',
            size: 'small',
            fun: this.showInterrelatedOrder,
          },
          {
            text: '删除',
            type: 'text',
            size: 'small',
            fun: this.cancelHandle,
@@ -1038,64 +815,88 @@
              val: [
                '01partUnCheck',
                '02technologyUnCheck',
                '03plan'
                '03plan',
                // '04planed'
              ],
              key: 'coState'
            }
          }
              key: 'coState',
            },
          },
        ],
        operatorConfig: {
          fixed: 'right',
          label: '操作',
          width: 260,
          minWidth: 100
        }
          width: 200,
          minWidth: 200,
        },
      },
      addOrUpdateVisible: false,
      coStateList: [
        {
          value: '01partUnCheck',
          label: '零件待选'
          label: '零件待选',
        },
        {
          value: '02technologyUnCheck',
          label: '工艺文件待选'
          label: '工艺文件待选',
        },
        {
          value: '03plan',
          label: '待计划'
          label: '待计划',
        },
        {
          value: '04planed',
          label: '已下发'
          label: '已下发',
        },
        {
          value: '05cancel',
          label: '已作废'
          label: '已作废',
        },
        {
          value: '06unedit',
          label: '订单编辑'
        }
          label: '订单编辑',
        },
      ],
      manufactureAttrList: [
        {
          label: '普通',
          value: 'N',
        },
        {
          label: '样品',
          value: 'S',
        },
        {
          label: '研发',
          value: 'D',
        },
      ],
      isAuditList: [
        {
          value: '01draft',
          label: '草稿'
          label: '草稿',
        },
        {
          value: '02pending',
          label: '审核中'
          label: '审核中',
        },
        {
          value: '03accepted',
          label: '通过'
          label: '通过',
        },
        {
          value: '04reject',
          label: '退回'
        }
          label: '退回',
        },
      ],
      sourceIdList: [
        {
          label: '同步',
          value: '0',
        },
        {
          label: '手动',
          value: '1',
        },
      ],
      stockVisible: false,
      partName: null,
@@ -1108,20 +909,20 @@
          id: '',
          customerOrderNo: '',
          splitQuantity: '',
          title: ''
          title: '',
        },
        rules: {
          splitQuantity: [
            { required: true, message: '数量不能为空', trigger: 'blur' },
            { validator: validateSixDecimal, trigger: 'blur' }
            { validator: validateSixDecimal, trigger: 'blur' },
          ],
          title: [{ required: true, message: '抬头不能为空', trigger: 'blur' }]
          title: [{ required: true, message: '抬头不能为空', trigger: 'blur' }],
        },
        titleList: [],
        buttonDisable: false
        buttonDisable: false,
      },
      headers: {
        Authorization: 'Bearer ' + getStore({ name: 'access_token' })
        Authorization: 'Bearer ' + getStore({ name: 'access_token' }),
      },
      fileList: [],
      outBatchUploadUrl: '/mes/operationTaskProduce/upload',
@@ -1130,15 +931,23 @@
      otcPartSyncOptionList: [
        {
          value: true,
          label: '已同步'
          label: '已同步',
        },
        {
          value: false,
          label: '未同步'
        }
          label: '未同步',
        },
      ],
      showSalesPartBatch: false,
      addOrUpdateEescVisible: false
      addOrUpdateEescVisible: false,
      isPassList: [
        { label: '未通过', value: false },
        { label: '通过', value: true },
      ],
      isOaList: [
        { label: '未提交', value: false },
        { label: '已提交', value: true },
      ],
    }
  },
  components: {
@@ -1152,118 +961,188 @@
    SampleTableForm,
    SalesPartBatchDialog,
    TableFormDEesc,
    CustomerorderReturnDialog
    CustomerorderReturnDialog,
  },
  computed: {
    ...mapGetters(['permissions'])
    ...mapGetters(['permissions']),
  },
  watch: {
    exportDialogVisible(newVal) {
      if (!newVal) {
        this.$refs.exportForm.resetFields()
      }
    },
    coState: {
      handler(newValue, oldValue) {
        if (newValue) {
          this.getData()
        }
      },
      immediate: true
    }
      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',
      fun: this.addSampleCustomerOrder,
      disabled: false,
      permitArr: []
      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: '获取销售订单',
        type: 'primary',
        fun: this.syncERP,
        disabled: false,
        permitArr: []
        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: '提交审核',
      //   type: 'primary',
      //   fun: this.auditCustomerOrder,
      //   disabled: false,
      //   permitArr: [],
      //   loading: false
      // })
      this.table.toolbar.push({
        text: '提交OA',
        type: 'primary',
        fun: this.auditCustomerOrder,
        disabled: false,
        permitArr: [],
        loading: false,
      })
    }
    if (this.permissions.customerorder_set_salesparts) {
      this.table.toolbar.push({
        text: '设置销售件',
        type: 'primary',
        fun: this.setSalesPart,
        disabled: false
        disabled: false,
        permitArr: [],
      })
    }
    this.table.toolbar.push({
      text: '下载Word',
      disabled: false,
      type: 'primary',
      fun: this.downloadWord,
      permitArr: ['03plan', '04planed'],
    })
    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
    },
    //下载word
    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
    },
@@ -1293,7 +1172,6 @@
    },
    // 创建主生产计划
    masterPlanHandle() {
      console.log(this.multipleSelection);
      if (this.multipleSelection && this.multipleSelection.length > 0) {
        if (this.judgeCoState(this.multipleSelection)) {
          // 判断一下剩余数量是否大于0
@@ -1329,6 +1207,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)
@@ -1340,16 +1230,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)
      })
    },
    // 打开日期选择框
@@ -1406,46 +1303,34 @@
    // 审核销售订单
    auditCustomerOrder() {
      if (this.multipleSelection.length > 0) {
        if (this.judgeCoState(this.multipleSelection)) {
          let flag = true
          const ids = []
          this.multipleSelection.forEach((item) => {
            if (item.salesPartNo != null && item.salesPartNo !== '') {
              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 {
                this.auditCustomerOrderSure(ids)
              }
            })
        let flag = true
        const ids = []
        this.multipleSelection.forEach((item) => {
          if (item.partNo != null && item.partNo !== '') {
            ids.push(item.id)
          } else {
            this.$message.error('存在销售订单未绑定销售件!')
            flag = false
          }
        })
        if (flag) {
          checkOA(
            this.multipleSelection.map((e) => e.id)
          ).then((res) => {
            if (res.data.data.success) {
              this.auditCustomerOrderSure(ids)
            }
          }).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)
@@ -1455,7 +1340,7 @@
              this.$message.success(resData.msg)
              this.getData()
            } else {
              this.$message.error('提交审核失败!')
              this.$message.error('提交OA失败!')
            }
            toolbar.loading = false
          })
@@ -1467,14 +1352,13 @@
    // 箱码信息导出
    packageExportHandle(row) {
      console.log(row.otcQuantity)
      if (row.otcQuantity) {
        this.packageExport.visible = true
        this.packageExport.form = {
          id: row.id,
          customerOrderNo: row.customerOrderNo,
          splitQuantity: '',
          title: ''
          title: '',
        }
        this.$nextTick(() => {
          this.$refs.packageExportForm.resetFields()
@@ -1490,7 +1374,7 @@
          exportCustomerOrderSplit({
            id: this.packageExport.form.id,
            splitQuantity: this.packageExport.form.splitQuantity,
            title: this.packageExport.form.title
            title: this.packageExport.form.title,
          })
            .then((response) => {
              transform(response)
@@ -1504,13 +1388,13 @@
    },
    // 作废
    cancelHandle(row) {
      this.$confirm('是否确认作废销售订单号为' + row.customerOrderNo + '提示', {
      this.$confirm('确认作废id为【' + row.id + '】的数据?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        closeOnClickModal: false,
        type: 'warning'
        type: 'warning',
      }).then(() => {
        dropByContractNo(row.customerOrderNo).then((res) => {
        dropByContractNo({ id: row.id }).then((res) => {
          if (res.data.code === 0) {
            this.$message.success('作废成功')
            this.getData()
@@ -1545,7 +1429,7 @@
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        closeOnClickModal: false,
        type: 'warning'
        type: 'warning',
      })
        .then(() => {
          return delCustomerOrder(row.id)
@@ -1559,7 +1443,7 @@
    handleSelectionChange(val) {
      // 根据状态,禁用表头按钮
      // 筛选出选中记录的状态
      var stateArr = val.map(function(value, index) {
      var stateArr = val.map(function (value, index) {
        return value.coState
      })
      // 选中状态数组元素去重
@@ -1583,6 +1467,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) {
@@ -1593,23 +1492,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) {
@@ -1621,6 +1528,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
        }
@@ -1750,6 +1665,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) {
@@ -1758,7 +1677,7 @@
                  '存在销售订单已关联工艺文件,如需更改,请先解除关联'
                )
              }
              if (item.salesPartNo == null || item.salesPartNo === '') {
              if (item.partNo == null || item.partNo === '') {
                status = true
                this.$message.error('存在销售订单未绑定销售件,请先绑定')
              }
@@ -1842,7 +1761,7 @@
      if (!isLt10M) {
        this.$message({
          message: '文件大小',
          type: 'warning'
          type: 'warning',
        })
      }
      return isLt10M
@@ -1854,7 +1773,7 @@
      } else {
        this.$message({
          message: '上传成功',
          type: 'success'
          type: 'success',
        })
        this.getData()
      }
@@ -1872,7 +1791,7 @@
    downDataTemplate() {
      uploadBatchTemplate().then((response) => {
        const blob = new Blob([response.data], {
          type: 'application/force-download'
          type: 'application/force-download',
        })
        const filename = decodeURI('模板文件.xlsx')
        // 创建一个超链接,将文件流赋进去,然后实现这个超链接的单击事件
@@ -1888,7 +1807,6 @@
    },
    // 导出台账
    exportStandBook() {
      // console.log(this.$refs.customerOrderTable.getQueryParam(),"SSS")
      // if (this.multipleSelection.length > 0) {
      //   let ids = ''
      //   this.multipleSelection.forEach((item) => {
@@ -1913,11 +1831,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) {
@@ -1951,7 +1876,7 @@
      if (this.dataForm.selectTime != null && this.dataForm.selectTime != '') {
        otcCustomerOrderSync({
          selectTime: this.dataForm.selectTime,
          pathCode: '1'
          pathCode: '1',
        })
          .then((response) => {
            this.table.toolbar.find(
@@ -1979,7 +1904,7 @@
        ).loading = false
        this.$message.error('请先选择日期')
      }
    }
  }
    },
  },
}
</script>