Browse Source

生产订单相关 2022年12月1日 sxm

master
[li_she] 4 years ago
parent
commit
e063a4fa06
  1. 3
      src/api/shopOrder/shopOrder.js
  2. 8
      src/api/shopOrder/soroutingAvailableResource.js
  3. 29
      src/assets/scss/global.scss
  4. 4
      src/views/modules/report/reportCategory.vue
  5. 2
      src/views/modules/shopOrder/productionOrderScheduling/searchProductionDispatchList.vue
  6. 2
      src/views/modules/shopOrder/shopOrder/common/tool_add_and_edit.vue
  7. 315
      src/views/modules/shopOrder/shopOrder/shopOrder.vue

3
src/api/shopOrder/shopOrder.js

@ -92,5 +92,8 @@ export const updateShopOrderToolData = data => createAPI('/shopOrder/updateShopO
// 查询工单的工具信息 // 查询工单的工具信息
export const deleteShopOrderToolData = data => createAPI('/shopOrder/deleteShopOrderToolData', 'post', data) export const deleteShopOrderToolData = data => createAPI('/shopOrder/deleteShopOrderToolData', 'post', data)
// 更改生产工单工艺路线
export const shopOrderUpdateRoutingViaRev = data => createAPI('/shopOrder/shopOrderUpdateRoutingViaRev', 'post', data)

8
src/api/shopOrder/soroutingAvailableResource.js

@ -0,0 +1,8 @@
import { createAPI } from "@/utils/httpRequest.js";
// -------------产线操作员登记表--------------
// 获取生产订单工序可用机台
export const getSORoutingAvailableResource = data => createAPI(`/shoporder/soroutingAvailableResource/getSORoutingAvailableResource`,'post',data)
// 修改生产订单工序可用机台
export const updateSORoutingAvailableResource = data => createAPI(`/shoporder/soroutingAvailableResource/updateSORoutingAvailableResource`,'post',data)

29
src/assets/scss/global.scss

@ -398,3 +398,32 @@ a:hover{
font-size: 12px; font-size: 12px;
} }
.el-transfer-panel {
border: 2px solid #17b3a3;
border-radius: 4px;
overflow: hidden;
background: #fff;
display: inline-block;
vertical-align: middle;
width: 252px;
max-height: 100%;
-webkit-box-sizing: border-box;
box-sizing: border-box;
position: relative;
}
.el-transfer-panel .el-transfer-panel__header {
height: 40px;
line-height: 40px;
background: #17b3a3;
margin: 0;
padding-left: 15px;
border-bottom: 1px solid #17b3a3;
-webkit-box-sizing: border-box;
box-sizing: border-box;
color: #000;
}
.rred input {
color: red;
}

4
src/views/modules/report/reportCategory.vue

@ -312,8 +312,8 @@ export default {
if (data.data.length > 0) { if (data.data.length > 0) {
this.buttons = data.data this.buttons = data.data
} else { } else {
saveButtonList(this.buttonList).then(({data}) => {
})
// saveButtonList(this.buttonList).then(({data}) => {
// })
} }
}) })
}, },

2
src/views/modules/shopOrder/productionOrderScheduling/searchProductionDispatchList.vue

