<template> <div class="app-container"> <!-- 搜索工作栏 --> <search-bar :formConfigs="formConfig" ref="searchBarForm" @headBtnClick="buttonClick" /> <!-- 列表 --> <base-table :page="queryParams.pageNo" :limit="queryParams.pageSize" :table-props="tableProps" :table-data="list" :max-height="tableH"> <method-btn v-if="tableBtn.length" slot="handleBtn" :width="290" label="操作" :method-list="tableBtn" @clickBtn="handleClick" /> </base-table> <pagination :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" :total="total" @pagination="getList" /> <!-- 新增&编辑 --> <base-dialog :dialogTitle="addOrEditTitle" :dialogVisible="centervisible" @cancel="handleCancel" @confirm="handleConfirm" :before-close="handleCancel" width="60%"> <order-add ref="orderAdd" @successSubmit="successSubmit" /> </base-dialog> <!-- 查看详情 --> <!-- 新增工单 --> <base-dialog :dialogTitle="workIssueTitle" :dialogVisible="addWorkOrdervisible" @cancel="addWorkOrderCancel" @confirm="addWorkOrderConfirm" :before-close="addWorkOrderCancel" width="70%"> <add-work-order ref="addWorkOrder" @addWorkOrderSubmit="addWorkOrderSubmit" /> </base-dialog> </div> </template> <script> import { parseTime } from '@/utils/ruoyi'; import { getOrderPage, orderStatusSet, customerList, orderFinish, } from '@/api/base/orderManage'; import OrderAdd from './components/orderAdd'; import AddWorkOrder from './components/addWorkOrder'; import { publicFormatter } from '@/utils/dict'; import tableHeightMixin from '@/mixins/lb/tableHeightMixin'; const tableProps = [ { prop: 'createTime', label: '添加时间', filter: parseTime, minWidth: 160, }, { prop: 'name', label: '订单名称', minWidth: 140, showOverflowtooltip: true, }, { prop: 'code', label: '订单编码', minWidth: 150, showOverflowtooltip: true, }, { prop: 'triggerOrigin', label: '来源', filter: publicFormatter('order_Origin'), }, { prop: 'priority', label: '优先级', filter: publicFormatter('order_priority'), }, { prop: 'status', label: '订单状态', filter: publicFormatter('order_status'), }, { prop: 'planQuantity', label: '计划加工量', width: 100, }, { prop: 'actualQuantity', label: '实际加工量', width: 100, }, { prop: 'productName', label: '产品', width: 200, showOverflowtooltip: true, }, { prop: 'unit', label: '单位', filter: publicFormatter('unit_dict'), }, { prop: 'price', label: '单价(元)', align: 'right', }, { prop: 'workOrderNum', label: '工单数量', }, ]; export default { name: 'OrderManage', mixins: [tableHeightMixin], data() { return { formConfig: [ { type: 'input', label: '订单名称', placeholder: '订单名称', param: 'name', }, { type: 'select', label: '状态', selectOptions: this.getDictDatas(this.DICT_TYPE.ORDER_STATUS), labelField: 'label', valueField: 'value', param: 'status', }, { type: 'datePicker', label: '时间段', dateType: 'daterange', format: 'yyyy-MM-dd', valueFormat: 'yyyy-MM-dd', rangeSeparator: '-', startPlaceholder: '开始时间', endPlaceholder: '结束时间', param: 'timeVal', defaultSelect: [], width: 250, }, { type: 'button', btnName: '查询', name: 'search', color: 'primary', }, { type: this.$auth.hasPermi('base:order-manage:create') ? 'separate' : '', }, { type: this.$auth.hasPermi('base:order-manage:create') ? 'button' : '', btnName: '新增', name: 'add', color: 'success', plain: true, }, ], // 查询参数 queryParams: { pageNo: 1, pageSize: 20, name: null, status: null, lastIssuedTime: [], }, total: 0, tableProps, list: [], tableBtn: [ this.$auth.hasPermi('base:order-manage:addWorkOrder') ? { type: 'add', btnName: '新增', showTip: '新增工单', showParam: { type: '&', data: [ { type: 'less', name: 'status', value: 3, }, ], }, } : undefined, this.$auth.hasPermi('base:order-manage:bindWorkOrder') ? { type: 'bind', btnName: '绑定', showTip: '绑定工单', showParam: { type: '&', data: [ { type: 'less', name: 'status', value: 3, }, ], }, } : undefined, this.$auth.hasPermi('base:order-manage:complete') ? { type: 'complete', btnName: '完成', showTip: '完成订单', showParam: { type: '&', data: [ { type: 'equal', name: 'status', value: 3, }, ], }, } : undefined, this.$auth.hasPermi('base:order-manage:termination') ? { type: 'termination', btnName: '终止', showTip: '终止', showParam: { type: '&', data: [ { type: 'equal', name: 'status', value: 3, }, ], }, } : undefined, this.$auth.hasPermi('base:order-manage:cancel') ? { type: 'cancel', btnName: '作废', showTip: '作废', showParam: { type: '&', data: [ { type: 'less', name: 'status', value: 2, }, ], }, } : undefined, this.$auth.hasPermi('base:order-manage:detail') ? { type: 'detail', btnName: '详情', } : undefined, this.$auth.hasPermi('base:order-manage:edit') ? { type: 'edit', btnName: '编辑', showParam: { type: '&', data: [ { type: 'less', name: 'status', value: 2, }, ], }, } : undefined, ].filter((v) => v), addOrEditTitle: '', centervisible: false, priorityList: this.getDictDatas(this.DICT_TYPE.ORDER_PRIORITY), workIssueTitle: '', addWorkOrdervisible: false, orderDetailVisible: false, }; }, components: { OrderAdd, AddWorkOrder }, created() { this.getList(); }, methods: { getList() { getOrderPage({ ...this.queryParams }).then((res) => { let arr = res.data.records || []; this.total = res.data.total || 0; if (arr.length > 0) { customerList().then((result) => { let tempData = result.data || []; if (tempData.length > 0) { arr.map((item) => { for (let i of tempData) { if (item.customerId === i.id) { item.customerId = i.name; } } item.price = item.price ? item.price.toFixed(2) : '0.00'; }); this.list = arr; } }); } else { this.list = arr; } }); }, buttonClick(val) { console.log(val); if (val.btnName === 'search') { this.queryParams.name = val.name; this.queryParams.status = val.status; if (val.timeVal && val.timeVal.length > 0) { this.queryParams.lastIssuedTime[0] = val.timeVal[0] + ' 00:00:00'; this.queryParams.lastIssuedTime[1] = val.timeVal[1] + ' 23:59:59'; } else { this.queryParams.lastIssuedTime = []; } this.getList(); } else { this.addOrEditTitle = '新增'; this.centervisible = true; this.$nextTick(() => { this.$refs.orderAdd.init(); }); } }, handleClick(val) { console.log(val); switch (val.type) { case 'edit': this.addOrEditTitle = '编辑'; this.centervisible = true; this.$nextTick(() => { this.$refs.orderAdd.init(val.data.id); }); break; case 'cancel': this.handleEditStatus(val.data, '作废', '6'); break; case 'termination': this.handleEditStatus(val.data, '终止', '5'); break; case 'detail': this.$router.push({ path: '/order/base/order-manage/order-detail-data?orderId=' + val.data.id, }); break; case 'add': this.workIssueTitle = '新增工单'; this.addWorkOrdervisible = true; this.$nextTick(() => { this.$refs.addWorkOrder.init(val.data, 'add'); }); break; case 'bind': this.workIssueTitle = '绑定工单'; this.addWorkOrdervisible = true; this.$nextTick(() => { this.$refs.addWorkOrder.init(val.data, 'bind'); }); break; case 'complete': this.handleEditStatus(val.data, '完成', '4'); break; default: } }, // 完成,终止,作废 handleEditStatus(val, tip, status) { let _this = this; if (val.workOrderNum > 0) { //有下级工单 _this .$confirm('是否将"' + tip + '"操作同步至下级工单?', '确认信息', { type: 'warning', distinguishCancelAndClose: true, confirmButtonText: '同步', cancelButtonText: '不同步', }) .then(function () { console.log('同步'); orderStatusSet({ id: val.id, status: status, isSync: true }).then( () => { _this.getList(); _this.$modal.msgSuccess('操作成功'); } ); }) .catch((action) => { if (action === 'cancel') { console.log('不同步'); orderStatusSet({ id: val.id, status: status, isSync: false, }).then(() => { _this.getList(); _this.$modal.msgSuccess('操作成功'); }); } else { return console.log('关闭'); } }); } else { // 无下级工单 _this.$modal .confirm( '是否确认"' + tip + '"厂务订单名称为"' + val.name + '"的数据项?' ) .then(function () { return orderStatusSet({ id: val.id, status: status }); }) .then(() => { _this.getList(); _this.$modal.msgSuccess('操作成功'); }) .catch(() => {}); } }, // 新增 handleCancel() { this.$refs.orderAdd.formClear(); this.centervisible = false; this.addOrEditTitle = ''; }, handleConfirm() { this.$refs.orderAdd.submitForm(); }, successSubmit() { this.handleCancel(); this.getList(); }, // 下发新增 addWorkOrderCancel() { this.$refs.addWorkOrder.formClear(); this.addWorkOrdervisible = false; }, addWorkOrderConfirm() { this.$refs.addWorkOrder.addWorkOrderSubmit(); }, addWorkOrderSubmit() { this.addWorkOrderCancel(); this.getList(); }, // bindWorkOrderCancel() { // this.$refs.bindWorkOrder.formClear() // this.bindWorkOrdervisible = false // }, // bindWorkOrderConfirm() { // this.$refs.bindWorkOrder.bindWorkOrderSubmit() // }, // bindWorkOrderSubmit() { // this.bindWorkOrderCancel() // this.getList() // } }, }; </script>