|
@@ -1,5 +1,18 @@
|
|
|
<template>
|
|
|
+
|
|
|
<div class="mainContentBox">
|
|
|
+ <el-container>
|
|
|
+ <el-aside width="200px" style="min-height: 800px; max-height: calc(100vh - 200px);overflow-y:hidden">
|
|
|
+ <avue-tree :option="treeOption"
|
|
|
+ :data="treeData"
|
|
|
+ v-model="formTree"
|
|
|
+ @node-click="nodeClick"
|
|
|
+ @save="save"
|
|
|
+ @update="updateRow"
|
|
|
+ @del="delRow"
|
|
|
+ ></avue-tree>
|
|
|
+ </el-aside>
|
|
|
+ <el-main>
|
|
|
<avue-crud
|
|
|
ref="crudRef"
|
|
|
:option="option"
|
|
@@ -21,6 +34,15 @@
|
|
|
<el-button type="primary" @click="scan">扫码导入</el-button>
|
|
|
<el-button type="primary" @click="test">测试数据</el-button>
|
|
|
</template>-->
|
|
|
+ <template #menu-left="{ size }">
|
|
|
+ <el-button
|
|
|
+ type="primary"
|
|
|
+ icon="el-icon-plus"
|
|
|
+ :size="size"
|
|
|
+ @click="rowAdd"
|
|
|
+ >新增</el-button
|
|
|
+ >
|
|
|
+ </template>
|
|
|
<template #menu-right="{}">
|
|
|
<el-dropdown split-button v-hasPerm="['plan:order:import']"
|
|
|
>导入
|
|
@@ -219,6 +241,8 @@
|
|
|
tableType="FAULT"
|
|
|
@selected-sure="onSelectedFinish"
|
|
|
/>
|
|
|
+ </el-main>
|
|
|
+ </el-container>
|
|
|
</div>
|
|
|
</template>
|
|
|
<script setup lang="ts">
|
|
@@ -238,12 +262,18 @@ import {
|
|
|
getExpandAlias,
|
|
|
scanImport,
|
|
|
getScanCode,
|
|
|
- getTestCode,
|
|
|
+ getTestCode, orderLevelList, addOrderLevel, levelList, updateOrderLevel, delOrderLevel,
|
|
|
} from "@/api/order";
|
|
|
import { ref } from "vue";
|
|
|
import _ from "lodash-es";
|
|
|
import ChoiceItemPage from "@/views/base/materials/components/choice-item-page.vue";
|
|
|
+import {da} from "element-plus/es/locale";
|
|
|
+import {params} from "postcss-html";
|
|
|
+const rowAdd = () => {
|
|
|
+ crudRef.value.rowAdd();
|
|
|
+
|
|
|
|
|
|
+};
|
|
|
// 弹窗对象
|
|
|
const dialog = reactive({
|
|
|
visible: false,
|
|
@@ -251,6 +281,7 @@ const dialog = reactive({
|
|
|
width: 800,
|
|
|
title: "",
|
|
|
});
|
|
|
+const formTree=ref(null);
|
|
|
const ctableRef = ref(null);
|
|
|
const search = ref({});
|
|
|
const option = ref({});
|
|
@@ -264,6 +295,112 @@ const importData = reactive({
|
|
|
file: undefined,
|
|
|
fileList: [],
|
|
|
});
|
|
|
+const treeData = ref([]);
|
|
|
+const dataDetail = ref({});
|
|
|
+const save = (node, data, done, loading) => {
|
|
|
+ if(Object.keys(node).length===0){
|
|
|
+ data.level=1;
|
|
|
+ }
|
|
|
+ if(Object.keys(node).length>0){
|
|
|
+ data.level=node.level+1;
|
|
|
+ data.parentId=node.data.id;
|
|
|
+ }
|
|
|
+ addOrderLevel(data).then(
|
|
|
+ (resouce)=>{
|
|
|
+ done();
|
|
|
+ if(resouce.code==="200"){
|
|
|
+ ElMessage.success("新增成功");
|
|
|
+
|
|
|
+ orderLevelList(dataDetail.value).then(
|
|
|
+ (res)=>{
|
|
|
+ treeData.value=res.data;
|
|
|
+ }
|
|
|
+ )
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ )
|
|
|
+
|
|
|
+};
|
|
|
+const delRow = (data, done) => {
|
|
|
+ ElMessageBox.confirm('此操作将永久删除该文件, 是否继续?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ delOrderLevel(data.data).then(
|
|
|
+ (resouce)=>{
|
|
|
+ done();
|
|
|
+ if(resouce.code==="200"){
|
|
|
+ ElMessage.success("删除成功");
|
|
|
+
|
|
|
+ }else {
|
|
|
+ ElMessage.error(resouce.msg);
|
|
|
+ orderLevelList(dataDetail.value).then(
|
|
|
+ (res)=>{
|
|
|
+ treeData.value=res.data;
|
|
|
+ }
|
|
|
+ )
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ )
|
|
|
+ }).catch(() => {
|
|
|
+ ElMessage.info('已取消删除')
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+const updateRow = (node, data, done, loading) => {
|
|
|
+ updateOrderLevel(data).then(
|
|
|
+ (resouce)=>{
|
|
|
+ done();
|
|
|
+ if(resouce.code==="200"){
|
|
|
+ ElMessage.success("修改成功");
|
|
|
+
|
|
|
+ orderLevelList(dataDetail.value).then(
|
|
|
+ (res)=>{
|
|
|
+ treeData.value=res.data;
|
|
|
+ }
|
|
|
+ )
|
|
|
+
|
|
|
+ }else {
|
|
|
+ ElMessage.error(resouce.msg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ )
|
|
|
+}
|
|
|
+const param =ref({});
|
|
|
+const nodeClick = (data) => {
|
|
|
+ search.value.aircraftId=null;
|
|
|
+ search.value.sortiesId=null;
|
|
|
+ search.value.subId=null;
|
|
|
+ if(data.level==1){
|
|
|
+ search.value.aircraftId=data.id;
|
|
|
+ }
|
|
|
+ if(data.level==2){
|
|
|
+ search.value.sortiesId=data.id;
|
|
|
+ }
|
|
|
+ if(data.level==3){
|
|
|
+ search.value.subId=data.id;
|
|
|
+ }
|
|
|
+ handleQuery(null,null);
|
|
|
+};
|
|
|
+const treeOption = {
|
|
|
+ formOption: {
|
|
|
+ labelWidth: 100,
|
|
|
+ column: [{
|
|
|
+ label: '层级名称',
|
|
|
+ prop: 'label'
|
|
|
+ }],
|
|
|
+ },
|
|
|
+ props: {
|
|
|
+ labelText: '标题',
|
|
|
+ label: 'label',
|
|
|
+ value: 'value',
|
|
|
+ children: 'children'
|
|
|
+ }
|
|
|
+};
|
|
|
const materialInfo = (value) => {
|
|
|
form.value.materialCode = value.materialCode;
|
|
|
form.value.materialName = value.materialName;
|
|
@@ -289,6 +426,12 @@ const permission = reactive({
|
|
|
menu: true,
|
|
|
});
|
|
|
const crudRef = ref(null); //crudRef.value 获取avue-crud对象
|
|
|
+const sub = ref([]);
|
|
|
+const sub1 = ref([]);
|
|
|
+const sub2 = ref([]);
|
|
|
+const sorties = ref([]);
|
|
|
+const sorties1 = ref([]);
|
|
|
+const sorties2 = ref([]);
|
|
|
option.value = {
|
|
|
border: true,
|
|
|
searchIndex: 3,
|
|
@@ -298,6 +441,7 @@ option.value = {
|
|
|
searchMenuSpan: 8,
|
|
|
align: "center",
|
|
|
menuAlign: "center",
|
|
|
+ addBtn: false,
|
|
|
search: true,
|
|
|
refreshBtn: false,
|
|
|
from: {
|
|
@@ -305,7 +449,7 @@ option.value = {
|
|
|
},
|
|
|
column: [
|
|
|
{
|
|
|
- label: "订单编号",
|
|
|
+ label: "计划编号",
|
|
|
prop: "orderCode",
|
|
|
search: true,
|
|
|
width: 130,
|
|
@@ -313,7 +457,7 @@ option.value = {
|
|
|
display: false,
|
|
|
},
|
|
|
{
|
|
|
- label: "订单名称",
|
|
|
+ label: "计划名称",
|
|
|
prop: "orderName",
|
|
|
search: true,
|
|
|
width: 150,
|
|
@@ -321,7 +465,7 @@ option.value = {
|
|
|
rules: [
|
|
|
{
|
|
|
required: true,
|
|
|
- message: "订单名称不能为空",
|
|
|
+ message: "计划名称不能为空",
|
|
|
trigger: "trigger",
|
|
|
},
|
|
|
],
|
|
@@ -335,13 +479,112 @@ option.value = {
|
|
|
rules: [
|
|
|
{
|
|
|
required: true,
|
|
|
- message: "订单编号不能为空",
|
|
|
+ message: "ERP号不能为空",
|
|
|
+ trigger: "trigger",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "机型",
|
|
|
+ prop: "aircraftId",
|
|
|
+ width: "100",
|
|
|
+ type: "select", //类型为下拉选择框
|
|
|
+ dicData: treeData,
|
|
|
+ props: {
|
|
|
+ label: "label",
|
|
|
+ value: "id",
|
|
|
+ },
|
|
|
+ change: ({ value, column }) => {
|
|
|
+ form.value.idSorties=null;
|
|
|
+ form.value.idSub=null;
|
|
|
+ sorties.value=[];
|
|
|
+ sub.value=[];
|
|
|
+ sorties1.value = treeData.value.filter(item =>item.id==value);
|
|
|
+ if(sorties1.value!=null&&sorties1.value.length>0){
|
|
|
+ sorties.value=sorties1.value[0].children;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: "机型不能为空",
|
|
|
trigger: "trigger",
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
- label: "订单类型",
|
|
|
+ label: "架次",
|
|
|
+ prop: "idSorties",
|
|
|
+ width: "100",
|
|
|
+ type: "select", //类型为下拉选择框
|
|
|
+ dicData: sorties,
|
|
|
+ hide: true,
|
|
|
+ props: {
|
|
|
+ label: "label",
|
|
|
+ value: "id",
|
|
|
+ },
|
|
|
+ change: ({ value, column }) => {
|
|
|
+ form.value.idSub=null;
|
|
|
+ sub.value=[];
|
|
|
+ sub1.value = sorties.value.filter(item =>item.id==value);
|
|
|
+ if(sub1.value!=null&&sub1.value.length>0){
|
|
|
+ sub.value=sub1.value[0].children;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: "架次不能为空",
|
|
|
+ trigger: "trigger",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "架次",
|
|
|
+ prop: "sortiesId",
|
|
|
+ width: "100",
|
|
|
+ display: false,
|
|
|
+ type: "select", //类型为下拉选择框
|
|
|
+ dicData: sorties2,
|
|
|
+ props: {
|
|
|
+ label: "label",
|
|
|
+ value: "id",
|
|
|
+ },
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "子系统",
|
|
|
+ prop: "idSub",
|
|
|
+ width: "100",
|
|
|
+ type: "select", //类型为下拉选择框
|
|
|
+ dicData: sub,
|
|
|
+ hide: true,
|
|
|
+ props: {
|
|
|
+ label: "label",
|
|
|
+ value: "id",
|
|
|
+ },
|
|
|
+ rules: [
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: "子系统不能为空",
|
|
|
+ trigger: "trigger",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "子系统",
|
|
|
+ prop: "subId",
|
|
|
+ width: "100",
|
|
|
+ type: "select", //类型为下拉选择框
|
|
|
+ dicData: sub2,
|
|
|
+ display: false,
|
|
|
+ props: {
|
|
|
+ label: "label",
|
|
|
+ value: "id",
|
|
|
+ }
|
|
|
+
|
|
|
+ },
|
|
|
+ {
|
|
|
+ label: "计划类型",
|
|
|
prop: "orderType",
|
|
|
type: "select", //类型为下拉选择框
|
|
|
width: 100,
|
|
@@ -455,7 +698,7 @@ option.value = {
|
|
|
prop: "materialModel",
|
|
|
},
|
|
|
{
|
|
|
- label: "订单状态",
|
|
|
+ label: "计划状态",
|
|
|
prop: "orderState",
|
|
|
display: false,
|
|
|
width: 100,
|
|
@@ -730,7 +973,7 @@ const handleQuery = (params, done) => {
|
|
|
const querySearch = {
|
|
|
pageSize: page.value.pageSize,
|
|
|
pageNo: page.value.currentPage,
|
|
|
- ...params,
|
|
|
+ ...params,...search.value
|
|
|
};
|
|
|
getOrderPage(querySearch)
|
|
|
.then(({ data }) => {
|
|
@@ -748,17 +991,22 @@ const handleQuery = (params, done) => {
|
|
|
};
|
|
|
const rowSave = (form, done, loading) => {
|
|
|
loading();
|
|
|
+ form.sortiesId = form.idSorties;
|
|
|
+ form.subId = form.idSub;
|
|
|
addOrder(form).then((data: any) => {
|
|
|
ElMessage({
|
|
|
message: data.msg,
|
|
|
type: "success",
|
|
|
});
|
|
|
done();
|
|
|
+
|
|
|
handleQuery(null, null);
|
|
|
});
|
|
|
};
|
|
|
const rowUpdate = (form: any, index: any, done: any, loading: any) => {
|
|
|
loading();
|
|
|
+ form.sortiesId = form.idSorties;
|
|
|
+ form.subId = form.idSub;
|
|
|
updateOrder(form).then((data: any) => {
|
|
|
ElMessage({
|
|
|
message: data.msg,
|
|
@@ -862,6 +1110,18 @@ const handleExport = () => {
|
|
|
onMounted?.(() => {
|
|
|
queryExpandAlias();
|
|
|
handleQuery(null, null);
|
|
|
+ orderLevelList(dataDetail.value).then(
|
|
|
+ (data)=>{
|
|
|
+ treeData.value=data.data;
|
|
|
+ }
|
|
|
+ )
|
|
|
+ levelList(dataDetail.value).then(
|
|
|
+ (data)=>{
|
|
|
+ sub2.value=data.data;
|
|
|
+ sorties2.value=data.data;
|
|
|
+ }
|
|
|
+ )
|
|
|
+
|
|
|
});
|
|
|
|
|
|
/** 选择报故单 */
|