|
@@ -1,42 +1,57 @@
|
|
|
<template>
|
|
|
<div class="mainContentBox">
|
|
|
<avue-crud
|
|
|
- ref="crudRef"
|
|
|
- v-model:search="search"
|
|
|
- v-model="form"
|
|
|
- :data="data"
|
|
|
- :option="option"
|
|
|
- v-model:page="page"
|
|
|
- @row-save="createRow"
|
|
|
- @row-update="updateRow"
|
|
|
- @row-del="deleteRow"
|
|
|
- @tree-load="treeLoad"
|
|
|
- @search-change="searchChange"
|
|
|
- @search-reset="resetChange"
|
|
|
- @size-change="dataList"
|
|
|
- @current-change="dataList"
|
|
|
- @selection-change="selectionChange"
|
|
|
- :span-method="spanMethod"
|
|
|
+ ref="crudRef"
|
|
|
+ v-model:search="search"
|
|
|
+ v-model="form"
|
|
|
+ :data="data"
|
|
|
+ :option="option"
|
|
|
+ v-model:page="page"
|
|
|
+ @row-save="createRow"
|
|
|
+ @row-update="updateRow"
|
|
|
+ @row-del="deleteRow"
|
|
|
+ @tree-load="treeLoad"
|
|
|
+ @search-change="searchChange"
|
|
|
+ @search-reset="resetChange"
|
|
|
+ @size-change="dataList"
|
|
|
+ @current-change="dataList"
|
|
|
+ @selection-change="selectionChange"
|
|
|
+ :span-method="spanMethod"
|
|
|
>
|
|
|
<template #orderCode="{ row }">
|
|
|
- <el-text v-if="row.orderCode">{{row.orderCode}}</el-text>
|
|
|
- <div style="width: 100%; height: 100%;display: flex" v-if="!row.orderCode && row.operationDetails">
|
|
|
- <div style="width: 120px;height: 100%" v-for="item in row.operationDetails">
|
|
|
+ <el-text v-if="row.orderCode">{{ row.orderCode }}</el-text>
|
|
|
+ <div
|
|
|
+ style="width: 100%; height: 100%; display: flex"
|
|
|
+ v-if="!row.orderCode && row.operationDetails"
|
|
|
+ >
|
|
|
+ <div
|
|
|
+ style="width: 120px; height: 100%"
|
|
|
+ v-for="item in row.operationDetails"
|
|
|
+ :key="item"
|
|
|
+ >
|
|
|
<el-progress
|
|
|
- :text-inside="true"
|
|
|
- :stroke-width="35"
|
|
|
- :font-color="'#ff0000'"
|
|
|
- :percentage="item.completeNum/row.workOrderNum * 100"
|
|
|
- status="success"
|
|
|
- >{{item.operationName}}(完成{{item.completeNum}})
|
|
|
+ :text-inside="true"
|
|
|
+ :stroke-width="35"
|
|
|
+ :font-color="'#ff0000'"
|
|
|
+ :percentage="(item.completeNum / row.workOrderNum) * 100"
|
|
|
+ status="success"
|
|
|
+ >{{ item.operationName }}(完成{{ item.completeNum }})
|
|
|
</el-progress>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <el-tag v-if="row.workOrderCode === '-' && row.stockNum > 0" type="primary">库存数量:{{ row.stockNum }}</el-tag>
|
|
|
- <el-tag v-if="row.workOrderCode === '-' && row.stockNum === '0'" type="danger">库存数量:{{ row.stockNum }}</el-tag>
|
|
|
+ <el-tag
|
|
|
+ v-if="row.workOrderCode === '-' && row.stockNum > 0"
|
|
|
+ type="primary"
|
|
|
+ >库存数量:{{ row.stockNum }}</el-tag
|
|
|
+ >
|
|
|
+ <el-tag
|
|
|
+ v-if="row.workOrderCode === '-' && row.stockNum === '0'"
|
|
|
+ type="danger"
|
|
|
+ >库存数量:{{ row.stockNum }}</el-tag
|
|
|
+ >
|
|
|
</template>
|
|
|
- <template #menu="{size,row,index}">
|
|
|
-<!-- <el-button
|
|
|
+ <template #menu="{ size, row, index }">
|
|
|
+ <!-- <el-button
|
|
|
type="primary"
|
|
|
link
|
|
|
v-if="row.bom === '0' || row.dataFile === '0'|| row.routeId === '0'|| row.craftFile === '0'"
|
|
@@ -45,23 +60,28 @@
|
|
|
><i-ep-edit />编辑
|
|
|
</el-button>-->
|
|
|
<el-button
|
|
|
- type="primary"
|
|
|
- link
|
|
|
- v-if="row.frockState === '0'"
|
|
|
- size="small"
|
|
|
- @click="frockStateChange(row)"
|
|
|
- ><i-ep-edit />工装齐套
|
|
|
+ type="primary"
|
|
|
+ link
|
|
|
+ v-if="row.frockState === '0'"
|
|
|
+ size="small"
|
|
|
+ @click="frockStateChange(row)"
|
|
|
+ ><i-ep-edit />工装齐套
|
|
|
</el-button>
|
|
|
<el-button
|
|
|
- type="primary"
|
|
|
- link
|
|
|
- v-if="row.deviceState === '0' || row.bom === '-' || row.craftFile === '-' || row.materialState === '0'"
|
|
|
- size="small"
|
|
|
- @click="handleRefresh(row.workOrderCode)"
|
|
|
- ><i-ep-edit />刷新
|
|
|
+ type="primary"
|
|
|
+ link
|
|
|
+ v-if="
|
|
|
+ row.deviceState === '0' ||
|
|
|
+ row.bom === '-' ||
|
|
|
+ row.craftFile === '-' ||
|
|
|
+ row.materialState === '0'
|
|
|
+ "
|
|
|
+ size="small"
|
|
|
+ @click="handleRefresh(row.workOrderCode)"
|
|
|
+ ><i-ep-edit />刷新
|
|
|
</el-button>
|
|
|
|
|
|
-<!-- <el-button
|
|
|
+ <!-- <el-button
|
|
|
type="primary"
|
|
|
link
|
|
|
v-if="row.bom === '0' || row.dataFile === '0'|| row.routeId === '0'|| row.craftFile === '0' || row.materialState === '0' || row.deviceState === '0'"
|
|
@@ -70,7 +90,7 @@
|
|
|
><i-ep-edit />删除
|
|
|
</el-button>-->
|
|
|
</template>
|
|
|
-<!-- <template #menu-left="{ size }">
|
|
|
+ <!-- <template #menu-left="{ size }">
|
|
|
<el-button
|
|
|
:disabled="toDeleteIds.length < 1"
|
|
|
type="danger"
|
|
@@ -82,12 +102,12 @@
|
|
|
</template>-->
|
|
|
</avue-crud>
|
|
|
<el-dialog
|
|
|
- v-model="dialog.visible"
|
|
|
- :title="dialog.title"
|
|
|
- width="80%"
|
|
|
- @close="dialog.visible = false"
|
|
|
+ v-model="dialog.visible"
|
|
|
+ :title="dialog.title"
|
|
|
+ width="80%"
|
|
|
+ @close="dialog.visible = false"
|
|
|
>
|
|
|
- <work-order-page queryType="1" @orderInfo="orderInfo"/>
|
|
|
+ <work-order-page queryType="1" @order-info="orderInfo" />
|
|
|
</el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -95,22 +115,21 @@
|
|
|
<script setup>
|
|
|
import { ref, getCurrentInstance } from "vue";
|
|
|
import { useCrud } from "@/hooks/userCrud";
|
|
|
-import {prepareCheckInfo,refreshPrepareCheckInfo,frockState} from "@/api/order"
|
|
|
-import {queryChildrenInfo} from "@/api/process"
|
|
|
+import {
|
|
|
+ prepareCheckInfo,
|
|
|
+ refreshPrepareCheckInfo,
|
|
|
+ frockState,
|
|
|
+} from "@/api/order";
|
|
|
+import { queryChildrenInfo } from "@/api/process";
|
|
|
import { useCommonStoreHook } from "@/store";
|
|
|
const { isShowTable, tableType } = toRefs(useCommonStoreHook());
|
|
|
-const router = useRouter();
|
|
|
-const test = () => {
|
|
|
- isShowTable.value = true;
|
|
|
- tableType.value = tableType.value == 1 ? 2 : 1;
|
|
|
-};
|
|
|
|
|
|
-// 传入一个url,后面不带/
|
|
|
const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
|
|
|
useCrud({
|
|
|
src: "/api/v1/plan/prepare",
|
|
|
});
|
|
|
-const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
|
|
|
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } =
|
|
|
+ Methords; //增删改查
|
|
|
const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
|
|
|
const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
|
|
|
|
|
@@ -119,17 +138,17 @@ const dialog = reactive({
|
|
|
title: "订单选择",
|
|
|
visible: false,
|
|
|
});
|
|
|
-const merginState = ref(false)
|
|
|
-const spanMethod = ({ row, column, rowIndex, columnIndex })=>{
|
|
|
- if(row.hasParent){
|
|
|
- if(columnIndex === 6){
|
|
|
- merginState.value = true
|
|
|
- return [1, 11]
|
|
|
- }else if(columnIndex > 6 && merginState){
|
|
|
- return [0,0]
|
|
|
+const merginState = ref(false);
|
|
|
+const spanMethod = ({ row, column, rowIndex, columnIndex }) => {
|
|
|
+ if (row.hasParent) {
|
|
|
+ if (columnIndex === 6) {
|
|
|
+ merginState.value = true;
|
|
|
+ return [1, 11];
|
|
|
+ } else if (columnIndex > 6 && merginState) {
|
|
|
+ return [0, 0];
|
|
|
}
|
|
|
- }else{
|
|
|
- merginState.value = false
|
|
|
+ } else {
|
|
|
+ merginState.value = false;
|
|
|
}
|
|
|
/*if (rowIndex % 2 === 0) {
|
|
|
if (columnIndex === 0) {
|
|
@@ -138,73 +157,70 @@ const spanMethod = ({ row, column, rowIndex, columnIndex })=>{
|
|
|
return [0, 0]
|
|
|
}
|
|
|
}*/
|
|
|
-}
|
|
|
-const checkInfo = (code) =>{
|
|
|
- prepareCheckInfo(code).then((data)=>{
|
|
|
- form.value.deviceStr = data.data.deviceStr
|
|
|
- form.value.deviceState = data.data.deviceState
|
|
|
- form.value.materialState = data.data.materialState
|
|
|
- form.value.materialStr = data.data.materialStr
|
|
|
- })
|
|
|
-}
|
|
|
-const treeLoad = (tree, treeNode, resolve) =>{
|
|
|
- queryChildrenInfo(tree.workOrderCode).then((data)=>{
|
|
|
- resolve(data.data)
|
|
|
- })
|
|
|
-}
|
|
|
-const handleEdit =(row,index)=>{
|
|
|
- crudRef.value && crudRef.value.rowEdit(row,index);
|
|
|
-}
|
|
|
-const handleRefresh =(code)=>{
|
|
|
- refreshPrepareCheckInfo(code).then((data)=>{
|
|
|
- if(data.code === '200'){
|
|
|
- ElMessage.success("刷新成功")
|
|
|
- dataList()
|
|
|
- }else{
|
|
|
- ElMessage.error(data.msg)
|
|
|
+};
|
|
|
+const checkInfo = (code) => {
|
|
|
+ prepareCheckInfo(code).then((data) => {
|
|
|
+ form.value.deviceStr = data.data.deviceStr;
|
|
|
+ form.value.deviceState = data.data.deviceState;
|
|
|
+ form.value.materialState = data.data.materialState;
|
|
|
+ form.value.materialStr = data.data.materialStr;
|
|
|
+ });
|
|
|
+};
|
|
|
+const treeLoad = (tree, treeNode, resolve) => {
|
|
|
+ queryChildrenInfo(tree.workOrderCode).then((data) => {
|
|
|
+ resolve(data.data);
|
|
|
+ });
|
|
|
+};
|
|
|
+const handleEdit = (row, index) => {
|
|
|
+ crudRef.value && crudRef.value.rowEdit(row, index);
|
|
|
+};
|
|
|
+const handleRefresh = (code) => {
|
|
|
+ refreshPrepareCheckInfo(code).then((data) => {
|
|
|
+ if (data.code === "200") {
|
|
|
+ ElMessage.success("刷新成功");
|
|
|
+ dataList();
|
|
|
+ } else {
|
|
|
+ ElMessage.error(data.msg);
|
|
|
}
|
|
|
- })
|
|
|
-}
|
|
|
-const frockStateChange =(code)=>{
|
|
|
+ });
|
|
|
+};
|
|
|
+const frockStateChange = (code) => {
|
|
|
code.frockState = 1;
|
|
|
- frockState(code).then((data)=>{
|
|
|
- if(data.code === '200'){
|
|
|
- ElMessage.success("刷新成功")
|
|
|
- dataList()
|
|
|
- }else{
|
|
|
- ElMessage.error(data.msg)
|
|
|
+ frockState(code).then((data) => {
|
|
|
+ if (data.code === "200") {
|
|
|
+ ElMessage.success("刷新成功");
|
|
|
+ dataList();
|
|
|
+ } else {
|
|
|
+ ElMessage.error(data.msg);
|
|
|
}
|
|
|
- })
|
|
|
-}
|
|
|
+ });
|
|
|
+};
|
|
|
const orderInfo = (value) => {
|
|
|
- form.value.workOrderCode = value.workOrderCode
|
|
|
- form.value.orderCode = value.orderCode
|
|
|
- form.value.orderName = value.orderName
|
|
|
- form.value.materialCode = value.materialCode
|
|
|
- form.value.materialName = value.materialName
|
|
|
- form.value.materialModel = value.materialModel
|
|
|
- dialog.visible = false
|
|
|
-}
|
|
|
+ form.value.workOrderCode = value.workOrderCode;
|
|
|
+ form.value.orderCode = value.orderCode;
|
|
|
+ form.value.orderName = value.orderName;
|
|
|
+ form.value.materialCode = value.materialCode;
|
|
|
+ form.value.materialName = value.materialName;
|
|
|
+ form.value.materialModel = value.materialModel;
|
|
|
+ dialog.visible = false;
|
|
|
+};
|
|
|
// 设置表格列或者其他自定义的option
|
|
|
option.value = Object.assign(option.value, {
|
|
|
delBtn: false,
|
|
|
selection: false,
|
|
|
editBtn: false,
|
|
|
- tree: true,
|
|
|
viewBtn: false,
|
|
|
- lazy: true,
|
|
|
- menuBtn:false,
|
|
|
+ menu: true,
|
|
|
menuWidth: 100,
|
|
|
- rowKey: 'workOrderCode',
|
|
|
addBtn: false,
|
|
|
- dialogWidth: '45%', // 设置编辑弹窗的宽度为50%
|
|
|
+ dialogWidth: "45%", // 设置编辑弹窗的宽度为50%
|
|
|
column: [
|
|
|
{
|
|
|
- label: "工单号",
|
|
|
+ label: "工单编号",
|
|
|
prop: "workOrderCode",
|
|
|
search: true,
|
|
|
minWidth: 200,
|
|
|
- editDisabled : true,
|
|
|
+ editDisabled: true,
|
|
|
rules: [
|
|
|
{
|
|
|
required: true,
|
|
@@ -213,15 +229,15 @@ option.value = Object.assign(option.value, {
|
|
|
},
|
|
|
],
|
|
|
click: ({ value, column }) => {
|
|
|
- if(column.boxType){
|
|
|
- dialog.visible = true
|
|
|
+ if (column.boxType) {
|
|
|
+ dialog.visible = true;
|
|
|
}
|
|
|
},
|
|
|
- change:({ value, column }) =>{
|
|
|
- if(value){
|
|
|
- checkInfo(value)
|
|
|
- }
|
|
|
- }
|
|
|
+ // change: ({ value, column }) => {
|
|
|
+ // if (value) {
|
|
|
+ // checkInfo(value);
|
|
|
+ // }
|
|
|
+ // },
|
|
|
},
|
|
|
{
|
|
|
label: "产品编码",
|
|
@@ -315,8 +331,12 @@ option.value = Object.assign(option.value, {
|
|
|
editDisplay: false,
|
|
|
html: true,
|
|
|
formatter: (val) => {
|
|
|
- if (val.craftFile !== '-') {
|
|
|
- return '<b class="el-tag el-tag--success el-tag--light">'+val.craftFile+'</b>';
|
|
|
+ if (val.craftFile !== "-") {
|
|
|
+ return (
|
|
|
+ '<b class="el-tag el-tag--success el-tag--light">' +
|
|
|
+ val.craftFile +
|
|
|
+ "</b>"
|
|
|
+ );
|
|
|
}
|
|
|
return '<b class="el-tag el-tag--danger el-tag--light">-</b>';
|
|
|
},
|
|
@@ -331,8 +351,12 @@ option.value = Object.assign(option.value, {
|
|
|
editDisplay: false,
|
|
|
html: true,
|
|
|
formatter: (val) => {
|
|
|
- if (val.bom !== '-') {
|
|
|
- return '<b class="el-tag el-tag--success el-tag--light">'+val.bom+'</b>';
|
|
|
+ if (val.bom !== "-") {
|
|
|
+ return (
|
|
|
+ '<b class="el-tag el-tag--success el-tag--light">' +
|
|
|
+ val.bom +
|
|
|
+ "</b>"
|
|
|
+ );
|
|
|
}
|
|
|
return '<b class="el-tag el-tag--danger el-tag--light">-</b>';
|
|
|
},
|
|
@@ -347,8 +371,12 @@ option.value = Object.assign(option.value, {
|
|
|
prop: "routeId",
|
|
|
html: true,
|
|
|
formatter: (val) => {
|
|
|
- if (val.routeId !== '-') {
|
|
|
- return '<b class="el-tag el-tag--success el-tag--light">'+val.routeId+'</b>';
|
|
|
+ if (val.routeId !== "-") {
|
|
|
+ return (
|
|
|
+ '<b class="el-tag el-tag--success el-tag--light">' +
|
|
|
+ val.routeId +
|
|
|
+ "</b>"
|
|
|
+ );
|
|
|
}
|
|
|
return '<b class="el-tag el-tag--danger el-tag--light">-</b>';
|
|
|
},
|
|
@@ -361,68 +389,80 @@ option.value = Object.assign(option.value, {
|
|
|
overHidden: true,
|
|
|
html: true,
|
|
|
formatter: (val) => {
|
|
|
- if (val.deviceState === '1') {
|
|
|
+ if (val.deviceState === "1") {
|
|
|
return '<b class="el-tag el-tag--success el-tag--light">已齐套</b>';
|
|
|
}
|
|
|
- return '<b class="el-tag el-tag--danger el-tag--light">'+val.deviceStr+'</b>';
|
|
|
+ return (
|
|
|
+ '<b class="el-tag el-tag--danger el-tag--light">' +
|
|
|
+ val.deviceStr +
|
|
|
+ "</b>"
|
|
|
+ );
|
|
|
},
|
|
|
},
|
|
|
{
|
|
|
label: "物料状态",
|
|
|
- prop: 'materialStr',
|
|
|
+ prop: "materialStr",
|
|
|
disabled: true,
|
|
|
width: 200,
|
|
|
overHidden: true,
|
|
|
span: 24,
|
|
|
html: true,
|
|
|
formatter: (val) => {
|
|
|
- if (val.materialState === '1') {
|
|
|
+ if (val.materialState === "1") {
|
|
|
return '<b class="el-tag el-tag--success el-tag--light">已齐套</b>';
|
|
|
}
|
|
|
- return '<b class="el-tag el-tag--danger el-tag--light">'+val.materialStr+'</b>';
|
|
|
+ return (
|
|
|
+ '<b class="el-tag el-tag--danger el-tag--light">' +
|
|
|
+ val.materialStr +
|
|
|
+ "</b>"
|
|
|
+ );
|
|
|
},
|
|
|
},
|
|
|
{
|
|
|
label: "工装状态",
|
|
|
- prop: 'frockStr',
|
|
|
+ prop: "frockStr",
|
|
|
disabled: true,
|
|
|
width: 200,
|
|
|
overHidden: true,
|
|
|
span: 24,
|
|
|
html: true,
|
|
|
formatter: (val) => {
|
|
|
- if (val.frockState === '1') {
|
|
|
+ if (val.frockState === "1") {
|
|
|
return '<b class="el-tag el-tag--success el-tag--light">已齐套</b>';
|
|
|
}
|
|
|
- return '<b class="el-tag el-tag--danger el-tag--light">'+val.frockStr+'</b>';
|
|
|
+ return (
|
|
|
+ '<b class="el-tag el-tag--danger el-tag--light">' +
|
|
|
+ val.frockStr +
|
|
|
+ "</b>"
|
|
|
+ );
|
|
|
},
|
|
|
},
|
|
|
{
|
|
|
label: "创建时间",
|
|
|
prop: "created",
|
|
|
width: 200,
|
|
|
- display: false
|
|
|
+ display: false,
|
|
|
},
|
|
|
{
|
|
|
label: "创建人",
|
|
|
width: 200,
|
|
|
prop: "creator",
|
|
|
- display: false
|
|
|
+ display: false,
|
|
|
},
|
|
|
],
|
|
|
});
|
|
|
|
|
|
-
|
|
|
onMounted(() => {
|
|
|
- form.value.routeId = "1"
|
|
|
- form.value.materialState = 1
|
|
|
- let url = window.location.href
|
|
|
- if(url.includes("workOrderCode")){
|
|
|
- search.value.workOrderCode = url.substring(url.indexOf("workOrderCode")+ 14)
|
|
|
+ form.value.routeId = "1";
|
|
|
+ form.value.materialState = 1;
|
|
|
+ let url = window.location.href;
|
|
|
+ if (url.includes("workOrderCode")) {
|
|
|
+ search.value.workOrderCode = url.substring(
|
|
|
+ url.indexOf("workOrderCode") + 14
|
|
|
+ );
|
|
|
}
|
|
|
dataList();
|
|
|
});
|
|
|
-
|
|
|
</script>
|
|
|
<style scoped>
|
|
|
:deep(.el-progress-bar__innerText) {
|