<template>
|
<div class="mod-config">
|
<basic-container>
|
<ttable
|
:table="table"
|
@handleSelectionChange="handleSelectionChange"
|
:uploadInfo="uploadInfo"
|
:prelang="prelang"
|
:options="options"
|
:ajaxFun="ajaxFun"
|
: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
|
:key="index"
|
:command="item.command"
|
v-for="(item,index) in stateTagArr"
|
:disabled="item.disabled"
|
>{{ item.label }}</el-dropdown-item
|
>
|
</el-dropdown-menu>
|
</el-dropdown>
|
<el-dropdown
|
v-if="permissions.customerorder_doc_relate"
|
@command="documentHandle"
|
style="margin-left: 10px"
|
>
|
<el-button>
|
工艺文件<i class="el-icon-arrow-down el-icon--right"></i>
|
</el-button>
|
<el-dropdown-menu slot="dropdown">
|
<el-dropdown-item
|
:key="index"
|
:command="item.command"
|
v-for="(item,index) in documentTagArr"
|
:disabled="item.disabled"
|
>
|
{{ item.label }}
|
</el-dropdown-item>
|
</el-dropdown-menu>
|
</el-dropdown>
|
<!--审核状态改变-->
|
<el-dropdown
|
v-if="permissions.customerorder_audit_change"
|
@command="handleCommitCommand"
|
style="margin-left: 10px"
|
>
|
<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"
|
:key="index"
|
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_ifs_line"
|
style="margin-left:10px;"
|
type="primary"
|
@click="pullIfsLineNo"
|
>获取OTC行号</el-button
|
> -->
|
<!-- <el-button
|
v-if="permissions.customerorder_push_otc"
|
style="margin-left:10px;"
|
type="primary"
|
@click="pushOtc"
|
>推送OTC</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
|
> -->
|
</template>
|
</ttable>
|
|
<!-- 弹窗, 日期选择 -->
|
<ConfirmPullCustomerorder
|
v-if="showPullCustomerOrderVisible"
|
ref="confirmPullCustomerorder"
|
@refreshDataList="getData"
|
></ConfirmPullCustomerorder>
|
<!-- 弹窗, 新增 / 修改 -->
|
<table-form
|
v-if="addOrUpdateVisible"
|
ref="addOrUpdate"
|
@refreshDataList="getData"
|
></table-form>
|
<!-- 创建主计划需求 -->
|
<mps-requirements
|
v-if="mpsRequirementsVisible"
|
ref="mpsRequirements"
|
@refreshDataList="getData"
|
></mps-requirements>
|
<!-- 创建主生产计划 -->
|
<schedule-table
|
v-if="scheduleVisible"
|
ref="schedule"
|
@refreshDataList="getData"
|
></schedule-table>
|
<!-- 预留库存零件 -->
|
<!--库存-->
|
<stockDialog :currshowlist.sync="stockVisible" :partName="partName" />
|
<DocumentTable
|
:currshowlist.sync="showDocument"
|
:multiSelect="false"
|
:relationOrderList="multipleSelection"
|
:showParentInfo="showParentInfo"
|
@listenToDocumentEvent="selectDocument"
|
>
|
</DocumentTable>
|
<!-- 弹窗, 新增样品 -->
|
<SampleTableForm
|
v-if="addSampleVisible"
|
ref="addSampleForm"
|
@refreshDataList="getData"
|
></SampleTableForm>
|
<SalesPartBatchDialog
|
:currshowlist.sync="showSalesPartBatch"
|
:customerOrderList="multipleSelection"
|
@refreshCustomerOrder="getData"
|
/>
|
<!-- 弹窗, 订单说明 -->
|
<TableFormDEesc
|
v-if="addOrUpdateEescVisible"
|
ref="addOrUpdateEesc"
|
@refreshDataList="getData"
|
></TableFormDEesc>
|
<CustomerorderReturnDialog
|
:currshowlist.sync="showCustomerorderReturn"
|
:customerOrderList="multipleSelection"
|
@refreshCustomerOrder="getData"
|
/>
|
<!--导入-->
|
<el-dialog title="导入" :visible.sync="importDialogVisible" width="30%">
|
<span>
|
<div>
|
<div>
|
<el-upload
|
style="margin-left:8px;display: inline;"
|
class="upload-demo"
|
drag
|
:headers="headers"
|
:action="outBatchUploadUrl"
|
:beforeUpload="beforeAvatarUpload"
|
:limit="1"
|
:show-file-list="false"
|
:file-list="fileList"
|
:on-success="fileSuccessUploadScan"
|
:on-error="handleError"
|
accept=".xlsx,.xls,.csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
|
:auto-upload="true"
|
ref="outBatchUploadScan"
|
multiple
|
>
|
<i class="el-icon-upload"></i>
|
<div class="el-upload__text"><em>点击导入数据</em></div>
|
<div class="el-upload__tip" slot="tip">
|
只能上传xlsx/xls文件,且不超过10M<el-button
|
type="text"
|
style="font-size:12px;"
|
@click="downDataTemplate"
|
>下载模板</el-button
|
>
|
</div>
|
</el-upload>
|
</div>
|
<div></div>
|
</div>
|
</span>
|
<span slot="footer" class="dialog-footer"> </span>
|
</el-dialog>
|
<!-- 箱码信息导出 -->
|
<el-dialog
|
title="箱码信息导出"
|
:visible.sync="packageExport.visible"
|
width="450px"
|
>
|
<el-form
|
:model="packageExport.form"
|
:rules="packageExport.rules"
|
ref="packageExportForm"
|
label-width="70px"
|
class="l-mes"
|
style="padding:0 20px"
|
>
|
<el-form-item label="订单号">
|
<el-input v-model="packageExport.form.customerOrderNo" disabled />
|
</el-form-item>
|
<el-form-item label="每箱数量" prop="splitQuantity">
|
<el-input
|
v-model="packageExport.form.splitQuantity"
|
placeholder=""
|
/>
|
</el-form-item>
|
<el-form-item label="抬头" prop="title">
|
<el-select
|
v-model="packageExport.form.title"
|
placeholder=""
|
filterable
|
style="width: 100%"
|
>
|
<el-option
|
v-for="item in packageExport.titleList"
|
:key="item.id"
|
:label="item.label"
|
:value="item.value"
|
/>
|
</el-select>
|
</el-form-item>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="packageExport.visible = false">取消</el-button>
|
<el-button
|
type="primary"
|
:disabled="packageExport.buttonDisable"
|
v-thinclick="`packageExportSave`"
|
>确定</el-button
|
>
|
</span>
|
</el-dialog>
|
</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">
|
<el-form-item label="日期" prop="selectTime">
|
<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>
|
</div>
|
</template>
|
|
<script>
|
import ConfirmPullCustomerorder from './confirm-pull-customerorder'
|
import TableForm from './customerorder-form'
|
import TableFormDEesc from './customerorder-form-desc'
|
import SampleTableForm from './sample-customerorder-form'
|
import { mapGetters } from 'vuex'
|
import ScheduleTable from './schedule-table'
|
import ttable from '@/views/common/ztt-table.vue'
|
import stockDialog from '@/views/common/stock'
|
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,
|
markPlanned,
|
handleDocument,
|
rejectHandleDocument,
|
syncIfsLineNo,
|
checkOA,
|
auditCustomerOrder,
|
pushotc,
|
changeAudit,
|
changeBatchAudit,
|
exportCustomerOrder,
|
exportCustomerOrderSplit,
|
syncOrder,
|
dropByContractNo
|
} from '../../../api/plan/customerorder'
|
import DocumentTable from '@/views/common/document.vue'
|
import { remote } from '@/api/admin/dict'
|
import { getStore } from '@/util/store.js'
|
import { uploadBatchTemplate } from '@/api/plan/operationtaskproduce'
|
import { transform } from '@/util/fileTransform'
|
import { validateSixDecimal } from '@/util/validate'
|
|
export default {
|
data() {
|
return {
|
dataForm: {
|
selectTime: null,
|
exportTime: null
|
},
|
dataRule: {
|
exportTime:[{required:true,message:'导出日期不能为空',trigger:'change'}],
|
selectTime:[{required:true,message:'日期不能为空',trigger:'change'}]
|
},
|
pickerOptions: {
|
onPick: ({ maxDate, minDate }) => {
|
if (minDate && this.pickerMinDate) {
|
this.pickerMinDate = null
|
} else if (minDate) {
|
this.pickerMinDate = minDate.getTime()
|
}
|
},
|
disabledDate: (time) => {
|
if (this.pickerMinDate) {
|
return (
|
time.getTime() > this.pickerMinDate + 2 * 24 * 3600 * 1000 ||
|
time.getTime() < this.pickerMinDate - 2 * 24 * 3600 * 1000
|
)
|
}
|
return false
|
}
|
},
|
syncDateVisible: false,
|
syncDate: [],
|
showCustomerorderReturn: false,
|
scheduleVisible: false,
|
showDocument: false,
|
sourceIdList: [{
|
label: '外部',
|
value: '0',
|
},{
|
label: '内部',
|
value: '1',
|
}],
|
stateTagArr: [
|
{
|
label: '标记零件待选',
|
command: '01partUnCheck',
|
disabled: false,
|
permitArr: []
|
},
|
{
|
label: '标记工艺文件待选',
|
command: '02technologyUnCheck',
|
disabled: false,
|
permitArr: []
|
},
|
{
|
label: '标记待计划',
|
command: '03plan',
|
disabled: false,
|
permitArr: []
|
},
|
{
|
label: '标记已下发',
|
command: '04planed',
|
disabled: false,
|
permitArr: []
|
},
|
{
|
label: '标记已作废',
|
command: '05cancel',
|
disabled: false,
|
permitArr: []
|
}
|
],
|
documentTagArr: [
|
{
|
label: '关联工艺文件',
|
command: 'RELEVANCE',
|
disabled: false
|
},
|
{
|
label: '移除工艺文件',
|
command: 'NORELEVANCE',
|
disabled: false
|
}
|
],
|
commitStateTagArr: [
|
{
|
label: '标记通过',
|
command: 'PROCESSED',
|
disabled: false,
|
permitArr: ['01draft']
|
},
|
{
|
label: '标记取消',
|
command: 'CANCELED',
|
disabled: false,
|
permitArr: ['01draft']
|
}
|
],
|
ajaxFun: fetchListCustomerOrder,
|
events: '',
|
type: [1],
|
mpsRequirementsVisible: false,
|
currentRow: null,
|
multipleSelection: [],
|
isShowQuery: false,
|
uploadInfo: {
|
// 是否展示上传EXCEL以及对应的url
|
isShow: true,
|
url: ''
|
},
|
prelang: 'operation',
|
options: {
|
height: 300, // 默认高度-为了表头固定
|
stripe: true, // 是否为斑马纹 table
|
highlightCurrentRow: false, // 是否要高亮当前行
|
border: true, // 是否有纵向边框
|
lazy: false, // 是否需要懒加载
|
fit: true, // 列的宽度是否自撑开
|
multiSelect: true, //
|
seqNo: true,
|
isRefresh: true, // 是否显示刷新按钮
|
isShowHide: true, // 是否显示显影按钮H
|
isSearch: true, // 高级查询按钮
|
defaultOrderBy: { column: 'createTime', direction: 'desc' },
|
cancelRunCreated: true
|
},
|
table: {
|
total: 0,
|
currentPage: 1,
|
pageSize: 20,
|
data: [],
|
// 标题
|
column: [
|
{
|
minWidth: '100',
|
width: '100px',
|
prop: 'contractNo',
|
label: '合同编号',
|
sort: true,
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'text',
|
render: { fun: this.addOrUpdateHandle }
|
},
|
{
|
minWidth: '120',
|
prop: 'entityName',
|
label: '工程名称',
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'text'
|
},
|
{
|
minWidth: '120',
|
prop: 'createUser',
|
label: '添加人',
|
sort: true,
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'text'
|
},
|
{
|
minWidth: '120',
|
prop: 'sourceId',
|
label: '添加来源',
|
isTag: true,
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'select',
|
formatter: this.getSourceId,
|
optList: () => {
|
return this.sourceIdList
|
}
|
},
|
{
|
minWidth: '200',
|
width: '120',
|
prop: 'createTime',
|
label: '添加日期',
|
sort: true,
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'datetimerange',
|
formatter: this.formatDutyDate
|
},
|
{
|
minWidth: '120',
|
prop: 'placeOrderDate',
|
label: '下单日期',
|
sort: true,
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'text',
|
formatter: this.formatDutyDate
|
},
|
{
|
minWidth: '120',
|
prop: 'customerName',
|
label: '客户名称',
|
sort: true,
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'text'
|
},
|
{
|
minWidth: '120',
|
prop: 'coState',
|
label: '销售订单状态',
|
sort: true,
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'select',
|
formatter: this.getCustomerCoState,
|
optList: () => {
|
return this.coStateList
|
}
|
},
|
{
|
minWidth: '120',
|
prop: 'isAudit',
|
label: '审核状态',
|
sort: true,
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'select',
|
formatter: this.getIsAudit,
|
optList: () => {
|
return this.isAuditList
|
}
|
},
|
// {
|
// minWidth: '80',
|
// prop: 'sourceId',
|
// label: '订单来源',
|
// sort: true,
|
// isTrue: true,
|
// isSearch: true,
|
// searchInfoType: 'text'
|
// },
|
{
|
minWidth: '120',
|
width: '100px',
|
prop: 'partNo',
|
label: '产品编号',
|
sort: true,
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'text'
|
},
|
{
|
minWidth: '120',
|
width: '100px',
|
prop: 'productName',
|
label: '产品名称',
|
sort: true,
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'text'
|
},
|
{
|
minWidth: '120',
|
width: '100px',
|
prop: 'productType',
|
label: '隶属品牌',
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'text'
|
},
|
{
|
minWidth: '120',
|
width: '100px',
|
prop: 'otcUnit',
|
label: '单位',
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'text'
|
},
|
{
|
minWidth: '120',
|
width: '100px',
|
prop: 'docNumber',
|
label: '工艺文件号',
|
sort: true,
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'text'
|
},
|
{
|
minWidth: '120',
|
prop: 'buyQtyDue',
|
label: '数量',
|
sort: true,
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'text'
|
},
|
{
|
minWidth: '140',
|
prop: 'manufactureAttr',
|
label: '制造属性',
|
sort: true,
|
isTrue: true,
|
isSearch: true,
|
searchInfoType: 'select',
|
formatter: this.getManufactureAttr,
|
optList: () => {
|
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
|
},
|
{
|
minWidth: '140',
|
width: '120',
|
prop: 'wantedDeliveryDate',
|
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.cancelHandle,
|
show: {
|
val: [
|
'01partUnCheck',
|
'02technologyUnCheck',
|
'03plan'
|
],
|
key: 'coState'
|
}
|
}
|
],
|
operatorConfig: {
|
fixed: 'right',
|
label: '操作',
|
width: 100,
|
minWidth: 100
|
}
|
},
|
addOrUpdateVisible: false,
|
coStateList: [
|
{
|
value: '01partUnCheck',
|
label: '零件待选'
|
},
|
{
|
value: '02technologyUnCheck',
|
label: '工艺文件待选'
|
},
|
{
|
value: '03plan',
|
label: '待计划'
|
},
|
{
|
value: '04planed',
|
label: '已下发'
|
},
|
{
|
value: '05cancel',
|
label: '已作废'
|
},
|
{
|
value: '06unedit',
|
label: '订单编辑'
|
}
|
],
|
isAuditList: [
|
{
|
value: '01draft',
|
label: '草稿'
|
},
|
{
|
value: '02pending',
|
label: '审核中'
|
},
|
{
|
value: '03accepted',
|
label: '通过'
|
},
|
{
|
value: '04reject',
|
label: '退回'
|
}
|
],
|
stockVisible: false,
|
partName: null,
|
showPullCustomerOrderVisible: false,
|
manufactureAttrs: [],
|
importDialogVisible: false,
|
packageExport: {
|
visible: false,
|
form: {
|
id: '',
|
customerOrderNo: '',
|
splitQuantity: '',
|
title: ''
|
},
|
rules: {
|
splitQuantity: [
|
{ required: true, message: '数量不能为空', trigger: 'blur' },
|
{ validator: validateSixDecimal, trigger: 'blur' }
|
],
|
title: [{ required: true, message: '抬头不能为空', trigger: 'blur' }]
|
},
|
titleList: [],
|
buttonDisable: false
|
},
|
headers: {
|
Authorization: 'Bearer ' + getStore({ name: 'access_token' })
|
},
|
fileList: [],
|
outBatchUploadUrl: '/mes/operationTaskProduce/upload',
|
showParentInfo: true,
|
addSampleVisible: false,
|
otcPartSyncOptionList: [
|
{
|
value: true,
|
label: '已同步'
|
},
|
{
|
value: false,
|
label: '未同步'
|
}
|
],
|
showSalesPartBatch: false,
|
addOrUpdateEescVisible: false
|
}
|
},
|
components: {
|
ttable,
|
TableForm,
|
MpsRequirements,
|
ScheduleTable,
|
stockDialog,
|
DocumentTable,
|
ConfirmPullCustomerorder,
|
SampleTableForm,
|
SalesPartBatchDialog,
|
TableFormDEesc,
|
CustomerorderReturnDialog
|
},
|
computed: {
|
...mapGetters(['permissions'])
|
},
|
watch: {
|
coState: {
|
handler(newValue, oldValue) {
|
if (newValue) {
|
this.getData()
|
}
|
},
|
immediate: true
|
},
|
},
|
mounted() {
|
this.initQueryParams()
|
},
|
created() {
|
this.getManufactureAttrs()
|
this.getTitles()
|
this.table.toolbar.push({
|
text: '新增销售订单',
|
type: 'primary',
|
fun: this.addSampleCustomerOrder,
|
disabled: false,
|
permitArr: []
|
})
|
if (this.permissions.customerorder_from_otc) {
|
this.table.toolbar.push({
|
text: '获取销售订单',
|
type: 'primary',
|
fun: this.syncERP,
|
disabled: false,
|
permitArr: []
|
})
|
}
|
if (this.permissions.customerorder_submit_oa) {
|
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
|
})
|
}
|
if (this.permissions.customerorder_create_masterplan) {
|
this.table.toolbar.push({
|
text: '主生产计划',
|
disabled: false,
|
fun: this.masterPlanHandle
|
})
|
}
|
},
|
methods: {
|
getSourceId(row, column, cellValue) {
|
this.sourceIdList.forEach((obj) => {
|
if (obj.value === cellValue) {
|
cellValue = obj.label
|
}
|
})
|
return cellValue
|
},
|
getOtcPartSyncOptionList() {
|
return this.otcPartSyncOptionList
|
},
|
initQueryParams() {
|
const queryParam = []
|
queryParam.push(
|
Object.assign({
|
prop: 'coState',
|
searchInfoType: 'select',
|
// propVal: '01partUnCheck'
|
})
|
)
|
this.$refs.customerOrderTable.setQueryParam(queryParam)
|
this.getData()
|
},
|
|
getData() {
|
this.$refs.customerOrderTable.getDataList()
|
},
|
// 获取数据列表去除已完成状态的
|
handleDataList(command) {
|
this.type = [command]
|
this.$nextTick(() => {
|
this.getData()
|
})
|
},
|
// 创建主生产计划
|
masterPlanHandle() {
|
if (this.multipleSelection && this.multipleSelection.length > 0) {
|
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].isAudit != null &&
|
this.multipleSelection[i].isAudit === '03accepted'
|
)
|
) {
|
this.$message.error(
|
'【审核状态】为‘通过’的销售订单才能创建主生产计划'
|
)
|
return
|
}
|
}
|
this.scheduleVisible = true
|
console.log(this.multipleSelection);
|
this.$nextTick(() => {
|
this.$refs.schedule.init(this.multipleSelection)
|
})
|
} else {
|
this.$message.error('销售订单审核状态为作废,不可进行操作!')
|
}
|
} else {
|
this.$message.error('请选择销售订单')
|
}
|
},
|
formatDutyDate(row, column, cellValue) {
|
if (cellValue) {
|
const dutyDateList = /\d{4}-\d{1,2}-\d{1,2}/g.exec(cellValue)
|
if (dutyDateList && dutyDateList.length > 0) {
|
return dutyDateList[0]
|
}
|
}
|
return ''
|
},
|
// 新增 / 修改
|
addOrUpdateHandle(row) {
|
this.addOrUpdateVisible = true
|
this.$nextTick(() => {
|
this.$refs.addOrUpdate.init(row ? row.id : row)
|
})
|
},
|
// 新增样品订单
|
addSampleCustomerOrder() {
|
this.addSampleVisible = true
|
this.$nextTick(() => {
|
this.$refs.addSampleForm.init(0)
|
})
|
},
|
// 打开日期选择框
|
pullCustomerOrder() {
|
this.showPullCustomerOrderVisible = true
|
this.$nextTick(() => {
|
this.$refs.confirmPullCustomerorder.init()
|
})
|
},
|
// 获取IFS行号
|
pullIfsLineNo() {
|
if (this.multipleSelection.length > 0) {
|
if (this.judgeCoState(this.multipleSelection)) {
|
const toolbar = this.table.toolbar.find(
|
(item) => item.text === '获取IFS行号'
|
)
|
if (toolbar) {
|
toolbar.loading = true
|
const ids = []
|
this.multipleSelection.forEach((item) => {
|
ids.push(item.id)
|
})
|
syncIfsLineNo(ids)
|
.then((response) => {
|
const resData = response.data
|
if (resData.code === 0) {
|
this.$message.success(resData.msg)
|
this.getData()
|
} else {
|
this.$message.error('获取IFS行号失败!')
|
}
|
toolbar.loading = false
|
})
|
.catch(() => {
|
toolbar.loading = false
|
})
|
}
|
} else {
|
this.$message.error('销售订单审核状态为作废,不可进行操作!')
|
}
|
} else {
|
this.$message.error('请先勾选销售订单!')
|
}
|
},
|
judgeCoState(mulSelection) {
|
let stateFlag = true
|
mulSelection.forEach((item) => {
|
if (item.coState === '05cancel') {
|
stateFlag = false
|
}
|
})
|
return stateFlag
|
},
|
// 审核销售订单
|
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)
|
}
|
})
|
} else {
|
this.$message.error('存在销售订单未绑定销售件!')
|
}
|
} else {
|
this.$message.error('销售订单审核状态为作废,不可进行操作!')
|
}
|
} else {
|
this.$message.error('请先勾选销售订单!')
|
}
|
},
|
auditCustomerOrderSure(ids) {
|
const toolbar = this.table.toolbar.find(
|
(item) => item.text === '提交审核'
|
)
|
if (toolbar) {
|
toolbar.loading = true
|
auditCustomerOrder(ids)
|
.then((response) => {
|
const resData = response.data
|
if (resData.code === 0) {
|
this.$message.success(resData.msg)
|
this.getData()
|
} else {
|
this.$message.error('提交审核失败!')
|
}
|
toolbar.loading = false
|
})
|
.catch(() => {
|
toolbar.loading = false
|
})
|
}
|
},
|
|
// 箱码信息导出
|
packageExportHandle(row) {
|
console.log(row.otcQuantity)
|
if (row.otcQuantity) {
|
this.packageExport.visible = true
|
this.packageExport.form = {
|
id: row.id,
|
customerOrderNo: row.customerOrderNo,
|
splitQuantity: '',
|
title: ''
|
}
|
this.$nextTick(() => {
|
this.$refs.packageExportForm.resetFields()
|
})
|
} else {
|
this.$message.error('销售数量不能为空')
|
}
|
},
|
packageExportSave() {
|
this.$refs.packageExportForm.validate((valid) => {
|
if (valid) {
|
this.packageExport.buttonDisable = true
|
exportCustomerOrderSplit({
|
id: this.packageExport.form.id,
|
splitQuantity: this.packageExport.form.splitQuantity,
|
title: this.packageExport.form.title
|
})
|
.then((response) => {
|
transform(response)
|
this.packageExport.visible = false
|
})
|
.finally(() => {
|
this.packageExport.buttonDisable = false
|
})
|
}
|
})
|
},
|
// 作废
|
cancelHandle(row) {
|
this.$confirm('确认作废销售订单号为【' + row.contractNo + '】的数据?','提示' , {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
closeOnClickModal: false,
|
type: 'warning'
|
}).then(() => {
|
dropByContractNo({id:row.id}).then((res) => {
|
if (res.data.code === 0) {
|
this.$message.success('作废成功')
|
this.getData()
|
} else {
|
this.$message.error('作废失败')
|
}
|
})
|
}).catch(()=>{ })
|
},
|
// 删除
|
deleteHandle(row) {
|
if (row.sourceId === 'GSM') {
|
this.$message.error('当前数据是推送数据不可删除')
|
return
|
}
|
this.$confirm('是否确认删除销售订单号为' + row.customerOrderNo + '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
closeOnClickModal: false,
|
type: 'warning'
|
})
|
.then(() => {
|
return delCustomerOrder(row.id)
|
})
|
.then((data) => {
|
this.$message.success('删除成功')
|
this.getData()
|
})
|
},
|
// table自带事件
|
handleSelectionChange(val) {
|
// 根据状态,禁用表头按钮
|
// 筛选出选中记录的状态
|
var stateArr = val.map(function(value, index) {
|
return value.coState
|
})
|
// 选中状态数组元素去重
|
var uniqueStateArr = []
|
for (var i = 0; i < stateArr.length; i++) {
|
if (uniqueStateArr.indexOf(stateArr[i]) == -1) {
|
uniqueStateArr.push(stateArr[i])
|
}
|
}
|
// 循环自定义按钮,判断每个按钮的permitArr是否完全包含选中状态,若完全包含,则按钮亮,否则按钮灰
|
for (var i = 0; i < this.stateTagArr.length; i++) {
|
if (
|
uniqueStateArr.every((val) =>
|
this.stateTagArr[i].permitArr.length <= 0
|
? true
|
: this.stateTagArr[i].permitArr.includes(val)
|
)
|
) {
|
this.stateTagArr[i].disabled = false
|
} else {
|
this.stateTagArr[i].disabled = true
|
}
|
}
|
this.multipleSelection = val
|
},
|
getCustomerCoState(row, column, cellValue) {
|
this.coStateList.forEach((obj) => {
|
if (obj.value === cellValue) {
|
cellValue = obj.label
|
}
|
})
|
return cellValue
|
},
|
getManufactureAttr(row, column, cellValue) {
|
this.manufactureAttrs.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) {
|
this.packageExport.titleList = response.data.data
|
} else {
|
this.packageExport.titleList = []
|
}
|
})
|
},
|
getIsAudit(row, column, cellValue) {
|
this.isAuditList.forEach((obj) => {
|
if (obj.value === cellValue) {
|
cellValue = obj.label
|
}
|
})
|
return cellValue
|
},
|
// 审核状态改变
|
handleCommitCommand(event) {
|
if (this.multipleSelection.length > 0) {
|
if (this.judgeCoState(this.multipleSelection)) {
|
let flag = true
|
if (event === 'PROCESSED') {
|
this.multipleSelection.forEach((item) => {
|
if (!(item.isAudit != null && item.isAudit == '01draft')) {
|
flag = false
|
}
|
})
|
}
|
if (flag) {
|
const docFlag = true
|
/* if (event === 'PROCESSED') {
|
this.multipleSelection.forEach((item) => {
|
if (item.technologyDocumentId == null) {
|
docFlag = false
|
}
|
})
|
} */
|
// if (docFlag) {
|
const customIds = []
|
this.multipleSelection.forEach((item) => {
|
customIds.push(item.id)
|
})
|
let stateStr = ''
|
if (event === 'PROCESSED') {
|
stateStr = '03accepted'
|
} else {
|
stateStr = '01draft'
|
}
|
changeBatchAudit(customIds, stateStr).then((response) => {
|
const data = response.data
|
if (data.code == 0) {
|
this.$message.success('审核状态变更成功')
|
this.getData()
|
} else {
|
this.$message.error('审核状态变更失败')
|
}
|
})
|
/* } else {
|
this.$message.error('销售订单,未关联工艺文件!')
|
} */
|
} else {
|
this.$message.error(
|
'只有【审核状态】为‘草稿’的销售订单,才能标记通过!'
|
)
|
}
|
} else {
|
this.$message.error('销售订单审核状态为作废,不可进行操作!')
|
}
|
} else {
|
this.$message.error('请选择一条销售订单')
|
}
|
},
|
// 状态改变
|
handleCommand(event) {
|
var eventName
|
if (event == '01partUnCheck') {
|
eventName = '零件待选'
|
} else if (event == '02technologyUnCheck') {
|
eventName = '工艺文件待选'
|
} else if (event == '03plan') {
|
eventName = '待计划'
|
} else if (event == '04planed') {
|
eventName = '已下发'
|
} else {
|
eventName = '已作废'
|
}
|
if (this.multipleSelection.length > 0) {
|
if (this.judgeCoState(this.multipleSelection)) {
|
markPlanned(
|
this.multipleSelection.map((item) => {
|
return item.id
|
}),
|
event
|
).then((response) => {
|
var data = response.data
|
if (data.code == 0) {
|
this.$message.success(eventName + '修改成功')
|
this.getData()
|
} else {
|
this.$message.error(eventName + '修改失败')
|
}
|
})
|
} else {
|
this.$message.error('销售订单审核状态为作废,不可进行操作!')
|
}
|
} else {
|
this.$message.error('请选择' + eventName + '的对象')
|
}
|
},
|
// 创建主计划需求
|
createMpsRequirements() {
|
if (this.multipleSelection && this.multipleSelection.length > 0) {
|
// 1.根据状态判断是否可以继续创建主计划需求
|
this.mpsRequirementsVisible = true
|
this.$nextTick(() => {
|
this.$refs.mpsRequirements.init(this.multipleSelection)
|
})
|
} else {
|
this.$message.error('请选择销售订单')
|
}
|
},
|
// 查看库存
|
stockHandle(row) {
|
this.stockVisible = true
|
this.partName = row.partName
|
},
|
selectDocument(document) {
|
if (document) {
|
this.changeDocument(document.id)
|
}
|
},
|
documentHandle(event) {
|
let status = false
|
this.events = event
|
if (this.multipleSelection.length == 0) {
|
this.$message.error('请至少选择一条销售订单')
|
} else {
|
if (this.judgeCoState(this.multipleSelection)) {
|
if (event == 'RELEVANCE') {
|
const firstPartNo = this.multipleSelection[0].partNo
|
this.multipleSelection.forEach((item) => {
|
if (item.isDocument) {
|
status = true
|
this.$message.error(
|
'存在销售订单已关联工艺文件,如需更改,请先解除关联'
|
)
|
}
|
// if (item.salesPartNo == null || item.salesPartNo === '') {
|
// status = true
|
// this.$message.error('存在销售订单未绑定销售件,请先绑定')
|
// }
|
if (item.partNo != firstPartNo) {
|
status = true
|
this.$message.error('订单零件号不一致')
|
}
|
})
|
if (!status) {
|
this.showDocument = true
|
}
|
} else {
|
this.changeDocument(null)
|
}
|
} else {
|
this.$message.error('销售订单审核状态为作废,不可进行操作!')
|
}
|
}
|
},
|
changeDocument(id) {
|
var eventName
|
if (this.events == 'RELEVANCE') {
|
eventName = '关联工艺文件'
|
const customerOrderIds = []
|
this.multipleSelection.forEach((item) => {
|
customerOrderIds.push(item.id)
|
})
|
handleDocument(customerOrderIds, id).then((res) => {
|
if (res.data.code == 0) {
|
this.$message.success(eventName + '成功')
|
this.getData()
|
} else {
|
this.$message.error(res.data.msg)
|
}
|
})
|
} else if (this.events == 'NORELEVANCE') {
|
eventName = '移除工艺文件'
|
const customerOrderIds = []
|
this.multipleSelection.forEach((item) => {
|
customerOrderIds.push(item.id)
|
})
|
rejectHandleDocument(customerOrderIds).then((res) => {
|
if (res.data.code == 0) {
|
this.$message.success(eventName + '成功')
|
this.getData()
|
} else {
|
this.$message.error(res.data.msg)
|
}
|
})
|
}
|
},
|
pushOtc() {
|
if (this.judgeCoState(this.multipleSelection)) {
|
const ids = []
|
this.multipleSelection.forEach((item) => {
|
ids.push(item.id)
|
})
|
pushotc(ids, { pathCode: '0' }).then((response) => {
|
const resData = response.data
|
if (resData.code === 0) {
|
this.$message.success('成功')
|
this.getData()
|
} else {
|
this.$message.error('失败')
|
}
|
})
|
} else {
|
this.$message.error('销售订单审核状态为作废,不可进行操作!')
|
}
|
},
|
importOutPutBatch() {
|
this.importDialogVisible = true
|
},
|
beforeAvatarUpload(file) {
|
const fileName = file.name
|
const fileType = fileName.substring(fileName.lastIndexOf('.') + 1)
|
const isLt10M = file.size / 1024 / 1024 < 10
|
if (fileType !== 'xlsx' && fileType !== 'xls') {
|
this.$message.error('文件格式只能为xlsx或xls,请删除后重新上传')
|
}
|
if (!isLt10M) {
|
this.$message({
|
message: '文件大小',
|
type: 'warning'
|
})
|
}
|
return isLt10M
|
},
|
// 文件上传成功回调事件
|
fileSuccessUploadScan(response, file, fileList) {
|
if (response.code != '0') {
|
this.$message.warning(response.msg)
|
} else {
|
this.$message({
|
message: '上传成功',
|
type: 'success'
|
})
|
this.getData()
|
}
|
this.$refs.outBatchUploadScan.clearFiles()
|
},
|
// 上传失败
|
handleError(err, file, fileList) {
|
const error = JSON.parse(err.message)
|
if (error.msg) {
|
this.$message.error(error.msg)
|
} else {
|
this.$message.error('上传失败')
|
}
|
},
|
downDataTemplate() {
|
uploadBatchTemplate().then((response) => {
|
const blob = new Blob([response.data], {
|
type: 'application/force-download'
|
})
|
const filename = decodeURI('模板文件.xlsx')
|
// 创建一个超链接,将文件流赋进去,然后实现这个超链接的单击事件
|
const elink = document.createElement('a')
|
elink.download = filename
|
elink.style.display = 'none'
|
elink.href = URL.createObjectURL(blob)
|
document.body.appendChild(elink)
|
elink.click()
|
URL.revokeObjectURL(elink.href) // 释放URL 对象
|
document.body.removeChild(elink)
|
})
|
},
|
// 导出台账
|
exportStandBook() {
|
// console.log(this.$refs.customerOrderTable.getQueryParam(),"SSS")
|
// if (this.multipleSelection.length > 0) {
|
// let ids = ''
|
// this.multipleSelection.forEach((item) => {
|
// ids = ids + item.id + '_'
|
// })
|
// ids = ids.substring(0, ids.length - 1)
|
// exportCustomerOrder(ids).then((response) => {
|
// const blob = new Blob([response.data], {
|
// type: 'application/force-download'
|
// })
|
// const filename = decodeURI('模板文件.xlsx')
|
// // 创建一个超链接,将文件流赋进去,然后实现这个超链接的单击事件
|
// const elink = document.createElement('a')
|
// elink.download = filename
|
// elink.style.display = 'none'
|
// elink.href = URL.createObjectURL(blob)
|
// document.body.appendChild(elink)
|
// elink.click()
|
// URL.revokeObjectURL(elink.href) // 释放URL 对象
|
// document.body.removeChild(elink)
|
// })
|
// } else {
|
// this.$message.error('请选择至少一条销售订单')
|
// }
|
exportCustomerOrder(this.$refs.customerOrderTable.getQueryParam())
|
.then((response) => {
|
transform(response)
|
})
|
.catch(() => {})
|
},
|
setSalesPart() {
|
if (this.multipleSelection.length > 0) {
|
// 打开销售件查询设置窗口
|
this.showSalesPartBatch = true
|
} else {
|
this.$message.error('请选择至少一条销售订单')
|
}
|
},
|
// 打开销售订单详情,编辑订单说明1我
|
openCustomerOrder(row) {
|
this.addOrUpdateEescVisible = true
|
this.$nextTick(() => {
|
this.$refs.addOrUpdateEesc.init(row ? row.id : row)
|
})
|
},
|
returnOrder() {
|
if (this.multipleSelection.length > 0) {
|
this.showCustomerorderReturn = true
|
} else {
|
this.$message.error('请选择至少一条销售订单')
|
}
|
},
|
syncERP() {
|
this.syncDateVisible = true
|
},
|
startSync() {
|
this.syncDateVisible = false
|
this.table.toolbar.find((e) => e.text === '获取销售订单').loading = true
|
|
if (this.dataForm.selectTime != null && this.dataForm.selectTime != '') {
|
otcCustomerOrderSync({
|
selectTime: this.dataForm.selectTime,
|
orderNo: ''
|
})
|
.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('请先选择日期')
|
}
|
}
|
}
|
}
|
</script>
|