@ -188,7 +188,7 @@
}, },
searchData: { searchData: {
site:'', site:'',
orderNo:'',
orderNo:this.$route.query.orderNo,
checked: true, checked: true,
partNo:'', partNo:'',
sResourceID:'', sResourceID:'',

2
src/views/modules/shopOrder/shopOrder/common/tool_add_and_edit.vue

@ -5,7 +5,7 @@
@close="closeDialog" @close="closeDialog"
width="390px" width="390px"
class="sxm" class="sxm"
:title="titile"
:title="titleCon"
:close-on-click-modal="false" :close-on-click-modal="false"
:visible.sync="visible"> :visible.sync="visible">
<el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 0px;"> <el-form :inline="true" label-position="top" style="margin-left: 7px;margin-top: 0px;">

315
src/views/modules/shopOrder/shopOrder/shopOrder.vue

@ -33,15 +33,36 @@
<el-tabs style="font-size: 12px" class="customer-tab" v-model="activeName" type="border-card"> <el-tabs style="font-size: 12px" class="customer-tab" v-model="activeName" type="border-card">
<el-tab-pane :label=labels.orderLabel name="first"> <el-tab-pane :label=labels.orderLabel name="first">
<el-form :inline="true" label-position="top" label-width="100px" style="margin-top: 0px;"> <el-form :inline="true" label-position="top" label-width="100px" style="margin-top: 0px;">
<el-button @click="updateModal" :disabled = authEdit type="primary" style="margin-left: 2px;margin-top: 0px">{{ buttons.editButton }}</el-button>
<el-button @click="deleteData" :disabled = "authDelete" type="primary" style="margin-left: 2px;margin-top: 0px">{{ buttons.deleteButton }}</el-button>
<el-button @click="printOrder()" type="primary" style="margin-left: 2px;margin-top: 0px">{{ buttons.printButton }}
<el-dropdown trigger="click" style="margin-top: 3px" class="customer-dropdown" @command="handleCommand">
<el-button type="primary" :disabled="authEdit">
{{ buttons.orderPrimaryMenu }}<i class="el-icon-arrow-down el-icon--right"></i>
</el-button> </el-button>
<el-button @click="warnCancelOrderConfirm()" :disabled="authEdit" type="primary" style="margin-left: 2px;margin-top: 0px">{{ buttons.cancelButton }}
<el-dropdown-menu slot="dropdown">
<el-dropdown-item class="customer-li" command="orderToScheduling"><span>{{
buttons.orderToScheduling
}}</span>
</el-dropdown-item>
<el-dropdown-item class="customer-li" command="changeRouting"><span>{{ buttons.changeRouting }}</span>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-button @click="updateModal" :disabled=authEdit type="primary" style="margin-left: 2px;margin-top: 0px">
{{ buttons.editButton }}
</el-button> </el-button>
<el-button @click="warnCloseOrderConfirm()" :disabled = "authEdit" type="primary" style="margin-left: 2px;margin-top: 0px">{{ buttons.closeButton }}
<el-button @click="deleteData" :disabled="authDelete" type="primary" style="margin-left: 2px;margin-top: 0px">
{{ buttons.deleteButton }}
</el-button> </el-button>
<el-button @click="warnOpenOrderConfirm()" :disabled = "authEdit" type="primary" style="margin-left: 2px;margin-top: 0px">{{ buttons.openButton }}
<el-button @click="printOrder()" type="primary" style="margin-left: 2px;margin-top: 0px">
{{ buttons.printButton }}
</el-button>
<el-button @click="warnCancelOrderConfirm()" :disabled="authEdit" type="primary"
style="margin-left: 2px;margin-top: 0px">{{ buttons.cancelButton }}
</el-button>
<el-button @click="warnCloseOrderConfirm()" :disabled="authEdit" type="primary"
style="margin-left: 2px;margin-top: 0px">{{ buttons.closeButton }}
</el-button>
<el-button @click="warnOpenOrderConfirm()" :disabled="authEdit" type="primary"
style="margin-left: 2px;margin-top: 0px">{{ buttons.openButton }}
</el-button> </el-button>
</el-form> </el-form>
<el-form :inline="true" label-position="top" label-width="100px" style="margin-top: 10px;"> <el-form :inline="true" label-position="top" label-width="100px" style="margin-top: 10px;">
@ -246,6 +267,10 @@
<el-dropdown-item class="customer-li" command="0"><span>{{ buttons.routingMenu }}</span> <el-dropdown-item class="customer-li" command="0"><span>{{ buttons.routingMenu }}</span>
</el-dropdown-item> </el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item class="customer-li" command="routingResource"><span>{{ buttons.resources }}</span>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown> </el-dropdown>
</el-col> </el-col>
</el-row> </el-row>
@ -255,6 +280,8 @@
:height="height" :height="height"
:data="dataList2" :data="dataList2"
border border
highlight-current-row
@current-change="routingCurrentChange"
v-loading="dataListLoading" v-loading="dataListLoading"
style="width: 100%;"> style="width: 100%;">
<el-table-column <el-table-column
@ -331,6 +358,7 @@
</el-table> </el-table>
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
<el-dialog :title=labels.orderList :close-on-click-modal="false" v-drag :visible.sync="modelFlag2" width="800px"> <el-dialog :title=labels.orderList :close-on-click-modal="false" v-drag :visible.sync="modelFlag2" width="800px">
<el-form :inline="true" label-position="top" label-width="100px" style="margin-top: -5px;"> <el-form :inline="true" label-position="top" label-width="100px" style="margin-top: -5px;">
<el-form-item :label=labels.orderNo> <el-form-item :label=labels.orderNo>
@ -417,6 +445,7 @@
<el-button type="primary" @click="modelFlag2 = false">{{ buttons.closeButton }}</el-button> <el-button type="primary" @click="modelFlag2 = false">{{ buttons.closeButton }}</el-button>
</el-footer> </el-footer>
</el-dialog> </el-dialog>
<!-- 生产工单 -->
<el-dialog :title=labels.shopOrder :close-on-click-modal="false" v-drag :visible.sync="modelFlag3" width="550px"> <el-dialog :title=labels.shopOrder :close-on-click-modal="false" v-drag :visible.sync="modelFlag3" width="550px">
<el-form :inline="true" label-position="top" label-width="100px" style="margin-top: -5px;"> <el-form :inline="true" label-position="top" label-width="100px" style="margin-top: -5px;">
@ -496,12 +525,94 @@
<el-button type="primary" @click="modelFlag3 = false">关闭</el-button> <el-button type="primary" @click="modelFlag3 = false">关闭</el-button>
</el-footer> </el-footer>
</el-dialog> </el-dialog>
<!-- 选择列表 -->
<Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist> <Chooselist ref="baseList" @getBaseData="getBaseData"></Chooselist>
<!-- 工艺路线 -->
<Routing ref="routing" @tableHanddle="tableHanddle"></Routing> <Routing ref="routing" @tableHanddle="tableHanddle"></Routing>
<!--订单的工具信息维护--> <!--订单的工具信息维护-->
<shopOrderTool ref="shopOrderTool" @tableHanddle="tableHanddle"></shopOrderTool> <shopOrderTool ref="shopOrderTool" @tableHanddle="tableHanddle"></shopOrderTool>
<!-- 工艺路线可用机台 -->
<el-dialog
style="font-size: 12px"
v-drag
:title="'工艺路线设置可用机台'"
:visible.sync="routingVisible"
width="621px"
:append-to-body="true">
<el-form class="rred" :inline="true" label-position="top">
<el-form-item label="订单编号">
<el-input readonly v-model="routingResourceData.orderNo"></el-input>
</el-form-item>
<el-form-item label="工序号">
<el-input readonly v-model="routingResourceData.itemNo"></el-input>
</el-form-item>
</el-form>
<el-transfer v-model="resourceList" :data="selectResourceList"
:titles="['可选机台列表', '已选机台列表']"></el-transfer>
<span slot="footer" class="dialog-footer">
<div style="margin-top: 5px">
<el-button type="primary" @click="saveOrderItemNoResource()">确定</el-button>
<el-button @click="routingVisible = false" type="primary">取消</el-button>
</div>
</span>
</el-dialog>
<!-- 工艺路线变更 -->
<el-dialog
style="font-size: 12px"
v-drag
:title="'更改产品工艺路线'"
:visible.sync="changeRoutingVisible"
width="611px"
:append-to-body="true">
<el-form class="rred" :inline="true" label-position="top">
<el-form-item label="物料编码">
<el-input readonly v-model="modelData.partNo"></el-input>
</el-form-item>
<el-form-item label="物料名称/规格">
<el-input style="width: 410px;" readonly v-model="modelData.partDesc"></el-input>
</el-form-item>
</el-form>
<el-table
:height="300"
:data="partRoutingList"
border
highlight-current-row
@row-dblclick="dblclickPartRouting"
@current-change="clickPartRouting"
style="width: 100%;">
<el-table-column
prop="revNo"
width="100"
label="版本号">
</el-table-column>
<el-table-column
prop="status"
width="100"
label="状态">
</el-table-column>
<el-table-column
prop="phaseInDate"
width="120"
label="启用日期">
</el-table-column>
<el-table-column
prop="phaseOutDate"
width="120"
label="停用日期">
</el-table-column>
<el-table-column
prop="remark"
width="150"
label="备注">
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<div style="margin-top: 5px">
<el-button type="primary" @click="updateOrderRouting()">确定</el-button>
<el-button @click="changeRoutingVisible = false" type="primary">取消</el-button>
</div>
</span>
</el-dialog>
</div> </div>
</template> </template>
@ -510,7 +621,14 @@
import Routing from './common/routing'; import Routing from './common/routing';
import shopOrderTool from './common/shop_order_tool';/*工具的信息维护*/ import shopOrderTool from './common/shop_order_tool';/*工具的信息维护*/
import {
getSORoutingAvailableResource,
updateSORoutingAvailableResource
} from "@/api/shopOrder/soroutingAvailableResource.js"
import {
searchRoutingWithPartNo,
searchAllResource,
} from "@/api/base/site.js"
import { import {
getShopOrderData, getShopOrderData,
deleteShopOrderData, deleteShopOrderData,
@ -521,6 +639,7 @@
cancelShopOrderBun,// cancelShopOrderBun,//
closeShopOrder,// closeShopOrder,//
openShopOrder,// openShopOrder,//
shopOrderUpdateRoutingViaRev, // 线
} from "@/api/shopOrder/shopOrder.js" } from "@/api/shopOrder/shopOrder.js"
import Chooselist from '@/views/modules/common/Chooselist' import Chooselist from '@/views/modules/common/Chooselist'
@ -537,13 +656,12 @@
removerLanguage, removerLanguage,
saveSysLanguageList saveSysLanguageList
} from "@/api/sysLanguage.js"; } from "@/api/sysLanguage.js";
var functionId = '104001001';
var functionId = '104001001';
export default { export default {
//-线() //-线()
name: "searchProductionLineOutputReportInOrderNo",
components: { components: {
Chooselist, Chooselist,
Routing, Routing,
@ -574,6 +692,19 @@
exportHeader3: ["工具信息"], exportHeader3: ["工具信息"],
exportFooter3: [], exportFooter3: [],
// end // end
//
routingVisible: false,
routingResourceData: {
orderNo: '',
site: '',
itemNo: '',
},
selectResourceList: [],
resourceList: [],
// 线
changeRoutingVisible: false,
partRoutingList: [],
partRoutingData: {},
activeName: 'first', activeName: 'first',
height: 200, height: 200,
modelFlag2: false, modelFlag2: false,
@ -1713,6 +1844,9 @@
orderInfo: null, orderInfo: null,
orderSoBom: [], orderSoBom: [],
buttons: { buttons: {
orderPrimaryMenu: '主菜单',
orderToScheduling: '查看派工单信息',
changeRouting: '变更工艺路线',
orderListButton: '列表', orderListButton: '列表',
editButton: '编辑', editButton: '编辑',
deleteButton: '删除', deleteButton: '删除',
@ -1724,6 +1858,7 @@
download2: '导出', download2: '导出',
routingPrimaryMenu: '主菜单', routingPrimaryMenu: '主菜单',
routingMenu: '工艺路线', routingMenu: '工艺路线',
resources: '可用机台',
download3: '导出', download3: '导出',
toolPrimaryMenu: '主菜单', toolPrimaryMenu: '主菜单',
toolMenu: '工具信息', toolMenu: '工具信息',
@ -1797,6 +1932,8 @@
toolLabel: '工具', toolLabel: '工具',
orderList: '订单列表', orderList: '订单列表',
to: '至:', to: '至:',
notSelectItemNo: '请选择工序!',
pleaseSelectPartRouting: '请选择工艺路线版本'
}, },
queryLabel: { queryLabel: {
functionId: functionId, functionId: functionId,
@ -1838,19 +1975,167 @@
}) })
}, },
methods: { methods: {
// //
handleCommand(command) { handleCommand(command) {
switch (command) { switch (command) {
case '0': case '0':
//
this.getRouting() this.getRouting()
break; break;
case '1': case '1':
//
this.getShopOrderToolData() this.getShopOrderToolData()
break; break;
};
//
case 'routingResource':
//
this.openResourceDialog()
break;
case 'changeRouting':
// 线
this.openChangeRoutingDialog()
break;
case 'orderToScheduling':
//
this.$router.push({
path: '/shopOrder-productionOrderScheduling/searchProductionDispatchList',
query: {
orderNo: this.modelData.orderNo,
}
})
break;
}
},
// 线
openChangeRoutingDialog() {
if (!this.modelData.orderNo) {
this.$message.warning(this.labels.pleaseSelectShopOrder)
return
}
this.getRoutingWithPartNo()
this.changeRoutingVisible = true
},
// 线
getRoutingWithPartNo() {
let dto = {
site: this.$store.state.user.site,
partNo: this.modelData.partNo
}
searchRoutingWithPartNo(dto).then(({data}) => {
if (data.success) {
this.partRoutingList = data.rows;
}
})
},
//
clickPartRouting(row) {
this.partRoutingData = row
},
// routing
dblclickPartRouting(row) {
this.partRoutingData = row
this.updateOrderRouting()
},
// 线
updateOrderRouting() {
if (!this.partRoutingData) {
this.$message.warning(this.labels.pleaseSelectPartRouting)
return
}
this.$confirm(`确定进行更改操作?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
let dto = {
site: this.$store.state.user.site,
orderNo: this.modelData.orderNo,
revNo: this.partRoutingData.revNo,
userId: this.$store.state.user.name,
}
shopOrderUpdateRoutingViaRev(dto).then(({data}) => {
if (data && data.code == 0) {
this.$message.success(data.msg)
} else {
this.$message.error(data.msg)
}
})
})
}, },
//
openResourceDialog() {
if (!this.routingResourceData || !this.routingResourceData.itemNo) {
this.$message.warning(this.labels.notSelectItemNo)
return;
}
this.routingVisible = true;
this.getSORoutingAvailableResource()
this.getSOResource()
},
//
routingCurrentChange(val) {
this.routingResourceData = val
},
//
getSORoutingAvailableResource() {
let dto = {
workCenterNo: this.routingResourceData.workCenterNo,
site: this.$store.state.user.site,
}
searchAllResource(dto).then(({data}) => {
if (data.success) {
this.selectResourceList = data.rows.map(item => {
let newItem = {
key: item.resourceID,
label: item.resourceID + " - " + item.resourceDesc,
}
return newItem
})
}
})
},
//
getSOResource() {
let dto = {
itemno: this.routingResourceData.itemNo,
orderno: this.modelData.orderNo,
site: this.$store.state.user.site,
}
getSORoutingAvailableResource(dto).then(({data}) => {
if (data && data.code == 0) {
this.resourceList = data.data.map(item => {
return item.resourceid
})
}
})
},
//
saveOrderItemNoResource() {
let resourceList = this.resourceList.map(item => {
let newItem = {
site: this.$store.state.user.site,
orderno: this.modelData.orderNo,
itemno: this.routingResourceData.itemNo,
resourceid: item
}
return newItem;
})
let dto = {
orderNo: this.modelData.orderNo,
itemNo: this.routingResourceData.itemNo,
site: this.$store.state.user.site,
availableresourceEntityList: resourceList
}
updateSORoutingAvailableResource(dto).then(({data}) => {
if (data && data.code == 0) {
this.routingVisible = false
this.$message.success(data.msg)
} else {
this.$message.warning(data.msg)
}
})
},
// 线 // 线
getRouting() { getRouting() {
if (!this.modelData.orderNo) { if (!this.modelData.orderNo) {
@ -2480,7 +2765,7 @@
} }
/deep/ .el-tabs__item {
/deep/ .customer-tab .el-tabs__item {
padding: 0 20px; padding: 0 20px;
height: 30px; height: 30px;
-webkit-box-sizing: border-box; -webkit-box-sizing: border-box;
@ -2513,5 +2798,7 @@
cursor: pointer; cursor: pointer;
color: #409EFF; color: #409EFF;
} }
</style> </style>
Loading…
Cancel
Save