| | |
| | | :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" |
| | |
| | | </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 }} |
| | |
| | | </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="()=>exportDialogVisible=true" |
| | | @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" |
| | |
| | | <div> |
| | | <div> |
| | | <el-upload |
| | | style="margin-left:8px;display: inline;" |
| | | style="margin-left: 8px; display: inline" |
| | | class="upload-demo" |
| | | drag |
| | | :headers="headers" |
| | |
| | | <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 |
| | | > |
| | |
| | | <span slot="footer" class="dialog-footer"> </span> |
| | | </el-dialog> |
| | | <!-- 导出 --> |
| | | <el-dialog title="导出台账" :visible.sync="exportDialogVisible" width="20%"> |
| | | <div style="display: flex;justify-content: center"> |
| | | <el-form :model="dataForm" :inline="true" :rules="dataRule" ref="exportForm" class="l-mes"> |
| | | <el-dialog |
| | | title="导出台账" |
| | | :visible.sync="exportDialogVisible" |
| | | width="20%" |
| | | > |
| | | <div style="display: flex; justify-content: center"> |
| | | <el-form |
| | | :model="dataForm" |
| | | :inline="true" |
| | | :rules="dataRule" |
| | | ref="exportForm" |
| | | class="l-mes" |
| | | > |
| | | <el-form-item label="日期" prop="exportTime"> |
| | | <el-date-picker |
| | | v-model="dataForm.exportTime" |
| | | type="datetime" |
| | | style="width:100%" |
| | | style="width: 100%" |
| | | placeholder="选择日期时间" |
| | | value-format="yyyy-MM-dd HH:mm:ss"> |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | > |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="exportDialogVisible=false">取 消</el-button> |
| | | <el-button type="primary" @click="exportStandBook">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="exportDialogVisible = false">取 消</el-button> |
| | | <el-button type="primary" @click="exportStandBook">确 定</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | <!-- 箱码信息导出 --> |
| | | <el-dialog |
| | | title="箱码信息导出" |
| | |
| | | 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 /> |
| | |
| | | </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> |
| | |
| | | <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' |
| | |
| | | exportCustomerOrder, |
| | | exportCustomerOrderSplit, |
| | | syncOrder, |
| | | dropByContractNo |
| | | dropByContractNo, |
| | | downloadProduct, |
| | | downloadWordFile |
| | | } from '../../../api/plan/customerorder' |
| | | import DocumentTable from '@/views/common/document.vue' |
| | | import { remote } from '@/api/admin/dict' |
| | |
| | | export default { |
| | | data() { |
| | | return { |
| | | interrelatedOrderId: null, |
| | | interrelatedOrderData: [], |
| | | showInterrelatedOrderDialog: false, |
| | | uniqueStateArr: [], |
| | | dataForm: { |
| | | selectTime: null, |
| | | exportTime: null |
| | | exportTime: null, |
| | | }, |
| | | dataRule: { |
| | | exportTime:[{required:true,message:'导出日期不能为空',trigger:'change'}] |
| | | exportTime: [ |
| | | { required: true, message: '导出日期不能为空', trigger: 'change' }, |
| | | ], |
| | | }, |
| | | pickerOptions: { |
| | | onPick: ({ maxDate, minDate }) => { |
| | |
| | | ) |
| | | } |
| | | return false |
| | | } |
| | | }, |
| | | }, |
| | | exportDialogVisible: false, |
| | | syncDateVisible: false, |
| | |
| | | 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: '', |
| | |
| | | uploadInfo: { |
| | | // 是否展示上传EXCEL以及对应的url |
| | | isShow: false, |
| | | url: '' |
| | | url: '', |
| | | }, |
| | | prelang: 'operation', |
| | | options: { |
| | |
| | | isRefresh: true, // 是否显示刷新按钮 |
| | | isShowHide: true, // 是否显示显影按钮H |
| | | isSearch: true, // 高级查询按钮 |
| | | defaultOrderBy: { column: 'createTime', direction: 'desc' }, |
| | | cancelRunCreated: true |
| | | defaultOrderBy: { column: 'placeOrderDate', direction: 'desc' }, |
| | | cancelRunCreated: true, |
| | | }, |
| | | table: { |
| | | total: 0, |
| | |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | render: { fun: this.addOrUpdateHandle } |
| | | render: { fun: this.addOrUpdateHandle }, |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | |
| | | label: '工程名称', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | minWidth: '100', |
| | | prop: 'sourceId', |
| | | label: '添加来源', |
| | | isTag: true, |
| | |
| | | formatter: this.getSourceId, |
| | | optList: () => { |
| | | return this.sourceIdList |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | minWidth: '200', |
| | |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'datetimerange', |
| | | formatter: this.formatDutyDate |
| | | formatter: this.formatDutyDate, |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | formatter: this.formatDutyDate |
| | | formatter: this.formatDutyDate, |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | |
| | | formatter: this.getCustomerCoState, |
| | | optList: () => { |
| | | return this.coStateList |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'isAudit', |
| | | label: '审核状态', |
| | | label: 'PLM审核状态', |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | |
| | | formatter: this.getIsAudit, |
| | | optList: () => { |
| | | return this.isAuditList |
| | | } |
| | | }, |
| | | }, |
| | | // { |
| | | // minWidth: '80', |
| | | // prop: 'sourceId', |
| | | // label: '订单来源', |
| | | // sort: true, |
| | | // isTrue: true, |
| | | // isSearch: true, |
| | | // searchInfoType: 'text' |
| | | // }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'isPass', |
| | | label: '审核通过状态', |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'select', |
| | | formatter: this.checkIsPass, |
| | | optList: () => { |
| | | return this.isPassList |
| | | }, |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'isOa', |
| | | label: '是否提交oa', |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'select', |
| | | formatter: this.checkIsOa, |
| | | optList: () => { |
| | | return this.isOaList |
| | | }, |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | width: '100px', |
| | |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | |
| | | label: '隶属品牌', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | |
| | | label: '单位', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '140', |
| | |
| | | formatter: this.getManufactureAttr, |
| | | optList: () => { |
| | | return this.manufactureAttrList |
| | | } |
| | | }, |
| | | }, |
| | | { |
| | | minWidth: '140', |
| | |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '140', |
| | |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '140', |
| | |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '140', |
| | |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '140', |
| | |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'datetimerange', |
| | | formatter: this.formatDutyDate |
| | | formatter: this.formatDutyDate, |
| | | }, |
| | | ], |
| | | toolbar: [], |
| | |
| | | // 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, |
| | |
| | | val: [ |
| | | '01partUnCheck', |
| | | '02technologyUnCheck', |
| | | '03plan' |
| | | '03plan', |
| | | // '04planed' |
| | | ], |
| | | key: 'coState' |
| | | } |
| | | } |
| | | key: 'coState', |
| | | }, |
| | | }, |
| | | ], |
| | | operatorConfig: { |
| | | fixed: 'right', |
| | | label: '操作', |
| | | width: 100, |
| | | 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' |
| | | }], |
| | | 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' |
| | | }], |
| | | sourceIdList: [ |
| | | { |
| | | label: '同步', |
| | | value: '0', |
| | | }, |
| | | { |
| | | label: '手动', |
| | | value: '1', |
| | | }, |
| | | ], |
| | | stockVisible: false, |
| | | partName: null, |
| | | showPullCustomerOrderVisible: false, |
| | |
| | | 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', |
| | |
| | | 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: { |
| | |
| | | SampleTableForm, |
| | | SalesPartBatchDialog, |
| | | TableFormDEesc, |
| | | CustomerorderReturnDialog |
| | | CustomerorderReturnDialog, |
| | | }, |
| | | computed: { |
| | | ...mapGetters(['permissions']) |
| | | ...mapGetters(['permissions']), |
| | | }, |
| | | watch: { |
| | | exportDialogVisible(newVal){ |
| | | if(!newVal){ |
| | | this.$refs['exportForm'].resetFields() |
| | | exportDialogVisible(newVal) { |
| | | if (!newVal) { |
| | | this.$refs.exportForm.resetFields() |
| | | } |
| | | }, |
| | | coState: { |
| | |
| | | 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.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: '下载工艺文件', |
| | | 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 |
| | | }, |
| | |
| | | }, |
| | | // 创建主生产计划 |
| | | masterPlanHandle() { |
| | | console.log(this.multipleSelection); |
| | | if (this.multipleSelection && this.multipleSelection.length > 0) { |
| | | if (this.judgeCoState(this.multipleSelection)) { |
| | | // 判断一下剩余数量是否大于0 |
| | |
| | | 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) |
| | |
| | | }, |
| | | // 新增 / 修改 |
| | | 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) |
| | | }) |
| | | }, |
| | | // 打开日期选择框 |
| | |
| | | // 审核销售订单 |
| | | 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) |
| | |
| | | this.$message.success(resData.msg) |
| | | this.getData() |
| | | } else { |
| | | this.$message.error('提交审核失败!') |
| | | this.$message.error('提交OA失败!') |
| | | } |
| | | 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: '' |
| | | title: '', |
| | | } |
| | | this.$nextTick(() => { |
| | | this.$refs.packageExportForm.resetFields() |
| | |
| | | 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) |
| | |
| | | }, |
| | | // 作废 |
| | | 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() |
| | |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | closeOnClickModal: false, |
| | | type: 'warning' |
| | | type: 'warning', |
| | | }) |
| | | .then(() => { |
| | | return delCustomerOrder(row.id) |
| | |
| | | handleSelectionChange(val) { |
| | | // 根据状态,禁用表头按钮 |
| | | // 筛选出选中记录的状态 |
| | | var stateArr = val.map(function(value, index) { |
| | | var stateArr = val.map(function (value, index) { |
| | | return value.coState |
| | | }) |
| | | // 选中状态数组元素去重 |
| | |
| | | this.stateTagArr[i].disabled = false |
| | | } else { |
| | | 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 |
| | |
| | | }, |
| | | 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 |
| | | } |
| | |
| | | } 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) { |
| | |
| | | if (!isLt10M) { |
| | | this.$message({ |
| | | message: '文件大小', |
| | | type: 'warning' |
| | | type: 'warning', |
| | | }) |
| | | } |
| | | return isLt10M |
| | |
| | | } else { |
| | | this.$message({ |
| | | message: '上传成功', |
| | | type: 'success' |
| | | type: 'success', |
| | | }) |
| | | this.getData() |
| | | } |
| | |
| | | downDataTemplate() { |
| | | uploadBatchTemplate().then((response) => { |
| | | const blob = new Blob([response.data], { |
| | | type: 'application/force-download' |
| | | type: 'application/force-download', |
| | | }) |
| | | const filename = decodeURI('模板文件.xlsx') |
| | | // 创建一个超链接,将文件流赋进去,然后实现这个超链接的单击事件 |
| | |
| | | }, |
| | | // 导出台账 |
| | | exportStandBook() { |
| | | // console.log(this.$refs.customerOrderTable.getQueryParam(),"SSS") |
| | | // if (this.multipleSelection.length > 0) { |
| | | // let ids = '' |
| | | // this.multipleSelection.forEach((item) => { |
| | |
| | | // } else { |
| | | // this.$message.error('请选择至少一条销售订单') |
| | | // } |
| | | this.$refs['exportForm'].validate(valid => { |
| | | if(valid){ |
| | | this.$refs['exportForm'].validate((valid) => { |
| | | if (valid) { |
| | | const exportTime = this.dataForm.exportTime |
| | | let queryParam=this.$refs.customerOrderTable.getQueryParam(); |
| | | let queryParam = this.$refs.customerOrderTable.getQueryParam() |
| | | queryParam.selectTime = exportTime |
| | | exportCustomerOrder(queryParam) |
| | | .then((response) => { |
| | |
| | | if (this.dataForm.selectTime != null && this.dataForm.selectTime != '') { |
| | | otcCustomerOrderSync({ |
| | | selectTime: this.dataForm.selectTime, |
| | | pathCode: '1' |
| | | pathCode: '1', |
| | | }) |
| | | .then((response) => { |
| | | this.table.toolbar.find( |
| | |
| | | ).loading = false |
| | | this.$message.error('请先选择日期') |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | }, |
| | | } |
| | | </script> |